Troubleshooting: Control 2.21 — AI Marketing Claims and Substantiation
Last Updated: April 2026 Primary Owners: Compliance Officer (process), SharePoint Admin (list/library), Power Platform Admin (flows) Escalation Path: Functional admin → AI Governance Lead → Compliance Officer → Legal Counsel
Diagnostic order of operations
When a claim or workflow is not behaving as expected, work through the diagnostics in this order — each step rules out a class of cause:
- Item state — confirm the list item exists and
Statusis what you expect. - Flow run history — confirm the flow triggered and check the last failed action.
- Approval record — confirm an approval was created and routed to a real, active user.
- Permissions — confirm the actor has the required SharePoint and Power Automate permissions.
- Connections — confirm the SharePoint, Outlook, and Approvals connections in the flow are still authorized.
Issue 1 — Approval workflow does not trigger
Symptoms
- Submitter saves a claim and changes Status to
Under Review, but no approval is generated. - Power Automate run history shows no recent runs, or runs marked Skipped.
- Approvers receive nothing.
Diagnosis
- Power Automate → My flows — confirm the flow is On. Flows automatically turn off after repeated failures or after 90 days without a successful run.
- Open the flow → Run history — if the trigger fires but the run is Skipped, the trigger condition (
Status eq 'Under Review') likely did not evaluate true. Common cause: the submitter saved withStatus = Draftand never moved to Under Review. - Open the flow in edit view — check the trigger card for a Trigger condition filter and confirm the column internal name matches
ClaimStatus(not the display name). - Check the SharePoint connection — re-authenticate if the connection icon shows a warning.
- If the flow runs but no approval is generated, inspect the Start and wait for an approval action: the dynamic
Compliance Reviewerfield may be empty, in which case Power Automate cannot route the approval.
Resolution
- Set the trigger to When an item is created or modified with a trigger condition
@equals(triggerOutputs()?['body/ClaimStatus/Value'], 'Under Review'). - Provide a fallback recipient (Compliance shared mailbox or distribution group) when the per-item reviewer is empty.
- Re-authenticate connections; re-enable the flow.
Issue 2 — Substantiation hyperlink returns 404 or "Access denied"
Symptoms
- The Substantiation File link is present but clicking returns a SharePoint not-found page or an access-denied page.
Diagnosis
- Confirm the document still exists at the expected location (it may have been moved or renamed, which breaks the stored URL — SharePoint stored hyperlinks are not auto-updated).
- Confirm the URL is fully qualified (
https://<tenant>.sharepoint.com/...), not relative. - Confirm the user opening the link has at least Read access to the substantiation library. Submitters typically need Contribute to the inventory list and Read on the library — verify both.
Resolution
- Re-link by copying the URL from the document's ... → Copy link dialog (use a "people in your organization can view" or scoped link consistent with firm policy).
- Where documents move frequently, consider replacing the hyperlink column with a managed metadata or lookup column tied to a stable identifier.
Issue 3 — Quarterly reminders are not delivered
Symptoms
- Approved claims pass their Next Review Date with no reminder email.
- Scheduled flow shows no recent runs, or runs return zero items.
Diagnosis
- Open the scheduled flow → Run history. If runs do not appear, check the recurrence schedule and confirm the flow is On.
- Open the Get items action's run output — if the array is empty, the OData filter is too restrictive or the field internal names are wrong.
- Confirm the OData filter uses the internal field names:
ClaimStatus eq 'Approved' and NextReviewDate le '@{addDays(utcNow(),14)}'. - Confirm the Compliance Reviewer field is populated on the affected claims; if empty, the email recipient is null and the Send an email action fails silently.
Resolution
- Correct the OData filter and field references.
- Add a fallback recipient (Compliance group mailbox) for claims with an empty Compliance Reviewer.
- Add a top-level Scope with a Configure run after on a final notification step so failures are surfaced to the flow owner.
Issue 4 — Claim stuck in "Under Review"
Symptoms
- Claim shows
Under Reviewfor days; flow run shows Running; no progress.
Diagnosis
- Open the run → identify which Start and wait for an approval action is pending.
- Confirm the assigned approver is active in the directory (not disabled, not departed).
- The approver should check Power Automate → Action items → Approvals, the Microsoft 365 approval email, and the Approvals app in Microsoft Teams. Approvals can be claimed from any of these surfaces.
- Power Automate approvals time out after 30 days by default; longer waits may be the result of a missed reassignment.
Resolution
- Reassign the approval (approval owners can reassign from the Approvals UI).
- If the approver has departed, cancel the run, set
Status = Draft, repopulate the Compliance Reviewer field with a current approver, and resubmit. - Add a periodic reminder action (e.g., Send an email after a Delay of 3 days inside the approval scope) to reduce missed approvals.
Issue 5 — PowerShell export fails or returns an empty file
Symptoms
Export-AIClaimsReport.ps1raises an authentication error, returns no rows, or returns rows with empty fields.
Diagnosis
- Confirm PowerShell edition is 7.2 or later — PnP.PowerShell v2 will not load on Windows PowerShell 5.1.
- Confirm the module is loaded at the CAB-pinned version:
Get-Module PnP.PowerShell | Format-List Name, Version. - Confirm
-AzureEnvironmentmatches the tenant cloud. A Commercial connection against a GCC High tenant returns zero results without error — a classic source of false-clean evidence. - Confirm the executing account has at least Read on the AI Governance site.
- For a list with more than 5,000 items, ensure
-PageSize 500is set and that you are not hitting a list-view threshold caused by an unindexed filter.
Resolution
- Re-run with the correct PowerShell edition, pinned module version, and
-AzureEnvironmentvalue. - Re-authenticate:
Disconnect-PnPOnline; Connect-PnPOnline -Url $SiteUrl -Interactive -AzureEnvironment <env>. - Add an index on
NextReviewDateandClaimStatusif you frequently query large historical datasets.
Issue 6 — Duplicate claims
Symptoms
- The same claim text appears multiple times; the workflow may have triggered more than once.
Diagnosis
- Sort the list by
Submission DateandClaim Textto identify duplicates. - Inspect flow run history for duplicate triggers (a "When an item is created or modified" trigger fires on every save, which is expected — the trigger condition on
Statusshould suppress duplicates). - Confirm the trigger condition on
Status = 'Under Review'is in place; without it, every edit re-runs the approval flow.
Resolution
- Add or correct the trigger condition.
- Resolve in-flight duplicates by setting the duplicates to
Status = Withdrawnand noting the authoritative claim ID inReview Comments(do not delete — preserve the audit trail per books-and-records expectations). - Consider adding a Power Apps form for submission with simple duplicate detection (search the inventory by claim text on submit).
Issue 7 — Retention label not applied to new uploads
Symptoms
- Documents uploaded to the substantiation library show no retention label in the Details pane, even though a Purview policy targets the library.
Diagnosis
- Confirm the Purview retention label policy is Published and that its location includes the AI Governance site or specifically the substantiation library.
- Policy propagation can take up to 24 hours after publication; check the policy's Status and Last refresh times.
- Confirm the library has a default retention label set (Library settings → Apply label to items in this list or library).
- Confirm the executing user has at least Edit permission on the library — readers cannot apply labels.
Resolution
- Set the default label on the library so new items inherit it automatically.
- Wait for policy propagation (up to 24 hours) before declaring failure.
- For pre-existing items, run a Bulk apply label action from the library command bar.
Escalation matrix
| Issue type | First responder | Escalation 1 | Escalation 2 |
|---|---|---|---|
| Flow failure | Power Platform Admin | AI Governance Lead | Microsoft Support |
| List / library / retention | SharePoint Admin | Purview Compliance Admin | Microsoft Support |
| Permission issues | SharePoint Admin | Entra Security Admin | IT Director |
| Disputed claim content | Compliance Officer | Legal Counsel | Chief Compliance Officer |
| Regulatory interpretation | Legal Counsel | External Counsel | Applicable regulator |
| Urgent claim blocking marketing | Compliance Officer | Legal Counsel | CCO + General Counsel |
Known limitations
| Limitation | Workaround | Status |
|---|---|---|
| Power Automate approval default timeout (30 days) | Add periodic reminder inside approval scope; reassign on time-out | By design |
| SharePoint hyperlink columns do not track moved/renamed files | Use Library command bar Copy link when relinking; consider managed metadata | By design |
| Out-of-the-box list does not enforce duplicate detection | Add a Power Apps submission form with pre-submit lookup | Future enhancement |
| Retention label policy propagation can take up to 24 hours | Schedule label changes outside change-window cutoffs | By design |
| Mobile experience for the Approvals app may differ from desktop | Use the Approvals app in Teams on supported devices | Microsoft platform behavior |
Support contacts (template)
| Role | Responsibility | Contact |
|---|---|---|
| Compliance Officer | Claim review, regulatory questions | compliance@example.com |
| AI Governance Lead | Technical accuracy validation | ai-governance@example.com |
| SharePoint Admin | List, library, retention configuration | sharepoint-support@example.com |
| Power Platform Admin | Flow configuration and run-history triage | powerplatform@example.com |
| Purview Compliance Admin | Retention labels and policies | purview-support@example.com |
| Legal Counsel | Regulatory interpretation; high-risk claims | legal@example.com |
Back to Control 2.21 | Portal Walkthrough | PowerShell Setup | Verification & Testing