This is a list of the standard fields included in the Productivity Insights: Approvers dashboard and its data source. Individual client solutions may have additional custom fields (for example, client-specific workflow statuses) that are not included in this documentation.
The dashboard is built on one data source:
| Data Source | Description |
|---|---|
| Client Productivity | This data source provides workflow, routing, and touch history for invoices so you can analyze how long documents spend in each status, who they are routed to, and how users interact with them. The name of the data source is specific to your client (e.g. CompanyIncorporated Productivity). |
The data source is composed of facts and dimensions.
Fact Tables
Fact tables contain the measurements, metrics, or facts about a business process. Fact tables contain the fields we would want to perform our calculations upon (measures) and facts about that record (e.g. Elapsed Time Minutes, Touches). Additions or updates are performed at a high rate.
- Examples: Workflow Fact, Touch Fact
Dimension Tables
Dimensions are descriptive tables which contain the attributes which the measures can be sliced & diced upon. Dimensional data does not change as quickly as facts change.
- Examples: Status, Acting User, Routed To User, Vendor, Organization Structure
Note: sometimes a dimension table is used as the source for a measure, e.g. count the unique list of Users.
Client Productivity Data Source
This data source provides row-level workflow, routing, and touch history for invoices (e.g. Days in Pending Approval, Approvals by User, Touches per Document). The name of the data source is specific to your client (e.g. CompanyIncorporated Productivity).
| Documents included | All P2P documents (invoices) indexed in the last two full years, based on Indexed Date, measured from the first day of the current month. |
|---|---|
| Update frequency | Refreshed once a day. |
| Time zone | All dates and times are in UTC (Coordinated Universal Time). |
| Open activity | Workflow Fact rows that are still open (a document still sitting in a status, or still routed to a user) are measured up to the time the data source was last refreshed. |
| Security | If Organization Structure is enabled and visible in the Configuration tab on the dashboard, then users will be restricted to seeing only the Organization Structure elements they have access to. If Organization Structure is not enabled, users with access to this data source can report on all documents. They are not restricted by field level security rules, location matrix, or confidential flag. |
The core of the Client Productivity data source is two fact tables, Workflow Fact and Touch Fact, which share the Document, Acting User, Routed To User, Status, Workflow Action, and Filter Date dimensions.
| Table | Type | Sample fields |
|---|---|---|
| Workflow Fact | Fact | Start DateTime Elapsed Time Days Elapsed Time Minutes Sequence |
| Touch Fact | Fact | Touches |
| Document | Dimension | DIN Invoice Number Invoice Total Indexed Date Current Status AutoVouch Exception |
| Acting User | Dimension | User Name Internal User |
| Routed To User | Dimension | User Name Internal User |
| Status | Dimension | Status |
| Workflow Action | Dimension | Workflow Action |
| Touch Method | Dimension | Touch Method |
| Acting User Security Group | Dimension | Description |
| Routed To User Security Group | Dimension | Description |
| Work Group | Dimension | Work Group |
| Document Type | Dimension | Document Type |
| Document Type Classification | Dimension | Document Type Classification |
| Vendor | Dimension | Vendor Name Vendor Number |
| Organization Structure | Dimension | Region Entity Operating Unit Location |
| Client | Dimension | Client Name |
| Filter Date | Dimension | Date |
Key metrics
The dashboard and most widgets are built from a handful of metrics. Each one below says what it means and which table to count it from.
| Metric | What it means | How to count it | Table |
|---|---|---|---|
| Workflow Action | A workflow button (Approve, Reject, Return to AP, Route, and so on) pressed on a document. It is recorded on the touch in which it was taken, and on the Workflow Fact row in which the routing it closed ended. The dashboard also calls this Activity, as in "Activity by Approver"; the two names mean the same thing. Rows with no recorded action show Document Update, or No Action on a Workflow Fact row that is still open. | Touch Fact: (SUM([Touches]), [Workflow Action] excluding Document Update)Workflow Fact: (COUNT([Routing Entry Id]), [Workflow Action] excluding Document Update and No Action)
|
Touch Fact, Workflow Fact |
| Touch | A document update or a workflow action taken by a user in the application. Each touch is one row. | SUM([Touches]) |
Touch Fact |
| Routing | The period a document was assigned (routed) to one user, from when it was routed to them until it was routed to someone else or cleared. A routing that stays in place while the status changes is still one routing. | COUNT([Routing Entry Id]) |
Workflow Fact |
| Stay in a status | One continuous period a document spent in one status. A document that returns to a status has a second stay. | COUNT([Status Entry Id]) |
Workflow Fact |
| Time in status | How long documents spent in a status, from the rows' Elapsed Time. Open stays are measured up to the last refresh. | Total: SUM([Elapsed Time Days])Average per stay: SUM([Elapsed Time Days]) / COUNT([Status Entry Id])
|
Workflow Fact |
| Turnaround time | For a workflow action, the time from when the document reached that approver in its current status until the action: the Elapsed Time of the row the action is recorded on. For a routing, the time the document spent routed to that user. |
SUM([Elapsed Time Days]) filtered to the action or routed-to user |
Workflow Fact |
Combining tables with different grain levels
Read this before building your own widgets. The three main tables hold different levels of detail (grain), and Analytics is able to combine them. A measure is calculated correctly on its own table. It goes wrong when the widget breaks it down by a field from a finer table, or from the other fact table.
| Table | One row per | Rows per document |
|---|---|---|
| Document | Document | 1 |
| Workflow Fact | Stretch of time with one status and one routed-to user (a new row at every status or routing change) | Many: one per status or routing change over the document's history |
| Touch Fact | Update, multi-document update, or mobile approval | Many: one per touch |
What to expect when tables are combined
| Widget | Result | Do this instead |
|---|---|---|
| Measures from different tables side by side, for example SUM(Touches) and SUM(Elapsed Time Days) by DIN | Correct. Each measure is calculated on its own table. | Nothing to change. |
| A measure broken down by a field of the other fact table; for example touches by Sequence, or elapsed days by Touch Method | Inflated. Workflow Fact and Touch Fact are related only through the document, so every workflow row of a document is paired with every touch of it. | Break a measure down only by fields of its own table or by shared dimensions (Status, Acting User, Routed To User, Filter Date, Vendor, and so on). |
| A dashboard filter on a field of a fact table (Workflow Fact or Touch Fact), for example Start DateTime or Sequence | Wrong numbers in other widgets: the filter brings that fact table into every widget on the dashboard, and the other table's rows can be repeated and measured-value filters ignored. In one case a user's 57 touches showed as 5,985, and every workflow action column showed the same total. | Add dashboard filters from dimension tables only (Filter Date, Status, Workflow Action, Acting User, Routed To User, Document Type Classification, and so on). Use Filter Date for dates; to limit one widget by a fact field, use a widget filter on that widget. |
| A Document attribute such as Invoice Total broken down by a Workflow Fact or Touch Fact field | Repeated once per matching row: a 300.01 invoice with 2 Document Update touches shows 600.02 on that row. | Document fields are attributes for grouping, filtering, and per-document display, not measures to total. The standard P2P cube should be used for document-level measures instead. |
| Counting Workflow Fact or Touch Fact rows | A count of routing segments or touches, not of documents. | Count documents with COUNT([DIN]) from the Document table, stays in a status with COUNT([Status Entry Id]), and routings with COUNT([Routing Entry Id]). |
| Averaging Elapsed Time across Workflow Fact rows | The average per routing segment. One stay in a status can be several rows (each routing that overlapped it, plus each stretch of unrouted time), so this is neither the average per document nor per stay. |
SUM([Elapsed Time Days]) / COUNT([DIN]) for the average per document, or SUM([Elapsed Time Days]) / COUNT([Status Entry Id]) for the average per stay in a status (the dashboard's "Average Days in Pending Approval"). |
| A Filter Date filter | Applies to the end of the row for Workflow Fact rows and to the time of the touch for Touch Fact rows. Rows still open have no date, so a Filter Date filter leaves them out. A routing that spans a status change is split at it, so each part counts under the month its part ended. | Use Indexed Date (Document) to select documents by when they arrived, and Filter Date to select activity. |
| A document count under a Filter Date filter, with no Workflow Fact field in the widget | The number of documents touched in the period, because Analytics links Document to Filter Date through the Touch Fact table. | To count documents with workflow activity in a period, add a Workflow Fact measure to the widget. |
| A document count broken down by another shared field, for example distinct DINs by Workflow Action | May come from the wrong fact table. Document and fields such as Workflow Action, Status or Acting User each connect to both fact tables, so Analytics has two ways to join them and picks one; for distinct DINs by Workflow Action it goes through Touch Fact, so the count covers only documents whose touches carried the action. | Count through the table you mean. Documents with Workflow Fact rows: SUM([DIN], IF(DUPCOUNT([Elapsed Time Days]) > 0, 1, 0)). Documents with touches: SUM([DIN], IF(DUPCOUNT([Touches]) > 0, 1, 0)). Each counts a DIN only when it has a row in that table, so the join goes through it. |
Standard values
Where the source data is blank or refers to something outside your user list, the data source substitutes a standard value so that every row can still be counted and filtered.
| Value | Appears in | Meaning |
|---|---|---|
| DataServ | Acting User, Routed To User | The change was made by the system or by an automated process. |
| Not Currently Routed | Routed To User | Time a document spent in a status while it was not routed to anyone. |
| Document Update | Workflow Action | No workflow action was recorded. On a Touch Fact row, the document was saved without a workflow button. On a Workflow Fact row that has ended, the status or routing was changed either by the system (for example AutoVouch, imports or data transfer) or by a user without a workflow button that records an action; Acting User shows which. |
| No Action | Workflow Action (Workflow Fact table only) | The row is still open: when the cube was built the document was still in that status and routing, so no action has been taken yet. |
| Unknown | Status, Work Group | The document had no status or no work group recorded. |
| Vendor Not Found | Vendor | The document has no vendor number. |
Client Productivity Data Source > Workflow Fact Table
The Workflow Fact table tracks each document's status changes and routing changes. A new row starts whenever the status or the routed-to user changes, so every row is one stretch of time with one Status and one Routed To User (or Not Currently Routed), and its Elapsed Time is how long that combination lasted. Rows that belong to the same stay in a status share a Status Entry Id, and rows that belong to the same routing share a Routing Entry Id; a routing that stays in place through several statuses is one row per status.
Workflow Fact rows are finer than documents. See Combining tables with different grain levels before breaking a Workflow Fact measure down by Touch Fact fields, or a Document attribute down by Workflow Fact fields.
| Field Name | Description | Examples |
|---|---|---|
| Start DateTime | When this row began (UTC): the later of the routing start and the status start. | 9/20/2026 2:15 PM |
| Elapsed Time Minutes | Duration of the row in minutes. Open rows are measured up to the last refresh. Never negative. | 6887 |
| Elapsed Time Days | Duration of the row in days (Elapsed Time Minutes divided by 1,440). | 4.78 |
| Sequence | The position of the row’s status entry within the document’s history, starting at 1. All rows of one stay in a status (its routing segments and its unrouted time) share the number; within a stay, order rows by Start DateTime. Use Sequence, then Start DateTime, to sort a document’s rows in the order they happened. | 3 |
| Status Entry Id | The stay in a status this row belongs to: one id per contiguous period a document spent in one status. All rows of the stay (each routing that overlapped it and its unrouted time) share the id, and their Elapsed Time adds up to the stay. Count stays with COUNT([Status Entry Id]); average time in a status is SUM([Elapsed Time Minutes]) / COUNT([Status Entry Id]) / 1440. | 48213 |
| Routing Entry Id | The routing this row belongs to; blank on Not Currently Routed rows. A routing that stays in place while the document moves through several statuses is one row per status, all with the same Routing Entry Id. Count routings with COUNT([Routing Entry Id]) (a row count would count routing-and-status segments instead); a stay in a status can hold several routings and a routing can cross several stays. | 1842 |
Each Workflow Fact row is also linked to the following dimensions:
| Dimension | What it tells you about the row |
|---|---|
| Status | The workflow status the document was in during this row. |
| Routed To User | Who the document was routed to during this row, or Not Currently Routed. |
| Acting User | The user whose change started this row: who routed the document, on a row that began with a routing, or who moved it into the status, on a row that began with a status change. Shows DataServ for system changes. |
| Workflow Action | The action recorded when the routing ended (Approve, Reject, Reroute, and so on). It appears only on the row in which the routing ended. Other rows show Document Update once they have ended (a status or routing change made by the system or by a user) and No Action while they are still open. |
| Filter Date | The date the row ended (the earlier of the routing end and the status end), so the part of a routing that ended in August filters under August and the part under a status that ended in September filters under September. Rows still open have none and show as N\A. For the latest end date of each document use (MAX([Filter Date.Date]), [Elapsed Time Minutes] >= 0): the filter on a Workflow Fact field keeps every row and makes the date come from Workflow Fact rows; a plain MAX([Filter Date.Date]) can be computed through Touch Fact. |
| Document, Vendor, Organization Structure, Work Group, Document Type, Document Type Classification | Attributes of the document the row belongs to. |
Typical measures:
| Question | Formula |
|---|---|
| Total days spent in a status |
SUM([Elapsed Time Days]) filtered or grouped by Status |
| Average days per document in a status | SUM([Elapsed Time Days]) / COUNT([DIN]) |
| Average days per stay in a status (a document that returns to a status counts each stay) | SUM([Elapsed Time Days]) / COUNT([Status Entry Id]) |
| Number of routings |
COUNT([Routing Entry Id]), filtered or grouped by Routed To User or Status |
| Number of documents |
COUNT([DIN]) (unique count of documents, from the Document table) |
| Total days routed to a user |
SUM([Elapsed Time Days]) filtered or grouped by Routed To User |
| Number of approvals by user |
COUNT([Routing Entry Id]) filtered to Workflow Action = Approve, grouped by Routed To User |
Client Productivity Data Source > Touch Fact Table
The Touch Fact table records each time a user interacts with a document, along with the document's status and routing at that moment. There is one row per touch (an update, a multi-document update, or a mobile approval).
| Field Name | Description | Examples |
|---|---|---|
| Touches | 1 for each touch, so summing it counts updates and workflow actions. | 1 |
Each Touch Fact row is also linked to the following dimensions:
| Dimension | What it tells you about the row |
|---|---|
| Acting User | Who touched the document. Shows DataServ for system activity. |
| Touch Method | What kind of touch it was (Document Update, Multi-Document Update, Mobile). Views, including views through an integration link, are not touches and are not in the table. |
| Workflow Action | The workflow action taken during the touch, if any, or Document Update. |
| Status | The document's status at the time of the touch. |
| Routed To User | Who the document was routed to when it was touched, or Not Currently Routed. |
| Filter Date | The date of the touch (UTC). |
| Document, Vendor, Organization Structure, Work Group, Document Type, Document Type Classification | Attributes of the document the row belongs to. |
Typical measures: SUM([Touches]) = number of touches; SUM([Touches]) / COUNT([DIN]) = average touches per document.
Touch Fact rows are finer than documents and unrelated to Workflow Fact rows except through the document. See Combining tables with different grain levels.
Client Productivity Data Source > Document Table
The Document table is a dimension: header-level information for every document in scope, one row per document. In scope: P2P documents indexed on or after October 6, 2026 and within the last 24 months. It is linked to both fact tables, so Workflow Fact and Touch Fact rows can be filtered or grouped by any document attribute. Its fields, including Invoice Total, are attributes for grouping, filtering, and per-document display rather than measures to total (see Combining tables with different grain levels).
| Field Name | Description | Examples |
|---|---|---|
| DIN | DataServ tracking number. | 1020170006 |
| DIN Hyperlink | DataServ tracking number that contains a hyperlink to the associated document. When clicked, the document viewer opens for the document with the matching DIN. | |
| Invoice Number | Invoice number as captured from the document. | 910001 |
| Invoice Total | Total amount of the invoice. An attribute of the document; not intended to be summed across widgets that use Workflow Fact or Touch Fact fields. | 300.01 |
| Invoice Date | Invoice date as captured from the document. | 9/17/2026 |
| Capture Type | The method by which the document was captured. | Email, Fax, Scan, EDI, FTP (Transfer), Other |
| Current Status | The document's workflow status as of the last refresh. Use the Status dimension for the status a document was in at the time of a workflow row or touch. | Pending Approval |
| Completed Date | Populated when the status is set to Complete. | 10/3/2026 |
| Indexed Date | The date the document was put into the system by DataServ, after it is processed by the Invoice Processing Machine. Determines whether a document is within the two-year scope. | 9/20/2026 |
| Vendor Not Found Reason | The reason the vendor was not identified by DataServ's Invoice Processing Machine. Blank when the vendor was found. | !NO MATCH ON VENDOR ADDRESS! |
| AutoVouch Exception | The last AutoVouch exception reason this document received. Blank if no exception. | No Receipt Lines Matched |
Client Productivity Data Source > Acting User and Routed To User Tables
The Acting User and Routed To User dimensions contain the same list of members: one row per client user, plus the standard values listed above. DataServ staff are not shown, and neither are the rows they acted on or were routed. They are two copies of the same list so that a single widget can show who acted (Acting User) and who the document was routed to (Routed To User) independently. For example, a Workflow Fact row can have Acting User = the person who routed the document and Routed To User = the approver it was routed to.
| Field Name | Description | Examples |
|---|---|---|
| User Name | The user's name as set up in User Management, in "Last, First" format. A routing name that does not match a single user, or a name that is otherwise not able to be found, appears under its raw name that was stored in the document. | Smith, John |
| The user's email address. Blank for DataServ and the other standard values. | jsmith@company.com | |
| Internal User | Whether the user is DataServ staff. Always false on the dashboard: DataServ staff, and every workflow or touch row they acted on or were routed, are hidden from all dashboard users. | false |
Security group tables
Each user table has its own security group table, so users can be filtered by DataServ security group membership from either side of a routing:
| Table | Linked to | Use it to |
|---|---|---|
| Acting User Security Group | Acting User | Limit rows to activity performed by members of the selected groups (the dashboard filter of the same name). |
| Routed To User Security Group | Routed To User | Limit rows to time the document was routed to members of the selected groups (the dashboard filter of the same name). |
Both tables have one field, Description (the group name as shown in User Management), with one row per user and group.
- Filtering by one or several groups does not repeat rows: a user who belongs to two selected groups is counted once.
- A Routed To User Security Group filter keeps only routed rows. Not Currently Routed time has no routed-to user, so a duration under that filter is the time routed to members of the group, not the total time in the status.
Client Productivity Data Source > Dimension Tables
| Dimension Name | Dimension Description |
|---|---|
| Document | Header-level attributes of every document in scope, one row per document (DIN, Invoice Number, Invoice Total, Indexed Date, Current Status, and so on). Linked to both fact tables. See the field list above. |
| Status | Listing of the workflow statuses seen on documents and in their history, including any client-specific statuses, plus Unknown (ex. New, Pending Approval, Matching Exception, Complete, Paid). |
| Workflow Action | Actions recorded on routings and touches, plus Document Update and No Action. See Workflow Action values below. |
| Touch Method | Kinds of touch. See Touch Method values below. |
| Acting User | Distinct list of users for a client who acted on documents, plus the standard values (User Name, Email). See the Acting User and Routed To User section above. |
| Routed To User | The same list of users, used for who a document was routed to. Includes Not Currently Routed. See the Acting User and Routed To User section above. |
| Acting User Security Group | Security group membership of Acting User, for filtering by the group of who acted. Field: Description. See above. |
| Routed To User Security Group | Security group membership of Routed To User, for filtering by the group of who the document was routed to. Field: Description. See above. |
| Work Group | List of the different work group values assigned to documents. Unknown when a document has none. |
| Document Type | The type of document; currently only AP Invoices are supported. |
| Document Type Classification | Further classification of the document type (ex. NON-PO, PO, CREDIT MEMO). |
| Vendor | Distinct list of vendors with their attributes. Matches the Vendor dimension in your Client P2P data source. See the field list below. |
| Organization Structure | Your Region > Entity > Operating Unit > Location hierarchy. Matches the Organization Structure dimension in your Client P2P data source. See the field list below. |
| Client | Contains the client name. |
| Filter Date | A shared calendar of dates. Both the Workflow Fact and Touch Fact tables link to it (Workflow Fact on the date a row ended, Touch Fact on the date of the touch), so one date filter drives workflow and touch widgets together. The day is the finest grain: neither fact keeps the time a row ended or a touch happened. |
Workflow Action values
Every value the Workflow Action field can hold.
| Value | Meaning |
|---|---|
| Approve | An approver approved the document |
| Route | The document was routed to a user. |
| Reroute | The document was reassigned from the current approver to a different user. |
| Reject | The document was rejected, with a reason. |
| Hold | The document was put on hold. |
| Submit | Payment Requests only. The document was submitted into approval, or straight to Pending Data Transfer when no approval is needed. |
| Complete | The document was marked Complete. |
| Confirm | The document was confirmed and moved to Pending Data Transfer. |
| Receipts Entered | Receipts were entered; the document moves to Pending Receipt. |
| Refuse | The document was refused. |
| Return to AP | The document was returned to the AP team. |
| Return to Requester | Payment Requests only. The document was returned to the requester. |
| Void | Payment Requests only. The document was voided. |
| Skipped | An approver in the approval chain was skipped. Recorded with no elapsed time. |
| Document Update | No workflow action was recorded. On a Touch Fact row, the document was saved without a workflow button. On a Workflow Fact row that has ended, the status or routing was changed either by the system (for example AutoVouch, imports or data transfer) or by a user without a workflow button that records an action; Acting User shows which. |
| No Action | Workflow Fact table only: the row is still open, so no action has been taken yet. |
Touch Method values
Every kind of touch. Views of a document, including views through an integration link, are not touches and are not in the cube.
| Value | Meaning |
|---|---|
| Document Update | A user saved changes to one document. |
| Multi-Document Update | A user saved changes to several documents at once, for example a bulk update or approving several documents together. |
| Mobile | A user acted on the document from the mobile app. |
Vendor fields
The Vendor dimension is copied from your Client P2P data source so vendor names, numbers, and attributes match what you already see there. Vendors with no vendor number show as Vendor Not Found.
| Field Name | Description | Examples |
|---|---|---|
| Vendor Name | Vendor name. | Acme Supply Co |
| Vendor Number | Vendor number in your ERP. | V10045 |
| Entity | The entity the vendor record belongs to. | US01 |
| ERP | The ERP system the vendor record comes from. | SAP |
| Vendor Currency | Vendor's default currency. | USD |
| Vendor Payment Terms | Vendor's default payment terms. | NET 30 |
| Priority Vendor | Whether the vendor is flagged as a priority vendor. | Yes, No |
| Vendor Type | Vendor type as configured. | Supplier |
| Vendor Category | Vendor category as configured. | Office Supplies |
| Vendor DBA Name | "Doing business as" name. | Acme |
| Vendor Address 1, Vendor Address 2, Vendor Address 3, Vendor Address 4 | Vendor address lines. | 100 Main St |
| Vendor City, Vendor State, Vendor Postal Code, Vendor Country | Vendor address components. | Saint Louis, MO, 63101, US |
| Vendor Tax Exempt | Whether the vendor is tax exempt. | Yes, No |
| Vendor Freight Exempt | Whether the vendor is freight exempt. | Yes, No |
Organization Structure fields
The Organization Structure dimension is copied from your Client P2P data source. Values suffixed "(Added)" come from documents rather than from the configured structure. For clients without a configured Organization Structure, the table holds only Region (populated with the document's location) and the other fields are absent.
| Field Name | Description | Examples |
|---|---|---|
| Region, Region ID, Region Name, Region Status | Top level of the hierarchy. | North America |
| Entity, Entity ID, Entity Name, Entity Status | Second level of the hierarchy. | US01 |
| Operating Unit, Operating Unit ID, Operating Unit Name, Operating Unit Status | Third level of the hierarchy. | Manufacturing |
| Location, Location Name, Location Status | Fourth level of the hierarchy. | Saint Louis Plant |
| Address 1, Address 2, City, Province/State, Postal Code, Country Code | Location address. | 100 Main St, Saint Louis, MO, 63101, US |
| EDI Location ID | EDI identifier for the location. | SL01 |
| Organization Status | Status of the organization structure node. | Active |
Comments
0 comments
Please sign in to leave a comment.