Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

We currently have Sharepoint 2010 setup to use AD to get useraccounts, and a BCS connection to provide extra information to the User Profile of users. The data from AD is very basic: only username and an Identifier used for BCS. BCS retrieves extra information based on the Identifier. This information comes from a CRM system and contains info like Name, Address, Phone number, Department, etc.

We want to enable users to update the CRM info from their MySite profile page in Sharepoint. When the info is sent to the CRM, in the CRM it goes through a workflow. It can take hours or days for this information to be updated. (we are aware that in the mean time the updated info might be overwritten again by the next User Profile Sync, this is not a problem)

I can think of a few possible approaches to do this:
1. Use BCS to update the CRM: create an Updater method in the BCS.
2. Hook into the Userprofile Update Event and immediately send the data to the CRM. However, I cannot find any documentation on an update event, but I can find statements that this event exists.
3. Create a timerjob to periodically get all updates and send the to the CRM.

What would be the best way to do what we want, or are there any other approaches to do this?

share|improve this question
add comment

2 Answers

BCS for User Profiles is read only

You can populate the properties of existing user profiles from a business system. You cannot create new user profiles in this manner, and you cannot write data back to a business system

so you cannot do this out of the box.

http://technet.microsoft.com/en-us/library/gg188041.aspx#importBusiness

UPDATE: One way to achieve this could be to use the GetChanges method on UserProfile class in a timer job. Be aware that this demands you allow the users to update fields even though they should be read-only since BCS fields cannot be updated, so you will have to do a POC to test if this is even possible with BCS fields. http://msdn.microsoft.com/en-us/library/ms517376.aspx

share|improve this answer
    
Ok, so updating through BCS is not possible. So how about the other two options I mentioned? 2. Hook into the Userprofile Update Event and immediately send the data to the CRM. However, I cannot find any documentation on an update event, but I can find statements that this event exists. 3. Create a timerjob to periodically get all updates and send the to the CRM. –  Felix Jun 22 '12 at 8:41
    
check my update to see if that will work for you –  Anders Rask Jun 25 '12 at 7:00
add comment

I have doubts that the "Userprofile Update Event" will work. You can query the User Profile Change log periodically and check the state of the properties you want to update in CRM. This is fully supported by the API. The change log is maintained for 2 weeks by default and you can pass a time based query from your custom timer job.

There is an article about that here: User Profile Change

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.