CI Application Packages

   PlatformApplicable to all products in Temenos Journey Manager.  |   All Personas |  All versions This feature is related to all versions.

Application packages are the output of the Continuous Integration pipeline that can be deployed into Journey Manager servers. Application packages are ZIP files containing a folder structure and files that define:

An application package is created by the Ant app-package task. It contains a JSON definition file (shown below), which contains references to other definition files.

Main JSON

app-package-def.json

{
  "name": "Hello World App package",
  "description": "TODO...",
  "clientCode": "maguire",
  "delivery": [
    "delivery/rest-service-delivery-def.json",
    "delivery/trash-can-delivery-def.json"
  ],
  "forms": [
    "forms/CCA-MAESTRO-AP/cca-maestro-form-def.json",
    "forms/customer-enquiry-ap/customer-enquiry-form-def.json"
  ],
  "properties": [
    "properties/property-def.json",
    "properties/property-de-def.json",
    "properties/property-def1.json"
  ],
  "connections": [
    "connections/connection-def.json",
    "connections/connection-def2.json"
  ],
  "services": [
    "services/helloworld/service-def.json"
  ]
}

Delivery Channels JSON

delivery/rest-service-delivery-def.json

{
    "name": "Hello World Delivery Process",
    "deliveryMethod": "REST Service",
    "defaultChannel": true,
    "retryDelayMins": 15,
    "serviceName":"Hello World Delivery Process"
}

This delivery service definition appears in Manager as shown below.

Forms JSON

forms/CCA-MAESTRO-AP/cca-maestro-form-def.json

This definition causes a form to be uploaded into Maestro, and subsequently be visible in Manager.

{
   "name":"Credit Card Application Maestro",
   "formCode":"CCA-MAESTRO-AP",
   "currentFormVersionNumber":"9",
   "formVersionSelector":{
         "serviceName":"A/B Testing Form Version Selector",
         "serviceVersion":1
   },
   "trackingCodeService":{
         "serviceName":"Random Tracking Number",
         "serviceVersion":1
   },
   "deliveryChannels":{
      "productionDelivery":"Hello World Delivery Process",
      "abandonDelivery":"Hello World Delivery Process",
      "validationFailureDelivery":""
   },
   "dataRetention":{
      "savedDays":30,
      "finishedDays":5
   },
   "emailConfirmation":"Confirmation and PDF Receipt",
   "formSpaces":[
      {
         "name":"Maguire",
         "anonAccess":true,
         "authAccess":true
      }
   ],
   "formVersions":[
      {
         "versionNumber":"9",
         "formDataEncryption":true,
         "formType":"Maestro Form",
         "formVersionFile":"./form-version-Credit_Card_Application_Maestro-all-2017-06-26.zip",
         "properties":[
            {
               "name":"Form Description",
               "description":"Form Description",
               "dataType":"String",
               "value":""
            },
            {
               "name":"Locale De",
               "description":"Form Description",
               "dataType":"JSON",
               "valueFile":"locale-de.json"
            }
         ],
         
         "formDataConfig":{
            "contactEmailXPath":"//ContactDetails/EmailAddress"
         }
      },
      {
         "versionNumber":"8",
         "formDataEncryption":true,
         "formType":"Maestro Form",
         "formVersionFile":"./form-version-Credit_Card_Application_Maestro-all-2017-06-26.zip",
         "properties":[
            {
               "name":"Form Description",
               "description":"Form Description",
               "dataType":"String",
               "scope":"Form",
               "value":""
            }
         ],
         
         "formDataConfig":{
            "contactEmailXPath":"//ContactDetails/EmailAddress"
         }
      }
   ]
}

The form appears in Manager as shown below.

When specifying forms, form version archive files need to be exported from Manager, saved locally, and checked into source control. They can then be referenced by a formVersionFile property in the formVersions array of the form definition JSON fil (shown above).

You can export a selected form in the Manager as shown below.

The emailConfirmation property, if specified, must be one of the following values:

  • None
  • Confirmation
  • Confirmation and PDF Receipt
  • Link to Receipt

forms/CCA-MAESTRO-AP/locale-de.json

{
    "key.de": "Brüderlich zusammenhält"
}

Properties

properties/property-def.json

{
    "name": "Email Sender Address",
    "description": "Sender email address for generated emails, overriding the global email sender address.",
    "scope": "Form",
    "dataType": "String",
    "value": "[email protected]"
}

This property appears in Manager as shown below.

Service Connections

connections/connection-def.json

{
   "name": "FIS Connection",
   "type": "HTTP Endpoint",
   "endpoint": "https://some-endpoint.com/",
   "username": "username",
   "password": "password",
   "dataFile": ""
}

After installation of the application package, the above service connection details will be available to see in Manager:

Services

services/helloworld/service-def.json

{
  "name": "Hello World Delivery Process",
  "description": "",
  "type": "Delivery Process",
  "version": 1,
  "tmMinVersion": "5.0.0",
  "parameters": [
    {
      "name": "groovyScript",
      "filePath": "HelloWorld.groovy",
      "fileIncludes": [],
      "bind": true,
      "required": false,
      "clearOnExport": false,
      "readOnly": false
    },
    {
      "name": "Unit Test Script",
      "filePath": "HelloWorldTest.groovy",
      "fileIncludes": [],
      "bind": false,
      "required": false,
      "clearOnExport": false,
      "readOnly": false,
      "unitTest": true
    },
    {
      "name": "Help Doc",
      "type": "HTML",
      "filePath": "service-help.html",
      "bind": false,
      "required": false,
      "clearOnExport": false,
      "readOnly": false
    }
  ]
}

services/helloworld/HelloWorld.groovy

import com.avoka.core.groovy.GroovyLogger as logger
import com.avoka.tm.vo.*
import javax.servlet.http.*
 
class HelloWorld {
 
    /*
     * Perform Form Dynamic Data service call.
     *
     * returns: REST response text data
     */
    String invoke(SvcDef svcDef, Txn txn, HttpServletRequest request, User user) {
 
        // TODO: replace with data lookup call
         
        String data = '''{
          "address": {
            "firstLine": "123 Wall Street"
          }
        }'''
 
        return data
    }
}

The two files above will provision Manager with a new service with the following Groovy script.

Next, learn about Continuous Integration.