August, 2010

  • Forefront Identity Manager Basics voor SharePoint 2010 admins

    Nu SharePoint 2010 Forefront Identity Manager gebruikt voor profiel synchronisatie, is het tijd voor ons SharePoint admins om wederom een nieuw product te leren, althans in den basis.

    Forefront Identity Manager of FIM, is onderdeel van een bredere set aan tools binnen het Identity Management werkgebied. Het biedt synchronisatiemogelijkheden van Identity Informatie tussen verschillende bronnen, en zit daar als controlerend component met bijgeleverde metabase tussen. Zo is het mogelijk informatie over personen vanuit bijvoorbeeld HR systemen te synchroniseren naar bijvoorbeeld AD, SQL of LDAP. Verder biedt het ook nog de mogelijkheden om nieuwe objecten aan te maken om zo opgenomen te worden in een breder provisioning proces, met daaraan gekoppelde functionaliteit om bijvoorbeeld wachtwoorden te synchroniseren.

    Omdat FIM binnen SharePoint bedoeld is voor profiel synchronisatie, zal ik laatstgenoemde functionaliteiten buiten beschouwing laten. Deze blog post richt zich puur op synchronisatie van gebruikers informatie. Ook zal ik het alleen het standaard Active Directory scenario belichten. De principes hierachter zijn gelijk voor andere sources.

    (voor informatie over de User Profile Service binnen SharePoint zie: http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/SharePoint-2010-user-profile-service.aspx)

    Overview

    FIM bestaat normaal gesproken uit een aantal onderdelen, namelijk:

    • Forefront Identity Manager Service:
      Windows Service die de kernactiviteiten (ook synchronisatie) van FIM controleert.
    • Forefront Identity Manager Synchronization Service:
      Windows Service die communiceert met de verschillende data sources.
    • Forefront Identity Manager Portal:
      Self service portal en management portal voor Identity Management activiteiten (account, group beheer etc).
    • Forefront Identity Manager Password Portal
      Self service portal en management portal voor password management.

    Wanneer je binnen SharePoint een User Profile Application provisioned, en vervolgens de User Profile Synchronization Service start binnen Central Admin (Services on Server), zal SharePoint FIM configuren. Hierbij worden alleen de FIM Service en FIM Synchronization Service geconfigureerd. De beide portals komen niet beschikbaar.

    De belangrijkste concepten rondom de FIM Synchronization Service zijn de management agents, connector space en Metaverse:

    • Management agents zijn stukjes code die gebruikt worden om een data source (AD, SQL, LDIF file) te kunnen doorlopen. Zie het als een SharePoint protocol handler in 2007.
    • Connector space is eigenlijk niets meer dan een tijdelijke werkruimte voor de verschillende management agents om informatie vanuit de data sources te kunnen bewerken (op basis van policies en workflows) voordat het naar de metabase (Metaverse) wordt geschreven. In het geval van SharePoint zijn het een set tabellen in de Synchronization database die je aanmaakt, wanneer je een User Profile Application aanmaakt. Een connector space object (representatie van bijv AD user in connector space, zoals gedefinieerd binnen de Management Agents) wordt altijd aan een Metaverse object (representatie van bijv. AD user in de Metaverse, zoals gedefinieerd door het Metaverse schema) gekoppeld via 'attribute flow' rules.
    • Metaverse is een compleet overzicht van alle attributen uit de verschillende data sources met additionele metadata in 1 centrale directory (Meta Directory). Dit om te kunnen bepalen wat bijvoorbeeld de primaire bron is van een bepaald attribuut. Dit is ook niet meer dan SQL tabellen in de Synchronization database.

    Vermoedelijk ben je nu nog steeds erg verward… Misschien dat het volgende plaatje wat meer duidelijkheid schept:

    Wat hier geschetst wordt is in een notendop wat de Synchronization Service doet:

    1. FIM haalt door code in de management agent (onthoudt: geen service of echte agents, gewoon een stukje code wat in de context van de Synchronization service draait) gegevens op uit een datasource en slaat het op in de connector space.*
    2. In de connector space kan de management agent op basis van policies nog van alles doen met de opgehaalde gegevens. Een makkelijk voorbeeld is om vreemde tekens uit een string te halen.
    3. De data wordt in de Metaverse weggeschreven.
    4. Bepaalde management agents halen deze eventueel nieuwe data op uit de Metaverse en slaan het op in de connector space.
    5. In de connector space kan de management agents op basis van policies weer van alles doen met deze data. Misschien moet er aan een username een aantal voorloopkarakters worden toegevoegd omdat deze niet voldoet aan een minimaal aantal karakters.
    6. De data wordt weggeschreven naar de data source.

    * Heel belangrijk in dit concept is dat er in een dergelijk scenario altijd maar 1 master source is voor een bepaald attribuut. Een username kan dus maar op 1 data source gewijzigd worden. Uiteraard kan je ervoor kiezen een username niet te synchroniseren naar een bepaald data source, door het bijvoorbeeld helemaal niet mee te nemen in de configuratie, of alleen voor een initiële provisioning te kiezen. Je kunt het username dan wel gewoon wijzigen, zonder de kans dat het overschreven wordt door een wijziging in de master source.

    Configuratie en troubleshooting

    Voordat we over gaan tot inzage in de configuratie tool, laat ik alvast even heel duidelijk zijn:

    Bij FIM binnen SharePoint 2010 doe je de configuratie vanuit SharePoint. Afblijven dus verder!!!

    De configuratie tool voor FIM is echter wel handig bij troubleshooten, vandaar wat meer uitleg. De tool die je gebruikt voor het configureren van de FIM services rondom synchronisatie is de Synchronization Service Manager , en te vinden onder 'C:\Program Files\Microsoft Office Servers\14.0\Synchronization Service\UIShell\miisclient.exe'.

    Deze tool bestaat uit een aantal onderdelen:

    • Operations – toont een overzicht van operaties die uitgevoerd worden en uitgevoerd zijn geweest.
    • Management Agents – Configuratieonderdeel voor de management agents.
    • Metaverse Designer – Configuratieonderdeel voor het Metaverse schema.
    • Metaverse Search – Search tool voor de Metaverse
    • Joiner – Configuratieonderdeel om connector space objecten te (ont)koppelen aan Metaverse objecten.

    In de volgende paragraven zal ik elk van deze onderdelen iets meer belichten.

    Operations

    De Operations tab zul je veel gebruiken als SharePoint beheerder bij het troubleshooten van issues. Dit geeft een veel uitgebreider overzicht weer van de status van de verschillende operaties als binnen de User Profile Service. Selecteer gewoon een regel en zie wat voor informatie deze geeft. Het geeft bijvoorbeeld weer welke wijzigingen er gemaakt zijn, en – nog belangrijker – welke dus niet.

    Management Agents

    De Management Agents tab toont de verschillende Management Agents. Voor SharePoint 2010 zijn het er standaard 3 nadat je een profile import connection voor AD hebt gemaakt:

    • De ILMMA agents is van het type 'FIM Service Management Agent' en wordt niet gebruikt. Deze type agent wordt alleen gebruikt in de volledige installatie van FIM en wordt gebruikt voor workflow van bijv. Password Portal.
    • De MOSS-<GUID> agents is van het type 'Extensible Connectivity' en deze babbelt met de SharePoint profile database via een code in Microsoft.Office.Server.UserProfiles.ManagementAgent.dll. Dit connector type is dus bedoeld om je eigen Management Agents mee te bouwen. Hiervan is er dus altijd maar 1. In SharePoint 2010 kan je maar 1 User Profile Service hebben per 'User Profile Synchronization Service'. Je kunt uiteraard wel meerdere servers inzetten, en dus meerdere service instances inzetten.
    • De MOSSAD-<naam van SharePoint import connection> is van het type 'Active Directory Domain Services' en babbelt – hoe kan het ook anders – met AD. Voor elke import connectie die je binnen SharePoint aanmaakt komt er een extra management agent bij. Het type verschilt uiteraard per import connectie type. Een connectie voor een 'Active Directory Resource' begint bijv. met MOSSADR-.

    De management agents worden voorgeconfigureerd bij het deployen van de User Profile Service en het aanmaken van de Import connections. De configuratie is de bereiken door het context menu van een management agent op te vragen:

    Properties bevat de meeste configuratie. De configuratie van deze management agents wordt voor een groot deel bepaald door Rules Extentions, welke opgenomen zijn in de Configure Extention Settings sectie, wanneer je de properties opvraagt van de management agent. Dit is een binary (Microsoft.Office.Server.UserProfiles.ActiveDirectoryMAExtension.dll bijvoorbeeld voor AD types) die het overgrote deel van de configuratie van de management agent bepaald. Nogmaals: niet aan de configuratie komen dus!!

    Configure Run Profiles bevat de configuratie van de eigenlijke Operations die je terug ziet in het Operations configuratieonderdeel. Een management agent die geen run profiles heeft, doet dus niets. SharePoint stuurt het aftrappen van deze run profiles dus aan. Dat is wat je ziet in de logs.

    Een run profile bevat 1 of meerdere stappen. Een stap voert 1 operatie uit. Je kunt kiezen uit de volgende operaties:

    Operatie

    Omschrijving

    Delta Import (stage only)

    Importeert gewijzigde objecten uit de data source naar de connector space.

    Full Import (stage only)

    Importeert alle objecten uite de data source naar de connector space.

    Delta Import and Delta Synchronization

    Importeert gewijzigde objecten uit de data source naar de connector space. Vervolgens wordt na het processen van de verschillende rules, de gewijzigde data gesynchroniseerd de MetaVerse.

    Full Import and Delta Synchronization

    Importeert alle objecten uit de data source naar de connector space. Vervolgens wordt na het processen van de verschillende rules, alleen gewijzigde data gesynchroniseerd de MetaVerse.

    Full Import and Full Synchronization

    Importeert alle objecten uit de data source naar de connector space. Vervolgens wordt na het processen van de verschillende rules, alle data gesynchroniseerd de MetaVerse.

    Delta Synchronization

    Na het processen van de verschillende rules, wordt de gewijzigde staged data gesynchroniseerd de MetaVerse.

    Full Synchronization

    Na het processen van de verschillende rules, wordt alle staged data gesynchroniseerd de MetaVerse.

    Export

    Data uit de connector space wordt weggeschreven naar de data source. Dit is altijd een delta; alleen gewijzigde data wordt weggeschreven.

     

    Ook hier mag je eigenlijk niets wijzigen.

    Om te troubleshooten zijn er een aantal onderdelen waar je waardevolle informatie vandaan kunt halen of extra logging kunt aanzetten:

    1. Object Types en Attributes – In de properties van de management agents (verschilt per management agents, maar nagenoeg dezelfde informatie is altijd beschikbaar) is te vinden welke objecten en bijhorende attributen door de management agent behandeld worden. Wanneer er zich problemen voordoen kan je in de tool verifieren of de informatie die jij verwacht ook daadwerkelijk verwerkt word. Voor AD agents heten deze onderdelen Select Object Types en Select Attributes.
    2. Connector Filter – De 'Configure Connector Filter' settings in de properties van een management agent bepalen welke objecten en attributen gefilterd moeten worden.
    3. Attribute Flow – De 'Configure Attribute Flow' laat zien hoe de connector space attributen gekoppeld zijn aan de Metaverse attributen. Dit stelt je in staat te controleren of de juiste informatie aan elkaar geknoopt wordt.

      Voorbeeld:
      Op de AD management agents is givenName in de connector space (bron=AD dus) gekoppeld aan givenName in de Metaverse. Flow direction is Import dus de waarde wordt vanuit AD naar de Metaverse gebracht:

      Op de MOSS management agent is FirstName in de connector space (MOSS Profile database dus) gekoppeld aan givenName in de Metaverse. Flow direction is Export dus de waarde wordt vanuit de Metaverse naar de Profile Database gebracht.

      Zo kan je de gehele flow dus controleren.
    4. Run Profiles – Je kunt aan de run profiles zien wat voor type operatie het is. Als er dus iets mis gaat, kan je beter pinpointen waar je het moet zoeken. Verder kan je in de run profiles onder de configuratie van Steps een logfile aan laten maken met extra informatie. Dit kan erg handig zijn. Je kiest dan voor Configure Run Profiles > Edit Step > Set Log File Options

    Metaverse Designer

    De Metaverse Designer heb je echt niets te zoeken. Je kunt hier het schema zien van de metaverse, maar meer informatie valt er niet te halen.

    Metaverse Search

    De Metaverse Search kan erg handig zijn. Je kunt hiermee in de Metaverse zoeken en nagaan of jouw verwachte objecten aanwezig zijn met de juiste attribuut waarden:

    Het zoeken spreekt voor zich. Na het zoeken dubbelklik je een result en krijg je een uitgebreid overzicht op de Attributes tab van hoe het object is opgenomen in de Metaverse:

    Op de Connectors tab krijg je een overzicht van de connector spaces waar dit object mee gejoined is. Wanneer je vervolgens een management agent selecteert, kun je kiezen voor Properties, waarna je een overzicht krijgt van hoe het object er in de connector space uitziet. Verder bevat dit scherm informatie over wanneer het type object en wanneer de laatste wijzigingen zijn geweest in de connector space. Op zich handige informatie, maar de meest handige functionaliteit hier is Preview. Onder aan het scherm is een Preview knop. Wanneer je deze gebruikt kom je in een venster waar je een Full of Delta synchronisatie kunt simuleren van die management agent (ofwel synchronisatie vanuit de connector space richting de metaverse). Je krijgt dan een compleet overzicht van wat er zou gebeuren als je nu zou synchronizeren. Je kunt bijvoorbeeld ook checken wat voor resultaten dat zou hebben voor de Export operaties van andere management agents. In mijn geval heb ik voor het schrijven van http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/SharePoint-2010-profiel-synchronisatie-export.aspx het property department gewijzigd zodat deze vanuit SharePoint zou synchen met AD. Je ziet in onderstaand voorbeeld dat mijn FULL synch zou zorgen dat de AD management agent bij de Export operatie het attribute department gaat proberen te exporteren, maar dat de Final Value (Unchanged) is. Het is dus ondertussen niet gewijzigd.

    Joiner

    In joiner kun je zoeken naar objecten in connector spaces die niet gekoppeld zijn aan objecten in de metaverse. Ik kan niet zo snel een situatie bedenken dat je hier graag zou willen kijken. Je zou hier hoogstens even kunnen kijken of bepaalde objecten gefilterd zijn door rules door te zoeken op Filtered Disconnetors. Echter, aangezien rules nagenoeg allemaal gebaseerd zijn op Rules Extentions, valt er verder weinig aan te troubleshooten. Misschien dat na gelang de tijd vordert zich nieuwe toepassingen aandoen, maar vooralsnog zou ik Joiner links laten liggen.

    Troubleshooting

    Naast de eerder genoemde plekken waar je relevante informatie kunt vinden, is er binnen deze tool ook nog de mogelijkheid op twee plekken wat extra logging aan te zetten:

    1. Extra logging in Application Log:
      1. Open de Microsoft.ResourceManagement.Service.exe.config file in 'C:\Program Files\Microsoft Office Servers\14.0\Service'.
      2. Verander de waarde van Error naar "Verbose".
      3. Herstart de Forefront Identity Manager Service.
    2. Trace logging – Je kunt EWT tracing gebruiken om extra informatie boven tafel te toveren, maar dit is alleen nodig bij in-depth troubleshooting en wil je alleen doen op aanwijzen van een Microsoft Support engineer. Meer hierover is te vinden op http://msdn.microsoft.com/en-us/library/ff357801.aspx
  • Sharepoint 2010 – User Profile Service timerjobs en CMDLets

    Deze laatste post in de blog serie over de User Profile Service toont een overzicht van Timer Jobs en CMDLets die gebruikt (kunnen) worden bij beheer van de User Profile Service. Eerdere blog posts in deze series zijn:

    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-user-profile-service.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-profiel-synchronisatie-import.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-profiel-synchronisatie-export.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/08/sharepoint-2010-social-tags-notes-en-user-ratings.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/13/sharepoint-2010-my-sites.aspx

    Timerjobs

    De User Profile Service leunt op een groot scala aan timerjobs. De volgende lijst geeft daarvan een overzicht.

    • User Profile Service - Activity Feed Cleanup Job
      Ruimt activiteiten ouder dan 14 dagen op data op uit de Social Database.
    • User Profile Service - Activity Feed Job
      Verzamelt informatie op basis van changelogs in de Social en Profile database, en maakt daar activiteiten van die getoont kunnen worden in bijv. News Feeds.
    • User Profile Service - Audience Compilation Job
      Voorziet profiles van Audience lidmaatschap.
    • User Profile Service - My Site Suggestions Email Job
      Stuurt emails rondom My Sites. Bijvoorbeeld herinnerings emails als de My Site al enige tijd niet is bijgewerkt.
    • User Profile Service - Social Data Maintenance Job
      Voert administratieve taken uit rondom Social data, zoals het opschonen van changelogs in de Social Database, het aanpassen van Tags en notes na wijzigingen in termstores en profiles toevoegen aan crawls, wanneer social data wijzigt.
    • User Profile Service - Social Rating Synchronization Job
      Zorgt voor het synchroniseren van Rating informatie tussen Social database en content databases.
    • User Profile Service - System Job to Manage User Profile Synchronization
      Maakt elke minuut connectie met Forefront Identity Manager om status informatie op te halen of taken af te trappen.
    • User Profile Service - User Profile Change Cleanup Job
      Schoont de change log op in de User Profile database.
    • User Profile Service - User Profile Change Job
      Verwerkt wijzigingen aan User Profiles.
    • User Profile Service - User Profile Incremental Synchronization
      Stuurt incremental profile synchronization aan.
    • User Profile Service - User Profile Language Synchronization Job
      Zorgt bij nieuwe language packs, dat localized strings in de profielen worden aangepast.
    • User Profile Service - User Profile to SharePoint Full Synchronization
      Verzorgt de profiel synchronisatie tussen Profile database en content databases (Server naar Foundation profielen), en haalt memberships op.
    • User Profile Service - User Profile to SharePoint Quick Synchronization
      Zorgt voor profiel synchronisatie van nieuwe gebruikers vanuit Profile database naar content databases.
    • My Site Cleanup Job
      Start bij het verwijderen van een profiel uit de profiel database een workflow, waarbij de manager site owner wordt en een email krijgt. De workflow is aan te passen.

    Powershell CmdLets

    Voor diegene die liever met Powershell werkt, is de User Profile Service, zoals nagenoeg elke Service Application, prima te beheren via Powershell. De volgende Powershell CmdLets zijn te gebruiken:

    Cmdlet name 

    Omschrijving

    Syntax 

    Add-SPSiteSubscriptionProfileConfig  

    Voegt in multi-tenant scenarios een nieuwe site subscription toe aan de Service Application. 

    Add-SPSiteSubscriptionProfileConfig [-Identity] <SPSiteSubscriptionPipeBind> -ProfileServiceApplicationProxy <SPServiceApplicationProxyPipeBind> [-AssignmentCollection <SPAssignmentCollection>] [-Confirm [<SwitchParameter>]] [-MySiteHostLocation <SPSitePipeBind>] [-SynchronizationOU <String>] [-WhatIf [<SwitchParameter>]]

    Get-SPProfileServiceApplicationSecurity

    Laat security informatie zien over de Service Application. 

    Get-SPProfileServiceApplicationSecurity -ProfileServiceApplicationProxy <SPServiceApplicationProxyPipeBind> [-AssignmentCollection <SPAssignmentCollection>] [-SiteSubscription <SPSiteSubscriptionPipeBind>] [-Type <String>]

    Move-SPProfileManagedMetadataProperty  

    Verplaatst Profile Property naar een managed termset in de Managed Metadata Service. Wanneer je geen termset opgeeft komt deze in de Keywords term set te staan. 

    Move-SPProfileManagedMetadataProperty -Identity <String> -ProfileServiceApplicationProxy <SPServiceApplicationProxyPipeBind> [-AssignmentCollection <SPAssignmentCollection>] [-AvailableForTagging <SwitchParameter>] [-Confirm [<SwitchParameter>]] [-TermSetName <String>] [-WhatIf [<SwitchParameter>]]

    New-SPProfileServiceApplication  

    Maakt een nieuwe User Profile Service Application aan 

    New-SPProfileServiceApplication -ApplicationPool <SPIisWebServiceApplicationPoolPipeBind> [-AssignmentCollection <SPAssignmentCollection>] [-Confirm [<SwitchParameter>]] [-MySiteHostLocation <SPSitePipeBind>] [-Name <String>] [-PartitionMode <SwitchParameter>] [-ProfileDBCredentials <PSCredential>] [-ProfileDBFailoverServer <String>] [-ProfileDBName <String>] [-ProfileDBServer <String>] [-ProfileSyncDBCredentials <PSCredential>] [-ProfileSyncDBFailoverServer <String>] [-ProfileSyncDBName <String>] [-ProfileSyncDBServer <String>] [-SocialDBCredentials <PSCredential>] [-SocialDBFailoverServer <String>] [-SocialDBName <String>] [-SocialDBServer <String>] [-WhatIf [<SwitchParameter>]]

    New-SPProfileServiceApplicationProxy  

    Maakt een nieuwe User Profile Service Application Proxy aan 

    New-SPProfileServiceApplicationProxy -Uri <Uri> [-AssignmentCollection <SPAssignmentCollection>] [-Confirm [<SwitchParameter>]] [-DefaultProxyGroup <SwitchParameter>] [-Name <String>] [-PartitionMode <SwitchParameter>] [-WhatIf [<SwitchParameter>]]

    Remove-SPSiteSubscriptionProfileConfig  

    Verwijdert in multi-tenant scenarios een site subscription van de Service Application. 

    Remove-SPSiteSubscriptionProfileConfig [-Identity] <SPSiteSubscriptionPipeBind> -ProfileServiceApplicationProxy <SPServiceApplicationProxyPipeBind> [-AssignmentCollection <SPAssignmentCollection>] [-Confirm [<SwitchParameter>]] [-WhatIf [<SwitchParameter>]]

    Remove-SPSocialItemByDate

    Verwijdert Tags, notes, of ratings uit de Social Databases.

    Remove-SPSocialItemByDate -EndDate <DateTime> -ProfileServiceApplicationProxy <SPServiceApplicationProxyPipeBind> [-AssignmentCollection <SPAssignmentCollection>] [-Confirm [<SwitchParameter>]] [-RemoveComments <$true | $false>] [-RemoveRatings <$true | $false>] [-RemoveTags <$true | $false>] [-SiteSubscription <SPSiteSubscriptionPipeBind>] [-WhatIf [<SwitchParameter>]]

    Set-SPProfileServiceApplication  

    Wijzigt eigenschappen van de User Profile Service Application.

    Set-SPProfileServiceApplication [-Identity] <SPServiceApplicationPipeBind> [-ApplicationPool <SPIisWebServiceApplicationPoolPipeBind>] [-AssignmentCollection <SPAssignmentCollection>] [-Confirm [<SwitchParameter>]] [-GetNonImportedObjects <$true | $false>] [-MySiteHostLocation <SPSitePipeBind>] [-Name <String>] [-ProfileDBCredentials <PSCredential>] [-ProfileDBFailoverServer <String>] [-ProfileSyncDBCredentials <PSCredential>] [-ProfileSyncDBFailoverServer <String>] [-PurgeNonImportedObjects <$true | $false>] [-SocialDBCredentials <PSCredential>] [-SocialDBFailoverServer <String>] [-UseOnlyPreferredDomainControllers <$true | $false>] [-WhatIf [<SwitchParameter>]]

    Set-SPProfileServiceApplicationProxy  

    Wijzigt de eigenschappen van een User Profile Service Application Proxy.

    Set-SPProfileServiceApplicationProxy [-Identity] <SPServiceApplicationProxyPipeBind> [-AssignmentCollection <SPAssignmentCollection>] [-Confirm [<SwitchParameter>]] [-DefaultProxyGroup <SwitchParameter>] [-MySiteHostLocation <SPSitePipeBind>] [-MySiteManagedPath <SPPrefixPipeBind>] [-Name <String>] [-SiteNamingConflictResolution <String>] [-WhatIf [<SwitchParameter>]]

    Set-SPProfileServiceApplicationSecurity  

    Wijzigt security informatie van een Service Application.

    Set-SPProfileServiceApplicationSecurity -Identity <SPObjectSecurity> -ProfileServiceApplicationProxy <SPServiceApplicationProxyPipeBind> [-AssignmentCollection <SPAssignmentCollection>] [-Confirm [<SwitchParameter>]] [-SiteSubscription <SPSiteSubscriptionPipeBind>] [-Type <String>] [-WhatIf [<SwitchParameter>]]

    Set-SPSiteSubscriptionProfileConfig  

    Wijzigt de eigenschappen van een site subscription in een multitenant scenario. 

    Set-SPSiteSubscriptionProfileConfig [-Identity] <SPSiteSubscriptionPipeBind> -ProfileServiceApplicationProxy <SPServiceApplicationProxyPipeBind> [-AssignmentCollection <SPAssignmentCollection>] [-Confirm [<SwitchParameter>]] [-MySiteHostLocation <SPSitePipeBind>] [-SynchronizationOU <String>] [-WhatIf [<SwitchParameter>]]

    Update-SPProfilePhotoStore  

    Update een profile photo store om te kunnen werken met Microsoft SharePoint Server 2010.
    Alleen te gebruiken na een upgrade van Sharepoint 2007 naar 2010.

    Update-SPProfilePhotoStore -MySiteHostLocation <SPSitePipeBind> [-AssignmentCollection <SPAssignmentCollection>]

     

    De volledige blog serie bestaat uit:

    1. http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-user-profile-service.aspx
    2. http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-profiel-synchronisatie-import.aspx
    3. http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-profiel-synchronisatie-export.aspx
    4. http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/08/sharepoint-2010-social-tags-notes-en-user-ratings.aspx
    5. http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/13/sharepoint-2010-my-sites.aspx
    6. http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/13/sharepoint-2010-user-profile-service-timerjobs-en-cmdlets

     

  • Sharepoint 2010 – My Sites

    In deze vijfde post in de User Profile Service series ga ik in op de 'My Sites'. Eerdere posts in deze serie:

    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-user-profile-service.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-profiel-synchronisatie-import.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-profiel-synchronisatie-export.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/08/sharepoint-2010-social-tags-notes-en-user-ratings.aspx

    In het aantal en type componenten rondom 'My Sites' is eigenlijk weinig veranderd in 2010. Onderstaande afbeelding geeft deze schematisch weer.

    Het begint bij de gebruiker die via browser of client applicatie verbinding maakt met bijvoorbeeld een teamsite binnen een web applicatie. Door vervolgens de standaard 'My Site' web control te gebruiken, wordt er een call naar de User Profile Service gemaakt om de 'Trusted My Site Host location' voor de gebruiker op te halen. Deze wordt vervolgens doorgestuurd naar een lokale of remote 'My Site Host'.

    De 'My Site Host' is gebaseerd op de SPSMSITEHOST site definitie en bevat een default.aspx pagina die content toont vanuit de desbetreffende My Site, en profiel van de gebruiker. Deze pagina wordt standaard getoond, en bevat de 'What's New' webpart, welke een News Feed toont met recente activiteiten van de gebruiker en directe collega's.

    Ook host deze site de profiel pagina (person.aspx), waar gebruikers de profielen van henzelf en anderen kunnen zien, en mogelijk wijzigen, wanneer zij kiezen voor de 'My Profile' link . Door middel van de 'My Content' link, komt men op hun eigen 'My Site' uit.

    De 'My Site', gebaseerd op de SPSMSITE site definitie, is een persoonlijke site voor de gebruiker. De gebruiker is hiervan 'site owner' en 'site collection administrator', en kan er dus mee doen wat hij/zij wil.

    Een laatste component wat in een lokale deployment meespeelt is de 'Timer Service'. Deze beheert via de 'My Site Cleanup' en 'User Profile Service – My Site Suggestions Email Job' timer jobs de My Sites. Zo zorgt de Cleanup job ervoor dat, na verwijdering van een profiel uit de Profile Database, de manager van deze persoon de volledige rechten krijgt, en een email notificatie. De Suggestions job stuurt periodiek een email met bepaalde 'suggesties' rondom Keywords en Collega's wanneer het profiel langer dan een maand niet van updates is voorzien.

    In een global deployment wordt een gebruiker op basis van zijn of haar 'Trusted My Site Host location' mogelijk doorgestuurd naar een remote farm. Het probleem hierbij is dat Social- en Profiel Data dynamisch is, en verschilt per farm. Om dit tegen te gaan is er – net als in 2007 – de optionele 'User Profile Replication Engine' welke gebruikt wordt om Social Data als Tags en keywords, en profiel data te repliceren tussen twee User Profile Service Applications.

    De sites

    Zoals gezegd spelen er twee belangrijke sites mee, namelijk de 'My Site' zelf en de 'My Site Host'. Zoals gezegd is de 'My Site' zelf redelijk basic gebleven, en is er niet heel veel gewijzigd ten opzichte van 2007. Het is een simpele site met een tweetal document libraries 'Shared Documents' en 'Personal Documents'. Deze zijn bedoeld voor het opslaan van privé documenten, en documenten die gedeeld kunnen worden met anderen. Het grote verschil met 2007, is dat de MySite root site, eigenlijk niet direct toegankelijk is voor anderen, ook al heeft 'NT AUTHORITY\AUTHENTICATED USERS' read rechten op de site. Gebruikers worden door een speciaal web control doorgestuurd naar de Person.aspx profiel pagina van de 'My Site Host', welke geaggregeerde data laat zien van de eigenlijke 'My Site'. Via het breken van de overerving van rechten (Limited Access) kan je wel direct rechten toekennen aan lijsten en items, die wel direct toegankelijk zijn (een veelgebruikte toepassing zullen Discussion Boards zijn). De My Site root zal alleen direct gebruikt worden door de eigenaar van de site.

    De 'My Site Host' pagina, waarvan er 1 per User Profile Service is, heeft wel een flinke facelift ondergaan. Het is bijna een Social Portal geworden. Het bestaat uit een aantal onderdelen:

    • My News Feeds
      Dit is de default pagina (default.aspx), welke standaard de 'What's New' webpart bevat. Deze webpart toont recente activiteiten, waarop je je kunt inschrijven.
    • My Content
      My Content redirect naar de mysite.aspx pagina, wat de pagina is die je ofwel redirect naar je eigen mysite of een nieuwe mysite voor je aanmaakt (wanneer je daar rechten toe hebt).
    • My Profile
      Dit is de nieuwe profiel pagina (person.aspx), welke profiel informatie bevat.

    De structuur van de 'My Site Host' is hieronder schematisch weergegeven.

    De 'News Feed' pagina, is de default pagina, welke de recente activiteiten van jouw collega's bevat. Deze activiteiten worden bepaald op basis van jouw subscriptions. Deze zijn te wijzigen door te kiezen voor My Interests of Newsfeed Settings binnen deze webpart. In beide gevallen wordt je profiel in edit mode geopend (/_layouts/EditProfile.aspx). In de Newsfeed Settings sectie kan je de instellingen aanpassen. De meeste instellingen spreken voor zich. Je kunt bij Interests opgeven welke interests jij hebt. Mocht er iemand in zijn profiel dezelfde interests toevoegen, wordt jij daarvan op de hoogte gesteld via de activity web parts. Deze activiteiten worden op basis van changelogs in de Profile- en Social databases gecreëerd door de User Profile Service - Activity Feed Job timer job en opgeslagen in de Social database.

    Vanuit de 'News Feed' pagina kun je naar de Profiel pagina, door te kiezen voor My Profile of naar je eigen 'My Site' door te kiezen voor My Content.

    De profiel pagina is de meest uit het oog springende. Deze heeft echt een flinke facelift ondergaan ten opzichte van SharePoint 2007. Ik zal niet alle pagina's in detail behandelen, maar de nieuwe person.aspx en /_layouts/thoughts.aspx verdienen wel extra aandacht. Alle pagina's die gekoppeld zijn aan het profiel gebruiken een custom masterpage die je profiel foto, met een call-out (die vrij aan te passen is. Hoe cool zou het zijn, als dat gekoppeld werd aan OCS J) , en een aantal tabbladen welke verwijzen naar de verschillende overige pagina's.

    De person.aspx pagina is de pagina achter 'Overview', welke de Ask Me About, Recent Activities, My Organization Chart, In Common with You en Note Board web parts laat zien.

    De 'Ask Me About' web part laat het gelijknamend veld in jouw profiel zien. Wanneer iemand een link klikt, worden ze doorverwezen naar het 'Note Board' onderaan de overview pagina, waar dan een berichtje achtergelaten kan worden wat begint met 'Question about Sharepoint:', waarbij Sharepoint dan de link in de 'Ask Me About' was, waarop geklikt werd.
    De 'Recent Activities' spreekt voor zich, en is een overzicht van jouw recente activiteiten.
    De 'My Organization Chart' is een tree view van de organisatie, gebaseerd op de 'Manager', 'Direct Reports' en 'Department' velden uit Active Directory. Deze kan je verder manipuleren door je 'Colleagues' aan te passen onder de 'Colleagues' tab.
    De 'In Common with You' web part laat gedeelde managers, collega's en site memberships zien. Tenslotte kun je in het 'Note Board' web part een notitie achterlaten.

    De 'Tags & Notes' tab, vind ik persoonlijk een hele leuke tab. Hier kun je al je Tags en Notities centraal managen:


    Je kunt op deze manier content terugvinden op basis van Tags (alhoewel Search hiervoor toch wel een betere oplossing is), en je kunt je Tags verwijderen of 'Private' maken. Door middel van de Refine by … web parts kun je heel gemakkelijk de Tags en Notes anders sorteren. De Add Sharepoint Tags and Note Tool werkt een beetje omslachtig, maar is een handige tool. Wanneer je deze als bookmark toevoegt aan bijvoorbeeld Internet Explorer (in mijn geval Tag Site), kun je heel gemakkelijk externe sites taggen. Er wordt dan een javascript aangeroepen die de url van de pagina meeneemt en toevoegt aan de tag.

    Het allerleukste heb ik tot het laatst bewaard. Als je goed kijkt naar deze 'Tags & Notes' pagina, zie je dat alle tags in de Activities for: web part hyperlinks bevatten. Wanneer je dan vervolgens zo'n tag aanklikt, kom je op de Tag Profile pagina (/mysitehost/tagprofile.aspx), waar je een overzicht ziet van alle plekken waar deze tag gebruikt is.

    Zo kun je zien in welke term set de tag is opgenomen, waaar de tagged items zijn, en de tag meteen toevoegen in jouw profiel. Zo kun je zorgen dat je op de hoogte gehouden wordt, van waar die tag gebruikt wordt, of toevoegen aan de 'Ask About Me'. Ook kun je op deze tag weer een Notitie achterlaten. Ik kan mij niet echt voorstellen waarom je dit zou willen, maar het kan. Tenslotte kun je nog kiezen voor See all results for this tag in search. Het resultaat mag duidelijk zijn. Meer hierover in mijn volgende blog post series over Search.

    De overige tabbladen op de profiel pagina's vind ik minder interessant. Zo is de 'Organization' tab een pagina met een SilverLight control die hetzelfde laat zien als de 'My Organization Chart' web part op de 'Overview' tab, maar dan als mooie SilverLight animatie. Verder hebben we nog de 'Colleagues' en 'Memberships' tabbladen die – hoe kan het ook anders – collega's en site memberships tonen (alleen waar je lid bent van site members, geen andere Sharepoint groups), en de mogelijkheid bieden deze te manipuleren. Tenslotte is er nog de 'Content' tab, die we reeds besproken hebben in het stukje over de 'My Site'. Deze bevat een overzicht van recente blog posts, en content waar jij eigenaar van bent, op sites binnen jouw memberships.

    Configuratie

    Als je mijn blog post series hebt gevolgd, weet je al wat nodig is om 'My Sites' te hosten. Om toch het een en ander samen te vatten. Heb je voor de 'My Sites' het volgende nodig.

    1. Creëer een web applicatie voor de My Sites.
      http://technet.microsoft.com/en-us/library/cc261875(office.14).aspx
    2. Creëer een My Site Host site collection.
      1. Maak de site collectie in de nieuw aangemaakte web applicatie.
      2. Gebruik de My Site Host template (onder de Enterprise tab)
    3. Creëer een managed path voor de My Sites web applicatie.
    4. (Optioneel) Activeer self-service-site creation
      http://technet.microsoft.com/en-us/library/cc261685(office.14).aspx
      Deze actie stelt gebruikers met de juiste rechten in staat om zelf sites te creëren. Dit is nodig voor de My Site host om het mogelijk te maken om My Sites automatisch te laten genereren. De gebruiker moet dan wel 'Use Self-Service Site Creation' rechten hebben.
    5. (Optioneel) Creëer een User Policy om site creation rechten te delegeren.
      1. Browse naar Application Management > Manage Web Applications
      2. Selecteer de nieuw aangemaakte web application.
      3. Kies in de Ribbon voor Permission Policy onder de Policy sectie.
      4. Selecteer Add Permission Policy Level.
      5. Geef de policy een naam, kies voor Allow en het recht Use Self-Service Site Creation, en selecteer OK.
      6. Kies in de Ribbon voor User Policy onder de Policy sectie.
      7. Selecteer Add Users.
      8. Laat de dropdown box op 'All Zones' staan en kies Next.
      9. Geef NT Authority\Authenticated Users op als security principle in de Choose Users sectie, selecteer de zojuist aangemaakte permission policy in de Choose Permissions sectie, en selecteer OK.
    6. Verwijs een 'User Profile Service' naar de juiste zojuist aangemaakte 'My Site Host':
      1. Browse naar Application Management > Manage Service Applications > User Profile Service > Setup My Sites
      2. Geef in de My Site Host Location de volledige URL op van de 'My Site Host'.
      3. Geef in de Personal Site Location het managed pad op wat je hebt aangemaakt.
      4. Verdere settings die nog gewijzigd kunnen worden:
        1. Preferred Search Center – Wijzigt het default Search Center en scopes voor de My Site Host profiel pagina.
        2. Site Naming format – Bepaald de url van de nieuwe My Sites. Je kunt hier kiezen de gebruikersnaam te gebruiken of een combinatie van domein en gebruikersnaam om conflicten te voorkomen.
        3. Language Options – Bepaald of gebruikers een eigen taal mogen kiezen voor hun My Site.
        4. Read Permission Level – Bepaald welke accounts read rechten krijgen op de My Sites.
        5. My Site E-Mail notifications – Bepaalde welk sender en reply-to adres gebruikt wordt bij het versturen van notificatie emails.
      5. Selecteer Ok om de wijzigingen op te slaan.
    7. Zorg dat de gebruikers de juiste rechten hebben om de features te gebruiken en om de My Sites aan te maken (standaard staat dit goed via 'Authenticated Users'):
      1. Browse naar Application Management > Manage Service Applications > User Profile Service > Manage User Permissions
      2. Zorg dat de gebruikers de Use Personal Features en Create Personal Site rechten hebben.

    Alle web applicaties die verbonden zijn met de Service Application proxy group waar deze 'User Profile Service' onder valt kunnen nu gebruik maken van de functionaliteiten van de 'My Sites'.

    De overige configuratie die gedaan kan worden rondom 'My Sites' is niet veel gewijzigd in 2010. Via Configure Trusted Host Locations geef je 'My Site Host' locaties op die je kunt gebruiken in Audiences om gebruikers naar andere 'My Site Hosts' te sturen, in omgevingen waar meerdere SharePoint farms draaien. Published links to Office client applications en Configure Personalization Site stellen je in staat om links naar interne of externe links toe te voegen aan hetzij de 'My Site Host' toplink bar, ofwel aan de Office client applicaties. In combinatie met audiences, kan je deze links targetten op groepen gebruikers.

    De volledige blog serie bestaat uit:

    1. http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-user-profile-service.aspx
    2. http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-profiel-synchronisatie-import.aspx
    3. http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-profiel-synchronisatie-export.aspx
    4. http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/08/sharepoint-2010-social-tags-notes-en-user-ratings.aspx
    5. http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/13/sharepoint-2010-my-sites.aspx
    6. http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/13/sharepoint-2010-user-profile-service-timerjobs-en-cmdlets
  • SharePoint 2010 – Social Tags, Notes en User Ratings

    Social Tags, Notes en User Ratings is functionaliteit van de User Profile Service die de mogelijk maakt om content van tags en notities te voorzien, en te waarderen. Deze social features zijn out-of-the-box redelijk basic, maar bieden erg gave mogelijkheden als je een ontwikkelaar hiermee aan de slag laat gaan. Het basis framework voor het verzamelen van deze informatie en wat out-of-the-box voorbeelden zal ik laten zien in deze vierde post in de User Profile Service serie. Eerdere posts:

    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/SharePoint-2010-user-profile-service.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/SharePoint-2010-profiel-synchronisatie-import.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/SharePoint-2010-profiel-synchronisatie-export.aspx

    Ik begin met wat voorbeelden. Het gros van de Social Features zijn meteen beschikbaar als de User Profile Service configureert. Om te beginnen met de Social Tags en Notes; Het is mogelijk om op content te voorzien van Tags en Notes. De meest opvallende plek waar je dit kunt doen is de 'I Like it' en 'Tags & Notes' die aanwezig zijn op elke pagina:

    'I Like It' voegt een simpele 'I Like It' tag toe aan de Social Database. De 'Tags & Notes' stelt je in staat om andere tags toe te voegen dan het saaie 'I Like It' ('I Hate It' bijvoorbeeld J). Verder stelt het je in staat om Notities toe te voegen aan de site. Een erg simpele maar leuke functionaliteit:

    Het houdt echter niet op bij tags en notes op pagina's. Elke lijst kan voorzien worden van een tags kolom. Dit kan in de vorm van 'Managed Metadata' of 'Enterprise Keywords' kolommen. 'Managed Metadata' kolommen koppel je aan term sets, waardoor de keuzes beperkt worden. 'Enterprise Keywords' zijn kolommen die je vrij kunt invullen. Terwijl je typt worden er suggesties gedaan op basis van term sets, en 'Enterprise Keywords' die reeds gebruikt zijn. In het voorbeeld hieronder is te zien dat er 2 suggesties worden gedaan, waarvan 1 uit de term set 'CallOuts' en 1 uit 'Keywords'.

    Keywords worden altijd terugggeschreven naar de Managed Metadata Service, zodat ze door anderen gebruikt kunnen worden. 'Enterprise Keywords' moet geactiveerd worden in de settings van de lijst, onder 'Enterprise Metadata and Keywords Settings'. Hier geef je aan dat de lijst voorzien moet worden van een 'Enterprise Keyword' kolom en dat de Keywords teruggeschreven moet worden naar de Managed Metadata Service. Verder kan je hier aangeven dat het taggen van content in de lijst wordt doorgegeven aan de User Profile Service, zodat deze als activiteiten in News Feeds gebruikt kunnen worden. Meer over News Feeds in de post over My Sites.

    Ratings aanbrengen op content is iets wat je op een lijst kunt configureren. Je krijgt dan een Rating kolom, welke je kunt gebruiken om content van een rating te voorzien. Dit zijn gemiddelde ratings, dus deze stijgen en dalen naar gelang er meer mensen content waarderen

    Componenten

    Om te begrijpen hoe het transportmechanisme werkt, hieronder een schematisch overzicht van de verschillende componenten die meespelen:

    Tags, Notes en Ratings lijken totaal verschillende dingen, maar zijn gebaseerd op dezelfde mechanismen. Een gebruiker kan content taggen, raten en van notities voorzien, waarna de code in de User Profile Service ervoor zorgt dat dit weggeschreven wordt naar de Social Database. Dezelfde calls worden gebruikt voor Ratings, Notes en Tags, waarbij een type veld aangeeft om wat voor type bericht het gaat. Om te bepalen bij welke gebruiker dit bericht hoort, wordt er een relatie gelegd tussen de Social Database en de Profiles Database, zodat gebruikers informatie niet meerdere malen wordt opgeslagen.

    Tags kunnen gebaseerd worden op Terms uit de Term Store. Wanneer een term uit de termstore gebruikt wordt als Tag, wordt de Term ID en de waarde opgeslagen in de Social Database. De reden dat de waarde daar ook in wordt opgeslagen – dubbele data dus – is om ervoor te zorgen dat tags behouden blijven ook als de Managed MetaData service er niet meer is.

    De Search Service Application wordt gebruikt om Social data te crawlen, zodat er ook op Tags gezocht kan worden. Dit gebeurt gedurende de normale crawls. Hiervoor hoeft niets speciaals te gebeuren. Search wordt verder gebruikt tijdens het tonen van Social Data (bijvoorbeeld Notes). Dit omdat Social Data moet security trimmed zijn. Er wordt een request gedaan naar de User Profile Service, en tegelijkertijd wordt er gecontroleerd of de User voor het specifieke stukje content, waarop de Note van toepassing is, ook rechten heeft. Dit gebeurt middels Search. Dit kan ervoor zorgen dat, wanneer je net rechten hebt gekregen, het enige tijd kan duren voordat je de Social Data van anderen ziet.

    Tenslotte zijn er verschillende timer jobs die Social Data verwerken. Wanneer een gebruiker een Notitie of Tag maakt, wordt dat eerst weggeschreven in een ChangeLog. Dit zorgt voor een snelle inserts, met minimale impact op SQL resources. Timerjobs zorgen in een later stadium dat deze batchgewijs worden verwerkt naar tabellen waar de uiteindelijke user requests op terecht komen. Standaard draaien deze elk uur. Dit is puur vanuit performance oogpunt gedaan. Anders had voor elke Insert er een call gedaan moeten worden naar de Profile Store om de actuele profiel informatie op te halen. Social Data is dus niet altijd actueel. Een ander belangrijke taak van de timerjobs is het opschonen van oude Social Data en Changelogs en het sychroniseren van Ratings naar de content database.

    Wanneer je content van een Rating voorziet, zal dit opgeslagen worden in de Social Database. Op de site zie je vervolgens nog niets, behalve als je over de Rating kolom 'hovert'. Er wordt dan een call naar de backend gedaan om jouw rating op te halen:

    Pas nadat de 'User Profile Service - Social Rating Synchronization Job' heeft gedraaid, wordt de gemiddelde Rating voor dat stukje content zichtbaar in de content database.

    Configuratie en management

    Om de eerdere genoemde functionaliteit te gebruiken moet er een en ander geconfigureerd worden:

    1. (Volg de procedures uit de eerdere posts om de User Profile Service te implementeren)
    2. Creëer een Managed Metadata Service Application.
      http://technet.microsoft.com/en-us/library/ee530392(office.14).aspx
      1. Configureer een term (set) met de checkbox Allow for tagging
    3. Creëer een Search Service Application.
      http://technet.microsoft.com/en-us/library/ee792877.aspx
      1. Configureer crawl schedules.
    4. Zorg dat de farm feature Social Tags and Note Board Ribbon Controls geactiveerd is (System Settings > Farm Features. Deze is standaard actief, en zorgt voor de 'I Like It' en 'Tags & Notes' controls.
    5. Zorg dat de gebruikers het recht User Social Features hebben toegewezen gekregen in Application Management > Manage Service Applications > User Profile Service > Manage User Permission
    6. Sta ratings toe op een lijst door te kiezen voor List Settings > Rating Settings > Allow items in this list to be rated.
    7. Sta 'Enterprise Keywords' toe op een lijst door te kiezen voor List Settings > Enterprise Metadata and Keywords Settings > Add an Enterprise Keywords column to this list and enable Keyword synchronization.
    8. Sta Keyword synchonisatie met de User Profile Service toe door te kiezen voor List Settings > Enterprise Metadata and Keywords Settings > Add values in Managed Metadata and Enterprise Keywords fields to My Site profiles as social tags.

    Om Social Data te managen zijn er drie niveaus:

    1. Gebruikers kunnen hun eigen Social Data managen op de site en content zelf.
      Dit gaat op dezelfde manier als hoe je nieuwe Social Data toevoegt. Wanneer je content getagged hebt of hebt voorzien van notities, kun je altijd terug om deze te wijzigen.
    2. Gebruikers kunnen hun eigen Social Data centraal managen via de profiel pagina op de MySite host.
      Dit gaat via de Tags and Notes tab op de profiel pagina. Meer hierover in mijn post over My Sites.
    3. User Profile Service Administrators kunnen Social Data centraal managen via de User Profile Service admin pagina.
      1. Browse naar Application Management > Manage Service Applications > User Profile Service > Manage Social Tags and Notes met een account dat het recht Manage Social Data heeft toegewezen gekregen via de Administrator settings van de User Profile Service.
      2. Gebruik het zoek mechanisme om tags en notes te zoeken op basis van gebruiker, url, datum en tekst.
      3. Selecteer de notes of tags die verwijderd moeten worden en selecteer Delete:

    De volledige blog serie bestaat uit:
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-user-profile-service.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-profiel-synchronisatie-import.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-profiel-synchronisatie-export.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/08/sharepoint-2010-social-tags-notes-en-user-ratings.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/13/sharepoint-2010-my-sites.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/13/sharepoint-2010-user-profile-service-timerjobs-en-cmdlets

  • SharePoint 2010 - Profiel Synchronisatie (Export)

    Dit is het derde deel in de serie over de User Profile Service. Deze post behandelt profiel synchronisatie. Het behandelt het exporteren van profieldata naar AD. Voordat je deze post leest, lees eerst de volgende blog posts:

    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-user-profile-service.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-profiel-synchronisatie-import.aspx

    In de vorige post hebben we het alleen gehad over het importeren van profiel informatie, maar zoals gezegd kunnen we nu ook informatie terugschrijven naar AD. Onderstaand voorbeeld laat zien hoe je eigenschappen terug kunt schrijven naar AD.

    Voordat we kunnen beginnen met de configuratie aan de Sharepoint-kant, moeten er rechten gezet worden in AD:

    1. Open Active Directory Users and Computers of de domain context in AdsiEdit.msc.
    2. Op elk OU (of alleen op domain level) waar je gebruikers hebt zitten die binnen de synchronisatie connectie vallen moet je voor het synchronisatie account Write en Create all child objects rechten toekennen. Alleen toekennen is echter niet voldoende. Wanneer je de gebruiker hebt toegevoegd, selecteer dan Advanced.
    3. Selecteer de permissieset die je zojuist hebt toegevoegd (replicate changes staat er ook nog tussen, maar die moet je dus niet hebben), en selecteer Edit.
    4. Uit de Apply to dropdown box kies je vervolgens This object and all descendant objects.
    5. Selecteer een aantal keer OK om de wijziging door te voeren.

    Wanneer deze rechten goed staan kunnen we properties gaan configureren die we willen exporteren. Als voorbeeld neem ik Department.

    1. Browse naar Application Management > Manage Service Applications > User Profile Service > Profile Properties.
    2. Selecteer Edit vanuit het contextmenu van het Department property.
    3. In de Property Mapping for Synchronization sectie, zie je aan welk AD attribuut dit property gekoppeld is. Dit moet je onthouden, omdat we deze opnieuw gaan aanmaken.
    4. Selecteer Remove om de mapping te verwijderen.
    5. Maak een nieuwe mapping aan met Direction = Export.
    6. Selecteer OK om het property op te slaan.

    Verifieer nu of de export werkt. Wijzig een profiel:

    1. Application Management > Manage Service Applications > User Profile Service > User Profiles.
    2. Zoek een profiel en selecteer Edit My Profile vanuit het context menu.
    3. Wijzig het Department veld:
    4. Start een incremental synchronisatie vanuit Application Management > Manage Service Applications > User Profile Service.
    5. Controleer het attribuut in Active Directory:

    Mocht je nu geen wijziging zien, dan is dat meestal te wijten aan onvoldoende rechten in AD. In de Sharepoint UI zie je echter geen foutmeldingen, maar als je de FIM tooling opent, zie je het wel:

    Dubbel- en tripplecheck dus die rechten.

    De volledige blog serie bestaat uit:
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-user-profile-service.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-profiel-synchronisatie-import.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-profiel-synchronisatie-export.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/08/sharepoint-2010-social-tags-notes-en-user-ratings.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/13/sharepoint-2010-my-sites.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/13/sharepoint-2010-user-profile-service-timerjobs-en-cmdlets

  • SharePoint 2010 - Profiel Synchronisatie (Import)

    Dit is het tweede deel in de serie over de User Profile Service. Deze post behandelt profiel synchronisatie. Het behandelt het importeren van profieldata. Voordat je deze post leest, lees eerst de volgende blog posts:

    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-user-profile-service.aspx

    Profiel synchronisatie zorgt voor het vullen en actueel houden van profiel data. Zoals gezegd in eerdere blog posts gaat dat nu via de FIM services.

    Voordat we kunnen na gaan denken over het synchroniseren van profieldata, moeten we eerst de User Profile Service Application aanmaken en configureren. Hiervoor is het eerst nodig om een My Site infrastructuur klaar te zetten, om de volledige functionaliteit te kunnen benutten.

    1. Maak een service account aan voor de profile import.
    2. Zorg dat het account 'replicate-changes' rechten krijgt in AD. Dit is nodig om via een AD Server extension changes aan objecten uit te kunnen lezen.
      http://support.microsoft.com/kb/303972
    3. Creëer een web applicatie voor de My Sites.
      http://technet.microsoft.com/en-us/library/cc261875(office.14).aspx
    4. Creëer een My Site Host site collection.
      1. Maak de site collectie in de nieuw aangemaakte web applicatie.
      2. Gebruik de My Site Host template (onder de Enterprise tab)
    5. Creëer een managed path voor de My Sites web applicatie.
    6. (Optioneel) Activeer self-service-site creation
      http://technet.microsoft.com/en-us/library/cc261685(office.14).aspx
      Deze actie stelt gebruikers met de juiste rechten in staat om zelf sites te creëren. Dit is nodig voor de My Site host om het mogelijk te maken om My Sites automatisch te laten genereren. De gebruiker moet dan wel 'Use Self-Service Site Creation' rechten hebben.
    7. (Optioneel) Creëer een User Policy om site creation rechten te delegeren.
      1. Browse naar Application Management > Manage Web Applications
      2. Selecteer de nieuw aangemaakte web application.
      3. Kies in de Ribbon voor Permission Policy onder de Policy sectie.
      4. Selecteer Add Permission Policy Level.
      5. Geef de policy een naam, kies voor Allow en het recht Use Self-Service Site Creation, en selecteer OK.
      6. Kies in de Ribbon voor User Policy onder de Policy sectie.
      7. Selecteer Add Users.
      8. Laat de dropdown box op 'All Zones' staan en kies Next.
      9. Geef NT Authority\Authenticated Users op als security principle in de Choose Users sectie, selecteer de zojuist aangemaakte permission policy in de Choose Permissions sectie, en selecteer OK.
    8. Creëer een User Profile Service Application.
      1. Browse naar Application Management > Manage Service Applications.
      2. Selecteer in de Ribbon New > User Profile Service Application
      3. In het Create New User Profile Service Application scherm vind je de standaard opties terug voor het aanmaken van een service application.
        Hierbij moet je de namen van de eerder genoemde databases opgeven en een Application Pool.
        De opties waar je verder op moet letten zijn Profile Synchronization Intance, My Site Host URL, My Site Managed Path, en Site Naming Format.

        1. Profile Synchronization Instance bepaald welke server het synchronisatie process gaat draaien (1 van de actieve service instances ).
        2. De My Site Host URL dient de URL te krijgen van de My Site Host die we in eerdere stappen hebben aangemaakt.
        3. De My Site Managed Path dient het managed path te krijgen die we in eerdere stappen hebben aangemaakt.
        4. Site Naming Format bepaald hoe de My Sites genoemd worden bij het aanmaken. In single-domain deployments is een site gebaseerd op User Name prima, maar in omgevingen met meerdere domeinen/forests is het aan te raden te kiezen voor een syntax die dit soort conflicten verhelpt.
      4. Klik Create om de Service Application aan te maken.

    Nu de service application aangemaakt is, moet er een synchronisatie connectie aangemaakt worden naar Active Directory. Om dit voor elkaar te krijgen:

    1. Browse naar Application Management > Manage Service Applications > User Profile Service > Synchronization Connections
    2. Selecteer Create New Connection.
    3. Geef hier de settings op voor de connectie. De instellingen spreken eigenlijk voor zicht, maar
      vergeet niet het profile import account, dat we eerder hebben aangemaakt, te gebruiken in Connection Settings.
    4. Selecteer OK.
    5. Om filters aan te maken, bijvoorbeeld om disabled accounts te filteren, selecteer je de zojuist aangemaakte connectie en kies je Edit Connection Filters vanuit het context menu.
    6. Maak hier je filter en selecteer OK om het filter op te slaan. Disabled accounts filteren gaat als volgt:

    De Service Application is nu klaar. Wat rest is om de User Profile Service en User Profile Synchronization Service services te starten op een Sharepoint server, maar voordat we dat doen, moet er nog iets heel belangrijks gebeuren: VOEG HET FARM ACCOUNT TOE AAN DE LOCAL ADMINISTRATORS VAN DESERVER WAAR DE SYNCHRONISATIE SERVICE GAAT DRAAIEN EN HERSTART DAAR DE TIMER SERVICE. Vergeet dit absoluut niet, want anders gaat de provisioning stuk en kan je opnieuw beginnen. Je kunt na de provisioning het account weer weghalen. 

    1. Browse naar System Settings > Manage Services on Server.
    2. Start eerst de User Profile Service, en vervolgens de User Profile Synchronization Service.
    3. Selecteer de zojuist aangemaakte Service Application en geef het Farm account op (dus het account van de central admin apppool en de timer service).
    4. Selecteer OK en 'keep your fingers crossed'.

    De service wordt nu provisioned, wat inhoudt dat FIM geconfigureerd wordt. Dit houdt dus ook in dat op dat moment de SQL tabellen en stored procedures worden aangemaakt in de Synchronisatie database. Dit is het punt waar, als je tegen fouten aan zou lopen, je er tegen aan loopt. Als je in eerdere stappen bijvoorbeeld onvoldoende rechten in AD hebt gegeven of de User Profile Service niet hebt gestart, gaat alles stuk, en kan je meestal niet anders dan helemaal opnieuw beginnen. Deze integratie werkt wat mij betreft op het provisioning vlak nog niet goed. Zodra deze service gestart is, wat ZEER lang kan duren, is alles klaar voor de eerste import.

    Om een profile synchronisatie te starten, selecteer je simpelweg Start Profile Synchronization vanuit Application Management > Manage Service Applications > User Profile Service.

    Het synchronisatie proces zal starten. De voortgang kan je in hetzelfde venster monitoren. Synchroniseren gaat meestal zonder problemen. Als je het eenmaal allemaal werkend hebt, werkt het ook goed. De verschillende fasen en management/control activiteiten maken het, in vergelijking met Sharepoint 2007, erg traag voor kleinere omgevingen. Dit wordt echter goed gemaakt door een veel snellere doorvoer in grote omgevingen.

    Als je met deze status niet uit de voeten kunt, kun je altijd nog de FIM configuratie client gebruiken, welke te vinden is onder 'C:\Program Files\Microsoft Office Servers\14.0\Synchronization Service\UIShell\miisclient.exe'. Hier is een uitgebreidere status te volgen:

    Wat nu nog rest is de synchonisatie van de profiel informatie in de Profile Database naar de Sharepoint Foundation profielen (WSSv4 profielen). Dit proces is nagenoeg ongewijzigd ten opzichte van 2007. Wat namen van stored procedures e.d. zijn veranderd, maar verder is het redelijk hetzelfde proces. Voor een beschrijving hiervan, check mijn blog post over Profiel Synchronisatie in Sharepoint 2007: http://blogs.microsoft.nl/blogs/mpriem/archive/2010/01/11/ssp-profile-synchronisatie-in-sharepoint.aspx

    De volledige blog serie bestaat uit:
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-user-profile-service.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-profiel-synchronisatie-import.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-profiel-synchronisatie-export.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/08/sharepoint-2010-social-tags-notes-en-user-ratings.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/13/sharepoint-2010-my-sites.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/13/sharepoint-2010-user-profile-service-timerjobs-en-cmdlets

  • SharePoint 2010 - User Profile Service

    Deze serie van posts gaat over de User Profile Service, een van de vele nieuwe Service Applications die SharePoint 2010 rijk is. In deze post ga ik proberen duidelijk te maken waar deze set aan functionaliteiten uit bestaat en wat je moet doen om het draaiende te krijgen, want simpel is dat allerminst.

    Overview

    De User Profile Service is een Shared Service Application* welke een centrale locatie biedt om instellingen te managen voor de volgende features:

    • User Profiles – Een user profile is een item waarin persoonlijke informatie is opgeslagen rondom een gebruiker.
    • My Sites –My Sites zijn persoonlijke sites waar gebruikers hun profielen kunnen bijwerken en biedt een persoonlijke locatie waar gegevens vanuit SharePoint geaggregeerd kan worden, en waar gebruikers persoonlijke items kunnen opslaan.
    • Profiel Synchronisatie – Net als in SharePoint 2007 is het mogelijk profiles te importeren uit verschillende account sources. Nieuw in SharePoint 2010 is de mogelijkheid om informatie terug te schrijven naar deze sources.
    • Audiences – Audiences zijn een soort groepen van gebruikers, en stellen je in staat om content te targetten op basis van zo'n audience. Lidmaatschap van een audience wordt bepaald op basis van profile data, zoals bijvoorbeeld afdeling, locatie of functie.
    • Social Tags en Notes – Social Tags en Notes zijn stukjes metadata wat gebruikers aan SharePoint items kunnen meegeven.

    Om het volledige spectrum aan features te kunnen leveren maakt de User Profile Service gebruik van een aantal andere Shared Services, waarvan de belangrijkste zijn:

    • Managed Metadata Service – Levert de mogelijkheid profile properties aan te bieden op basis van metadata terms uit de termstore.
    • Search Service – Wordt gebruikt om de people search functionaliteit te kunnen bieden.
    • Business Connectivity Service – Wordt gebruikt om profile imports te doen uit custom account sources zoals SQL databases.

    *Het is belangrijk op te merken, dat ondanks in technische documentatie wordt gerefereerd aan een Shared Service of Shared Service Application, dat de term Service en Service Application niet staan voor een fysieke service of applicatie. Het is een benaming voor onderdelen binnen het Shared Services architectuur model van SharePoint 2010.
    Zo is een Shared Service niet altijd een fysieke Windows Service, noch Web Service. Het is een beschrijving van een stuk functionaliteit dat aangeboden wordt. Het bestaat uit de code en datastores die uiteindelijk de functionaliteit bieden. De logische en fysieke structuur wijzigt. Zo kan het slechts een set .NET binaries zijn, maar ook een combinatie van verschillende windows en web services, met meerdere databases als back-end datastores.
    Veel verwarrender is de term Service Application. Een Service Application is geen applicatie. Het is een logische configuratiecontainer die SharePoint hanteert om configuratie rondom Services bij te houden, bijvoorbeeld over de rollen die een bepaalde service 'hosten'. Het is verder een logische interface om een service te kunnen managen. Een Service Application is dus verder niets, alle fysieke componenten worden geleverd door de Service zelf.

    Componenten

    Wanneer we naar de componenten kijken van de User Profile service dat zouden we dat schematisch als volgt kunnen tekenen:

    De User Profile Service bestaat eigenlijk uit drie hoofdcomponenten, namelijk:

    1. Service Databases
    2. User Profile Service
    3. User Profile Synchronization Service

    De Service databases zijn:

    • Profile Database – Bevat de profielen.
    • Synchronization database – Bevat de configuratiedata en tijdelijke data voor het synchronisatiemechanisme.
    • Social Tagging Database – Bevat social tags en notes, die door de gebruikers worden aangebracht aan content.

    De eigenlijke code die de functionaliteit biedt (User Profile Service) is aanwezig op elk systeem na installatie. Dit is gewoon een set binaries op het filesysteem. De User Profile Service binaries zijn te vinden in de GAC (Microsoft.Office.Server.UserProfiles en Microsoft.Office.Server.UserProfiles.Synchronization). Deze draaien gewoon in de context van de verschillende web applicaties en de timerservice.

    De Synchronization service is gebaseerd op Forefront Identity Manager. In een nutshell is dit een stripped-down installatie van FIM, welke zeer solide synchronisatie beidt tussen verschillende Identity stores. Variërend van AD, tot BCS, tot LDAP tot flat files. Meer hierover heb ik beschreven in deze blogpost: http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/13/forefront-identity-manager-basics-voor-sharepoint-2010-admins.aspx 

    De integratie met FIM biedt de volgende voordelen:

    • Synchronisatie vs. Import. Het is nu dus mogelijk terug te schreven naar een data source.
    • Schaalbaar. Het schaalt beter dan onze search crawler in 2007, die er niet voor ontworpen was. Ook is er de mogelijkheid tot loskoppelen built-in installatie en opname in een reeds bestaande installatie van FIM.
    • Aanpasbaar. Doordat FIM de onderlaag is, is het mogelijk allerlei geavanceerde policies toe te passen. Je kunt bijvoorbeeld data transformeren en valideren voordat het gesynchroniseerd wordt.
    • Standaardisatie. FIM is een product binnen een bredere strategie rondom Identity Management. Het koppelen van SharePoint aan FIM, is een vorm van integratie en standaardisatie, en verlaagt zo de inspanning voor beheer.

    Dit is in een nutshell een overzicht van de componenten van de User Profile Service. De volgende blogposts bevatten een overzicht over het toepassen en gebruiken van de functionaliteit.

    De volledige blog serie bestaat uit:
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-user-profile-service.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-profiel-synchronisatie-import.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/sharepoint-2010-profiel-synchronisatie-export.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/08/sharepoint-2010-social-tags-notes-en-user-ratings.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/13/sharepoint-2010-my-sites.aspx
    http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/13/sharepoint-2010-user-profile-service-timerjobs-en-cmdlets