PingOne DaVinci

Debugging and analytics

Use these best practices when troubleshooting issues with flows and reviewing flow analytics data.

Review the flow execution log

Open your flow in PingOne DaVinci.

In the lower left corner of the flow editor, click Analytics.

A screen capture showing the Analytics button.

This opens the Flow Analytics window. You can change the date range for the executions of your flow. You can also click Refresh to load information for your latest flow executions.

A screen capture showing the date range selector.

Hover over the graph to see the flow count for the selected timeframe.

A screen capture showing the flow count for a flow.

In the Event Logs section, you can search for a specific flow execution ID or select a flow execution from the list to see its details. Flow execution is displayed in chronological order with the most recent on top.

A screen capture showing the event logs.

After you select a flow execution, you can see Flow Duration and connector details such as Node Title, Connector, and Capability. Expand the view or scroll to the right to see the Date and Event Message columns.

A screen capture showing the node details.

In the canvas view, the nodes show analytic information for the flow execution you selected. Hover over a node to see the related events in the Flow Analytics window.

A screen capture showing the canvas view.

Click an event in the log to expand the JSON request or response for the event. This allows you to see the information that passed through the flow, including error codes and messages.

A screen capture showing the expanded event information.

If there are any errors, you might see a Send Error Response that will show you the error encountered.

Use debug mode to view additional details

Use the Debug Mode flow setting to capture additional details in the Flow Analytics log. Enabling debug mode provides additional insight into the properties, parameters, and connector inputs between nodes in the flow.

In the upper-right corner of the flow editor, click the More Options ( ) icon and select Flow Settings. On the Logging tab, in the Log Level list, select a logging level. Debug captures the most detailed information.

A screen capture showing the Flow Settings option for a flow.
A screen capture showing a flow with the Log Level set at Debug.

When you are done analyzing the flow, reset the log level to Info to improve performance.

When Debug Mode is selected, the logs can include sensitive data, such as credentials or personal information.

Use Node IDs to track nodes

Turn on node IDs to identify nodes in your flow:

  1. Open your flow in PingOne DaVinci.

  2. In the upper-right corner of the flow editor, click the More Options ( ) icon and click Show Node ID.

When you use variables to populate capability properties in your flow, you can hover over the variable to see the ID of the node that the variable comes from. With Show Node ID enabled, you can check the source of the variable to make sure it’s correct.

A screen capture of a flow showing the connection between a displayed Node ID and the source of a variable.

Always make sure your variables point to the expected node ID after you copy or clone nodes or flows.

Review API responses

Learning how to read API responses is also useful for troubleshooting in PingOne DaVinci.

If you scroll to the top of an event, you can review the properties of the API call and the schema for the connector.

Use the Error Message connector

The Error Message connector allows you to display custom error messages in a DaVinci flow and is useful for handling errors consistently in a production flow.

For debugging a test flow, use the HTTP connector with the Custom HTML Message capability to capture and display errors.

A screen capture showing the Custom HTML message option.

When using the HTTP connector, use the skerrormessage SK-component to capture and show DaVinci-specific error information.

There are two ways to display the skerrormessage.

Use a basic message:

  1. In your flow, add an HTTP connector and select the Custom HTML Message capability. Select the node on the canvas.

  2. In the Message field, click {} and select the skerrormessage variable from the SK-Component source.

    A screen capture showing the skerrormessage component.

Use a custom HTML template:

  1. In your flow, add an HTTP connector and select the Custom HTML Template capability. Select the node on the canvas.

  2. In the Message field, click {} and select the skerrormessage variable from the SK-Component source.

For example, if you want to capture the skerrormessage on a password validation, HTML similar to the following may be used:

<div id="password-validation-message"
  class="errormsg feedback--error sk-alert sk-alert-danger has-text-danger has-background-danger-light text-center"
  style="color:red" data-skcomponent="skerrormessage" data-skerrorid="password">
</div>
<div data-skcomponent="skerror"
  class="feedback feedback--error sk-alert sk-alert-danger has-text-danger has-background-danger-light text-center"
  style="color:red" data-id="feedback" data-skvisibility="">
</div>
html

Send flow data to an external analytics tool

You can use the HTTP connector’s Make REST API Call capability to send DaVinci log data to an external log aggregator or analytics tool.

  1. In your flow, add an HTTP connector and select the Make REST API Call capability. Select the node on the canvas.

  2. In the Headers section, click the Add (+) icon.

  3. In the Key field, enter x-log-key.

  4. In the Value field, enter the API key.

    A screen capture showing an HTTP connector configured to send data to an external analytics tool.

Add the Flow Analytics connector to the flow

The Flow Analytics connector enhances the standard analytics view with cumulative results. Use the Flow Analytics connector in key places in your flow to collect the information that’s most important to you.

A screen capture showing the configuration for a flow analytics connector.
A screen capture showing the placement of two flow analytics connector nodes in a flow.

Correlate information using available IDs

Multiple ID values display in the analytics and in webhook events at all logging levels. You can use these IDs to correlate events between products and gain a clearer understanding of issues you encounter.

Identifier Description Purpose

correlationId

A correlationId is generated for each API call. A node that communicates with PingOne uses one or more API calls, such as /as/authorize, /policy/:policyId/start, or /capabilities/customHTMLTemplate.

Lets you trace a specific HTTP request execution within PingOne that spans multiple PingOne microservices.

transactionId

A transactionId is assigned for each flow execution across all services.

For example, if a PingOne flow is initiated from the OAuth authorization endpoint, the transactionId would be set at the first step and then passed to DaVinci. Even if the same flow execution returns to PingOne, the same transactionId is maintained.

Used to trace a flow execution across all PingOne services.

externalTransactionId

A externalTransactionId is a unique identifier set outside of PingOne by an external application. It’s then passed to PingOne and DaVinci and carried throughout the flow execution.

For example, flows executed as part of PingFederate integration are assigned an externalTransactionId by PingFederate, and that value is tracked throughout the flow execution.

Used to trace the flow execution across all PingOne and external services when an external system is involved.

sessionId

A sessionId identifies a unique user session. It’s set when the session is created in PingOne.

Used to trace user sessions across flow executions.

externalSessionId

An externalSessionId identifies a unique user session. It’s set by an external application such as PingFederate and passed to PingOne and DaVinci.

Used to trace user sessions across flow executions and external applications.