The goal of this guide is to accelerate new Journey Engine developer on-boarding by providing of insights about Athena Journey Engine basic concepts, what are Out Of the Box features and how Journey Engine helps to build reusable UI components that benefit from pre-integrated Athena APIs.

This guide is not for Business Owners who use Journey Engine self sufficiency features to configure Journeys.


PlantUML SVG diagram

Roles and Lifecycle

Before deep diving into the technical details and specifications of Journey Engine, it is beneficiary to understand basic Journey Engine Solution lifecycle and different roles of persons involved in a build process.

While Athena Journey Engine provides self sufficiency and ability for a Business Owner to rapidly change Journeys, there is also “ground work” for developers to create Solution specific UI components and “creative work” for designers to create high quality pixel precise layouts and designs.

Components And Panels

Reusable UI components are created by Developers and then are used by Business Owner as building blocks to configure Pages, Panels, navigation, validation logic.

PlantUML SVG diagram


For Journey Builder to be able to discover available Data structures and Building blocks, it is necessary to have a Journey metamodel which defines building block and data structure availability.

PlantUML SVG diagram

Attribute Sets and Product Interaction

Journey Data Model is defined and maintained by Developers and is used by Business Owner to define data binding to UI Components and API calls.

PlantUML SVG diagram

Self sufficiency

One of Athena core features is complete Business Owner’s self sufficiency. Solution build environments does not have any hard dependencies to Athena infrastructure. Even Journey Builder itself can be extended and Business Owner has full control over not only Journeys build process, but also all the Toolchain used in a build. This step however is not required if Out Of the Box Core Journey Builder is sufficient to Build the Journeys.

PlantUML SVG diagram

Athena Journey engine basic concepts

Attribute Sets

Attributes Sets are pre-defined Interfaces that Journey can reuse to store data for a particular Line Of Business or Region financial product. Interfaces are used by Out Of the Box available integrations to set expectations about data structures that are accepted as an input and data structures that are returned as a result.

Keep in mind that these Attribute Sets are good starting points and provide sensible initial model so that it is easier to start building a new Journey. They are not meant to be “works for all” data structures. It is very easy to add, extend and customize Attribute Sets, to achieve data model that best suits your business requirements.

Out Of the Box available Attribute Sets

PlantUML SVG diagram

Attribute Set Description
Core Core attributes to support persistence, product versioning and system component execution technical state.
UIState Journey engine User Interface navigation state.
BusinessRulesState Underwriting engine Business rule execution result state.
User Registered or Anonymous User state.
Person Set of reusable Person attributes.
Address Set of reusable Address attributes.
AddressUK UK address specific attributes.
Property Attribute Sets describing Property object.
Vehicle Attribute Sets describing Vehicle object.
InsurancePrivateTravel Attribute Sets to describe Insurance Private Travel product.
InsurancePrivateMotor Attribute Sets to describe Insurance Private Motor product.
InsurancePrivateContents Attribute Sets to describe Insurance Private Contents product.
InsurancePrivateHealth Attribute Sets to describe Insurance Private Health product.
BankingPrivateLoan Attribute Sets to describe Banking Private Loan product.
BankingSMELoan Attribute Sets to describe Banking Small and Medium Enterprise Loan product.

Product Interaction

Product Interaction (PI) is a data container that contains all the information entered by the User as well as any other data necessary to store user interface state (such as navigation or UI element display state for example) as well as service call response state.

Product Interaction implements Attribute Sets specific to a Line of Business (LOB) and Region of a financial product. It is unlikely for PI to implement multiple LOB specific interfaces unless it is a “combined product”.

Every time Journey is opened Journey Engine either creates new Product Interaction or loads existing One.

It is a valid assumption to compare Product Interaction to basic, flat data container or Map based web session, that is persisted in NoSQL backend, where it can later on can be analysed (since it is structured) or where from it can be loaded to reclaim interrupted Journey state.

Product Interaction is defined not on per Organization but per Product/Region/Whitelabel.

For example if Company main brand is GreatCompany and it has Motor and Travel products and operates in UK, then it is recommended to name Product Interaction as PIGreatCompanyMotorTravelUK. If the GreatCompany decides to launch whitelabel AffordableCare and sell Health product in France, then it is recommended to name Product Interaction PIAffordableCareHealthFR.

PIGreatCompanyMotorTravelUK example

PlantUML SVG diagram

PIAffordableCareHealthFR example

PlantUML SVG diagram

Journey meta-model

PlantUML SVG diagram

