SPSBos_BBC_DCP (1) - SharePoint Saturday Events

advertisement
Leveraging User Profiles and My Sites
in SharePoint 2010 and 2013
Beatrice Baciu - Architect
Derek Cash-Peterson - Practice Director
http://thebookofsharepoint.blogspot.com/
@spdcp
http://spdcp.com
@BeatriceBaciu
The Challenge
Centralize all profile data
Searching profile data
Integrate with other systems of record
Agenda
• How does the user profile service work?
• The benefits of the user profile service.
• How does the user profile relate to MySites?
• Configuring user profile service
• Ways to develop against the user profile service in 2010 & 2013
What We Are Not Talking About
• Enterprise Social
• Tagging/Notes
• Basic configuration of User Profile Service
How Does the User Profile Service Work
SharePoint
FIM
External System
User Profile
Service
Application
Direct Active
Directory Import
Active Directory
C#
Benefits of the User Profile Service
• Allows centralized location for all user properties
• Aggregation of user properties regardless of source
• Out-of-the-box storage of links to user mysites
• Individual MySite provides indivudal location to manage and store documents,
links, etc.
• Easy consumption of data in code
How does the user profile relate to MySites
• There is a link to the users MySite in the User Profile
• MySite provides user with an interface to edit profile data
• MySite Provides an individual repository for users that is security trimmed
• Aggregation of all user profile properties in one source
User Profile Service
Demo Configuration
with ADFS and a
custom database
Recap
• Use AD/ADFS as primary sync connection
• Use BCS to import additional profile properties
• Use property mapping to aggregate the User Profile
• If using SPD, the primary key will be used as the identifier; modify the BDCM file
yourself and use a unique logical key
• Permissions in BDC
Troubleshooting
• Connections Disappear: consider restarting the User Profile Synchronization
Service
• Random Sync issues: consider restarting the SharePoint Timer Service
• when MySite gets created, user profile gets created if not there
Limitations
• BDC cannot be the primary sync connection
• Duplicate profiles
• Once sync connection is deleted, profiles need to be purged via PS
User Profile Service
in Farm-level
scenario
Design Approach
Coding with the
User Profile Service
in SharePoint 2010
Coding with the
User Profile Service
in SharePoint 2013
User Profile Service Data Access via REST
• GET
• All current user properties
http://siteurl/_api/SP.UserProfiles.PeopleManager/GetPropertiesFor(accountName=@v)?@v='domain\username
• Get specific property of current user
http://siteurl/_api/SP.UserProfiles.PeopleManager/GetMyProperties?$select=PictureUrl,AccountName
• Get all properties for a specific user
http://siteurl/_api/SP.UserProfiles.PeopleManager/GetPropertiesFor(accountName=@v)?@v='domain\username’
• Get specific property for a specific user
http://siteurl/_api/SP.UserProfiles.PeopleManager/GetUserProfilePropertyFor(accountName=@v,propertyName='
LastName')?@v='domain\username‘
User Profile Service Data Access via REST
• POST
• Provision user MySite
http://siteurl/_api/SP.UserProfiles.ProfileLoader.GetProfileLoader/GetUserProfile/CreatePersonalSiteEnqueue
• Set current user’s profile picture
http://siteurl/_api/SP.UserProfiles.PeopleManager/SetMyProfilePicture
• NOTES
• Changing user’s profile properties is not implemented in REST or CSOM
• Deletion of user profiles is not implemented in REST or CSOM
• o365 authentication uses account names like
@v='i:0%23.f|membership|user@siteurl.onmicrosoft.com‘
User Profile Service Data Access via REST
var inputParameters = {
“props”:
{
"__metadata": { "type": "SP.UserProfiles. GetUserProfilePropertyFor" },
"accountName": "demo\bbaciu",
"propertyName": [“FirstName”]
}};
var requestHeaders = {
"Accept": "application/json;odata=verbose",
"X-RequestDigest": jQuery("#__REQUESTDIGEST").val()};
jQuery.ajax({
url:_spPageContextInfo.webAbsoluteUrl +
"/_api/SP.UserProfiles.PeopleManager/GetUserProfilePropertyFor",
type:"POST",
data: JSON.stringify(inputParameters ),
contentType : "application/json;odata=verbose",
headers: requestHeaders,
success:function(data){
//read property
},
error:function(jqxr,errorCode,errorThrown){
//handle error
}
});
User Profile Service Data Access via CSOM
SP.SOD.executeOrDelayUntilScriptLoaded(getUserProperties, 'SP.UserProfiles.js');
function getUserProperties()
{
var targetUser = "domainName\\username”;
var clientContext = new SP.ClientContext.get_current();
var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);
personProperties = peopleManager.getPropertiesFor(targetUser);
clientContext.load(personProperties);
clientContext.executeQueryAsync(onRequestSuccess, onRequestFail);
}
function onRequestSuccess()
{
//we distinguish between user properties and user profile properties
var messageText = " \"DisplayName\" property is " + personProperties.get_displayName();
messageText += "<br />\"Department\" property is " +
personProperties.get_userProfileProperties()['Department'];
}
Recap
• How the user profile service works.
• The benefits of the user profile service.
• How does the user profile relate to MySites?
• Configuring user profile service
• Ways to develop against the user profile service in 2010 & 2013
Thank You!
Beatrice Baciu
@BeatriceBaciu
http://thebookofsharepoint.blogspot.com/
Derek Cash-Peterson
@spdcp
http://www.spdcp.com
BlueMetal Architects
www.bluemetal.com
Blog.bluemetal.com
@bluemetalinc
Download