Befehle des Menübands überspringen
Zum Hauptinhalt wechseln

Isrichtig.de

:

Homepage
Blog von Volker Helms
November 15
Veröffentlichen MOSS 2007 über ISA 2006

Heute möchte ich einmal ein wenig über die Webseitenveröffentlichung eines MOSS Servers mittels ISA 2006 schreiben. Ich habe einen funktionsfähigen MOSS Server laufen und auch der ISA Server ist bereits installiert. Die Portalseite hat ein SSL Zertifikat aus einer internen CA und der ISA Server hat in seinem Computerkonto das notwendige Stammzertifikat. Damit sollte einer Veröffentlichung nichts im Wege stehen. Da eine Anmeldung aus dem Internet immer einer Standardauthentifizierung entspricht kommt es bei der Benutzung des Portals hin und wieder zu wiederholten Authentifizierungsanfragen. Das kann z.B. passieren wenn ein Dokument mit Word bearbeitet werden soll. Word hat sich in diesem Moment noch nicht an der Seite angemeldet und holt dies nun nach. Im lokalen Netzwerk ist es nicht weiter tragisch, da die Anmeldung über die Integrierte Anmeldung erfolgt. Von Extern können die häufigen Anmeldeanforderungen aber nerven.

Um dieses Verhalten zu verhindern nutzten wir die, im ISA Server enthaltende, Formularbasierte Authentifizierung:

Eine Regel habe ich per Assistent erstellt und nun schauen wir uns die genauen Einstellungen an. Unter Aktion wird erst einmal festgelegt, dass wir einen Zugriff erlauben wollen.

 

November 08
PowerPivot Gallery shows Red X's for Icons

Some days ago we have a little problem with excel files in a PowerPivot gallery. A short search with my favorite search engine gives me a kb article from Microsoft. Please take a look here. The article is really great. Gives you a lot of hints to solve the problem with the red x. You also get some nice information's about the background process of creating the preview images. In the background a tool “GetSnapshot.exe” creates the preview png files. GetSnapshot.exe starts as a normal command line tool. Unfortunately all hints does not solve my problem. So I fired some GetSnapshot.exe command to get additional information's about my problem.

To start to tool creating a thumb use this cmd:

GetSnapshot.exe "https://sharepoint.domain.com" "https://sharepoint.domain.com/PowerPivotLib/MyExcel.xlsx" "C:\Temp" placefilenamehere

After the tool completed a new file thumbnails.txt is created. In the file you find information's about the creation process. Hopefully you find a good error message. In my case I found an error message pointing me to some certification problems (you can see I used a https url). Sorry, I don’t know the original message text. Next, I checked the certificate – valid! Damn, next I checked the properties of the certificate and found some interesting information:

clip_image001

In the CRL distribution point had a not reachable url configured. We can’t create new certificates because the cert is already exposed from the internal company ca. Ok what can we do? I checked the IE security options and found out an interesting point:

clip_image001[5]

I disabled the “Check for server certificate revocation” property in the iis app pool account settings, test again and it work. If you need some additional info’s about the GetSnapshot.exe tool please take a look at this page.

Volker

November 07
ERROR activating Feature “Report Server Integration Feature”

If you want activate the feature “Report Server Integration Feature” on a SharePoint site collection and you get an error message like this: "The content type with Id 0x010100C3676CDFA2F24E1D949A8BF2B06F6B8B defined in feature {e8389ec7-70fd-4179-a1c4-6fcb4342d7a0} was found in the current site collection or in a subsite." you have a little problem with the installation of the feature. The error message also occurs if you want to active the feature through PowerShell:

   1:  $s.Features.Add("e8389ec7-70fd-4179-a1c4-6fcb4342d7a0")
   2:  Exception calling "Add" with "1" argument(s): "The content type with Id 0x010100C3676CDFA2F24E1D949A8BF2B06F6B8B defined in feature {e8389ec7-70fd-4179-a1c4-6fcb4342d7a0} was found in the current site collection or in a subsite."
   3:  At line:1 char:1
   4:  + $s.Features.Add("e8389ec7-70fd-4179-a1c4-6fcb4342d7a0")
   5:  + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   6:      + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
   7:      + FullyQualifiedErrorId : SPException

But why do we get this error? After some investigation I found out that the feature is correctly in the file system but is not installed correctly in the SharePoint farm. So please execute the following commands at the cmd:

