Verification & Testing: Control 2.19 — Customer AI Disclosure and Transparency
Last Updated: April 2026 Cadence: Pre-go-live, on every disclosure-copy change, and at least quarterly thereafter Primary Owner: Copilot Studio Agent Author (with Compliance Officer sign-off on test evidence)
Test Environment Requirements
- Non-production Copilot Studio environment with the same disclosure copy and engagement-hub configuration as production (Control 2.3)
- Test user accounts simulating each in-scope channel (Web Chat, Microsoft Teams, Omnichannel, embedded Direct Line)
- Read access to the disclosure-event log (Dataverse
fsi_aidisclosurelogtable or equivalent) - A test queue in Dynamics 365 Customer Service (or your generic engagement hub) that can confirm receipt of the Transfer conversation payload
Manual Verification Steps
Test 1 — Initial Disclosure Renders First
- Start a new conversation with the agent in each channel
- Observe the very first message from the agent
- Expected: approved Zone-appropriate disclosure copy renders before any other content; in Zone 3, the comprehensive disclosure with
[I understand]and[Talk to a representative]choices is shown
Test 2 — Disclosure Content Completeness
- Read the rendered disclosure for a Zone 3 agent
- Confirm presence of: AI identification, capability statement, limitation statement, on-request human escalation, and (where applicable) jurisdiction overlay
- Expected: all four base elements present; CA / UT / CO overlay copy renders for the matching jurisdiction
Test 3 — Human Handoff via Escalate Topic
- Send the trigger phrase
talk to a representative - Confirm the system Escalate topic fires
- Confirm the Transfer conversation node executes and the conversation appears in the configured engagement hub queue
- Expected: payload includes
SessionId,DisclosureShown, redacted summary, and any account context expected by the live agent
Test 4 — On-Request Escalation (Colorado AI Act path)
- Begin a session with the Colorado overlay enabled (test user in CO)
- Mid-conversation, type
I want to talk to a person - Expected: escalation occurs immediately; no friction prompt blocks the request
Test 5 — Periodic Reminder (Zone 3)
- Hold a continuous test session of ≥ 11 messages or ≥ 5 minutes
- Expected: reminder topic fires once at the threshold and at the configured cadence thereafter; reminder text identifies the agent as AI and offers handoff
Test 6 — Pre-Transaction Reconfirmation (Zone 3)
- Drive the agent into a topic that initiates an account-impacting action (e.g.,
place a trade,transfer funds) - Expected: the Question node renders before the action and offers
Connect me with a representativeas a valid option that routes to the Escalate topic
Test 7 — Disclosure Logging End-to-End
- Run Test 1 + Test 3 + Test 5 in sequence
- Query
fsi_aidisclosurelogfor the testSessionId - Expected: rows for
DisclosureDelivered,ReminderDelivered,EscalationOffered,EscalationAccepted,EscalationCompletedwith correctDisclosureType,DisclosureVersion,Jurisdiction, andChannel
Test 8 — Disclosure Versioning Integrity
- Trigger a disclosure copy update via your change process
- Expected: new
DisclosureVersionvalue appears in subsequent log rows; the previous version is retained and queryable; the change ticket and approver are recorded in the Agent Card (Control 3.1)
Test Case Matrix
| Test ID | Scenario | Channel | Zone | Jurisdiction | Expected Result | Pass/Fail |
|---|---|---|---|---|---|---|
| TC-2.19-01 | Initial disclosure renders first | Web | 3 | Default | Comprehensive disclosure shown before any other content | |
| TC-2.19-02 | Initial disclosure renders first | Teams | 3 | Default | Same as above | |
| TC-2.19-03 | Initial disclosure renders first | Omnichannel | 3 | Default | Same as above | |
| TC-2.19-04 | Disclosure content complete | Web | 3 | Default | All four elements present | |
| TC-2.19-05 | Jurisdiction overlay — CA | Web | 3 | CA | SB 1001 line present | |
| TC-2.19-06 | Jurisdiction overlay — UT | Web | 3 | UT | UT AI Policy Act line present | |
| TC-2.19-07 | Jurisdiction overlay — CO | Web | 3 | CO | CO AI Act line present | |
| TC-2.19-08 | Escalate via keyword | Web | 3 | Default | Transfer conversation fires; payload received in hub | |
| TC-2.19-09 | Escalate via button | Web | 3 | Default | Same as above | |
| TC-2.19-10 | On-request escalation honored | Web | 3 | CO | No friction; escalates immediately | |
| TC-2.19-11 | Periodic reminder fires | Web | 3 | Default | Reminder appears at message ≥ 11 or 5 min | |
| TC-2.19-12 | Pre-transaction reconfirm | Web | 3 | Default | Question node with handoff option renders | |
| TC-2.19-13 | DisclosureDelivered logged | Web | 3 | Default | Row in fsi_aidisclosurelog with correct fields | |
| TC-2.19-14 | EscalationAccepted logged | Web | 3 | Default | Row written and matches SessionId | |
| TC-2.19-15 | DisclosureVersion increments | Web | 3 | Default | New version observed after update |
Evidence Collection Checklist
Disclosure Configuration
- Screenshot — Conversation Start topic showing the disclosure as the first node
- Screenshot — system Escalate topic showing the Transfer conversation node and engagement-hub binding
- PDF — Compliance/Legal-approved disclosure copy register with version, approver, effective date
Disclosure Delivery
- Screenshot — disclosure rendered in Web Chat session
- Screenshot — disclosure rendered in Teams session
- Screenshot — disclosure rendered in Omnichannel session
- Screenshot — periodic reminder rendered
- Screenshot — pre-transaction reconfirm rendered
- Screenshot — Colorado overlay rendered
Handoff
- Screenshot — live agent receiving transferred conversation in Dynamics 365 Customer Service / hub
- Export — handoff payload captured (with PII redacted)
Logging and Reporting
- CSV —
fsi_aidisclosurelogexport for the test period (output ofGet-DisclosureLog.ps1) - JSON — summary file for the same period
- MD — generated
DisclosureComplianceReport-*.md - TXT —
SHA256SUMS.txtwith hashes of the above artifacts
Evidence Artifact Naming Convention
Control-2.19_[ArtifactType]_[YYYYMMDD].[ext]
Examples:
- Control-2.19_DisclosureCopyRegister_20260415.pdf
- Control-2.19_ConversationStartTopic_20260415.png
- Control-2.19_EscalateTopic_TransferConversationNode_20260415.png
- Control-2.19_HandoffPayload_20260415.json
- Control-2.19_DisclosureLog_20260415.csv
- Control-2.19_ComplianceReport_20260415.md
- Control-2.19_SHA256SUMS_20260415.txt
Attestation Statement Template
## Control 2.19 Attestation — Customer AI Disclosure
**Organization:** [Organization Name]
**Control Owner:** [Name / Role]
**Period Covered:** [YYYY-MM-DD] to [YYYY-MM-DD]
**Date of Attestation:** [YYYY-MM-DD]
I attest that, for the period covered:
1. AI identification was rendered at the start of every customer conversation across all in-scope channels
2. Disclosure copy was reviewed and approved by Compliance/Legal; approver and effective date are recorded in the Agent Card (Control 3.1)
3. The Copilot Studio system Escalate topic includes a working Transfer conversation node and successfully routes test sessions to the configured engagement hub
4. Periodic reminders and pre-transaction reconfirmations are configured for Zone 3 agents and fired during testing
5. Jurisdiction overlays for CA / UT / CO render correctly for the relevant test users
6. Disclosure events are logged to fsi_aidisclosurelog with the required fields and retained per the firm's books-and-records policy (≥ 6 years)
7. Outstanding deviations are tracked in the firm's risk register with target remediation dates
Disclosure delivery rate (period): [X]%
Escalation take rate (period, informational): [X]%
Last Compliance review date: [YYYY-MM-DD]
Signature: _____________________________
Date: _____________________________
Back to Control 2.19 | Portal Walkthrough | PowerShell Setup | Troubleshooting