none
Question about User Profile Synchronization, User Information List and SharePoint Designer Workflow Send Email to Multiple Recipients

Answers

  • 1)  The UPS DB and UIL are not related.  The UIL is populated by the User Info table in the content database for whatever web application that site collection is in.  Each site collection has a separate UIL with separate entries for each person, however, the User Info table is one big table with all entries for all users across all site collections in that content database.  For instance, if I have 6 site collections, I will potentially have 6 entries in this table with different GUIDs that define the respective site collection for each entry.  Why did I say "potentially"?  Because users aren't automatically populated into the UIL, which is different than the profile database.  When we do a profile import, the profile database is populated with all those users, and that is a single source of information for the entire farm (or for every web app that subscribes to that particular User Profile Service Application.  That's why you can get this profile info using the User Profile Service from any site in the farm.  However, the UIL only gets populated when a user added to a People Picker, such as when adding explicit permissions (to a user, but not when adding a group) or assigning a task.

    If the user is not already in the UIL, then the People Picker calls out to the UPS DB, but it then adds an entry to the UIL for that person with their profile info.  From that point forward, the People Picker pulls from the UIL information.  Unfortunately, there is nothing that syncs the profile info from the profile DB to the UIL.  I'm not sure at all why it's built like this, because it leads to mismatches whenever a user's profile info is changed in AD (or whatever identity provider is being used.

    2) Yeah, like I said, it is not synced with the profile database, but I don't know why.  I haven't actually run into what you described, though.  Why would a user not have an email address at any point in time?

    3) You can't have an import in place without the User Profile Sync Service.  That is the service that allows you to create an import connection and import users.


    SharePoint Architect || Microsoft MVP || My Blog
    Planet Technologies || SharePoint Task Force
    • Marked as answer by XJWU Wednesday, December 01, 2010 8:18 PM
    Wednesday, December 01, 2010 6:14 PM

