Skip to content

Audit Trail

RAMP maintains a comprehensive audit trail across all entities — instances, templates, steps, and API access. Every state change, user action, and approval is recorded with the identity of the user who performed it, the exact timestamp, and a description of what changed. This audit data supports compliance requirements, post-incident review, and operational transparency.


RAMP captures audit entries at multiple levels. The following sections describe what is tracked for each entity type.

Every action on an instance is recorded in the InstanceAuditEntry table:

ActionDescription
CreatedInstance was created from a template version
StatusChangedInstance transitioned between statuses (Draft, Planned, Running, Paused, Completed, Cancelled)
VariableUpdatedInstance variable value was changed
TeamMemberAddedA user or group was added to the instance team
TeamMemberRemovedA user or group was removed from the instance team
RoleChangedA team member’s role was changed (e.g., Executor to Deputy Head)
SettingOverriddenA step setting was overridden at the instance level (skippable, auto-complete, planned duration)
NoteUpdatedInstance note was created or modified
CommentAddedInstance comment was added
ArchivedInstance was archived

Step-level actions within instances are also recorded in the InstanceAuditEntry table with a StepId reference:

ActionDescription
StepStartedStep was started
StepCompletedStep was completed (includes completion result: Succeeded, OK with Complications, etc.)
StepPausedStep was paused
StepResumedStep was resumed
StepSkippedStep was skipped (includes reason)
StepAbortedStep was aborted (includes reason)
StepCancelledStep was cancelled (includes reason)
ForceCompleteStep was force-completed by Instance Head/Deputy (includes reason)
ForceSkipStep was force-skipped (includes reason)
ForceAbortStep was force-aborted (includes reason)
AttachmentUploadedFile was attached to the step
AttachmentDeletedFile attachment was removed from the step
ApprovalRequestedStep completion with “OK with Errors” triggered an approval request
ApprovalGrantedInstance Head approved a step result

Template-level actions are recorded in the TemplateAuditEntry table:

ActionDescription
CreatedTemplate was created
VersionCreatedNew template version was created
StatusChangedTemplate version status changed (Draft, Published, Deprecated)
RoleAddedTemplate role assignment was added (Owner, Editor, Viewer, Approver)
RoleRemovedTemplate role assignment was removed
DeprecatedTemplate was deprecated
UndeprecatedTemplate was restored from deprecated status

Changes to template steps during design are tracked in the StepAuditEntry table:

Change TypeDescription
CreatedStep was added to the template version
ModifiedStep content, title, settings, or order was changed
DeletedStep was removed (soft delete)
ReorderedStep position was changed within the hierarchy
PastedStep was pasted from another template version

Step design audit entries include content snapshots — the old and new values for title, content, order, and parent step — making it possible to reconstruct the complete history of a step.

All API requests are logged in the ApiAuditEntry table for security and compliance:

FieldDescription
Request pathThe API endpoint that was called
HTTP methodGET, POST, PUT, DELETE, etc.
Status codeHTTP response code (200, 401, 403, 500, etc.)
Authentication methodJWT, Personal Access Token (PAT), Service Account, or Anonymous
User identityWhich user or service account made the request
Authorization resultWhether the request was authorized or rejected (403)
DurationRequest processing time in milliseconds
IP addressOrigin IP of the request
Error messageFor failed requests, the error details

Each audit entry follows a consistent structure regardless of the entity type.

FieldDescription
IdUnique identifier for the audit entry
TimestampExact date and time the action occurred (UTC)
UserThe user who performed the action
ActionThe type of action (e.g., StatusChanged, StepCompleted)
Old ValueJSON representation of the previous state
New ValueJSON representation of the new state
DetailsHuman-readable description of what happened
Step IDFor step-level actions, identifies which step was affected

The execution log (used in the execution view) has a slightly different structure focused on real-time communication:

FieldDescription
TimestampWhen the entry was created
UserWho performed the action or posted the comment
ActionAction type code (e.g., STEP_STARTED, COMMENT_ADDED, INSTANCE_PAUSED)
MessageRich-text HTML content (for comments) or system-generated description
IsForceActionBoolean flag marking force actions for visual distinction
Step IDOptional reference to the step involved

  1. Navigate to the instance detail page
  2. Click the History tab
  3. Browse the chronological list of all changes
  4. Each entry shows the timestamp, user, action type, and description
  5. Expand an entry to see the old and new values (JSON diff)

Audit views support filtering to help you locate specific entries.

FilterDescription
By userShow only actions performed by a specific user
By action typeFilter by action category (e.g., status changes, role changes, comments)
By date rangeSpecify a start and end date to narrow results
Force actions onlyShow only force action entries (execution log)
By stepShow only actions related to a specific step
  1. Open the execution view for an instance
  2. Navigate to the Execution Log tab in the notes panel
  3. Click the Filters button to reveal filter options
  4. Select one or more filter criteria
  5. The log updates to show only matching entries
  6. Click Clear Filters to return to the full log

Force actions receive special treatment in the audit trail due to their exceptional nature.

  • Execution log entries for force actions have the IsForceAction flag set to true
  • In the UI, force action entries display with a red background
  • The execution log’s “Force Actions Only” filter isolates these entries

Each force action audit entry includes:

  • The specific force action type (Force Complete, Force Skip, Force Abort)
  • The mandatory reason provided by the Instance Head or Deputy Head
  • The consent acknowledgment
  • For cascade operations: which child steps were affected and their previous states

Audit entries are created synchronously with the actions they track — there is no delay between an action and its audit record. When viewing audit history in the UI:

  • New entries appear in real time via SignalR
  • The execution log updates immediately when any user performs an action
  • Historical views (History tab) may require a page refresh to show the most recent entries

Audit data is stored permanently in the database alongside the entities it tracks. There is no automatic purging of audit entries. This ensures that the complete history of any instance or template is always available for review.


  • Review force actions quarterly or as required by your compliance framework
  • Check API audit entries for unauthorized access attempts (403 responses)
  • Monitor for unusual patterns (e.g., excessive force actions by a single user)
  • Identify steps that are frequently force-skipped or force-aborted — these may need template updates
  • Analyze step completion times (from audit timestamps) to refine planned durations
  • Review step-level comments and notes for recurring issues that could be addressed in the template
  • Export audit data before archiving instances (see Data Exports)
  • Maintain a record of force action reviews and their outcomes
  • Document any audit findings and remediation actions taken