Skip to main content

Getting Started

Key Screens

Below are some key screens in Integration Flows to be familiar with...

Flow Studio

The Flow Studio is where you design & manage your Flows. From here you can see a list of all the Flows you've built and their status.

Flow Studio

Description
1List of configured Flows
2Create new Flow
3Publish Status. Flow has been published and is live in the Tenant
4Flow has draft version in progress. This flow has never been published before as it doesn't include the "Published" status
5Flow has draft version in progress
6Flow version is waiting for Approval before it can be Published
7Delete Flow
8Expand row to see the previous versions. The duplicate button lets you create a new Flow from that versioned configuration

Flow Designer

The Flow Designer is where you design your Flow. In the Designer tab, the Canvas shows a list of all the progressive tasks you've added into your Flow. You can click on each task to configure it, or click the '+' icons to add more tasks. Hover over a task and you'll see the 'trash' icon you can use to delete a task.

Flow Designer

Description
1Flow Name. Identifies current version and status (Published, Draft, etc). If version is not in draft status the designer will be in read-only mode (denoted by the eye icon) to prevent any configuration changes
2Create a new version based on the current version. If a draft version is already created it will bring you to that latest draft.
3Task Canvas. Shows the tasks configured in the Flow
4Quick Action Bar:

- Fit to Screen
- Zoom In
- Zoom Out
- Create Task

From the other tabs in the Flow Designer you can access...

  • Summary - Change the Flow Name
  • Variables - Manage the Flow Variables within this Flow
  • Executions - List past executions of this flow. Executions can be filtered by current version and date range

Integration Hub

Flows can be monitored via the Integration Hub. From here you quickly identify failures and dig into more details with the Flow Execution Details page in the next section. The results can be filtered at the top by Flow and Date Range.

Integration Hub - Flows

Flow Execution Details

The Execution Details page shows all the relevent information for a past instance of a Flow (Execution) including Execution Attempts, Detailed Step Logs, and general Logs.

Flow Execution Details

Description
1Flow Execution Details shows when the Execution started / ended and it's current status
2Some Flows are rerunnable (Journey) when they fail. Each run is called an Attempt.
3Execution Step Logs show the sequence of tasks executed in the Flow Execution.

Note: Step Logs are purged after 31 days
4Step Log Details shows the inputs / outputs at each task. Useful when troubleshooting an error to see what data looked like at runtime.
5Logs generated during executions. Logs are produced by Tasks Failing or custom logs can be raised via Transformation Task using the Context.Log() function.

Flow Studio (Templates)

In the Templates Tab on Flow Studio you can see a list of pre-configured Templates to highlight different design patterns or Flow functionality. Feel free to import these templates into your Tenant and customize them to your use case!

Templates

Description
1List available templates
2Review Flow Configuration. Canvas is interactive and Configuration can be reviewed by clicking on each task
3Import Flow. Before importing you will be prompted to enter Flow Name and confirm Flow Initiator

Persisted Storage

Flows can now create files to temporarily store data and access it later. Use this to share data between Flows or store details of a previous execution and access it on subsequent runs (think: Batch Jobs need to store last timestamp ran or last JourneyID processed). See Design Patterns for details on new patterns this feature enables.

All files have a Time To Live (TTL) specified in the Storage task which is used to calculate the document expiry as file is created/updated. When the expiry date is reached the file will be purged.

Files can be reviewed from the Flow Studio in the new Persisted Storage tab:

Persisted Storage

Description
1List files in storage as a paginated list. Requires "Persisted Storage Access" permission.
Shows list of files, size, Flow Execution that last updated it, the file's sensitivity, and expiration date based on TTL.
2View file contents. Requires either "Persisted Storage Get Record" or "Persisted Storage Get Sensitive Record" permissions based on file sensitivity.
3Delete File. Requires "Persisted Storage Delete Record"

Creating a new Flow

Create a new flow by

  1. Clicking the "Add" button from Flow Studio page
  2. Duplicating an existing Flow Version in Flow Studio page
  3. Importing Flow from Flow Studio / Template tab

You will be prompted to give your flow a Name and specify the type Flow Initiator, this will be how you plan on initiating an instance of your flow.

Flow Execution Details

Version Control

Flows use versioning to manage change/edits like other areas of Fenergo (Policy, Reference Data, etc). A Flow's configuration can only be edited within a draft version. Once the configuration change is ready you can submit the version for Approval. At that point the Flow Version can be Published or Rejected.

Flow Initiators will always launch the latest Published version meaning you can fix a bug and once published, all open Journeys will launch the corrected version.

Participants are tracked with each Flow Version and although not yet visible in UI can be seen in API response. The following actions add the userId as a tracked Participant:

  • Create a new Flow or new version
  • Contributes (saves) configuration changes to a Flow version
  • Submitter - Submits it for approval
  • Approver – Approves or Rejects flow version
info

In the future we will integrate with Audit domain to capture field-level changes within a configuration (e.g. who changed the MDM URL to “invalid-domain.com”)

Version States

The Chip next to the Flow Name tells you the current state of the draft and if it is read-only (eye icon)

