QVCCS innovation · Configuration and DevOps
Flow Mapper: see every Architect flow whole, audit it, and document it as built
Architect is where flows are built, one flow at a time. Flow Mapper is where they are understood: every published flow drawn whole from its raw configuration, a virtual call walked through it, the organisation's supporting objects inventoried, a four-tier audit across everything, and a Word as-built document generated rather than typed.
Did you know Architect's Dependency Search covers only checked-in and published flows, and does not include prompts fetched through an expression, because those dynamic prompts are evaluated only when the flow runs?
Did you know that from inside a common module, bot, in-queue call or secure call flow, Architect's Find consuming flows lists the other flows that consume it?
Did you know Architect's Dependencies pane, under a flow's Resources, lists every resource the flow uses, such as queues, skills, users and wrap-up codes, with a link to each place it is used?
01
The question every review starts with
A design review is booked for Thursday. The client's new Head of Contact Centre wants to see what the IVR actually does, the operations team wants to know which queues it can send callers to, and an auditor has asked for a point-in-time record of the configuration. The organisation has dozens of flows, common modules called from several of them, data tables that drive routing, and participant data written by flows that three different teams have touched over the years.
Everyone in the room can open Architect. Few want to click through nested tasks and action panels on a projector, and nobody wants to assemble the as-built by hand from screenshots. We built Flow Mapper, called Flowmapper inside the app, to make the configuration legible: one place to see a flow whole, walk a call, check every reference against what really exists in the organisation, and hand over a document that matches the build.
02
What Architect shows natively, and where we start
Architect is an editor, and a good one. You open a flow, work on its tasks, menus and actions, then check it in and publish it. Two native features answer the where-is-this-used question. Under Resources, the Dependencies pane lists every resource the flow uses, with its type and links to each usage. And the Dependency Search tab on the Architect home page lists the flows that contain a particular resource, across more than 25 dependency types including queues, data actions, data tables, user prompts, schedules and scripts. Find consuming flows does the reverse for common modules, bots, in-queue and secure call flows.
Genesys documents the scope of Dependency Search carefully: it applies to checked-in and published flows, and it does not include prompts fetched through an expression, because those are evaluated only at runtime. It is a search for a resource you can name. What clients asked us for sat alongside it: the whole flow on one canvas with prompt wording and queue targets in place, references that do not resolve to anything, names that nearly match, the same attribute spelt two ways in different flows, and a document they can sign off.
03
The insight: a published flow is data
Every Architect flow version is stored as configuration that the Platform API returns as JSON. Flow Mapper does not use the Architect Scripting SDK to draw diagrams. The server reads the flow, chooses the published version, falling back to checked-in and then saved for a flow that has never been published, and fetches that version's configuration over REST, following a configuration link where Genesys provides one, still authenticated and still a GET.
The configuration is parsed locally into a normalised flow model: lookup tables from the UI metadata, a start node, task and menu containers with their action chains, edges wired from each action's next action and output paths, jump edges for call-task, transfer and menu-choice targets, loop back-edges, synthetic end nodes wherever a chain falls through as Architect does at runtime, return edges from task ends to their callers, and finally the variables and a manifest that catches references a per-action walk would miss. Two enrichment passes then run against the organisation's inventory: prompt tokens in communicate expressions resolve to per-language text and audio, and transfer targets resolve to real queue records. A name that matches nothing is stamped unresolved, and the diagram paints it red.
Read this diagram as text
A left-to-right diagram showing five Genesys sources feeding a parsed and enriched flow model, which in turn feeds four outputs.
- The panel is labelled "Flow Mapper · from raw configuration" and headed "Five Genesys sources, one flow model, four views."
- Five read requests are listed on the left: "Flow version configuration", "User prompts", "Queues", "Data actions" and "Data tables".
- A solid arrow leads from the flow version configuration to "Parse": "Flow model" made of "containers · actions · edges", "jumps · loops · task returns" and "variables · manifest".
- Curved lines from user prompts and queues lead to an "Enrich" box attached below the model: "Prompt tokens → text and audio", "Queue names → queue records" and "No match → unresolved (red)".
- Fainter lines from data actions and data tables lead to the note "Inspector contracts and the audit check against every inventory".
- From the flow model, arrows fan out to four outputs: "Diagram" ("Happy path pinned · port chips") and "Walker" ("Virtual call · caller transcript").
- The other two outputs are "Four-tier audit" ("References · tables · naming") and "As-built document" ("Word · scopes · diagrams").
- The banner beneath reads: "GET only: the shared Genesys client refuses any other method before the request leaves the server".
04
See a flow whole, then walk a call through it
Flows lists every Architect flow the OAuth client can see across all 17 REST-listable flow types, from inbound call and bot flows to workflows, common modules, surveys and voicemail, with division, published version and publish date, a search box and an exclude box for hiding staging or test flows. Open one and the diagram fills the screen. Containers stack in call order; within each, actions are ranked into layers and the happy path is pinned to a straight centre column, so the primary story reads top to bottom while error branches hang off the sides. Edge crossings render as small bridge hops so lines never read as merged.
Multi-output actions show port chips, Success, Failure, Timeout or case labels, so every branch is visible at a glance, and an unresolvable queue name is flagged in red on the node before any audit runs. Click a node and the inspector shows its full configuration: prompt wording per language, pretty-printed expressions, data action input and output contracts, queue records with members, division and wrap-up codes, and every incoming and outgoing edge as a clickable jump. A raw JSON download gives the exact Architect configuration for diffing or archiving.
From the inspector, the Walker steps through the flow like a virtual call. At each junction it offers the outgoing branches as buttons, Yes or No, case values, Success or Failure, menu choices, and as it lands on communicate nodes it builds a caller-facing transcript of the text-to-speech or prompt content, with inline players for recorded audio. Reusable tasks offer return-to-caller branches, so round trips read naturally. In a design review, that is how we narrate a call path without touching Architect.
05
A four-tier audit, and the Task.IsBlocked problem
Press Run audit and an organisation-wide sweep streams live: the inventory of queues, data tables with their schemas, data actions, user prompts and all flows is loaded, every flow is parsed with the same parser the diagrams use, and findings arrive grouped by severity while a progress log scrolls. Tier one checks direct references: every queue, data table, data action, prompt and target flow in every flow must resolve, by id, then exact name, then ignoring case. Nothing matching is a High broken reference; a close match is a Medium typo suggestion; a match that differs only by case is a High case mismatch.
Tier two reads inside the data tables that so often drive routing: every cell is checked against the queue, data action, prompt and flow inventories, and near-misses are flagged as likely typos, scanning up to 2,000 rows per table. Tier three looks for drift across the whole organisation: participant-data attribute names and flow variable names are gathered from every flow, and groups that differ only by case or sit within one or two edits of each other surface as clusters. That is the classic Task.IsBlocked versus Task.isBlocked problem, where two teams wrote the same idea two ways and a downstream report, data action or screen pop reads only one of them.
Tier four attaches to every unresolved reference the closest inventory match by edit distance, with the distance shown. Dynamic references, expressions that build a queue name or read a variable at runtime, are deliberately skipped, because they cannot be validated statically and are not typos. Every finding carries its severity, category, the referencing flow and node or table and cell, the attempted name and any suggestion, and a deep link that opens the flow with the offending node focused and flashing. Findings export to CSV for the change backlog.
Read this diagram as text
An illustrative diagram of four side-by-side columns, one per audit tier, each with example findings, above two notes that apply to all tiers.
- The panel is labelled "Configuration audit · illustrative findings" and headed "Four tiers, every flow and every data table."
- Tier 1, "Direct references": a Transfer to ACD naming "Billing Queu" is a "Medium · typo-suggestion" finding, and a Transfer to ACD naming "billing queue" is a "High · case-mismatch" finding.
- Tier 2, "Data-table content": "Data table · routing row", cell "Sales_Queue", is a "Medium · data-table-cell" finding. A note reads "Every cell checked against queue, data action, prompt and flow names" and "Up to 2,000 rows per table".
- Tier 3, "Naming consistency": a "Drift cluster across flows" groups "Task.IsBlocked" and "Task.isBlocked", which "Differs only by case, or by 1–2 edits" – a "Medium · naming-cluster" finding.
- Tier 4, "Suggestions": "Closest inventory match" "Billing Queue", "Edit distance 1", "Attached to every unresolved reference, with the distance shown".
- A dashed note beneath reads "Dynamic references such as Flow.x, Task.x and MakeQueue(…) are skipped: they cannot be checked statically".
- A final note reads "Every finding deep-links to the offending node or table cell · filter by severity · export to CSV".
06
Inventories and an as-built that writes itself
Around the diagrams sit inventory pages for prompts with per-language text and playable audio, data tables with schema and rows, data actions with their input, success and failure contracts, integrations with the actions each provides, and queues with skill evaluation method, calling-party settings and wrap-up codes. Twenty-odd further inventories, from users, groups and skills to schedules, divisions, telephony, outbound, quality, workforce management, knowledge, recording policies and canned responses, are read through the Platform API for the as-built document.
The As-Built page configures a generation job: executive scope for totals and a section map, standard scope as the recommended handover set with personal data redacted and data-table rows capped, or full scope, unredacted with all rows, for controlled environments only. A section picker adds or removes any section; including the audit runs a full sweep inside the generation, and its findings become the document's configuration-health appendix. With diagrams included, a headless browser captures each flow's own diagram for embedding, and a per-flow failure simply omits that image rather than failing the run.
Generation runs as a detached server-side job, so a page reload re-attaches to it, and the finished Word document is held only in memory behind a one-time download for about 30 minutes. Redaction masks email addresses, international phone numbers and long digit runs in section bodies and table rows, while deliberately leaving identifiers that are structural cross-references. In the QVCCS method, that document is part of the operational handover pack at Transition, generated from the live configuration rather than typed from memory.
Read this diagram as text
A three-column diagram, read left to right: the chosen document scope and options feed an ordered list of generation phases, which produces a Word as-built document.
- The panel is labelled "As-built · detached generation job" and headed "Generated from the live configuration, not typed."
- Left column, "Scope", offers three choices: "Executive" – "Totals and a section map", "No per-item detail, no table rows"; "Standard · recommended" – "The full handover set", "Personal data redacted · rows capped"; and "Full" – "Everything, unredacted, all rows", "Controlled environments only".
- Two ticked options sit below the scopes: "Redaction" and "Include diagrams". An arrow leads from the standard scope to the phases.
- Middle column, "Phases", lists in order: "Organisation", "Inventories", "Data tables, data actions, prompts" and "Parsing flows · the longest phase".
- The phases continue: "People and organisation", "Outbound, quality, WFM", "Audit · becomes the health appendix" (highlighted), "Diagram capture, flow by flow" and "Document build".
- An arrow leads to the right column, "As-built · Word", listing the document's sections: "Cover · executive summary", "Flows and routing", "Queues · wrap-up codes · skills", "Data actions and data tables", "Users, groups, divisions" and "Telephony · outbound · WFM".
- The document ends with the "Configuration-health appendix", and a box notes "Flow diagrams embedded".
- The banner beneath reads: "A reload re-attaches to the running job · the finished file is a one-time download, held in memory for about 30 minutes".
07
Read-only by construction, and part of a family
Flow Mapper cannot modify, publish, check out or delete anything. Its shared Genesys client refuses any request other than a GET before it leaves the server, so the guarantee is enforced in one place rather than feature by feature. It signs in with an OAuth client-credentials grant, keeps the client secret encrypted, never sends a Genesys token to the browser, stores no organisation configuration data at rest (only an encrypted sign-in credential and token are kept, so a restart doesn't sign users out), and paces every session at 200 requests a minute with retries that honour Retry-After. Read-only role bundles cover everything it reads, and each inventory page degrades on its own with the missing permission named.
It is the design-time member of a family of QVCCS flow tools. Flow Mapper shows what the flow can do; Flow Journey shows what it did on one call; IVR Sankey shows what it did for every caller in a window; and Journey Analyser measures the paths that matter as funnels. We designed it for the moments our multidisciplinary squads meet the configuration: the Solution Architect's design authority review, the Senior Developer's four-eyes peer review, the Systems Integration Tester's path-by-path test design and the Trainer's handover session. It is part of the QVCCS App Suite, included with every Managed Professional Services tier, and backed by the whole practice.
How it compares
Architect's native views and QVCCS Flow Mapper
Native facts are as documented in the Genesys Cloud Resource Center.
| Aspect | Native Genesys Cloud CX | QVCCS Flow Mapper |
|---|---|---|
| Seeing a flow | The Architect editor for the flow you open, with its resources under the Dependencies pane. | An interactive diagram of any flow with the happy path pinned, prompt wording, queue targets and data action contracts inline. |
| Where a resource is used | Dependency Search lists checked-in and published flows containing a named resource; Find consuming flows for modules, bots, in-queue and secure flows. | Inventory pages for prompts, data tables, data actions, integrations and queues, plus deep links from every audit finding. |
| References that resolve to nothing | Dependency Search works from resources that exist and can be named. | Tier 1 audit: broken references, case mismatches and typo suggestions across every flow. |
| Data tables | Data tables appear as a dependency type in Dependency Search. | Tier 2 audit: every cell checked against queue, data action, prompt and flow names. |
| Naming drift | Variables and participant data are defined flow by flow in the editor. | Tier 3 audit: attribute and variable names that differ by case or one or two edits, clustered across all flows. |
| Walking a path | Replay Mode plays back recorded flow executions, where execution data is stored. | The Walker steps through the design itself, building a caller-facing transcript, with no call needed. |
| As-built record | Configuration is viewed flow by flow in Architect, or retrieved through the Platform API. | A Word document with scope presets, redaction, a configuration-health appendix and embedded diagrams. |
Flow Mapper reads the most recent published build of each flow, or the latest checked-in or saved configuration for a never-published flow; it never sees an in-progress editor state.
The takeaways
- Every published flow drawn whole from its raw configuration, with prompts, queues and contracts inline.
- The Walker narrates a call path for design reviews and test design without touching Architect.
- A four-tier audit finds broken references, near-miss names in data tables and cross-flow naming drift.
- As-built Word documents are generated from the live configuration, with redaction and diagrams.
- Read-only by construction, enforced in one place, with no organisation configuration data stored at rest.
Flow Mapper is part of the QVCCS App Suite, included with every Managed Professional Services tier and built by the same certified team that designs, builds and supports Genesys Cloud CX solutions.
Sources
- View dependencies in the flowhelp.genesys.cloud
- Dependency Search tabhelp.genesys.cloud
- Search for flows by dependencyhelp.genesys.cloud
- Navigate the Architect home pagehelp.genesys.cloud
- Use replay mode to troubleshoot an Architect flowhelp.genesys.cloud