Search code examples
dynamics-crmaudit-traildynamics-365

Seeking solution for Dynamics365 CRM records similar to MS Word tracking changes


I am currently leading the implementation of Office 365 for a crowdfunding portal for a UN agency. The portal features stories of survivors of human trafficking. Their cases are generated in Dynamics (for various reasons) and published to the user-facing platform. Each case comprises of a collection of records including various text fields which contain individual story points.

The problem: Those survivor stories are usually generated by teams on the ground but can be diplomatically sensitive.

As such each case needs to go through an elaborate review process to ensure that higher ups can propose changes to the case, make comments for specific fields. Each field can have several (1:n) comments/ change suggestions from n staff (not just one).

It was proposed to collate feedback in a field called 'comments' but this separates the input from the fields the comment was made about. We are now looking for a solution that emulates Word's 'tracking changes' feature.

Options considered but ruled out: We are aware that Dynamics comes with an audit history module, but this usually requires changes/ comments to be displayed in a separate window which defeats the purpose.

Is anyone aware of a useful workaround which accomplishes one or several of the below:

  • Flags changes in a particular record per record and next to said record
  • Allows for said changes to be accepted or rejected by the Case owner
  • Supports workflow integration and user hierarchies.
  • Works in Dynamics (not Sharepoint... ... ...)

Any advice would be highly appreciated.


Solution

  • While I am all for creative uses of CRM, and CRM can store the data you're looking for, using CRM as a collaborative document editing system might be pushing the envelope.

    Before you build out a custom document editing system, you might want to consider reviewing SharePoint, and some of the other document management add-ons that exist for CRM. While I have not implemented it myself, I have heard good things about LaserFiche.

    You might also want to look into a 3rd party editor that provides "track changes" capabilities that you can embed in a web resource on the Case form. I took a quick look and found this LoopIndex LITE plugin for CKEditor.

    If you do go the custom route, here's a potential design for capturing the comments on a field-by-field basis: Each field could have a separate text box where a user can enter a new comment about that field. A workflow could take that comment, turn it into a new "comment" record which would include the user, timestamp, and text. The workflow would also clear the box for the next comment.

    You might also want to have this text box hidden by default for each field and have a checkbox called "Add Comment" (again for each field), which would show the new comment text box.

    And you could consider having the new comment text box automatically populate with the original text, so the user can edit it rather than from start from scratch. This could be optional via an "Edit original text" checkbox or button.

    To get really fancy you could run a text diff module to compare the updated text and the original, and store the new text as HTML, highlighting the differences.

    The approval process would work off the "comment" entity. People could review each comment and approve or deny, with additional "meta-comments".

    You could then have a web resource that would compile all existing comments for the field into html and display them under the field, formatted based on their status (i.e. pending review in black, denied in red, approved in green).

    While I think this approach can be effective, adding a new field to the survivor's story would have some overhead. Another approach would be to create a Story Field entity and a Story Field Type entity. Let's say there are 5 fields now in the survivor's story. When you populate a story into CRM you'd create 5 Story Field records, each with its appropriate type. And, the Story Field entity would have a 1:N to Comments. This way, adding a new field to the survivor's story template is as simple as adding a new Story Field Type.