How to Create an InfoPath Form to Auto Populate Data in SharePoint 2010
I have been working on a SharePoint 2010 site and the site owner wanted a form that would auto populate the current users information. Is this possible? Sure, but I’m not a developer so I had to figure out a different
way. This is where InfoPath 2010 comes in - although I’ve never worked with that product either. :-)
Researching on the Internet, I found some really good posts that I used to accomplish my task:
- Building SharePoint Applications with InfoPath 2010 (Part 1 of 2)
- Building SharePoint Applications with InfoPath 2010 (Part 2 of 2)
- InfoPath - Get the current user without writing code
- InfoPath– Get user information without writing code (extended)
The SharePoint site is a repository of projects and people who sign up to help with the projects. We have the following lists:
- Skills: pre-defined list of products/skills (i.e. SharePoint, Exchange, Development)
- Projects: a list that is populated when someone starts a project
- Resources: a list that is populated when someone adds themselves as a resource to work on projects
This post will provide step by step instructions on how to use InfoPath 2010 to create a form that will automatically populate users e-mail, first and last name, title, phone number, and manager.
Resources List
Create a custom list and create the fields as shown. Notice we are using “Single line of text” for the email instead of “Person or Group”.
The original “Title” column was renamed to E-Mail and requires unique values because I didn’t want someone to add themselves more than once.
The Skills column is a Lookup type that allows multiple selections tied to the Skills list.
The Title column is a new column is for the title of the resource.
Under General Settings, choose Advanced Settings. We need to change Item-Level Permissions and Attachments – all other settings are to stay at their defaults. Users should be able to read all items but only create and edit their own items; additionally we aren’t allowing attachments because they aren’t necessary for this list.
After you have the columns created for the list, it is time to customize the input form.
Customize InfoPath Form
From the Resources list, click the List tab then Customize Form.
The customize Form button will automatically launch InfoPath 2010 and will look similar to this. The red asterisks in the Fields pane indicate required fields. You can see the exact correlation on this form and our SharePoint list fields from above.
Enable SOAP Web Services
We need to enable the SOAP Web Services so we can pull information from the User Profile Service. Click the Data tab, From Web Service, From SOAP Web Service.
In the Data Connection Wizard, type the URL of your site and add /_vti_bin/UserProfileService.asmx to the end as shown and click Next
After the connection is made to the web service, scroll down to find the operation called GetUserProfileByName and click Next
Click Next on the Parameters dialog box
Click Next on the following screen
Enter a name for the data connection and click Finish.
On the right side under the Fields pane, select Show Advanced View
So far we have created our custom list, started customizing an InfoPath form and added the User Profile Service web services to the form. Now we have to create rules on what to do when the form loads.
Create Rules
Make sure you have the Data tab selected then choose Form Load. We will be using the Rules: Form Load section to create the rules and actions. Select the New button and choose Action. Our first rule is going to check the Account Name of the currently logged on user.
Account Name of Current User
Type a name for the rule under Details for then click the link under Condition that says “None – Rule runs when form is opened”
In the Condition dialog box, click the arrow next to myFields and choose Select a field or group…
In the Select a Field or Group dialog box, change the Data source to GetUserProfileByName (Secondary)
Under myFields, expand queryFields until you find and select AccountName then click OK
Change the Condition “is equal to” to “is blank” and click OK
Query for Data: GetUserProfileByName
In order get populate our form, we need to query the User Profile Services web service. In our Form Load data box, click Add to run an action and choose Query for data. Change the Data connection to GetUserProfileByName and click OK.
Next we need to get the data from the User Profile Services web service to populate our form with the current users’ data.
E-Mail Data
Click Add and choose Set a Field’s value
Click the expander next to Field.
Ensure you are on the Main Fields then expand MyFields and select E-Mail and click OK
- Back at the Rules Details dialog box, click the Value icon (this gets tricky :-))
- Insert Formula dialog box, click Insert Field or Group
- On the Select a Field or Group, change Fields to GetUserProfileByName (Secondary) and expand dataFields until you can select Value and click Filter Data
- On Filter Data, click Add
- In Specify Filter Conditions, change Value to Select a field or group
- In the Select Field or Group, and choose Name under PropertyData and click OK
- In the third box, change to Type Text… and type in WorkEmail and click OK on all the dialog boxes to create the rule
Let’s check to make sure we did this right. Click the Preview icon in the top left of the screen and you should see your email address populated in the E-Mail field
Remaining Rules
Follow the steps under E-Mail Data to populate the rest of the fields. When you are done, your form should have these rules applied.
Keep in mind that you are “GETTING” the data from the User Profile Service web service by using GetUserProfileByName (Secondary) to “PUT” data into your fields in the InfoPath form. Set the field on your form by getting the value and name
from the User Profile Service.
Default Profile Properties
This is a list of the default profile properties used by the User Profile Service that can be pulled and put into the InfoPath forms.
UserProfile_GUID |
FirstName |
LastName |
PreferredName |
WorkPhone |
AccountName |
Department |
Title |
Manager |
AboutMe |
Office |
PersonalSpace |
PictureURL |
UserName |
QuickLinks |
WebSite |
PublicSiteRedirect |
SPS-Dotted-line |
SPS-Peers |
SPS-Responsibility |
SPS-Skills |
SPS-PastProjects |
SPS-Interests |
SPS-School |
SPS-SipAddress |
SPS-Birthday |
SPS-MySiteUpgrade |
SPS-DontSuggestList |
SPS-ProxyAddresses |
SPS-HireDate |
SPS-LastColleagueAdded |
SPS-OWAUrl |
SPS-ResourceAccountName |
SPS-MasterAccountName |
Assistant |
WorkEmail |
CellPhone |
Fax |
HomePhone |
|
Publish the Form
After you have all the rules in place and have verified they work correctly, you can publish your form back to SharePoint. Simple click the X in the top right corner and choose Save and Publish.
The form will be saved to SharePoint, InfoPath 2010 will close and you will be taken back to the list from where you started customizing the form.
From here, click Add New Item. The Resources - New Item dialog box will open and you will see all the fields populated with the current users information.
The only thing the user has to do now is to select their skills and save the form.
I hope this helps others and a special shout-out to Itay Shakury and Clayton Cobb!
Comments
Anonymous
January 01, 2003
Hi can it implement in infopath, like i want to display the list items in infopath itself. if i select emp id, should display automatically all the info related that employee in infopath itself.Anonymous
January 01, 2003
I have the same question as m.Riston from 29 Jul 2013 5:48 PM:
"Is it possible to pull in the, say 'Title' field of another user that is determined based off of a people picker? Say I'm trying to create a form that I'm selecting someone's new supervisor and I want to populate that user's 'Title' or 'WorkPhone' field after I select it using a people picker. Is that possible?"
https://social.technet.microsoft.com/Forums/en-US/1e4117d2-652b-442c-9ff1-2153eeedde69/how-to-get-user-profile-service-information-on-user-other-than-current-user?forum=sharepointcustomizationAnonymous
January 01, 2003
how to change the Form Load rule's condition to DisplayName is blank? I can only see the AccountName. Thank youAnonymous
January 01, 2003
Is it possible to pull in the, say 'Title' field of another user that is determined based off of a people picker? Say I'm trying to create a form that I'm selecting someone's new supervisor and I want to populate that user's 'Title' or 'WorkPhone' field after I select it using a people picker. Is that possible?Anonymous
January 01, 2003
whenever the form is opened again either to view or edit, it displays the current users information instead of the value of the person who completed the form in the first place. please helpAnonymous
January 01, 2003
Hi Jason - I had forgotten I had that problem, too. Change the Form Load rule's condition to DisplayName is blank and that should work.Anonymous
April 04, 2012
Firstly thanks for the information. It works great. However i have an issue whenever the form is opened again either to view or edit, it displays the current users information instead of the value of the person who completed the form in the first place. Any feedback would be appreciated.Anonymous
May 16, 2012
Hi, thanks for pointing me in the right direction on this. I was going around in ever-decreasing circles. However, it's a case of one-step forward, two back at the moment! I can preview the form, and everything is fine, i.e. my form is populated with user data and manager data, as expected, but as soon as I publish to the SP Server, I get the following error on running the form. An error occurred querying a data source. Click OK to resume filling out the form. You may want to check your form data for errors. Show error details I am a Farm Administrator, so jsut wondered if you had any ideas what is going on. If I click on OK, the form appears, BUT none of the data is populated as it is in preview. HELP! Thanks- Anonymous
May 29, 2017
I am facing the same problem of you, did you find a solution for it?
- Anonymous
Anonymous
June 21, 2012
The comment has been removedAnonymous
November 08, 2012
Firstly thanks for the information. It works great. However i have an issue whenever the form is opened again either to view or edit, it displays the current users information instead of the value of the person who completed the form in the first place.Anonymous
January 09, 2013
Hi, Thanks for the article and it is very useful information. I am having the issue that the look up field has to load more than 5000 records and it takes more time to load the form and sometimes it is loading the partial data. Is it anyway to modify the query or need to do something to fix the issue?Anonymous
January 28, 2013
Really good, works perfect first time (even though I have no idea what I have actually done).Anonymous
March 26, 2013
Thank u...Very usfulAnonymous
May 16, 2013
very nice ..very helpful.Anonymous
May 24, 2013
Follow the steps and no value to populate in preview. Any idea?Anonymous
June 26, 2013
I new to this and I've already created a form in InfoPath and connected it to the forms library. I have several fields that I want to auto-populate. Where do I start use the information provided?Anonymous
July 24, 2013
Im trying to create a form in which the intial form is create but then I want to create a workflow inwhich the form is sumitted and then a nother form within the worklfow appears and the information that was in the previous form appears in the secondary form. Is this posisble?Anonymous
August 13, 2013
Thanks Anne! Here's a related post on InfoPath 2010 Best Practice Querying User Profile Web Service: www.sharepointbreak.com/.../infopath-2010-best-practice-querying-user-profile-web-serviceAnonymous
August 15, 2013
Hi Anne, Great article. Would you know how to get the Full Name (First and Last Name) of the Manager. In your example I can see that you're getting the Manager field as domainuserid. I'm looking for a way to get the first and last name. Any help is much appreciated. Thanks, KPAnonymous
January 16, 2014
Thank You. Really UsefulAnonymous
May 12, 2014
user profile values are not populating in the infopath form after publishing it to sharepoint 2010.
Please let me know where i am going wrong.Anonymous
June 09, 2014
Instead of using accountName as blank, i used another field that I know was going to be blank until the user filed it out. So mine was SiteURL is Blank. Thank my actions were query by GetUserProfile and Set data fields.Anonymous
August 27, 2014
Will this work with anonymous access enabled on the server?Anonymous
September 25, 2014
Nice its very helpfulAnonymous
September 30, 2014
Nice article. I can get the User Name in the preview, but I am getting an error after publishing. Help me please.Anonymous
November 07, 2014
Thanks so much for this information. I have been working on getting this completed for over two weeks now. The form populates only my name on the field, not the person who submitted the form. I've tried several ways to set up rules for this but the result is always my own name showing up on the form. Is there anything that I should be doing differently? your help is greatly appreciated :)Anonymous
November 19, 2014
very helpfulAnonymous
November 27, 2014
Thank you for your detail post. I could implement this easily with your fabulous screenshotsAnonymous
February 06, 2015
One question, this works for Sharepoint online too?Anonymous
February 13, 2015
I'm having the same problem as Andrew Brooks above - was there an easy fix?Anonymous
March 04, 2015
I have the same question as Steven Norman - "Is it possible to pull in the, say 'Title' field of another user that is determined based off of a people picker? Say I'm trying to create a form that I'm selecting someone's new supervisor and I want to populate that user's 'Title' or 'WorkPhone' field after I select it using a people picker. Is that possible?"Anonymous
April 05, 2015
Hi, I did this in the server environment, but is it possible for SharePoint 2013 online also, where we work on cloud ??Anonymous
April 17, 2015
Awesome....configured Profile Service to pull more data from AD. Worked like a charm. Great work.Anonymous
June 16, 2015
HI Anne and All,
Iam newbie to Infopath, current iam working on infopath office 365 form. Our app is used to save first name, Last name...Status field values into Sharepoint list ...so far every thing is fine. Now if any one click on Users First Name...A new form is open and display all saved vales of that user...How to proceed onthis...your help is very much needed..Thanks In advance...
Do the needfulAnonymous
July 03, 2015
First of all thank you for such a comprehensive set of instructions. I too am having the same problem as Andrew Brooks, everything is working perfectly until i publish to SharePoint and then i get the error "An error occurred while trying to connect to a Web service."
Does anyone know why this may be happening and what i need to do to fix?Anonymous
July 15, 2015
Thank you very much Anne, great information.
I'm trying to implement what you wrote in Sharepoint 2013 environment. I select the user from the AD but the query rules do not work and cause Infopath to crash. Although very unlikely, is it possible that Name="Department" syntax has changed in SP 2013?
Thanks,
TolgaAnonymous
September 30, 2015
Hi, Im new in infopath and sharepoint, but i have create a form in infopath to auto populate user information and i convert the connection and all things good, but when users create form the sharepoint doesn't keep the user information and when other user open the same form it the current user information.....And i don't want it because i need workflow??Please need helpAnonymous
October 02, 2015
Thank you for this superb guide!Anonymous
October 21, 2015
Like - Kevin Doherty 3 Jul 2015 1:17 PM -- First of all thank you for such a comprehensive set of instructions. I too am having the same problem as Andrew Brooks, everything is working perfectly until i publish to SharePoint and then i get the error "An error occurred while trying to connect to a Web service." Does anyone know why this may be happening and what i need to do to fix?
I have now recreated similar info that would be found in the UserProfileService by putting this information in a list. Problem is I cannot figure out how to pull the data from the different columns. So far my workaround is at a dead-end. -Edward.compudoc@gmail.comAnonymous
December 14, 2015
Great article - thanks!Anonymous
July 27, 2016
Hi,What happen if my email don't populate on the preview? Please help- Anonymous
October 20, 2016
nevermind, I figure it out, thanks
- Anonymous
Anonymous
August 15, 2016
Can we get or set data from external content type list ?Anonymous
October 19, 2016
Dear all,How can i get Description field value????Thanks in advanceAnonymous
May 29, 2017
I applied it step by step. But when I publish it and I opened it in sharepoint,This error was occurred.An error occurred querying a data source. Click OK to resume filling out the form. You may want to check your form data for errors. An error occurred while trying to connect to a Web service.Correlation ID:a857f69d-136e-70b2-822b-5cc24f315c93--------------------------------------------------------------------------------An error occurred while trying to connect to a Web service.Correlation ID:a857f69d-136e-70b2-822b-5cc24f315c93Anonymous
June 06, 2017
As I web site possessor I believe the content matter here is rattling excellent ,appreciate it for your hard work. You should keep it up forever! Best of luck.Anonymous
June 08, 2017
I was suggested this website by my cousin. I'm not sure whether this post is written by him as nobody else know such detailed about my trouble.You're amazing! Thanks!Anonymous
June 08, 2017
797158 208240i always enjoy to do blog hopping and i stumbled upon your blog ."~; 224032Anonymous
June 12, 2017
Hello There. I found your blog using msn. This is an extremely well written article.I'll be sure to bookmark it and return to read more of your useful information. Thanks for the post. I will definitely return.Anonymous
June 14, 2017
Hurrah, that's what I was exploring for, what a information! existing here at this website, thanks admin of this web page.Anonymous
June 16, 2017
Hi all, here every one is sharing these kinds of familiarity, so it's pleasant to read this website,and I used to visit this webpage every day.Anonymous
July 17, 2017
I have read a few just right stuff here. Certainly worth bookmarking for revisiting. I wonder how a lot effort you place to create this kind of fantastic informative website.Anonymous
January 24, 2018
Thank you for this tutorial with very clear steps, its really helped me a lot.