Skip to content

Dataverse Schema

Table definitions for the Segregation of Duties Detector.


Schema Overview

┌─────────────────────┐     ┌─────────────────────┐
│  fsi_conflictrule   │────<│  fsi_sodviolation   │
│  (rule definitions) │     │  (detected conflicts)│
└─────────────────────┘     └─────────────────────┘
                            ┌─────────────────────┐
                            │ fsi_sodexception    │
                            │ (approved exceptions)│
                            └─────────────────────┘
                            ┌─────────────────────┐
                            │  fsi_sodauditlog    │
                            │  (audit trail)      │
                            └─────────────────────┘

Table: fsi_conflictrule

Defines incompatible role combinations.

Columns

Column Type Required Description
fsi_conflictruleid Uniqueidentifier Yes Primary key
fsi_name String (200) Yes Rule name
fsi_category Choice Yes Conflict category
fsi_rolea String (100) Yes First role in conflict
fsi_roleacontext Choice Yes Context for Role A
fsi_roleb String (100) Yes Second role in conflict
fsi_rolebcontext Choice Yes Context for Role B
fsi_severity Choice Yes Violation severity
fsi_description Text No Rule description
fsi_enabled Boolean Yes Rule is active
fsi_allowexception Boolean Yes Exceptions permitted
createdon DateTime Auto Record creation timestamp

Choice: fsi_category

Value Label
1 Maker/Checker
2 Segregation
3 Privileged Access

Choice: fsi_roleacontext / fsi_rolebcontext

Value Label
1 Entra ID Directory Role
2 Entra ID App Role
3 Power Platform Environment Role
4 Dataverse Security Role
5 Custom Application Role

Choice: fsi_severity

Value Label Auto-Block
1 Critical Yes
2 High Yes
3 Medium No
4 Low No

Sample Data

{
  "fsi_name": "Agent Developer cannot be Pipeline Approver",
  "fsi_category": 1,
  "fsi_rolea": "Agent Developer",
  "fsi_roleacontext": 4,
  "fsi_roleb": "Pipeline Approver",
  "fsi_rolebcontext": 4,
  "fsi_severity": 1,
  "fsi_description": "Prevents self-approval of agent changes",
  "fsi_enabled": true,
  "fsi_allowexception": true
}

Table: fsi_sodviolation

Detected segregation of duties violations.

Columns

Column Type Required Description
fsi_sodviolationid Uniqueidentifier Yes Primary key
fsi_name String (200) Yes Violation title
fsi_conflictruleid Lookup Yes Violated rule
fsi_userid String (100) Yes User principal name
fsi_userobjectid String (36) Yes Entra ID object ID
fsi_userdisplayname String (200) Yes User display name
fsi_roleaassignment String (200) Yes Role A assignment details
fsi_rolebassignment String (200) Yes Role B assignment details
fsi_environment String (100) No Environment (if applicable)
fsi_status Choice Yes Violation status
fsi_detectedon DateTime Yes Detection timestamp
fsi_resolvedon DateTime No Resolution timestamp
fsi_resolutiontype Choice No How violation was resolved
fsi_exceptionid Lookup No Approved exception (if any)
createdon DateTime Auto Record creation timestamp

Choice: fsi_status

Value Label
1 Open
2 Under Review
3 Exception Requested
4 Exception Approved
5 Resolved - Role Removed
6 Resolved - User Removed
7 Closed - False Positive

Choice: fsi_resolutiontype

Value Label
1 Role A Removed
2 Role B Removed
3 Both Roles Removed
4 User Deactivated
5 Exception Granted
6 False Positive
7 Rule Disabled

Table: fsi_sodexception

Approved exceptions for justified role conflicts.

Columns

Column Type Required Description
fsi_sodexceptionid Uniqueidentifier Yes Primary key
fsi_name String (200) Yes Exception title
fsi_sodviolationid Lookup Yes Related violation
fsi_userid String (100) Yes User principal name
fsi_exceptiontype Choice Yes Exception type
fsi_justification Text Yes Business justification
fsi_compensatingcontrols Text Yes Mitigating controls
fsi_monitoringplan Text No Ongoing monitoring description
fsi_requestedby Lookup (User) Yes Exception requestor
fsi_requestedon DateTime Yes Request timestamp
fsi_approvedby Lookup (User) No Final approver
fsi_approvedon DateTime No Approval timestamp
fsi_status Choice Yes Exception status
fsi_effectivedate Date No Exception start date
fsi_expirationdate Date No Exception end date
fsi_nextreviewdate Date No Next review due date
fsi_riskacceptance Boolean No Risk formally accepted
createdon DateTime Auto Record creation timestamp

Choice: fsi_exceptiontype

Value Label Max Duration
1 Emergency 24 hours
2 Temporary 30 days
3 Permanent Annual review

Choice: fsi_status

Value Label
1 Requested
2 Manager Approved
3 Compliance Review
4 Approved
5 Denied
6 Expired
7 Revoked

Table: fsi_sodauditlog

Audit trail for all SoD-related activities.

Columns

Column Type Required Description
fsi_sodauditlogid Uniqueidentifier Yes Primary key
fsi_name String (200) Yes Log entry title
fsi_eventtype Choice Yes Type of event
fsi_entitytype String (50) Yes Related entity type
fsi_entityid String (36) Yes Related entity ID
fsi_userid String (100) Yes User involved
fsi_performedby String (100) Yes Action performer
fsi_eventdetails Text No Detailed event description
fsi_previousvalue Text No Value before change
fsi_newvalue Text No Value after change
fsi_ipaddress String (50) No Source IP address
createdon DateTime Auto Event timestamp

Choice: fsi_eventtype

Value Label
1 Violation Detected
2 Violation Resolved
3 Exception Requested
4 Exception Approved
5 Exception Denied
6 Exception Expired
7 Rule Created
8 Rule Modified
9 Rule Disabled
10 Scan Completed
11 Alert Sent

Relationships

Parent Table Child Table Relationship
fsi_conflictrule fsi_sodviolation 1:N
fsi_sodviolation fsi_sodexception 1:N
fsi_sodexception fsi_sodauditlog Reference

Security Roles

SoD Viewer

Read-only access for compliance reviewers.

Table Permissions
fsi_conflictrule Read
fsi_sodviolation Read
fsi_sodexception Read
fsi_sodauditlog Read

SoD Analyst

Exception processing and violation management.

Table Permissions
fsi_conflictrule Read
fsi_sodviolation Read, Update
fsi_sodexception Read, Create, Update
fsi_sodauditlog Read

SoD Admin

Full administrative access including rule management.

Table Permissions
All tables Read, Create, Update, Delete

Deployment

Option 1: Manual Creation

Create tables using Power Apps maker portal following the schema above.


Segregation of Duties Detector v1.1.0