This project contains Informatica IICS CAI Fault alert Service Implementation and Secure Agents Status Monitoring service Implementation. Provided Fault Service allows to apply declarative Alert Rules and flexible framework to use any of the built-in or custom Actions
- Uncaught Fault Alert Service Implementation
- UncaughtFaultAlertHandler Process
- Agent Monitor Alert Process
- Features
- Overview
- Installation
- Alert Service Components
- Setup Gist Connector and Connection
- Fault Alert Handler Configuration
- Extending Alert Service
- Glossary of Terms used in this Documents
- Declarative extensible configuration providers (currently supports github gist, http(s) get, local file)
- Declarative rules to route message to specific actions with flexibility to add custom actions (event triggers via JMS, AWS SQS, Kafka)
- Declarative Actions currently supported
- ignore
- alert-email
- Ability to Save/read configuration in xml on simple http get provider or github gist or similar snippet storage
- Other configuration storage and action providers should be possible to develop via ICAI Service Connectors
- Guide based configuration manager
The Alert Service is available for processes that run on a Secure Agent or the Cloud Server. Alert Service provides a mechanism to send alert notifications via built-in email notification service or define custom Alert Handler Process.
This project is also a good example how to maintain, build and deploy Informatica IICS project with automation and version control and help of IICS Asset Management CLI V2 Utility
See Alert Service Documentation See IICS Asset Management CLI V2 Utility
It is highly recommend to use the build from source as it allows you to change certain attributes of service deployment such as target Secure agent group, etc. To build and install from source, you'll need a following set of tools
- git client installed on your system
- Java 1.8 or higher installed on the System
- Apache Ant 1.9 or higher installed on the system or use Informatica Process Developer which includes Ant runtime
- Informatica Process Developer
You can follow this guide Set Development Environment for IPD Development to setup your environment
See Guide to Install Process Developer
In Order to Setup this Service after Deployment of assets Storage providers all provided Storage provider Connectors and Connections must be configured. You can Select One of the Supported providers (GitHub, GitLab) And configure it with corresponding access token. The other unused providers must be still published, but can be published with empty credentials. Follow the below steps for setting Storage Provider Accounts
Make sure your secure agents can access the GitHub API to store and retrieve the Alert Service configuration file.
This Alert Service Implementation can use Github Gist (both Cloud and On premise Github Enterprise Edition) as a storage for its configuration It is recommended to use private gist to store this configuration, you will need to create Security token to access private gists via API
-
Login to Github with an account that would be owner of the configurations (this should be likely service Account or account managed by IT Infrastructure administrators)
-
Go to Account Settings/Developer Settings/Personal access tokens
-
Create new token and give it descriptive name such as
IICS-Configuration-Gist-Access
-
Select only gist permission
-
Capture generated token and save it in a save location for later use in the Service Connector configuration after Deployment of the IICS package
Make sure your secure agents can access the GitLab API to store and retrieve the Alert Service configuration file.
This Alert Service Implementation can use Cloud Hosted or on-premise GitLab as a storage for its configuration It is recommended to use private snippets to store this configuration, you will need to create Security token to access private Assets via API
-
Login to GitLab with an account that would be owner of the configurations (this should be likely service Account or account managed by IT Infrastructure administrators)
-
Create new token and give it descriptive name such as
IICS-Configuration-API-Access
-
Optionally set expiration date
-
Select api access permission
-
Capture generated Token and use it to configure GitLab Service Connector
Fork and clone this repository
Following is a clone command example, use your own repository url if you have forked this repository.
git clone git@github.com:jbrazda/icai-fault-alert-service.git
Main configuration file defines key modules locations and enables/disables supporting Tools maintained externally as a dependency.
Example main Configuration file (build.properties)
# lib path
tools.lib=${basedir}/target/lib
#IICS Asset Management CLI
# See https://network.informatica.com/docs/DOC-18245
tools.iics.mac=${tools.lib}/iics
tools.iics.linux=${tools.lib}/iics
tools.iics.win.x86=${tools.lib}/iics.exe
tools.iics.win.amd64=${tools.lib}/iics.exe
## url.download.iics - OS Specific URL
url.download.iics.mac=https://github.com/InformaticaCloudApplicationIntegration/Tools/raw/master/IICS%20Asset%20Management%20CLI/v2/mac-x86_64/iics
url.download.iics.win=https://github.com/InformaticaCloudApplicationIntegration/Tools/raw/master/IICS%20Asset%20Management%20CLI/v2/win-x86_64/iics.exe
url.download.iics.win.x86=https://github.com/InformaticaCloudApplicationIntegration/Tools/raw/master/IICS%20Asset%20Management%20CLI/v2/win-i386/iics.exe
url.download.iics.linux=https://github.com/InformaticaCloudApplicationIntegration/Tools/raw/master/IICS%20Asset%20Management%20CLI/v2/linux-x86_64/iics
## URLs to Download IICS Migration and Reporting Tools Modules
url.download.iics.tools.transform.archive=icai_migration_tools.zip
url.download.iics.tools.transform=https://raw.githubusercontent.com/jbrazda/icai-migration-tools/master/dist/${url.download.iics.tools.transform.archive}
url.download.iics.tools.reporting.archive=v1.1.zip
url.download.iics.tools.reporting=https://github.com/jbrazda/iics-reporting-tools/archive/${url.download.iics.tools.reporting.archive}
## Directories for IICS Tools Module Installations
iics.tools.dir.reporting=${tools.lib}/reporting
iics.tools.dir.transform=${tools.lib}/transform
## Defines directory used for Downloads
tools.download.dir=${user.home}/Downloads
## IICS Script tool Modules
tools.package.transform=${iics.tools.dir.transform}/build.xml
tools.package.reporting=${iics.tools.dir.reporting}/build.xml
#Disable Use of Individual Modules
tools.reporting.disabled=false
tools.transform.disabled=false
## Configure your IICS org region. For example, us, eu, ap
iics.region=us
# these properties are for future use (not used at this time)
saxon.lib=${basedir}/target/lib
saxon.class=org.activebpel.rt.bpel.ext.expr.impl.xquery.AeQuery
Example file is listed below.
recommended location is your home directory/iics ~/iics/iclab.properties
as it will contain sensitive information.
I would also recommend to create Native IICS Service user in each of your orgs that can be used to export/import resources via IICS REST API using the IICS Asset Management CLI
This tool will automatically download latest version an use it to import provided service to your target org
# This file should contain properties for Each environment
# defined in the associated release properties file property iics.environment.list
#
# DEV Environment Credentials
iics.user.dev=deployer-iics-dev@acme.com
iics.password.dev=SET_PASSWORD
# TEST Environment Credentials
iics.user.test=deployer-iics-test@acme.com
iics.password.test=SET_PASSWORD
# PROD Environment Credentials
iics.user.prod=deployer-iics-prod@informatica.com
iics.password.prod=SET_PASSWORD
WARNING Never put these properties into the project folder and keep this property file in a secure location ideally
~/iics/iclab.properties
The~/iics
folder should be accessible only by user running the import/export/publish tasks (use '700' permission on unix systems)
Update existing or copy conf/iics.release.properties file which defines a key Environment specific parameters
# define a comma separated list of environment org labels such as
# dev,test,uat,prod
iics.environment.list=dev,test,prod
# This property points to file which contains credentials to login to individual environments
# and other environment Specific properties
# we recommend to use ${user.home}/iics protected directory
# never commit this file to version control with this project as it contains credentials to your IICS Orgs
# the iics.external.properties must contain set of properties
# following this naming convention for each environment defined in the iics.environment.list
# iics.user.${environment}=
# iics.password.${environment}=
# iics.transform.properties.${environment}=
iics.external.properties.dir=${user.home}/iics
iics.external.properties=${iics.external.properties.dir}/iclab.properties
# this query is used by iics list command to retrieve available sources from repository
# to extract the designs from IICS
# see https://network.informatica.com/docs/DOC-18245#jive_content_id_List_Command
iics.query=-q "location==Alerting"
# Defines the output file for the list command
# the output location will be driven by the following expression
# ${basedir}/target/${selected.release.basename}/export/${iics.source.environment}/${iics.list.output}
iics.list.output=export_list.txt
# Defines the output file name for iics export command
# the output location will be driven by the
# ${basedir}/target/${selected.release.basename}/export/${iics.source.environment}/${iics.export.output}
iics.export.output=FaultAlertService.zip
# Defines Output File name without extension
# the package.src will produce file in the location based on following expression
# ${iics.package.output}_${iics.release.basename}_${iics.target.package.config.basename}.zip
iics.package.output=FaultAlertService
# Defines Extract output directory for iics extract command
iics.extract.dir=${basedir}/src/ipd
# Defines transform directory used to copy sources from iics.extract.dir to allow pre-processing and source transformations before package.src target is called
transform.src.folder=${basedir}/target/transform/src
# Defines temporary folder used by transformation pre-processing steps such as set suspend on fault
transform.temp.folder=${basedir}/target/transform/temp
Often some on-the-fly Design transformations may be desired to simplify deployment steps and automate some migration changes to deployed designs These include following types of changes
- Migrate process from Cloud to specific Secure Agent or Agent Group
- Migrate process from Agent to Cloud
- Set Process Tracing levels
- Set Process Suspend on Fault
This set of build scripts contains optional Scripts Module Which contains set of xslt scripts which can be applied to selected designs before packaging and deployment/import to target org This module is maintained in a separate github project icai-migration-tools Script will automatically download migration tools and run the transformations steps.
When you want to use this optional step of build and deployment you will need to specify transform.properties
which configures which transformation steps will be executed on specified design objects
# MOVE Process to Cloud
# ---------------------
# Set this property to Enable/Disable Transform Step
ipd.migrate.processes.to.cloud.enabled=false
# use this property to include specific processes or use Ant pattern expressions.
# migrate.processObjects.enabled=true is set
ipd.migrate.processes.to.cloud.include=*.PROCESS.xml
# you can exclude specified files from tar
ipd.migrate.processes.to.cloud.exclude=*-1.PROCESS.xml
# MOVE Processes to Agent
# -----------------------
# Set this property to Enable/Disable Transform Step
ipd.migrate.processes.to.agent.enabled=true
# specify target Agent Name or Agent Group Name to Migrate to
ipd.migrate.processes.to.agent.name=DEMO
# Use this property to include specific processes or use Ant pattern expressions.
# This property is required when migrate.processObjects.enabled=true is set
# ipd.migrate.processes.to.agent.include=Explore/Tools/Processes/SP-Shell-CMD.PROCESS.xml
ipd.migrate.processes.to.agent.include=**/*NA.PROCESS.xml
# you can exclude specified files from migration
ipd.migrate.processes.to.agent.exclude=**/SCH-*.PROCESS.xml
# SET Process Tracing Levels
# -----------------------
# Set this property to Enable/Disable Transform Step
ipd.migrate.processes.tracingLevelUpdate.enabled=true
# List of tracing levels to be processed
# this is an example to process all levels when you want to set levels on any selected processes
# ipd.migrate.processes.tracingLevelUpdate.levels=none,terse,normal,verbose
# note that each supported tracing level must have incudes/excludes defined
# Following example setting will set all processes tracing level to None
ipd.migrate.processes.tracingLevelUpdate.levels=verbose
# Includes Excludes for each level
# Use this property to include specific processes to get their Logging levels updated
# Use relative path reference starting from $basedir or use Ant pattern expressions.
# This property is required when migrate.processObjects.enabled=true is set
ipd.migrate.processes.tracingLevelUpdate.none.includes=**/*.PROCESS.xml
ipd.migrate.processes.tracingLevelUpdate.none.excludes=
ipd.migrate.processes.tracingLevelUpdate.terse.includes=nothing
ipd.migrate.processes.tracingLevelUpdate.terse.excludes=**/*.xml
ipd.migrate.processes.tracingLevelUpdate.normal.includes=nothing
ipd.migrate.processes.tracingLevelUpdate.normal.excludes=**/*.xml
ipd.migrate.processes.tracingLevelUpdate.verbose.includes=**/*.PROCESS.xml
ipd.migrate.processes.tracingLevelUpdate.verbose.excludes=nothing
# SET Process Suspend On fault
# -----------------------
# Set this property to Enable/Disable Transform Step
ipd.migrate.processes.tracingLevelUpdate.execute=false
#includes/excludes for processes to enable suspendOnFault
ipd.migrate.processes.suspendOnFault.true.execute=true
ipd.migrate.processes.suspendOnFault.true.includes=**/*.PROCESS.xml
ipd.migrate.processes.suspendOnFault.true.excludes=
#includes/excludes for processes to disable suspendOnFault
ipd.migrate.processes.suspendOnFault.false.execute=true
ipd.migrate.processes.suspendOnFault.false.includes=none
ipd.migrate.processes.suspendOnFault.false.excludes=**/*.PROCESS.xml
#remove Specific tags based on pattern
ipd.migrate.removeTags=false
ipd.tags.remove.include=**/*.xml
ipd.tags.remove.exclude=
ipd.tags.remove.tagMatchPattern=(,)?(GIT:\w+)
This tool uses ant to build/ download and deploy IICS package
Following is a list of available targets which you can retrieve by running ant -projecthelp
in the root of this repository
ant -projecthelp
Buildfile: /Users/jbrazda/git/icai-fault-alert-service/build.xml
IICS CAI Component Build Script
Main targets:
clean.release Deletes Export/import temporary files in ${basedir}/target/${iics.release.basename}
download.src Downloads Designs From Source Environment Org using iics Export utility
help help - describes how to use this script
import Imports package for a select Environment and Package Configuration
package.src Builds Package for specified target environment from ${basedir}/src/ipd
publish Publishes Objects Defined in the Configuration Files
update.src Updates design sources directory for a Source Environment Org using iics Export/Extract utility
Default target: help
Open new empty Eclipse Workspace in {USER_HOME}/workspace/icai-fault-alert-service
Switch to Process Developer Perspective
Import Cloned repository project as an existing project (assuming you cloned the project to your {USER_HOME}/git folder)
Select Your Exported Git Repo root folder and finish import
Open the Ant View using Window > Show View > Other
Reposition Ant View to a tab below Project Explorer and drag build.xml to Ant runner View
Run The package.src Target, Select the Release configuration from conf directory and Confirm
Select target Environment
Select Package Configuration. This step allows to select configuration file that drives what's included/excluded in the target deployment package.
Use the all_designs.package.txt
for initial import only (it includes connections and connectors)
Use the all_exclude_connections.package.txt
for Subsequent builds and updates (it excludes connections and connectors)
Script will generate Package using an iics tool downloaded from GitHub into a folder
defined by following expression ${iics.package.output}_${iics.release.basename}_${iics.target.package.config.basename}.zip
Import package using an import
target of ant script
Publish imported resources using a publish
target of ant script
Buildfile: /Users/jbrazda/git/icai-fault-alert-service/build.xml
-init:
-env.info:
[echo] ========================================
[echo] == IPD Bundle Build ==
[echo] ========================================
[echo] Java Version: 1.8.0_162-b12
[echo] Java Home: /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/jre
[echo] Ant Version: Apache Ant(TM) version 1.8.4 compiled on May 22 2012
[echo] Ant Lib: /Applications/eclipse_kepler/plugins/org.apache.ant_1.8.4.v201303080030/lib
[echo] eclipse.home: ${eclipse.home}
[echo] shell: bash
[echo] os.name: Mac OS X
[echo] os.version: 10.14.6
[echo] os.arch: x86_64
[echo] user.name: jbrazda
[echo] user.dir: /Users/jbrazda/git/icai-fault-alert-service
[echo] user.home: /Users/jbrazda
[echo] env.HOME: /Users/jbrazda
[echo] env.LANG: en_US.UTF-8
[echo] env.SHELL: /bin/zsh
[echo] env.PATH: /usr/bin:/bin:/usr/sbin:/sbin
[echo] env.JAVA_HOME: /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
[echo] ========================================
-select-release:
[echo] Available Release Configurations:
[echo] =================================
[echo] /Users/jbrazda/git/icai-fault-alert-service/conf/iics.release.properties
[echo] =================================
-set-release-properties:
[echo] Selected Release Configuration: iclab-dev.release
[echo] Selected File: /Users/jbrazda/git/icai-fault-alert-service/conf/iics.release.properties
-load.release.properties:
[echo] Loading /Users/jbrazda/git/icai-fault-alert-service/conf/iics.release.properties
[echo] Loading External properties (credentials) from /Users/jbrazda/iics/iclab.properties
[echo] TODO: Add Inputs Validation
-select-target-environment:
[echo] Selected Target Environment: dev
-set-target-properties:
-select-package-config:
[echo] Available Target Package Configurations:
[echo] ========================================
[echo] /Users/jbrazda/git/icai-fault-alert-service/conf/all_designs.package.txt
[echo] /Users/jbrazda/git/icai-fault-alert-service/conf/all_exclude_connections.package.txt
[echo] ========================================
[echo] Selected Target Package Configuration: all_designs.package
[echo] Selected File: /Users/jbrazda/git/icai-fault-alert-service/conf/all_designs.package.txt
iics.package:
[mkdir] Created dir: /Users/jbrazda/git/icai-fault-alert-service/target/iclab-dev.release/import/dev
[echo] Running iics package -z "/Users/jbrazda/git/icai-fault-alert-service/target/iclab-dev.release/import/dev/FaultAlertService.zip" -w "/Users/jbrazda/git/icai-fault-alert-service/src/ipd" -f "/Users/jbrazda/git/icai-fault-alert-service/conf/all_designs.package.txt"
[exec] ďż˝[36mINFOďż˝[0m[0000] IICS CLI Version ďż˝[36mVersionďż˝[0m=2.0.0
[exec] ďż˝[36mINFOďż˝[0m[0000] Reading artifacts from file ďż˝[36mFileďż˝[0m=/Users/jbrazda/git/icai-fault-alert-service/conf/all_designs.package.txt
[exec] ďż˝[36mINFOďż˝[0m[0000] Gathered artifacts ďż˝[36mArtifactsďż˝[0m="[Explore/Alerting.Project Explore/Tools.Project]"
[exec] ďż˝[36mINFOďż˝[0m[0000] Packaging artifacts ďż˝[36mWorkspace Directoryďż˝[0m=/Users/jbrazda/git/icai-fault-alert-service/src/ipd
[exec] ďż˝[36mINFOďż˝[0m[0000] Artifact verification complete ďż˝[36mResultďż˝[0m=true
[exec] ďż˝[36mINFOďż˝[0m[0000] Copying artifacts to temp folder
[exec] ďż˝[36mINFOďż˝[0m[0000] Creating checksum fil
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{Project Explore/Alerting.Project.json Explore/.Alerting.Project.json Explore/Alerting.Project }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting.Project.json=7BFFC629A0012621C1C69CA78164E64425BE2B78FC303FEEB19E66F5379A2FAF\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{Folder Explore/Alerting/Connections.Folder.json Explore/Alerting/.Connections.Folder.json Explore/Alerting/Connections.Folder }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/Connections.Folder.json=F2784716473469144FB23D8924CA1B617711119189CEF67DEC4A5F774FD8C669\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{AI_CONNECTION Explore/Alerting/Connections/AWS-SQS-Alerts.AI_CONNECTION.xml Explore/Alerting/Connections/.AWS-SQS-Alerts.AI_CONNECTION.json Explore/Alerting/Connections/AWS-SQS-Alerts.AI_CONNECTION }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/Connections/AWS-SQS-Alerts.AI_CONNECTION.xml=A69D2AA73E070569E46F7162067124EADA9E1000957AF99CEFE5BF8C41713AD8\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{AI_CONNECTION Explore/Alerting/Connections/Email-Alerts.AI_CONNECTION.xml Explore/Alerting/Connections/.Email-Alerts.AI_CONNECTION.json Explore/Alerting/Connections/Email-Alerts.AI_CONNECTION }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/Connections/Email-Alerts.AI_CONNECTION.xml=EF7F629C07FA84D8264B76A108047949B548106C733C404A47E5D6BD899466DB\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{AI_CONNECTION Explore/Alerting/Connections/github-gist-alert-configuration.AI_CONNECTION.xml Explore/Alerting/Connections/.github-gist-alert-configuration.AI_CONNECTION.json Explore/Alerting/Connections/github-gist-alert-configuration.AI_CONNECTION }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/Connections/github-gist-alert-configuration.AI_CONNECTION.xml=EF6ACE796F14F96BBC642F67BF7F951C208AF066B95BB1F30531D49C64EAE49B\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{Folder Explore/Alerting/Guides.Folder.json Explore/Alerting/.Guides.Folder.json Explore/Alerting/Guides.Folder }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/Guides.Folder.json=437C4685A6D5F0E038BBA4A9E5834A121CA51B6F58350E87BF5ABBCEF76FE3B4\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{GUIDE Explore/Alerting/Guides/Alert Configuration Manager.GUIDE.xml Explore/Alerting/Guides/.Alert Configuration Manager.GUIDE.json Explore/Alerting/Guides/Alert Configuration Manager.GUIDE }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/Guides/Alert\\ Configuration\\ Manager.GUIDE.xml=738F2CB94C551271D6778800D034EC57CFAB37F8B9C2E727EC2D3CF4F0726700\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{Folder Explore/Alerting/ProcessObjects.Folder.json Explore/Alerting/.ProcessObjects.Folder.json Explore/Alerting/ProcessObjects.Folder }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/ProcessObjects.Folder.json=0AC3F26AFD1F29AD01F01A9E1E863E841775A7489A1E0AA5A2F8A27D885CBB11\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{PROCESS_OBJECT Explore/Alerting/ProcessObjects/FaultAlertConfiguration.PROCESS_OBJECT.xml Explore/Alerting/ProcessObjects/.FaultAlertConfiguration.PROCESS_OBJECT.json Explore/Alerting/ProcessObjects/FaultAlertConfiguration.PROCESS_OBJECT }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/ProcessObjects/FaultAlertConfiguration.PROCESS_OBJECT.xml=BDBA43D49F3FEF597389B9188B8541EF67B64FDB442131B71D33C357A2D24B73\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{PROCESS_OBJECT Explore/Alerting/ProcessObjects/action-email.PROCESS_OBJECT.xml Explore/Alerting/ProcessObjects/.action-email.PROCESS_OBJECT.json Explore/Alerting/ProcessObjects/action-email.PROCESS_OBJECT }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/ProcessObjects/action-email.PROCESS_OBJECT.xml=CC6AA1318BD4064EA992832D879C5DF3D6CBE1036DFA0F15E0330EE1F4BC3C99\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{PROCESS_OBJECT Explore/Alerting/ProcessObjects/action-ref.PROCESS_OBJECT.xml Explore/Alerting/ProcessObjects/.action-ref.PROCESS_OBJECT.json Explore/Alerting/ProcessObjects/action-ref.PROCESS_OBJECT }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/ProcessObjects/action-ref.PROCESS_OBJECT.xml=3057210CAD08BD2EA097855A6E214BE824C1CC6B7B3E0FDD83C01FA5CDCBA27B\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{PROCESS_OBJECT Explore/Alerting/ProcessObjects/action.PROCESS_OBJECT.xml Explore/Alerting/ProcessObjects/.action.PROCESS_OBJECT.json Explore/Alerting/ProcessObjects/action.PROCESS_OBJECT }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/ProcessObjects/action.PROCESS_OBJECT.xml=0481F5D60A70E15C77F308F136B2D98B58673CEDE4C66A56A17E681B4096D1E4\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{PROCESS_OBJECT Explore/Alerting/ProcessObjects/actions.PROCESS_OBJECT.xml Explore/Alerting/ProcessObjects/.actions.PROCESS_OBJECT.json Explore/Alerting/ProcessObjects/actions.PROCESS_OBJECT }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/ProcessObjects/actions.PROCESS_OBJECT.xml=3666DE9E95998F8E13105C8D9447D1EC12D56E805052EA1402F07574BDB2300F\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{PROCESS_OBJECT Explore/Alerting/ProcessObjects/alert-config.PROCESS_OBJECT.xml Explore/Alerting/ProcessObjects/.alert-config.PROCESS_OBJECT.json Explore/Alerting/ProcessObjects/alert-config.PROCESS_OBJECT }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/ProcessObjects/alert-config.PROCESS_OBJECT.xml=2C409F6423B125F6946D97807EF16FB3EB4F805898A9F757C32B8548177CC98D\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{PROCESS_OBJECT Explore/Alerting/ProcessObjects/condition.PROCESS_OBJECT.xml Explore/Alerting/ProcessObjects/.condition.PROCESS_OBJECT.json Explore/Alerting/ProcessObjects/condition.PROCESS_OBJECT }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/ProcessObjects/condition.PROCESS_OBJECT.xml=D5A4F4298552F13F42D940DA2F40D370D6464A1A9A12FA16B8A4EC5B15A55480\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{PROCESS_OBJECT Explore/Alerting/ProcessObjects/rule.PROCESS_OBJECT.xml Explore/Alerting/ProcessObjects/.rule.PROCESS_OBJECT.json Explore/Alerting/ProcessObjects/rule.PROCESS_OBJECT }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/ProcessObjects/rule.PROCESS_OBJECT.xml=2B47776C040F3308E4A6573AE1098738711A1ECA2E2A01CDD800B79F9B61C5CC\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{PROCESS_OBJECT Explore/Alerting/ProcessObjects/rules.PROCESS_OBJECT.xml Explore/Alerting/ProcessObjects/.rules.PROCESS_OBJECT.json Explore/Alerting/ProcessObjects/rules.PROCESS_OBJECT }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/ProcessObjects/rules.PROCESS_OBJECT.xml=E4EBBABEBE655FC5BEF0792E2D265DC033C9CCD1AA8AEBE6617D91C1961183E0\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{Folder Explore/Alerting/Processes.Folder.json Explore/Alerting/.Processes.Folder.json Explore/Alerting/Processes.Folder }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/Processes.Folder.json=A07C5F502987589258A11853E168B04AB165659E5FC9E305703555EA005B69FB\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{PROCESS Explore/Alerting/Processes/UncaughtFaultAlertHandler-Cloud.PROCESS.xml Explore/Alerting/Processes/.UncaughtFaultAlertHandler-Cloud.PROCESS.json Explore/Alerting/Processes/UncaughtFaultAlertHandler-Cloud.PROCESS }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/Processes/UncaughtFaultAlertHandler-Cloud.PROCESS.xml=CE8CB2D0329CE0CCBB04E858F2A9184C01DF61DA65F3EE55E2924DAD2AD78BB0\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{PROCESS Explore/Alerting/Processes/UncaughtFaultAlertHandler-NA.PROCESS.xml Explore/Alerting/Processes/.UncaughtFaultAlertHandler-NA.PROCESS.json Explore/Alerting/Processes/UncaughtFaultAlertHandler-NA.PROCESS }" ďż˝[36mChecksumďż˝[0m="Explore/Alerting/Processes/UncaughtFaultAlertHandler-NA.PROCESS.xml=6B2271E9EC067BBBDADEFF58A5CCC92AB92FBFA583FFB2E00CBF9798C7594490\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{Project Explore/Tools.Project.json Explore/.Tools.Project.json Explore/Tools.Project }" ďż˝[36mChecksumďż˝[0m="Explore/Tools.Project.json=467871ABEF9EC13ABF617CC1D647ED8EE95D9E4E1DE155E2C4EFBDB4EEFBBC43\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{Folder Explore/Tools/ProcessObjects.Folder.json Explore/Tools/.ProcessObjects.Folder.json Explore/Tools/ProcessObjects.Folder }" ďż˝[36mChecksumďż˝[0m="Explore/Tools/ProcessObjects.Folder.json=94ECF23F8B13EA1F4E61E9AA7F0936C78BFD51864247B7FAFDF05D14622C1720\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{PROCESS_OBJECT Explore/Tools/ProcessObjects/AttchmentInformation.PROCESS_OBJECT.xml Explore/Tools/ProcessObjects/.AttachmentInformation.PROCESS_OBJECT.json Explore/Tools/ProcessObjects/AttchmentInformation.PROCESS_OBJECT }" ďż˝[36mChecksumďż˝[0m="Explore/Tools/ProcessObjects/AttchmentInformation.PROCESS_OBJECT.xml=EA0036AFEB453064ED998FB172FF3C9920B5308DB999B8518358A65B6FEE8948\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{Folder Explore/Tools/Processes.Folder.json Explore/Tools/.Processes.Folder.json Explore/Tools/Processes.Folder }" ďż˝[36mChecksumďż˝[0m="Explore/Tools/Processes.Folder.json=E200175169D1F8F83E3B49E0EDE49ED7A2C354EE8704D72A2D5353FA69357380\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{PROCESS Explore/Tools/Processes/SP-ConvertAttachmentToText.PROCESS.xml Explore/Tools/Processes/.SP-ConvertAttachmentToText.PROCESS.json Explore/Tools/Processes/SP-ConvertAttachmentToText.PROCESS }" ďż˝[36mChecksumďż˝[0m="Explore/Tools/Processes/SP-ConvertAttachmentToText.PROCESS.xml=E4619B8500BC4AA808F64BE98B23A6FCFA3E55B3D76F71DA29B2AC257854C6EF\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{Folder Explore/Tools/ServiceConnectors.Folder.json Explore/Tools/.ServiceConnectors.Folder.json Explore/Tools/ServiceConnectors.Folder }" ďż˝[36mChecksumďż˝[0m="Explore/Tools/ServiceConnectors.Folder.json=28F4713ECC03D81EE83F12BF320483C7576BB5AE3200C168715FEC83F6B1AA41\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for artifact ďż˝[36mArtifactďż˝[0m="{AI_SERVICE_CONNECTOR Explore/Tools/ServiceConnectors/github-gist.AI_SERVICE_CONNECTOR.xml Explore/Tools/ServiceConnectors/.github-gist.AI_SERVICE_CONNECTOR.json Explore/Tools/ServiceConnectors/github-gist.AI_SERVICE_CONNECTOR }" ďż˝[36mChecksumďż˝[0m="Explore/Tools/ServiceConnectors/github-gist.AI_SERVICE_CONNECTOR.xml=0AA9C879F389E2811F79D0B3B3B6C6708AAF6D55B596BFF9B50F9A4293886D67\n"
[exec] ďż˝[36mINFOďż˝[0m[0000] Generated checksum for metadata file ďż˝[36mChecksumďż˝[0m="exportMetadata.v2.json=E51CF7D22504344C652B950CB185538432B3225EB2E1D0832FECBB4EF296CFAB" ďż˝[36mFileďż˝[0m=/var/folders/hd/q4v90yb52d980_lvj56yxd5c0000gp/T/iics-cli648713486/exportMetadata.v2.json
[exec] ďż˝[36mINFOďż˝[0m[0000] Creating zip file ďż˝[36mFileďż˝[0m=/Users/jbrazda/git/icai-fault-alert-service/target/iclab-dev.release/import/dev/FaultAlertService.zip
package.src:
BUILD SUCCESSFUL
Total time: 10 seconds
You can run the same as in eclipse from command line using a following commands
Build a full package, DEV Environment Target
ant package.src \
-Diics.release=./conf/iics.release.properties \
-Diics.target.environment=dev \
-Diics.target.package.config=./conf/all_designs.package.txt
Build a Package without Connections DEV Target
ant package.src \
-Diics.release=./conf/iics.release.properties \
-Diics.target.environment=dev \
-Diics.target.package.config=./conf/all_exclude_connections.package.txt
Import Package to test environment
ant import \
-Diics.release=./conf/iics.release.properties \
-Diics.target.environment=test \
-Diics.target.package.config=./conf/all_exclude_connections.package.txt
Publish Imported Assets
ant publish \
-Diics.release=./conf/iics.release.properties \
-Diics.target.environment=test \
-Diics.target.publish.config=./conf/all_designs.publish.txt
The process Implementation requires certain system level properties to be configured
Fallowing URN mappings must be defined
URN | EXAMPLE | Required | Comment |
---|---|---|---|
ae:base-uri |
https://na1.ai.dm-us.informaticacloud.com | Yes | Base URL of Informatica Cloud Pod |
urn:environment:name |
Cloud Server {ENV} or Secure Agent Name | Yes | Environment Name |
urn:environment:orgid |
Your ORG ID | Yes | Org ID. |
urn:ic:faultAlerts:configuration:provider |
gist | No | Configuration Storage provider (Default is gist and supported values are gist, url) |
urn:ic:faultAlerts:configuration:url |
URL of Configuration in Gist, File or http location | Yes | Alert Service Configuration URL |
urn:ic:faultAlerts:fallback:email |
iics_alerts@acme.com.com | Yes | Fallback Email for Alert Service |
See URN Mappings
Alert Service must be configured after the Deployment/Import and configuration of this package
Go to each Application Integration Console > Server Configuration > Secure Agent
and set the System Service pointing to UncaughtFaultAlertHandler-{Agent Group Name}
where the {Agent Group Name}
is Group name matching the process name for A corresponding Agent group where you deployed the
The Setup of Alert Service will be possible only after the UncaughtFaultAlertHandler
service is published to the corresponding target environment.
Note: you should rename the
Alerting/Processes/UncaughtFaultAlertHandler-NA
to match your Secure Agent group name after initial install step, because currently ICAI does not allow single process to be deployed (published) to multiple target locations, thus requiring to create process copy for Each agent group or Cloud
If you decide to not clone this repository and re-build the package from Sources You can use provided im for first time Installation to target org manually.
IPD Import Packages
Package | Description |
---|---|
FaultAlertService_InitialInstall_All_Designs.zip | Use this Download for Initial Deployment |
FaultAlertService_Update_Excluding_Connections.zip | Use this Download when Updating - (Excludes Connections) |
Name | Description | Location | Type |
---|---|---|---|
Email-Alerts | Email Service Connection | Explore/Alerting/Connections/Email-Alerts. AI_CONNECTION.xml | Connection |
github-gist-alert-configuration | GitHub Gist Connection | Explore/Alerting/Connections/github-gist-alert-configuration. AI_CONNECTION.xml | Connection |
gitlab-snippets-alert-configuration | Gitlab Snippets Connection | Explore/Alerting/Connections/gitlab-snippets-alert-configuration. AI_CONNECTION.xml | Connection |
github-gist | GitHub Gist API Connector | Explore/Tools/ServiceConnectors/github-gist. AI_SERVICE_CONNECTOR.xml | Connector |
gitlab-snippets | GitLab Snippets API Connector | Explore/Tools/ServiceConnectors/gitlab-snippets. AI_SERVICE_CONNECTOR.xml | Connector |
Alert_Configuration_Manager | Guide to manage Alert Service Configuration | Explore/Alerting/Guides/Alert Configuration Manager. GUIDE.xml | Guide |
Gitlab Snippets Storage Manager | Guide To manage Configurations in GitLab | Explore/Alerting/Guides/Gitlab Snippets Storage Manager . GUIDE.xml | Guide |
Github Gist Storage Manager | Guide To manage Configurations in GitHub | Explore/Alerting/Guides/Github Gist Storage Manager. GUIDE.xml | Guide |
SP-ConvertAttachmentToText | Utility Service To Load Config From File | Explore/Tools/Processes/SP-ConvertAttachmentToText. PROCESS.xml | Process |
UncaughtFaultAlertHandler-Cloud | Fault Alert handler process for Cloud Servers | Explore/Alerting/Processes/UncaughtFaultAlertHandler-Cloud. PROCESS.xml | Process |
UncaughtFaultAlertHandler-NA | Fault Alert Handler process for NA Agents Group | Explore/Alerting/Processes/UncaughtFaultAlertHandler-NA. PROCESS.xml | Process |
Following process objects describe the Structure of Fault Alert Service Configuration
Name | Location | |
---|---|---|
action | Explore/Alerting/ProcessObjects/action.PROCESS_OBJECT.xml | Process Object |
action-email | Explore/Alerting/ProcessObjects/action-email.PROCESS_OBJECT.xml | Process Object |
action-ref | Explore/Alerting/ProcessObjects/action-ref.PROCESS_OBJECT.xml | Process Object |
actions | Explore/Alerting/ProcessObjects/actions.PROCESS_OBJECT.xml | Process Object |
alert-config | Explore/Alerting/ProcessObjects/alert-config.PROCESS_OBJECT.xml | Process Object |
AttachmentInformation | Explore/Tools/ProcessObjects/AttchmentInformation.PROCESS_OBJECT.xml | Process Object |
condition | Explore/Alerting/ProcessObjects/condition.PROCESS_OBJECT.xml | Process Object |
FaultAlertConfiguration | Explore/Alerting/ProcessObjects/FaultAlertConfiguration.PROCESS_OBJECT.xml | Process Object |
rule | Explore/Alerting/ProcessObjects/rule.PROCESS_OBJECT.xml | Process Object |
rules | Explore/Alerting/ProcessObjects/rules.PROCESS_OBJECT.xml | Process Object |
Once the package is imported for the firs time make sure you have enabled access token and gist account on Github
This package contains reference configurable implementation of ICAI Fault alert Handler. The configuration Allows to define a set of rules/conditions to be evaluated when process engine triggers fault alert for a faulting process.
Lets inspect the Configuration file example
As you can see below Configuration allows to define Set of rules where each Rule is associated with set of actions.
Each rule Can have set of the conditions evaluated be either with OR
or AND
logical operator.
Each condition can be negated using a <not>true/false</not>
condition property
Condition Type | Description |
---|---|
equals | Exact String Match |
matches | Condition would Contain Regular expression (needs to be escaped) |
contains | Contains String |
starts-with | Starts With a String |
Action Type | Description |
---|---|
alert-email | Send Alert Email to a defined set of recipients |
ignore | Ignore Alert |
ignore | Ignore Alerts |
ignore | Ignore Alerts |
ignore | Ignore Alerts |
Each Rule can be linked to one or more Actions When Any rule condition
Evaluation outcome contains ignore
action, then the Alert will be ignored and no other actions will be taken.
Ignore Action is mutually exclusive with other actions resulting the rules evaluation.
<FaultAlertConfiguration>
<alert-config>
<Name>Default Alert Configuration</Name>
<Description>This is a Default Example Alert Configuration</Description>
<created>2019-07-09T03:58:42.924Z</created>
<updated>2019-07-09T03:59:41.719Z</updated>
<createdBy>jbrazda-iics@informatica.com</createdBy>
<updatedBy>jbrazda-iics@informatica.com</updatedBy>
</alert-config>
<rules>
<rule>
<guid>17feed12-163d-43b2-9368-ba0b6951b9d6</guid>
<name>Ignore Alert</name>
<operator>OR</operator>
<condition>
<guid>502ba658-bbe5-4611-aba4-dd5e021abc59</guid>
<type>equals</type>
<value>SP-Test-Throw-Fault-Generic</value>
<not>false</not>
<alert-field>processName</alert-field>
</condition>
<condition>
<guid>981275e6-2328-4294-982d-be85eba32577</guid>
<type>matches</type>
<value>.*Test.*</value>
<not/>
<alert-field>processName</alert-field>
</condition>
<condition>
<guid>e14d31b1-cb2f-419b-9770-b69ebc08000d</guid>
<type>matches</type>
<value>SP-Test-.*</value>
<not>false</not>
<alert-field>processName</alert-field>
</condition>
<condition>
<guid>70177f72-7ee5-42e6-b2d0-816fba957303</guid>
<type>contains</type>
<value>Test</value>
<not>false</not>
<alert-field>processName</alert-field>
</condition>
<action>
<guid>f419969c-f9f1-4994-8c66-d6710f4d4625</guid>
<Name>Ignore Alert</Name>
<Type>ignore</Type>
</action>
</rule>
<rule>
<guid>9e7b7b98-f7ce-43e1-911f-26b4aaa0506a</guid>
<name>Error Email</name>
<operator>OR</operator>
<action>
<guid>1083547d-c196-47c6-9d53-fcbc5172e302</guid>
<Name>Alert Email</Name>
<Type>alert-email</Type>
</action>
<condition>
<guid>159ccd35-f8a0-433e-82ca-7dea2df10f3e</guid>
<type>equals</type>
<value/>
<not>true</not>
<alert-field>processName</alert-field>
</condition>
</rule>
</rules>
<actions>
<action>
<guid>f419969c-f9f1-4994-8c66-d6710f4d4625</guid>
<Name>Ignore Alert</Name>
<Description>Action to ignore Alert</Description>
<Type>ignore</Type>
<ActionDetail/>
</action>
<action>
<guid>1083547d-c196-47c6-9d53-fcbc5172e302</guid>
<Name>Alert Email</Name>
<Description>Sends HTML Formatted Alert Email</Description>
<Type>alert-email</Type>
<ActionDetail>
<action-email>
<subject>Fault Alert - Error</subject>
<to>recipient@acme.com</to>
<cc/>
<bcc/>
<contentType>text/html</contentType>
<actionName>Send Alert Email</actionName>
</action-email>
</ActionDetail>
</action>
</actions>
</FaultAlertConfiguration>
Above configuration file is generally not intended to be edited manually it is generated
by the provided Alert Configuration Manager
ICAI guide.
This Guide provides a tool to manage retrieve and store the configuration on target configuration storage system (Github.com gist) or simply exported as XML. It also allows to simulate various fault sample fault alerts and test the configuration for desired behavior
This guide is located in the IICS > Application Integration > Alerting > Guides > Alert Configuration Manager
Main Page
Manage Alert Service Configuration
You can choose from following Options
- Load from Gist - load available gists from the Account Associated with the Gist Connection)
- Load From File - Load file from local drive
- Edit XML - You can paste XML or use default generated file to
Select Gist to be loaded
Preview Loaded XML
Configuration Editor
Rule Editor Editor
Action Editor
Email Action Editor
Save Configuration Provides three actions
- Save as a New Gist - Create a new Gist (typically for different environment)
- Update Existing Gist - Allows you to update existing GIST
- Get Configuration XML - Prints teh Config XML which (save it as a file)
Save as a New Gist
Save Completed
Gist View
Github Configuration View with Revisions
This is a part of the Alert Configuration Manager, it allows to test current Environment Configuration parameters based on URN mapping stored on the Secure Agent URNs.
- Test against pre-defined Sample Payload
- Test against arbitrary pasted payload
Test Message
Test Results
Test Email Sample
This Alert Service handler is designed to be extensible, you can add custom actions or Configuration Storage providers.
To Add custom action Follow these steps
- If Action would require new Connector and connection, Implement such service connector for example Jira, Service Now, MS Teams Channel, Slack Channel
- Create Process Object to describe Action Specific Configuration parameters (See existing Process object to describe email-alert)
- Implement new branch in the
Alert Configuration Manager
to manage the new action configuration - Register new action type in the Pick list selection in the
action
Process ObjectType
field - Implement new branch of logic to invoke specific Action in the
UncaughtFaultAlertHandler-*
processes - Deploy and test the changes to Alert Service
To Add custom Storage provider such as Database follow these steps to to store and retrieve the configuration using a new provider
- Setup or Implement service connector for example to support such storage provider (DB, AWS S3, Bitbucket)
- Implement New Storage Manager Guide based on existing examples for GitHub and GitLab
- Implement new steps in the
Alert Configuration Manager
to save and load configuration using the new provider - Implement new branch of logic to Load configuration from new provider in the
UncaughtFaultAlertHandler-*
processes - Deploy and test the changes to Alert Service
Custom Alert handler Service Works only on Secure Agents, Currently there is an issue on IICS CLoud instances where only built in alert service works as expected, you will have to use built-in Alert Service Email notification on IICS Cloud Servers
Term | Description |
---|---|
IICS | Informatica Intelligent Cloud Services, Informatica Cloud Integration platform |
ICAI | (formerly ICRT) Informatica Cloud Application Integration, see ICRT |
ICDI | (formerly ICS) Informatica Cloud Data Integration is an ETL batch integration component of IICS platform |
BPEL | Business Process Execution Language |
BPMN | Business Process Modeling Notation |
WSDL | Web Service Definition Language |
API | Application Programming Interface |
REST | REpresentational State Transfer |
IPD | Informatica Process Designer |
Application Integration Console | ICAI Cloud and Secure Agent Runtime Administration Tool |
Informatica Secure Agent | Informatica Data Integration Execution Agent that Provides ability to integrate data on premise and in the Cloud, hybrid data integration both batch and real time |
DAS | Data Access Service |