I have an Appian Security Design question. I have designed a Contract Request Ap

I have an Appian Security Design question. I have designed a Contract Request App where security is paramount. The security requirements include 2 basic security roles:
1 - Observers allowed to view all contracts. (ex. CIO and members of contracting office group)
2 - The Requestor / process initiator and reviewers selected from form drop-downs to review can only see the requests they are a participant on.

After much review of the Security configuration options of all Appian components, I designed a solution whereby the Observers can see all the request Records and a Report of all processes and tasks. And then process participants (Initiators and Reviewers) can only see the News and when Tasks are specially assigned to them. They can not see the Record or Report. And the News postings are restricted to the participants of that process instance and the Observers group. This technically works as it allows Participants to see the current status of their ...

OriginalPostID-154936

OriginalPostID-154936

  Discussion posts and replies are publicly visible

  • ...process via the News but not all the other contract Records.

    However this is not a good user experience. The documents attached to the Record, and latest data, are only visible via the Record. I am wondering if there is a better way? Perhaps should all app users be allowed to view the Record and then put security on each Process Instance resulting in them only being able to their Records their allowed?

    In other words, what is the best security architecture to allow users identified at process run-time to see only the Records they are participating in the process and no other records for the same process model?

    Thanks,
    Gregg
  • 0
    Certified Associate Developer
    Having per instance process security using process backed records is probably the simplest approach. However processes must be archived at some point (preferably soon) after completion at which point the process will no longer be visible. If this is unacceptable, you should consider using entity backed records and implementing security as part of the default filter. This will enables users to continue to see the record even after process instances are archived.
  • Perhaps should all app users be allowed to view the Record and then put security on each Process Instance resulting in them only being able to their Records their allowed?

    This is the way to do it for process backed records. Additionally, a!queryRecord() takes security into account when it is executed, so your can develop reports against your records type that still respect record level security.

    Appian COE has written up the best practice for record level security on Data Entity backed records here forum.appian.com/.../Record_Level_Security_for_Entity_Backed_Records_Best_Practice.html