PS C:\Users\volker.helms.ext.adm> stsadm -o installfeature -name ReportServer
Operation completed successfully.

PS C:\Users\volker.helms.ext.adm> stsadm -o installfeature -name ReportServerCentralAdmin
A feature with ID 15/5f2e3537-91b5-4341-86ff-90c6a2f99aae has already been installed in this farm.  Use the force attribute to explicitly re-install the feature.

PS C:\Users\volker.helms.ext.adm> stsadm -o installfeature -name ReportServerItemSync
A feature with ID 15/c769801e-2387-47ef-a810-2d292d4cb05d has already been installed in this farm.  Use the force attribute to explicitly re-install the feature.

PS C:\Users\volker.helms.ext.adm> stsadm -o installfeature -name ReportServerStapling
Operation completed successfully.

After installing the features again (not all must be installed – in my case only 2 features are not registered correctly) the reporting services should work as expected.

Regards,
Volker

Oktober 17
ERROR on Newform.aspx in some Lists

Today I get a very strange error message. I have a SharePoint 2013 Server and yesterday we updated the site collections to the new UI. Today morning some users says that they get an error message on the newform.aspx page in some lists. The defect lists are in different webs and other lists in the same web works. The German error message was “Der Server konnte das Formular zu diesem Zeitpunkt nicht speichern. Bitte versuchen Sie es erneut.”, in english something like “The Server was unable to save the form at this time. Please try again.

Next I wanted to check if resetting the newform.aspx with the SharePoint Designer will help. I started the designer, connects to the web and boom get another error message “Object Moved Object Moved to here.” Crap! Meanwhile I checked the uls log and found a third error message:

SharePoint Foundation  Claims Authentication  af3w7  Unexpected  Claims Windows Sign-In: Redirecting successfully signed-in user 'domain\user' for request url 'http://intranet.domain.com/_windows/default.aspx?ReturnUrl=/Projects/isox/_vti_bin/client.svc/ProcessQuery'.

What should I do next? Ok, first we will search for the “Object Moved” error message. I found a Microsoft KB article that I should activate anonymous access in the IIS manager on my web application. But anonymous is already activated and this hint does not help. Next I found this post on the Microsoft Social page. Ok we have an additional claims provider (Windows Claims and an additional Claims) so it could be worth to test it. I have performed the following steps:

  • Open the SharePoint Central Administration Web site, click Application Management.
  • On the Application Management page, in the SharePoint Web Application Management section, click Web application list.
  • On the Web Application List page, select your Web application.
  • Select Authentication providers from the ribbon.
  • Click Default.
  • Click Ok to save the provider again.

Next I tested the connection with the SharePoint Designer again and the connection could be established successfully. Great! But what was with the other errors? Short answer – all errors are gone. I don’t know why but it works.

Some other users have the same error message saving the SharePoint form and could repair it through restarting the “Search Host Controller Service

Hope this helps!

Volker

September 20
SharePoint 2013: Copy Web Application Policy

​With this script you can copy the SharePoint application policies from one web application to another one. The already configured policies are not changed.

 

Param ($Argument1, $Argument2)
Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue
 
function SetPolicy ($displayName, $userOrGroup, $wa, $perm)
{
 try
 {
  $user = New-SPClaimsPrincipal -IdentityType WindowsSamAccountName -Identity $userOrGroup
     $policy = $wa.Policies.Add($userOrGroup, $displayName)
  $permType = $perm[0].Type
  #$policy.PolicyRoleBindings.Add($wa.PolicyRoles.GetSpecialRole([Microsoft.SharePoint.Administration.SPPolicyRoleType]::$permType))
  $policy.PolicyRoleBindings.Add($wa.PolicyRoles.GetSpecialRole($permType))
 }
 catch
 {
   $ErrorMessage = $_.Exception.Message
   Write-Host $ErrorMessage ", Username: " $userOrGroup
 }}
$webAppSource = Get-SPWebApplication($Argument1)
$webAppDest =  Get-SPWebApplication($Argument2)
$authSource = $webAppSource.UseClaimsAuthentication
$authDest = $webAppDest.UseClaimsAuthentication
 