Class Description
Journey Defines default breadcrumb for all Pages. References pages and sets page order in Journey. Defines set of reusable Conditions.
Page Can define Page specific Breadcrumb, Page level Actions, Question Groups and layout Panels.
Breadcrumb Breadcrumb defines top level breadcrumb for all pages or for a particular page specifically. Display conditions can be used to Show/Hide Journey level Breadcrumb.
Group Used to logically group questions on a page to avoid code duplication, when common styling/security or display conditions must be applied to multiple Questions/Responses.
Panel Used to define Page layout to make sure that Questions and Responses appear in a proper part of a screen. Panels also contains all of a page static resources, such as banners, footnotes, logos, etc.
Question Information that is asked for User to enter. Binds to one or multiple Product Interaction attributes.
Response Static or read only information that can not be changed and is manually entered during Development or is received form API.
Navigation Navigation elements such as Buttons and Links. Executes Actions bound to these UI widgets.
Condition Set of reusable Conditions defined on a Journey level and used in Breadcrumbs, Groups, Questions and Responses to enable Show/Hide and entered data format validation conditions.
Action Binds Action to execute to Page/Question, Event and Command.
Event Type of Event that would trigger the execution of Commands associated with Action. Out of Box available events are init, continue, click, valueChanged.
Command Command to execute when bound event occurs. Out of The Box available Commands are createQuote, editQuote, enterPayment, convertToPolicy, setValue, redirect, createDocument, saveInteraction, loadInteraction.
Security Define which Role can Read/Write a particular UI element. Can be used to tailor Role specific UI experience. Out Of the Box available Roles are ANONYMOUS, USER, AGENT, ADMIN. Out Of the Box available Operations are READ and WRITE.

Product configuration

Product configuration defines set of Business Processes and how they relate to Journey and Product rating/pricing/underwriting models.

Based on when Product Interaction for a particular Business Process is last converted to a Quote, Journey engine will open Journey UI definition of a particular date and time when Quote was created and will use a Product rating/pricing model version that was used to create a binding Quote.

In case if Product Interaction is not yet initialised Journey and Product version is determined by ProcessId and ProductId passed on in a URL by finding of ProductVersion with newest dateFrom.

PlantUML SVG diagram

Journey Page up on leaving, if there are any changes in Questions answered detected, will prompt/warn user that Journey engine will use latest version of a Product Model and Journey and that binding Quote created will be not any more valid.

To avoid this behavior Questions must be explicitly marked as non-breaking changes while setting up a Journey.


To make sure that all changes (to Journey, Attribute sets, Interaction and Product Configuration) are deployed altogether, changes are collected in Workspace and are deployed in batches.

Workspace changes can be fast tracked or put through code review process if necessary.

Workspace is created every time when user starts editing of or creates a new Journey, Interaction or Attribute Set.

There are two default workspaces, develop and master. develop workspace represents what will be installed in next release, master workspace is what is currently installed in production.

To start editing of journey, interaction or configuration User has to select develop workspace as a starting point.

Journey Engine Runtime API

Deployed in Runtime environments. Provides deployed read only journey configurations.

Journey Builder Configuration API

Deployed in Edit environments. Allows to modify journey configuration.

Edit mode

Journey Engine shares same UI element rendering engine in both Edit mode and Runtime node. There are three additional panels available in Edit mode

  • Workspace - to select and manage currently open workspace
  • Questions - to add remove and navigate Journeys and Questions
  • Details - to change and enter Question and Journey element settings

Runtime mode

Journey engine is deployed without editing panels and Workspace APIs.


Templates are used to map Attribute set types to predefined Pages in a Journey type on per Financial product basis.

Out of the Box supported Journey types are New Business, Midterm Adjustment, Midterm Cancellation.

Out of the Box supported Financial products are Motor, Home, Contents and Health.

When creating a new Journey, user is prompted, which Journey type it is and which Financial Product it needs to support. As a result User is presented with already working Journey that can be modified if necessary.

Mapping adapters

Journey Engine is pre-integrated with a number of Systems of the Record. In case if it needs to be integrated with new product in a existing System of the Record or new System of the Record it is necessary to provide a mapping from Attribute sets of Interaction to the fields of structure in System of the record. As an alternative Mapping adapter should be specified to handle these mappings.

Out Of the Box features

Security and User identity

If journey page is marked as secure, in case if session is not authorised, user is automatically prompted by Single Sign-On service to enter username and password.

Journey engine also supports Single Sign-Off. In case if users session in SSO service is expired it will automatically call Journey engine to notify that user have been logged off.

SSO service also facilitates Social Media Identity brokering. When signing up Users can choose to use their Social
Identity, that can be later on used to authenticate user.

When Authenticated SSO service provides additional information about a user (Roles,Email,etc.) in JSON Web Token. Role information can be later on used to provide custom user experience for different user Roles and also pre-fill interaction field values.


Brokers or Agents can load User sessions to assist with completion of a Journey. Additional questions and logic can be applied if Journey is in impersonation mode.

Save for later

Journeys can be interrupted and resumed afterwards by clicking “resume link”.

Financial product lifecycle support and product versioning


