Plugin Trace Viewer — User Guide
Overview
Plugin Trace Viewer lets you read, filter, and analyse Dataverse plugin trace logs without opening the legacy Dynamics 365 UI. It highlights exceptions instantly, supports live auto-refresh, and lets you drill into correlation chains across related trace entries.
Prerequisites
- An active connection to a Dataverse environment
- Plugin tracing must be enabled in the target environment:
- Go to Settings → Administration → System Settings → Customization tab
- Set Enable logging to plug-in trace log to All or Exception
- Read access to the
plugintracelogentity (prvReadPluginTraceLog)
Getting Started
- Select Plugin Trace Viewer from the sidebar
- The plugin connects and loads the most recent trace log entries automatically
Interface Layout
| Area | Description |
|---|---|
| Stats bar | Total logs, exception count, time of last refresh |
| Filter bar | Filters for entity, message, plugin name, and exception status |
| Logs table | Sortable list of trace entries |
| Detail panel | Full trace message and exception details for the selected entry |
Workflow
1. Browse Trace Logs
Logs load automatically, ordered by most recent first. Each row shows:
| Column | Description |
|---|---|
| Time | When the plugin executed |
| Entity | The entity the message fired on |
| Message | The SDK message (Create, Update, Delete, etc.) |
| Plugin | The plugin type name |
| Depth | Execution depth (1 = initial trigger) |
| Duration | Execution time in milliseconds |
| Exception | ⚠️ badge if the execution threw an exception |
2. Filter Logs
Use the filter bar to narrow results:
| Filter | How to use |
|---|---|
| Entity | Type or select an entity logical name |
| Message | Filter by SDK message name (e.g. Create, Update) |
| Plugin | Type part of the plugin class name |
| Exceptions only | Toggle to show only entries that threw an exception |
Filters apply immediately — no need to click a search button.
3. Inspect a Log Entry
Click any row to open the Detail Panel:
- Trace message — The full log text written by the plugin (via
TracingService.Trace()) - Exception details — Full exception type, message, and stack trace if an error occurred
- Context info — Initiating user, organization, correlation ID, and request ID
4. Drill into Correlation Chains
Click Show correlation on a log entry to filter the table to all entries sharing the same Correlation ID — this shows the full chain of plugins triggered by a single user action.
5. Live Auto-Refresh
Toggle Auto-refresh to poll for new entries every 10 seconds. A countdown timer shows when the next refresh will occur. Use this while actively testing plugin logic.
6. Export
Click Export to download the currently filtered results as a CSV file.
Tips
| Tip | Detail |
|---|---|
| Filter to exceptions first | Enable "Exceptions only" to jump straight to failed executions |
| Use correlation ID | One user action can trigger many plugins — correlation drilling shows the full picture |
| Auto-refresh during testing | Enable auto-refresh and trigger your action from the browser to see results appear in real time |
| Check trace message content | Developers can write debug info using ITracingService.Trace() — this appears in the trace message column |
Troubleshooting
| Problem | Resolution |
|---|---|
| No logs appear | Confirm plugin tracing is enabled in System Settings and that plugins have recently fired |
| Only old logs show | Use auto-refresh or click Refresh manually after triggering plugin execution |
| Trace message is empty | The plugin may not call ITracingService.Trace() — only exceptions are always logged |
| Too many entries | Use entity and message filters to focus on the specific operation being debugged |