SharePoint Groups using nested Security Groups not picking up correct Form Set

I have a form with Default and PM form sets - the PM form set is for the project managers.

I set up a communication site, and placed the Project Managers 'Security Group' nested inside the 'Site Members' group and 'Everyone' i.e. the non project manager users, in the 'Site Visitors' group.

I've then updated the form sets in Plumsail to point the PM form to the members group and exclude the visitors group, however all Project Managers are still seeing the Default form set. If I directly add members into the SharePoint Group then the added members can see the PM form as expected.

Is there an issue with Plumsail Forms which means it does not support Security Groups, I have also tried this with Mail Enabled Security Groups and they don't work either.

Any ideas?

Dear @abolam,
Yes, that's how it works - there is currently no easy way to check for nested group members, unfortunately. Users need to be placed directly into the group.

In the future, we plan to expand routing to work with Azure groups instead of SharePoint security groups, but that's some time away, and I can't say when it will be available.

I see... as it is a very commonly used scenario I look forward to seeing that implementation, as a lot of our larger clients use nesting to reduce admin overhead on the SharePoint side. I will have to develop something to deal with this as it is a client requirement.

I wonder if there is a way of checking group membership via the graph api... could I do that and then trigger a redirect perhaps?

Any suggestion as to where I can get started with that?

Kind regards, Andy

Dear @abolam,
You can already check some samples of checking AD groups with Graph client in our documentation - Personalize SharePoint forms for user groups — SharePoint forms

Hi Nikita,

I've tried that, got the display name of the 365 group, however it doesn't seem to be working for my client. I've not yet been able to see if there are any browser errors, but I presume that the code in the article is to be used in the 'routing' section.

Hopefully I'll get a chance to work with one of the client's users, to see what is happening, as I'm unable to place my account in the specified group for security reasons.

Will update this when I get a chance to investigate.

Hi, update on this topic - client does not get any browser errors, they are not redirected to their specified form set, they just get the default form set.

Can you suggest what I may be doing wrong here and what to check?

Kind regards, Andy

Dear @abolam,
Can you share the code with us here?

I am placing this in the routing section of the form:

return graph.me.memberOf().then(function(groups) {
   if (groups && groups.length) {
      for (var i = 0; i < groups.length; i++) {
            if (groups[i].displayName === 'SOE LOC PMs') //name of the 365 group
               return 'b4f9b440-4ab4-4351-9662-9631c60537fc' //form set for their particular form
      }
   }
});

Look ok?

Dear @abolam,
Sure, seems fine to me. You'll need to debug to see what groups are returned and see if user indeed has the required group. For example, the spelling might be different or something along these lines...

Try the following code, and set Preserve log setting when opening a form:

return graph.me.memberOf().then(function(groups) {
   if (groups && groups.length) {
      for (var i = 0; i < groups.length; i++) {
            console.log(groups[i].displayName);
            if (groups[i].displayName === 'SOE LOC PMs') //name of the 365 group
               alert("I'm in a SOE LOC PMs group, about to redirect to correct form");
               return 'b4f9b440-4ab4-4351-9662-9631c60537fc' //form set for their particular form
      }
   }
});

Check console for available groups names, and check console for errors, especially if alert message appears, but the form does not open.