During a life time of a financial product there can be fundamental breaking changes to journey execution logic:

  • adding or removing questions from financial product in calculation model
  • adding, removing changing business rule logic in financial product in calculation model
  • financial product premium, cover, add-on, etc. calculation formula changes in calculation model

Changes are considered breaking if it is necessary to support multiple versions of underlying financial product.

Solution options

There are two fundamental directions that developer can take when breaking changes occur:

Option 1

  • add display logic (check product version) to show hide affected questions, load different drop down values, execute different client/server side field value validation logic
  • add business rule execution logic (check product version) to execute less or more business rules before allowing user to proceed to next page or complete the action
  • add decision logic in Journey to call different version of back-end policy admin APIs or provide financial product version information in the call

Option 2

  • deploy multiple versions of journey and provide configuration for Interaction to financial product version mapping
  • deploy multiple versions of Product API (with different Attribute Set versions)
  • deploy multiple versions of Journey API (with different Journey meta-model versions)

Athena Journey engine supports product configuration, where it is possible to setup business processes configurations by specifying set of matching journey and product versions.

To avoid Version Hell (where there are hundreds of Journey versions and next release might produce invalid state, when old and new Journey versions are updated at a same time) Journeys are versioned manually rather than automatically (version per release). What means that developer decides if there are breaking changes and bumps Journey version in Journey Builder manually.

Athena allows to deploy and maintain multiple Product API and Journey API versions at a same time and provides meta-data information about which versions are deployed, so that Developer, when building a Journey can choose, which Product API and Journey API are compatible with a Journey.

User usage pattern tracking (heat maps)

Usage analytics

Data mining and automatic pre-loading

Every time user transitions to a next page all user related information is stored in NoSQL storage. Later on data can be analysed to discover user relations and pre-populate interaction fields if Journey engine identifies that matching Interaction fields has been specified before. w

Scaling and performance


There are no long living memory intense web sessions. All UI state is stored in Interactions persistent NoSQL storage.


Journey engine can be scaled horizontally without any additional configuration. All journey engine instances share same NoSQL Interaction storage and are disposable. It is however recommended to maintain user to node relationship through persistent load balancer cookie strategy, since web session is authorized on a particular node instance only.


There is no permanent persistent data stored on a node instance.

Getting started

In case if this is first Journey being created, it is necessary to run athena-templates create journey-runtime command to create custom runtime core project as well as to run athena-templates create journey-model to create project where all Journey models will be stored.

To create new Journey model it is necessary to run athena-templates create <journey-template-id> command. This will add Journey model to solution Journey model project.

Custom look and feel

Custom look and feel styles, panels and other UI components are defined in journey runtime projects. For example to have a whitelabel with a different look, feel and unique set of UI controls, in solution it is necessary to create another journey-runtime project and then deploy it as a separate instance.

In case if solution has set of common custom UI components it is necessary in solution to create a common runtime project. And source common controls from there in a same way how they are sourced from core runtime.

Available Question and Response controls

Out of The Box available Controls to build a Journey.

Questions are used to gather information necessary to provide an Offer to a Consumer.

Question Description
text Plain text and number input.
date Date/Time picker.
textArea Multi line text input.
yearAndMonth Year and month input.
singleChoice Choice with one answer.
singleImageChoice Choice to select one image.
yesNoChoice Choice to select boolean answer.
checklistChoice Choice to select multiple answers.
dropDownChoice Choice to select multiple answers from a list.
slider Select a range of applicable values.
healthQuestionerChoice Health condition questioner.
findVehicle Finds vehicle make, model and variant by registration number.
findAddress Find address details by postcode.
bodyMassIndex Calculates body/mass index.
addonSelection Allows to select cover add-ons.
travellers Traveller information.
sortCode Direct debit bank account details.
documentUpload Upload new documents and associate them with this Interaction.

Response controls are read-only fields that mostly show information that is retrieved from a server (such as Premium calculated, etc.)

Response Description
label Simple label.

For more detailed information about a particular Question or Response and parameters they accept, please refer to documentation in Journey Builder.

Available Events and Commands

When the Event occurs it executes a Command which results in either page data refresh, API call or navigation to another page.

Out of The Box available Events and Commands.

Event Description
init Fired when control or page is first loaded.
valueChanged Fired when User has changed Question Value and have left focus of the control.
click Fired when user clicks on a Control.
continue Fired when user navigates away from a Page.
Command Description
createQuote Convert Interaction to Quote in a System of Record.
editQuote Update/recalculate Quote in a System of Record from the current Interaction.
enterPayment Call after a successful payment gateway transaction.
convertToPolicy Convert Quote associated with this Interaction into a Policy.
setValue Manipulate Interaction property value.
redirect Navigate to a different page.
createDocument Create/Send document (file, email).
saveInteraction Explicitly save interaction or create new interaction.
loadInteraction Load interaction.

For more detailed information about a particular Command and parameters it accepts, please refer to documentation in Journey Builder.