Wenn man die Benutzereigenschaften Reihenfolge im User Profile Service von SharePoint ändern möchte, kann es passieren, dass ab einem bestimmten Punkt die Einträge nicht mehr weiter verschoben werden können. Über die Oberfläche ist ab diesem Punkt kein weiterkommen mehr möglich.
Die Benutzereigenschaften Reihenfolge wird über eine entsprechende Nummer im Feld mit dem Namen DisplayOrder
gesteuert, die jedem Eintrag zugewiesen ist. Nun kann es vorkommen, dass zwei Eigenschaften die gleiche Nummer besitzen. Und an dieser Stelle tritt das oben beschriebene Verhalten auf.
Die aktuelle Benutzereigenschaften Reihenfolge kann recht einfach über PowerShell abgefragt werden:
$SPSite = Get-SPSite -Limit 1 $Context = Get-SPServiceContext $SPSite $ProfileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($Context) $ProfileManager.Properties | ft Name,DisplayOrder
Sollte der Benutzer mit dem das PowerShell Script ausgeführt wird, nicht alle notwendigen Berechtigungen besitzen, kann in Zeile 3 folgender Fehler auftreten:
New-Object : Exception calling ".ctor" with "1" argument(s): "Object reference not set to an instance of an object." At line:1 char:29 + ProfileManager = New-Object <<<< Microsoft.Office.Server.UserProfiles.UserProfileManager($Context) + CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvocationException + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
Diese etwas kryptische Fehlermeldung sagt allerdings nur aus, dass der Benutzer nicht die notwendigen Berechtigungen auf der User Profile Service Application besitzt. Entweder führt man das Script unter einem Benutzer aus der diese Berechtigungen besitzt, oder man muss den aktuellen Benutzer noch entsprechend als Administrator (Vollzugriff) für die User Profile Service Application eintragen. Allerdings muss man aufpassen, dass die Berechtigungen an zwei Stellen gesetzt werden:
Nachdem das Script erfolgreich ausgeführt wurde, kann ein exemplarisches Ergebnis (in Microsoft Excel aufbereitet) so aussehen:
Die problematische Stelle ist im oberen Bild farbig markiert. Sind zwei Zahlen im Feld DisplayOrder
gleich, kann in diesem Beispiel der Eintrag WorkEmail
nicht weiter nach unten bzw. der Eintrag CellPhone
nicht weiter nach oben verschoben werden.
Nachdem wir nun die Namen der Benutzereigenschaften und die zugehörige Reihenfolge haben, können wir diese auch wieder über die PowerShell ändern:
$profileManager.Properties.SetDisplayOrderByPropertyName(“WorkEmail”,5414) $profileManager.Properties.CommitDisplayOrder()
Bei der Auswahl der DisplayOrder
sollte man beachten, dass diese Nummer nicht schon bereits vergeben ist. Sonst hat man den ganzen Spaß wieder, dass man über die UI die Reihenfolge nicht mehr ändern kann. Auch konnte ich in der Praxis teilweise beobachten, dass man den Befehl CommitDisplayOrder
mehrmals ausführen musste, damit die DisplayOrder
richtig gesetzt wurde.
Also wundert euch nicht wenn die Sortierung der Benutzereigenschaften über die UI plötzlich nicht mehr funktioniert. Das Verhalten ist nachvollziehbar und kann wie meistens über die PowerShell gelöst werden.
Die Benutzung der PowerShell-Skripte erfolgt natürlich wie immer auf eigene Gefahr.
Happy SharePointing…