if ($authSource -eq $authDest)
{
 foreach ($pol in $webAppSource.Policies)
 {
  SetPolicy -displayName $pol.DisplayName -userOrGroup $pol.UserName -wa $webAppDest -perm $pol.PolicyRoleBindings
 }
 $webAppDest.Update()
}
else
{
 Write-Host Authentication Type from Source and Destination is different!
}

To start the sript use:
.\CopyPolicies http://sourceurl http://desturl

Juni 20
RSS Search page with more details

Hi together,

I have create a small Solution which replaces the srchrss.aspx page in SharePoint 2010. But why should we replace this page? I want get more details from the rss search result in my outlook. In our company we use our mysites to blog some internal stuff. We created a custom search result page which shows you the blog entries aggregated. On that page I use the rss feed button to receive new blog posts in my outlook. But unfortunately the preview of the feeds are extreme short. After some investigation I found out that the preview can be modified in the srchrss.aspx page. So I create a new one and mapped the rss feed button to the new page.

But what must be modified in the page?

The only you must modify (please create a new srchrss.aspx page instead of modifying) this row:

<SRCHWC:SearchRSS

to

<SRCHWC:SearchRSS SentencesInSummary="10"

One important point: You can’t use a higher value than 10, because Microsoft blocks higher values internal. This is not perfect but you get a bit more details so it’s ok for me.

Before:

image

After:

image

Regards,

Volker

Februar 15
Find out all Databases used by SharePoint 2010

​To find out all Databases used by SP2010 you only need a single PowerShell command:

Get-SPDatabase | Sort-Object Name | Format-Table Name

August 07
Alternatives Formular für SharePoint Liste nutzen


Warum sollte man für eine SharePointliste unterschiedliche Eingabeformulare nutzen? Dies kann sinnvoll sein, wenn unterschiedliche Benutzergruppen unterschiedliche Eingabefelder zur Verfügung haben sollen. Dies wäre zum Beispiel bei einem Hotline Ticketsystem eine sinnvolle Idee. Auch kann man sich vorstellen, dass z.B. eine Maske für das erstellen und eine andere für die Bearbeitung notwendig werden kann. Dies ist mit dieser Variante möglich. Dazu wird zuerst eine List mit den entspechenden Feldern erstellt. Anschließend wird die Edit und die New Form in ein InfoPath Formular umgewandelt und nach den Vorstellungen angepasst (z.B. eine Ansicht für einem Mitarbeiter der einen Call eröffnen möchte). Dann wird eine weitere Ansicht in InfoPath erstellt. Diese wird nicht mit dern „Call eröffnen“ Ansicht verknüpft sondern bleibt einfach im Hintergrund. Die Ansicht wird später im InfoPath Form WebPart verwendet.
Damit auf die Ansicht (z.B. für den Hotlinemitarbeiter) nutzbar wird sind dann folgende Schitte zu tun:
Zuerst wird in einer WebPart Pages Bibliothek eine neue WebPart Seite erstellt.
image

Anschließend wird diese Seite bearbeitet und folgende WebParts hinzugefügt:

image

  • Query String Filter
  • ListForm der zu verknüpfenden Liste
  • Content Editor
  • InfoPath Form

Die Reihenfolge ist hier wichtig.
Als nächstes werden ein paar Verbindungen zwischen den WebParts erstellt. Zuerst wird das Query String Filter WebPart mit dem ListForm WebPart verknüpft. Damit kann aus der URL z.B. der Querystring ?ItemID=1 ausgelesen und als Filterwert an das ListForm WebPart übergeben werden. Das ListForm WebPart z.B. die View wurde so konfiguriert, dass nur max 1 Element angezeigt wird. Dies ist wichtig um den zu ladenen Seiteninhalt möglichst klein zu halten. Das ListForm WebPart wird später nur zur Weitergabe der Itemdaten an das InfoPath Form WebPart benutzt. Daher können wir das ListForm WebPart auf Hidden stellen.
Hier die entsprechenden Bilder um die Verbindungen herzustellen:
Der erste Filter wird von dem Query String Filter zum ListForm WebPart aufgebaut.
image

Die Verbindung Sendet den Wert to dem ListForm WebPart. In diesem Fall die ID des ListItems aus der Url. Das Query String WebPart wurde so konfiguriert.

image