All replies

  • 1)  The UPS DB and UIL are not related.  The UIL is populated by the User Info table in the content database for whatever web application that site collection is in.  Each site collection has a separate UIL with separate entries for each person, however, the User Info table is one big table with all entries for all users across all site collections in that content database.  For instance, if I have 6 site collections, I will potentially have 6 entries in this table with different GUIDs that define the respective site collection for each entry.  Why did I say "potentially"?  Because users aren't automatically populated into the UIL, which is different than the profile database.  When we do a profile import, the profile database is populated with all those users, and that is a single source of information for the entire farm (or for every web app that subscribes to that particular User Profile Service Application.  That's why you can get this profile info using the User Profile Service from any site in the farm.  However, the UIL only gets populated when a user added to a People Picker, such as when adding explicit permissions (to a user, but not when adding a group) or assigning a task.

    If the user is not already in the UIL, then the People Picker calls out to the UPS DB, but it then adds an entry to the UIL for that person with their profile info.  From that point forward, the People Picker pulls from the UIL information.  Unfortunately, there is nothing that syncs the profile info from the profile DB to the UIL.  I'm not sure at all why it's built like this, because it leads to mismatches whenever a user's profile info is changed in AD (or whatever identity provider is being used.

    2) Yeah, like I said, it is not synced with the profile database, but I don't know why.  I haven't actually run into what you described, though.  Why would a user not have an email address at any point in time?

    3) You can't have an import in place without the User Profile Sync Service.  That is the service that allows you to create an import connection and import users.


    SharePoint Architect || Microsoft MVP || My Blog
    Planet Technologies || SharePoint Task Force
    • Marked as answer by XJWU Wednesday, December 01, 2010 8:18 PM
    Wednesday, December 01, 2010 6:14 PM
  • Hi Clayton,

    Thank you for your detailed explanation. It's very clear and informaitonal.

    The user I was talking about is a test user. It was first created without email account. Email account was added later. Given the possibility of UIL going out of date, do you know how I can use person picker (in my InfoPath form) and be sure that every user/group picked will for sure receive email in my SPD workflow? Or is there any good workaround that you'd adivse?

    My organization is not ready to start the synchronization service. First, now I now it probably is not going to help with my problem (i.e. oudated info from UIL) Second, they are not sure what impacts it will have on the farm and hosted site collections. Do you see any potential problem for not running the service?

    Many thanks and Regards


    XJWU
    Wednesday, December 01, 2010 7:01 PM
  • One way to be sure is to utilize the User Profile Service to retrieve the email address of the user selected in the Contact Selector within InfoPath.  Store that value into a hidden field, promote it to your form library, then use that field's value in your workflow.  This becomes more hairy if you allow multiple selections in the Contact Selector, though, because then you need to retrieve it for each user, concatenate all those values into a field using the double eval method (delimited with semicolons), and then use that concatenated value in the workflow.

    However, I have yet to send an email successfully when utilizing the AccountId value of the Contact Selector, which is in the form of domain\name.  It's never actually happened, so I haven't had to "ensure" it.

    Why are they not be "ready" to start it?  It's critical for use of SharePoint, otherwise you won't have user information populated.  It's one of the first and primary things you typically set up. Are they afraid of it or something?


    SharePoint Architect || Microsoft MVP || My Blog
    Planet Technologies || SharePoint Task Force
    Wednesday, December 01, 2010 7:06 PM
  • Thanks again, Clayton,

    The User Profile Service is running but not the synchronization service. As far as I have experienced, it takes unpredictable number of days for a new piece of info, for example, email, to come up.  Do you know any links to Microsoft doucmentation about the criticalness to have the synchronization service running, which I can present to the people who own the system to consider start the service?

    You mentioned User Profile Service. I read a lot about your post and blog about utilizing the User Profile Service. I was able to pull data by following the setup instructions when we were in SharePoint 2007 environment. We recently upgraded to 2010 without visual upgrade. Somehow I cannot get it to work in the new environment. I always get the 5566 error. I even did with a very simple form with just textboxes showing all the name/value sets. I followed one of your post suggesting by converting the data connection to connection file on the site. But it still doesn't work. I got the following error message and after I clicked ok. The form comes up with blank fields (data failed to be retrieved). I was informed the server has been upgraded to latest .Net Framework, which I thought could be the cause for my unsuccessful attempts, but I just tested my form. The same error message persists. Do you have any good suggestion to share with me regarding this? By the way, when I can preview the form with all the data showing.

    An error occurred while trying to connect to a Web service.

    An entry has been added to the Windows event log of the server.
    Log ID:5566

    Correlation ID:9d32deb6-86d9-496e-ae53-d72a2c818db2

    Thank you very much!


    XJWU
    Wednesday, December 01, 2010 7:23 PM
  • The User Profile SErvice requires the User Profile Database to be populated, which is done via the User Profile Sync.  You were apparently running this in 2007, so why would they not do it in 2010?  If you did an upgrade, then that should have been provisioned automatically when it split up the SSP into its new components.  Previously, there wasn't a UPS or UPA, but rather they were combined inside the SSP (My Sites, profile import, etc.).  Now, we first create the UPA (User Profile Service Application), which is our main interface for social/people stuff, and then we provision the User Profile Sync Service (UPS) so that we can do profile imports.  I'm really surprised they just decided not to start that - it's an integral part of your farm.  I can't point you to articles saying it's critical, because it's not critical unless you need profile info, but you were doing all that in 2007, so I don't know why they'd suddenly decide not to do it in 2010 unless they didn't understand what it was for.

    What do you mean by, "As far as I have experienced, it takes unpredictable number of days for a new piece of info, for example, email, to come up"?  If they aren't using the UPS, then they are not importing profiles at all, but the UIL will get populated based on the scenarios I mentioned above, though that's not farm-wide.

    There are several potential causes for getting the 5566 error.  It would require an evaluation of your environment.  I'm guessing that the profile database is populated already due to the upgrade, but it's probably all stale based on when the upgrade occurred, since no imports have occurred since then.  I am not certain what happens when calling that web service without UPS running, but I don't think they're directly tied.  If you can view the web service URL in the browser, then it's operational.


    SharePoint Architect || Microsoft MVP || My Blog
    Planet Technologies || SharePoint Task Force

    Wednesday, December 01, 2010 7:28 PM
  • Clayton,

    I'm confused too. I was told "the User Profile Service is and has been running on the SharePoint server. However, in Central admin the User Profile Synchronization service is not started". If no synchronization is running, how could I get new user/group in person picker?

    Do you have any suggestion about the browser form that I can pull web service when preview in InfoPath but not when open the form in SharePoint, even after converting the data connection to file?

    Regards


    XJWU
    Wednesday, December 01, 2010 7:53 PM
  • Yes, the User Profile Service is a service application, but it doesn't import profiles without the sync service.  As I mentioned, it's likely populated due to the upgrade - the database would not have lost its data during that upgrade.

    It's quite often that things work in the client (preview is client mode) but not in the browser.  There are many reasons for it, but it takes time and analysis to find out why.


    SharePoint Architect || Microsoft MVP || My Blog
    Planet Technologies || SharePoint Task Force
    Wednesday, December 01, 2010 8:16 PM