We have a SharePoint 2013 list where we keep project information, and the form has been customized with InfoPath 2013. There are around 300 fields in the form/list, and I'm tasked with implementing some kind of change-tracking for it. I've tried the following without success:
- Repeating table in the form (can't be used with a list form)
- Create copy of current form as backup (list form, always updates current item even if title field is changed)
- Web service that writes changes to duplicate list (requires CAML batch file, and web service call fails half the time)
- Sharepoint Versioning (doesn't show what changed, and forms are updated too frequently to be practical for this)
I'm hitting a wall, so I'm hoping someone has already found a solution for this sort of thing. I'm somewhat flexible in that this can work one of two ways:
- User uses form normally, and all changes are automatically tracked/logged
- User clicks a "Change Request" button (or something) that triggers the tracking, which can be either A) backing up the pre-changed form, or B) creates a new copy of the form with a different name/title value.
This is SharePoint 2013 on-premises. Users do not have the InfoPath client installed and my manager has stated that we will not be doing so since it is going away. Therefore I'm stuck with browser-only options. I'm also stuck with InfoPath, as we do not have any other form applications for this. And I'm stuck with using a list form since HR needs the ability to update metadata on multiple forms at once, which is not possible with promoted fields.
As you can see, I'm in a bit of a bind. I'm looking into building a web application with a SQL database to replace this, but given my limited experience with code, that's going to take a while.
Is there a way, within these limitations, to track changes made to a list item?
Solved
Here's what I ended up doing. I added a second submit button to the form, and users will click that one when requesting a change to the project. The new button submits to a duplicate of the original list, and new items in that list kick off a workflow. The workflow does some checks, updates the title of the list item by appending "_CR" and the date. After that, the workflow copies it back to the original list and emails the user a link they can open for the new form.
The end result is that everything is still in one list as required, with changes clearly noted in a separate form. It's not elegant... in fact, it's pretty clunky... but it works. It will also meet our auditing requirements, which is the ability to prove who submitted what changes and when.