Wichtig ist hier als Query String Parameter Name nicht ID sondern z.B. ItemID zu nutzen. ID scheint intern für etwas unbehagen zu sorgen beim Aufruf der Seite kommt ein Fehler „Item mit der ID xx not found“.

Der fertig konfigurierte Filter nutzt dann diese Konfiguration.

image

Als nächstes muss eine Verbindung zwischen dem InfoPath Form WebPart und dem ListForm WebPart hergestellt werden. Dazu muss das ListForm WebPart das komplette Item übergeben. Also nicht ein Wert und auch keine Reihe. Damit der Filter aufgebaut werden kann muss in diesem Fall von dem InfoPath Form WebPart aus gestartet werden. Das ListForm WebPart bietet die notwendige Konfiguration nicht an.

image

Weitere Konfiguration ist für die Verbindung nicht notwendig. In dem InfoPath Form WebPart können aber noch weitere Einstellungen vorgenommen werden.

image

Hier wird also die Liste ausgewählt mit der das Formular arbeiten soll. Es kann noch ein Content Type und verschieden andere Dinge konfiguriert werden.

  • Display a read-only form:
    • Das ist einfach – das Item wird als ViewForm angezeigt.
  • Show InfoPath Ribbon or toolbar:
    • Wichtig wenn das Formular nicht read-only ist um das Formular zu beenden oder zu speichern.
  • Send data to connected Web Parts whenn page loads:
    • Ist notwendig wenn das Formular Daten an ein anderes WebPart schicken soll. Z. B. wenn Infos aus dem Formular an eine andere Liste übergeben wird. In diesem Fall (ist ja umgekehrt) wäre der Haken nicht notwendig.
  • Views:
    • Hier wird die View oder die Seite aus dem Formular ausgewählt. Dies ist meiner Meinung nach der wichtigste Punkt. In dem InfoPath Formular für eine Liste kann damit eine Default View für „normale“ User erstellt werden in der vielleicht nur ein paar Daten sichtbar sind. Durch dieses Formular können dann andere Anwender (Administratoren z.B.) zusätzliche Infos sehen oder eingeben. Siehe auch „Einleitungstext“.
  • Submit Behavior:
    • Hier wird ausgewählt was passiert wenn das Formular abgeschickt wird. Das Formular geöffnet lassen oder schließen ist eine Möglichkeit. Wird das Formular geschlossen steht nach dem Klick auf „Senden“ der Text „The Form has been closed“ dort. Dies ist eher etwas unschön. Daher gibt es dazu gleich noch eine Erweiterung.
      Erweiterung für „The Form has been closed“

Damit diese Meldung nicht etwas unnütz auf der Seite stehen bleibt wird das CEWP benötigt. Dort wird folgender JavaScript Code eingetragen (Vielen Dank an Kiran Kumar Reddy)

<script src="/_layouts/jquery-1.7.2.min.js" type="text/javascript"></script><script type="text/javascript">
$(document).ready(function(){
if($('#DialogFinalMessage').children().length>0)
{
window.location.href = "/redirurl";
}
});
</script>

Damit dies funktioniert ist allerdings jQuery notwendig. In diesem Fall wurde jQuery einfach mit ins Layoutverzeichnis kopiert. Falls jQuery bereits in der Masterpage verlinkt ist wäre dies hier natürlich nicht mehr notwendig.
Mit diesem Javascript wird, nachdem das Formular geschlossen wurde, auf die Startseite umgeleitet. Eventl. könnte man auch beim Aufruf der Formularseite einen weiteren Querystring mitgeben auf den die Umleitung dann erfolgen soll. Dies habe ich aber bisher noch nicht ausprobiert.
Soweit funktioniert das ganze nun schon ganz gut. Wir müssen aber noch in der Ursprungsliste eine gute Möglichkeit einbauen auf dieses Formular zuzugreifen. Dazu wechseln wir in den SharePoint Designer und öffnen unsere Website und die entsprechende List.
image

Also zuerst in Lists and Libraries welchseln, die Liste auswählen und den Punkt „Custom Actions“ unten rechts genauer anschauen. Dort habe ich bereits eine Action „TopFields“ hinzugefügt. Um eine neu anzulegen wird „New“ angeklickt.

image

image

