Step 01.
Select the Custom List and on Ribbon under List click Customize Form. Then the List will be opening in the Microsoft InfoPath Designer 2010 .
Step 02.
Click on Manage Data Connections in InfoPath Designer. Then add two receiving data connections as following.
- First we will add a receiving data connection for web service UserProfileService.
Receive Data Connection for UserProfileService |
SOAP Web Service |
- In the text box type, http://ServerName
/_vti_bin/UserProfileService.asmx.
UserProfileService.asmx?WSDL |
- From the list of web methods, select GetUserProfileByName.
Web Method - GetUserProfileByName |
- Click Next and you'll be asked for set the value for Account Name, leave it blank as doing it would get the current User.
AccountName - Leave it blank |
- Tick Automatically retrieve data when the form is opened.
Tick - Automatically retrieve data when the form is opened |
- Click Finish.
- Then let's start creating the receiving data connection for web service UserGroup.
Receive Data Connection for UserGroup |
SOAP Web Service |
- In the text box type, http://
ServerName/_vti_bin/UserGroup.asmx.
UserGroup.asmx?WSDL |
- From the list of web methods, select GetGroupCollectionFromUser.
Web Method - GetGroupCollectionFromUser |
- Click Next. You will be asked to set sample value for UserLoginName. In that screen click Set Sample Value and in the appearing box type domain\Administrator.
userLoginName - Domain\Administrator |
- Click OK and Next. In the appearing screen Untick Automatically retrieve data when the form is opened.
Untick - Automatically retrieve data when the form is opened |
- Click Finish. Now you have successfully created two receiving data connections.
Step 03.
Now we will have to modify the xml schema for GetGroupCollectionFromUser data connection. For that we we will need to extract the InfoPath form. To extract the form, in InfoPath form go to File and Publish and then Export. Select a Folder to export the files and the form will be extracted.
Export |
Step 04.
Now when the form has finished exporting, go to the folder you have selected. You will see a list of files that has been created in Export process. But in our case we only focus on GetGroupCollectionFromUser.xsd (the xml schema for GetGroupCollectionFromUser data connection).
Exported Files |
- First Close the InfoPath Designer. Because you can't edit files when are being used by the InfoPath designer.
- Open GetGroupCollectionFromUser1.xsd in a text editor (I prefer Notepad++) and edit it as below.
- Find the following line. Normally it's the 2nd line of the file.
<s:import namespace="http://www.w3.org/2001/XMLSchema">
- Add following below above line.
<s:complexType name="GetGroupCollectionFromUserType">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="userLoginName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Groups">
<s:complexType>
<s:sequence>
<s:element maxOccurs="unbounded" name="Group" >
<s:complexType>
<s:attribute name="ID" type="s:unsignedShort"></s:attribute>
<s:attribute name="Name" type="s:string"></s:attribute>
<s:attribute name="Description" type="s:string"></s:attribute>
<s:attribute name="OwnerID" type="s:unsignedByte"></s:attribute>
<s:attribute name="OwnerIsUser" type="s:string"></s:attribute>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
- Find the following part.
<s:element name="GetGroupCollectionFromUser">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="userLoginName" type="s:string">
</s:element>
</s:sequence>
</s:complexType>
</s:element>
- Replace it with the following code.
<s:element name="GetGroupCollectionFromUser" type="tns:GetGroupCollectionFromUserType">
</s:element>
Step 05.
Now right click on the manifest.xsf and choose Design. Choose GetUserProfileByName data connection and apply rules on the PropertyData field as following.
- In Fields bar click on Show Advanced view.
Advanced view of Fields |
- Under Fields Select GetUserProfileByName (Secondary).
- Then Add a rule.
GetUserProfileByName (Secondary) |
- The rule condition is Name="AccountName", rule type is Action.
Select a field or group |
GetUserProfileByName - Name |
Type Text |
- Type "AccountName".
Type "AccountName" |
- The rule actions are:
- Set field’s value. Under Field, Set Field as follows.
GetGroupCollectionFromUser (Secondary) - Name |
- Then Under Value, Set Value as follows. Click fx and then Insert Field Or Group.
GetUserProfileByName - Value |
- Don't Click OK yet. Click Filter Data. The Click Add.
Select a field or group |
GetUserProfileByName - Name |
- Click OK.
Type Text |
Type "AccountName" |
- Then add another Action. Action is Query for data from GetGroupCollectionFromUser.
Query for data - GetGroupCollectionFromUser |
- Click OK.
Step 06.
Now create a formatting rule for a field that you want to disable/hide if current user is not member of a given SharePoint Group. Put a condition as below, where the "LCGD Clerk" is the SharePoint Group Name.
Select a field or group |
- Set the Name in GetGroupCollectionFromUser (Secondary Data source).
GetUserProfileByName - Any occurrence of Name |
Type "LCGD Clerk" (SharePoint Group Name) |
Now Everything is completed. Final step is Publish the form.
Hope you all got a good idea about how to get the Current User's SharePoint Group Name using InfoPath functionalities. Appreciate your feedback.
Happy Coding.
Regards,
Jaliya
Waw. Amazing article.
ReplyDeleteI am able to get the logged-in user and user group information to display on my form. However, I can't seem to get the field conditional formatting to fire.
ReplyDeleteThis is my rule condition:
Any occurence of Name is not equal to "Approver Group" or
Number of occurences of Name = 0
Disable Control
It doesn't seem to matter if I login with a user who is in the Approver Group or not, the control is always disabled. Again, I have the user info and group displaying on page (for debugging purposes) and I can see that the logged in user is in the Approver Group.
Any ideas?
hello, I would suggest just remove the condition Number of occurences of Name = 0. Let me know what happens.
ReplyDeleteHappy Coding.
Regards,
Jaliya
Hi... I tried this.But it is not worked.. the formatting condition also not worked.I tried to display the group name it is not display any thing
ReplyDeleteHello spriya,
ReplyDeletethis can be not working for some specific reasons. if you can send me more information on your problem, i would be able to help.
Happy Coding.
Regards,
Jaliya
Hi,
ReplyDeleteI followed the same procedure.i am not able to get the login user and the group name. and when i set the sample data domain\Administrator, system give the error msg. so i put the Domain\username,then it acceptes. but the data not retrieved.so that the conditional formatting also not working.
Thanks
Hello spriya,
ReplyDeleteI will write down the points where you will need to have a closer look and recheck again.
First, when you create a receiving data connection for the web service "UserGroup", did you give your SharePoint administrator username and password?
Second, this is the most important part. You are exporting the form to extract it right, there I have mentioned we will be only focusing on GetGroupCollectionFromUser.xsd. But if you have exported the same form for many times, the .xsd file that we will need modify will change.
You will get many .xsd files like GetGroupCollectionFromUser2.xsd, GetGroupCollectionFromUser3.xsd, GetGroupCollectionFromUser4.xsd like wise. So you should be extra careful to modify the correct .xsd file. So I am strongly advising you, first find this line "" and then do the modifications.
First recheck above mentioned things and make sure there is no mistakes there. Then if you are still facing the problem, let me know. If you like we can have a team viewer session and fix this.
Happy Coding.
Regards,
Jaliya
Hello spriya,
ReplyDeleteDid you paste your .xsd code when you reply? You cant do that. If you can send me a email to jaliya.udagedara@gmail.com.
Please go through the steps again, you will find everything there.
Happy Coding.
Regards,
Jaliya
Hi,
ReplyDeleteThanks. I gone thro the steps.no where is mentioned the adminstrator username & password.
As I said earlier, my xsd file is in xsd element form
INSTEAD OF
Regards,
spriya
Hello spriya,
ReplyDeleteCheck receiving data connection for web service "UserGroup". Please don't put .xsd codes here. Because they will not be displayed.
Happy Coding.
Regards,
Jaliya
Hi,
ReplyDeleteThanks for reply.checked the dataconnection it isperfect.bt it not retrieved the data.the same thing happenedin other forms also.i used some other forms and workflows.in some forms the dataconnection retrieved the value from sharepoint library.in some forms it hs notretrieved.idnt knw why it is notworked in some forms.Pls help me in this regard.i folow the same procd in allforms.
Thans & Regards,
spriya
Hi Jaliya, can you help me in my issue
ReplyDeletein my case, i have one drop down filed, i have to disable when the user creating the form and submit to the SharePoint document library, this form is going to open by the different users, i have to enable this drop down user from the particular sharePoint group opens the form, for the rest of all others i have to disable when they open to see modify the form
any help..
my company recently migrated to 2010 and my form (created in infopath 2010) is receiving errors when i try to use the GetUserProfileByName. It says "Operation Failure ---> Access Denied: To create a user profile, you must be an administrator, or create your own profile and have personal features rights.
ReplyDeleteUnauthorizedAccessAccess Denied: To create a user profile, you must be an administrator, or create your own profile and have personal features rights."
Is this something with the 2010 new server or do I have to custom code like you list above? We are not allowed to use SP designer.
Hello,
DeleteOf course, you should be an administrator.
Great ! I needed this and it works perfectly.
ReplyDeleteIt's a very detailed tutorial, thank you very much, your blog is very interesting.
Hi Jaliya,
ReplyDeletegreat nice tuto, but does it works with Sharepoint Online !
I'm stuck on the GetGroupCollectionFromUser and the sample text, with my admin account, i get the followinb error :
Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.
Impossible de trouver l'utilisateur.0x80131600
Hi jaliya,
ReplyDeleteI finally had the answer from Microsoft about the loginname needed on the sample value of the GetGroupCollectionFromUser :
the login name must be in the following form :
i:0#.f|membership|user@domain.onmicrosoft.com
I tried, it works !
I just have to finish your tutorial !
Your login is not working
DeleteYet I have applied the procedure,
I do not understand
Hi,
DeleteOr try i:0#.f|membership|user@domain.com...
This worked for me.
Thanks Jaliya and others...
Cheers!
That's really nice mate. Good luck.
ReplyDeleteThanks! That is a great article. I just mentioned it within our blog. And add an example for using it for better understanding.
ReplyDeletehttp://www.ilikesharepoint.de/2012/05/how-to-check-if-you-are-a-member-of-a-specific-group-within-an-infopath-form/
Hi Dennis, just read your post. It's cool.
DeleteHappy Coding.
Regards,
Jaliya
hi thanks for your post. if current user present in multiple group. how to get all the group name. because by default it is return the first group name. can you please help me to fix it.
ReplyDeleteHi,
DeleteGetGroupCollectionFromUser Method in the UserGroup web service will return all the groups the specific user belongs to.
I am sorry, I couldn't test this, but in here you can drag and drop "Group" as a repeating table. It will give you a list of groups. "Name" is the Group name.
Happy Coding.
Regards,
Jaliya
Hi Jaliya,
ReplyDeleteIf current user present in multiple sharepoint group and how to get all the group name. because by default it is return the first group name. help me to fix these problem.
Hi,
DeleteGetGroupCollectionFromUser Method in the UserGroup web service will return all the groups the specific user belongs to.
I am sorry, I couldn't test this, but in here you can drag and drop "Group" as a repeating table. It will give you a list of groups. "Name" is the Group name.
Happy Coding.
Regards,
Jaliya
Getting:
ReplyDeleteThere has been an error while processing the form.
Click OK to resume filling out the form. You may want to check your form data for errors.
Hide error details
An error occurred while trying to connect to a Web service.
Correlation ID:9ed917d2-41a7-459e-9df6-8085a7ee2de0
any ideas>?
Its is working if Condition is like
ReplyDelete"Any Occurrences of Name" - is equal to - "custom account group"
But it is not working is condition is like
"Any Occurrences of Name" - is not equal to - "custom account group"
In my scenario i want to hide fields if user not belongs to particular account group
1.1. Create list "А" and one list item "BlaBla"
ReplyDelete1.2. Set required permission on item "BlaBla"
2.1. In InfoPath create DataConnection on SharePoint List "A"
2.2. Check, if count(list items from list "A")>0 then the user has permission!
Thank you for this workaround, it is really helpful!
DeleteFirst of all nice article but stuck in the mid i.e unable to create GetGroupCollectionFromUser everything works fine till the step "to provide sample for domain" after that when i click next prompt with the following error.
ReplyDeleteUser cannot be found.
Thank you.. very nice article
ReplyDeleteJust one Clarification ,how to hide the field based on role instead of Group?
Nice Post. Really Helpful :)
ReplyDeleteFantastic - exactly what I needed! Thank you!
ReplyDeleteHi All, Could any one help on my issue .
ReplyDeleteI wast disable the section for all groups except one user group . I have followed above article ,section is disabling when user is not that group and when user is same in that group also disabling the section .
Thanks for this great article it really helped me out!
ReplyDeleteI wrote an article following yours on how to get all of the current user's permission groups,
I'll be happy if you check it out -
http://www.sharepointbreak.com/2014/01/01/getting-current-users-sharepoint-permissions-groups-infopath-2010/
Best Wishes
Guy
Thank you so much for the nice comment, definitely will be checking out your article.
DeleteCan we add/remove users from SharePoint Group using Infopath. If Yes, Please send me the steps or link.
ReplyDeleteHi Jaliya, I did all the steps, I get the user name but the only issue is my field for the group return 0 while I am the group owner. I think that my web service is the fact. Why? Because when I give my url http://sever/_vti_bin/UserGroup.asmx, this error comes out:
ReplyDeleteThe SOAP response indicates that an error occurred on the server:
Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.
Group cannot be found.0x80131600
The other fact is I use the same url to get the user account name and it works: http://sever/_vti_bin/UserProfileService.asmx
Any thoughts??
Beware that the UserProfileService requires authentication in SP2013. It does not in SP2010.
ReplyDeleteHello Vojin Lekovic,
ReplyDeletei've got the same problem, since we changed to SSL. Using http protocol, every think worked fine. Did you find any solution for the problem.
Best regards,
Andi
dear all,, jaliya, you got a really nice article. but I have some problems occurred when I follow the instruction you gave. when I already export the InfoPath file, the files I got are different with your as u describe. getgroupcollectionfromuser6.xsd and getgroupcollectionfromuser7.xsd not getgroupcollectionfromuser1.xsd. but I kept following your instruction to edit the file (that has size about 24kb). when I open the manifest file and choose design, theres no usergroup or user profile in the properties when I click advance view. could you please help me with this issue?
ReplyDeletethank you so much
wiyono.bin.sudarno@gmail.com
sorry i made mistakes.. i already get what it supposed to do.. thank you so much jaliyaudagedara...
DeleteHi Jaliya iam getting an error like The parameter loginName cannot be empty or bigger than 251 characters please suggest
ReplyDeleteHi Vojin! Did you ever find a resolution to this problem? We are experiencing the same thing. Thanks!
ReplyDelete