Workday audit-log template generator

Workday Orchestrate flows can produce a polished, filterable HTML audit report — but wiring the report template to your integration's specific columns is fiddly. This tool does that step for you: upload a sample CSV of your audit output, adjust the column mapping and branding, and download a template ready to paste into your flow. Everything runs in your browser; nothing is uploaded anywhere.

1 · Upload a sample CSV

Use a real (or hand-crafted) sample of the audit CSV your integration produces — a header row plus a few records. Column order and names should match what your flow will log at runtime.

Drop a sample CSV here

or click to browse. The file never leaves your browser.

How the report works

The generated file is a single self-contained HTML page — no external scripts, styles, or network calls — so it can be attached to a notification or stored as a document from an Orchestrate flow and opened anywhere. Your colors and logo are baked into the file. The raw CSV data is embedded in a <script id="auditCSV"> block at the bottom of the file, and the page parses and renders it on load.

  • The first line of the data is the header row. Your logged audit file already includes one (Orchestrate's log-to-file default), so the whole file substitutes in unchanged — just keep the column order matching your sample.
  • Five standard fields drive the table, severity filters, and search: Reference ID, Timestamp, Level, Message Summary, Message Details. The mapping you chose above is pinned inside the file in a <script id="auditMap"> block, so the report never has to guess.
  • Every other column automatically becomes a custom detail field, shown in the record-details panel when a row is selected.
  • A column named WID (or containing “Workday ID”) gets special treatment: on a live run it holds the Workday ID confirming each record was written; on a validation run it holds the validation notice, and the report shows a “Validation run — nothing loaded” banner (unless you opted out of validation runs above).

2 · Wire it into your Orchestrate flow

  1. In your orchestration, log each audit record to a file as one CSV line per record (log-to-file), matching the column order of your sample, and keep the component's default header line. Wrap values in double quotes and escape quotes inside them as "" so commas and line breaks in messages stay safe.
  2. Store the downloaded HTML as the document / message-body template in your flow.
  3. Substitute the header tokens: {{REPORT_TITLE}}, {{USER}}, {{EVENT_ID}}, and — if you kept validation runs enabled — {{VALIDATION_MODE}} (true for a validation / dry run, false for a live load).
  4. Substitute the entire contents of your logged audit file for {{CSV_ROWS}} — header line included. Orchestrate's log-to-file writes the header row by default, and the report reads the first line as the column names, so the file plugs in as-is with no extra processing.
  5. Required transform (don't skip): before substituting, replace every </ with <\/ in the file contents. A literal script-closing tag inside a field (common when message details echo XML or HTML) would otherwise end the embedded data block early — corrupting the page and opening a script-injection hole. The report reverses the escape when it reads the data, so displayed values are correct.
  6. Deliver the document — attach it to a notification, route it for review, or store it. Recipients get a sortable, filterable, searchable report with CSV export, no system access required.

Blank template

Prefer to wire the columns yourself? Download the base template with its built-in sample data and edit the auditCSV and auditMap blocks directly — the top of the file documents every token and the required transform.