Der Name ist der Name der später im SharePoint angezeigt wird. Mit Navigate to Url kann eine Url mit den entsprechenden Variablen angesprochen werden. Button Image ist ein Bild was im SharePoint mit angezeigt wird. Über RightsMask kann der Link für Benutzer mit weniger Rechten ausgeblendet werden und über die Sequence number wird die Reihenfolge der Elemente verändert. Nachdem man auf OK geklickt hat sieht man noch das das Elment als „List Item Menu“ angelegt wurde. Das heißt, das es im ECB auftaucht. Über „Custom Action“ im Ribbon können noch andere Orte festgelegt werden.

Das Ergebnis sieht dann so aus:

image

Beim Klick auf TopFields wird auf die neue Formularseite weitergeleitet.

April 18
How to update Fieldvalues from other Field in your own BaseFieldControl

Hi,

today I have the problem with my custom LookupField. The LookupField uses its own field and another lookupfield from the list. The other field ist not visible in the normal edit form. So i must set the value from the other lookupfield in my basefieldcontrol code. How to do this:

public override void UpdateFieldValueInItem()

{

if (Some logic if the value is a good value)
{
//save the parent value
var lookupValue = new SPFieldLookupValue(int.Parse(_ParentDropdown.SelectedItem.Value), _ParentDropdown.SelectedItem.Text);
SPField parentField = ListItem.Fields.GetFieldByInternalName(CurrentItemParentFieldName);
BaseFieldControl parentRenderControl = parentField.FieldRenderingControl;
parentRenderControl.Value = lookupValue;
parentRenderControl.UpdateFieldValueInItem();

Value = string.Format("{0};#{1}", _ChildDropdown.SelectedItem.Value, _ChildDropdown.SelectedItem.Text);
}
base.UpdateFieldValueInItem();
}

The differences between Value and ItemFieldValue can be found here.

April 10
CopyUpsProps Tool to export or import UPS Properties

Hi together,

often you have different farms in your company. Maybe one test farm, an integration farm and a productive farm. So, before you go productive you configure your user profile properties in the user profile service. You add some props and modify the order of the properties. These needs much time because you can only move one prop one step up or down. If you want to move 10 steps up you must click the up button 10 times and every click need a couple of seconds. Not so funny to configure. So I have written a little tool to export your configuration and import it to another farm. OK, you must configure die Properties one time to create a master configuration. But then export it and if needed import it to another farm.

How to use the Tool:

CopyUPSProps.exe http://siteurlofonewebapp "AD Connection Name" -import|-export"

The AD Connection Name is the Connection Name from the User Profile Service.


image

If the tool can’ t find the AD connection name it will ask you if you want to continue.

image

Sometimes the tool can’t find the connection, because your user have not the correct ups permissions. Please Check the Administrators and the Permissions of the User Profile Services.

image

What does the tool? If you use the –export option the tool will create a xml file with the ups properties.

Here you can see an Example:

image

You can take a look at the file and see what happens. Most of the properties are written out to the file. With the –import option you can then import this xml file to another SharePoint Farm.The tool does not delete properties that are on the import farm and not on the export farm. The tool updates all properties if they are different. But some property values can’t be updated after the creation. In this situation the tool gives you no info. It simply does not change the value. Properties that are not available on the Import Farm will be created. If the tool can’t find the AD Connection and you have answered with “Yes” to continue, the tool does not configure the AD Connection value.

This tool is in beta status. So please test it before using it on a productive system. Please report any errors or if you have an improvement.

If you see an error like this check the permissions of the user. The user must have permissions on the site, user profile service and the user profile connections (see screenshot above).

image

Download

Hope this tool helps to save some time.

Volker

1 - 10Weiter
 

 Archiv

 
  
PowerPivot Gallery shows Red X's for Icons
ERROR activating Feature “Report Server Integration Feature”
ERROR on Newform.aspx in some Lists
SharePoint 2013: Copy Web Application Policy
RSS Search page with more details
Find out all Databases used by SharePoint 2010
Alternatives Formular für SharePoint Liste nutzen
How to update Fieldvalues from other Field in your own BaseFieldControl
 

 Downloads

 
  
  
CopyUPSProps.zipCopyUPSProps
clip_image0029_45B038FB.jpgclip_image0029_45B038FB
clip_image0029_thumb_45B038FB.jpgclip_image0029_thumb_45B038FB
WspDeployment.zipWspDeployment
Wiki2HtmlSrc.zipWiki2HtmlSrc
1 - 5Weiter