Troubleshooting¶
Common Issues¶
No credential available¶
Error:
Error: Authentication failed. Configure a managed identity, workload identity federation, Azure CLI/PowerShell sign-in for workstation runs, or legacy dev-only AZURE_CLIENT_SECRET credentials.
Solution:
- For Azure-hosted automation, assign a managed identity and grant it Dataverse access.
- For CI, configure workload identity federation and set
AZURE_TENANT_ID,AZURE_CLIENT_ID, andAZURE_FEDERATED_TOKEN_FILE. - For admin workstations, sign in with Azure CLI or Azure PowerShell before running the analyzer.
- For development only, set
AZURE_TENANT_ID,AZURE_CLIENT_ID, andAZURE_CLIENT_SECRET.
Legacy client secret expired¶
Error:
Solution:
- Replace the legacy secret flow with managed identity or workload identity federation where possible.
- If a development fallback is still required, verify the secret has not expired in Microsoft Entra ID.
- Regenerate the secret and update
AZURE_CLIENT_SECRETonly for the development environment.
API returns non-200 status¶
Warning:
Solution:
- Verify the managed identity, workload identity, or application user has Dataverse table permissions.
- Check that an application user exists in the target environment when using app-only authentication.
- Confirm the identity has the Basic User security role or a custom role granting read access to the
fsi_hallucinationreportstable.
Enriched feedback columns unavailable¶
Warning:
Solution: Redeploy the v1.2.0 Dataverse schema so optional clustering columns such as fsi_topicname, fsi_channelid, and fsi_feedbackcomment are available.
No feedback data retrieved¶
Symptom: Report shows Total Reports: 0.
Possible causes:
- No feedback has been recorded in the specified time period (default: 30 days).
- Feedback sources are not configured — see Source Configuration.
- Copilot Studio reactions/comments are unsupported for the selected channel (for example, Microsoft 365 Copilot channel).
- Transcript or Product Feedback retention windows expired before ingestion.
- The
fsi_hallucinationreportstable does not exist — deploy the Dataverse schema first. - Product Feedback CSV was validated with
--dry-runbut never written to Dataverse.
Product Feedback CSV missing required columns¶
Error:
Solution:
- Re-export the file from Microsoft 365 admin center > Health > Product Feedback.
- Confirm the export still includes
Comments,Date Submitted, andFeedback Type. - The importer accepts the current
Appheader and a legacyProductalias.
Product Feedback rows skipped during import¶
Symptom: Import summary shows skipped rows such as invalid_date, not_negative_feedback, duplicate_row, or already_exists.
Solution:
- Run
python scripts/import_product_feedback_csv.py --input exports/product-feedback.csv --output normalized-product-feedback.json --dry-runto preview normalized rows before writing to Dataverse. - Correct malformed timestamps in the source export before rerunning.
- Positive or non-actionable feedback is skipped intentionally so the tracker stays focused on hallucination investigations.
- Duplicate and
already_existsskips are expected on reruns because the importer uses deterministicfsi_reportnamevalues for idempotence.
Product Feedback rows land in single-record clusters¶
Symptom: Imported rows have fsi_topicid values ending with record-<hash> and do not group with other Product Feedback rows.
Possible causes:
- The export omitted usable
CommentsandSurvey Responses, so the importer had no shared text signal to normalize. Feature Area,App module, orChanneldiffered between rows even though the app name looked similar.
Solution:
- Re-export Product Feedback with comment text when tenant policy allows it.
- Compare
fsi_topicname,fsi_channelid, andfsi_conversationidto confirm whether the rows should share a cluster. - Use
fsi_topicname,fsi_channelid, andfsi_reportedatfor broader app/feature/day triage when per-record fallback clustering is expected.
Required packages not installed¶
Error:
Solution:
Dry Run Testing¶
Use --dry-run to validate the analyzer with sample data without requiring credentials: