Input/Output Interface - IOI - Documentation
Introduction
This documentation aims to provide a clear understanding of the functionalities and components of the IOI (Input Output Interface). It is designed for administrators responsible for using and managing the application. The goal is to make working with the application easier and improve its comprehension. The document covers basic administrative procedures, configuration, and data processing procedure creation.
If you have any questions that are beyond the scope of this help file, Please feel free to email via treeinfo@aricoma.com.
Join TreeINFO community at Stack Overflow TreeINFO Team. If you need access, contact treeinfo@aricoma.com.
Release
Build (18.04.2024)
- Added SetCache Getcache processors - Added SetCache and GetCache processors leading to enhanced data processing
- Updated OAuth2.0 AuthenticationManager - Updated the OAuth2.0 AuthenticationManager to support the processing of double BASE64 encoding.
- Updated UserMulti field support - Updated IOI processes to support the UserMulti field
- Updated Foreach Json support - Introduced Foreach JSON support to streamline processing tasks, reducing the need for multiple conversions when handling Foreach JSON files.
- Updated VODZ support - Updated IOI to be able to handle VODZ file types.
- Fixed IndexOutOfRangeException error due to version conflict fix - Resolved a version conflict issue that resulted in an IndexOutOfRangeException error. The RunningTasks library has been substituted with ConcurrenceDictionary.
Build 2.2.2310.09001 (08.11.2023)
- Added BaseWaitProcessor Added BaseWaitProcessor that is inherited by WaitRecordProcessor and WaitBarchProcessor so that 'Wait' can be used for example in PostProcess
Note See all the latest features, enhancements, updates and more in Changelog here.
About Input/Output Interface (IOI)
IOI Application is a universal data integration interface. Its purpose is to act as middleware between different systems and provide data connection in synchronous and asynchronous manner. Originally, it was designed as an interface between SharePoint and other systems. But its architecture allows IOI users to create data integrations of any software systems using different data transfer channels and formats. An example of typical use case is an import of an invoice into SharePoint library when a pdf file appears in shared disk folder, or an export of an order in XML format into web service interface, when a new order record appears in database.
Application itself is designed to be hosted in different application contexts. There are three types of installation currently available:
- Windows service - IOI can be installed on windows operating system as windows background service. This is most commonly used option.
- Standalone application - IOI can process data as a command line utility (exe). This option is useful for ad-hoc tasks, one time imports etc.
- Web server - IOI processing can be triggered from IIS (Microsoft Internet Information Services) web server and thus act as a web service(s)
The IOI interface is configurable (the configuration is stored in XML format). IOI is designed to be modular - it contains input and output modules for different formats and these modules can be combined with each other. The input/output configuration is bundled into a single definition. These defined actions can be triggered depending on external events. Detailed listing of all available modules with description of all configuration options is part of this documentation.
The process and the entities are described in more detail in section basics.
The complete transfer history is logged to a configurable storage (file, database).
Basics
IOI configuration relies on a couple of basic entities. The principle is, that Triggers acts like "events". They specify conditions or external events that cause the "triggering" of some activity. An example of activity is adding of a new file into a folder, new email received in mailbox or timer that repeatedly calls an action, e.g. every 5 minutes.
Task is another important entity. Task defines action that happens when a trigger is triggered. Task consists of input, output and actions. Each trigger can have zero, one or multiple tasks assigned to it.
Basic data flow for each data integration is shown on following diagram:
IOI configuration is stored in form of XML data. Currently, all the configurations are stored in disk files, but can potentially be stored somewhere else in future IOI releases (e.g. in database)
Triggers
Triggers acts like "events" in IOI configuration. Detailed list of all triggers can be found in section Triggers. An example trigger configuration is listed below:
Trigger configuration template
<!-- Type attribute specifies the trigger type (without the "Trigger" suffix, e.g. FileAdded) -->
<IOInterfaceTrigger Type="">
<!-- trigger specific properties should be here, if needed -->
<!--If only one task is to be executed, Its name comes here-->
<Task>NameOfTask</Task>
<!-- For multiple tasks -->
<Tasks>
<Task Name="NameOfTask1">
<!--there can also be some variables specified for task-->
<Variables>
<Variable Name="Variable1" Value="lorem ipsum" />
</Variables>
</Task>
<!--second task without parameters-->
<Task Name="NameOfTask2"></Task>
</Tasks>
</IOInterfaceTrigger>
Example 1: Timer
Each 5 minutes run one task
<IOInterfaceTrigger Type="Timer">
<Interval>300</Interval>
<RunOnStart>true</RunOnStart>
<Tasks>
<Task Name="Invoice_SP2SAPTask" />
</Tasks>
</IOInterfaceTrigger>
Example 2: FileAdded
Triggers two tasks with different variable value, when an file is added to specified folder
<IOInterfaceTrigger Type="FileAdded" MaxDop="1">
<!-- folder where trigger watches for new files -->
<Folder>D:\IOI_PROD\data\InvoicesInput</Folder>
<Filter>*.xml</Filter>
<Tasks>
<Task Name="Invoice_Task">
<Variables>
<Variable Name="SpListName" Value="InboundInvoicesArchive" />
</Variables>
</Task>
<Task Name="Invoice_Task">
<Variables>
<Variable Name="SpListName" Value="InboundInvoices" />
</Variables>
</Task>
</Tasks>
</IOInterfaceTrigger>
Tasks
Tasks are defining the workload IOI is doing. It is composed by the three main elements:
- Input
- Processor(s)
- Output
- Input retrieves data from a source (file/database/SharePoint/...)
- Input data are broken down into rows and columns. Breakdown mechanism is either using a parser or comes out of input data logic (e.g. for SQL query it is query result set)
- IOI engine processes each row and applies record processor(s).
- Each row is passed into output which is then processing data depending on output type (writes data to file, sends data to SharePoint, executes SQL command etc.)
- After processing of data, batch processors are applied (either success or error ones)
There are two types of processors used in task composition. Row processors are applied as described in point 2 on each data row. Batch processors are the other type, which might be applied before (or/and) after whole task processing. Depending on result of the task run, error or success processors are applied.
Following code snippet shows a template of IOI task with explaining comments. It contains all phases/elements for processors for different phases. The only ones required are Input and Output as they are the bare minimum for a runnable task.
<!-- Empty IOI task template (Full) -->
<IOInterfaceTask>
<PreProcess>
<!-- Optional. Before start of processing, batch processors to be fined here -->
</PreProcess>
<!-- Input for the task, required element, type of input specified in Type attribute -->
<Input Type="">
</Input>
<Process>
<!-- Optional. Record (row) processors to be defined here -->
</Process>
<Error>
<!-- Optional. In case of failure, record processors to be fined here -->
</Error>
<Success>
<!-- Optional. After record (row) was successfully processed, record processors to be fined here -->
</Success>
<!-- Output of the task, required element, type of input specified in Type attribute -->
<Output Type="">
</Output>
<PostProcess>
<!-- Optional. After successful processing of all records (rows), batch processors to be fined here -->
</PostProcess>
<TaskError>
<!-- Optional. in case of failure, batch processors to be fined here -->
</TaskError>
</IOInterfaceTask>
Batches
There are two important terms used in IOI which needs to be explained:
- Batch - Batch is the overall name for data that is processed by a task. It is an entity that is determined by the execution of a trigger. E.g. for the FileAdded trigger, there will be one batch per file.
- Record - Record equals to set of data that represents one row of virtual table which comes out of Input. For example for CSV file, there will be literally one record per CSV file row (excluding header, if present.). For creating records out of an input stream (like a disk file is), Parsers (which are described later in detail) might be used. To merge records back to output stream, Formatters might be used, if appropriate.
Processors
There are two types of processors in IOI. Task processors which are executed for Batches and Record processors which are executed for each record. Some processors are available in both categories. For example, if a file should be moved after it has been processed, MoveFile task processor could be used. On the other hand, if it is required to send email per each row in input, the SendMail record processor could be used.
All processors are listed in this documentation with all its properties.Replace tokens
There is a concept widely used in IOI which is called replace tokens. It is a specific string syntax that gets "replaced" during IOI processing. This means, it is possible to use specific syntax in IOI configuration files (and even in data) that is in runtime replaced by actual value. For example, there might be a variable that stores the file name of the file, which is the source of the data that is being processed (for a task that was triggered by the FileAdded trigger). This file name can be used in Task processing by using a replace token.
Replace tokens are wrapped into curly brakets and consists of two parts: prefix and the actual replace token. Syntactic template:
{(PREFIX):(REPLACE_TOKEN)}
An example of replace token, that represents a value of variable that is named
"TriggerFileName":
{var:TriggerFileName}
Following table contains all available prefixes that might be used in replace tokens:
Prefix | Meaning |
---|---|
rec | Retrieve a field (column) from record (data row). Second part of replace token contains name of field (column). |
var | Retrieve value of variable. Name of variable needs to be specified in second part of replace token. |
func |
Execute a replace function. Function specification (name and optionally
parameters) needs to be specified in second part of replace token. Example:
Using comma in the name of the file right after rec: part will be understood as an attempt to divide arguments resulting in unwanted behaviour. We recommend avoiding the use of commas in the name of target files or using the following syntax
|
Replace functions
Functions provide specific functionality described for each function in the table below. Function can be without parameters, or could expect one or more parameters. Number of parameters is defined for each function separately depending on its purpose. Parameters are expected to be in parenthesis, each separated by colon. String parameters are not wrapped in quotation marks. An example of function is GetFileName function, which expects one parameter containing physical file path. Returns name of file (without path information). Example of usage of GetFileName function:
{func:GetFileName(C:\data\input\invoice010.pdf)}
Output of the replace token would be: invoice010.pdf
Replace tokens could be called recursively (means they can be nested one into another). An example of using replace function with parameter stored in variable:
{func:GetFileName({var:FileName})}
Function | Parameter(s) | Description |
---|---|---|
GetFileName | Physical file path | Get file name part of file path |
GetFileNameWithoutExtension | File name | Get file name without extension and dot before extension. Example input: Invoice123.pdf, output: Invoice123 |
GetExtension | File name | Retrieve only extension including dot. Example input: file.pdf, output: .pdf) |
GetParentDirectory | Physical file or folder path | Parent directory path - Example input: C:\Data\Invoices\invoice.pdf, output: C:\Data\Invoices |
GetParentDirectoryName | Physical file or folder path | Parent directory name - Example input: C:\Data\Invoices\invoice.pdf, output: Invoices |
FileExists | Physical file path | True, if file exists |
DirectoryExists | Physical folder path | True, if folder exists |
GetTimeStamp | none | Returns current server date and time formatted by format string: yyMMdd_HHmmss. Example output: 221025_154403 |
FormatCurrentDate | Datetime format string | Format string is in form of .NET datetime format string. For more info, please refrer documentation online: https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings |
FormatDate | Input datetime, format string |
Input datetime value must be in parseable format described in Microsoft
documentation: https://learn.microsoft.com/en-us/dotnet/api/system.datetime.parse?view=net-7.0#StringToParse Format string is in form of .NET datetime format string. For more info, please refrer documentation online: https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings |
GetDateAddWorkdays | Number of days (int), format string |
Retrieve current date + workdays specified in first parameter. Second
optional parameter is datetime format. Format string is in form of .NET datetime format string. For more info, please refrer documentation online: https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings |
GetValidName | FileName | Remove invalid characters from file name/ physical file path |
MimeTypeFromFileName | FileName | Retrieve mime type configured in system by file name (extension) |
expr | Expression | An expression to be evaluated by JavaScript internal evaluation engine. Script should return single value. |
JsEscape | String to be escaped | Escape string to be valid for javascript. |
SqlEscape | String to be escaped | Escape string to be valid for SQL |
XmlEscape | String to be escaped | Escape string to be valid for XML |
HTMLEscape | String to be escaped | Escape string to be valid for HTML |
HtmlDecode | String to be decoded | Decode HTML encoded string |
UrlEncode | String to be encoded | Encode URL parameters |
UrlDecode | String to be decoded | Decode URL parameters |
Replace | string to search in, what to search for, replacement | Replace all occurrences of second parameter string by replacement string in first parameter string. |
guid | None | Returns new GUID |
Variables
Variable is a key-value pair used widely in IOI. Variables can be defined at different levels:
- Global IOI variables defined in app config
- Variables defined in Triggers as Task arguments
- Predefined variables in Task / variables set in runtime in Task
Expressions
There is a number of entities, which are using expressions (e.g. If processor, expression replace token etc.). These expressions are based on JavaScript syntax (IOI evaluates expressions using a JavaScript interpret). So most of common JavaScript capabilities is available. Values can be passed to expressions in following ways:
- Replace Tokens - All replace tokens are processed before expression is passed
to JavaScript evaluation engine. This means, that any variable can be used as string
constant in expression, for example:
Please note that string constants must be enveloped in quotes and that this is a potential vulnerable place for script injection.'{var:MyVariable}'.length > 20
- Variables - All variables present in current context are passed to JavaScript
evaluation as JavaScript variables. They are named using var_ prefix to IOI variable
lowercase name. For example,
IOI variable named MyVariable will be available in javascript as var_myvariable.
Example of usage in expression:
var_myvariable.length > 20
- Record values - for record processor, record values are passed to expression
evaluator as JavaScript variables with rec_ prefix, name of column lowercased. So
for record column FileName, the JavaScript variable will be named rec_filename.
Example of use:
rec_filename == 'MyFile.xlsx'
Installation
IOI can be installed in multiple ways. IOI installation package is a ZIP archive, which contains all required files for installation. The easiest and most straightforward installation is installing IOI as standalone application. In this case, installation process consists of these steps:- Unzip files from a zip archive to a local disk folder. For instance, as per the standard practice, it could be located at D:\Your_Folder\Your_Application\bin (e.g. D:\TreeINFO\IOI_PROD\bin).
- Rename IOInterface.Console.exe.config.sample to IOInterface.Console.exe.config
- Configure application configuration file options, as described in section App configuration.
- Configure logging in nlog.config (if specific logging is required. Default config is supplied in package. Logging is described in more detail in this section. Logging uses NLOG library.)
- IOI can be executed using command line (IOInterface.Console.exe)
Windows service
Installation as windows service is most common for production use. Windows service can be started on window startup and, in the event of failure, restarted. On windows service shutdown, process is not terminated immediately, but it waits until all the already running tasks are finished. In this stage, service shows "stopping" state in service manager and is not throwing any new task instances by triggers. Service manager might say that service is unavailable, but it might be waiting for batch to be finished. Information about running Batches can be found in log.
- Unzip files from a zip archive to a local disk folder. For instance, as per the standard practice, it could be located at D:\Your_Folder\Your_Application\bin (e.g. D:\TreeINFO\IOI_PROD\bin).
- Rename IOInterface.WinService.exe.config.sample to IOInterface.WinService.exe.config
- Configure application configuration file options, as described in section App configuration.
- Start powershell console as administrator
- Register windows service using following command: New-Service -Name "IOInterface_PROD" -BinaryPathName "D:\TreeINFO\IOI_PROD\bin\IOInterface.WinService.exe" (change the binary path and service name according to your needs/physical binary location)
- Set windows service executing account using windows service manager (can be started by pressing windows key and R, then typing "services.msc"). It is recommended the IOI service account to be local administrator and to create separated user only for IOI. Could also be an ActiveDirectory user.
- Configure logging in nlog.config (if specific logging is required. Default config is supplied in package. Logging uses NLOG library.)
- Start the service and check log content if there is not any error message
IIS web server
- Unzip files from a zip archive to a local disk folder. For instance, as per the standard practice, it could be located at D:\Your_Folder\Your_Application\web (e.g. D:\TreeINFO\IOI_PROD\web).
- Rename Web.config.sample to Web.config
- Configure application configuration file options, as described in section App configuration.
- Register IOI http handler in section system.webServer/handlers. Example (Change path
attribute according to your needs):
- Install IIS windows feature, if not already installed
- Create IIS website in IIS management console. Set working directory to IOI binary path, create app pool with user with sufficient permissions to execute IOI operations (it can be local admin if security standards allows it)
- Configure logging in nlog.config (if specific logging is required. Default config is supplied in package. Logging uses NLOG library.)
Note For each http handler, there must also be a trigger of type "WebService" referenced in Triggers config section with the same name in the attribute Name.
App configuration file
App configuration file is main configuration file for IOI. It is a XML file, standard .NET application config with a custom section for IOI configuration. For standard .NET configuration capabilities, please reffer MS documentation. An example of IOI Application configuration file:
<configuration>
<configSections>
<section name="IOInterface" type="IOInterface.Data.AppConfiguration.IOInterface,IOInterface.Data" />
</configSections>
<connectionStrings>
<!-- Configurations database (optional)-->
<add name="ConfigDB" connectionString="Data Source=(local);Initial Catalog=IOI_Config;Integrated Security=True" />
<!-- Default data database (when not specified in task, this is used - optional) -->
<add name="ConfigDefaultDataDB" connectionString="Data Source=(local);Initial Catalog=IOI_Data;Integrated Security=True" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<IOInterface>
<Management ConnectionType="Disabled" EnableRemoteManagement="False" Customer="Sabris Consulting" DisplayName="Production IOI instance" />
<!--Paths for configuration file lookup-->
<ConfigPaths>
<ConfigPath Path="D:\Sabris\IOI_PROD\config" />
</ConfigPaths>
<!-- triggers to be enabled at service start-->
<Triggers>
<Trigger Name="FileToSP_Invoice"/>
<Trigger Name="SPToXML_ExportSuppliers"/>
</Triggers>
<!-- Variables to be passed to IOI on start -->
<Variables>
<Variable Name="SPUrl" Value="http://devsp" />
<Variable Name="TempFolder" Value="g:\Temp\ioi" />
</Variables>
</IOInterface>
</configuration>
IOInterface element sections
Element | Description | Details |
---|---|---|
ConfigPaths | Folders, where IOI expects to find IOI Task and Trigger configuration files. | |
Triggers | List of triggers to be used (for console or service on service start, for web service installation it should be WebService triggers. | |
Variables | Predefined global variables. Will be available in all Tasks and Triggers. | |
Management | Management and monitoring options. |
Log configuration
In order to enable logging features, it is required to create an nlog.config file in IOI bin directory.
An example of nlog.config for IOI which configures two logging targets: daily rolling file (new file for each day) and database table loggging.
<?xml version="1.0" encoding="utf-8"?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="false">
<targets>
<!-- optional target used by console application. Not required for use as an windows service -->
<target xsi:type="ColoredConsole" name="coloredConsole"
layout="${longdate} ${logger} ${uppercase:${level}} ${mdc:item=ThreadId} ${message} ${exception:format=tostring}" />
<!-- Target for storare of log in rolling file. fileName attribute specifies path where file will be created (executing process needs sufficient permissons.-->
<!-- layout attribute configures template for each log record -->
<target xsi:type="File" name="file.ioi" fileName="E:\Sabris\IOI_PROD\log\${shortdate}.log" encoding="utf-8"
layout="${longdate}█${logger}█${uppercase:${level}}█${mdc:item=CorrelationId}█${mdc:item=ThreadId}█${message}█${replace-newlines:replacement=|:${exception:format=tostring}}" />
<!-- Target for insering log records into database table. Table needs to be already created in SQL server before use. Target is siply configured by definig inser statemen of a log record. -->
<target name="database" xsi:type="Database" dbProvider="System.Data.SqlClient" connectionString="data source=SPSQL;initial catalog=IOI_PROD;User ID=nlog;Password=****;MultipleActiveResultSets=True;App=SPEntityFramework" dbDatabase="IOI_PROD">
<commandText>
insert into dbo.Log (
Date,
Logger,
Level,
Message,
Exception,
CorrelationId,
ThreadId
) values (
GETDATE(),
@Logger,
@Level,
@Message,
NULLIF(@Exception, ''),
@CorrelationId,
@ThreadId
);
</commandText>
<parameter name="@Logger" layout="${logger}" />
<parameter name="@Level" layout="${uppercase:${level}}" />
<parameter name="@Message" layout="${message}" />
<parameter name="@Exception" layout="${exception:format=toString}" />
<parameter name="@CorrelationId" layout="${mdc:item=CorrelationId}" />
<parameter name="@ThreadId" layout="${mdc:item=ThreadId}" />
</target>
</targets>
<rules>
<!-- Rules specifies which targets will be used and also specifies logging level. Only records with value of minLevel attribute or higher will be stored. Be carrefull In production, Trace logs might be extensive!-->
<logger name="*" minlevel="Trace" writeTo="coloredConsole" />
<logger name="*" minlevel="Trace" writeTo="file.ioi" />
<logger name="*" minlevel="Trace" writeTo="database" />
</rules>
</nlog>
Configuration
This section describes all configuration entities in detail with properties available for configuration.
Triggers
FileAdded
Watches file system folder. When a new file appears in folder, task is triggered.
Properties | Description | Value / Comment | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Filter | File watcher filter | ||||||||||||||||
Folder | Physical path to the folder, which should be observed by trigger. It could be a local path (e.g. C:\my\folde, or network location, e.g. \\shared\folder) | ||||||||||||||||
ProcessFilesOnStart | If true, trigger processes all files in folder on start. True by default. | ||||||||||||||||
AllowRetry | If true, trigger reattempts to run failed file added events. True by default. Also in retry interval, folder scans are executed so if fileadded event fails, files are still being queued. | ||||||||||||||||
RetryInterval | Retry interval in seconds. Default value is 60sec | ||||||||||||||||
IncludeSubdirectories | If true, subdirectories are watched. Default is false. | ||||||||||||||||
SequentialProcessing | Deprecated: If true, files are processed sequentially. Can be replaced with MaxDop property equal to 1 | ||||||||||||||||
MaxDop | Maximum number of parallel processes to process files | ||||||||||||||||
DisableFolderCreate | If folder does not exist and this is not true, folder will be created automatically. Default false. | ||||||||||||||||
Delay | Delay between process tasks | ||||||||||||||||
Task | Single task to be started on trigger fire. Should contain task name. | ||||||||||||||||
Variables | Additional task trigger variables. Variable is defined by name and value. Other variables also might come from app config. In such case, variables are merged and forwarded to task. |
An example value:
|
|||||||||||||||
Tasks | Task(s) to be started on trigger fire. Multiple tasks could be specified. For each task specific variable values could be specified. |
An example configuration. Variable configuration is optional, as well as output variables configuration. Variables are passed to task, OutputVariables are retrieved after execution of task back to trigger context.
|
|||||||||||||||
Watchdog | Watchdog configuration. Watchdog is IOI functionality for limiting the number of reprocessings of a task. | Configuration for Watchdog
|
MailPull
Email client trigger, which is periodically asking mail server for unprocessed messages. Is based on timer trigger and adds the mailbox functionality.
Transfer of data to task could be done via batch data or via disk files.
Could be used without any task by using file transfer method and files could be processed by any other way later.
Properties | Description | Value / Comment | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Mailbox | Mailbox configuration |
Mailbox configuration. Example configuration - connection via IMAP protocol, filtering of messages using regular expressions:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Interval | Interval of repeated execution (in seconds) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RunOnStart | If true, timer tick is executed once on trigger start before the timer is started. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Task | Single task to be started on trigger fire. Should contain task name. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Variables | Additional task trigger variables. Variable is defined by name and value. Other variables also might come from app config. In such case, variables are merged and forwarded to task. |
An example value:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tasks | Task(s) to be started on trigger fire. Multiple tasks could be specified. For each task specific variable values could be specified. |
An example configuration. Variable configuration is optional, as well as output variables configuration. Variables are passed to task, OutputVariables are retrieved after execution of task back to trigger context.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Watchdog | Watchdog configuration. Watchdog is IOI functionality for limiting the number of reprocessings of a task. | Configuration for Watchdog
|
IsdsDownload
ISDS client trigger. Connects to ISDS ("Informační systém datových schránek") and checks for new unprocessed messages. Check is executed
regularly in specified intervals.
Note Please be aware that IOI ISDS implementation is not functional without SQL database!!!
Properties | Description | Value / Comment | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
IsdsBox | ISDS box configuration |
ISDS box connection configuration. An example configuration (in real config, only one Login element will be present.)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Interval | Interval of repeated execution (in seconds) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RunOnStart | If true, timer tick is executed once on trigger start before the timer is started. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Task | Single task to be started on trigger fire. Should contain task name. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Variables | Additional task trigger variables. Variable is defined by name and value. Other variables also might come from app config. In such case, variables are merged and forwarded to task. |
An example value:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tasks | Task(s) to be started on trigger fire. Multiple tasks could be specified. For each task specific variable values could be specified. |
An example configuration. Variable configuration is optional, as well as output variables configuration. Variables are passed to task, OutputVariables are retrieved after execution of task back to trigger context.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Watchdog | Watchdog configuration. Watchdog is IOI functionality for limiting the number of reprocessings of a task. | Configuration for Watchdog
|
MailPush
EMail client trigger, uses push notifications from mail server (aka IMAP Idle client). Can only be currently used with IMAP protocol.
Transfer of data to task could be done via batch data or via disk files.
Could be used without any task by using file transfer method and files could be processed by any other way later.
Properties | Description | Value / Comment | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Mailbox | Mailbox configuration |
Mailbox configuration. Example configuration - connection via IMAP protocol, filtering of messages using regular expressions:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Task | Single task to be started on trigger fire. Should contain task name. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Variables | Additional task trigger variables. Variable is defined by name and value. Other variables also might come from app config. In such case, variables are merged and forwarded to task. |
An example value:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tasks | Task(s) to be started on trigger fire. Multiple tasks could be specified. For each task specific variable values could be specified. |
An example configuration. Variable configuration is optional, as well as output variables configuration. Variables are passed to task, OutputVariables are retrieved after execution of task back to trigger context.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Watchdog | Watchdog configuration. Watchdog is IOI functionality for limiting the number of reprocessings of a task. | Configuration for Watchdog
|
Scheduler
Task scheduling mechanism. Tasks are configured using UNIX "cron expressions"
For scheduling syntax reference: https://www.quartz-scheduler.net/documentation/quartz-3.x/tutorial/crontrigger.html#introduction
To get cron expression, use a GUI Tool like: https://www.freeformatter.com/cron-expression-generator-quartz.html
Uses Quartz.NET scheduling library
Properties | Description | Value / Comment | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Cron | Cron schedule expression. To get cron expression, use a GUI Tool like: https://www.freeformatter.com/cron-expression-generator-quartz.html | ||||||||||||||||
Name | Scheduler name. If is empty, will be filled automatically on start (=is not required, used as reference in scheduler engine). | ||||||||||||||||
Missfire | If scheduled event is not executed (e.g. IOI was not running), what to do (Run now or skip). Default is run now. | ||||||||||||||||
RunOnStart | If true, timer tick is executed once on trigger start before the timer is started. | ||||||||||||||||
Task | Single task to be started on trigger fire. Should contain task name. | ||||||||||||||||
Variables | Additional task trigger variables. Variable is defined by name and value. Other variables also might come from app config. In such case, variables are merged and forwarded to task. |
An example value:
|
|||||||||||||||
Tasks | Task(s) to be started on trigger fire. Multiple tasks could be specified. For each task specific variable values could be specified. |
An example configuration. Variable configuration is optional, as well as output variables configuration. Variables are passed to task, OutputVariables are retrieved after execution of task back to trigger context.
|
|||||||||||||||
Watchdog | Watchdog configuration. Watchdog is IOI functionality for limiting the number of reprocessings of a task. | Configuration for Watchdog
|
SqlCommand
Basic SQL command trigger
Periodically queries SQL server and executes tasks if a row is retrieved by SQL query
One task is executed per result row. Data from row are passed to engine as variables
Properties | Description | Value / Comment | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
CommandText | SQL command to be periodically executed. If a result is found, task is triggered. All data of the received row are forwarded ad IOI engine variables | ||||||||||||||||
ConnectionString | Optional connection string. If empty, default application connection string is used. | ||||||||||||||||
Interval | Interval of repeated execution (in seconds) | ||||||||||||||||
RunOnStart | If true, timer tick is executed once on trigger start before the timer is started. | ||||||||||||||||
Task | Single task to be started on trigger fire. Should contain task name. | ||||||||||||||||
Variables | Additional task trigger variables. Variable is defined by name and value. Other variables also might come from app config. In such case, variables are merged and forwarded to task. |
An example value:
|
|||||||||||||||
Tasks | Task(s) to be started on trigger fire. Multiple tasks could be specified. For each task specific variable values could be specified. |
An example configuration. Variable configuration is optional, as well as output variables configuration. Variables are passed to task, OutputVariables are retrieved after execution of task back to trigger context.
|
|||||||||||||||
Watchdog | Watchdog configuration. Watchdog is IOI functionality for limiting the number of reprocessings of a task. | Configuration for Watchdog
|
Timer
Run task repeatedly
Properties | Description | Value / Comment | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Interval | Interval of repeated execution (in seconds) | ||||||||||||||||
RunOnStart | If true, timer tick is executed once on trigger start before the timer is started. | ||||||||||||||||
Task | Single task to be started on trigger fire. Should contain task name. | ||||||||||||||||
Variables | Additional task trigger variables. Variable is defined by name and value. Other variables also might come from app config. In such case, variables are merged and forwarded to task. |
An example value:
|
|||||||||||||||
Tasks | Task(s) to be started on trigger fire. Multiple tasks could be specified. For each task specific variable values could be specified. |
An example configuration. Variable configuration is optional, as well as output variables configuration. Variables are passed to task, OutputVariables are retrieved after execution of task back to trigger context.
|
|||||||||||||||
Watchdog | Watchdog configuration. Watchdog is IOI functionality for limiting the number of reprocessings of a task. | Configuration for Watchdog
|
WebService
Web service trigger. Requires hosting a web request handling engine.
Currently needs to be triggered from IIS process, triggering of webservice from windows service or exe process is not implemented.
Properties | Description | Value / Comment | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Listeners | Listeners configured for triggering | ||||||||||||||||
Task | Single task to be started on trigger fire. Should contain task name. | ||||||||||||||||
Variables | Additional task trigger variables. Variable is defined by name and value. Other variables also might come from app config. In such case, variables are merged and forwarded to task. |
An example value:
|
|||||||||||||||
Tasks | Task(s) to be started on trigger fire. Multiple tasks could be specified. For each task specific variable values could be specified. |
An example configuration. Variable configuration is optional, as well as output variables configuration. Variables are passed to task, OutputVariables are retrieved after execution of task back to trigger context.
|
|||||||||||||||
Watchdog | Watchdog configuration. Watchdog is IOI functionality for limiting the number of reprocessings of a task. | Configuration for Watchdog
|
Inputs
Null
No input. This input is a dummy to explicitly state that there is no input expected.
Properties | Description | Value / Comment |
---|
HttpContextFile
File HTTP content. This input is specifically used in combination with web service trigger.
Provides transfer of HTTP files into tasks from HTTP request trigger.
Record columns:
- "FileData" = content of file
- "FileName" = Name of file retrieved in HTTP header
Produces one record per file, if content is sent as POST multipart/form-data. For multipart files, headers are also appended.
Properties | Description | Value / Comment | ||||||
---|---|---|---|---|---|---|---|---|
Mode | Input mode Byte - file will be added as byte array into record (default mode) Stream - an opened read stream will be added to record | HTTP Context file transfer method
|
||||||
IncludeHeaders | If true, each HTTP header will be added as record column. | |||||||
IncludeQuery | If true, each query string parameter will be added as record column. | |||||||
IncludePost | If true, each post parameter will be added as record column. | |||||||
IncludeServer | If true, server variables will be added as record columns. |
File
File stream input. This input opens a file from local file system or a shared network path. Uses parser configured in Parser property to
convert file content into records.
Properties | Description | Value / Comment |
---|---|---|
FileName | Input file name physical path. | Example: C:\temp\input_file.xml |
Parser | Parser to be used to convert input stream into records. |
HttpContextParameters
Transfer Http request parameters into record. This input is specifically used in combination with web service trigger.
Produces one record, which contains request's data.
Properties | Description | Value / Comment |
---|---|---|
IncludeHeaders | If true, each HTTP header will be added as record column. | |
IncludeQuery | If true, each query string parameter will be added as record column. | |
IncludePost | If true, each post parameter will be added as record column. | |
IncludeServer | If true, server variables will be added as record columns. |
ISDS
Retrieve data from ISDS ("Informační systém datových schránek") interface.
Can download messages / delivery information, and pass data to IOI processing.
Data can be downloaded and stored in temporary files, or can be processed directly.
Note Please be aware that ISDS input is not functional without SQL database!!!
Properties | Description | Value / Comment | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Action | Action to be executed in ISDS | Action to be executed in ISDS
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IsdsBox | ISDS box connection configuration |
ISDS box connection configuration. An example configuration (in real config, only one Login element will be present.)
|
MemoryStream
MemoryStream input is used by WebService trigger to pass content retrieved from web request into task.
Properties | Description | Value / Comment |
---|---|---|
Parser | Parser to be used to convert input stream into records. |
SqlCommand
SQL Command input element. Executes SQL command and resulting table is transferred into processing. Each result set row will yield an IOI record.
Properties | Description | Value / Comment |
---|---|---|
CommandText | SQL command text. Should result into one result set. | |
CommandParameters | SQL command parameters to be transferred to execution as SQL variable. Name of SQL variable will be equal to parameter name as specified in configuration. Input is protected against SQL injection. |
An example configuration (Simple SQL select with one parameter. Parameters are optional):
|
ConnectionString | Connection string for SQL server database |
WebRequest
Simple REST web request input
Properties | Description | Value / Comment |
---|---|---|
Url | Web request URL | |
Method | Request method - if empty default is GET | |
Params | Web request parameters | |
BodyType | Request body type | |
Boundary | Multipart request boundary | |
TimeoutSeconds | Optional timeout in seconds | |
Parser | Parser to be used to convert input stream into records. |
Parsers
PlainText
Takes input stream and reads it as string.
Outputs one record instance containing whole stream content as text in first column.
Properties | Description | Value / Comment |
---|---|---|
ColumnName | Output column name. Text content of stream will appear in this column. | |
Encoding | Encoding to be used by text parser. If empty, UTF8 is used by default. |
Json
Parser for json inputs.
Output record is produced using jsonpath expression. Each node mathed by jsonpath will produce one record. Columns are also specified by jsonpath expressions, relatively for record node.
For JsonPath reference please visit https://www.newtonsoft.com/json/help/html/QueryJsonSelectToken.htm
Properties | Description | Value / Comment | |||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
RecordJsonPath | JsonPath expression for record(s) | ||||||||||||||||||||||||||||||||||||||||||||||||||
Columns | Xml columns list. |
Configuration example:
JSON column configuration options
|
|||||||||||||||||||||||||||||||||||||||||||||||||
Encoding | Encoding to be used by text parser. If empty, UTF8 is used by default. |
Csv
CSV file parser
A comma-separated values (CSV) file is a delimited text file that uses a comma to separate values. Each line of the file is a data record. First line may be a header row (column names). It is not required, it is optional.
Properties | Description | Value / Comment | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Columns | Specify columns in input data. Available options are listed in comment. If input data contains header row, this list can be empty. |
Example:
Column configuration options
|
|||||||||||||||||||||||||||
FirstRowIsHeader | If true, first row is used as columns header and not considered as data. Values are taken to be column names. | ||||||||||||||||||||||||||||
Separator | Separator character for input data columns. Default value is semicolon (;) | ||||||||||||||||||||||||||||
LineEnd | Separator character of records. Default value is end of line character. | ||||||||||||||||||||||||||||
SkipEmpty | if true, empty columns are skipped. Default false. ; | ||||||||||||||||||||||||||||
Encoding | Encoding to be used by text parser. If empty, UTF8 is used by default. |
FileInfo
Read information about file, do not process its content. Works only if input provides file stream. Content might be provided to record, id specified in Mode property. Columns added by parser:
- FileName
- FileSize
- FileCreatedDate
- FileModifiedDate
- FileData (depending on Mode property, if NoContent or empty, this column is not added)
Properties | Description | Value / Comment | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Mode | File content mode | File info parser modes
|
Xml
Parser for xml inputs.
Output record is produced using xpath expression. Each node mathed by xpath will produce one record. Columns are also specified by xpath expressions, relatively for record node.
For XPath reference please visit https://www.w3schools.com/xml/xpath_intro.asp
Properties | Description | Value / Comment | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
RecordXPath | XPath expression for record(s) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Columns | Xml columns list. |
Configuration example:
XML column configuration options
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
Namespaces | Namespace list with prefixes used in XPATH query | Namespace information for XPATH queries
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
RemoveNamespace | Set this to true, if namespace information should be stripped of before processing. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Encoding | Encoding to be used by text parser. If empty, UTF8 is used by default. |
Outputs
Sends one email for each record in batch.
Requires an SMTP server connection.
Properties | Description | Value / Comment | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Server | SMTP server IP address or hostname | ||||||||||||||||
Port | SMTP server port. Optional. If empty default port is used. | ||||||||||||||||
UseSSL | Use SSL encryption for connection to mail server. Default is false! | ||||||||||||||||
UseDefaultCredentials | If true, IOI application account is used for authentication to the SMTP server. Default is false | ||||||||||||||||
User | User for SMTP authentication (BASIC) | ||||||||||||||||
Password | Password for SMTP authentication (BASIC) If user name is empty, password is ignored and no credentials are passed to the SMTP client. | ||||||||||||||||
Body | Email body. Can contain HTML, if enabled in IsBodyHtml | ||||||||||||||||
IsBodyHtml | Body can contain HTML, if true. Default is false. | ||||||||||||||||
Subject | Email subject | ||||||||||||||||
To | Recipient email address. If multiple, use semicolon as separator. | ||||||||||||||||
From | Email from address | ||||||||||||||||
Cc | Email copy recipient. | ||||||||||||||||
Bcc | Email hidden copy. If multiple, use semicolon as separator. | ||||||||||||||||
ReplyTo | Mail reply address. If multiple, use semicolon as separator. | ||||||||||||||||
Attachments | Email attachments could be sent via this property. An XML data containing references to attachment files needs to be passed into this property. Attachment XML item properties are listed in table in value column. |
An example configuration:
Email attachment item
|
ISDS
Sends one ISDS message per record. Message data can be transferred to output in XML format in single field. Alternatively ISDS outgoing message data can be read from record column. In both cases, ISDS message fields are named according to ISDS API documentation and are either XML columns in record data, or record columns directly.
Note Please be aware that ISDS output is not fully functional without SQL database!!!
Properties | Description | Value / Comment | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
IsdsBox | ISDS connection configuration |
ISDS box connection configuration. An example configuration (in real config, only one Login element will be present.)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MessageColumnName | Column with outgoing message XML data | ISDS message data (to be sent)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MessageAttachmentsColumnName | Column with outgoing message attachments XML data. If full message xml data is available in record (column selected via MessageColumnName property), this will be ignored. | ISDS Message file attachment
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MarkAsDownloaded | Optionally mark the message in the IOI database as downloaded/not downloaded. If marked as not downloaded the message will be downloaded and synced again. |
Null
Output which does nothing. There is required to be defined some output in each task. If no output is needed by the process, this null output can be used.
Properties | Description | Value / Comment |
---|
File
Stream file output (Single file will be created for all records).
Properties | Description | Value / Comment |
---|---|---|
Formatter | Formatter to be used for transforming IRecord instance into stream compatible record format. | |
FileName | Output file name | |
Overwrite | True, if file already there, then overwrite it | |
Append | True, if formatter should append to existing file. If file does not exist, then a new one is created |
Folder
Stream file output (one file per each record)
Properties | Description | Value / Comment |
---|---|---|
Path | Folder path. If folder does not exist, an attempt to create it is done within initialization. Output files are named using FileName property and placed relative folder path specified here. To distinguish file names, record replace tokens can be used in FileName or Path properties. | |
Formatter | Formatter to be used for transforming IRecord instance into stream compatible record format. | |
FileName | Output file name | |
Overwrite | True, if file already there, then overwrite it | |
Append | True, if formatter should append to existing file. If file does not exist, then a new one is created |
HttpContextFile
Multipart enabled file response. Can return content of single file or multipart response.
Used in combination with HTTP server installed instance. Typical usage is in web service scenario, to return server response from IOI to client.
Properties | Description | Value / Comment |
---|---|---|
FileHeaders | for each record specific headers might be set. Meant to be used mainly with multipart mode | |
FileName | Output filename (for multipart evaluated for each file) | |
ContentType | Output content type (for multipart will be evaluated per file, overall header will be set to multipart/form-data) | |
Multipart | If true and only one file is specified, response will still be in multipart mode | |
FileData | File content record column name |
Memory
Memory output (stores all processed records in memory collection). To be used programmatically by external code.
Properties | Description | Value / Comment |
---|
SBOBusinessObject
This output provides integration to SAP Business one third party software. Uses API integration and allows users to create or update business objects in SBO.
Properties | Description | Value / Comment | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ObjectType | DBO business object type name (SAPbobsCOM.BoObjectTypes enum). Eg.: oPurchaseInvoices, oOrders, oDrafts etc | ||||||||||||||||||||||||||||||
AddAsDraft | If true, object is added as draft | ||||||||||||||||||||||||||||||
AllowUpdate | By default true, enables update. | ||||||||||||||||||||||||||||||
AllowAdd | By default true, enables insert. | ||||||||||||||||||||||||||||||
KeyName | Key column name | ||||||||||||||||||||||||||||||
Properties | Object properties configuration. List all SBO properties and specify their values here. | SAP Business One business object property configuration
|
SqlCommand
Execute SQL query per each record in batch
Properties | Description | Value / Comment |
---|---|---|
CommandText | SQL command to be executed. Each column value will be available as parameter (an SQL variable with name equal to column name) | |
ConnectionString | Connection string for SQL server database |
SqlProcedure
Execute SQL server stored procedure for each record in batch. Record columns will be mapped by matching name to procedure parameters
Properties | Description | Value / Comment |
---|---|---|
Name | SQL server procedure name | |
Timeout | Execution timeout in seconds. Default value is 30 | |
ConnectionString | Connection string for SQL server database |
Formatters
Xml
Simple XML output formatter. Will emit one XML element per record. If columns are not configured in formatter, all record data will be in output.
Properties | Description | Value / Comment | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Columns | columns configuration (if configured, only columns specified will be in output) | Column configuration options
|
Binary
Outputs data as binary content
If column content is byte array, it is written directly to output stream
If column content is stream, it is copied to output stream
Properties | Description | Value / Comment |
---|---|---|
ColumnName | Data column |
Csv
Format data into text delimited format (CSV).
Properties | Description | Value / Comment | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Columns | CSV columns list | Column configuration options
|
|||||||||||||||||||||||||||
FirstRowIsHeader | If true, first row is used as columns header and not considered as data Values are taken to be column names | ||||||||||||||||||||||||||||
Separator | Separator for CSV columns | ||||||||||||||||||||||||||||
LineEnd | Line end character(s), used as record separator. Default values is default OS environment's newline constant. |
PlainText
Write one column's content into output stream as string content
Properties | Description | Value / Comment |
---|---|---|
ColumnName | Source data colum, data in this column will be written into output stream. Default value is "Data". |
Xslt
Generate output using XSLT transformation. It can either be the case, that data in first column is XML, then this content is used as source data for transformation.
Otherwise, XML document is generated using all data in record and then XSLT transformation is applied.
Properties | Description | Value / Comment | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Columns | columns list (if configured, only columns specified will be in output) | Column configuration options
|
|||||||||||||||||||||||||||
Xslt | XSLT used for output formatting | ||||||||||||||||||||||||||||
XsltFile | XSLT file path (if external sheet is to be loaded) |
Task Processors
CodeProcessor
Custom C# code to be executed. Code is compiled and executed per each record. There are these methods available:
- GetVariable(string) - get variable value
- SetVariable(string, string) - set variable value
- WriteLog(string) - write log entry
- NewRecord() - create new output item
- SetValue(string,object) - set record value
- GetValue(string) - get record value
Properties | Description | Value / Comment |
---|---|---|
Code | C# code to be executed | |
Data | Input data for evaluate code | |
Output | Output variable name. |
CsomCodeProcessor
Custom C# code to be executed. Code is compiled and executed per each record. SharePoint CSOM context is available in "ctx" variable. There are these methods available:
- GetVariable(string) - get variable value
- SetVariable(string, string) - set variable value
- WriteLog(string) - write log entry
- NewRecord() - create new output item
- SetValue(string,object) - set record value
- GetValue(string) - get record value
Properties | Description | Value / Comment | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Code | C# code to be executed | ||||||||||
Data | Input data for evaluate code | Column configuration model class
|
|||||||||
Output | Output variable name. | ||||||||||
WebUrl | SharePoint Web url. Activity connects to SharePoint web which is specified by this property. | ||||||||||
IsOnline | Set this to true, if web is online Sharepoint (O365) | ||||||||||
User | Login user name (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | ||||||||||
Password | Login password (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | ||||||||||
ClientId | Application client ID NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | ||||||||||
ClientSecret | Application authentication client secret NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | ||||||||||
UseAppCred | Should be set to true, if application authentication is used NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint |
DeleteFolderProcessor
Delete folder and its content from disk
Properties | Description | Value / Comment |
---|---|---|
SkipIfNotExists | If folder does not exist, skip processing and do not throw error. Default is true. | |
Recursive | If directory is not empty, delete its content. Default true. | |
Path | Path to be deleted |
ExtractZipProcessor
Extract ZIP archive into a folder
Properties | Description | Value / Comment |
---|---|---|
Path | Path to ZIP file | |
Target | Folder where the ZIP should be extracted. |
IfProcessor
Conditional processor. Expression is evaluated (expression uses JavaScript syntax) and if true is result of expression evaluation, processors in Success list are executed. Otherwise Else list processors are executed.
Properties | Description | Value / Comment |
---|---|---|
Success | Processors to be executed, if "if" condition is equal to true | |
Else | Processors to be executed, if "if" condition is equal to false |
MoveDirectoryProcessor
Move directory to different location
Properties | Description | Value / Comment |
---|---|---|
MergeContents | If true, content of moved directory and destination directory (if exists) are merged. Default is false. | |
OverwriteContents | If merge is enabled and a file exists in both directories, overwrite destination with source? Default is true. | |
SkipIfNotExists | If true, no error is thrown id From does not exist. Default value is false. | |
From | Path to processed directory | |
To | Path target directory |
CopyFileProcessor
Copy file to another location
Properties | Description | Value / Comment |
---|---|---|
SkipIfNotExists | If file does not exist, do not throw error. Default is false. | |
From | Path to move/copy file from (source path) | |
To | Path to move/copy file to (destination path) |
GetCacheProcessor
Get cache value processor
Properties | Description | Value / Comment |
---|---|---|
Key | Key of the cached value. | |
OutputVariable | Output variable name, where the result is stored. |
SetCacheProcessor
Set cache value processor
Properties | Description | Value / Comment |
---|---|---|
Key | Key of the cache value. | |
Expiration | Expiration of the cached value. | |
Value | The value to be set. |
OAuth2TokenProcessor
OAuth2 token processor
Properties | Description | Value / Comment |
---|---|---|
TokenName | Key of the token for cache purposes. | |
AccessTokenUrl | The endpoint for authentication server. | |
ClientID | The client identifier issued to the client during Application registration process. | |
ClientSecret | The client secret issued to the client during Application registration process. | |
Scope | The scope of the access request. It may have multiple space-delimited values. | |
OutputVariable | Variable name to store authorization token. |
ReadFileProcessor
Read file content
Properties | Description | Value / Comment | ||||||
---|---|---|---|---|---|---|---|---|
VariableName | Content of file | |||||||
SkipIfNotExists | If file does not exist, skip processing and do not throw error | |||||||
Path | Input file path | |||||||
VariableName | Target variable to store contents of the file | |||||||
Mode | File content mode | |||||||
Encoding | Encoding for text file | File value type
|
SendEmailProcessor
Send email task processor
Properties | Description | Value / Comment | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Server | SMTP server IP address or hostname | ||||||||||||||||
Port | SMTP server port. Optional. If empty default port is used. | ||||||||||||||||
UseSSL | Use SSL encryption for connection to mail server. Default is false! | ||||||||||||||||
UseDefaultCredentials | If true, IOI application account is used for authentication to the SMTP server. Default is false | ||||||||||||||||
User | User for SMTP authentication (BASIC) | ||||||||||||||||
Password | Password for SMTP authentication (BASIC) If user name is empty, password is ignored and no credentials are passed to the SMTP client. | ||||||||||||||||
Body | Email body. Can contain HTML, if enabled in IsBodyHtml | ||||||||||||||||
IsBodyHtml | Body can contain HTML, if true. Default is false. | ||||||||||||||||
Subject | Email subject | ||||||||||||||||
To | Recipient email address. If multiple, use semicolon as separator. | ||||||||||||||||
From | Email from address | ||||||||||||||||
Cc | Email copy recipient. | ||||||||||||||||
Bcc | Email hidden copy. If multiple, use semicolon as separator. | ||||||||||||||||
ReplyTo | Mail reply address. If multiple, use semicolon as separator. | ||||||||||||||||
Attachments | Email attachments could be sent via this property. An XML data containing references to attachment files needs to be passed into this property. Attachment XML item properties are listed in table in value column. |
An example configuration:
Email attachment item
|
SwitchProcessor
Conditional processor, evaluates expression and processors in corresponding case are executed
Properties | Description | Value / Comment | ||||||
---|---|---|---|---|---|---|---|---|
Cases | List of case statements | Conditional command case
|
||||||
Default | Processors to be executed, when all "case" statements evaluate to false |
WaitProcessor
Pause processing for specified timespan
Properties | Description | Value / Comment |
---|---|---|
Milliseconds | Wait interval in milliseconds |
WebRequestProcessor
Http(s) web request processor. Execute http request and store result in variable
Properties | Description | Value / Comment | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Url | Web request URL | |||||||||||||
Method | Request method - if empty default is GET | |||||||||||||
UseDefaultCredentials | For digest authentization, set true | |||||||||||||
Body | Request body | |||||||||||||
BodyType | Request body type. Default is String. | Web request body part types
|
||||||||||||
Params | List of web request parameters | Web request parameter value
|
||||||||||||
Headers | List of web request headers | Web request parameter value
|
||||||||||||
AllowedResponseCodes | List of web request allowed response codes | HTTP Response code
|
||||||||||||
AnyResponseCodeAllowed | True if no response code should throw processing exception | |||||||||||||
Output | Output variable name. | |||||||||||||
Outputs | List of output variables. | |||||||||||||
BodyParts | List of body parts | Multipart body part
|
||||||||||||
Boundary | Multipart request boundary | |||||||||||||
ResponseEncoding | Response mode | |||||||||||||
TimeoutSeconds | Optional timeout in seconds |
WriteFileProcessor
Write content into a file
Properties | Description | Value / Comment |
---|---|---|
Contents | ||
Content | String content to be written | |
Path | Output file name | |
Overwrite | True, if file already then overwrite it | |
Append | True, if formatter appends to existing file. If file does not exist, then it is created | |
Encoding | File content encoding |
SetVariableProcessor
Set variable value
Properties | Description | Value / Comment |
---|---|---|
Value | Variable value | |
Variable | Engine variable name | |
Name | Engine variable name (can be specified in Name or Variable property - they are equal) |
ExecuteSqlProcessor
Execute SQL command in batch pre/post processing
Properties | Description | Value / Comment | |||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Mode | Command result processing mode | SQL command execution types
|
|||||||||||||||||||||||||||||||||||||||||||||||
Output | Output variable name. In case of using Scalar / Table mode, result is stored in this variable. | ||||||||||||||||||||||||||||||||||||||||||||||||
Outputs | Output variables. In case of using Scalar / Table mode, result is stored in these variables. | Output SQL data to variable (<Output Type="Variable" />)
|
|||||||||||||||||||||||||||||||||||||||||||||||
CommandText | Executed query SQL command. |
For passing values to SQL commands, preffered way is SQL parameters. Parameter as variable can be passed to command using CommandParameters configuration property. This way of parameter passing handles correctly encoding of strings and also incorporates .NET built in SQL injection protection. If for some reason variable parameters are not used and string parameters are passed as replace token in SQL string constant, it is recomended to use N prefix in SQL string constant to use nvarchar type to avoid character encoding issues. An example configuration for constant string parameters:
|
|||||||||||||||||||||||||||||||||||||||||||||||
CommandTimeout | Default 30 seconds | ||||||||||||||||||||||||||||||||||||||||||||||||
MaxRetryAttempts | Default 5 retries | ||||||||||||||||||||||||||||||||||||||||||||||||
CommandParameters | List of SQL command parameters | SQL command parameter
|
|||||||||||||||||||||||||||||||||||||||||||||||
ConnectionString | Optional connection string. If empty, default application connection string is used. |
MoveFileProcessor
Move file to another location
Properties | Description | Value / Comment |
---|---|---|
SkipIfNotExists | If file does not exist, do not throw error. Default is false. | |
From | Path to move/copy file from (source path) | |
To | Path to move/copy file to (destination path) |
WriteLogProcessor
Write message to system log
Properties | Description | Value / Comment | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Value | Message to be written to log | |||||||||||||||
Message | Alternative to Value property | |||||||||||||||
LogLevel | Log message level ("Info" by default) | Log levels
|
Record Processors
CodeProcessor
Custom C# code to be executed. Code is compiled and executed. There are these methods available:
- GetVariable(string) - get variable value
- SetVariable(string, string) - set variable value
- WriteLog(string) - write log entry
- NewRecord() - create new output item
- SetValue(string,object) - set record value
- GetValue(string) - get record value
Properties | Description | Value / Comment |
---|---|---|
Code | C# code to be executed | |
Data | Input data for evaluate code | |
Output | Output variable name. |
ConvertBase64ToBytesProcessor
Converts Base64 string into byte array
Properties | Description | Value / Comment |
---|---|---|
ColumnName | Column where data to be converted are stored. It is also destination. | |
OutputColumnName | Variable where data to be converted are stored. It is also destination. | |
VariableName | Variable where data to be converted are stored. It is also destination. | |
OutputVariableName | If empty, output is written to source variable |
ConvertIsdocToPdfProcessor
Create PDF from ISDOC invoice data
Properties | Description | Value / Comment |
---|---|---|
ColumnName | ISDOC data | |
OutputPath | Output PDF file path | |
WatermarkFilePath | If watermark is required to be added, path to file with wattermark | |
Lang | PDF Langugage |
ConvertStringToBase64Processor
Get bytes from string using UTF8 encoding and convert it to Base64 string
Properties | Description | Value / Comment |
---|---|---|
ColumnName | Column where data to be converted are stored. It is also destination. | |
OutputColumnName | Variable where data to be converted are stored. It is also destination. | |
VariableName | Variable where data to be converted are stored. It is also destination. | |
OutputVariableName | If empty, output is written to source variable |
CsomUploadFileProcessor
Downloads a file from SharePoint.
Properties | Description | Value / Comment |
---|---|---|
ServerRelativeUrl | Server relative URL of a file which is to be uploaded. | |
FileContentColumn | File content will be uploaded from record. String value of this property will be used for record column name. | |
FilePath | File content will be uploaded from a file. String value of this property will be used as file path from which to get the data. | |
AllowOverwriteFile | By default false, enables file to be overwritten. | |
WebUrl | SharePoint Web url. Activity connects to SharePoint web which is specified by this property. | |
IsOnline | Set this to true, if web is online Sharepoint (O365) | |
User | Login user name (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | |
Password | Login password (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | |
ClientId | Application client ID NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | |
ClientSecret | Application authentication client secret NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | |
UseAppCred | Should be set to true, if application authentication is used NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint |
CsomDownloadFileProcessor
Downloads a file from SharePoint.
Properties | Description | Value / Comment |
---|---|---|
ServerRelativeUrl | Server relative URL to a file which is to be downloaded. | |
FileContentColumn | File content will be loaded into record. Needs SharePoint item retrieved to be a document. String value of this property will be used for record column name. | |
FilePath | File content will be loaded and saved as file. Needs SharePoint item retrieved to be a document. String value of this property will be used as file path to store the data. | |
WebUrl | SharePoint Web url. Activity connects to SharePoint web which is specified by this property. | |
IsOnline | Set this to true, if web is online Sharepoint (O365) | |
User | Login user name (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | |
Password | Login password (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | |
ClientId | Application client ID NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | |
ClientSecret | Application authentication client secret NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | |
UseAppCred | Should be set to true, if application authentication is used NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint |
CsomCodeProcessor
Custom C# code to be executed. Code is compiled and executed per each record. SharePoint CSOM context is available in "ctx" variable. There are these methods available:
- GetVariable(string) - get variable value
- SetVariable(string, string) - set variable value
- WriteLog(string) - write log entry
- NewRecord() - create new output item
- SetValue(string,object) - set record value
- GetValue(string) - get record value
Properties | Description | Value / Comment | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Code | C# code to be executed | ||||||||||
Data | Input data for evaluate code | Column configuration model class
|
|||||||||
Output | Output variable name. | ||||||||||
WebUrl | SharePoint Web url. Activity connects to SharePoint web which is specified by this property. | ||||||||||
IsOnline | Set this to true, if web is online Sharepoint (O365) | ||||||||||
User | Login user name (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | ||||||||||
Password | Login password (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | ||||||||||
ClientId | Application client ID NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | ||||||||||
ClientSecret | Application authentication client secret NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | ||||||||||
UseAppCred | Should be set to true, if application authentication is used NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint |
CsomCopyItemProcessor
Copy SharePoint item using CSOM
Properties | Description | Value / Comment | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
ItemId | Updated item id | ||||||||||
Fields | List of fields to be updated | ||||||||||
ExcludeFields | Fields to be excluded | Sharepoint column
|
|||||||||
NewTitle | New item title | ||||||||||
OutputFields | After processing field, set specified column values to record data | ||||||||||
List | List url or name. This is primary identification of list which should be used by activity. | ||||||||||
ListTitle | List title. If list is not found by value of List property, lookup by list title using value in this property is used. If this property has empty value, lookup by title is executed using List property value. Note: This property is kept for backward compatibility reasons and will be deprecated in future. | ||||||||||
WebUrl | SharePoint Web url. Activity connects to SharePoint web which is specified by this property. | ||||||||||
IsOnline | Set this to true, if web is online Sharepoint (O365) | ||||||||||
User | Login user name (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | ||||||||||
Password | Login password (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | ||||||||||
ClientId | Application client ID NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | ||||||||||
ClientSecret | Application authentication client secret NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | ||||||||||
UseAppCred | Should be set to true, if application authentication is used NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint |
DeleteFileProcessor
Delete file on disk
Properties | Description | Value / Comment |
---|---|---|
SkipIfNotExists | If file does not exist, skip processing and do not throw error | |
Path | Path to be deleted |
DeleteFolderProcessor
Delete folder from disk
Properties | Description | Value / Comment |
---|---|---|
SkipIfNotExists | If folder does not exist, skip processing and do not throw error. Default is true. | |
Recursive | If directory is not empty, delete its content. Default true. | |
Path | Path to be deleted |
ExecuteWorkflowActionsProcessor
Connect to a WFE workflow instance and execute actions
Properties | Description | Value / Comment |
---|---|---|
WfInstanceId | GUID, workflow instance where actions will be executed | |
ActionData | Data of workflow actions. If multiple, element needs to be in root | |
IsOnline | True if site and workflow are online | |
Password | for OnPrem, if different then current identity should be used | |
UserName | for OnPrem, if different then current identity should be used | |
WebUrl | SharePoint web URL |
GetCacheProcessor
Get cache processor
Properties | Description | Value / Comment |
---|---|---|
Key | Key of the cached value. | |
OutputVariable | Output variable name, where the result is stored. |
SetCacheProcessor
Set cache processor
Properties | Description | Value / Comment |
---|---|---|
Key | Key of the cache value. | |
Expiration | Expiration of the cached value. | |
Value | The value to be set. |
OAuth2TokenProcessor
OAuth2 token processor
Properties | Description | Value / Comment |
---|---|---|
TokenName | Key of the token for cache purposes. | |
AccessTokenUrl | The endpoint for authentication server. | |
ClientID | The client identifier issued to the client during Application registration process. | |
ClientSecret | The client secret issued to the client during Application registration process. | |
Scope | The scope of the access request. It may have multiple space-delimited values. | |
OutputVariable | Variable name to store authorization token. |
XmlValidateProcessor
Regular expression validator. If condition is not satisfied, record exception is thrown.
Properties | Description | Value / Comment |
---|---|---|
Xsd | XSD used for XML validation | |
XsdFile | XSD file path (if external file is to be loaded) | |
ColumnName | Name of record column to be validated | |
Value | Directly specified value to be validated. This overrides ColumnName attribute, if both are specified. |
SwitchProcessor
Conditional processor, evaluates expression and processors in corresponding case are executed
Properties | Description | Value / Comment |
---|---|---|
Cases | List of case statements | |
Default | Processors to be executed, when all "case" statements evaluate to false |
IsdsExtractZfoProcessor
Extract message data from ZFO file
Properties | Description | Value / Comment |
---|---|---|
IsSent | true if message is sent message. Default false. | |
ZfoFileName | FileName of ZFO file | |
Path | Path where ZFO file is located and message will be extracted. |
ExtractZipProcessor
Extract ZIP file to a folder
Properties | Description | Value / Comment |
---|---|---|
Path | Path to ZIP file | |
Target | Folder where the ZIP should be extracted. |
ForeachProcessor
Iterate thru items and execute tasks per each item.
Input can be XML, JSON o delimited data. Query is specific by input
- For XML, query is in XPATH
- For JSON, query is in JSONPath
- For delimited data it is delimiter
Properties | Description | Value / Comment |
---|---|---|
Data | Input data | |
DataColumn | Record column containing data | |
DataType | Type of data to be expected as input | |
Query | Query specific by content - For XML, query is in XPATH - For JSON, query is in JSONPath - For delimited data it is delimiter | |
OrderBy | Order By query specific by content - For XML, query is in XPATH - For JSON, query is JSONPath - For delimited data it not applied - non empty string means ordering by value | |
OrderDataType | Order by data type | |
ItemVariable | Name of variable in which item is stored | |
IndexVariable | Name of variable for index storing | |
IndexBeforeOrderVariable | Name of variable for index before sorting storing | |
Reverse | Flag indicating reverse loop processing | |
Actions | Actions to be executed for each item |
IfProcessor
Conditional code processor. Expression is evaluated and for true result, Success processors are executed. Otherwise, Else processors are executed.
Properties | Description | Value / Comment |
---|---|---|
Success | Processors to be executed, if "if" condition is equal to true | |
Else | Processors to be executed, if "if" condition is equal to false |
ErrorProcessor
Skip the current record processing (throws an error)
Properties | Description | Value / Comment |
---|---|---|
Message | Error message |
IsdsSendMessageProcessor
Send new ISDS message
Properties | Description | Value / Comment |
---|---|---|
Login | Authentication for ISDS box In type attribute, one of the values needs to be specified: UserPassword/Host/Certificate | |
MessageEnvelope | Message envelope data | |
Attachments | List of attachment files |
CopyDirectoryProcessor
Copy directory to another location
Properties | Description | Value / Comment |
---|---|---|
Overwrite | Overwrite existing files |
MoveDirectoryProcessor
Move directory to another location
Properties | Description | Value / Comment |
---|---|---|
MergeContents | If true, content of moved directory and destination directory (if exists) are merged. Default is false. | |
OverwriteContents | If merge is enabled and a file exists in both directories, overwrite destination with source? Default is true. | |
SkipIfNotExists | If true, no error is thrown id From does not exist. Default value is false. | |
From | Path to processed directory | |
To | Path target directory |
QueryXMLProcessor
Execute XPath query and set value to variable
Properties | Description | Value / Comment |
---|---|---|
Data | Input data | |
DataColumn | Record column containing data | |
XPath | XPath query | |
Output | Variable name to store query output | |
OutputColumnName | If to be outputted to record, the column name |
RunWorkflowProcessor
Start Workflow Engine (WFE) workflow for SharePoint item
Properties | Description | Value / Comment |
---|---|---|
ItemId | Item ID of item to start workflow on | |
Workflow | Start WFE workflow internal name | |
Async | If true, processor will not wait for web service response. | |
Timeout | Timeout in seconds for web service call | |
List | List url or name. This is primary identification of list which should be used by activity. | |
ListTitle | List title. If list is not found by value of List property, lookup by list title using value in this property is used. If this property has empty value, lookup by title is executed using List property value. Note: This property is kept for backward compatibility reasons and will be deprecated in future. | |
WebUrl | SharePoint Web url. Activity connects to SharePoint web which is specified by this property. | |
IsOnline | Set this to true, if web is online Sharepoint (O365) | |
User | Login user name (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | |
Password | Login password (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | |
ClientId | Application client ID NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | |
ClientSecret | Application authentication client secret NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | |
UseAppCred | Should be set to true, if application authentication is used NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint |
SendEmailProcessor
Send email using SMTP client
Properties | Description | Value / Comment | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Server | SMTP server IP address or hostname | ||||||||||||||||
Port | SMTP server port. Optional. If empty default port is used. | ||||||||||||||||
UseSSL | Use SSL encryption for connection to mail server. Default is false! | ||||||||||||||||
UseDefaultCredentials | If true, IOI application account is used for authentication to the SMTP server. Default is false | ||||||||||||||||
User | User for SMTP authentication (BASIC) | ||||||||||||||||
Password | Password for SMTP authentication (BASIC) If user name is empty, password is ignored and no credentials are passed to the SMTP client. | ||||||||||||||||
Body | Email body. Can contain HTML, if enabled in IsBodyHtml | ||||||||||||||||
IsBodyHtml | Body can contain HTML, if true. Default is false. | ||||||||||||||||
Subject | Email subject | ||||||||||||||||
To | Recipient email address. If multiple, use semicolon as separator. | ||||||||||||||||
From | Email from address | ||||||||||||||||
Cc | Email copy recipient. | ||||||||||||||||
Bcc | Email hidden copy. If multiple, use semicolon as separator. | ||||||||||||||||
ReplyTo | Mail reply address. If multiple, use semicolon as separator. | ||||||||||||||||
Attachments | Email attachments could be sent via this property. An XML data containing references to attachment files needs to be passed into this property. Attachment XML item properties are listed in table in value column. |
An example configuration:
Email attachment item
|
SetFormatProcessor
Set record column format. If column not found, nothing happens.
Properties | Description | Value / Comment |
---|---|---|
ColumnName | Column name | |
Format | Format to be set. |
TiSaTableProcessor
TreeINFO advanced table value processor (can add rows, delete rows or update cell values)
Properties | Description | Value / Comment | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Variable | Variable name | |||||||||||||
ColumnName | Column name | |||||||||||||
OutputVariable | Variable name | |||||||||||||
OutputColumnName | Column name | |||||||||||||
AddRows | List of cell values (rows) to be added | TreeINFO Table row
|
||||||||||||
DeleteRowIndexes | Row indexes to delete | |||||||||||||
EditCells | List of cells to edit | TreeINFO table cell with value
|
||||||||||||
GetCellValue | Cell value to return |
StopWorkflowProcessor
Stop Sabris Workflow Engine (WFE) workflow
Properties | Description | Value / Comment |
---|---|---|
ItemId | Item ID of item to start workflow on | |
Workflow | Start WFE workflow internal name | |
Async | If true, processor will not wait for web service response. | |
Timeout | Timeout in seconds for web service call | |
List | List url or name. This is primary identification of list which should be used by activity. | |
ListTitle | List title. If list is not found by value of List property, lookup by list title using value in this property is used. If this property has empty value, lookup by title is executed using List property value. Note: This property is kept for backward compatibility reasons and will be deprecated in future. | |
WebUrl | SharePoint Web url. Activity connects to SharePoint web which is specified by this property. | |
IsOnline | Set this to true, if web is online Sharepoint (O365) | |
User | Login user name (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | |
Password | Login password (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | |
ClientId | Application client ID NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | |
ClientSecret | Application authentication client secret NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | |
UseAppCred | Should be set to true, if application authentication is used NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint |
TiSaReferenceProcessor
Handle TiSa reference field value
Properties | Description | Value / Comment |
---|---|---|
ColumnName | Column name for storage of ref AT data | |
Query | CAML query | |
Scope | Sharepoint query scope | |
Fields | Reference table additional fields | |
TitleField | If not empty, title reference table title field | |
List | List url or name. This is primary identification of list which should be used by activity. | |
ListTitle | List title. If list is not found by value of List property, lookup by list title using value in this property is used. If this property has empty value, lookup by title is executed using List property value. Note: This property is kept for backward compatibility reasons and will be deprecated in future. | |
WebUrl | SharePoint Web url. Activity connects to SharePoint web which is specified by this property. | |
IsOnline | Set this to true, if web is online Sharepoint (O365) | |
User | Login user name (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | |
Password | Login password (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | |
ClientId | Application client ID NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | |
ClientSecret | Application authentication client secret NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | |
UseAppCred | Should be set to true, if application authentication is used NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint |
WaitProcessor
Pause processing for specified timespan
Properties | Description | Value / Comment |
---|---|---|
Milliseconds | Wait interval in milliseconds |
WriteLogProcessor
Write message to log
Properties | Description | Value / Comment |
---|---|---|
Value | Message to be written to log | |
Message | Alternative to Value property | |
LogLevel | Log message level ("Info" by default) |
PdfSignatureInfoProcessor
Read electronic signature information from a PDF file
Properties | Description | Value / Comment |
---|---|---|
FilePath | PDF File path | |
SignatureCountVariable | Set count of electronic signatures in pdf file to a variable |
Serialize
Serialize record into one column value.
Properties | Description | Value / Comment | ||||
---|---|---|---|---|---|---|
ColumnName | Output column | |||||
Columns | Columns to be included in output. If empty, all columns will be used | |||||
SerializeType | Type of serialization. XML is default | Record serialization modes
|
SkipProcessor
Skip the current record processing
Properties | Description | Value / Comment |
---|
ConvertJsonToXmlProcessor
Convert JSON data to XML
Properties | Description | Value / Comment |
---|---|---|
ColumnName | Column where data to be converted are stored. It is also destination. | |
OutputColumnName | Variable where data to be converted are stored. It is also destination. | |
VariableName | Variable where data to be converted are stored. It is also destination. | |
OutputVariableName | If empty, output is written to source variable |
ConvertXmlToJsonProcessor
Convert XML data into JSON object value
Properties | Description | Value / Comment |
---|---|---|
FormatAsTreeInfoAT | If true, json data is formatted as TreeINFO advanced table. Default false | |
ColumnName | Column where data to be converted are stored. It is also destination. | |
OutputColumnName | Variable where data to be converted are stored. It is also destination. | |
VariableName | Variable where data to be converted are stored. It is also destination. | |
OutputVariableName | If empty, output is written to source variable |
CsomUpdateItemProcessor
Update SharePoint item using CSOM
Properties | Description | Value / Comment |
---|---|---|
ItemId | Updated item id | |
Fields | Fields to be updated | |
List | List url or name. This is primary identification of list which should be used by activity. | |
ListTitle | List title. If list is not found by value of List property, lookup by list title using value in this property is used. If this property has empty value, lookup by title is executed using List property value. Note: This property is kept for backward compatibility reasons and will be deprecated in future. | |
WebUrl | SharePoint Web url. Activity connects to SharePoint web which is specified by this property. | |
IsOnline | Set this to true, if web is online Sharepoint (O365) | |
User | Login user name (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | |
Password | Login password (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | |
ClientId | Application client ID NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | |
ClientSecret | Application authentication client secret NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | |
UseAppCred | Should be set to true, if application authentication is used NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint |
ExecuteSqlProcessor
Execute SQL command
Properties | Description | Value / Comment | |||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Mode | Command result processing mode | SQL command execution types
|
|||||||||||||||||||||||||||||||||||||||||||||||
Output | Output variable name. In case of using Scalar / Table mode, result is stored in this variable. | ||||||||||||||||||||||||||||||||||||||||||||||||
Outputs | Output variables. In case of using Scalar / Table mode, result is stored in these variables. | Output SQL data to variable (<Output Type="Variable" />)
|
|||||||||||||||||||||||||||||||||||||||||||||||
CommandText | Executed query SQL command. |
For passing values to SQL commands, preffered way is SQL parameters. Parameter as variable can be passed to command using CommandParameters configuration property. This way of parameter passing handles correctly encoding of strings and also incorporates .NET built in SQL injection protection. If for some reason variable parameters are not used and string parameters are passed as replace token in SQL string constant, it is recomended to use N prefix in SQL string constant to use nvarchar type to avoid character encoding issues. An example configuration for constant string parameters:
|
|||||||||||||||||||||||||||||||||||||||||||||||
CommandTimeout | Default 30 seconds | ||||||||||||||||||||||||||||||||||||||||||||||||
MaxRetryAttempts | Default 5 retries | ||||||||||||||||||||||||||||||||||||||||||||||||
CommandParameters | List of SQL command parameters | SQL command parameter
|
|||||||||||||||||||||||||||||||||||||||||||||||
ConnectionString | Optional connection string. If empty, default application connection string is used. |
ExecuteXsltProcessor
Execute XSLT Transformation
For extension functions, add attribute xmlns:ioi="urn:ioi" to root tag
Properties | Description | Value / Comment |
---|---|---|
ColumnName | Input XML data column for transformation | |
VariableName | Input XML data variable for transformation | |
Xslt | XSLT used for output formatting | |
XsltFile | XSLT file path (if external sheet is to be loaded) | |
OmitXmlDeclaration | Default false, XSLT transformation outputs XML declaration. If set to true, no declaration is written. | |
Indent | Default true, output XML is indented | |
LogContent | Extended content logging | |
ConformanceLevel | Conformance level - document of fragment |
CopyFileProcessor
Copy file to another location
Properties | Description | Value / Comment |
---|---|---|
SkipIfNotExists | If file does not exist, do not throw error. Default is false. | |
From | Path to move/copy file from (source path) | |
To | Path to move/copy file to (destination path) |
MoveFileProcessor
Move file to another location
Properties | Description | Value / Comment |
---|---|---|
SkipIfNotExists | If file does not exist, do not throw error. Default is false. | |
From | Path to move/copy file from (source path) | |
To | Path to move/copy file to (destination path) |
QueryADProcessor
Execute query in AD and set results to record
Properties | Description | Value / Comment | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Query | LDAP query Example to find user by login name: (&(objectCategory=person)(objectClass=user)(sAMAccountName=**login**)) | ||||||||||||||||||||||||||||
SearchRoot | An optional value indicating the node in the Active Directory Domain Services hierarchy where the search starts. Example: LDAP://DC=int,DC=example | ||||||||||||||||||||||||||||
Properties | Properties to load from AD. Each retrieved property value will be set to record column. | Column configuration options
|
QuerySPProcessor
Execute CAML query in SharePoint using CSOM service.
CAML queries documentation: https://learn.microsoft.com/en-us/sharepoint/dev/schema/query-schema
Properties | Description | Value / Comment |
---|---|---|
Query | SharePoint CAML query | |
Scope | Sharepoint query scope | |
OutputFields | After processing field, set specified column values to record data | |
FileContentColumn | If not empty, file content will be loaded into record. Needs SharePoint item retrieved to be a document. String value of this property will be used for record column name. | |
List | List url or name. This is primary identification of list which should be used by activity. | |
ListTitle | List title. If list is not found by value of List property, lookup by list title using value in this property is used. If this property has empty value, lookup by title is executed using List property value. Note: This property is kept for backward compatibility reasons and will be deprecated in future. | |
WebUrl | SharePoint Web url. Activity connects to SharePoint web which is specified by this property. | |
IsOnline | Set this to true, if web is online Sharepoint (O365) | |
User | Login user name (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | |
Password | Login password (if using basic authentication). Otherwise empty. NOTE: For security reasons, basic authentication should be avoided where possible. | |
ClientId | Application client ID NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | |
ClientSecret | Application authentication client secret NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint | |
UseAppCred | Should be set to true, if application authentication is used NOTE: Application authentication or integrated authentication is preferred way of authenticating to SharePoint |
ReadFileProcessor
Read file content
Properties | Description | Value / Comment | ||||||
---|---|---|---|---|---|---|---|---|
ColumnName | Content of file | |||||||
SkipIfNotExists | If file does not exist, skip processing and do not throw error | |||||||
Path | Input file path | |||||||
VariableName | Target variable to store contents of the file | |||||||
Mode | File content mode | |||||||
Encoding | Encoding for text file | File value type
|
RegexValidateProcessor
Regular expression validator. If condition is not satisfied, record exception is thrown.
Properties | Description | Value / Comment |
---|---|---|
Regex | Validation regular expression | |
ColumnName | Name of record column to be validated | |
Value | Directly specified value to be validated. This overrides ColumnName attribute, if both are specified. |
SetValueProcessor
Set record column value. If column not found, it is added.
Properties | Description | Value / Comment |
---|---|---|
ColumnName | Column name | |
Value | New column value |
SetVariableProcessor
Ser IOI engine runtime variable value
Properties | Description | Value / Comment |
---|---|---|
Value | Variable value | |
Variable | Engine variable name | |
Name | Engine variable name (alternative property mapped to "Variable") |
PdfSignProcessor
Add electronic signature to a PDF file
Properties | Description | Value / Comment | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FilePath | PDF File path | |||||||||||||
CertThumbprint | Certificate thumbprint | |||||||||||||
SignPosition | Signature position | Signature position
|
||||||||||||
OffsetX | Signature X Offset | |||||||||||||
OffsetY | Signature Y Offset | |||||||||||||
PreventDoubleSign | If true, processor checks if file was already signed. If yes, signing is skipped. | |||||||||||||
Visibility | Visibility of signature | Visibility of signature
|
||||||||||||
Background | Signature background | |||||||||||||
Width | Signature width | |||||||||||||
Height | Signature height | |||||||||||||
CustomBackgroundFilePath | Signature custom background file path | |||||||||||||
CustomText | Signature custom text | |||||||||||||
ReadOnly | Signature ReadOnly flag. Default is false. | |||||||||||||
HideDefaultText | Hide default text. Default is false. | |||||||||||||
HideCustomText | Hide custom text. Default is false. | |||||||||||||
AllowPrint | Allow printing of signature. Default is false. | |||||||||||||
FontSizeScale | Text font size scale. Default is 1 |
WebRequestProcessor
Http(s) web request processor. Execute http request and store result in variable or record
Properties | Description | Value / Comment | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Url | Web request URL | |||||||||||||
Method | Request method - if empty default is GET | |||||||||||||
UseDefaultCredentials | For digest authentization, set true | |||||||||||||
Body | Request body | |||||||||||||
BodyType | Request body type. Default is String. | Web request body part types
|
||||||||||||
Params | List of web request parameters | Web request parameter value
|
||||||||||||
Headers | List of web request headers | Web request parameter value
|
||||||||||||
AllowedResponseCodes | List of web request allowed response codes | HTTP Response code
|
||||||||||||
AnyResponseCodeAllowed | True if no response code should throw processing exception | |||||||||||||
Output | Output variable name. | |||||||||||||
Outputs | List of output variables. | |||||||||||||
BodyParts | List of body parts | Multipart body part
|
||||||||||||
Boundary | Multipart request boundary | |||||||||||||
ResponseEncoding | Response mode | |||||||||||||
TimeoutSeconds | Optional timeout in seconds |
WriteFileProcessor
Write to file
Properties | Description | Value / Comment |
---|---|---|
ColumnName | Content to be written to file | |
Path | Output file path | |
FileName | Alias to Path property | |
Contents | Alias to Content property | |
Content | Content to be written to file (if column name is empty) | |
Encoding | Content to be written to file |
Support
If this documentation doesn't answer your questions, please send us an email at treeinfo@aricoma.com.
Changelog
See the changes, fixes, improvements and updates released in the latest versions.
Build (18.04.2024)
- Added SetCache Getcache processors - Added SetCache and GetCache processors leading to enhanced data processing
- Updated OAuth2.0 AuthenticationManager - Updated the OAuth2.0 AuthenticationManager to support the processing of double BASE64 encoding.
- Updated UserMulti field support - Updated IOI processes to support the UserMulti field
- Updated Foreach Json support - Introduced Foreach JSON support to streamline processing tasks, reducing the need for multiple conversions when handling Foreach JSON files.
- Updated VODZ support - Updated IOI to be able to handle VODZ file types.
- Fixed IndexOutOfRangeException error due to version conflict fix - Resolved a version conflict issue that resulted in an IndexOutOfRangeException error. The RunningTasks library has been substituted with ConcurrenceDictionary.
Build 2.2.2310.09001 (08.11.2023)
- Added BaseWaitProcessor Added BaseWaitProcessor that is inherited by WaitRecordProcessor and WaitBarchProcessor so that 'Wait' can be used for example in PostProcess
Build 2.2.2305.30001 (30.5.2023)
- Added PDF generation in german language Added the option to generate pdf files in german language
Build 2.2.2305.19001 (19.5.2023)
- Fixed Automerge bugfix - Fixed an issue that caused conflicts to be solved incorrectly.
Build 2.2.2305.18001 (18.5.2023)
- Fixed Refresh bug - Fixed an issue that caused list refresh to work incorrectly
Build 2.2.2305.12001 (12.5.2023)
- Updated Obelisk integration update - Updated integration to Obelisk archivation service
Build 2.2.2304.18001 (18.4.2023)
- Fixed CsomUpdateItem conflict bug - Fixed an issue that caused version conflict
Build 2.2.2301.11001 (11.1.2023)
- Fixed CsomSharePointOutput add and update bug - Fixed an issue related to CsomSharePointOutput, if add and update function were both enabled, file creation was not working.
- Fixed Logs - Added logging of HTTP output code for clearer issue indication.
- Fixed ISDS 1233 error - Fixed error message to ISDS error 1233 (inappropriate dmType value).
- Fixed Logs - Added logging of HTTP output code for clearer issue indication.
Build 2.2.2212.16001 (16.12.2022)
- Updated Timer trigger - Timer trigger failled to continue operating after an SQL server was down for a certain amount of time. Timer trigger now keeps working when SQL server is available again after outage without the need to restart IOI service.
Build 2.2.2212.01001 (1.12.2022)
- Added Logs - Added logging to SharePointCsomOutput for simpler issue solving.
Build 2.2.2211.24001 (24.11.2022)
- Updated WebRequest processor - WebRequest processor was not clearing the output variables before execution. This caused a problem if request failed, values from previous execution were kept in variables. This behavior has been fixed by seting output variables to empty values before web request execution.
Build 2.2.2211.10001 (10.11.2022)
- Fixed Serialization - Fixed an issue that caused an error if AddRows in TiSaTableProceessor was serialized.
Build 2.2.2209.23001 (23.9.2022)
- Added MS Graph api - Added MS Graph api. Can be used in MailPull trigger.
- Added WinService restart - Fixed an issue that caused running tasks not to be completed if the win service was restarted. Win service now shutsdown after all the tasks are completed.
Build 2.2.2208.29001 (29.8.2022)
- Fixed WebRequest executor - Fixed an issue that made it impossible to send PUT request.
Build 2.2.2207.25001 (25.7.2022)
- Added ConvertStringToBase64, ConvertJsonToXml, ConvertBase64ToBytes processors - Added VariableName and OutputVariableName parameters that allow input and output from and to variables.
- Updated WebRequest processor - WebRequest now analyzes body during all response codes.
Build 2.2.2207.25001 (25.7.2022)
- Added GUID generator - Added GUID generation and parent directory name functions.
- Updated WebRequest processor - WebRequest was enhanced in the way that it can accept any HTTP response code (not only 200)
Build 2.2.2205.24001 (24.5.2022)
- Updated Metadata - Added file length into sharepoint input.
Build 2.2.2203.22001 (22.3.2022)
- Fixed Load Trigger - Fixed an issue that caused a replacement of incorrect dynamic tokens during load trigger.
Build 2.2.2202.21001 (21.2.2022)
- Added Switch processor - Added Switch processor for enhanced flow control.
- Added RunWorkflow processor - Added Timeout (causes Timeout event after set number of seconds passes) and Async(if true, processor will not wait for web service response) functions to RunWorkflowProcessor.
- Updated WDKEY - Added time stamp to wdkey for repeated usage of the same file.
- Updated CsomUpdateItem processor - Fixed CsomUpdateItem processor in case of DateTime field source is empty string.
- Fixed Load Trigger - Fixed an issue that related to incorrect replacement of dynamic tokens during initialization. For example, datetime replace tokens were replaced at startup and not at runtime due this issue.
Build 2.2.2201.17001 (17.1.2022)
- Added DeleteFile processor, PdfSign processor - Added parameters Visibility, Background, Width, Height, CustomBackgroundFilePath, CustomText, ReadOnly, HideDefaultText, AllowPrint, and FontScaleSize.
- Added Replace Functions - Added UrlDecode and UrlEncode. Can be used to Decode or Encode URL parameters respectively.
- Added PdfSign processor - Added parameter HideCustomText.
- Fixed Load Trigger - Fixed an issue related to CsomSharePointOutput, if add and update function were both enabled, file creation was not working.