Flow version in Draft Status
Draft - New Flow version ready to be configured or updated
Flow version in Approval Status. Note the eye icon means the version is in read-only mode
Approval - Flow Draft has been submitted for approval. The version is in read-only mode
Flow version has been published and now live in Tenant
Published - Flow version has been approved and published. Your changes are now live in the Tenant

Flow Configuration

The primary way of adding a task is to click the '+' icon under the preceding task.

Add a Task to Flow Canvas

Tasks can also be added via the '+' in Quick Action Bar. This will add a task in the corner of the canvas but won't be connected to the flow of tasks. You can add this task into the flow by using the Next Task configuration, or via the Router Task (see below)

Task Name

Every Task has a Task Name. This is the friendly name displayed in the Designer

Task Key is autogenerated based on the Name initially, similar to how DataKeys are managed in Policy Configuration. The TaskKey is how this Task is referenced by other task configuration. Once the task is saved the TaskKey cannot be changed but the TaskName can.

Choose a Task Type from available list (e.g. Supergraph, HTTPInvoker, etc). Each different Task Type will have it's own Task Configuraiton. Refer to Task Definitions for a complete list of available Task Types and their configurable options.

Generally you can ignore setting Next Task as this will be automatically populated when you add a task via the '+' of the preceding tasks. Use this field when you are building a loop and you want the task the next point at a task already on the Canvas.

Variables

Flow Variables let you store reusable values like URL or API Key and reference them in multiple places in your Configuration. This way when you need when you need to change them you only have to edit in one place. Flow Variables are created in the 'Variables' tab at the top of the Designer.

Use Global Variables for values that are shared between multiple Flows or that change between environments. Global Variables can be created from the Flow Studio page.

When creating Flow and Global Variables you must give it a unique Name, Type (Text or Number or Secret), and Value.

info

Secret Variables are treated as Text but the values are encrypted within your Tenant. They cannot be viewed once created and will not appear in Flow Execution Details. Use this variable type when storing sensitive details like an API Key or Password.

Adding a Global Variable

When configuring tasks, variables can be included by wrapping them in double braces "{{variable}}". The Designer will list available variables when you enter {{. Configurable fields can be a combination of Variables and Text

Intellisense showing available variables
Intellisense showing available variables

JsonPath

When your variable is a complex type like Json or other Json-based types (e.g. Execution.State, Request, TaskError) you can include a JsonPath Query to select a sub-object or single value within the object.

JsonPath Sample
Select the entities list from FormattedResponse output of a Supergraph Task

Templated Input

Some complex Task Configuration allows for Templated Input, such as HTTP Invoker (Body), Transformer (Input), or EventIngress (Payload).

Templated Input allows you to map a Single Variable or create a Custom Definition that merges multiple variables into a template.

Templated Input - Single Variable
Templated Input - Single Variable

When configuring a Custom Definition you must first define the list of variables you want to use in the Template, giving each a friendly name.

Next in the Template field you can define a Json formatted template using static text. The variables defined above can be referenced in your template using '{{' notation. Intellisense dropdowns will list the available variables defined above.

Templated Input - Custom Definition
Templated Input - Custom Definition

Template Variables support JsonPath queries like regular fields. In the template your variables must always be ebedded using double-quotes but at runtime when the variable/Json-query is evaluated we will merge the result according to the correct datatype (e.g. text, number, object).

In the above example the resulting output would look like the following...

Template Result
{
"Entities": [
{
"id": "9023c0eb-0d2f-4618-9e74-12e4973219ee",
"type": "Company",
"isDraft": true,
"properties": {
"eventIngressType": "MDMImport",
"externalId": "jh-002-20250123",
"legalEntityName": "LexCorp Global Industries",
"companyType": "Private Company",
"addresses": [
{
"addressType": "Registered",
"country": "Canada",
"addressLine1": "1 FREDERICK ST",
"addressLine2": "15D"
}
]
}
},
{
"id": "644f5e81-ff93-43b7-a6e1-ad9ef9c96624",
"type": "Company",
"isDraft": false,
"properties": {
"externalId": "jh-002-20250123-subsid",
"legalEntityName": "Lexcorp Subsidiary"
}
},
{
"id": "12c6295f-325e-46ac-b64e-e880a21c711b",
"type": "Individual",
"isDraft": false,
"properties": {
"lastName": "Luthor",
"externalId": "jh-002-20250123-ubo",
"firstName": "Joseph (Lex)"
}
}
],
"FlowSource": {
"entityDraftId": "3ed12e7e-92c5-46f3-a4bd-f56386fe19e4",
"entityId": "9023c0eb-0d2f-4618-9e74-12e4973219ee",
"journeyId": "3fdbc884-fc08-4639-aa79-bebc3e77f9af",
"serviceName": "integrationsDataPublish",
"taskId": "482adce2-cefe-48e8-8ffc-7f5fb399f1b4"
},
"MDMTaskKey": "mdm_publish_response",
"JourneyData": {
"journeyId": "3fdbc884-fc08-4639-aa79-bebc3e77f9af"
},
"ExecId": "89df1af9-3f93-4955-9f4c-966df9bba5b7"
}