2

I need to create a form which needs to be filled out by multiple departments, but each department should only see the fields relevant to them.

For example:

HR

  • Name
  • Surname
  • Job Title
  • Department

All of these fields should be visible when a member of HR fills in the form. However, once this part is complete, a workflow will notify a member of IT to continue filling in the form. They should have these fields available:

IT

  • Name
  • Surname
  • Job Title
  • Department
  • Telephone number

Where the original 4 fields will already contain the data that HR filled in.

I imagine this as just being a simple form which subsequent teams after HR just need to Edit, but how do I hide fields based on the current user's department?

  • Do you want to achieve this functionality with out of box solution in list ? or you are ready to create form on web part ? – Ronak Patel May 31 '16 at 13:05
  • @RonakPatel I have some experience using non-OOB solutions For example hillbillyForm.js : markrackley.net/2013/08/29/… so I am ready to try any method – Bassie May 31 '16 at 13:21
2

You can achieve this using InfoPath forms. You can create data connection using Web service GetUserProfileByName and then query for department field.

Using InfoPath and the Web service GetUserProfileByName

Create sections and based on department you can hide sections.

  • This is the solution I ended up using – Bassie Aug 2 '16 at 10:35
3

For OOB solution, I'd create multiple New/Edit forms for the list (one for each department).

Then ensure each department user uses the New/Edit form customized for them by, e.g., placing link to form in top navigation and using Audience targeting to only show link to department specific form link to users of that department.

  • This seems like a good ide and I hadn't thought of using Audience Targeting - will post back here if this works! – Bassie May 31 '16 at 15:47
2

As SharePoint does not support Column level permissions, there are some third party tools available for column level permissions:

You have to create two separate groups for HR & IT and give appropriate access to columns of the list using above tools.

Non-OOB solution:

  • Create separate groups for HR & IT departments.
  • Develop your custom webpart & display columns as per the current user has access. For example, Check on page load that if current user in HR group then display appropriate columns only & when current user in IT group then display the read only fields entered by HR & edit textbox for other fields.
2

In your comment on the original question, You've indicated that you have experience working with Mark Rackley's method of manipulating forms using custom HTML and jQuery.

If that is the case, you can achieve what you want by basically using that method.

What you would need to do is, in the $(document).ready handler, make a client side call to SharePoint (either using JSOM or the REST API) to retrieve the information you need about the current user (i.e. what department they are in). Once you have that information you can then use jQuery to hide fields as required.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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