Pdf file - Babelway

Transcription

Pdf file - Babelway
Babelway B2B Integration Platform
Documentation
Self-service help
Babelway B2B Integration Platform Documentation
Copyright © 2012 Babelway
Table of Contents
1. Introduction - Babelway concept .................................................................................................... 1
2. Generalities .................................................................................................................................. 2
2.1. Login and registration ................................................................................................. 2
2.2. Page structure ............................................................................................................ 3
2.3. Finding help ............................................................................................................... 4
2.4. Grids ......................................................................................................................... 6
2.4.1. Filters ..................................................................................................................... 7
3. Monitoring ................................................................................................................................. 12
3.1. Messages ................................................................................................................. 12
3.1.1. Messages list ......................................................................................................... 12
3.1.2. Message details ..................................................................................................... 13
3.1.3. Resubmitting a Message ........................................................................................ 21
3.1.4. Resubmit multiple messages .................................................................................. 22
3.1.5. Download messages as a zip file ............................................................................. 23
3.1.6. Verify a message integrity ...................................................................................... 25
3.2. Alerts ...................................................................................................................... 26
3.2.1. Alerts list .............................................................................................................. 27
3.2.2. Alert details .......................................................................................................... 27
3.2.3. All possible alerts types ......................................................................................... 28
3.3. Statistics .................................................................................................................. 30
3.3.1. Status statistics ...................................................................................................... 30
3.3.2. Time evolution statistics ........................................................................................ 32
3.3.3. Traffic shape statistics ........................................................................................... 34
3.4. Documents .............................................................................................................. 36
4. Channels .................................................................................................................................... 37
4.1. Overview ................................................................................................................. 37
4.1.1. Channels list ......................................................................................................... 38
4.1.2. Creation of a new Channel ..................................................................................... 39
4.1.3. Channel detail ....................................................................................................... 39
4.1.4. Deployment .......................................................................................................... 43
4.1.5. Delete a Channel ................................................................................................... 44
4.1.6. Duplicate a Channel .............................................................................................. 45
4.2. Gateways ................................................................................................................. 46
4.2.1. Gateways list ......................................................................................................... 46
4.2.2. Creation of a gateway ............................................................................................ 47
4.2.3. Gateway detail ...................................................................................................... 50
4.2.4. Gateway types ....................................................................................................... 52
4.3. Message definitions ................................................................................................ 110
4.3.1. Message definitions list ........................................................................................ 110
4.3.2. Creation of a message definition ........................................................................... 111
4.3.3. Message definition detail ..................................................................................... 114
4.3.4. Update the message definition tree ........................................................................ 115
4.3.5. Message definition formats .................................................................................. 128
4.3.6. Common Message Definition Properties ............................................................... 153
4.4. Transformations ..................................................................................................... 154
4.4.1. Transformations list ............................................................................................. 154
4.4.2. Creation of a transformation ................................................................................. 155
4.4.3. Transformation detail ........................................................................................... 155
ii
Babelway Help Guide
4.4.4. Drag and Drop Transformation ............................................................................. 157
4.4.4.1. Viewing and selecting mapping rules. ........................................................ 157
4.4.4.2. Nodes mapping ......................................................................................... 160
4.4.4.3. Edit formula ............................................................................................. 161
4.4.4.4. Understanding functions ............................................................................ 165
4.4.4.5. User-defined functions .............................................................................. 168
4.4.4.6. Sub-formulas ............................................................................................ 171
4.4.4.7. Working with formulas - frequent scenarios ............................................... 174
4.4.4.8. Mapping loops .......................................................................................... 179
4.4.4.9. Multi nodes mapping ................................................................................ 182
4.4.4.10. Using or changing metadata ..................................................................... 184
4.4.4.11. Drag and Drop transformation properties .................................................. 185
4.4.5. Xslt Transformation ............................................................................................. 186
4.4.6. No Transformation .............................................................................................. 187
4.5. Notifications .......................................................................................................... 188
4.5.1. Notifications list .................................................................................................. 188
4.5.2. Notification detail ................................................................................................ 189
4.6. Partners ................................................................................................................. 193
4.6.1. Defining partners manually .................................................................................. 193
4.6.2. Assigning partners to messages ............................................................................ 196
4.6.3. Creating your partners from messages ................................................................... 198
4.6.4. Using partners ..................................................................................................... 200
4.6.5. Be compliant to GS1. ........................................................................................... 202
4.6.6. Automatic Population of your Partners List ........................................................... 203
4.7. Lookup tables ........................................................................................................ 204
4.7.1. Lookup tables list ................................................................................................ 204
4.7.2. Create a lookup table ........................................................................................... 205
4.7.3. Lookup table detail .............................................................................................. 206
4.7.4. Use your lookup tables. ........................................................................................ 210
4.7.5. Automatic Population of Lookup table from CSV .................................................. 210
4.7.6. Automatic Population of Lookup table using Channel ............................................ 211
4.8. Routing ................................................................................................................. 213
4.8.1. Routings list ........................................................................................................ 213
4.8.2. Routings detail .................................................................................................... 214
4.8.3. Edition of routings from channels section .............................................................. 215
4.9. Test cases .............................................................................................................. 216
4.9.1. Test case detail .................................................................................................... 219
4.10. Certificates .......................................................................................................... 219
4.10.1. Certificate's Details ............................................................................................ 221
4.10.2. Trust new certificate .......................................................................................... 221
4.10.3. Add a certificate ................................................................................................ 222
4.11. Extra processings ................................................................................................. 222
4.11.1. Extra processings on gateway IN ........................................................................ 224
4.11.2. Extra processings on message definition IN ......................................................... 225
4.11.3. Extra processings on Transformation .................................................................. 229
4.11.4. Extra processings on message definition OUT ..................................................... 229
4.11.5. Extra processings on gateway OUT .................................................................... 236
4.12. Metadata .............................................................................................................. 236
4.12.1. Metadata usage .................................................................................................. 237
4.12.2. System Metadata ............................................................................................... 240
4.13. Change Log ......................................................................................................... 242
4.13.1. Environment change Log ................................................................................... 242
iii
Babelway Help Guide
4.13.2. Elements change Log ......................................................................................... 243
4.14. Reuse and save time ............................................................................................. 243
4.14.1. Search and Reuse ............................................................................................... 244
4.14.2. Using the Babelway catalogue ............................................................................ 246
4.14.3. Using or duplicating elements that you already defined. ....................................... 247
4.14.4. Accessing elements from other environments. ..................................................... 248
4.14.5. Using examples or suggestions. .......................................................................... 249
5. Admin ...................................................................................................................................... 250
5.1. Personal data .......................................................................................................... 250
5.2. Environment settings .............................................................................................. 251
5.2.1. General ............................................................................................................... 252
5.2.2. Messages ............................................................................................................ 253
5.2.3. Partners .............................................................................................................. 254
5.2.4. Document types .................................................................................................. 255
5.2.5. Do I need one or several account environments ? ................................................... 257
5.3. Billing ................................................................................................................... 259
5.4. Users ..................................................................................................................... 259
5.4.1. Add a User .......................................................................................................... 260
5.4.2. User detail .......................................................................................................... 261
6. Miscellanous ............................................................................................................................ 263
6.1. B2B Integration Project Management ...................................................................... 263
6.2. DNS load-balancing ............................................................................................... 264
6.3. External References ................................................................................................ 265
6.4. Rest API ................................................................................................................ 267
6.4.1. Introduction ........................................................................................................ 267
6.4.2. Available actions ................................................................................................. 267
6.4.2.1. tickets ...................................................................................................... 268
6.4.2.2. ticket ........................................................................................................ 269
6.4.2.3. deleteTicket .............................................................................................. 270
6.4.2.4. messages .................................................................................................. 270
6.4.2.5. message ................................................................................................... 272
6.4.2.6. channels ................................................................................................... 273
6.4.2.7. gateways .................................................................................................. 275
6.4.2.8. messageDefinitions ................................................................................... 276
6.4.2.9. transformations ......................................................................................... 277
6.4.2.10. catalogue ................................................................................................ 278
6.4.3. Code samples ...................................................................................................... 278
6.5. BabelInvoice .......................................................................................................... 281
6.5.1. BabelInvoice Solution .......................................................................................... 282
6.5.2. Install BabelInvoice for PDFCreator ..................................................................... 283
6.5.3. Using BabelInvoice for Stand alone ...................................................................... 292
6.5.4. BabelInvoice Setting ............................................................................................ 293
6.6. Verify yourself the chain ........................................................................................ 296
iv
1
Introduction - Babelway concept
Babelway is a B2B integration Software-as-a-Service-SaaS. Babelway provides a data translation software and
B2B communication gateways organised in a full-service proposition. Babelway services are fully available ondemand via a web-browser. There is no software or hardware to buy and maintain in-house, however Babelway
is still under the full control of its users.
The main functions of Babelway are:
• Babelway transports electronic messages between two parties.
• Babelway transforms messages from an input to an output format (csv, xml, Excel, flat file, EDI,...).
• Babelway stores messages in a secure way for a defined period of time. The archiving system is compliant
with EU legal requirements.
The following video is an introduction to the application:
1
2
Generalities
In this chapter, we explain the structure of the interface, and all other topics that are transversal to the application, such as style conventions or grids.
2.1. Login and registration
To access the application, just go to the url https://www.babelway.net/.
Figure 2.1. Login page
If you are already a registered user, just fill in your login and password details in the left part of the screen.
If you are not yet a registered user, enter your email in the right part of the screen, and choose a username and a
password. A new environment will be created for you and you will be able to test the application FREE for 30
days.
Reset Password
If you don't remember your username or your password, you can follow the 'Forgot your password?' link. This
will lead you to the 'Reset Password' page.
Start by entering the email address you used to register your account in Babelway. The system will then send
2
Generalities
you an email containing a link to a secure page allowing you to reset your password. Note: That if you have registered several users with the same email address, the system will offer you the choice of which one you want
to change.
Expired Password
If your password expired, you will automatically be redirected to the 'Renew expired password' page. You will
not be able to access Babelway until your password is renewed.
2.2. Page structure
All the pages of the application have the following elements (see figure):
Figure 2.2. Page structure
• The goal of the top bar is to show you in which environment you are working. It displays:
• Name of the current user.
• The environment you are working in. This is only available if you have access to multiple environments.
In this case, you can also switch from one environment to another (just click on the arrow at the right of
the name of the environment).
• The help menu. See help for more details.
• A logout button.
• The menu allows you to go to the different parts of the application
• Home just allows you to return to the welcome page of the application.
3
Generalities
• You'll find in the Monitoring section all the functionalities needed to follow and manage all the messages
processed by the system, once the flow of messages is defined.
• In the Channels section, you'll be able to define how the messages will be processed by the system.
• The Admin section gives you access to the parameters of your environments, your bills, the management
of the users that may access your account, ...
• The page introduction is a short inline help for the page. See help for more details.
• The page title and page body contains the data of the page, and are specific to each page.
• The feedback button allows you to easily contact Babelway. It is also described in more details in the help
section.
2.3. Finding help
In the interface, you will find many methods to get help. Most of this help is available via the help menu, which
can be found right of the top bar.
Figure 2.3. Page structure
• Page introduction. At the begining of every page, a short text gives you contextual help about the page.
Figure 2.4. Page introduction
If you don't want to see it anymore, just close it by clicking the X which can be found in the upper-right
corner of this zone, and it will also not be displayed anymore for all the following pages. Only a small image
will remain, in place of the X, which will allow you to make it appear again if you want.
• In many places of the application, inline help is available. It is indicated by the icon
. To see the help, just
place your mouse over the icon.
4
Generalities
Figure 2.5. Inline help
• Help. This is a help manual, available via the help menu.
• Support. If you have any question, don't hesitate to ask at [email protected]. We'll answer you
promptly. The link is also accessible via the help menu.
• Babel Academy. Training given by an expert user of Babelway. Click in the help menu to access.
• Tutorial. The tutorial is a good way to learn the basics of the interface. You can launch the tutorial by clicking on the tutorial option in the help menu.
• Feedback. If at any time, you experience a problem, or just have some feedback or suggestion about the interface, you can send it to us by clicking the feedback button,which can be found at the bottom-right of the
interface.
Figure 2.6. Feedback
5
Generalities
2.4. Grids
Grids of data are displayed in many pages of the application.
The grids are very powerful, and have many options that are described below.
The grids are always displayed as in the following figure:
Figure 2.7. Grids
• The headers contain the title of the column.
On most columns, you can click on it to sort the data following this column. If you want to sort in the reverse
order, you click again on the header of the column. The current sort of the grid is signified by the icon
You can resize columns by clicking on the separation between two columns, and dragging the icon to the
preferred size.
You can also reorder columns by clicking on the header of one column, and dragging it to the new place you
want.
• The filter bar allows you to filter the displayed data.
The system will only display the data that satisfies ALL the criteria that you enter in this line.
You can find more information about the specific filters available for all columns in the Filters section.
• The data zone just displays the requested data.
• The zone with the number of data tells you how many records have matched your criteria, and which part of
this data is currently displayed.
• With the Pagination options, you can easily navigate in all the data, or choose the number of records that you
want to display on a page. The system will automatically record this preference when you change it, and subsequently display by default all the next tables with this number of records.
• The action buttons allow you to complete the following actions:
•
allows you to change the displayed columns.
•
6
Generalities
allows you to clear all search criteria.
•
allows you to refresh the data.
•
allows you to export the data.
2.4.1. Filters
In all grids, the filter bar allows you to filter easily the displayed data.
The filters that are available depends on the type of data in this column. If you use multiple criteria, the system
will display the data that satisfies ALL the criteria. You can also reset all the criteria in one click with the "Reset filters" buttton found in the action buttons of the grid.
Textual data
For textual data (columns like name, description ...), you will have a text-field allowing you to type your criteria. The system will search for all the data that contains the criteria.
Figure 2.8. Textual filter
Types with a limited number of possible values.
When all the values of type can be enumerated, you will have a dropdown showing all the possible values. The
system will search for all the data that have (exactly) this value in this column.
7
Generalities
Figure 2.9. Filter on a date
Dates and times
You will have a dropdown allowing you to choose from several common periods ("Last 24 hours", "Last 7
days", "Last month", ...)
Figure 2.10. Filter on a closed type
8
Generalities
If you have more unusual needs, you can select the "Custom" value. A popup will then be available where you
will be able to choose any time interval.
Figure 2.11. Custom filter on a date
Channels, gateways, message definitions, transformations, ...
For all columns referring to one of the elements of your environment, you will have a text-field (with autocomplete).
The following values can be used in the field:
• =<id>: the system will filter on the elements that have this precise id.
• =<name>: the system will filter on the elements that have (exactly) this name.
• <name>: the system will filter on the elements whose name contains the criteria.
9
Generalities
Figure 2.12. Filter on a channel
Ids
For the columns containing the id of an element, you will have a text field.
The following values can be used in the field:
• <id> : the system will filter on the elements that have this precise id.
• Comma separated list of ids: the system will filter on the elements that have one of these ids.
Figure 2.13. Filter on an id
Other numeric values
For the numeric columns, you will have a text field.
The following values can be used in the field :
• N: the system will filter on the elements that have exactly this value N in this column.
• <N: the system will filter on the elements whose value is (stricly) smaller than N.
• <=N: the system will filter on the elements whose value is smaller than, or equal to N.
10
Generalities
• >N: the system will filter on the elements whose value is (stricly) greather than N.
• >=N: the system will filter on the elements whose value is greather than, or equal to N.
• Comma separated list of any criteria above: all the criteria will be applied.
Figure 2.14. Filter on a numeric column
11
3
Monitoring
The monitoring section of the application contains all the tools and information that allows you to follow and
manage the messages processed by the system, once the rules for how to handle the messages have been setup.
The main functionalities are:
• Search in all messages processed by the system. See all the details of the messages.
• View the alerts generated by the system.
• Actions to manage the messages (for example, resubmit a message in error)
• View stats on the messages.
• View documents, a business view on the processed messages.
Note
The items in the previous list should link to the section that details the functionality.
3.1. Messages
A message encapsulates all the information about the processing of an input file of data by the Babelway system.
The message contains the following information:
• The incoming file: The file received by Babelway from the source external system.
• The outgoing file: The file sent by Babelway to the target external system.
• The status of the processing: Was the file correctly processed or was it in error? It it still being processed?
• Various dates about the processing: When was the input file received, when was the output sent, ...
• Information about how the message was received or sent.
• ...
3.1.1. Messages list
The list of messages allows you to browse and search all messages processed by the Babelway systems.
To access this screen, just click on the Monitoring menu item. The Messages sub-menu item is automatically
selected.
12
Monitoring
Figure 3.1. List of messages
Many information about the messages can be directly displayed in the grid. The detailed explanation of each
possible information can be found in message details.
For more information about the behavior of the grid, and how to make searches, see the grid section of the help.
Click on a message line to access its all the details about the message, and be able to make actions on it.
3.1.2. Message details
The message details screen shows you all the details about the processing of a message by the Babelway system. It also allows you to make all necessary actions on this message.
You can access it by clicking on a line in the messages list screen, or just by clicking on it every time a reference to a message is displayed.
13
Monitoring
Figure 3.2. Message details screen
The following information can be available on a message:
14
Monitoring
Status
The status of the message processing. The possible statuses are:
• Processing: When the message is being processed by Babelway.
• Paused: The message processing was temporarily stopped (because human validation has been requested,
because it can only be delivered in specific time frames, ...).
• In delivery: When the message is being transferred to the target system. This status differs from "In progress" in the sense that output message is completely generated and available via the interface, but communication of the message to the target system is not yet terminated. The reasons for this delay in the
communication can be multiple: We wait for the file being downloaded, or we wait for an acknowledgment, or the target system was unavailable and we will retry later, ...
• Success: When the message processing is completely finished and everything happened as requested.
• Error: When the message processing is completely finished and there was an error in any step of the processing.
Here are some examples of errors:
• The received file did not pass the input validations.
• The generation of the output file completed successfully, the file was made available for download on
Babelway FTP server, but was never downloaded (after X days). This is an error because we know
that the file was not received by the end user.
• The generation of the output file completed successfully and the file had to be sent by email to 2 recipients. One of the delivery succeeded (and the user) correctly received the message), while the other delivery failed.
• The generation of the output file completed successfully and was correctly uploaded to the target system, but we did not receive an expected acknowledgement (or it was not correct).
• The processing crashed.
The precise description of the error will always be present in the field "Error description"
• Error (closed): This status will never be used automatically by the system, but allows you to mark the errors that you already have analyzed and fixed.
Date in
The date and time when the message was received by Babelway.
Date out
The date and time when the processing of the message was completely finished (even if complete processing of the message implied waiting for an acknowledgement from the external system, waiting for
download by the client, making retries,etc.).
Processing complete
The date and time when the Babelway processing of the message was finished. This is the moment when
the message out is made available to the target system.
This time will differ from "Date out" when the delivery of the file implies waiting for the external target
system (ex: waiting for an acknowledgement, waiting for a download, or waiting for the external system
15
Monitoring
availability). "Processing complete" doesn't include this delay while "Date out" includes this delay.
Keep until
The date and time until which the message will be kept in the Babelway system. You can change this setting for your whole environment or by channel.
Message In
Incoming file, as received by the source external system. Click on the file name to open it. Click on the
lock to display the Security info.
Message Out
Outgoing file, as sent to the target external system. In case of processing error, this file may be unavailable
if the messaging engine was unable to generate it. Click on the file name to open it. Click on the lock to
display the Security info.
Error description
When the message couldn't be processed, a text that describes the error's reason.
Type
Message type, can be either Test or Regular.
Test status
Only for test messages. The test status, can be either Test failed, Waiting result or Test successful. It should
be differentiated from the Status field, that tells if the message has been processed without errors. When
you make a test case, you can add complementary assertions on the result of the processed message. This
will cause the test to be considered as 'failed' if not fulfilled.
Channel
The channel that processed the message.
Gateway In
Incoming gateway used to receive the input file.
Gateway Out
Outgoing gateway used to process the input file.
Key
A uuid (universal unique identifier) that uniquely identifies a Message.
Reference
Message reference or file name. You can choose this reference.
Gateway in message key
Specific communication-level identifier from the gateway in.
Gateway in message status
Specific communication-level information from the gateway in, like related id's or addressing information
of partner systems
Gateway out message key
Specific communication-level identifier from the gateway out
Gateway out message status
Specific communication-level information from the gateway out, like related id's or addressing information
of partner systems, info about acknowledgments, retries, ...
16
Monitoring
Size of incoming message
Incoming message size (in bytes).
Size of outgoing message
Outgoing message size (in bytes).
User comment
Free text allowing the user to comment on a message. It can be changed anytime from the SelfService applicaiton as well as during in the processing of any message.
The section Internal files also gives you access to internal data about the processing of the message. This information can be useful to investigate some problems, or to understand the behavior of the system. Two categories of internal files exist: The step files and the other files.
The step files represent the evolution of the message content from the message IN to the message OUT. After
each modification of the message's content, a new step file is created. Here is the complete list of possible types
of step files:
Message IN after unwrapping (Deprecated)
The message IN after the deprecated unwrapping extra-processing.
Message IN after S/MIME unwrapping
The message IN after the S/MIME unwrapping extra-processing.
Message IN after PGP unwrapping
The message IN after the PGP unwrapping extra-processing.
Message IN after ZIP unwrapping
The message IN after the ZIP unwrapping extra-processing.
Message IN after PDF unwrapping
The message IN after the PDF unwrapping extra-processing.
Message IN after regular expression transformation
The message IN after the regular expression based extra-processing.
Message IN after Serving XML transformation
The message IN after the Serving XML based extra-processing.
Message IN after transformation to XML
The message IN after its conversion to an internal XML representation.
Message IN after XSLT transformation
The XML message IN after the XSLT based extra-processing.
Message after transformation
The XML message after its transformation.
Message OUT after XSLT transformation
The XML message OUT after the XSLT based extra-processing.
Message OUT after transformation from XML
The message OUT after its conversion from the internal XML representation.
Message OUT after Serving XML transformation
17
Monitoring
The message OUT after the Serving XML based extra-processing.
Message OUT after regular expression transformation
The message OUT after the regular expression based extra-processing.
Message OUT after line delimiter transformation
The message OUT after the line delimiter transformation extra-processing.
Message OUT after PDF wrapping
The message OUT after the PDF wrapping extra-processing.
Message OUT after ZIP wrapping
The message OUT after the ZIP wrapping extra-processing.
Message OUT after PGP wrapping
The message OUT after the PGP wrapping extra-processing.
Message OUT after S/MIME wrapping
The message OUT after the S/MIME wrapping extra-processing.
The other files represent the additional information (other than the content) produced during the message processing. Here is the complete list of possible types of other files:
Context in
Full context of execution of the message, as it was at the start of the processing (after reception by the gateway IN).
Context out
Full context of execution of the message, as it was at the end of the processing.
Context
Additional list of properties and log of processes applied during message processing.
Message Delivery Notification In (MDN In)
The Message Delivery Notification (MDN) that was sent to the caller, to prove that Babelway has received
the message.
Message Delivery Notification Out (MDN Out)
The Message Delivery Notification (MDN Out) that was received from the receiver of the message, to
prove that Babelway has correctly submitted the message to its destination.
Documents In
When a document extractor is used on MessageDefinition IN, the extracted documents.
Documents Out
When a document extractor is used on MessageDefinition OUT, the extracted documents.
Invoices In
When a document extractor is used on MessageDefinition IN, the extracted invoices.
Invoices Out
When a document extractor is used on MessageDefinition OUT, the extracted invoices.
Orders In
When a document extractor is used on MessageDefinition IN, the extracted orders.
18
Monitoring
Orders Out
When a document extractor is used on MessageDefinition OUT, the extracted orders.
Desadvs In
When a document extractor is used on MessageDefinition IN, the extracted dispatch advices.
Desadvs Out
When a document extractor is used on MessageDefinition OUT, the extracted dispatch advices.
Standard Business Document Header In (SDBH)
A Standard Business Document Header (SDBH) is the effective message sent to a PEPPOL Access Point.
It's the UBL message wrapped in an envelop that identifies key data about the document.
Standard Business Document Header Out (SDBH)
A Standard Business Document Header (SDBH) is the effective message sent to a PEPPOL Access Point.
It's the UBL message wrapped in an envelop that identifies key data about the document.
Message Level Response (MLR)
A Message Level Response (MLR) is a business acknowledgment that tells the sender if the received message follows business rules related to the document type and business flow.
Message Delivery Notification of Message Level Response
A Message Delivery Notification (MDN) of a Message Level Response (MLR) is a proof from the receiver
that the MLR was correctly submitted to its destination.
RosettaNet Message Out
The content that was sent by Babelway to the RosettaNet server.
RosettaNet Receipt Out
The RosettaNet delivery report that was received from the receiver of the message, to prove that Babelway
has correctly submitted the message to its destination.
RosettaNet Message In
The content that was received by Babelway from the RosettaNet server.
RosettaNet Receipt In
The RosettaNet delivery report that was sent to the caller, to prove that Babelway has received the message.
X400 delivery report
The X400 message delivery report that was sent to the caller, to prove that Babelway has received the message.
SOAP Response
The soap response received in case of a SOAP gateway OUT.
NemHandel Message Out
The content that was sent by Babelway to the NemHandel server.
NemHandel Response Out
The NemHandel rasp response that was received from the receiver of the message, to prove that Babelway
has correctly submitted the message to its destination.
NemHandel Message In
The content that was received by Babelway from the NemHandel server.
19
Monitoring
NemHandel Response In
The NemHandel delivery report that was sent to the caller, to prove that Babelway has received the message.
Click on Back action to return to List of Messages screen.
Click on Resubmit to reprocess this message. See Resubmitting a Message chapter for more details.
Click on Save As Test Case to create a test case with the data of this message. The new test case is automatically created in the channel that processed the message and populated with the message parameters, including
the incoming message that will be used as a test message and outgoing message that will be used as expected
message out.
Changes done in release of November 2015
• The status Waiting ack has been merged to In progress, because the delivery of the message is not complete.
Example: Waiting for the file being downloaded by the client.
• A message may no longer stay forever in the status In progress. The message processing can only be ended
in statuses Success or Error. When applicable, it means that a timeout will terminate the message (for example if a file is not downloaded on a FTP server after X days).
• Dates and times associated with a message has been reviewed. The available date and times are now Message reception time, End processing time, End processing sla time and Keep until. See full description of all
fields of messages for full description of every field.
• Field Acknowledgment reference has been removed. This information is now available in the field Gateway
out message status
• All intermediate files generated during the processing are now saved and are downloadable. This is for example very useful to debug your messages when you have many extra processings (wrappers or unwrappers,
replacements based on regular expressions, ...), as you will now have access to the result after each step.
20
Monitoring
Figure 3.3. Message details new features screen
3.1.3. Resubmitting a Message
This function enables you to easily process a message again. This is especially useful when messages have not
been processed due to a channel issue. Once this issue is solved, go to the list of message, select the messages
that have not been processed and submit them again directly to the messaging engine.
It is also very useful when the issue is due to the message itself. You can just correct the input file, upload it
and resubmit the processing.
You can access this screen from the message details screen, or from the alert details screen.
21
Monitoring
Figure 3.4. Resubmit message screen
The Message in allows you to view or change the file that will be processed.
The Send to allows you to specify which channel or gateway must process the message
• Same channel: the message will be processed by the channel that processed the original message. The name
of the channel is displayed under brackets. This option could not be available if the channel that processed
the message doesn't exist anymore.
• Channel: the message will be processed by the specific channel you select. This can be for example very useful if the error in the processing is due to the message having been processed by a wrong channel (see routing
rules).
• Same gateway in: the message will be injected in the system as if it was received by the same gateway as the
original channel. This option could not be available if the gateway that received the message doesn't exist
anymore.
• Gateway in: the message will be injected in the system as if it was received by the gateway that you select.
Within the advanced options, you can edit metadata associated with the message. These metadata are typically
set by the gateway that received the message, and can be used during the process.
Once all parameters are setup up according to your preferences, click on the Send command to effectively
launch the reprocessing. You will be immediately redirected to the screen that shows the details of the reprocessed message.
3.1.4. Resubmit multiple messages
The resubmit all function allows you to resubmit many messages in one operation.
You can find this operation at the bottom of the messages list screen. Once you have selected all the messages
that you want to reprocess, just click on it. The test messages will be automatically excluded from the selection.
Figure 3.5. Selecting multiple messages for resubmit
22
Monitoring
The function works the same way as the resubmit message function. The difference is that you process here
many messages.
Figure 3.6. Resubmit multiple messages screen
The messages field show you the number of messages that you selected, and that will be reprocessed if you
continue. If this number is not correct, please click on back and change your search.
The send to field allows you to specify which channel or gateway must process the messages, and works exactly as for resubmit message.
Once all parameters are correct, click on Resubmit to launch the resubmission of all the messages. You will be
redirected to a screen that shows you the status of the resubmit, and allows you to stop the resubmit if you
want. You must stay on this screen until the end of the resubmit so that the resubmit can go to the end. Leaving
this screen is equivalent to click on Stop.
Figure 3.7. Resubmit multiple messages in progress
3.1.5. Download messages as a zip file
The download function allows you to download messages as a zip file.
You can find this operation at the bottom of the messages list screen. Once you have selected all the messages
that you want to download, just click on it. The test messages will be automatically excluded from the selection.
23
Monitoring
Figure 3.8. Selecting multiple messages for download
A message will inform you that a zip file will be created and that you will receive an email with instructions to
download it.
Figure 3.9. Resulting Message
The email you will received will look as follows:
Figure 3.10. Email sample
The zip file will contain received and generated files related to messages and a "messageRecords.csv" file that
24
Monitoring
contain the list of downloaded messages.
Figure 3.11. Zip file content
Some limits are implemented:
• Only one download is possible at a time.
• Your zip files will be deleted after 7 days.
• You can request a download of 1000 messages maximum. If you need to download more messages, don't
hesitate to contact the support team.
• If the resulting zip file is bigger than 200MB, the email will not contain a link to the zip file but you will be
asked to contact the support team to find a better way to obtain your file.
3.1.6. Verify a message integrity
Babelway keeps a secure chain of all messages, allowing to prove that a given message went through Babelway
at a given time and is unaltered.
Each message that goes through a channel is hashed (using SHA-512) and added to the "secure chain".
It's called a chain because when we add a message, we also hash a string that is composed of the current message and information from the previous message.
It is called secure because when we hash each new entry using information from the previous message, we
make it impossible to modify an entry of the chain without having to alter all the hashes that have been computed after that message has been added to the chain
In order to make sure that the chain is never modified, Babelway Team, regularly (several times a week) signs
25
Monitoring
and timestamp an element of the chain. The signature is done using Belgium electronic identity card (eID) that
uses another guarantee located in the offices of the Belgian government. The timestamp is done using an external public TSA (Timestamp Authority).
This guarantees that Babelway is able to prove that a message was processed by our system, even if the message is not stored anymore in Babelway archive (only the hash and the detached signature are kept). This gives
you all the guaranties of confidentiality, Babelway does not keep messages if you don't want to, as well as guarantee of origin, integrity and timestamping for all messages processed in each account.
You can access the digest of the message, and see when it was signed and certified, by clicking on the lock
after the message files in the message details screen.
Figure 3.12. Signature info
If someone receives a message from Babelway or from an email that looks like a Babelway email and would
like to verify that it was indeed processed by given Babelway account (i.e. it is not a fake), he can ask our support team
3.2. Alerts
An alert is a signal sent by the Babelway system to inform you that something abnormal has happened. For example,the most common type of alert is to inform you when the processing of a message failed.
All alerts should normally be handled by a human. Once the problem is solved, the alert should be deleted (or at
least closed).
You'll be warned in the Welcome Page if you have open alerts.
26
Monitoring
3.2.1. Alerts list
The list of alerts allows you to browse and search all the alerts generated by the Babelway systems.
To access this screen, just click on the Monitoring menu item, then on Alerts sub-menu item.
Figure 3.13. List of alerts
The detailed explanation of each possible column can be found in alert details.
For more information about the behavior of the grid, and how to make searches, see the grid section of the help.
Click on a line to access all the details about the alert, and be able to make actions on it.
3.2.2. Alert details
The alert details displays all the information about an alert, and allows you to take the necessary actions to
solve the problem.
27
Monitoring
Figure 3.14. Detail of an alert
Severity
The seriousness of the issue, it can be High, Medium, Low or Info.
Status
The alert status, it can be either Open or Closed. It is important to close the alerts once the problem is resolved, as the system will remind you if you have open alerts pending.
Type
The type of alert, see Possible Alerts for a complete list and further information.
Created On
The alert generation date and time.
Summary
A short description of the issue.
Description
An additional description of the issue.
Key
An uuid that uniquely identifies the alert within the Babelway platform.
Comments
Enable you to add comments about the issue. It may be useful to keep track of actions already taken to
solve the problem.
Related messages
When applicable, gives you a direct link to the message(s) that caused the problem.
Related channels
When applicable, gives you a direct link to the channel(s) related to the problem.
Attachments
Enable you to download attachments available from the system. For example: The negative acknowledgment from AS2 gateway.
You can click Close when the problem described in the alert is solved, or on Reopen if a previously closed alert
was not correctly solved.
You can click Delete when the problem described in the alert is solved, and you don't want to see it anymore in
your alerts list.
The action Resubmit linked message is a shortcut to easily resubmit the message linked to the ticket.
3.2.3. All possible alerts types
This page describes all possible alert types. The types should also be grouped from a logocal way.
Note
Explanations to be completed.
28
Monitoring
General monitoring
...
Message Processing Issue
...
Unidentified Source
...
Unidentified Message In
...
Unidentified Channel
...
Message Validation Issue
...
Failed Delivery
...
Planned Deletion of Unattended Messages
...
Hub Issue
...
Storage Capacity Reached
...
Planned Maintenance Unavailability
...
New Functionality Available
...
Account Issue
...
Credit Limit Reached
...
Outstanding Invoice
...
Credit Limit Almost Reached
...
VAT Rate Has Changed
...
Channel Management Issue
...
Notification ot a Change in a Linked Channel
29
Monitoring
...
Planned Deletion of Unused Channels
...
Documentation of a Channel
...
User Management Issue
...
Failed Connection Attempts
...
First Connection of new New User
...
Planned Deletion of Inactive Users
...
Invitation Expired
...
3.3. Statistics
The Statistics section allows you to view some aggregated data about your environment and your messages.
This data can be displayed in graphics or in table.
3.3.1. Status statistics
This screen allows you to have some aggregated view about the messages processed by your system.
You can select the period of time for which you want to see the stats, and if you want that the data is aggregated
by channel, gateway in or gateway out.
The resulting graphic will display one horizontal bar for each aggregated element (channel, gateway in or gateway out). This bar will be split following the status of the messages. The total count will also be displayed.
30
Monitoring
Figure 3.15. Status by channel
In the graphic, you can click on the legend to hide or show some status. This is very useful to clearly see the
few errors (if occurred) amongst the many Success messages.
Figure 3.16. Status by channel, Success messages are hidden.
31
Monitoring
You can also click directly on the bars in the graph to go to the messages lists screen, with the correct search
criteria filled, to see these messages exactly.
The refresh action button allows you to refresh the data.
The Switch to data action button allows you to switch to the grid display of the number. It can be especially
useful if you have many channels, and want to see all of the data (graphic is limited to 40 elements), or if you
want to export the data.
Figure 3.17. Messages stats
3.3.2. Time evolution statistics
This screen allows you to see the evolution of the messages processed over time.
These statistics count all messages that went through the system, even if the message has now been deleted.
Within the options, you can select the data that you want to see on the graphics: counts of messages, sizes of
messages or both.
You can also select the granularity of the graphics. Aggregate data by one month means that there will be one
point or one bar on the graphic by month.
You can also select to display the graphic in lines or in bars. Please note the following points:
• Graphics in lines are zoomable. You can drag with your mouse on the graphic over the wanted period.
Double-click anywhere on the graph to return to the full view.
• If you display both message counts and messages sizes, this option will only apply to messages counts. Messages sizes will always be displayed in line.
32
Monitoring
Figure 3.18. Count and sizes of messages by month.
33
Monitoring
Figure 3.19. Zoom in line graphic.
3.3.3. Traffic shape statistics
This graphic shows you the graphic shape over one day, or over one week.
The Type of graphic option allows you to choose between:
• Traffic shape over one day: To see the repartition of your messages amongst the 24 hours of the day. First
data point will count the messages in the selected period that you receive between 0am and 1am, second
point between 1am and 2 am, ...
• Traffic shape over one week: To see the repartition of your messages amongst the one week. Messages will
also be counted by hour : successive point will be for counts of messages for Monday 0am to Monday 1am,
Monday 1am to Monday 2am, ... till Sunday 11pm to Sunday 12pm.
The second option allows you to choose which messages will be counted: Messages for the last 1 week, 4
weeks, 1 month, ... Please note that only the messages that are currently visible in your interface will be counted, and not message that have been deleted.
34
Monitoring
Figure 3.20. Traffic shape over one week
35
Monitoring
Figure 3.21. Traffic shape over one day
3.4. Documents
Documents allows you to have a business view on the processed messages.
For example, you can have here the list of your invoices, with fields like Amount, Currency, DueDate, Recipient, ...
You can fully configure the type of documents that you want to use, and all the fields that you want to have.
This can be done in the admin section.
Figure 3.22. Example of document list : invoices.
To have documents displayed here, you must first :
• Configure your DocumentTypes in the admin section (which DocumentType do you want? With which
fields? ...)
• Extract business infos of your messages, by using ExtraProcessing "Extract documents" on your MessageDefinitions.
36
4
Channels
This section of the application contains all that is needed to configure how the messages should be processed by
the Babelway system.
The different sub-menu items contain the different building blocks available to make it work.
4.1. Overview
This section gives you the high-level view of how the messages are processed by the Babelway systems.
In Babelway words, the messages are processed by Channels. A channel defines all the path that a message follows within Babelway, from the external system that generated the input file, to the external system that must
receive the output.
Its main components are:
• The gateway in specifies the way incoming messages are communicated from the source external system to
Babelway. Babelway supports a large variety of protocols, including FTP, AS2, HTTP, Email, OFTP, SFTP,
X400 or web upload.
• The message in precisely describes the structure of the incoming message.
• The transformation tells Babelway how the incoming message should be translated to the outgoing message.
• The message out precisely describes the structure of the outgoing message.
• The gateway out specifies how the outgoing message should be communicated to the target external system.
Some optional components are:
• The test cases are a great way to be sure that your channels are correctly configured, and produce the expected results.
• The notifications allow you to receive emails when messages are processed, or are in error.
• The routing allows you to define which channel must process a message, when multiple channels use the
same gateway in.
Another important concept is the concept of deployment: when you are setting up your channels, you can make
any changes you want without any risk to the production system. You can work safely without impacting your
production flow of messages, until you're satisfied with the new setup, and want the changes to take effect for
the production messages. At this time, you have to deploy your environment, so that the new setup is migrated
to the servers that handle your production messages.
.
37
Channels
4.1.1. Channels list
The List of Channels screen shows you all the channels defined in your environment, and is the starting point
for editing them, create new ones or deploy them to the production systems.
Figure 4.1. Channels list screen
The list can contain the following columns:
Name
A name that identifies the channel.
Description
A free description for the channel.
Created on
The date and time when the channel was created.
Last updated on
The date and time of the last modification that affected the channel.
Status
Indicates if the channel is now running in the production system (value top bar ), or not (value Off ). See
deployment for more details.
Next deployment
Indicates which kind of change will be applied to the production systems at next deployment. Possible values are No change (channel will not be impacted by next deployment), Start (channel is currently not deployed, but will be after next deployment), Stop (channel is currently deployed, but will be undeployed at
next deployment) or Apply changes (channel is currently activated and modifications will be applied at deployment). See deployment for more details.
Enabled
Indicates if the channel is Enabled or Disabled. See deployment for more details.
Gateway In
38
Channels
The name of the gateway In used in this channel, or blank if it is not yet defined.
Message In
The name of the message In used in this channel, or blank if it is not yet defined.
Transformation
The name of the transformation used in this channel, or blank if it is not yet defined.
Message Out
The name of the message Out used in this channel, or blank if it is not yet defined.
Gateway Out
The name of the gateway Out used in this channel, or blank if it is not yet defined.
Id
A technical identifier that uniquely identifies the channel.
For more information about the behavior of the grid, and how to make searches, see the grid section of the help.
You can click on a line to view the details of the associated channel, or edit it. See Channel details.
The Create channel action button allows you to create new channels.
The Deploy action button allows you to deploy your environment.
4.1.2. Creation of a new Channel
This screen allows you to create a new channel from scratch.
It is accessible from the channels list screen.
The screen will just prompt you for a name and a description for your channel. When filled, just click on Create
channel. The channel will then be created, and you will be redirected to the channel detail screen, so that you
can edit all of its components.
Figure 4.2. Create a channel
The other method to create a channel is to search for an existing channel in the Reuse and save time zone.
4.1.3. Channel detail
All the information required to configure a channel is displayed here, split into different tabs. Tabs are presen39
Channels
ted in a logical order starting with the gateway for the incoming message, going to message transformation,
gateway for the outgoing message, email notifications, routing rules, and finally testing.
Figure 4.3. Channel detail screen
General
This tab displays the following information. You can change it by just editing the fields and click on Save.
Name
The name of the channel.
Description
The description of the channel.
Enabled?
A channel can be disabled to be ignored by future deployments. A disabled channel is just as a deleted
channel, except that you can keep it for future use. An enabled channel is just a 'normal' channel, and all its
changes will be reflected to the production system at every deployment.
Next deployment
Tells what will happen with this channel at next deployment. 'Apply Changes' means that the channel is
already in production but has changed since the last deployment; the changes will be deployed. 'Start'
means the channel is not yet in production, but will be after next deployment. 'Stop' means the channel is
currently in production, but will be removed at next deployment. 'No change' means nothing will be done
about this channel at next deployment.
Message storage duration
How long the message processed by this channel will be kept. This value can also be set at environment
level.
It also displays information about date and times where the channel was created or last updated.
The Delete action allows you to delete your channel.
40
Channels
The Duplicate action allows you to duplicate your channel.
In the top right corner, there is important information: The status of the channel and the deploy action.
Figure 4.4. Channel status and deploy action
You will find more information in the deployment section.
Gateway In
The gateway In specifies the way incoming messages are communicated from the sources external system to
Babelway. Babelway supports a large variety of protocols, including FTP, AS2, HTTP, Email, OFTP, SFTP,
X400 or web upload.
You can find all information about how to define and configure gateways in the gateways chapter.
Message In
The message In precisely describes the structure of the incoming message.
You can find all information about how to define and configure message definitions in the message definitions
chapter.
Transformation
The transformation tells Babelway how the incoming message should be translated to the outgoing message.
You can find all information about how to define and configure transformations, including the behavior of the
visual drag-and-drop editor, in the transformations chapter.
Message Out
The message Out precisely describes the structure of the outgoing message.
You can find all information about how to define and configure message definitions in the message definitions
chapter.
Gateway Out
The gateway Out specifies how the outgoing message should be communicated to the target external system.
You can find all information about how to define and configure gateways in the gateways chapter.
Email Notifications
For each individual channel, you may configure automatic notifications that send emails to specified addresses
upon arrival of new messages. Notified users can be different if the message has been successfully processed or
if an error has been generated.
41
Channels
You can find all information about how to define and configure notifications in the notifications chapter.
Routing
The routing allows you to define which channel must process a message, when multiple channels use the same
gateway In.
You can find all information about how to define and configure gateways in the routing chapter.
Testing
The test cases are a great way to be sure that your channels are correctly configured, and produce the expected
results.
You can find all information about how to define and configure gateways in the test cases chapter.
Related Items
Figure 4.5. Related Items
The following tabs give you quick links to many other elements of the application that are related to this channel :
Parent channel
Channel used as base for this channel.
Children channels
Channels based on this channel
Other channels with same gateway IN
Displays the channels using the current channel's gateway In
Other channels with same message definition IN
Displays the channels using the current channel's message In
Other channels with same message definition OUT
Displays the channels using the current channel's message Out
Other channels with same gateway OUT
Displays the channels using the current channel's gateway Out
42
Channels
Previous channels (within this environment)
Channel from which the current channel receive messages.
Following channels (within this environment)
Channels following the current channel to execute advance functions.
Messages processed by this channel
Redirect you to the messages list containing only the messages of this channel.
4.1.4. Deployment
When you are setting up your channels, you're working in a sandbox that is separate from the production systems, so that you can make any changes or tests you want without any risk to the production system and your
production flow of messages.
When you are satisfied with the changes , and want the changes to take effect for the production messages, you
have to deploy your environment. Only at this time, the new setup is migrated to the servers that handle your
production messages.
Please also note that the deployment always affects your whole environment. It is not possible do deploy
changes of only one channel.
Keep also in mind that any server, mail address, etc. defined in incoming and outgoing gateways are only created during deployment. A new incoming email address for example will not be available and any mail sent to
that address will generate an error before deployment.
You can access the deployment screen from the list of channels or from the detail of a channel. In the top right
corner, there is information about the deployment status of your channel
Figure 4.6. Channel status and deploy action
Status
The status tells if a channel is currently deployed in production ( On ) or not ( Off ).
Deploy action
By clicking on it, you will open the deployment screen. A tooltip will inform you about which kind of
change will be applied to the production systems at next deployment.
• to start the channel: channel is currently not deployed, but will be after next deployment.
• to apply the changes you made: channel is currently activated and modifications will be applied at deployment.
• to stop the channel: channel is currently deployed, but will be undeployed at next deployment.
If the deploy action is disabled, a tooltip will describe the reason :
• because no changes have been made to this channel
43
Channels
• because the channel is disabled: You can enabled it in the General tab (See the channel detail ).
• because it contains errors: Follow the exclamations marks to see where errors are.
Before the deployment takes effect, a summary of the things that will be changed on your production system
will be displayed. The changes are displayed in a grid, one affected channel by line. For all the channels, the 3
last fields describe the changes:
Figure 4.7. Deployment confirmation
On this screen, the following two advanced functions are also available:
Run tests
When deploying, the system automatically reruns all test cases of the affected channels, and forbids the deployment if some test cases are in error. The goal of this operation is to guarantee that you don't deploy by
accident a channel that is not functional. If you are really sure of what you are doing, you can decide not to
run the tests. In very large environments, this can result in big performance improvement, but at the cost of
being sure that the channels pass the tests.
Full provisioning
The system performs by default incremental provisioning: only the changed channels and configurations
are resent to the production system. This option allows to completely undeploy and redeploy your environment.
4.1.5. Delete a Channel
To delete a channel, just click on Delete in the general tab of the channel detail screen.
This action is not available if the channel is currently deployed. If it is the case and you want to delete it, you
must first undeploy it from the production systems (click on Disable, then Deploy).
A confirmation screen will be shown.
By default, only the channel will be deleted, not the elements (gateways, message definitions, transformations,
...) that the channel could reference. But it is possible to also delete the elements, thanks to the advanced options in the confirmation screen. Just click on the elements that you also want to delete. Note also that this list
44
Channels
only includes elements that are deletable, that means that are not referenced by other channels or transformations.
Figure 4.8. Delete a channel
4.1.6. Duplicate a Channel
This operation allows you to easily create a channel similar to an existing one.
By default, the created channel will be completely independent from the source one : all referenced elements
(gateways, message definitions and transformations) will also be duplicated. But you can change this in the advanced options, by specifying element by element, if you want to make a copy, share the existing element, use
another similar element or even leave it empty.
Figure 4.9. Duplicating a channel
45
Channels
The duplication can be accessed from the general tab of the channel detail screen, or from the create channel
screen. You have to use this second location if you want to use as source channel a channel from a different environment than the current one.
4.2. Gateways
This section contains all the tools needed to manage your gateways. A simplified edition of the gateways is directly available in the channels overview, but you need to come to this section to have access to all functionalities.
Gateways are used in Babelway to specify how messages are communicated between external systems and the
Babelway system.
Each channel contains 2 gateways:
• Gateway in is used to specify the way incoming messages are communicated from the source external system
to Babelway.
• Gateway out is used to specify the way outgoing messages are communicated from Babelway to the target
external system.
Babelway supports a large variety of protocols, including AS2, FTP, OFTP, Email, Http. To browse the full
list of available gateways, see our catalogue, or consult the different gateway types.
4.2.1. Gateways list
The List of Gateways screen shows you all the gateways defined in your environment, even if they have not
been used in any channel. From here, you can easily edit them, or create new ones.
This screen is accessible by clicking on the menu Channels, then the sub-menu Gateways
Figure 4.10. List of gateways
The list can contain the following columns:
46
Channels
Name
A name that identifies the channel.
Description
A free description for the channel.
Direction
IN for gateways in, or OUT for gateways out.
Type
The type of the gateway. See gateway types for all possible values.
Created on
The date and time when the channel was created.
Last updated on
The date and time of the last modification that affected the channel.
For more information about the behavior of the grid, and how to make searches, see the grid section for help.
You can click on a line to view the details of the associated gateway, or edit it. See gateway details.
The Create gateway action button allows you to create new gateways.
The Clean gateways action button allows you to very easily delete all the gateways that are not used. The interface will just show you the list of all gateways that are deletable (this mean not used in any channel). You'll just
have to tick the ones that you want to be deleted, and confirm the operation.
Figure 4.11. Clean gateways
4.2.2. Creation of a gateway
To create a gateway, you have two main options:
• Create the gateway from scratch.
• Duplicate an existing gateway that you already created, or from the Babelway catalogue.
You can access this choice by clicking on Create a gateway in the gateways list screen, or directly from the
channel detail screen.
Create a new gateway.
47
Channels
To create a gateway, first you have to select the type of gateway that you want to use (Email, FTP, AS2, HTTP,
...).
Figure 4.12. Gateway creation - Type choice.
Then you need to fill the parameters of the gateway and click on Create gateway. The parameters depend on the
type of gateway selected. You can find a detailed explanation of every gateway type in the section on GatewayTypes..
Figure 4.13. Gateway creation - Parameters for Email
48
Channels
Figure 4.14. Gateway creation - Parameters for FtpClient
After having clicked on Create gateway, you will receive a confirmation that the gateway is correctly created,
or a detailed error message if your parameters are not correct.
Figure 4.15. Gateway creation - Confirmation
Figure 4.16. Gateway creation - Error
Reuse an existing gateway.
The other solution is to select an existing gateway from the "Reuse and save time" zone.
49
Channels
Figure 4.17. Gateway creation - Reuse
Figure 4.18. Gateway creation - Reuse confirmation
When you are in the Channels section, and you reuse a gateway that is already used in other channels, you will
have the choice of either to share the gateway, or to make a copy.
Figure 4.19. Gateway creation - Share or copy
More details can be found in the Reuse and save time section.
4.2.3. Gateway detail
This page shows all the details about a gateway, and gives access to all operations that can be made on gateways.
This page can be accessed from the gateways list, or by following any link that refers to a gateway.
The page contains the following tabs.
General
The general tab contains the signaletic information of the gateway, and offers actions that act on the whole
gateway.
Direction
Field used to indicate if the message is coming in the system or leaving it.
Type
50
Channels
Type of the gateway. See gateway types for more details.
Name
A name that you can set and/or modify to easily retrieve and manage your element.
Description
A free text field that you can set and/or modify used in addition to element name to help you identify your
element usage and/or function.
Id
A unique identifier automatically set by Babelway platform.
Created On
Date and time of element creation.
Last Updated On
Date and time of last element configuration update.
If the gateway is based on time, for instance a FTP Client Gateway using polling, this page contains a Poll now
action button. This button triggers the gateway action directly without waiting for the next defined moment.
Properties
This tab contains the configuration of the gateway.
The parameters depend on the type of the gateway.
Related items
This tab contains quick links to many other elements related to this gateway.
Using channels
All the channels that use this element.
Parent
The parent is the element from which the element has been copied.
Children
The children is the element which is a copy of the current element.
Connected gateways (within this environment)
List of gateways to which this gateway sends messages.
Connected gateways (within this environment)
List of gateways from which this gateway receives messages.
Connected Notifications
List of notification from which this gateway receives messages.
Messages processed by this gateway
A link that shows you the message list filtered, to show messages processed by this gateway.
Connected Message Definition (through extra-processing)
List of message definition that have an extra-processing related to this gateway.
51
Channels
Change Log
This tabs shows you all the history of changes made on this gateway, and allows you to revert to a past version.
For more details, see the change log section.
4.2.4. Gateway types
Here is the list of all the gateway types used in the application, with some more information about their specific
uses and parameters.
Gateway In
• Email Gateway: Incoming messages are attached to email messages and sent to a specific Babelway email
address and processed as soon as they arrive.
• FTP Client Gateway: Incoming messages are polled and retrieved from a remote ftp server using a login and
password.
• SFTP Client Gateway: Incoming messages are polled and retrieved from a remote sftp server using a login
and password.
• FTP Server Gateway: Incoming messages are transferred to a specific Babelway Ftp server and processed as
soon as they arrive.
• SFTP Server Gateway: Incoming messages are transferred to a specific Babelway sftp server and processed
as soon as they arrive.
• AS2 Gateway: A communication standard largely used in retail environment to secure communications over
the Internet.
• Internal Gateway: A gateway used to transfer messages between 2 channels within Babelway.
• Lookup table Gateway: used to create a message using values present in a lookup table.
• OFTP Server Gateway: Incoming messages are transferred to a Babelway specific OFTP server and processed as soon as they arrive.
• OFTP Client Gateway: Incoming messages are polled and retrieved from a remote OFTP server using login
and password.
• Http Client Gateway: Incoming messages are polled and retrieved from a remote Http server.
• Web Scraping Gateway: Incoming messages are polled using a scenario mimicking a browser navigating the
web.
• Http Gateway: Incoming messages are transferred to a Babelway specific Http server and processed as soon
as they arrive.
• Rest Gateway: Allows you to implement a REST api.
• X.400 Gateway: Incoming messages are transferred to a Babelway specific X.400 server and processed as
soon as they arrive.
• Scheduler Gateway: Create new messages based on time triggers.
52
Channels
• NFS Gateway: Incoming messages are polled and retrieved from a remote NFS server using login and password.
• SAP Gateway In: Incoming messages are pushed to Babelway from a SAP server and processed as soon as
they arrive.
• Dropbox Gateway: Incoming messages are polled from a Dropbox account.
• Certione Gateway: Incoming messages are polled from a Certione account.
• Tradeshift Gateway: Incoming messages are polled from a Tradeshift account.
• E-conomic Gateway In: Incoming messages are pushed to Babelway from an E-conomic account and processed as soon as they arrive.
• VAN Gateway In: Incoming messages are polled from ECGrid VAN.
• PEPPOL Gateway In: Incoming messages are received from the PEPPOL network.
• RosettaNet Gateway In: Incoming messages are received from a RosettaNet server.
• ePrior Gateway In: Incoming messages are received from ePrior requests.
• Amazon Marketplace Gateway In: Incoming messages are polled from an Amazon marketplace account.
• NemHandel Gateway In: Incoming messages are received from the NemHandel network.
Gateway Out
• Email Gateway Out: With an Email Gateway Out, outgoing messages are attached to an email and sent to a
specific email address.
• FTP Client Gateway: With a Ftp Client Out Gateway, outgoing messages are transferred to an external Ftp
server.
• SFTP Client Gateway: With a SFTP Client Out Gateway, outgoing messages are transferred to an external
SFTP server.
• FTP Server Gateway:With a Ftp Server Out Gateway, outgoing messages are available from a Babelway
FTP server.
• SFTP Server Gateway:With a Sftp Server Out Gateway, outgoing messages are available from a Babelway
SFTP server.
• AS2 Gateway: A communication standard largely used in retail environment to secure communications over
the Internet.
• Internal Gateway: The internal gateways in / out are used to transfer messages between 2 channels inside the
same Babelway environment.
• Null Gateway: The outgoing messages are not sent anywhere.
• Splitter Gateway: A gateway used to split your messages and pass them to other gateways.
• Aggregator Gateway Out: The aggregator allows you to merge messages into one larger file. The resulting
messages are forwarded to another channel in the same environment.
53
Channels
• Lookup table Gateway: used to fill a lookup table automatically from a message.
• OFTP server Gateway: With an OFTP Server Out Gateway, outgoing messages are available from a Babelway OFTP server.
• OFTP Client Gateway: With an OFTP Client Out Gateway, outgoing messages are transferred to an external
OFTP server.
• HTTP out Gateway: With a HTTP out Gateway, outgoing messages are available from a Babelway HTTP
server.
• Http Client Out Gateway: With an Http Client Out Gateway, outgoing messages are send using a Http connection.
• Soap Client Out Gateway: With an Soap Client Out Gateway, outgoing messages are sent using a SOAP call.
• ePrior Soap Client Out Gateway: With ePrior Soap Client Out Gateway, outgoing messages are sent using a
SOAP call to Belgian ePrior/Mercurius platform.
• ePrior Out Gateway: With ePrior Out Gateway, outgoing messages are made available on Babelway ePrior
server.
• X.400 Gateway Out: With a X.400 Gateway, outgoing messages are sent to a specific trading partner address
using a X.400 network.
• NFS Gateway: Outgoing messages are pushed from Babelway to a NFS server.
• SAP Gateway Out: Outgoing messages are pushed from Babelway to a SAP server.
• Dropbox Gateway: Outgoing messages are pushed from Babelway to a Dropbox account.
• Exact Postbox Gateway: Outgoing messages are pushed from Babelway to an Exact POSTBOX account.
• Tradeshift Gateway: Outgoing messages are pushed from Babelway to a Tradeshift account.
• Billtrust Gateway: Outgoing messages are pushed from Babelway to a Billtrust API.
• VAN Gateway Out: Outgoing messages are pushed from Babelway to ECGrid VAN.
• PEPPOL Gateway Out: Outgoing messages are sent to the PEPPOL network.
• RosettaNet Gateway Out: Outgoing messages are sent to a RosettaNet server.
• Amazon Marketplace Gateway: Outgoing messages are sent to Amazon marketplace account.
• NemHandel Gateway Out: Outgoing messages are sent to the NemHandel network.
Email Gateway In
Email gateway in allows you to receive incoming messages sent to a specific Babelway email address, as attachments. The messages are processed as soon as they arrive.
The specific parameters are:
Email address
The email address to which the incoming messages are sent as email attachment.If the address already ex54
Channels
ists, you will have to enter a new address. Remember that this email address will only be created at channel
deployment.
Ftp Client Gateway In
With a Ftp Client In Gateway, incoming messages are transferred from an external Ftp server. Babelway polls
files from this server at regular intervals.
The specific parameters are:
Server
External ftp server address where Babelway should fetch messages, eg. ftp.example.com
Username
Login or username to access files on this external ftp server.
Password
Password associated to the username.
Passive Mode
Indicates that the ftp connection is in passive. Ticking this means the ftp client will establish 2 connections
to the ftpserver client.
Directory
Directory where files are to be fetched on the server.
File pattern
The file pattern is a regex used to filter files to import (ex: '.*\.csv' for all file ending with '.csv' or
'(?!proc_).*\.csv' for all csv file that don't start with 'proc_'. If left empty, all files will be transferred.
Protocol
Select FTP, FTPS (Explicit mode) or FTPS (Implicit mode) protocol.
Private key
The private key associated with the previous username to access your account. This can be left empty if
you choose to only use the password authentication mechanism.
Suffix during transfer
Suffix that will be appended to the file name when a file is being transferred. This mechanism is used to
prevent that a file is transferred twice.
After transfer behaviour
What will happen to your file after we have read it. This behaviour is important so that your file is not read
again at next poll. The possible values are :
• Delete. It is the default. After having read it, the file will be deleted from the remote server.
• Rename. A suffix will be appended to the file name.
• Move. File will be moved to another folder of the remote server.
• Move and rename. File will be moved to another folder, and renamed.
• DoNothing. Don't do anything. Be very careful with this option, as it could mean that your file will be redownloaded at each poll. Should only be used with servers that move or delete the file automatically at
55
Channels
download.
Suffix after transfer
Suffix that will be appended to the file name when a file has been completely transferred.
Folder for transferred files
Directory where transferred files will be moved.
Cron expression
Cron expression. Allows you to define complex time expression like every weekday night at 23:00 (0 23 ?
* MON-FRI). If left empty, the system will check at least once every 15 minutes. For easy creation of your
cron expression, you can use the online cron maker tool available at http://www.cronmaker.com/. For more
information, please refer to the page: http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html
When a message is transferred to the ftp server, it is processed immediately then the original file is removed
from the server.
Ftp Server Gateway In
With a Ftp Server In Gateway, incoming messages are received on a Babelway specific ftp server and processed as soon as they arrive.
The specific parameters are:
Server
Babelway ftp server set as "ftp.babelway.net"
Username
Login or username to access your account on Babelway ftp server. This username must be unique as it is
linked to a specific directory on the ftp server.
Password
Password associated with the username.
Directory
The directory on the ftp server on which you wil have to put your files so that they are processed by this
gateway.
After channel deployment, your ftp server will be available to send messages. You can access this ftp server using any ftp client software set up with the previous account parameters.
Babelway FTP gateways are supporting FTP and FTPS (Explicit mode) on port 21. It also support FTPS
(Implicit mode) on port 990.
SFTP Client Gateway In
With a SFTP Client Input Gateway, incoming messages are transferred to an external SFTP server. Babelway
platform polls this server at regular intervals and retrieves incoming files to process them.
The specific parameters are:
Server
Sftp server host name
56
Channels
Username
Login or username to access files on this external sftp server.
Password
Password associated with the username.
Private key
Private key associated with the username.
Directory
Directory where files are to be fetched on the server.
File pattern
The file pattern is a regex used to filter files to import (ex: '.*\.csv' for all file ending with '.csv' or
'(?!proc_).*\.csv' for all csv file that don't start with 'proc_'. If left empty, all files will be transferred.
Cron expression
Cron expression. Allows to define complex time expression like every weekday night at 23:00 (0 23 ? *
MON-FRI). If left empty, the system will check at least once every 15 minutes. For easy creation of your
cron expression, you can use the online cron maker tool available at http://www.cronmaker.com/. For more
information, please refer to the page: http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html
Suffix during transfer
Suffix that will be appended to the file name when a file is being transferred. This mechanism is used to
prevent that a file is transferred twice.
After transfer behaviour
What will happen to your file after we have read it. This behaviour is important so that your file is not read
again at next poll. The possible values are :
• Delete. It is the default. After having read it, the file will be deleted from the remote server.
• Rename. A suffix will be appended to the file name.
• Move. File will be moved to another folder of the remote server.
• Move and rename. File will be moved to another folder, and renamed.
• DoNothing. Don't do anything. Be very careful with this option, as it could mean that your file will be redownloaded at each poll. Should only be used with servers that move or delete the file automatically at
download.
Suffix after transfer
Suffix that will be appended to the file name when a file has been completely transferred.
Folder for transferred files
Directory where transferred files will be moved.
SFTP Server Gateway In
Using the SFTP Server In Gateway,incoming messages are received on a Babelway specific server and processed as soon as they arrive. The SFTP server gateway supports SFTP version 3 and password and/or public
key user authentication mechanisms.
The specific parameters are:
57
Channels
Server
Babelway SFTP server default value is 'sftp.babelway.net'.
Username
Login or username to access your account on the Babelway SFTP server. This username must be unique as
it is linked to a specific directory on the SFTP server.
Password
The password associated with the username. This can be left empty if you choose to only use the public key
authentication mechanism.
Public Key
The public key associated with the username. This can be left empty if you choose to only use the password
authentication mechanism. The supported formats are RSA public key (OpenSSH, Putty or DER format).
More information about generating such a key can be found at the end of this page.
Directory
The directory on the ftp server on which you wil have to put your files so that they are processed by this
gateway.
You can set both password and public key fields. Therefore, you will be able to connect to your account either
by using a password or by using your private key associated with the uploaded public key.
After channel deployment, your SFTP server will be available to send messages. You can access this SFTP
server using any SFTP (version 3) client software set up with the previous account parameters.
When a message is received by the SFTP server, it is directly processed. After processing the file is removed
from the server
The public key is expected to be in a RSA format (OpenSSH, Putty or DER). If you don’t already have a public/private key, you can generate one using ssh-keygen from OpenSSH :
C:\cygwin\bin>ssh-keygen.exe
Generating public/private rsa key pair.
Enter file in which to save the key (/.ssh/id_rsa): /tmp/identity
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /tmp/identity.
Your public key has been saved in /tmp/identity.pub.
The key fingerprint is:
f0:e4:2f:(...) user@computer
AS2 Gateway
With an AS2 Gateway, incoming messages are received using an AS2 connection. Incoming files are processed
as soon as they are received.
AS2 (Applicability Statement 2) is a specification about how to transport data securely and reliably over the
Internet. Security is achieved by using digital certificates and encryption.
The specific parameters are:
From
AS2 ID of the server that sends incoming messages. Provided by your partner
58
Channels
To
AS2 ID of the Babelway destination server. You must communicate it to your partner
Local URL address
URL address used by your partner to send messages to this gateway. It works for both http and https protocol.
AS2 documentation
File containing instructions and certificates for the installation. You should download it and send it to your
AS2 partner.
Message signature enforced
Should message signature be enforced or not.
Certificate for verification
Certificate used for message verification. Provided by your partner.
Message encryption enforced
Should message encryption be enforced or not.
Certificate for decryption
Local certificate to use for decrypting the AS2 messages. These certificates are kept in the environment certificates store.
Maximum retries
Maximum number of retries if message sending failed. Default is 8 times.
Retry interval
Interval of time before trying to send message again (in seconds). Default is 1800 (30 minutes).
After channel deployment, your AS2 connection will be available to receive messages.
To report AS2 parameters to the other party, dowload the AS2 documentation ZIP file. This file can send to the
other party to give them all parameters they will require to establish a communication with your channel.
OFTP Server Gateway In
With an Oftp server Gateway in, Incoming messages are received on a Babelway specific OFTP server and processed as soon as they arrive.
The specific parameters are:
Partner SSID
Partner SFID
The SFID provided by your partner. If none has been provided, this is probably the same as SSID.
Partner password
The password of your partner. Provided by your partner.
My SSID
Babelway is providing an official Odette SSID : O01770000000000X0B5SHARED. Please call support if
you want to use a different one.
My SFID
59
Channels
An SFID is automatically assigned to your Environment: O01770000000000X0B5xxxxxx. Please call support if you want to use a different one.
My password
The value of the password is 'BABELWAY'.
OFTP documentation
File containing instructions and certificates for the installation. You should download it and send it to your
OFTP partner.
Use compression
Compresses the messages.
Sign messages
Sign outgoing messages using the key selected in "Signature certificate". This allows your partner to verify
that you are the one sending the message. This option is only available with OFTP 2.0.
Signature certificate
Select signature certificate or go to certificates store. This option is only available with OFTP 2.0.
Encrypt messages
Encrypt outgoing messages using the certificate selected in "Encryption certificate". This allows your partner to be the only one able to decrypt the messages sent. This option is only available with OFTP 2.0.
Encryption certificate
Select encryption certificate or go to certificates store.
Encryption algorithm
Select encryption algorithm or go to certificates store.
Receive signed messages
This allows you to verify that your partner is the one sending the message using the certificate selected in
"Signature verification certificate". This option is only available with OFTP 2.0.
Signature verification certificate
Select certificate for data or go to certificates store.
Request signed ack (EERP)
Requests that incoming acknowledgments are signed. The signature will be verified using the Certificate
selected in "EERP verification certificate". This allows you to be sure that only the partner could have
signed the incoming messages. This option is only available with OFTP 2.0.
EERP verification certificate
Select certificate for EERP or go to certificates store.
Transfer mode
Advanced. Once the connection is open the OFTP gateway will act as both sender and receiver by default.
You can control this by setting the following values : BOTH / RECEIVER_ONLY / SENDER_ONLY
Version
Advanced. Babelway is supporting both OFTP1 and OFTP2. When a connection is open, Babelway uses
the OFTP built-in mechanism to negotiate the protocol version. The protocol will be the highest possible.
Valid values are : OFTP_V12 for version 1.2 / OFTP_V13 for version 1.3 / OFTP_V14 for version 1.4 /
OFTP_V20 for version 2.0
Credit count
60
Channels
Advanced. Control the OFTP "creditCount" parameter. This is the number of data command ( = CREDIT)
that could be exchanged prior to an OFTP confirmation from the partner. Default is 64
Data exchange buffer size
Advanced. Control the OFTP "dataExchangeBufferSize" parameter. This is the size of the OFTP data buffer. It should be smaller than the maxBDataLen for ISDN connection. The minimum is 128 bytes and the
maximum is 4096 for ISDN and 65535 for TCP connections. Default is 1024
Server configuration
Local server configuration. Leave empty for the shared Babelway OFTP. Contact support for special needs.
After channel deployment, your Oftp server will be available to send messages. You can access this oftp server
using any Oftp client software set up with the previous account parameters.
If you require a custom SSID / SFID / PASSWORD, please send a request to [email protected] .
When a message is transferred to the Oftp server, it is processed immediately then the original file is removed
from the server.
OFTP client Gateway In
With an OFTP Client In Gateway, incoming messages are transferred from an external OFTP server. The Babelway platform polls this server at regular intervals and retrieves files to process them.
The specific parameters are:
Partner SSID
The OFTP ID provided by your partner.
Partner SFID
The SFID provided by your partner. If none has been provided, this is probably the same as the SSID.
Partner password
The password of your partner. Provided by your partner.
My SSID
Babelway is providing an official Odette SSID : O01770000000000X0B5SHARED. Please call support if
you want to use a different one.
My SFID
An SFID is automatically assigned to your Environment: O01770000000000X0B5xxxxxx. Please call support if you want to use a different one.
My password
The value of the password is 'BABELWAY'.
OFTP documentation
File containing instructions and certificates for the installation. You should download it and send it to your
OFTP partner.
ISDN number
List of phone numbers used for ISDN communication instead of Internet communication. The expected
format is a comma separated list of phone numbers ex : 0049511211306466 or
0049511211306466,003221234567
61
Channels
Max nb datablocks
Advanced. Control the OFTP "maxBDataBlocks" parameter (ISDN only). Default is 7
Max size datablock
Advanced. Control the OFTP "maxBDataLen" parameter (ISDN only). Default is 1024
Server
The URL of the server of your partner. It is provided by your partner.
Port
The port to connect onto. It is provided by your partner.
Use TLS
Use TLS (SSL) for communication
Secure Authentication Certificate
Use this certificate to perform client side TLS (SSL) authentication.
Cron expression
Cron expression. Allows to define complex time expression like every weekday night at 23:00 (0 23 ? *
MON-FRI). If left empty, the system will check at least once every 15 minutes. For easy creation of your
cron expression, you can use the online cron maker tool available at http://www.cronmaker.com/. For more
information, please refer to the page: http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html
Use compression
Compresses the messages.
Secure Authentication
Use OFTP2 'Secure Authentication'. This will use the certificates defined for encryption and signature.
Sign messages
Sign outgoing messages using the key selected in "Signature certificate". This allows your partner to verify
that you are the one sending the message. This option is only available with OFTP 2.0.
Signature certificate
Select signature certificate or go to certificates store. This option is only available with OFTP 2.0.
Encrypt messages
Encrypt outgoing messages using the certificate selected in "Encryption certificate". This allows your partner to be the only one able to decrypt the messages sent. This option is only available with OFTP 2.0.
Encryption certificate
Select encryption certificate or go to certificates store.
Encryption algorithm
Select encryption algorithm or go to certificates store.
Receive signed messages
This allows you to verify that your partner is the one sending the message using the certificate selected in
"Signature verification certificate". This option is only available with OFTP 2.0.
Signature verification certificate
Select certificate for data or go to certificates store.
Request signed ack (EERP)
62
Channels
Requests that incoming acknowledgments are signed. The signature will be verified using the Certificate
selected in "EERP verification certificate". This allows you to be sure that only the partner could have
signed the incoming messages. This option is only available with OFTP 2.0.
EERP verification certificate
Select certificate for EERP or go to certificates store.
Transfer mode
Advanced. Once the connection is open, the OFTP gateway will act as both sender and receiver by default.
You can control this by setting the following values : BOTH / RECEIVER_ONLY / SENDER_ONLY
Version
Advanced. Babelway supports both OFTP1 and OFTP2. When a connection is open, Babelway uses the
OFTP built-in mechanism to negotiate the protocol version. The protocol will be the highest possible. Valid
values are : OFTP_V12 for version 1.2 / OFTP_V13 for version 1.3 / OFTP_V14 for version 1.4 / OFTP_V20 for version 2.0
Credit count
Advanced. Control the OFTP "creditCount" parameter. This is the number of data command ( = CREDIT)
that could be exchanged prior to an OFTP confirmation from the partner. Default is 64
Data exchange buffer size
Advanced. Control the OFTP "dataExchangeBufferSize" parameter. This is the size of the OFTP data buffer. It should be smaller than the maxBDataLen for ISDN connection. The minimum is 128 bytes and the
maximum is 4096 for ISDN and 65535 for TCP connections. Default is 1024
Server configuration
Local server configuration. Use 1 for the shared Babelway OFTP. Contact support for special needs.
After channel deployment, your Oftp server will be available to send messages. You can access this oftp server
using any Oftp client software set up with the previous account parameters.
If you require a custom SSID / SFID / PASSWORD, please send a request to [email protected] .
When a message is transferred to the Oftp server, it is processed immediately then the original file is removed
from the server.
Http In Gateway
With an Http In Gateway, incoming messages are received as HTTP Post on the Babelway HTTP server and
processed as soon as they arrive.
The HTTP Post can use the following encoding method: HTML Form, base64 and urlencode.
Babelway is supporting synchronous processing of messaging. This is available when you submit messages using our HTTP gateway using SOAP and the SOAP operation: "process Message". The response will contains
the final result of the execution of the messages. If the messages generates more than one messages, the response will contains the full graph of processed messages.
It is also available through the REST of the gateways. There is only a limited available documentation on this
topic, but we would be more than happy to understand more your requirements and provide a proof of concepts
for you.
The specific parameters are:
63
Channels
Username
Login or username to access the service.
Password
Password associated with previous username.
HTTP Post URL
Using the HTTP Post protocols.
SOAP Url
Using the SOAP Post protocols. WSDL1
Submitted using a FORM
Check the message posting was performed using a Http POST submit.
FORM parameter
If the option "Submitted using a FORM" is used, this selects the parameter where to find the content of the
message.
Http In Client
The Http Client allows to periodically retrieve the content of the Http response to a specific URL
Url
Url to call to create message.
Username
Username used for BASIC authentication.
Password
Password used for BASIC authentication.
Http headers
You can add specific http header.
Valid HTTP return code
Comma separated list of expected return Http code. If the return code is not in the list, the polling generates
an alert. The default is '200,201,202,204,205'.
Cron expression
Cron expression. Allows to define complex time expression like every weekday night at 23:00 (0 23 ? *
MON-FRI). If left empty, the system will check at least once every 15 minutes. For easy creation of your
cron expression, you can use the online cron maker tool available at http://www.cronmaker.com/. For more
information, please refer to the page: http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html
Web Scraping
The Web scraping allows to periodically retrieve messages using a scenario mimicking a browser navigating
the web.
Scenario
1
https://ws.babelway.net/ws/SoapIn?WSDL
64
Channels
Xml definition of the web scraping scenario.
See the complete documentation of the scenario syntax.
Use variables from lookup table
The scenario will be executed once per iteration ookup table row block. The value of the lookup table will
added to the execusion context and available using the VARIABLE::columnName function. Scenario will
be executed once without parameters if lookup table is left empty.
Cron expression
Cron expression. Allows to define complex time expression like every weekday night at 23:00 (0 23 ? *
MON-FRI). If left empty, the system will check at least once every 15 minutes. For easy creation of your
cron expression, you can use the online cron maker tool available at http://www.cronmaker.com/. For more
information, please refer to the page: http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html
Rest In Gateway
This gateway in allows you to easily publish a REST api.
It has the following characteristics:
• It will respond synchronously to the REST api calls with the result of the processing of the message by the
channels.
• It injects a xml message in that contains all the elements of the REST call (uri, parameters, expected output
format, ...).
• It supports 'json', 'xml' and 'csv' as output format.
• It supports multi-credentials.
The specific parameters are:
Url identifier
Part of the url that identifies this gateway. The urls to call the REST api will have the form https://ws.babelway.net/rest/<urlIdentifier>/<yourUrlParams>.(json|xml|csv)
Allowed credentials.
A list of user names/passwords pairs that are allowed to access this api. The user will have the choice to
provide user name and password via http basic authentication, http parameters 'user' and 'password' or http
headers 'user' and 'password'.
Url patterns
Optional. If filled, the requested url will be checked again. This pattern will be refused it it doesn't match at
least one pattern. You can also prefix the pattern with 'PRE:', 'POST:', 'PUT:', ... if you want this pattern to
only be accessible via one specific http method.
Here is an example of message In, that is generated by this gateway.
<?xml version="1.0" encoding="UTF-8"?>
<restRequest>
<uri>/sws/shipmentStatus/BE.json</uri>
<identifier>sws</identifier>
<action>shipmentStatus</action>
<method>GET</method>
<format>json</format>
65
Channels
<userName>bertrand</userName>
<parameters>
<param1>BE</param1>
<myParam>myValue</youpie>
</parameters>
</restRequest>
X.400 Gateway In
With a X.400 In Gateway, allows receival of message from X.400 networks. Your trading partners can reach
you via your private X.400 address.
The specific parameters are:
X.400 address
The account private address. This is the address to communicate to your trading partners. The formatting
may vary from one partner to the other. The most common format is: C=WW; A=400NET;
P=BABELWAY; S=HUB-25333 /C=WW/A=400NET/P=BABELWAY/S=HUB-25333.
After channel deployment, your connection will be available to send messages.
The first time X.400 is used in an account, it has to be enabled by Babelway support. The request is done automatically and you will be notified when the gateway is functional.
Scheduler in Gateway
The Scheduler in Gateway allows you to create a message based on a time trigger.
The specific parameters are:
Frequency
Number of seconds between two events. The default value is 90 seconds and cannot be lower. This is the
simplest way to define a time event. For more complex need, use the Cron Expression property instead.
Cron expression
Cron expression. Allows to define complex time expression like every weekday night at 23:00 (0 23 ? *
MON-FRI). This takes precedence on the frequency property. For easy creation of your cron expression,
you can use the online cron maker tool available at: http://www.cronmaker.com/. For more information,
please refer to the following page: http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html
Message
Message template that will be sent each time this scheduler is activated. If not filled, a default xml is used
(that just contains the time and the gateway id).
Internal Gateway In
The internal gateway in / out are used to transfer messages between 2 channels within the same account environment.
There is no parameter to define in this template. The internal gateway will be automatically created using the
gateway name you entered. You will then be able to select it as an Internal Gateway Out in another channel
configuration.
66
Channels
As opposed to most other gateways, the internal gateway is immediately available as the gateway out for other
channels configuration without requiring a channel deployment.
Lookup table Gateway In
This gateway allows you to create a message from the content of a lookup table. The message created is a XML
document. It uses the same format as the XML CVS representation used internally by Babelway.
Lookup Table Id
The technical id of the lookup table.
Include headers
Check this to add the column names as headers of the messages created.
Filter 1 column
Column used to filter the extract of the lookup tables entries.
Filter 1 value
Value used to filter the extract of the lookup tables entries.
Filter 2 column
Column used to filter the extract of the lookup tables entries.
Filter 2 value
Value used to filter the extract of the lookup tables entries.
Filter 3 column
Column used to filter the extract of the lookup tables entries.
Filter 3 value
Value used to filter the extract of the lookup tables entries.
Post extract operation
Optional operation to perform on selected entries after extraction. Default is DELETE
Column to update
Column to update after the extract of the lookup tables entries, Only used with 'Update' in 'Post extract operation'.
Column to update
Column to update after the extract of the lookup tables entries, Only used with 'Update' in 'Post extract operation'.
Update value
Value to use when updating the column to update.
Limit
Maximum number of entries to extract in 1 execution of this gateway.
Entries per message
Maximum number of entries per message. If the overall limit is bigger, several messages will be created for
each execution of this gateway.
Cron expression
67
Channels
Cron expression. Allows you to define complex time expression like every weekday night at 23:00 (0 23 ?
* MON-FRI). If left empty, the system will check at least once every 15 minutes. For easy creation of your
cron expression, you can use the online cron maker tool available at: http://www.cronmaker.com/. For
more
information,
please
refer
to
the
following
page:
http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html
NFS Gateway
The NFS gateway is used to connect and fetch files from a remote NFS server.
Server
Hostname of the NFS server.
Export
Name of the exported volume.
Login method
NFS login method: use PCNFSD for username / password and UGID to directly use UID, GID and GIDS.
Username
Username used for the NFS authentication. Only used with PCNFSD login method.
Password
Password used for the NFS authentication. Only used with PCNFSD login method.
User ud
Unix user UID to use during authentication. Only used with UGID login method.
User group id
Unix user's group GID to use during authentication. Only used with UGID login method.
User extra group ids
Unix user's additional groups GID to use during authentication, encoded as a comma separated list. Only
used with UGID login method.
Directory
Local NFS path to the folder you want to use. This is relative to the export.
Filename pattern
If not empty, only the files whose name matches this pattern will be transferred.
Suffix during transfer
Suffix that will be appended to the file name when a file is being transferred. This mechanism is used to
prevent that a file is transferred twice.
After transfer behaviour
What will happen to your file after we have read it. This behaviour is important so that your file is not read
again at next poll. The possible values are :
• Delete. It is the default. After having read it, the file will be deleted from the remote server.
• Rename. A suffix will be appended to the file name.
• Move. File will be moved to another folder of the remote server.
68
Channels
• Move and rename. File will be moved to another folder, and renamed.
• DoNothing. Don't do anything. Be very careful with this option, as it could mean that your file will be redownloaded at each poll. Should only be used with servers that move or delete the file automatically at
download.
Suffix after transfer
Suffix that will be appended to the file name when a file has been completely transferred. The use of this
mechanism allows you to keep the file after the transfer, with this suffix appended to its name. If left
empty, the file will be deleted after the transfer.
Folder for transferred files
Directory where transferred files will be moved.
Cron expression
By default, the gateway will regularly poll the messages from your NFS server, so that they come into Babelway a short time (less than 10 minutes) after they have been placed in your NFS server. You can write
here a cron expression to customise the polling schedule. For easy creation of your cron expression, you
can use the online cron maker tool available at : http://www.cronmaker.com/.
SAP Gateway In
The SAP Gateways are based on the SAP RFC protocol and JCo technology. RFC is an SAP interface protocol
allowing internal or external systems to communicate with the SAP system. JCo is the Java implementation of
RFC distributed by SAP. Babelway leverage the built-in JCo redundancy mechanism to distribute the gateway
on our different locations (data centers).
Figure 4.20. Solution overview
System boundaries, acknowledgment and error management
For Inbound IDoc, Babelway sends the IDoc to SAP. If the message cannot be delivered to SAP, the error will
be managed using the traditional Babelway process. Error notifications will be delivered to registered users.
When the message is delivered to SAP, Babelway fetches the detailed status and error messages of the IDoc.
The messages are always set to 'acknowledged' when the transmission is successfully. However the status could
be SUCCESS or ERROR depending the SAP IDOC status code.
For Outbound IDoc, SAP sends IDOC to Babelway. If the message cannot be delivered to Babelway, the IDoc
69
Channels
is in error in SAP with a status = 20. Once the message is delivered to Babelway, SAP automatically change the
status to 03. In addition of this, we provide a function to explicitly change the status by calling the RFC defined
during the setup phase. This allow SAP that the remaining of the IDoc processing will entirely take place in Babelway.
Connectivity Setup
Babelway provides the gateways to communicate in both direction. SAP Gateway In allows to receive outbound IDoc and SAP Gateway Out allows to send inbound IDoc to SAP. The JCo RFC Provider service uses a
TCP/IP connection type. In order to secure this connection, Babelway advices one of the following solutions:
• Option 1: A strict firewall rule to allow 4 Babelway public IP addresses to connect to the SAP server
• Option 2: Using SAP router in the DMZ, as well as the firewall configuration like in Option1
• Option 3: You can contact Babelway support to setup a IPSec VPN between the 4 Babelway public IP addresses and the SAP server. Please send a request to [email protected]
The Port number used to contact the SAP system range from 3300 to 3399. The exact port number depends on
the SAP system you want to reach. The exact port number must be given in the parameters (defined below).
Firewall need to allow Babelway server to reach these ports.
SAP configuration
Here is the list of the SAP specific setup to perform in order to make the connector working. This is guide lines
• Create a "RFC destination" (transaction sm59) with the name "BABELWAY". The "Connection Type" is
"TCP/IP Connection". Go to "Technical settings" and fill "BABELWAY" in the "Program ID" field. Go next
to the "Unicode" tab and in the "Communication Type", select the "Unicode".
70
Channels
Figure 4.21. RFC destination
• Create a "Ports in IDoc processing" (transaction we21) in the "Transactional RFC" with the name "BABELWAY".
71
Channels
Figure 4.22. Ports in IDoc processing
• For inbound IDoc, there is no special configuration. All programs are allowed to delivered IDocs for all partners. For outbound IDoc, Go to "Partner profiles" (transaction we20) then for each partner and each "Message Type" you want to change, go to "Outbound Options" and change the "Receiver port" to "BABELWAY" in the tab "tRFC".
72
Channels
Figure 4.23. Sap Partner Profiles
73
Channels
Figure 4.24. Sap Partner Profiles Outbound Parameters
• If you want to leverage the "Update Status" feature, you need to add the specific RFC call. By default the
system will call the following function: ZZBABELWAY_IDOC_STATUS_UPD taking 2 input parameters:
PI_DOCNUM (IDoc number) and PI_STATUS (the new status = 16). The code for such function is given
here2.
• Here is a list of transactions that could help you during the setup of your connection:
• sm59 : maintenance of "RFC destination"
• we21 : maintenance of "Ports in IDoc processing"
• we20 : maintenance of "Partner profiles"
• we02 : "IDoc List"
• we19 : "Test tool for IDoc processing"
2
http://www.babelway.com/help/resources/sap_updateStatusBapi.txt
74
Channels
• sm58 : "Transactional RFC". Use this to look for TID = Gateway In message key
• smgw : "Gateway Monitor"
• sm21 : "System Log"
• we63 : "Documentation" usefull to get IDoc parser or XSD to use in Babelway wizard
• su01 : "User Maintenance"
Babelway configuration
Simply create a channel with the SAP gateway and XML IDoc message definition.
Figure 4.25. Sap Channel Details
The specific parameters are :
SAP client
SAP client to use. This is the three digit number you use in the first field of the login screen of SAP Gui. It
has the name 'Client' and is just above the user and password fields. For instance: 001, 210, 400 ...
User
The Valid SAP user ID you want to use. Ideally this should be a user specially created for this purpose. For
instance: user
Password
75
Channels
Password associated with the user ID. For instance: password
Server address
IP or DNS name for SAP application server. For instance: sap.yourcompany.com if using a sap router, use
the sap router syntax details here: /H/SAP_ROUTER/S/3300/H/SAP_SERVER/S/3300 http://help.sap.com/saphelp_nw04/helpdata/en/4f/993172446d11d189700000e8322d00/frameset.htm if you
are using a NAT: put the public address in sm59
RFC destination
This is the name of the RFC Destination to use. This RFC destination must use TCP/IP connection. See
help for more details. For instance: BABELWAY
SAP system number
SAP system number is the last 2 digits of the SAP client. For instance: 01, 10, 00. Default is the last 2 digits of SAP client parameter
Gateway address
IP or DNS name for SAP gateway. It could be the same as jco.client.ashost if no external gateway is used.
the For instance: gateway.yourcompany.com. Default is the same as SAP server address parameter.
Gateway port
This is the port number to reach the TCP RFC server. For instance use 3301 to reach system 01 or 3310 to
reach system 10. Default is 3300 + the last 2 digits of SAP client parameter.
Custom update status
Should the system call the RFC function to explicitly update the status in SAP. Default is true and it required a RFC to be configured in SAP. Default is false.
Update status function
The name of the RFC updating the status. For instance: ZZBABELWAY_IDOC_STATUS_UPD
Use unicode
Specify if unicode should be used. Use 0 for false and 1 for true. For instance: 0
Dropbox Gateway In
The Dropbox gateway in allows to retrieve your messages from a Dropbox account.
The specific parameters are:
Dropbox account
The name of the Dropbox account from which the messages are polled. This information is "read only",
and set by the wizard when you allow Babelway to access the Dropbox account.
Folder
The folder in your Dropbox account from which the messages are transferred to Babelway. This folder is
located under the path /Applications/Babelway/ .
Filename pattern
If not empty, only the files whose name matches this pattern will be transferred to Babelway. Otherwise, all
files are automatically transferred to Babelway
Suffix during transfer
Suffix that will be appended to the file name when a file is being transferred. This mechanism is used to
prevent that a file is transferred twice.
76
Channels
After transfer behaviour
What will happen to your file after we have read it. This behaviour is important so that your file is not read
again at next poll. The possible values are :
• Delete. It is the default. After having read it, the file will be deleted from the remote server.
• Rename. A suffix will be appended to the file name.
• Move. File will be moved to another folder of the remote server.
• Move and rename. File will be moved to another folder, and renamed.
• DoNothing. Don't do anything. Be very careful with this option, as it could mean that your file will be redownloaded at each poll. Should only be used with servers that move or delete the file automatically at
download.
Suffix after transfer
Suffix that will be appended to the file name when a file has been completely transferred. The use of this
mechanism allows you to keep the file after the transfer, with this suffix appended to its name. If left
empty, the file will be deleted after the transfer.
Folder for transferred files
Directory where transferred files will be moved.
Scheduling
By default, the gateway will regularly poll the messages from your Dropbox account, so that they come into Babelway a short time (less than 10 minutes) after they have been placed in your Dropbox account. You
can write here a cron expression to customise the polling schedule. For easy creation of your cron expression, you can use the online cron maker tool available at : http://www.cronmaker.com/.
Tradeshift In Gateway
This gateway allows to retrieve files directly from an account on Tradeshift. The document retrieved will be
marked as 'processed-by-babelway' in Tradeshift. The message will contain 2 metadata, 'document.metadata'
containing the document metadatas and 'connection.properties' containing the connection properties, both as a
single line JSON string.
API URL
URL Prefix to call Tradeshift API. Default is https://api.tradeshift.com/tradeshift/rest/
Polling type
Choose 'Document' for regular fetching of document. Choose 'Workflow' to poll workflow document.
Tenant Id
The Tradeshift tenantId to use. Use Babelway application in Tradeshift to retrieve this value.
Token
The Tradeshift token to use. Use Babelway application in Tradeshift to retrieve this value.
Secret
The Tradeshift token secret to use. Use Babelway application in Tradeshift to retrieve this value.
Consumer key
The Tradeshift consumer key to use to authenticate the Babelway application. This should be left empty in
77
Channels
most of the case.
Consumer secret
The Tradeshift consumer secret to use to authenticate the Babelway application. This should be left empty
in most of the case.
Stag
Specify where the document should be retrieved from. Values are 'inbox', 'outbox', 'sales', 'purchases', 'inbox,outbox', 'inbox,outboxsales,purchases', 'draft', 'sent'. Default is 'inbox'.
Type
type of document to retrieve. Values are 'invoice', 'creditnote', 'order', 'despatchadvice', 'invoice,creditnote',
'invoice,creditnote,order,despatchadvice'. Default is 'invoice'.
Additional query parameters
Parameter list added to the initial 'list documents' api call.
Frequency
Number of seconds between 2 checks. The default value is 3600 seconds (1 hour) and it can be lowered;
the minimum accepted value is 90 seconds. This is the simplest way to define a time event. For more complex need, use the Cron Expression property instead.
Cron expression
By default, the gateway will regularly poll the messages from your Tradeshift account, so that they come
into Babelway less than one hour after they have been placed in your Tradeshift account. You can write
here a cron expression to customise the polling schedule. For easy creation of your cron expression, you
can use the online cron maker tool available at : http://www.cronmaker.com/.
Amazon Marketplace In Gateway
This gateway allows to retrieve orders from an account on Amazon Marketplace. The gateway will only process orders created after the deployment of the gateway.
Process
Request [email protected] for changing this parameter. Type of process. 'PollOrders' is the only one
supported at this stage.
Endpoint
Endpoint is the entry point
tps://mws.amazonservices.com
for
an
Amazon
marketplace
web
service.
Default
is
ht-
Access key
Amazon marketplace web services access key ID.
Secret key
Amazon marketplace web services secret key ID.
Seller Id
Amazon marketplace seller ID.
Marketplace Id
Amazon marketplace ID.
Cron expression
By default, the gateway will regularly poll the messages from your Amazon Marketplace account, so that
78
Channels
they come into Babelway less than one hour after they have been placed in your Amazon Marketplace account. You can write here a cron expression to customise the polling schedule. For easy creation of your
cron expression, you can use the online cron maker tool available at : http://www.cronmaker.com/.
E-conomic Gateway In
The E-conomic wizard is used to create a gateway that lets you query your e-conomic online account
(http://www.e-conomic.com) and retrieve invoice documents based on a specified CVR reference.
The specific parameters are:
E-conomic Token Id
The generated Token Id by E-conomic that grants Babelway access to your E-conomic account.
It
can
be
generated
via
https://secure.e-conomic.com/secure/api1/requestaccess.aspx?appId=N3m3TyMMqNgwTTso7dnr7f3rGOnX
lZwKEeneiL2Uwo0=&role=SuperUser.
CVR Reference
Reference to Central Business Register (CVR). Only invoice documents with this reference will be retrieved by Babelway.
Cron expression
Cron expression. Allows to define complex time expression like every weekday night at 23:00 (0 23 ? *
MON-FRI). If left empty, the system will check at least once every 15 minutes. For easy creation of your
cron expression, you can use the online cron maker tool available at : http://www.cronmaker.com/. For
more
information,
please
refer
to
the
following
page:
http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html.
VAN In Gateway
This gateway allows to retrieve files from specific trading partners on ECGrid VAN. A Trading Partner is the
company from whom you are going to receive documents.
The VAN gateway receives the message based on the Identifier / Qualifier pair as determined in the X12 or
Edifact data. They look like this:
X12: ISA*00* *00* *ZZ*SENDERID *ZZ*RECEIVERID *010101*0101*U*00401*000000001*0*T*!
EDIFACT: UNB+UNOA:1+ SENDERID:ZZ+RECEIVERID:ZZ +
For the VAN IN Gateway, your ID Is the Receiver ID. Your Trading Partner ID is the Sender ID.
If you are using an already existing ID (on another VAN), your ID must be migrated to Babelway before you
can begin receiving documents. To do so you must:
Download and complete this letter of authorization, found here 3
Printout on your company letterhead, scan with completed information
Send authorization to <[email protected]> along with your desired migration date
Please note that this migration will cause all traffic under this ID to be routed to the Babelway VAN Gateway
3
http://www.babelway.com/authorization-letter-template-ec-grid-van/
79
Channels
In. You must be prepared to process all documents that you currently receive through your old VAN before the
migration can be completed successfully.
Your identifiers
Your Names / Identifiers / Qualifiers on VANs. All EDI messages specifying these Id/Qual in recipient will
be routed to this gateway. Identifier = The X12 or EDIFACT ID for the ISA and UNB segments. Qualifier
= The X12 or EDIFACT Qualifier for the ISA and UNB segments (Maximum is 2 characters). The name
should be your company/ entity name and will be used by other EDI partners to find you before sending
messages.
PEPPOL In Gateway
This gateway allows to receive files from the PEPPOL network.
PEPPOL ?
The PEPPOL project was started in 2008 with the objective to enable businesses to communicate electronically
with any European government institution in the procurement process. Seven years later, PEPPOL standard is
gaining traction by the European governments but also within the industry (the peppol.eu4 site lists 99 certified
PEPPOL Access Points providers).
The three main components of the PEPPOL architecture are :
• The Access Point (AP) : responsible to send and receive documents for a PEPPOL participant
• The Service Metadata Publisher (SMP) : registry containing the Participant AP information. It tells you
which access point must be contacted to send document of certain type to a PEPPOL participant
• The Service Metadata Locator (SML) : the PEPPOL directory (a DNS Server). It tells you in which SMP a
PEPPOL participant is registered
4
http://www.peppol.eu
80
Channels
Figure 4.26. PEPPOL In Gateway
Participant
An "PEPPOL In Gateway" must be configured for one PEPPOL Participant (the receiver). There can be only
one PEPPOL Gateway IN per participant identifier in Babelway.
The identifier value is the value identifying the PEPPOL participant in a given identification scheme. Most of
the time this is a national VAT or a GLN number. For easier use, you can, for each identifier, define a userfriendly name that we call a "label".
When you deploy an "PEPPOL In Gateway", the gateway is registered as an Access Point for the receiver and
document types in a Babelway SMP and the Babelway SMP is referenced in the SML for this participant.
The participant SML status tells you if the participant is registered in the PEPPOL SML.
Figure 4.27. PEPPOL In Gateway - Participant SML status
Some actions are available depending on the participant status :
• Prepare migration : Let you start the participant migration to another SMP than Babelway. It will generate a
migration key that need to be exchange with the new SMP.
81
Channels
• Migrate : If the participant is registered to another SMP in the SML, this action lets you migrate him to a Babelway SMP. The migration key received from the old SMP need to be entered.
• Register : If the participant is not registered at all in the SML, you can register it by clicking on this action.
Registered Documents
Registered documents are UBL document type that are customized and categorized by PEPPOL business flows
(i.e. : An UBL v2.1 Invoice that follows business specifications of the PEPPOL BIS 4a v2.0 ). One or more
document types can be choose to configure the gateway.
Figure 4.28. PEPPOL In Gateway - Document types
Message Level Response
A Message Level Response (MLR) can be sent back to the sender of the PEPPOL message. A MLR is a business acknowledgment that tells the sender if the received message follows business rules related to the document type and business flow. You can choose the "MLR strategy" in the Gateway IN configuration.
Here is the summary of gateway properties:
PEPPOL environment
Choose between the regular PEPPOL production infrastructure, connected to the SML, or the test infrastructure, connected to the SMK. The default is Production
Identifiers Values
The values identifying the PEPPOL participants.
Registered Documents
List of documents accepted by this gateway and registered in the SMP.
Message Level Response
Using this option you can decide to send MLR directly after message reception. The options are :
• No MLR MLR will never be sent automatically. The MLR is completely under the responsibility of the
environment maintainer. This is the right choice if you want to generate a MLR based on the response of
a back-end system or if the partner is not supporting MRL.
82
Channels
• Error MLR only MLR is sent automatically if the incoming message is not conforming to the documents
customization business rules (schematron rules). In this case the MRL is return and the message is
marked as 'ERROR' in Babelway. With this strategy, the 'SUCCESS' business acknowledgement flow
can be based on the response of a back-end system.
• All MLR MLR will always be sent back. An negative MRL is sent if the message is not conforming to
the documents customization business rules (schematron rules), a positive MLR is sent otherwise.
Participant SML status
The status of the participant in the PEPPOL SML
RosettaNet In Gateway
This gateway allows to receive RosettaNet complient PIP message from an other RosettaNet Server. The resulting message is the body of the Service Content section of the MIME message. Signature and Encryption are
supported.
Url
URL of the RosettaNet server of the receiver.
Return receipt acknowledgment
Return the ReceiptAcknowledgment (RNIF v2.00) synchronously to the caller. If the option is not selected,
the content of a valid ReceiptAcknowledgment is placed in the metadata of the message with the name
'RosettaNetReceiptIn' to be used later by the processing.
Decryption certificate
Select encryption certificate or go to certificates store.
Signature verification certificate
Select signature certificate or go to certificates store.
ePrior In Gateway
This Gateway allows to receive messages through ePrior requests.
The specific parameters are:
Signature Verification Certificate
The X509 certificate used to verify the signature of the incomming ePrior requests.
Document Type
The document type which is accepted by the ePrior gateway.
NemHandel In Gateway
This gateway allows you to receive messages from the Danish NemHandel network.
Registration certificate
Select the certificate use to register your information into the NemHandel registry.
NemHandel environment
Choose between the regular NemHandel production infrastructure, or the test infrastructure. The default is
83
Channels
Production
Identifiers Values
The values identifying the NemHandel participants.
Registered Documents
List of documents accepted by this gateway.
Signature certificate
Select signature certificate or go to certificates store.
Email Gateway Out
With an Email Gateway Out, outgoing messages are attached to an email and sent to a specific email address.
The specific parameters are:
To Recipients
Email address to which messages will be sent (destination). You can add a comma separated list of recipients or a metadata.
Cc Recipients
Email destination CC address.You can add a comma separated list of recipients or a metadata.
Bcc Recipients
Email destination Bcc address.You can add a comma separated list of recipients or a metadata.
Sending Email Address
Email address from which messages will appear to be sent. Replies will be sent to that address.
Secure Email
If checked, the email message is signed using the transfer certificate. The sending email address should be
[email protected] where XXXXX is your account environment id.
Track email using web beacon
If checked, a web beacon (an image containing a unique link) will be in the footer of the email. When the
image is loaded for the first time, it will report it as an acknowledgement of the reception of the message.
Subject
Email message subject.
Body type
[text/plain , text/html] default is text/plain
Email body
Email message Body.
HTML codes < and > must be escaped.
See http://www.htmlescape.net/htmlescape_tool.html for an online tool.
Send message as attachment
Should the message be sent as attachment or not.
Attachment name
Attachment file name.
84
Channels
Send message as a link
Add a download link in the message body. When the link is first clicked, it will "acknowledge" the message.
Text of message link
This is the text displayed for the download link. Default: "download message".
Attachments
Allows you to attach other files to the email. Name = filename of the attachment. Value = Pattern to match
metadata containing the file to attach. If one pattern matches multiple files, it is possible to attach them all
if you guarantee to generate a different filename name for each. This can be achieved by using the capturing groups of the regex in the filename. Ex: if your metadata pattern is attachment-(.*) and your filename is
\1, processing with two metadata attachment-file1.csv and attachment-file2.csv will result in files file1.csv
and file2.csv.
Ftp Client Gateway Out
With a Ftp Client Out Gateway, outgoing messages are transferred to an external Ftp server.
The following fields should be defined in order to configure access to your external ftp server:
Server
External ftp server address where Babelway should send messages eg ftp.example.com.
Username
Login or username to access files on this external ftp server.
Password
Password associated with the username.
Passive Mode
Indicates that the ftp connection is in passive. Ticking it means the ftp client will establish 2 connections to
the ftpserver client.
Retry strategy
Allows you to determine what to do if call to remote server fails. If 'No retry' is chosen, the message will be
put immediately in error. Other values allow to make some retries before setting the message in error.
Directory
Directory where outgoing files will be stored on the server.
Filename
Filename of the outgoing message.
Filename during transfer
Prefix and suffix that will be prepended and appended to the file name when a file is being transferred. This
mechanism is used to prevent that a file is read before it is complete. However some systems do not allow
to remotely rename files or directly process and delete the file triggering an ERROR in Babelway.
Protocol
Select FTP, FTPS (Explicit mode) or FTPS (Implicit mode) protocol.
Private Key
The private key associated with the username to access your account. This can be left empty if you choose
85
Channels
to only use the password authentication mechanism.
Ftp Server Gateway Out
With a Ftp Server Out Gateway, outgoing messages are available from a Babelway FTP server, where they can
be fetched.
The specific parameters are:
Server
Babelway ftp server set as "ftp.babelway.net"
Username
Login or username to access your account on Babelway ftp server. This username must be unique as it is
linked to a specific directory on the ftp server.
Password
Password associated with the username to access your account.
Directory
The directory on the ftp server into which the outgoing files will be written.
Filename
Filename of the outgoing message.
Time out
During how much time the file will be kept available on the FTP server.
After this timeout, the file will be automatically removed from the FTP server (it you did not do it before).
If the file was never downloaded, the file will also be marked in ERROR, because it has not reached its
destination.
To be warned the soonest possible of errors, we recommend that you set here the lowest possible value. Example : if an automatic process polls the files from here every hour, a value of "3 hours" will allow you to
be notified of the problem after just 2 or 3 failed/missing pollings, while a value of "30 days" would lead to
files leaving there, without any automatic notification, until some user worries about lack of files.
After channel deployment, your ftp server will be available to receive messages. You can access this ftp server
using any ftp client software set up with the previous account parameters.
Sftp Server Gateway Out
With a Sftp Server Out Gateway, outgoing messages are available from a Babelway FTP server, where they can
be fetched.
The specific parameters are:
Server
Babelway ftp server set by default as "sftp.babelway.net"
Username
Login or username to access your account on Babelway ftp server. This username must be unique as it is
linked to a specific directory on the ftp server.
86
Channels
Password
Password associated with the username to access your account.
Public Key
The public key associated with the username. This can be left empty if you choose to only use the password
authentication mechanism. The supported formats are RSA public key (OpenSSH, Putty or DER format).
More information about generating such a key can be found at the end of this page.
Retry strategy
Allows you to determine what to do if call to remote server fails. If 'No retry' is chosen, the message will be
put immediately in error. Other values allow to make some retries before setting the message in error.
Directory
The directory on the ftp server into which the ougoint files will be written.
Filename
Filename of the outgoing message.
Time out
During how much time the file will be kept available on the FTP server.
After this timeout, the file will be automatically removed from the FTP server (it you did not do it before).
If the file was never downloaded, the file will also be marked in ERROR, because it has not reached its
destination.
To be warned the soonest possible of errors, we recommend that you set here the lowest possible value. Example : if an automatic process polls the files from here every hour, a value of "3 hours" will allow you to
be notified of the problem after just 2 or 3 failed/missing pollings, while a value of "30 days" would lead to
files leaving there, without any automatic notification, until some user worries about lack of files.
After channel deployment, your sftp server will be available to receive messages. You can access this sftp server using any sftp client software set up with the previous account parameters.
SFTP Client Gateway Out
With a SFTP Client Out Gateway, outgoing messages are transferred to an external SFTP server.
The specific parameters are:
Server
External sftp server address where Babelway will send messages.
Username
Login or username to access files on this external sftp server.
Password
Password associated with the username to access account.
Private Key
The private key associated with the previous username to access your account. This can be left empty if
you choose to only use the password authentication mechanism. The supported formats are RSA private
key (OpenSSH format).
Directory
87
Channels
Directory where outgoing files will be stored on the server.
Filename
Filename of the outgoing message.
Filename during transfer
Prefix and suffix that will be prepended and appended to the file name when a file is being transferred. This
mechanism is used to prevent that a file is read before it is complete. However some systems do not allow
to remotely rename files or directly process and delete the file triggering an ERROR in Babelway.
OFTP client Gateway out
With an OFTP Client out Gateway, outgoing messages are transferred to an external OFTP server.
The specific parameters are:
Partner SSID
The OFTP ID provided by your partner.
Partner SFID
The SFID provided by your partner. If none has been provided, this is probably the same as the SSID.
Partner password
The password of your partner. Provided by your partner.
My SSID
Babelway is providing an official Odette SSID : O01770000000000X0B5SHARED. Please call support if
you want to use a different one.
My SFID
An SFID is automatically assigned to your Environment : O01770000000000X0B5xxxxx where xxxxx is
the ID of your Babelway environment. Please call support if you want to use a different one.
My password
The value of the password is 'BABELWAY'.
Filename
Filename of the outgoing message.
OFTP documentation
File containing instructions and certificates for the installation. You should download it and send it to your
OFTP partner.
ISDN number
List of phone numbers used for ISDN communication instead of Internet communication. The expected
format is a comma separated list of phone numbers ex : 0049511211306466 or
0049511211306466,003221234567
Max nb datablocks
Advanced. Control the OFTP "maxBDataBlocks" parameter (ISDN only). Default is 7
Max size datablock
Advanced. Control the OFTP "maxBDataLen" parameter (ISDN only). Default is 1024
Server
88
Channels
The URL of the server of your partner. It is provided by your partner.
Port
The port to connect to. It is provided by your partner.
Use TLS
Use TLS (SSL) for communication
Secure Authentication Certificate
Use this certificate to perform client side TLS (SSL) authentication.
Skip EERP
Select this if your partner is not sending the mandatory EERP. The message will be set in SUCCESS directly after upload.
Use compression
Compresses the messages.
Secure Authentication
Use OFTP2 'Secure Authentication'. This will use the certificates defined for encryption and signature.
Sign messages
Sign outgoing messages using the key selected in "Signature certificate". This allows your partner to verify
that you are the one sending the message. This option is only available with OFTP 2.0.
Signature certificate
Select signature certificate or go to certificates store. This option is only available with OFTP 2.0.
Encrypt messages
Encrypt outgoing messages using the certificate selected in "Encryption certificate". This allows your partner to be the only one able to decrypt the messages sent. This option is only available with OFTP 2.0.
Encryption certificate
Select encryption certificate or go to certificates store.
Encryption algorithm
Select encryption algorithm or go to certificates store.
Receive signed messages
This allows you to verify that your partner is the one sending the message using the certificate selected in
"Signature verification certificate". This option is only available with OFTP 2.0.
Signature verification certificate
Select certificate for data or go to certificates store.
Request signed ack (EERP)
Requests that incoming acknowledgments are signed. The signature will be verified using the Certificate
selected in "EERP verification certificate". This allows you to be sure that only the partner could have
signed the incoming messages. This option is only available with OFTP 2.0.
EERP verification certificate
Select certificate for EERP or go to certificates store.
Transfer mode
Advanced. Once the connection is open, the OFTP gateway will act as both sender and receiver by default.
You can control this by setting the following values : BOTH / RECEIVER_ONLY / SENDER_ONLY
89
Channels
Version
Advanced. Babelway is supporting both OFTP1 and OFTP2. When a connection is open, Babelway is using the OFTP built-in mechanism to negotiate the protocol version. The protocol will be the highest possible. Valid values are : OFTP_V12 for version 1.2 / OFTP_V13 for version 1.3 / OFTP_V14 for version
1.4 / OFTP_V20 for version 2.0
File format
Advanced. Babelway is supporting all types of records. Valid values are : FIXED / TEXTFILE / UNSTRUCTURED / VARIABLE. Default is UNSTRUCTURED
Record max size
Advanced. You can specify the record size (only used for FIXED and VARIABLE)
Credit Count
Advanced. Control the OFTP "creditCount" parameter. This is the number of data command ( = CREDIT)
that could be exchanged prior to an OFTP confirmation from the partner. Default is 64
Data exchange buffer size
Advanced. Control the OFTP "dataExchangeBufferSize" parameter. This is the size of the OFTP data buffer. It should be smaller than the maxBDataLen for ISDN connection. The minimum is 128 bytes and the
maximum is 4096 for ISDN and 65535 for TCP connections. Default is 1024
Server configuration
Local server configuration. Use 1 for the shared Babelway OFTP. Contact support for special needs.
After channel deployment, your Oftp server will be available to send messages. You can access this oftp server
using any Oftp client software set up with the previous account parameters.
If you require a custom SSID / SFID / PASSWORD, please send a request to [email protected] .
When a message is transferred to the Oftp server, it is processed immediately then the original file is removed
from the server.
OFTP Server Gateway out
With an OFtp server Gateway out, outgoing messages are available from a Babelway OFTP server.
The specific parameters are:
Partner SSID
The OFTP ID provided by your partner.
Partner SFID
The SFID provided by your partner. If none has been provided, this is probably the same as the SSID.
Partner password
The password of your partner. Provided by your partner.
My SSID
Babelway is providing an official Odette SSID : O01770000000000X0B5SHARED. Please call support if
you want to use a different one.
My SFID
An SFID is automatically assigned to your Environment : O01770000000000X0B5xxxxxx where xxxxx is
90
Channels
the ID of your Babelway environment.. Please call support if you want to use a different one.
My password
The value of the password is 'BABELWAY'.
Filename
Filename of the outgoing message.
OFTP documentation
File containing instructions and certificates for the installation. You should download it and send it to your
OFTP partner.
Skip EERP
Select this if your partner is not sending the mandatory EERP. The message will be set in SUCCESS directly after upload.
Use compression
Compresses the messages.
Sign messages
Sign outgoing messages using the key selected in "Signature certificate". This allows your partner to verify
that you are the one sending the message. This option is only available with OFTP 2.0.
Signature certificate
Select signature certificate or go to certificates store. This option is only available with OFTP 2.0.
Encrypt messages
Encrypt outgoing messages using the certificate selected in "Encryption certificate". This allows your partner to be the only one able to decrypt the messages sent. This option is only available with OFTP 2.0.
Encryption certificate
Select encryption certificate or go to certificates store.
Encryption algorithm
Select encryption algorithm or go to certificates store.
Receive signed messages
This allows you to verify that your partner is the one sending the message using the certificate selected in
"Signature verification certificate". This option is only available with OFTP 2.0.
Signature verification certificate
Select certificate for data or go to certificates store.
Request signed ack (EERP)
Requests that incoming acknowledgments are signed. The signature will be verified using the Certificate
selected in "EERP verification certificate". This allows you to be sure that only the partner could have
signed the incoming messages. This option is only available with OFTP 2.0.
EERP verification certificate
Select certificate for EERP or go to certificates store.
Transfer mode
Advanced. Once the connection is open, the OFTP gateway will act as both sender and receiver by default.
You can control this by setting the following values : BOTH / RECEIVER_ONLY / SENDER_ONLY
Version
91
Channels
Advanced. Babelway is supporting both OFTP1 and OFTP2. When a connection is open, Babelway is using the OFTP built-in mechanism to negotiate the protocol version. The protocol will be the highest possible. Valid values are : OFTP_V12 for version 1.2 / OFTP_V13 for version 1.3 / OFTP_V14 for version
1.4 / OFTP_V20 for version 2.0
File format
Advanced. Babelway is supporting all types of records. Valid values are : FIXED / TEXTFILE / UNSTRUCTURED / VARIABLE. Default is UNSTRUCTURED
Record max size
Advanced. You can specify the record size (only used for FIXED and VARIABLE)
Credit Count
Advanced. Control the OFTP "creditCount" parameter. This is the number of data command ( = CREDIT)
that could be exchanged prior to an OFTP confirmation from the partner. Default is 64
Data exchange buffer size
Advanced. Control the OFTP "dataExchangeBufferSize" parameter. This is the size of the OFTP data buffer. It should be smaller than the maxBDataLen for ISDN connection. The minimum is 128 bytes and the
maximum is 4096 for ISDN and 65535 for TCP connections. Default is 1024
Server configuration
Local server configuration. Use 1 for the shared Babelway OFTP. Contact support for special needs.
After channel deployment, your Oftp server will be available to send messages. You can access this oftp server
using any Oftp client software set up with the previous account parameters.
If you require a custom SSID / SFID / PASSWORD, please send a request to [email protected] .
When a message is transferred to the Oftp server, it is processed immediately then the original file is removed
from the server.
AS2 Gateway
With an AS2 Gateway, outgoing messages are transmitted using an AS2 connection.
AS2 (Applicability Statement 2) is a specification about how to transport data securely and reliably over the
Internet. Security is achieved by using digital certificates and encryption.
The following fields should be defined in order to configure your AS2 access:
From
Babelway source server.
To
AS2 ID of the server that receives outgoing messages. Provided by your partner.
type
MIME/TYPE used to transfer the AS2 message to your partner. Possible values are :
"edi", for the content type "application/EDIFACT".
"x12", for the content type "application/EDI-X12".
"eco", for the content type "application/edi-consent".
92
Channels
"xml", for the content type "application/XML".
"bin", for the content type "application/ octet-stream".
DEFAULT is "bin".
Attachment name
Name of the file sent by AS2. This is an extension to the base AS2 specification and might not be supported by all partners. By default no file name is sent.
Recipient address
The endpoint URL of the receiving gateway ,requires protocol prefix in URL (http:// or https://).
AS2 documentation
File containing instructions and certificates for the installation. You should download it and send it to your
AS2 partner.
Compress message
Should the message be compressed or not?
Encrypt message
Should the message be encrypted or not?
Certificate for encryption
Certificate used for message encryption. Provided by your partner.
Encryption algorithm
Select algorithm used for encrypting message, if any.
Sign message
Should the message be signed or not?
Certificate for signature
Local certificate to use for signing AS2 messages. The certificates are kept in the environment certificates
store.
Signing algorithm
Select algorithm used for signing the AS2 message. DEFAULT is SHA-1.
Request receipt
Should a receipt be sent when a request is received or not.
Asynchronous receipt
Should the receipt be sent asynchronously or not.
Signed receipt
Should the receipt be signed or not.
MIC algorithm
Select Message Integrity Code algorithm used to compute the MDN of the message. DEFAULT is SHA-1.
Message signature enforced
Should message signature be enforced or not. This parameter only applies if no AS2 IN gateway is configured for this parter (same AS2 FROM and AS2 TO).
Certificate for verification
93
Channels
Certificate used for message verification. Provided by your partner. This parameter only applies if no AS2
IN gateway is configured for this parter (same AS2 FROM and AS2 TO).
Maximum retries
Maximum number of retries if message sending failed. Default is 8 times.
Retry interval
Interval of time before trying to send message again (in seconds). Default is 1800 (30 minutes).
To report AS2 parameters to the other party, dowload the AS2 documentation ZIP file. This file can send to the
other party to give them all parameters they will require to establish a communication with your channel.
Http Client Out Gateway
With an HttpClientOut Gateway, outgoing messages are sent using a Http connection.
All the user defined metadatas defined in the messages are passed in the context of the new message.
The specific parameters are:
Url
External service address.
Username
Login or username to access the service.
Password
Password associated with the username.
Connected gateway
Select zero, one or several gateways to receive the response from the http server.
Valid HTTP return code
Comma separated list of expected return Http code. If the return code is not in the list, the message is set in
error. The default is '200,201,202,204,205'.
Success expression
The success expression is a regex. If the response doesn't match the success expression, the message is
flagged with 'error' status.
Response filename
You can specify a filename that will be associated with the server response. Default is 'attachment'.
User Metadata Transfer Strategy
The strategy that will be used to transfer the user metadata to the response message created in the connected gateways.
Retry strategy
Allows you to determine what to do if call to remote server fails. If 'No retry' is chosen, the message will be
put immediately in error. Other values allow to make some retries before setting the message in error.
Filename
Filename of the outgoing message.
Timeout
94
Channels
Timeout for connection in milliseconds. Must be between 10000 and 240000.
Http Method
You can specify the http method to call. 'Form Posting' is emulating a browser Form Post using mime multipart. The default is POST.
TLS version
You can specify the version of the TLS protocol. TLS is the replacement of SSL. The default is TLSv1.2.
Message parameter name
Name given to the parameter containing the actual message. This is also equivalent to the FORM parameter
when a POST if done from a web browser.
Extra parameters
Extra parameters to inlude in the message. Name is the parameter name (FORM parameter) and the value is
the name of a metadata containg the parameter content. In case of a binary content, the name of the
metadata will also be used as the 'filename' of the parameter.
Http headers
You can add specific http header. This accepts metadata.
Trust level
The trust level defines the level of security used in the SSL handshake. Relax = No certificate verification,
Standard = trusting certificates in environment certificates as well as known CA's, Paranoiac = only trusts
certificates defined in the environmnent certificates. Mutual = requires 2-way authentication.
Authentication method
You can select from FORM, BASIC, DIGEST, NTLM, CERT, OAUTH1, OAUTH2 or ANY. CERT is
2-way SSL authentication. ANY is BASIC, DIGEST or NTLM depending on the server response.
Preemptive authentication
Allows to send authentication information with the first http request (to avoid making a second request).
Only for BASIC or DIGEST authentication.
Login url
If authentication method is FORM.
Authentication form fields
When using FORM authentication, you can add specific authentication form fields to the authentication
call. This accepts metadata.
2-way auth. certificate
If CERT authentication is used (2-way SSL authentication), this allows to select the key pair to use from
the environment certificate.
Oauth bearer
If OAUTH2 authentication is used, this allows select the OAUTH bearer token to use.
Oauth signature method
If OAUTH1 authentication is used, this allows select the signature algorithm to use. Note that if
SHA1withRSA is used, a Key alias must be selected.
Oauth consumer key
If OAUTH1 authentication is used, this allows defined the consumer key. This is mandatory.
Oauth consumer secret
95
Channels
If OAUTH1 authentication is used, this allows defined the consumer secret. This is optional.
Oauth token
If OAUTH1 authentication is used, this allows defined the token. At this version of Babelway this is mandatory, please contact support if you need to retreive the token from an OAUth handsake.
Oauth token secret
If OAUTH1 authentication is used, this allows defined the token secret. This is optional.
Oauth RSA key
If OAUTH1 authentication is used with SHA1withRSA, this allows to select the key signing the OAUTH
authentication.
After channel deployment, your connection will be available to send messages.
Soap Client Out Gateway
With an SoapClientOut Gateway, outgoing messages are sent using a SOAP call.
All the user defined metadatas defined in the messages are passed in the context of the new message.
The specific parameters are:
Url
External service address.
Username
Login or username to access the service.
Password
Password associated with the username.
Connected gateway
Select zero, one or several gateways to receive the response from the http server.
Valid HTTP return code
Comma separated list of expected return Http code. If the return code is not in the list, the message is set in
error. Note that the error 500 is accepted to allow the to push SOAP Fault to the next channel. The default
is '200,201,202,204,205,500'.
Success expression
The success expression is a regex. If the response doesn't match the success expression, the message is
flagged with 'error' status.
Response filename
You can specify a filename that will be associated with the server response. Default is 'attachment'.
User Metadata Transfer Strategy
The strategy that will be used to transfer the user metadata to the response message created in the connected gateways.
Retry strategy
Allows you to determine what to do if call to remote server fails. If 'No retry' is chosen, the message will be
put immediately in error. Other values allow to make some retries before setting the message in error.
96
Channels
Filename
Filename of the outgoing message.
Http Method
You can specify the http method to call. The default is POST.
Timeout
Timeout for connection in milliseconds. Must be between 10000 and 240000.
Http headers
You can add specific http header. This accepts metadata.
SOAPAction http header
Value of the SOAPAction http header.
SOAP Attachments
Allows to specify one or more soap attachments, based on SOAP with Attachments (SwA) using MIME.
Name will be sent as 'ContentId' of the mime part of the attachment and Value must contain the name of the
metadata containing the String or byte array body of the attachment.
Trust level
The trust level defines the level of security used in the SSL handshake. Relax = No certificate verification,
Standard = trusting certificates in environment certificates as well as known CA's, Paranoiac = only trusts
certificates defined in the environmnent certificates. Mutual = requires 2-way authentication.
Authentication method
You can select from FORM, BASIC, DIGEST, CERT or ANY. CERT is 2-way SSL authentication. ANY
is BASIC, DIGEST or NTLM depending on the server response.
Preemptive authentication
Allows to send authentication information with the first http request (to avoid making a second request).
Only for BASIC or DIGEST authentication.
Login url
If authentication method is FORM.
Authentication form fields
When using FORM authentication, you can add specific authentication form fields to the authentication
call. This accepts metadata.
2-way auth. certificate
If CERT authentication is used (2-way SSL authentication), this allows to select the key pair to use from
the environment certificate.
Soap headers
You can add specific soap header. This accepts metadata.
Soap version
Defined the standard version of the remote SOAP service.
Ws-Security profile
Ws-Security profile defines the type of security required to call the SOAP service.
Ws-Security Username
Ws-Security username is used in the username/token digest profile.
97
Channels
Ws-Security token
Ws-Security token is used in the username/token digest profile.
Ws-Security signing key
Ws-Security username is used in the X.509 signing profiles.
Ws-Security encryption certificate
Ws-Security username is used in the X.509 encryption profiles.
After channel deployment, your connection will be available to send messages.
ePrior Soap Client Out Gateway
With ePrior Soap Client Out Gateway, outgoing messages are sent using a SOAP call to Belgian ePrior/
Mercurius platform.
The specific parameters are:
ePrior Url
ePrior service address.
Connected gateway
Select zero, one or several gateways to receive the response from the http server.
Response filename
You can specify a filename that will be associated with the server response. Default is 'attachment'.
User Metadata Transfer Strategy
The strategy that will be used to transfer the user metadata to the response message created in the connected gateways.
ePrior Out Gateway
With ePrior Out Gateway, outgoing messages are made available on Babelway ePrior server.
The specific parameters are:
Signature Verification Certificate
The X509 certificate used to verify the signature of the incomming ePrior requests.
Consumer Identifier
The identification of the consumer from which the ePrior request comes from.
Receiver Identifier
The identification of the party to which the ePrior document is sent.
Sender Identifier
The identification of the party from which the ePrior document is sent.
Document Type
The type of the ePrior document.
Document Identifier
The identification of the ePrior document.
98
Channels
Time out
During how much time the file will be kept available on the ePrior server.
After this timeout, the file will be automatically removed from the ePrior server (it you did not do it before). If the file was never downloaded, the file will also be marked in ERROR, because it has not reached
its destination.
To be warned the soonest possible of errors, we recommend that you set here the lowest possible value. Example : if an automatic process polls the files from here every hour, a value of "3 hours" will allow you to
be notified of the problem after just 2 or 3 failed/missing pollings, while a value of "30 days" would lead to
files leaving there, without any automatic notification, until some user worries about lack of files.
Http Out Gateway
With a HTTP out Gateway, outgoing messages are available from a Babelway HTTP server.
The specific parameters are:
Username
Login or username to access the service .
Password
Password associated with the username.
SOAP Url
using the SOAP Post protocol. WSDL5
HTTP Post URL
using the HTTP Post protocol.
Content encoding
How to encode the content
Time out
During how much time the file will be kept available on the HTTP server.
After this timeout, the file will be automatically removed from the HTTP server (it you did not do it before). If the file was never downloaded, the file will also be marked in ERROR, because it has not reached
its destination.
To be warned the soonest possible of errors, we recommend that you set here the lowest possible value. Example : if an automatic process polls the files from here every hour, a value of "3 hours" will allow you to
be notified of the problem after just 2 or 3 failed/missing pollings, while a value of "30 days" would lead to
files leaving there, without any automatic notification, until some user worries about lack of files.
After channel deployment, your connection will be available to send messages.
X.400 Gateway out
The X.400 out Gateway allows to send the message on the X.400 network to the address of your trading partner.
5
https://ws.babelway.net/ws/SoapOut?WSDL
99
Channels
X.400 Address
The account private address. This is the address to communicate to your trading partner. The formatting
may vary from one partner to the other. The most common formats are: C=WW; A=400NET;
P=BABELWAY; S=HUB-25333 /C=WW/A=400NET/P=BABELWAY/S=HUB-25333.
Partner Manual Address
You can choose to enter the full address in the "manual address field" or each address component in the
corresponding field.
Partner Country
Country = C value
Partner ADMD
Partner Administration Management Domain Name = A value
Partner PRMD
Partner Private Management Domain Name = P value
Partner Organization
Partner Organization = O value
Partner OU1
Partner Organizational Unit 1
Partner Given Name
Partner Given Name
Partner Initial
Partner Initial
Partner Surname
Partner Surname = S value
Partner Generation
Partner Generation Qualifier
Request receipt
Request a X.400 message delivery notification
Send as binary
Send the X.400 message as binary (using bilaterally-defined body part)
Internal Gateway Out
The internal gateway in / out are used to transfer messages between 2 channels within the same Babelway environment.
All the user defined metadatas defined in the messages are passed in the context of the new message.
The specific parameters are:
Connected Gateways
Select the internal gateways In that will receive the message. You can select multiple gateway in. A copy of
the message will be sent to each of them.
100
Channels
Filename
Filename of the outgoing message.
Response Filename
Filename of the Response message.
User Metadata Transfer Strategy
The strategy that will be used to transfer the user metadata to the new message created in the connected
gateways.
As opposed to most other gateways, the internal gateway is immediately available as gateway out for other
channels configuration without requiring a channel deployment.
Null Gateway
The null gateway can be used for test and development purposes. The outgoing message will not be sent anywhere and remain in Babelway.
Outgoing messages will not be forwarded but they are nevertheless created and readable through the Messages
interface. You may use this gateway for testing your messages before going to production or for preventing a
channel to send messages before deployment.
Filename
Filename of the outgoing message.
Splitter gateway out
The splitter gateway OUT enables to split a message into multiple messages. The splitter can split according to
RegEx, XPath, Edifact or X12 expressions. The resulting messages are forwarded to one or more channels in
the same environment.
The specific parameters are:
Connected gateways
Select the internal gateways In that will receive the split messages. You can select multiple gateway in. A
copy of the message will be sent to each of them.
Split type
The split type determines how the file will be analyzed (text, xml, edifact) to split it in parts.
User Metadata Transfer Strategy
The strategy that will be used to transfer the user metadata to the new message created in the connected
gateways.
Filename
Filename of the parent message.
Response filename
Filename of the split message.
Header expression
Regex expression to create a header added to each split message
101
Channels
Expression
XPath or RegEx expression to select the content of the split message.
[\n](?=EE)
which means split when seeing line return and then EE
Footer expression
Regex expression to create a footer added to each split message
Keep xml parents
Keep the parent node of the split xml. Only valid with XPath splitting.
Omit xml declaration
Skip the xml declaration in the split xml. Only valid with XPath splitting.
Xslt
Optional Xslt to perform on the split Xml. Only valid with XPath splitting.
Input charset
Charset to use to decode file waiting to be split.
Output charset
Charset to use to encode the file resulting of the splitting.
Aggregator Gateway Out
The aggregator gateway OUT enables to aggregate messages into one single file. The aggregator can append
the messages, use a xslt to merge xml documents or merge Edifact or X12 documents. The resulting message is
forwarded to one or more channels in the same environment.
All the user defined metadata defined in the first of the aggregated messages are passed in the context of the aggregated message.
The specific parameters are:
Connected gateways
The internal gateway where to send the aggregated message. You can select multiple gateways in. A copy
of the message will be sent to each of them.
Aggregation type
Select 'append' for simple append. Use header, separator and footer to control the aggregation. Select 'xml'
to create an aggregation of xml document. Optionally an xslt can be applied to the result. Select 'edifact' or
'x12' to merge edi documents; the envelope of the first document will be used. Select 'zip' to wrap messages
in a single zip file.
Group by
Optional. Enables to generate different aggregated files grouping incoming messages based on the value of
a metadata. Example: 3 messages arrive with value A, B and A in the selected metadata. The aggregator
will generate 1 file with the 2 messages with value A and 1 file with 1 message with the value B.
Frequency
Frequency in seconds. Default is 300 (5 minutes).
102
Channels
Cron expression
Cron expression. Allows you to define complex time expression like every weekday night at 23:00 (0 23 ?
* MON-FRI). This takes precedence on the frequency property. For easy creation of your cron expression,
you can use the online cron maker tool available at: http://www.cronmaker.com/. For more information,
please refer to the following page: http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html.
Input filename
Filename of the message OUT of the channel that serves as input to the aggregator, by default this is the
same as the message in.
Output filename
Filename of the aggregated file, by default the file name is set to 'aggregate'. Tip: You can use:
{com_babelway_messaging_context_aggregator_groupBy} to include the name of the group by in the file
name, or any user defined metadata defined in the first of the aggregated messages.
Minimum idle time
If you specify a time (in seconds), the aggregation will wait that time after the reception of a new incoming
message, even if it conflicts with its scheduled run. This allows, for example, ensuring all messages from a
batch are included in a single aggregation.
Header
For 'append' type: prefix to add at the beginning of the file. For 'xslt' type: name for the root of the resulting
message. Default='messages'
Separator
For 'append' type: message separator. For 'xslt' type: name for the element surrounding each message. Default='message'
Footer
Suffix to add at the beginning of the file.
Xslt
Xslt to execute on the resulting Xml.
Edifact skip UNA
Check this to skip the UNA section in EDIFACT and Odette messages.
Edifact control
Define a custom XPATH expression used to compute the edifact control field. If left empty, the control of
the first message will be used.
Input charset
Charset to use to decode the file waiting to be aggregated. Default is UTF8.
Output charset
Charset to use to encode the file resulting of the aggregation. Default is UTF8.
User Metadata Transfer Strategy
The strategy that will be used to transfer the user metadata to the new message created in the connected
gateways.
NFS Gateway
The NFS gateway is used to connect and push files to a remote NFS server.
103
Channels
Server
Hostname of the NFS server.
Export
Name of the exported volume.
Login method
NFS login method: use PCNFSD for username / password and UGID to directly use UID, GID and GIDS
Username
Username used for the NFS authentication. Only used with PCNFSD login method.
Password
Password used for the NFS authentication. Only used with PCNFSD login method.
User uid
Unix user UID to use during authentication. Only used with UGID login method.
User group gid
Unix user's group GID to use during authentication. Only used with UGID login method.
User extra group ids
Unix user's additional groups GID to use during authentication, encoded as a comma separated list. Only
used with UGID login method.
Directory
Local NFS path to the folder you want to use. This is relative to the export.
Lookup Table Out Gateway
The lookup table gateway is used to fill a lookup table automatically from a message.
Lookup Table Id
The technical id of the lookup table.
Append
Check this if you need to append the records contained in the messages going through this channel. Otherwise, the entire table will be replaced by the new values.
Criteria
If filled, only the values that match this criterion will be deleted or inserted in the target lookup table. The
name must be the name of the column that must match. The value is the value that this column must have
to be replaced.
SAP Gateway Out
With a SAP Out Gateway, outgoing messages are pushed from Babelway to a SAP server.
The specific parameters are:
SAP client
SAP client to use. This is the three digit number you use in the first field of the login screen of SAP Gui. It
has the name 'Client' and is just above the user and password fields. For instance: 001, 210, 400 ...
104
Channels
User
The Valid SAP user ID you want to use. Ideally this should be a user specially created for this purpose. For
instance: user
Password
Password associated with the user ID. For instance: password
Server address
IP or DNS name for SAP application server. For instance: sap.yourcompany.com
SAP system number
SAP system number is the last 2 digits of the SAP client. For instance: 01, 10, 00. Default is the last 2 digits of SAP client parameter
Dropbox Gateway Out
The Dropbox gateway out allows you to upload your messages into a Dropbox account.
The specific parameters are:
Dropbox account
The name of the Dropbox account to which the messages will be sent. This information is "read only", and
set by the wizard when you allow Babelway to access the Dropbox account.
Folder
The folder in your Dropbox account in which the messages will be placed. This folder will appear under the
path /Applications/Babelway/ .
Exact Out Gateway
The Exact gateway allows to send messages to Exact Postbox users. This gateway must be used with the Exact
wizard and the message delivery is based solely on the content of the message sent.
Tradeshift Out Gateway
This gateway allows you to send files directly to an account on Tradeshift.
API Prefix
URL Prefix to call Tradeshift API. Default is https://api.tradeshift.com/tradeshift/rest/
Connection type
Choose 'Tenant' to connect to your own Tradeshift account and send the document from there. Choose
'Van' if you don't have a Tradeshift account and you need to dispatch the document to the account of
someone else.
Tenant Id
The Tradeshift tenantId to use. Use Babelway application in Tradeshift to retrieve this value.
Token
The Tradeshift token to use. Use Babelway application in Tradeshift to retrieve this value.
Secret
105
Channels
The Tradeshift token secret to use. Use Babelway application in Tradeshift to retrieve this value.
Consumer key
The Tradeshift consumer key to use to authenticate the Babelway application. This should be left empty in
most of the case.
Consumer secret
The Tradeshift consumer secret to use to authenticate the Babelway application. This should be left empty
in most of the case.
Retry on http return code
Comma separated list of error Http return code that should be retried. If the return code is not in the list, the
message is set in error. The default is '502,503,504'.
API suffix
The Tradeshift API to call. Do not include the URL prefix.
Http Method
You can specify the http method to call. The default is PUT.
Request content type
The content type of the generic api request. The default is text/xml.
Response content type
The content type of the generic api response. The default is text/xml.
Connected gateway
Select zero, one or several gateways to receive the response from the Tradeshift API.
Document Profile
The Tradeshift document profile.
Van
The van id used by Tradeshift to find the business partner.
Country
The country used by Tradeshift to find the business partner.
Company Name
The company name used by Tradeshift to find the business partner.
Email
The email address used by Tradeshift to find the business partner.
Identifier Scheme
The identifier scheme used by Tradeshift to find the business partner.
Identifier Value
The identifier value of the scheme used by Tradeshift to find the business partner.
Additional query parameters
Key value pairs which will be added to the request.
Retry strategy
Allows you to determine what to do if call to remote server fails. If 'No retry' is chosen, the message will be
put immediately in error. Other values allow to make some retries before setting the message in error.
106
Channels
Connected Gateways
Select zero, one or several gateways to receive the response from the server.
User Metadata Transfer Strategy
The strategy that will be used to transfer the user metadata to the new message created in the connected
gateways.
Amazon Marketplace Out Gateway
This gateway allows to send 'Feeds' to an account on Amazon Marketplace.
Process
Request [email protected] for changing this parameter. Type of process. 'Feed' is the only one supported at this stage.
Endpoint
Request [email protected] for changing this parameter. Endpoint is the entry point for an Amazon
marketplace web service. Default is https://mws.amazonservices.com
Access key
Amazon marketplace web services access key ID.
Secret key
Amazon marketplace web services secret key ID.
Seller Id
Amazon marketplace seller ID.
Marketplace Id
Amazon marketplace ID.
Feed type
Feed type see MWS doc.
Retry strategy
Allows you to determine what to do if call to remote server fails. If 'No retry' is chosen, the message will be
put immediately in error. Other values allow to make some retries before setting the message in error.
Billtrust Out Gateway
With an BilltrustOut Gateway, outgoing messages are sent to Billtrust API.
All the user defined metadata defined in the messages are passed in the context of the new message.
The specific parameters are:
Url
External service address.
Login url
URL used to get OAUTH2 token.
Username
Login or username to access the service.
107
Channels
Password
Password associated with the username.
Connected gateway
Select zero, one or several gateways to receive the response from the http server.
Valid HTTP return code
Comma separated list of expected return Http code. If the return code is not in the list, the message is set in
error. The default is '200,201,202,204,205'.
Success expression
The success expression is a regex. If the response doesn't match the success expression, the message is
flagged with 'error' status.
Response filename
You can specify a filename that will be associated with the server response. Default is 'attachment'.
User Metadata Transfer Strategy
The strategy that will be used to transfer the user metadata to the response message created in the connected gateways.
Filename
Filename of the outgoing message.
Timeout
Timeout for connection in milliseconds. Must be between 10000 and 240000.
Http Method
You can specify the http method to call. The default is POST.
Http headers
You can add specific http header. This accepts metadata.
Trust level
The trust level defines the level of security used in the SSL handshake. Relax = No certificate verification,
Standard = trusting certificates in environment certificates as well as known CA's, Paranoiac = only trusts
certificates defined in the environmnent certificates. Mutual = requires 2-way authentication.
After channel deployment, your connection will be available to send messages.
VAN Out Gateway
This gateway allows you to send files directly to ECGrid VAN.
The VAN gateway routes the message to its destination based on the Identifier / Qualifier pair as determined in
the X12 or Edifact data.
The specific parameters are:
1. The Receiver ID is known in the VAN database. If this is the case, your message will transmit properly to
your receiver. The message will be successful.
The specific parameters are:
Filename
108
Channels
Filename of the outgoing message.
Once this is complete, you may begin using the channel to send to your trading partner.
PEPPOL Out Gateway
This gateway allows you to send files to the PEPPOL network.
Nothing is needed to be set up except that the receiver needs to be registered in the SML. Please contact [email protected] if you want to perform some tests with SMP or AP not registered in the SML.
More information about PEPPOL in Gateway IN section
PEPPOL environment
Choose between the regular PEPPOL production infrastructure, connected to the SML, or the test infrastructure, connected to the SMK. The default is Production
RosettaNet Out Gateway
This gateway allows you to send RosettaNet complient PIP message to another RosettaNet Server. This Gateway must be used along with a RosettaNet message out.
Url
URL of the RosettaNet server of the receiver.
Signature certificate
Select signature certificate or go to certificates store.
Encryption certificate
Select encryption certificate or go to certificates store.
Attachment patterns
Attachments to add to the S/MIME message. Metadata = Pattern to match metadata containing the file to
attach. Filename = name of the file in the zip. If one pattern matches multiple files, it is possible to put
them all if you guarantee to generate a different filename name for each. This can be achieved by using the
capturing groups of the regex in the filename. Ex: if your metadata pattern is attachment-(.*) and your filename is \1, processing with two metadata attachment-file1.csv and attachment-file2.csv will result in files
file1.csv and file2.csv.
Test flag
Select this to set the GlobalUsageCode in the ServiceHeader to 'Test'. Otherwise 'Production' is used.
NemHandel Out Gateway
This gateway allows you to send messages to the Danish NemHandel network.
Registration certificate
Select the certificate use to register your information into the NemHandel registry.
NemHandel environment
Choose between the regular NemHandel production infrastructure, or the test infrastructure. The default is
Production
109
Channels
Signature certificate
Select signature certificate or go to certificates store.
Retry strategy
Allows you to determine what to do if call to remote server fails. If 'No retry' is chosen, the message will be
put immediately in error. Other values allow to make some retries before setting the message in error.
4.3. Message definitions
This section contains all the tools needed to manage your message definitions. A simplified edition of the message definitions is directly available in the channels overview, but you need to come to this section to have access to all functionalities.
Message definitions describe in Babelway the format (CSV, XML, EDIFACT, ...) and the structure (all the
fields) of an exchanged file.
Each channel contains 2 message definitions:
• Message in is used to describe the files received by Babelway from the source external system.
• Message out is used to describe the files that Babelway must send to the target external system.
4.3.1. Message definitions list
The List of Message definitions screen shows you all the message defitnions defined within your environment,
even if they are not used in any channel. From here, you can easily edit them, or create new ones.
This screen is accessible by clicking on the menu Channels, then the sub-menu Message definitions
The list can contain the following columns:
Name
A name that identifies the channel.
Description
A free description for the channel.
Direction
IN for message definitions In, or OUT for message definitions Out.
Type
The type of the message definition. See message definitions types for all possible values.
Created on
The date and time when the message definition was created.
Last updated on
The date and time of the last modification of the message definition.
For more information about the behavior of the grid, and how to make searches, see the grid section of the help.
You can click on a line to view the details of the associated message definition, or edit it. See message defini110
Channels
tion details.
The Create message definition action button allows you to create new message definitions.
4.3.2. Creation of a message definition
To create a new message definition, you have two main options:
• Create it from scratch.
• Duplicate an existing message definition (from your environment, or from the Babelway catalogue).
You can access this choice by clicking on Create a message definition in the message definitions list screen, or
directly from the channel detail screen.
Create a new Message Definition.
To create a Message Definition, you have first to select the type of gateway that you want to use (CSV, XML,
Edifact, ...).
Figure 4.29. MessageDefinition creation - Type choice.
Then you need to follow the instructions on the screen. The parameters depend on the type of MessageDefinition selected. You can find detailed explanation of every type in the section on MessageDefinition formats..
111
Channels
Figure 4.30. MessageDefinition creation - CSV.
Figure 4.31. MessageDefinition creation - XML (step 1).
Reuse an existing MessageDefinition.
The other solution is to select an existing MessageDefinition from the "Reuse and Save time" zone.
112
Channels
Figure 4.32. MessageDefinition creation - Reuse
Figure 4.33. Gateway creation - Reuse confirmation
113
Channels
When you are in the Channels section, and you reuse a MessageDefinition that is already used in other channels, you will have the choice to share the MessageDefinition, or to make a copy.
Figure 4.34. Gateway creation - Share or Copy
More details can be found in the Reuse and Save time section.
4.3.3. Message definition detail
This page shows all the details about a message definition, and gives access to all operations that can be made
on a message definition.
This page can be accessed from the message definitions list, or by following any link that refers to a message
definition.
General
The general tab contains the general information of the gateway, and offers actions that act on the whole message definition.
Direction
Field used to indicate if the message is coming in the system or leaving it.
Type
Type of the message definition (CSV, XML, EDIFACT, ...)
Name
A name that you can set and/or modify to easily retrieve and manage your element.
Description
A free text field that you can set and/or modify used in addition to element name to help you identify your
element usage and/or function.
Id
A unique identifier automatically set by Babelway platform.
114
Channels
Created On
Date and time of element creation.
Last Updated On
Date and time of last element configuration update.
Tree
The tree describes the structure of the message, with all its fields. It is displayed in graphical form.
For more details, see all information about the message definition tree.
Don't forget to save when you're finished with your changes.
Properties
This screen allows you to configure all the options of the message definitions. Some of these options are common. Others differ depending on the message definition type.
See the message definition common options for further information on common message definition properties.
See the message definition types section to learn more about the options for each message definition type.
Extra processing
The extra processing allows you to configure additional processes that must be applied on the messages. Some
examples are extracting the file from a zip file, or signing the output file.
See extra processing section for the description of every available extra processing, and all their parameters.
Related items
This tab contains quick links to many other elements related to this message definition.
Using channels
All the channels that use this element.
Parent
The parent is the element from which the element has been copied.
Children
The children is the element which is a copy of the current element.
Using transformations
List of transformations using this message definition.
Change Log
This tabs shows you all the history of changes on this message definition, and allows you to revert to a past version. For more details, see the change log section.
4.3.4. Update the message definition tree
115
Channels
Once a new message format has been saved or during edition of existing messages, the message tree is rendered
in the Visual Editor in a hierarchical and graphical form as illustrated below.
In Visual Editor, you can further configure and set up message format as well as add verification rules as explained in following sections.
Figure 4.35. Message edit screen
Left panel - understand tree structure
The left part of the screen shows the structure of the message, as a tree. It describes all the elements that the
message format may contain.
Note
People familiar with xml files will find many similarities between the tree definition used here and the
structure of a xml file. The reason is the following: In Babelway, all message formats are first translated into xml, that is used to apply all message transformations. The structure defined here is in fact
the xml representation of your message.
116
Channels
Figure 4.36. Structure of message
The tree uses different types of nodes:
• (1) A value node is just a "normal" node. It corresponds to one element in the message format that we are
describing. It can just contain a value, or also be a structural element that contains other nodes.
•
represents an element in the corresponding xml.
•
represents an element in the corresponding xml, that contains a fixed static value.
•
represents an attribute in the corresponding xml.
•
represents an attribute in the corresponding xml, that contains a fixed static value.
Note
A message item will be defined as an xml element or attribute depending on xml generation or translation tool that has been used. The main difference for Babelway platform is that an attribute is unique
and cannot be repeated inside an element. So you cannot use loops with these attribute items.
• (2) Other nodes are virtual nodes. They do not have any correspondence in the messages, but are used to tell
additional information to the Babelway platform, like the fact that some elements can be repeated, or have
possible structure alternatives.
•
represents a loop node. It means that its content can be repeated multiple times.
•
and
indicate that the message can have multiple alternatives. The first icon is used to group all
choices, and the second one for every option.
Right panel - edition of element node
117
Channels
The right part of the screen shows how the details about the selected node. From there, you can edit all the
properties of the node, or make actions on it to change the structure of the tree (delete, duplicate, ...).
118
Channels
Figure 4.37. Details of selected node
General parameters are:
Label
The label is the text used to show this node in the message definition tree. It can be changed freely, as it has
no impact on the processing of the messages.
Description
The description allows you to save some more documentation about this node.
Name
The name identifies the element in the xml representing the messages. Change only with care.
Default value
Only for message definition OUT. The default value will be used in the message out for this field if no
mapping is done for this field.
Filter value
Only for message definition IN. When this value is filled, only the records with this precise value will be
used.
You can also add validations on nodes. The validations are assertions that will be checked when we receive a
message in this format, or before we send a message in this format. If one of the validations fails, it means that
the message does not comply with the definition, and the message will be put in error.
Note
We strongly recommend that you fill the validations, and reject messages that are wrong. If you don't
enforce validations, there is a big risk that you send to the receiving partner files that are not correct,
because your mapping will probabaly not foresee all of these cases. Validations on message OUT will
also allow you to detect early problems in your mappings, detecting it immediately when one of your
mapping generates a message that do not comply with the definition.
The following validations are available:
Mandatory
When a field is marked as mandatory, it must have a non-empty value. From the xml point of view, it
means that the element must be present, and may not be empty.
Type
Type of the data in the field (String, Number, Date, ...). This field will also affect the other validations that
will be available.
Length (only for Strings)
Min or Max length (in characters) for the value.
Regexp (only for Strings)
Regular expression that the value must match.
Min/max value (only for Numbers)
Indicates that the number value must be between the two given limits.
119
Channels
Format (only for Dates/Datetimes)
Format that are accepted, like 'yyyy/MM/dd', ... Full description of accepted formats can be found at ...
Multiple allowed formats can be entered, separated by a comma.
Custom
Custom xpath expressions that the value must match (if non-empty).
Appearance in output file is enabling you to decide the conditions in which the selected element will appear
in the output file.
Here are all the possible conditions:
Always
This element will always appear in the output file whether or not it's filled or not.
If at least one non-default sub-element appears
This element will appear if at least he has a value or if one of his non-default sub-element decided to appear. By non-default, we mean an element which doesn't have a default value. In short, only structural subelement (white) and non-default field (blue).
Example of element that will appear in the output:
Figure 4.38. One out of two blue sub-element mapped
Figure 4.39. One blue and 1 green sub-element
Figure 4.40. 1 structural sub-element appears out of 3 sub-elements.
120
Channels
Figure 4.41. 1 attribute sub-element appears.
Example of element that will NOT appear in the output:
Figure 4.42. Two green sub-elements (because they are default values).
Figure 4.43. One blue with no value and one green sub-elements.
If all sub-elements appear
If all sub-elements decided to appear in the output file
Example of element that will appear in the output:
Figure 4.44. All blue sub-elements
Example of element that will NOT appear in the output:
Figure 4.45. Two green sub-elements or One blue not filled and one green
121
Channels
Figure 4.46. Only one out of two blue sub-elements
Not Empty
(applies only to element without children) Will appear in the output file if it has a value.
Search
On the top of the left panel, a search bar allows you to easily find nodes in big documents.
Figure 4.47. Search
To search nodes, just type part of the name that your searching.
122
Channels
• All the items that match will be highlighted.
• The first matching item will be selected, and details shown in right panel.
• Numbers of matching items will be displayed, with arrows to iterate between matches.
• If needed, tree will be opened, or scroll will be adjusted, so that current match is made visible.
Updating tree structure
Figure 4.48. Search
To update the tree structure, you have different possibilities
• When a node is selected, all actions that apply to this node are available on the bottom of the right panel.
You just have to click on it to call the wanted action.
• Move operations can be done immediately in the tree, by just drag-and-dropping your node to the new selected validation. Duplication can be done the same way, by pressing the Ctrl key before the drag.
Managing Choice
You can create choice to manage conditional processing of your message definition.
To identify a node or a set of nodes that can have several alternatives in its structure and/or value, you need to
enclose the set of related alternatives within a Choice node and each alternative branch into an Option node.
A Choice node is a virtual node identifying alternative branches. Each alternative branch is a possible option
and is represented by an Option virtual node as illustrated in the following example:
123
Channels
Figure 4.49. Example of a choice
There are two Choice nodes, one for the buyer's information, that accepts either a company structure with a
VAT number value, or a person structure with firstname, lastname and address values. The other Choice node
is for the price of an Item, it can accept either a price with a 0% or a 21% VAT.
In this latter case, both alternative branches have the same structure, but they have different static values (0 or
21) for their VAT node (static value nodes are green).
It is mandatory that each Option of a Choice is uniquely identifiable compared to each other. They could be
identified by having different structures (like the buyer's Choice example) or by having the same structure with
different static values (like in the price Choice example).
Managing Loops
Create loops to manage repetitive parts of your message definition.
Loops and grouping
A message is based on three node types as defined in the Message Definition chapter.
To specify that a value or a structural node can occur more than once, you need to enclose it in a Loop. A Loop
is a virtual node representing the multiplicity of a node or a set of nodes. It is defined by its minOccurs and
maxOccurs properties:
• MinOccurs defines the minimum number of repetition of the node or the set of nodes that should occur. It
124
Channels
may be 0 or any positive number.
• MaxOccurs defines the maximum number of repetition of the node or the set of nodes that should occur. It is
either a positive number or the value " unbounded " (that represents an undetermined number of repeat).
CSV Sample:
By definition a CSV message is composed of a header containing some header items, followed by one or many
lines containing line items. The number of line items correspond to the number of header items.
header1,header2,header3,header4
123,aaa,abc,000
456,bbb,def,111
789,ccc,ghi,222
...
Here is the message tree for this CSV:
Figure 4.50. Message tree
The headers and line nodes are structural nodes, while header and line items are value nodes. To specify that
the line can appear more than once, there is a virtual Loop node enclosing the line node.
Grouping
A Loop can define the multiplicity of a node sequence. To identify a node sequence in a Loop, you must manually group those relevant nodes using one of the following grouping types:
• Group By: groups together all nodes that have the same value as the Grouping value.
• Group Adjacent: groups together all nodes that have the same value as the Grouping value, provided that
they are also adjacent in the message sequence.
• Group Starting With: processes the nodes in the supplied sequence in turn, starting a new group whenever
one of the node matches the Grouping value.
• Group Ending With: processes the nodes in the supplied sequence in turn, closing the current group whenever one of the node matches the Grouping value.
Loop parameters can be edited by right-clicking on the loop node in the message tree in the In or Out message
125
Channels
tab during channel editing.
Figure 4.51. Loop parameters
The grouping value is an XPath expression identifying the grouping pattern.
By right clicking on any node, you can:
• Create Loop: to enclose the selected node in a new loop node.
• Remove from Loop: to remove the selected node from its parent loop.
• Put in next/previous Loop: if the selected node is adjacent to a loop node you can make it join that loop to
create a multiplicity on a nodes sequence (in that case, specify a Grouping value ).
Regrouping a Loop
An existing loop can also be regrouped using one of the Grouping type. To do this you can use the Regroup this
Loop in the loop contextual menu. This will create a new enclosing loop that requires specifying the Grouping
type and the Grouping value.
Example with a DESADV message in a CSV format:
TruckId,PalletId,PacketId,Quantity,Item
1,
1,
1,
5,Item 1
1,
1,
1,
25,Item 2
1,
1,
1,
1,Item 3
1,
1,
2,
3,Item 4
1,
1,
2,
15,Item 5
1,
2,
1,
100,Item 6
1,
2,
1,
2,Item 7
1,
2,
3,
20,Item 8
1,
2,
3,
11,Item 9
1,
2,
3,
9,Item 10
1,
2,
4,
72,Item 11
2,
1,
1,
91,Item 12
2,
2,
1,
423,Item 13
2,
3,
1,
88,Item 14
2,
4,
1,
3,Item 15
3,
1,
1,
12,Item 16
3,
1,
1,
21,Item 17
3,
1,
1,
666,Item 18
3,
1,
2,
3,Item 19
3,
1,
2,
22,Item 20
3,
1,
2,
2,Item 21
3,
2,
1,
211,Item 22
3,
2,
1,
64,Item 23
126
Channels
4,
4,
4,
4,
4,
5,
1,
1,
1,
1,
1,
1,
1,
1,
2,
2,
2,
1,
61,Item
17,Item
2,Item
9,Item
85,Item
57,Item
24
25
26
27
28
29
Figure 4.52. Default message tree
In this example, we have a loop of lines defining an item to dispatch, where each line has the truck id for where
the item is stored.
We could regroup this loop of lines by TruckId so that we can loop on all trucks and then loop inside each truck
on all the items in that truck.
To do that we select the Regroup this Loop action on the loop, select the Group By value for Grouping type and
set it to ' field[1] ' (as this is the XPath of the TruckId element).
Figure 4.53. Regroup this loop
We now have a loop on all trucks and a sub loop on all the items in the truck.
127
Channels
Figure 4.54. Sub loop
We can even go further and decide to group by PalletId and PacketId, that would give us four nested loops, one
for all trucks, the next one for all pallets in a truck, the next one for all packets in a pallet and the last one, for
all items in a packet.
Figure 4.55. ...
4.3.5. Message definition formats
This list shows main message formats supported by the application.
• CSV
• EDIFACT
• X12
• Odette
128
Channels
• XML
• Excel
• PDF based on XHTML template
• Flat-file
• Multirecord
• Tradacom
• Json
• Rest
• SAP Idoc flat file
• Generic
• Not Defined
• UBL
• RosettaNet
CSV
A CSV or comma-separated values file is used for the digital storage of data organized in a table form. Each
line in the CSV file corresponds to a row in the table, and within a line, fields are separated by commas (or
semicolons, colons or tabs), each field belonging to one column of the source table.
As this is a very common and simple file format, CSV files are often used to move tabular data between different computer programs, such as between a database and a spreadsheet program.
File sample
Following is a sample CSV file.
NAV Date,ISIN,Fund Name,Share Typ,Fund Ccy,NAV in Fund Ccy,Bid Price in Fund Ccy,Offer Price in Fund C
06/13/2008,LU0223208157,HSBC GIF EMERGING EUROPE EQUITY,AC,EUR,15.088,15.088,15.924,12190498.17,807980
The following properties are available:
Delimiter character
The character that is used to separate the fields in the csv. It can be a comma, colon, semicolon or tab.
Quote character
The character that is used to quote the specials characters in the csv. It can be a single quote (') or a double
quote (").
Headers
Tells you if the csv file begins with a line that contains headers of the columns, or directly begins with the
lines of data.
Encoding
129
Channels
The encoding of the csv file.
Sample
An example of CSV file handled by this message definition.
Edifact
Introduction
United Nations / Electronic Data Interchange for Administration, Commerce and Transport (UN/EDIFACT) is
the international EDI standard developed under the United Nations impulse. This standard is maintained and
further developed by a UN body. EDIFACT has now been adopted by the International Organization for Standardization (ISO) as the ISO standard ISO 9735.
The EDIFACT standard provides a set of syntax rules to structure data, an interactive exchange protocol
(I-EDI), and standard messages which allow multi-country and multi-industry exchange.
You
can
find
more
information
about
Edifact
on
its
offical
site
(
http://www.unece.org/cefact/edifact/welcome.html ) or on Wikipedia ( https://en.wikipedia.org/wiki/EDIFACT ).
Below is a sample EDIFACT file.
UNB+UNOA:1+005435656:1+006415160:1+060515:1434+00000000000778'
UNH+00000000000117+INVOIC:D:97B:UN'
BGM+380+342459+9'
DTM+3:20060515:102'
RFF+ON:521052'
NAD+BY+792820524::16++CUMMINS MID-RANGE ENGINE PLANT'
NAD+SE+005435656::16++GENERAL WIDGET COMPANY'
CUX+1:USD'
LIN+1++157870:IN'
IMD+F++:::WIDGET'
QTY+47:1020:EA'
ALI+US'
MOA+203:1202.58'
PRI+INV:1.179'
LIN+2++157871:IN'
IMD+F++:::DIFFERENT WIDGET'
QTY+47:20:EA'
ALI+JP'
MOA+203:410'
PRI+INV:20.5'
UNS+S'
MOA+39:2137.58'
ALC+C+ABG'
MOA+8:525'
UNT+24+00000000000117'
UNZ+1+00000000000778'
Extensive support
Babelway supports all Edifact messages, and knows all the definitions of the different norms. This knowledge
of these definitions will allow additional functionnalities when you work with Edifact. Amongst other things :
• By just loading a sample Edifact file, Babelway wil be able to deduce the structure, find the definition of the
elements, calculate human-readable labels, ... You can see on the following screenshot the result when you
load the sample above.
130
Channels
Figure 4.56. Edifact tree just after having loaded a Sample.
• Adding or removing segment elements is very easy, as the interface knows precisely which elements may
take place in the selected segment.
131
Channels
Figure 4.57. Edit segment shows all the possible elements.
• In the same way, segments can be easily added. The interface will offer you segments and elements that may
take place at this location.
132
Channels
Figure 4.58. Edit segment shows all the possible elements.
• Messages can be validated deeply (structure, mandatory fields, values, ...) automatically, without having to
define any validation manually.
• For all the runtime messages, comments are added in the internal representation to ease the reading of the
file.
133
Channels
Figure 4.59. Internal representation of an Edifact.
Properties
The following properties are available:
Validate structure
Only for messages OUT. If yes, an error will be generated if your message has an incorrect structure. Desactivate only if you really want to send messages with incorrect structures.
Validate values
If yes, all values will be checked against their definition. Desactivate only if you really want to receive/send
messages with values that do not respect the Edifact standard.
Validate segments
If yes, all segments will be checked against their definition (mandatory fields must exist, no field can be
present if not in definition). Desactivate only if you really want to receive/send messages with values that
do not respect the Edifact standard.
Sample
An example of Edifact file handled by this message definition.
UNA segment
Only for messages OUT. The UNA segment to be used in your output message. If you asked for an empty
UNA segment, it will not be printed, and default separators will be used. If you specify one, rest of file will
be written accordingly, adapting to the separators defined in the segment.
134
Channels
Add line breaks between segments
Only for messages OUT. If yes, an additional line break will be added in the output message between every
segment. Only for human readability.
X12 Message Format
ASC X12 (also known as ANSI ASC X12) is the official designation of the U.S. national standards body for
the development and maintenance of Electronic Data Interchange (EDI) standards. ASC X12 has sponsored
more than 315 X12-based EDI standards for health care, insurance, government, transportation, finance, and
many other industries.
Babelway supports all X12 messages, and offers the same extensive support as for Edifact.
File sample
Below is a sample X12 file.
ISA*00*
*00*
*ZZ*SENDERISA
*ZZ*RECEIVERISA
GS*IN*SENDERDEPT*007326879*19960807*1548*000001*X*004010~
ST*810*000000001~
BIG*20090927*00027**A00027-01~
N1*ST*CHOCOLATE IMPORT*9*1234567890~
N3*1000 N. NORTH HIGHWAY~
N4*NEW YORK*NY*10310~
N1*BT*RETAILER INC.*9*1098765432~
N3*P.O. BOX 0000~
N4*LAKE*VA*20120~
N1*RE*FOODSELLER*9*12345QQQQ~
N3*P.O. BOX 222222~
N4*FAIRFAX*VA*94978~
ITD*01*3*1**15**16~
FOB*PP~
IT1**16*CA*12.34**UA*006540022222~
PID*F****BELGIUM CHOCOLATE~
IT1**13*CA*12.34**UA*006540033333~
PID*F****SWISS CHOCOLATE~
TDS*35786~
CAD*****FREEFORM~
ISS*29*CA~
CTT*2~
SE*22*000000001~
GE*1*000001~
IEA*1*000000020~
*960807*1548*U*00401*000000020*0*
The following properties are available:
Validate structure
Only for messages OUT. If yes, an error will be generated if your message has an incorrect structure. Desactivate only if you really want to send messages with incorrect structures.
Validate values
If yes, all values will be checked against their definition. Desactivate only if you really want to receive/send
messages with values that do not respect the Edifact standard.
Validate segments
If yes, all segments will be checked against their definition (mandatory fields must exist, no field can be
present if not in definition). Desactivate only if you really want to receive/send messages with values that
do not respect the Edifact standard.
135
Channels
Sample
An example of Edifact file handled by this message definition.
Edi template
Template of output file, that will be used to choose delimiters.
Output Charset
Charset to use to encode the file.
Input Charset
Charset to use to decode the file.
Odette
The Organization for Data Exchange by Tele Transmission (ODETTE) in Europe is a group that represents the
interests of the automotive industry in Europe. They are the equivalent of the Automotive Industry Action
Group (AIAG) in North America.
ODETTE has been responsible for developing communications standards such as OFTP and OFTP2.0
Babelway supports all following ODETTE Messages:
AVIEXP, AVIGRU, AVIREX, BASDAT, CONFOR, CONTRL, CREDIT, DEBNOT, DELINS, ENQIRY,
FORDIS, GRUDES, INVOIC, KANBAN, MODPRI, OFFERR, ORDERR, OSTENQ, PRILST, REMADV,
REPDEL, REPINV, REPORD, STATAC, STOACT, SYNCRO, SYNPAC
File sample
Below is a sample ODETTE file.
UNB+UNOA:1+1111:OD+2222:OD+980611:1723+888++KANBAN'
UNH+1+KANBAN:2::OD'
MID+0000001266+040331:0001'
CDT+::::::2474'
BDT+0931955500293'
CSG+0931955500293+I'
ARD+190569'
KDE+:336+3840++040402:1648'
ARD+192209'
KDE+:492+1600++040402:2057'
UNT+10+1'
UNZ+1+888'
The following properties are available:
Edi Template (Only available for Odette Out)
The template is used by the EdiWriter in order to define the proper layout of the odette and follows the syntax of the template.
Skip UNA (Only available for Odette Out)
Check this to skip the UNA section in ODETTE.
Output Charset
Charset to use to encode the file.
Input Charset
Charset to use to decode the file.
136
Channels
Sample
An example of ODETTE file handled by this message definition.
XML
XML stands for eXtensible Markup Language and is a very common type of files.
File sample
Below is a sample XML file.
<?xml version="1.0"?>
<Document>
<SenderID>5420008199981</SenderID>
<ReceiverID>5400102000086</ReceiverID>
<DocumentDate>20080531170538</DocumentDate>
<DocumentNumber>VK20084010</DocumentNumber>
<TestIndicator>P</TestIndicator>
<DocumentLanguage>NL</DocumentLanguage>
<Version>1.1/Food</Version>
<Invoice>
<MessageReferenceNumber>VK20084010</MessageReferenceNumber>
<InvoiceHeader>
<MessageType>INV</MessageType>
<MessageNumber>VK20084010</MessageNumber>
<MessageFunction>ORI</MessageFunction>
<InvoiceCurrency>EUR</InvoiceCurrency>
<Dates>
<InvoiceDate>20080531170538</InvoiceDate>
<AccountingValueDate>20080531170538</AccountingValueDate>
<DeliveryDate>20080530170738</DeliveryDate>
<OrderDate>20080530170538</OrderDate>
</Dates>
</InvoiceHeader>
<InvoiceDetail>
<InvoiceItem>
<ItemType>GDS</ItemType>
<LineItemNumber>1</LineItemNumber>
<EANArticleNumber>95400102057205</EANArticleNumber>
</InvoiceItem>
</InvoiceDetail>
</Invoice>
</Document>
The following properties are available:
Output Charset
Charset to use to encode the file
Input Charset
Charset to use to decode the file
XSD
Xsd definition file corresponding to the XML message.
XsdImports
Xsd Imports that the Xsd definition depends on.
Sample
An example of XML file handled by this message definition.
137
Channels
If you want to create and XML message definition, we advise you to provide a complete XML sample and
XSD file(s) defining the structure of the XML. You will get validation, documentation, loop generation from
XSD files and the resulting message definition will be limited to fields present in the XML sample.
If you provide XSD files only, be aware that, if XSD structure is fairly complex, the resulting message definition will be very difficult to use.
If you provide an XML sample file only, you will need to manually edit the message definition to add the
'loops' where it makes sense.
Excel Message Format
File sample
Below is a sample Excel file having headers at the first row of the Excel sheet.
Figure 4.60. Excel Sample file
The following properties are available:
Excel version (Only available for Excel In)
Which Excel format is used (XLS or XLSX).
Ignore empty lines (Only available for Excel In)
Check this to ignore empty lines.
Trim (Only available for Excel In)
Check this to removes all spaces from text except for single spaces between words.
Dateformats (Only available for Excel In)
Used date format.
SheetMode (Only available for Excel In)
Single/Multiple sheets? if not selected, only first sheet of workbook is considered.
ExcelTemplate (Only available for Excel Out)
The template is used by the ExcelWriter in order to define the proper layout and formats of the generated
Excel.
Headers
Select if first row contains field headers.
138
Channels
Encoding
Charset to use to encode/decode the file.
Sample
An example of Excel file handled by this message definition.
File sample
Babelway Excel wizard only supports the Excel files with extension ".XLS"
So if the Excel file you are intended to use has an extension ".XLSX", you will have to change the Excel extension to ".XLS" before uploading it in the Excel wizard. Here is the procedure.
*Excel file extension modification procedures.
1-Open you Excel file with extension ".XLSX" and the press "save as".
Figure 4.61. Press save as
2-Open "Save As type" drop down menu and choose the extension XLS and press save.
139
Channels
Figure 4.62. Save file with a new extension
PDF based on XHTML template Message Format
PDF Wizard screen allows you to define your PDF message format based on your XHTML template file.
To define a message in PDF format, select an existing template or make a copy of the generic PDF template in
the catalogue and the following screen will be displayed.
Wizard screen
When you create a new message format, you must first configure it using the following wizard.
Figure 4.63. PDF Wizard screen
A PDF message can only be set up using a template file in XHTML format. Select your template file using the
Browse... button next to the XHTML file, then click on the Upload command.
File sample
Below is a sample PDF file.
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>PDF output</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style>
@page {
@page {
@page {
@page {
size: A4; margin: 3cm 1.5cm 2cm 1.5cm; border: none; padding: 1em; }
@top-left{content: ""; }}
@top-right{content: "Page " counter(page) " on " counter(pages);}}
@bottom-left{content: element(footer);border-top: solid 0.01mm #000; }}
#footer{display: block; position: running(footer); }
</style>
</head>
<body style="font-size: 12pt; font-family: 'Nobile'">
<center>
<h1 >PDF output example</h1>
</center>
140
Channels
<br/>
<div style="font-size: small">
<span>Date :</span>
<span id="invoiceDate">25-08-2009</span>
</div>
<br/>
<center style="font-size: large">Example</center>
<br/>
<table style="width: 100%" >
<tr>
<td rowspan="1" style="width: 200px; height: 20px;">
<span>Invoice number :</span>
<span id="invoiceNumber">field1</span>
</td>
<td style="width: 300px; height: 20px;">
<span>Contact Name :</span>
<span id="firstName">field2</span>
<span id="lastName">field3</span>
</td>
</tr>
</table>
<br/>
<center>
<span>Some static info</span>
</center>
<table style="width: 100%" dir="ltr" frame="box">
<tbody>
<tr>
<td bgcolor="#cdd5cb" rowspan="1"
style="width: 120px; height: 30px;">Description</td>
<td bgcolor="#cdd5cb" style="width: 80px; height: 30px;">Unit price</td>
<td bgcolor="#cdd5cb" style="width: 40px; height: 30px;">Qty</td>
<td bgcolor="#cdd5cb" style="width: 80px; height: 30px;">Vat rate</td>
<td bgcolor="#cdd5cb" style="width: 100px; height: 30px;">Tax free
price</td>
<td bgcolor="#cdd5cb" style="width: 80px; height: 30px;">Tax</td>
<td bgcolor="#cdd5cb" style="width: 80px; height: 30px;">Total price</td>
</tr>
<tr id="product-loop">
<td style="width: 120px; height: 20px;" rowspan="0"><span
id="itemDescription">Support pack 5h</span> </td>
<td style="width: 80px; height: 20px" align="right"><span
id="itemUnitPrice">425.00</span> </td>
<td style="width: 40px; height: 20px" align="right"><span
id="itemQuantity">1</span> </td>
<td style="width: 80px; height: 20px" align="right"><span
id="itemVatRate">21.00</span> </td>
<td style="width: 100px; height: 20px" align="right"><span
id="itemTaxFreePrice">425.00</span> </td>
<td style="width: 80px; height: 20px" align="right"><span
id="itemTax">89.25</span> </td>
<td style="width: 80px; height: 20px" align="right"><span
id="itemTotalPrice">514.25</span> </td>
</tr>
</tbody>
</table>
<br />
<center style="page-break-before:always">
<span>second page</span>
</center>
<br/>
You can upload images or css sheets as file properties and use a simple relative url in your xht
<br/>
<br/>
For specific print css options, see http://www.w3schools.com/css/css_reference.asp for all css o
<br/>
<br/>
<h2>Barcode Integration</h2>
<br/>
<barcode style="display: inline-block; width: 300px; height: 200px;" type="EAN13">123456789012
<br/>
141
Channels
<barcode style="display: inline-block; width:
<br/>
<barcode style="display: inline-block; width:
<br/>
<barcode style="display: inline-block; width:
<br/>
<barcode style="display: inline-block; width:
<br/>
<barcode style="display: inline-block; width:
<br/>
<barcode style="display: inline-block; width:
<br/>
<barcode style="display: inline-block; width:
<br/>
<barcode style="display: inline-block; width:
<br/>
<barcode style="display: inline-block; width:
<br/>
<barcode style="display: inline-block; width:
<br/>
<barcode style="display: inline-block; width:
<br/>
<div id="footer">
Footer line#1<br/>Footer line#2
</div>
300px; height: 200px;" type="EAN8">1234567890123
300px; height: 200px;" type="UPCA">1234567890123
300px; height: 200px;" type="UPCE">01234133</bar
300px; height: 200px;" type="CODABAR">A123456789
300px; height: 200px;" type="CODE39">12345678901
300px; height: 200px;" type="CODE39_EXTENDED">12
300px; height: 200px;" type="CODE128">1234567890
300px; height: 200px;" type="CODE128_UCC">123456
300px; height: 200px;" type="CODE128_RAW">123456
300px; height: 200px;" type="EAN8">1234567890123
300px; height: 200px;" type="POSTNET">1234567890
</body>
</html>
Edit screen
Once the message format template has been uploaded, or when it is used or copied from a saved format, you
have the possibility to go on the created element. If you want to edit the properties of that message definition,
switch to "Properties".
Figure 4.64. PDF Edit screen
The following properties are available:
Xhtml template
The Xhtml template which defines structure of the requested PDF.
Xhtml resources
142
Channels
Resources used inside the Xhtml template such as images, css files,...
Sample
An example of PDF file handled by this message definition.
In order to ease the navigation, the xhtml attribute id is used as the name in the resulting message definition.
These elements are visible by default. Mapping to these elements will be preserved if you upload another template containing the element with the same id.
If you need to add a loop to your xhtml, you can simply name the element with a suffix -loop like in the example above. The system will create a loop and a corresponding element. Mapping to these elements will also
be preserved if you upload a other template.
All elements without id in the xhtml will be hidden by default. If you cannot add an id to your element, you
have to manually show any element you need in the transformation step. Additionally, you should edit and rename the element label for easier management during transformation step.
To ease the search of the fields you need, the values uploaded from your example file are displayed in the field
tooltip descriptions.
See Message Definition to change show/hide parameter and edit the element label.
Multirecord Flat files
Multirecord Wizard screen allows you to define your Multirecord message format (delimited or a fixed-length)
according to your own file format.
What is mr file?
The mr file is a multirecord definition file which is used by the Self-Service MultiRecord wizard to generate the
corresponding message definition and also to build the corresponding servingxml resource file.
How to build mr file?
(1) Specify if the message is a delimited or a fixed-length.
For fixed-length messages, the mr file header will look like this:
<multirecord name="mymultirecord" type="fixed-length" lineDelimited="true" recordDelimiter="\r\n" quot
For the delimited messages the mr file header will look like this:
<multirecord name="mymultirecord" type="delimited" fieldDelimiter="," recordDelimiter="\r\n" quoteSymb
* recordDelimiter defines the delimiter between each record, it is usually the ending line character represented
on windows by \r\n, on Unix/Linux by \n and on Macintosh by \r.
* lineDelimited specifies if the system uses a record delimiter. If set to false, the record will be based on the
sum of the fields length for fixed length or the number of fields for delimited multirecords.
* trim specifies if the white spaces at the beginning and the end of the fields should be removed.
* fieldDelimiter, only used with a delimited message, defines the field delimiter.
* quoteSymbol-character is the character used to quote a field (often &quot;)
143
Channels
* quoteSymbol-escapeSequence is the sequence that will display the quote symbol character in a quoted field
(often \&quot;)
Hint:
For multirecord as message in, do not specify recordDelimiter. The system will catch the \r or \n or \r\n. For
multirecord as message out, DO specify recordDelimiter as being for instance "\r\n"; this will generate windows compliant file and let you change the delimiter from the advanced properties later on.
(2) The second step is to write the message records definitions
You should specify the name for the record and for each of its fields. Each record should have at least one field
with a static value which will be used to identify the record.
<record name="Record1">
<field name="recordType" value="R1" width="2"/>
<field name="field1" width="5"/>
<field name="field2" width="3"/>
</record>
* the width is only mandatory for fixed-length messages
* value is used to specify that the field has a static value that will never change
By default all first fields with a static value are used to identify a record. But, you can also manually define
which fields must be used to identify a record using the identifier paramter.
<record name="Record1">
<field name="recordType" value="R1" width="2" />
<field name="fieldA" width="5"/>
<field name="fieldB" width="3" value="BBB" identifier="true"/>
<field name="fieldC" width="7" />
<field name="fieldD" width="2" value="DD" identifier="true"/>
</record>
In this case, only the third and fifth fields (fieldB & fieldD), with identifier equals to true, will be used to identify the record. The default (without identifier=true) would only use recordType field as the identifier.
Remark:
For fixed-length messages, the fields used to identify a record should have the same position and length in each
record. No overlap between identifiers is allowed between records.
If fixed-length messages have variable length identifier per records, the only way to define it in the mr files is
to first define the smallest common length identifier for all records and then for each records that have longer
identifier, add as many as smaller field needed to unambiguously identify each record.
For example, if we have a message where AAAAA, 111 and 2222 are identifiers like as shown below:
AAAAA
contentcontent anothercontent
1112222 this and that
The following definition is not valid since the fieldA is bigger than field1 and moreover, fieldA also overlaps
with field2
<record name="Record1">
<field name="fieldA" width="5" value="AAAAA" identifier="true"/>
144
Channels
<field name="fieldB" width="15" />
<field name="fieldC" width="17" />
</record>
<record name="Record2">
<field name="field1" width="3" value="111" identifier="true"/>
<field name="field2" width="4" value="2222" identifier="true"/>
<field name="field3" width="20" />
</record>
It should be replaced by:
<record name="Record1">
<field name="fieldA" width="3" value="AAA" identifier="true"/>
<field name="fieldA" width="2" value="AA" identifier="true"/>
<field name="fieldB" width="15" />
<field name="fieldC" width="17" />
</record>
<record name="Record2">
<field name="field1" width="3" value="111" identifier="true"/>
<field name="field2" width="2" value="22" identifier="true"/>
<field name="field2" width="2" value="22" identifier="true"/>
<field name="field3" width="20" />
</record>
We had to split the fieldA in two in order to have one fieldA with the length 3 (the same as field1) with another
fieldA with the remaining length 2.
Then the field2 (length 4) was also bigger than the second fieldA (length 2) so we also need to split it in two
field2 of length 2.
All corresponding identifier have now the same length (3 and 2) and there is no overlap between them.
It is also possible to add 4 extra parameters label, description, justify & padCharacters to each field
<field name="myField" label="My Field" description="My field description" justify="right" padCharacter
* label and description are used to display the message tree
* justify can be center, left or right
* padCharacter is the character used to fill an empty space in the field width
(3) The last step is to define the message structure at the end of the mr file.
<xml>
<group name="Transaction" maxOccurs="unbounded">
<group name="headers">
<record name="header" minOccurs="1" maxOccurs="unbounded"/>
</group>
<record name="record1" maxOccurs="unbounded"/>
<group name="footers">
<record name="footer" />
</group>
</group>
</xml>
* Each element can define the minOccurs and the maxOccurs parameter with either a 0, a positive number or
145
Channels
'unbounded'.
* Records defined in the records simplesect can only appear once in the message structure.
* Records can be grouped using the group element. The name of the group is mandatory.
* Records in a group should be ordered in the same way they appeared at the message.
Sample multirecord fixed-length message
HH00123 AB
HH00045 CDE
R1one 100
R1two 101
R1four 103
FF3
Sample multirecord definition file
<?xml version="1.0" encoding="UTF-8"?>
<multirecord name="mymultirecord" type="fixed-length" recordDelimiter="\r\n" quoteSymbol-character="&q
<records>
<record name="header">
<field name="recordType" value="HH" width="2"/>
<field name="header1" width="5" justify="right" padCharacter="0" />
<field name="header2" width="4" justify="right" padCharacter=" " />
</record>
<record name="record1">
<field name="recordType" value="R1" width="2"/>
<field name="field1" width="5" label="My field" description="My field Descritpion" />
<field name="field2" width="3"/>
</record>
<record name="footer">
<field name="recordType" value="FF" width="2" />
<field name="footer1" width="1"/>
</record>
</records>
<xml>
<group name="Transaction" maxOccurs="unbounded">
<group name="headers">
<record name="header" minOccurs="1" maxOccurs="unbounded"/>
</group>
<record name="record1" maxOccurs="unbounded"/>
<group name="footers">
<record name="footer" />
</group>
</group>
</xml>
</multirecord>
The following properties are available:
Output Charset
Output charset to use to encode the file.
Input Charset
Input charset to use to decode the file.
MultiRecord definition
The MultiRecord definition file.
146
Channels
ServingXml (Visible only for Babelway admins)
The ServingXml code generated based on the Multirecord defintion file.
Sample
An example of Multirecord file handled by this message definition.
Flat File Message Format
File sample
Below is a sample Flat file.
EE54001340000093012918100700000000000147521
DD0000018713906060109 6011
DD0000028713906061106 6111
3005330101
3005250201
The following properties are available:
Output Charset
Charset to use to encode the file
Input Charset
Charset to use to decode the file
XSD
Xsd definition file corresponding to the XML message.
ServingXml
The ServingXml code file.
Sample
An example of FLATFILE handled by this message definition.
TRADACOM Message Format
TRADACOM is an early standard for EDI (Electronic Data Interchange) primarily used in the UK retail sector.
It was introduced in 1982 as an implementation of the UN/GTDI syntax, one of the precursors of EDIFACT,
and was maintained and extended by the UK Article Numbering Association (now called GS1 UK).
As Babelway supports all TRADACOM transaction sets of the TRADACOM standard, you can use any of
them in your own gateway setup.
Babelway supports all following TRADACOM documents:
1.ACKHDR, ACKMNT, ACKTLR, AVLDET, AVLHDR, AVLTLR, CORDER, CORHDR, CORTLR,
CRAHDR, CRAINF, CRATLR, CREDIT, CREHDR, CRETLR, CUSHDR, CUSINF, CUSTLR, DELHDR,
DELIVR, DELTLR, DLCDET, DLCHDR, DLCTLR, DRAHDR, DRAINF, DRATLR, EXCHDR, EXCINF,
EXCTLR, GENHDR, GENRAL, GENTLR, INVFIL, INVOIC, INVTLR, LPRDET, LPRHDR, LPRTLR, ORDERS, ORDHDR, ORDTLR, PAYHDR, PAYINF, PAYTLR, PICHDR, PICKER, PICTLR, PPRDET,
PPRHDR, PPRTLR, PRIHDR, PRIINF, PRITLR, PROHDR, PROINF, PROINF, PROTLR, RSGRSG, SADDET, SADHDR, SADTLR, SNPHDR, SNPHDR, SNPSTS, SNPTLR, SRMHDR, SRMINF, SRMTLR,
UCNDET, UCNHDR, UCNTLR, UCNTLR, UPLHDR, UPLIFT, UPLTLR, UTLBIL, UTLHDR, UTLTLR,
UVATLR, VATTLR
147
Channels
File sample
Below is a sample TRADACOM invoice file.
STX=ANAA:1+501xxxxxxxxxx:name+501xxxxxxxxxx:NAME SERVICES (U.K.)LTD.+040316:184411+00001++INVTES'
MHD=1+INVFIL:9'
TYP=0700+INVOICES'
SDT=501xxxxxxxxxx:053752CF01STDD+Tenprl Fnsrjnl Sbbqfreivpr+221 UvyyunyyRoad:Yvfohea:Co. Antrim:N.Irel
CDT=501xxxxxxxxx+NAMESERVICES (U.K.) LTD.+Cnexynaqf Pbheg:OvezvatunzTerng Cnex:Ehorel:Birmingham:OG45
FIL=1+1+040316'
FDT=040302+040302'
MTR=7'
MHD=2+INVOIC:9'
CLO=0000000100007: ++PNEEVPX GOLF CLUB:ABEGU ROAD:PNEEVPX SRETHF::OG388YC'
IRF=01000589M+040302+040302'
ODD=1+::040302+:040302'
ILD=1+1+:8408++:31266+0+2:2500:KG+54300+135800+Z+0+++SILVERSIDE 1-5 KG'
STL=1+Z+0+0+1358+++++1358++0+0++1358'
TLR=1+1358+++++1358++1358+0++1358'
MTR=8'
MHD=3+VATTLR:9'
VRS=1+Z+0+1358+1358+0+1358+1358'
MTR=3'
MHD=4+INVTLR:9'
TOT=1358+1358+0+1358+1358+1'
MTR=3'
MHD=5+RSGRSG:2'
RSG=00001+501xxxxxxxxxx'
MTR=3'
END=5'
The following properties are available:
Output Charset
Charset to use to encode/decode the file.
Input Charset
Charset to use to encode/decode the file.
Sample
An example of TRADACOM file handled by this message definition.
JSON Message Format
JSON Wizard screen allows you to define your JSON message format according to your own file format.
JSON (JavaScript Object Notation) is a lightweight text-based open standard designed for human-readable data
interchange. It is derived from the JavaScript scripting language for representing simple data structures and associative arrays, called objects. Despite its relationship to JavaScript, it is language-independent, with parsers
available for many languages. The JSON format is often used for serializing and transmitting structured data
for web applications.
The following properties are available:
Sample
An example of JSON file handled by this message definition.
To define a message in JSON format, select an existing template or make a copy of the generic JSON wizard in
148
Channels
the catalogue and following screen will be displayed.
File sample
Below is a sample JSON file.
{
"id": "0001",
"type": "donut",
"name": "Cake",
"ppu": 0.55,
"batters":
{
"batter":
[
{
{
{
{
"id":
"id":
"id":
"id":
"1001",
"1002",
"1003",
"1004",
"type":
"type":
"type":
"type":
"Regular" },
"Chocolate" },
"Blueberry" },
"Devil's Food" }
]
},
"topping":
[
{
{
{
{
{
{
{
"id":
"id":
"id":
"id":
"id":
"id":
"id":
"5001",
"5002",
"5005",
"5007",
"5006",
"5003",
"5004",
"type":
"type":
"type":
"type":
"type":
"type":
"type":
"None" },
"Glazed" },
"Sugar" },
"Powdered Sugar" },
"Chocolate with Sprinkles" },
"Chocolate" },
"Maple" }
]
}
Rest Message Format
REST message definition allows you to define easily a typical response for a REST request. The main particularity of this message definition is that it can generate json, xml or csv responses based on the request. This allows to define easily rest apis that supports the 3 formats with just one channel.
The output format (json, xml or csv) will be chosen according to the metadata rest_output_format. Note that
this metadata is automatically set if you use a REST Gateway IN in your channel.
The following properties are available:
CSV delimiter character
When generating csvs, the character that is used to separate the fields.
Quote character
When generating csvs, the character that is used to quote the specials character.
Headers
Tells if the csv files must begin with a line that contains headers of the columns.
So that they can be used in any output format, there are some limitations about the message definition tree that
you can use:
149
Channels
• Only the first two levels of the tree will be used when asking for csv output format. If the tree has at least 2
levels (besides the root node), the first level tags will be mapped into lines of the csv, and the second level
into columns. If the tree has only one level, fields will be mapped to columns.
• If you use a csv with headers, headers will be automatically calculated based on the element names of the
first row.
Here is an example of an output file in the 3 formats:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<country><code>BE</code><name>Belgium</name></country>
<country><code>FR</code><name>France</name></country>
</root>
[
"country" : {
"code" : "BE",
"name" : "Belgium"
},
"country" : {
"code" : "FR",
"name" : "France"
}
]
code,name
BE,Belgium
FR,France
SAP IDOC Message Format
SAP IDOC are the well-known SAP interchange formats. You can obtain the definition parser directly from
SAP. In order to do this, select the transaction WE63. Select Basic type or Extended Type according IDoc extensions usage.
IDOC parser sample
Below is a sample SAP IDOC file.
BEGIN_RECORD_SECTION
BEGIN_CONTROL_RECORD
BEGIN_FIELDS
NAME
TEXT
TYPE
LENGTH
FIELD_POS
CHARACTER_FIRST
CHARACTER_LAST
TABNAM
Name of external structure
CHARACTER
000010
0001
000001
000010
NAME
TEXT
TYPE
LENGTH
FIELD_POS
CHARACTER_FIRST
CHARACTER_LAST
MANDT
Client
CHARACTER
000003
0002
000011
000013
NAME
DOCNUM
150
Channels
TEXT
TYPE
LENGTH
FIELD_POS
CHARACTER_FIRST
CHARACTER_LAST
IDoc number
CHARACTER
000016
0003
000014
000029
NAME
DOCREL
...
The following properties are available:
Idoc parser
The Idoc parser.
Output Charset
Charset to use to encode the file.
Input Charset
Charset to use to decode the file.
Sample
An example of SAP IDOC file handled by this message definition.
Not Defined Message Format
Not Defined message format is used when in and out message format does not need to be defined because no
processing will be performed on it and no change is required.
(For format not natively supported by Babelway): Advanced users have the option to upload programmatic
code that provides support to proprietary message formats, such as specific binary ERP format (for example
idoc of SAP...)
If message in format is "Not defined", so should be the message out. Otherwise output may return unexpected
results or an empty message.
Usually, this setting is used in combination with No Transformation in a channel that simply transfers an unchanged and unprocessed message from one gateway to another different one.
Output Character Set
Charset to use to encode the file. Leave empty to keep the file as is.
Input Character Set
Charset to use to decode the file. Leave empty to keep the file as is.
Generic Message Format
Generic Wizard screen allows you to define your generic message format according to your own file format.
The following properties are available:
Output Charset
Charset to use to encode the file.
151
Channels
Input Charset
Charset to use to decode the file.
ConverterClass
The ConverterClass that is used to parse the file.
Sample
An example of the file handled by this message definition.
UBL
OASIS Universal Business Language (UBL) is the product of an international effort to define a royalty-free library of standard electronic XML business documents such as purchase orders and invoices.
File sample
Below is a sample UBL file.
<?xml version="1.0" encoding="UTF-8"?>
<Catalogue xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>urn:www.cenbii.eu:transaction:biicoretrdm019:ver2.0:extended:urn:www.pepp
<cbc:ProfileID>urn:www.cenbii.eu:profile:bii01:ver2.0</cbc:ProfileID>
<cbc:ID>1234</cbc:ID>
<cbc:ActionCode listID="ACTIONCODE:PEPPOL">Add</cbc:ActionCode>
<cbc:Name>Peppol Catalogue</cbc:Name>
<cbc:IssueDate>2013-08-01</cbc:IssueDate>
<cbc:VersionID>1</cbc:VersionID>
<cac:ValidityPeriod>
<cbc:StartDate>2013-09-01</cbc:StartDate>
<cbc:EndDate>2014-12-31</cbc:EndDate>
</cac:ValidityPeriod>
<cac:ReferencedContract>
<cbc:ID>3299-8RA</cbc:ID>
<cbc:ContractType>Framework</cbc:ContractType>
</cac:ReferencedContract>
<cac:ProviderParty>
<cac:PartyIdentification>
<cbc:ID schemeID="GLN">579000123002</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Office AS</cbc:Name>
</cac:PartyName>
</cac:ProviderParty>
<cac:ReceiverParty>
<cbc:EndpointID schemeID="NO:ORGNR">99156827</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID schemeID="NO:ORGNR">99572527</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>DIFI</cbc:Name>
</cac:PartyName>
</cac:ReceiverParty>
<cac:CatalogueLine>
<cbc:ID>1</cbc:ID>
<cbc:ActionCode listID="ACTIONCODE:BII2">Add</cbc:ActionCode>
<cbc:OrderableIndicator>true</cbc:OrderableIndicator>
<cbc:OrderableUnit>BX</cbc:OrderableUnit>
<cbc:OrderQuantityIncrementNumeric>1</cbc:OrderQuantityIncrementNumeric>
<cbc:MinimumOrderQuantity>1</cbc:MinimumOrderQuantity>
<cac:RequiredItemLocationQuantity>
<cac:Price>
<cbc:PriceAmount currencyID="NOK">20.00</cbc:PriceAmount>
</cac:Price>
</cac:RequiredItemLocationQuantity>
<cac:Item>
152
Channels
<cbc:Description>Ballpoint pen comes in different colours and tip sizes</cbc:D
...
The following properties are available:
Sample
An example of valid UBL file
Sample
An example of UBL file handled by this message definition.
Document type
Type and version of the UBL document. Automatically detected from the provided sample
Profile and customization
UBL Profile and UBL customization reference used to validate the UBL document. Automatically detected
from the provided sample
Disable UBL Validation
Some business rules related to the document profile and customization are automatically validated. Click
here to disable this validation.
By using UBL message definition, you will get benefit of UBL XSD validation and schematron validation for
some of the UBL Profile and Customization (OpenPEPPOL, ePrior...)
RosettaNet
The RosettaNet standard is based on XML and defines message guidelines, interfaces for business processes,
and implementation frameworks for interactions between companies. Mostly addressed is the supply chain
area, but also manufacturing, product and material data, and service processes are within scope.
The following properties are available:
RosettaNet process type
The message definition will represent a PIP action or a RNIF signal. Please select it in the list.
Disable Rosetta net Validation
Some business rules related to the process type are automatically validated. Click here to disable this validation.
4.3.6. Common Message Definition Properties
Message Definition
This file is Babelway's internal representation of your message definition tree. You can view and modify its
contents through here for troubleshooting purposes. However, we highly recommend you use the graphical editor (tree) as this guarantees that all your changes are supported by the platform.
Validation Mode
Upon processing a message, the platform will check that it matches the description configured in your message
definition tree. The validation mode describes how strictly messages need to comply with your definition in or153
Channels
der to be processed.
By default, loose validation is selected for all new message definitions. The validation modes differ in the way
they handle unrecognized fields and loops:
Strict
• Field Values: Mandatory fields and all value restrictions configured in your message definition tree will
be checked.
• Structure: Unrecognized fields will trigger an error.
• Loops: If applicable, checks that there aren't too few or too many elements in the loop.
Loose
• Field Values: Mandatory fields and all value restrictions configured in your message definition tree will
be checked.
• Structure: Unrecognized fields will be ignored and the message will be processed.
• Loops: The number of elements in loops aren't checked.
Compatibility (Deprecated)
This mode is deprecated, please contact support for more information.
4.4. Transformations
This sections covers all sections related to transformations.
Transformations are used to convert a message in into a message out.
It contains all the rules on which fields must be mapped on which ones, including optional calculations, conversions, formatting, ...
The Babelway application supports 3 ways of defining a transformation.
• Most of transformations can be defined using Drag and Drop Transformation editor.
• Alternatively, you can write your transformation directly in standard Xslt format using Xslt Transformation
editor.
• Additionally, in some specific case when no transformation is required, you can select a No Transformation
template.
4.4.1. Transformations list
The list of transformations screen shows you all the transformations defined in your environment, even if they
are not used in any channel. From here, you can easily edit them, or create new ones.
This screen is accessible by clicking on the menu Channels, then the sub-menu Transformations
The list can contain the following columns:
154
Channels
Name
A name that identifies the channel.
Description
A free description for the channel.
Message in
The message in used as input of the transformation.
Message out
The message in produced as output of the transformation.
Created on
The date and time when the channel was created.
Last updated on
The date and time of the last modification that affected the channel.
For more information about the behavior of the grid, and how to make searches, see the grid section of the help.
You can click on a line to view the details of the associated transformation, or edit it. See transformation
details.
The Create transformation action button allows you to create new transformations.
4.4.2. Creation of a transformation
To create a transformation, just choose its type, and click on Create transformation
You can find all details about every type of transformation in the corresponding sections :
• Visual mapping
• Xslt mapping
• No transformation
Figure 4.65. Gateway creation - Reuse confirmation
4.4.3. Transformation detail
General
155
Channels
The general tab contains the general information of the gateway, and offers actions that act on the whole transformation.
Message IN
The message definition of the input message related to this transformation.
Message OUT
The message definition of the output message related to this transformation.
Name
A name that you can set and/or modify to easily retrieve and manage your element.
Description
A free text field that you can set and/or modify used in addition to element name to help you identify your
element usage and/or function.
Id
A unique identifier automatically set by Babelway platform.
Created On
Date and time of element creation.
Last Updated On
Date and time of last element configuration update.
Mapping / xslt
Following of the type of the transformation, these tabs define all the rules that must be applied to convert the
message in to the message out.
See Drag and Drop Transformation for defining transformation with the visual editor.
See Xslt Transformation for defining the transformation by writing an xslt.
Related items
This tab contains quick links to many other elements related to this gateway.
Associated message definitions
The message definitions related to this transformation.
Using channels
All the channels that use this element.
Parent
The parent is the element from which the element has been copied.
Children
The children is the element which is a copy of the current element.
Change Log
This tabs shows you all the history of changes on this gateway, and allows you to revert to a past version. For
156
Channels
more details, see the change log section.
4.4.4. Drag and Drop Transformation
Drag and Drop transformation visual editor enables to easily define the transformation between your source
message and your target message.
This transformation visual editor is divided in the following zones:
• The top bar will allow you to edit all of your formulas, when a mapping rule is selected. In other circumstances, it will just guide you with contextual help.
• The left pane displays the structure of the message in.
• The right pane displays the structure of the message out.
• At the bottom of the component, you have links for global actions (save the mapping, or run a test case).
Figure 4.66. Drag and drop transformation visual editor
Note
The editor has been optimized to use all the available space of your window. To take full profit of it,
we recommend that you maximize the size of your window, especially when you work with big message definitions.
4.4.4.1. Viewing and selecting mapping rules.
An icon (chain mark) shows you at a glance all the fields that are used in the transformation.
To see how a field is used in the transformation, you can simply click on it.
157
Channels
Click on mapped field.
If you click on a node that is already used in the transformation, the nodes involved in the transformation rule
will be clearly showed on the screen. The formula bar will show the transformation formula, and allow to edit
it. For more information about how to edit a transformation formula, see section about how to edit formulas.
Figure 4.67. Visual editor when a mapping is selected.
The lines will let you see immediately all the involved nodes, even when they are combined in a formula.
Figure 4.68. Visual editor when a mapping is selected (multiple inputs).
Click on field mapped more than once.
If you click on a field that is used in more than one mapping rule, the system will show you all the mappings
rules, and ask you to choose the one you want to edit.
158
Channels
Figure 4.69. Mapping choice.
By putting your mouse on one of the mapping lines, you see all details of the given mapping. To select it and be
able to edit it, just click on the line.
Figure 4.70. Mapping choice (highlighted).
Click on not mapped field.
If you click on a field that is not used in the mapping, you will just be notified of it, and will have the possibility to initiate a new mapping rule for this field.
Figure 4.71. Selection of not mapped field.
159
Channels
Iterate through mappings..
It is also possible to iterate through all mappings thank to the arrows at the top right of the target tree zone.
Figure 4.72. Mapping iteration.
Starting from the currently selected node in the target tree (or top of the tree is no node is selected), the right arrow will find the next mapped node, and select it. In the same way, left arrow will find and select the previous
mapped node.
4.4.4.2. Nodes mapping
You can initiate new mappings via the following methods :
Drag-and-drop
Just drag your source field to the target field. A simple mapping will be defined, that say that the target field
must be filled with the value that was in the source field. You can then update the formula : see section about
how to edit formulas. When you are dragging your source field, all compatible target fields are highlighted.
Figure 4.73. New mapping (drag-and-drop)
Formula bar
The other method is to select your target field, then start typing your formula in the formula bar (see section
about how to edit formulas ). When you need source fields in your formula, you can just drag-and-drop then in
160
Channels
the formula bar.
Figure 4.74. New mapping (via formula bar)
4.4.4.3. Edit formula
Formula bar
By default, when you just make your mappings by drag-and-dropping your source fields to the corresponding
target fields, the values are associated without any transformation. You can use the formula bar (at top of the
component) to pick formulas, that will transform the input values, or combine multiple values together.
Figure 4.75. Formula bar
For advanced users, the formula language is xpath, and you can use whatever xpath function to create your formula, even if it is not documented in the function library. The only differences to pure xpath formula are :
• You can refer to source fields by just drag-and-dropping them in the formula (a summary of the node will be
displayed).
• All the documented functions, even the extensions specific to Babelway, can be called without a namespace
prefix.
Easy Function Editor
The Easy Function Editor can help you writing your formulas. It opens in two situations :
161
Channels
• When you write a function call in the formula bar. The Easy Function Editor will open automatically, and
show you help about the function you are using.
• If you open it by clicking on the "Easy Function Editor" link, at the right of the formula bar.
In any case, the help will depend on the cursor position, and show you help about the function that is called at
this precise cursor position. You can use both the formula bar or the Easy Function Editor to write your functions and their parameters. All the changes that you make in the editor panel will be automatically (and immediately) reflected in the formula bar, and vice-versa.
When you are entering the name of a function, the formula editor will just show you all the functions in the library that match the prefix you just typed. You can select the proposal by just clicking on it. The name will be
completed in your formula, and the editor will allow you to fill the parameters. You can also use the following
keyboard shortcuts :
• Enter : to select the currently highlighted proposal.
• Down arrow : to select the next proposal.
• Up arrow : to select the previous proposal.
• Escape : hide the function editor.
Figure 4.76. Formula bar - choosing your function.
When you are filling the parameters of a function, the formula editor will show you all the documentation about
the function (description, examples, ...), and allow you to pick easily the parameters.
Figure 4.77. Formula bar - filling parameters.
Whenever possible, you will receive in the function editor additional help to be able to fill easily the function
162
Channels
parameters. In the following example, using a lookup table, the editor will allow you to select your lookup table
and its columns in dropdown, whose content depend of your environment.
Figure 4.78. Formula bar - filling parameters.
The inline help describes many functions, and will help you for picking parameters for all of them. These functions should cover most of your needs. If you should not find what you search, or if the help of a function is not
clear, do not hesitate to ask to our support ([email protected]).
163
Channels
Figure 4.79. Formula bar - functions list.
Colorization of the formulas
To ease the reading and the detection of errors in the formulas, formulas are colorized.
Figure 4.80. Colorization of the formulas
• Recognized function names are displayed in italic light blue.
• String constants are displayed in dark blue.
• Other elements of the formula are displayed in black.
Validation of your formulas
If you want to be sure that your formula's syntax is correct (a valid xpath expression), you can click the validate
icon at the end the formula bar.
164
Channels
Figure 4.81. Validate formula.
If the formula is correct, the icon will become green.
Figure 4.82. Validate formula - OK.
If not, it will become red, and a summary of the error will be made available if you put your mouse on the icon.
Figure 4.83. Validate formula - KO.
The validation is also accessible by just pressing the Enter key.
Deleting a formula
If you want to delete a formula, so that the target node is not mapped anymore, you can :
• Empty the formula.
• Click on the X icon at the end of the formula bar.
Figure 4.84. Reset formula
4.4.4.4. Understanding functions
Functions are used in formulas to calculate the wanted output starting from your input fields.
Introduction
A function is an operation that takes values as inputs (the parameters), and computes an output value (the result). Functions can be written for any calculation you can think to. They will be identified by their name, and
you have to know which parameters they expect to be able to call them.
A function can be called in a formula by just typing the function name, an opening parentheses, the parameters
(separated by commas), and a closing parentheses. You can find some examples below :
165
Channels
max(3,5) -> 5
min(3,5) -> 3
lower-case('BABELWAY') -> 'babelway'
concat('First ', 'example') -> 'First example'
string-length('Babelway') -> 8
changeDateTimeFormat('2022-01-31', 'yyyy-MM-dd', 'yyyyMMdd') -> '2022031'
Function elements
The Babelway inline help will give you immediate access to all elements that describe the function.
Figure 4.85. Function elements
1. The function name identifies the function. It is what you have to write before the opening parenthesis to call
this function.
2. The library just indicates the provenance of this method. It can be one of the following :
• XSL : This function is just standard XSL. If you know XSL, it is exactly the function that you know.
Also, every help you could find on the Internet about this function is valid.
• Babelway : This function is a Babelway-specific extension to xsl. You have to read Babelway inline help
to know about this function, or call our support if you need more info.
• User : This function have been defined by you, in the context of this mapping. You can freely update or
delete it, according to your needs.
3. The description describes what the function does, and what it is intended for.
4. The result description describes the value that is returned by the function, including its type (see following
section for more information about types).
166
Channels
5. The parameters section shows all information about the parameters of the function.
a. The name of the parameter. It is just one word that should make you understand the parameter.
b. The field for the value for this parameter. You can type the value into this field.
c. More help about the parameter. You have to select the parameter for which you want to see this help.
Help starts again with the function name.
d. Type of the parameters (see following section for more information about types), and indication if this
parameter is mandatory (the default) or not.
e. More info to help you understand this parameter, and how you have to fill it.
6. The examples show you some function calls to the function, with the result. It should clarify how the function works.
Parameter types.
In every function, the parameters and the return type are typed objects (a string, a number, ...).
The reason for this is that functions can not operate on any parameter, but have requirements on them to be able
to operate. As an example, a function that would multiply its parameters will require that the parameters are
numbers. It will be able to calculate 3*5, but not 3 * 'abc'.
The type of the parameters summarizes most of the constraints on the parameters. It will also allow to detect
immediately that the function can not work, because the parameter types are not the expected ones.
The following types are used in the functions of the mapping editor.
• String. It is the most basic type. It is just a sequence of characters, without any more constraint. When you
write a String constant into a xpath expression, you have to enclose it with single quotes. Ex : 'abc', 'string
example'. Also, all the fields coming from your source document are Strings. You can therefore just dragand-drop them when you need a String parameter.
• Integer. An integer is a number without decimals, like 2 or 17 (but not 3.5). When you write a Integer constant into a xpath expression, it must be written as is, without enclosing it with a delimiter. Ex : max(3, 5)
• Boolean. A Boolean either true or false. When you write a Boolean constant into a xpath expression, it must
be written as is, without enclosing it with a delimiter. Ex : true()
• Number. A number can contain any numeric value, like 2 or or 3.5 . The best way to get a Number value
from its representation is to use the function toNumber. Ex: toNumber('3.5'). You can also write Numbers
directly in your xpath expressions, without enclosing quotes. Ex: 3.5 .
• DateTime. A date is an instant, like '02/06/2017 13:25:17.645'. As for Dates, you can not write directly DateTime constants in a xpath expression. They can only be returned by other functions, like currentDateTime(),
or parseDateTime(representation, format)
• DateTimeFormat. A DateTimeFormat is a String that is used to represent the format of a DateTime. Besides
being a String, it must comply to the same requirements as DateFormat, that are fully described in http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html. Some examples are 'yyyy-MM-dd
hh:mm:ss', or 'ddMMyyhhmm'.
• LookupTable. A LookupTable parameter must refer to an existing LookupTable in your environment. You
167
Channels
can write a reference to a LookupTable directly in a formula by writing a string constant containing the name
(or the id) of the lookup table ('stocks', 'clients', ...). In the Easy Function Editor, you can just choose your table in a dropdown.
• LookupTableColumn. A LookupTableColumn parameter must refer to a column of a specific LookupTable.
You can write a reference to a LookupTableColumn directly in a formula by writing a string constant containing the name (or the index) of the column ('name', 'code', ...). In the Easy Function Editor, you can just
choose your column in a dropdown.
• Node. A single xml elements. This type will be used to represent a single xml node from your source document or from an additional xml source. To fill it, you should drag-and-drop a simple node to the field or to
use a xpath expression referring to a single Node.
• NodeList. A list of xml elements. This type will be used to represent a list of nodes in your source document.
To fill it, you should drag-and-drop a loop node to the field.
• Object. Object is a special value meaning that anything is accepted. You can use Strings, Integers, Dates, ...
To illustrate the importance of types, take a deeper look to the differences between the functions changeDateTimeFormat and formatDateTime. changeDateTimeFormat will take the input date as a String. But it doesn't
contain enough information to interpret it as a DateTime. Therefore, it also takes another parameter that is the
format of this representation.
changeDateTimeFormat('2022-01-31', 'yyyy-MM-dd', 'yyyyMMdd')
formatDateTime will take the input date by just taking one DateTime parameter.
formatDateTime(currentDateTime(), 'yyyyMMdd')
formatDateTime(parseDateTime('2022-01-31', 'yyyy-MM-dd'), 'yyyyMMdd')
If you just want to change the format of a date contained in one of your source fields, changeDateTimeFormat
looks to be exactly the ideal method. But passing by the DateTime objects will just be easier (and for many
cases the only way) if you need to make more complex calculations.
formatDateTime(addDays(currentDateTime(), 7), 'yyyyMMdd')
In any case, you have to realize that following calls would just be WRONG :
formatDateTime('2022-01-31', 'yyyyMMdd')
// formatDateTime expects a DateTime as first parameter, n
changeDateTimeFormat(currentDate(), 'yyyy-MM-dd', 'yyyyMMdd')
// changeDateTimeFormat expects a St
4.4.4.5. User-defined functions
Babelway offers many functions to make the calculations in your mappings. These functions should be enough
for most of your needs. Anyway, in some situations, you could want to define additional functions, to simplify
your mappings.
Specialize existing function to specific needs
The first reason why you could want to create additional functions is to specialize existing functions to your
context.
As an example, let's suppose that you must convert in your mapping many dates, and that the input format is always ddMMyyyy or dd/MM/yyyy, and the output format must always be yyyyMMdd. In Babelway, this can be
achieved easily by using the function changeDateTimeFormat.
changeDateTimeFormat([yourField], 'ddMMyyyy,dd/MM/yyyy', 'yyyyMMdd')
168
Channels
Anyway, having to type the input and output formats in every of these formulas can be tedious, and it would be
easier to be able to write
convertDate([yourField])
This can be achieved by defining a function that suits this specific need :
convertDate(x) = changeDateTimeFormat(x, 'ddMMyyyy,dd/MM/yyyy', 'yyyyMMdd')
This scenario of specializing a method can be used in many situations : accessing a lookup table, formatting
fields, ...
stock(x) = lookupTableValue('stocks', 'productId', 'stock', x)
pad(x) = padLeft(x, 20, ' ')
Simplify complex formulas
Another situation where user functions are useful is when you have to write very complex (or long) formulas.
Defining functions can simplify greatly the writing by allowing to factorize (and name) parts of the formulas.
In the following example, defining the intermediate function nextWeekDay has greatly improved the readability of the formula.
[DeliveryDate] = formatDateTime(nextWeekDay(nextWeekDay(currentDateTime())), 'yyyyMMdd')
nextWeekDay(day) = addDays($day, IF(formatDateTime($day, 'E')='Fri', 3, IF(formatDateTime($day, 'E')='
The improvement in readability will increase with the complexity of the formula you have to write.
Definition in the interface
You have the ability to create your function from the screen with search of functions, in the function library.
Figure 4.86. Defining user function (1)
When the link is clicked, you have access to a screen that will ask you for all the details of functions.
169
Channels
Figure 4.87. Defining user function (2)
All the concepts are the same as the one displayed for the already existing functions. See section about standard
functions for in-depth explanation of every field. The fields are :
1. The function name identifies the function. It is what you have to write before the opening parenthesis to call
this function.
2. The description describes what the function does, and what it is intended for. This description is not required
for user functions, but filling it will allow the interface to show you help when you use the function, as for
all the other functions.
3. The parameters section asks you for all the information about the parameters of the function.
a. The name of the parameter. It is just one word that should make you understand the parameter. It is also
with this name that you will be able to reference the parameter in the implementation of the function.
b. Type of the parameter.
c. Description of the parameter.
4. The result section asks you for the type of the result of the function (a), and a small description of this result
(b).
5. The formula is the formula that implements the function. In this formula, you can reference the function
parameters with the dollar sign ('$') followed by the name of the parameter.
Updating or deleting user functions
Starting again from the screen with list of functions, user functions have one more link to be able to edit them.
If you click on it, you will come again in the screen of the definition of the function, and you will be able to
change the function, or delete it.
170
Channels
Figure 4.88. Defining user function (2)
4.4.4.6. Sub-formulas
Sub-formulas are parts of formulas, that you can name and reuse later.
Sub-formulas are another way of simplify writing of very long formulas.
• When you work on this part of the formula, you only see this part (instead of the whole formula), and do not
have to identify this part again and again inside the whole formula.
• When you work on the main formula, it is much smaller and readable, as all complex parts have been factorized and are just replaced by a reference to the sub-formula.
Sub-formulas also allow you to share common part of long formulas across different formulas. If you need to
change this part, you will only have to change it once, and all using formulas will be automatically updated.
Example
As an example, let's imagine that you have to make some complex calculations to calculate a date and time,
then put the date in one field, and the time in another field.
[DeliveryDate] = formatDateTime(addDays(parseDateTime([yourDate], 'yyyyMMddhhmm'), if ([productType]==
[DeliveryTime] = formatDateTime(addDays(parseDateTime([yourDate], 'yyyyMMddhhmm'), if ([productType]==
By using a sub-formula, you could factorize the common part, and just let the outer formulas deal with selection of date or time in complex formula.
[DeliveryDate] = formatDateTime([DeliveryDateTime], 'dd/MM/yyyy')
[DeliveryTime] = formatDateTime([DeliveryDateTime]), 'hh:mm:ss')
[DeliveryDateTime] = addDays(parseDateTime([yourDate], 'yyyyMMddhhmm'), if ([productType]==1 || [produ
The new version is much more readable. If you still find it too complex, you could even go further, and separate the calculation of [DeliveryDateTime] in 2 parts.
[DeliveryDate] = formatDateTime([DeliveryDateTime], 'dd/MM/yyyy')
[DeliveryTime] = formatDateTime([DeliveryDateTime]), 'hh:mm:ss')
[DeliveryDateTime] = addDays(parseDateTime([yourDate], 'yyyyMMddhhmm'), [DaysNeededToDeliver])
[DaysNeededToDeliver] = if ([productType]==1 || [productType]==2) then 3 else 2
Execution
171
Channels
The result of the execution of the formulas will always be exactly the same if you factorize some parts in subformulas or not. Using sub-formulas is a way of writing your formula easier, but is always completely equivalent to the fully expanded formula.
To illustrate, let's take the following complete formula, whose result will be '0 1'
concat(next-counter-value('invoice'), ' ', next-counter-value('invoice'))
If you decide to write it using a sub-formula, the result will still be exactly the same : '0 1', because nextcounter-value will still be evaluated twice, exactly like in the previous formula.
concat([mySubFormula], ' ', [mySubFormula])
[mySubFormula] = next-counter-value('invoice')
Create a sub-formula
You can find sub-formulas at the top of the output tree.
To create a new sub-formula, just open the section, click on the '...' at the bottom of the section, and choose the
name that you want to give to the sub-formula.
Figure 4.89. Create sub-formula (1)
Figure 4.90. Create sub-formula (2)
Define a sub-formula
Sub-formulas can be defined the same way as any other output field. See sections about how to map nodes, or
how to edit formulas for more details.
172
Channels
Figure 4.91. Define a sub-formula
Use a sub-formula
Sub-formulas can be used the same way as any other input field. To make this possible, all sub-formulas are
also available at the top of the tree with your incoming message. You can really see them as "virtual input
fields", or "calculated input fields".
Figure 4.92. Use a sub-formula
In your formulas, sub-formulas references can be easily recognized : they are drawn like references to input
fields, but with a purple text.
Figure 4.93. Sub-formula reference in a formula
Global overview
When you have many nested sub-formulas, or user-functions, you can always have a global overview of your
formula by using the "Copy-paste version".
173
Channels
Figure 4.94. Sub-formula global view
Delete a sub-formula
To delete a sub-formula, use the action at the right of the formula bar.
The sub-formula will be deleted, and all references to this sub-formula will be inlined, leading to the situation
you would have had by writing all your formulas without using this sub-formula.
Figure 4.95. Delete sub-formula
4.4.4.7. Working with formulas - frequent scenarios
This section explains in details some frequent scenarios, when you work with formula. It gives a lot of examples, and also emphasizes some traps in which you should not fall.
Working with numbers
When you have to do some calculations, you must always keep in mind that all fields from your source and target documents are String, not Numbers. To be able to make calculations, xpath (like any programming language) needs Numbers. If your values are String, they have to be converted first to Numbers, even is this conversion can be implicit in some cases.
Babelway recommends that you always convert explicitly your input fields with the toNumber function. As an
example, the following call will perfectly work for all values.
toNumber([yourInputField])/100
We can show some results for some input values.
toNumber('100')*0.1 -> '10'
toNumber('30507')*0.1 -> '3050.7'
When you have to convert the results of your calculations (Numbers) to Strings (as expected by the target
174
Channels
field), it is safe to use implicit conversion. The system will automatically convert your number to its more natural representation (the one without useless zeros).
toNumber('100.00')*0.100)
->
'10'
You only need to make an explicit conversion if you want to use another representation. For example, the following call will ensure that target number is always displayed with 2 decimals.
formatNumber(toNumber('100')*0.1, '0.00')
->
'10.00'
If you do not follow there recommendations, here are some problems you could encounter :
• Using xpath implicit conversions or conversions via the xpath number() function could lead to numeric problems.
number('30507')*0.1
->
'3050.7000000000003'
• Display in scientific notation.
number('1234567890')*100
->
'1.23456789E11'
In some old mappings, you could see uses of a function named bif:cast. This function was added automatically
in some cases to try to correct incorrect numbers, having the problems as described in this section. You should
just check (or change) the formula so that it follows the recommendations of this section, and remove all the
calls to bif:cast.
Also, bif:cast has just no effect when its argument was not a Number, and it can be removed safely in all of
these situations.
Changing date format
If you receive in your input document dates/times in one format, and want to write them in the output document
in another format, it can be easily achieved using the changeDateTimeFormat function.
changeDateTimeFormat([yourInputField], [yourInputFormat], [yourOutputFormat])
All
details
about
the
date
formats
can
tp://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html.
be
found
on
ht-
Some examples :
changeDateTimeFormat('01/01/2015', 'dd/MM/yyyy', 'yyyyMMdd') -> '20150101'
changeDateTimeFormat('01/01/2015 12:34:56', 'dd/MM/yyyy hh:mm:ss', 'yyyyMMddhhmmss') -> '201501011234
changeDateTimeFormat('01/01/2015 12:34:56', 'dd/MM/yyyy hh:mm:ss', 'dd-MM-yyyy') -> '01-01-2015'
changeDateTimeFormat('30/02/2015', 'dd/MM/yyyy', 'dd-MM-yyyy') -> Error
This function can also be used to extract almost any information about a DateTime
changeDateTimeFormat('01/01/2015', 'dd/MM/yyyy', 'EEEE')
-> 'Thursday'
The list of all options usable in the format parameters
tp://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
can
be
found
on
ht-
This function will also do the job very easily if the input can be in different formats. You just have to enumer-
175
Channels
ate the possible formats, separated by a comma, in the input format.
changeDateTimeFormat('01/01/2015', 'dd/MM/yyyy,yyyyMMdd', 'yyyyMMdd') -> '20150101'
changeDateTimeFormat('20150101', 'dd/MM/yyyy,yyyyMMdd', 'yyyyMMdd') -> '20150101'
If you have many transformations to do, with always the same formats, it can help to define a more convenient
user function, to avoid having to write the formats at every call. This is explained in details in the sections
about user functions.
convertDate('01/01/2015')
-> '20150101'
Making Date/Time calculations
As for making calculations with numbers, you have to remember that fields from input and output documents
are Strings, and you will have to convert them to DateTime objects to be able to make your calculations.
You can get DateTime objects by creating them from their representation, via the parseDateTime function. You
can also receive DateTime object via some methods like currentDateTime
The conversion of a DateTime to its representation can be done via the formatDateTime function.
When you have DateTime values, there are many functions that allows to make some calculations (ex: addDays
)
formatDateTime(addDays(parseDateTime('2014-06-28', 'yyyy-MM-dd'), 4), 'yyyy-MM-dd') -> '2014-07-01'
Counter
The following techniques can be used if you need to implement a counter.
1. Xpath functions
You can use xpath formulas. Here are some examples :
• The function position() gives you the index of the iteration in the loops. It can be used to number every
row.
• Xpath functions like count(preceding-sibling::*) allow you to count position of an element within a list of
selected elements.
2. Metadata
You can define a metadata, and increment it at each call. It will return successfully values 0, 1, 2, 3, ...
You can use the function nextCounterValue(counterName) to do all the job for you. It will increment the
value of the metadata by 1, and return the new value.
3. Lookup table
The two previous techniques are simple, but will only work inside a given message. They will not work
across multiple messages. If you need to implement a persistent counter, you can work with a lookup table :
• Create a lookup table named 'counters' with two columns named 'name, value'.
• Add an entry (mycounter, 0).
176
Channels
• In your mapping, use the function incrementLookupTableValue('counters', 'name', 'value', 'mycounter'). It
will automatically increment the value, and return the new value.
Getting Information From An External HTTP Ressource
Babelway offers specialized transformation functions to call external web services. This is be useful to complement the message data and lookup tables with external source of information.
You can reach HTTP ressources using one of the following 3 functions: httpGet, httpPost or httpSoap. You will
get a string representation of the response. Moreover, these function can be associated with xmlToXmlNode or
jsonToXmlNode to get a usable tree representation of the response that can be directly used in other Xpath
functions.
upper-case(jsonToXmlNode(httpGet(concat('http://www.telize.com/geoip/', IP)))//*:country) -> BELGIUM
Figure 4.96. Calling HTTP ressource
Please note that Xpath expression selecting node in the resulting tree needs handle namespaces by adding a *:
in front of the xml nome of the node, like *:country in the example above. You need to do this even if the resulting tree is not part of a namespace, like in Json processing.
Storing Json or Xml in a lookup table
Lookup tables are very versatiles, they can hold up to 10 columns. Stored data can be simple but they can also
be structured in Json or in Xml. This feature, in combination with the power of Xpath offers you endless possibilities to store and retrieve the data you need.
The best practice is to use one column for each data you want to search on. That makes up to 9 indexes and the
last column to store the Xml or Json.
177
Channels
Figure 4.97. Xml in lookup table
You can use a the 'Create data import channel' button of your lookup table to help you importing your data.
Take a look at the xmlNodeToXml function. It will help you serializing a piece of your Xml before you store it
in the content column.
xmlNodeToXml(Country) -> <Country><Code>BE</Code><Population>11008000</Population><Area>30507</Area><N
Figure 4.98. Import Xml in lookup table
Once the Xml or the Json is retrieved from the lookup table, it can be parsed with one of the following functions xmlToXmlNode or jsonToXmlNode to get a usable tree representation directly usable in other Xpath
functions.
xmlToXmlNode(lookupTableValue('testXML', 'ip', 'xml', key))//*:country -> BELGIUM
178
Channels
Figure 4.99. Use Xml from lookup table
Please note that Xpath expression selecting node in the resulting tree needs handle namespaces by adding a *:
in front of the xml nome of the node, like *:country in the example above. You need to do this even if the resulting tree is not part of a namespace, like in Json processing.
4.4.4.8. Mapping loops
Loops from the input message must be mapped to the output if you want to map one of its enclosed fields. Otherwise the mapper cannot resolve the reference to the field since there can be more than one occurrence. The
"loop mappings" tell the mapper how to deal with this multiplicity of values.
You can make loop mappings to loop or value fields.
Loop to loop
In this case, every occurence of the source loop will by default lead to the creation of an occurence of the target
loop.
It is possible to change the source loop (sort, filter, ...) by just adding a formula on it. The most used functions
in this context are :
• sortLoop : This function will sort the source loop according to a given criteria. Example : sortLoop([Loop],
'Code') will sort the loop elements following the value of their field Code.
• sortLoopNumeric : This function will sort the source loop according to a given numeric criteria
• filterLoop : This function will filter the source loop, and only keep elements that match the given condition.
Example filterLoop([Loop], 'Area>30000') will only keep the elements for which the field Area contains a
value greater than 300000
You can find here a complete example, with sort and filter. The loop mapping only keeps countries with an
Area>300000, and sort the loop items according to the Code field. Example file and how it is mapped is also
shown.
179
Channels
Figure 4.100. Loop to loop mapping with filter and sort.
Loop to value
In this case, only one occurence of the loop will be used, as the target field doesn't allow repetition of value.
By default, the first occurence of the loop is used, but you can again change the default by using a formula. If
your formula still returns a list of elements, only the first one will be used.
Note that if the source loop is empty, an empty element will be created in the out message.
You can find here a complete example, that chooses the Country with the biggest Area value. The sortLoop call
will sort the list in decreasing order of Area. As this result still contains multiple entries, the first one will be
automatically selected.
180
Channels
Figure 4.101. Loop to node mapping with sort.
Identify loop mappings in the interface
Loop mappings are identified with an additional icon in the formula bar.
Figure 4.102. Identifying loop mappings
Loop instructions without this icon will not work !
You can initiate a loop mapping by dragging a (input) loop to a target node. Directly selecting target node, and
typing formula in the formula bar will only lead to creation of value mappings, not loop mappings.
Writing xpath expressions in loop functions
All the loop functions (filterLoop, sortLoop, ...) take as second parameter a String, that will be interpreted as an
xpath. This xpath will be evaluated for every element of the list, to calculate the value that will be used to sort
181
Channels
or filter.
The current node for the evaluation of this xpath will be the node of the list itself, and you can refer it with '.'.
As an example, an expression like 'Code' is completely equivalent to './Code', and refers to the xml element
Code, that is a direct child of the element on which the loop applies. On the previous examples, references like
'Code' or 'Area' in the xpath work, because these names are the names of the xml elements that are direct children of the element on which the loop applies (Country).
You must also be careful of always using the names of the fields to reference them in xpath, and not the labels.
Labels are just present in the interface to be clearer, but do not correspond to anything in xpath or xml. This
case happens more often when using csv messages, where all the fields will have the same name ('field'), even
if they can have different labels ('Name', 'Code', 'Area', ...). In this case, an xpath like 'Code' will not correspond
to anything, but you may for example use a reference like 'field[2]' .
As the second parameter (the xpath) is a String, and that Strings are delimited by single quotes, writing a xpath
expression that also uses single quotes can also be a little tedious: you have to double your single quotes. As an
example, the expression to filter Countries to only keep the one with Code='BE' will be
filterLoop([Loop], 'Code=''BE''')
Figure 4.103. Writing a filterLoop with a quote in the condition.
If you type your expression in the EasyFunctionEditor instead of the formula bar, you can type your expression
normally, and the editor will make the necessary quotings for you.
Figure 4.104. Writing same filterLoop using the EasyFunctionEditor.
4.4.4.9. Multi nodes mapping
182
Channels
Visual mapping is able to map two message definition tree structures, when they have the same fields. This is a
very valuable when dealing with complex and often similar XML messages like in soap messages, IDOC or
UBL...
To map the 2 structures, drag-and-drop your source structure to the target structure. As you can see in the
screenshot, structure nodes can only be mapped on other structure nodes, not on fields.
Figure 4.105. Structure mapping - drag-and-drop
Confirm the operation.
Figure 4.106. Structure mapping - confirmation
As you can see, all the corresponding nodes have been mapped.
Figure 4.107. Structure mapping - result
183
Channels
The multi-nodes mapping will work even if there are additional nodes in one of the 2 structures. These nodes
will be ignored.
But the multi-nodes mapping will ignore nodes that are present multiple times in the structure. Example, if your
node Country contains 2 different children named Code, no mapping will be made for fields Code, because it is
not clear for the system what is the correct association.
4.4.4.10. Using or changing metadata
In drag and drop transformation you can use metadata associated with the incoming message (such as fileName, receive date, ...). You can also store whatever info in a metadata for future use.
Using metadata
Accessing metadata can be done in your formulas with the function metadata. It just takes one argument, that is
the name of the metadata.
Figure 4.108. Using metadata
Define metadata
Defining your own metadata, and storing values into them can be done via the metadata section, on top of the
target tree.
To add a new metadata, click on last entry ('...'), and choose your name.
Once the metadata defined, you can just map value to it exactly as for other fields.
184
Channels
Figure 4.109. Using metadata
Working with object metadata
Babelway transformation supports working with object metadata. This is very useful to add a PDF or images
extracted using a Zip unwrapping extra processing in a XML as a Base64 string.
Figure 4.110. Object metadata as base64
4.4.4.11. Drag and Drop transformation properties
The following properties are available :
Mapping definition
This file is the definition of the visual mapping. You normally edit it via the mapping tree editor.
Xslt
This file is the xslt transformation that will be applied on the internal xml representation of your incoming
message to transform it into the outgoing message. It is generated from the mapping definition file.
You can only edit this file via the mapping definition file. If you want to write directly advanced xslt transformation, you have to use a xslt transformation instead of a visual transformation.
Xslt includes
Xslt files that will be included in the generated xslt. It allows you to define some custom xslt functions, and
185
Channels
use them in the mapping. The uploaded file must contain all of your functions. It must looks like :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:bfn="http://xmlns.babelway.com/2007/function"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:common="http://exslt.org/common"
xmlns:math="http://exslt.org/math"
xmlns:sets="http://exslt.org/sets"
xmlns:dates-and-times="http://exslt.org/dates-and-times"
xmlns:random="http://exslt.org/random"
xmlns:saxon="http://saxon.sf.net/"
>
<xsl:function name="bfn:xml-parse" >
<xsl:param name="xmlString"/>
<xsl:sequence select="saxon:parse($xmlString)"/>
</xsl:function>
</xsl:stylesheet>
Transformation mode
Allows you to use special transformation modes. the available modes are :
• Normal : transformation reads content and metadata of the incoming message, and its result will affect
content and metadata of the outgoing message.
• Metadata only for outgoing message : only the metadata of the outgoing message will be updated. The
content of the outgoing message wil be the same is the input. This mode can be used in special situations
where the transformation must only generate some additional metadata.
• Metadata only for incoming message : only the metadata of the incoming message will be used, not its
content. This mode can be used in special situations where the transformation only operated on the
metadata of the incoming message. A dummy message in will be used instead of the incoming content.
• Metadata only : the transformation only operates on the metadata of the incoming message, and can only
update metadata of the outgoing message. Content will not be updated by the transform.
4.4.5. Xslt Transformation
Xslt transformation test editor enables to define transformation rules and implement transformation functions
directly in Xslt language.
When specifying transformation for the first time or when changing transformation type, click on Open catalogue command and choose an Xslt transformation from catalogue. Please refer to The Catalogue chapter for
more informations about catalogue use and commands.
If you create a copy from a Babelway template you must name this copy before accessing the text editor screen.
Xslt mapping and transformation rules can be entered directly using integrated Xslt editor as illustrated hereunder.
186
Channels
Figure 4.111. Xslt transformation editor
Once all your mapping and transformations are ready and additional filter, if and/or format entered, do not forget to save this transformation with Save button.
The following (advanced) properties exist for xslt transforms.
Xslt
the xslt of the transform. It is the same xslt that can be used via the graphical editor/
Transformation mode
Allows you to use special transformation modes. the available modes are :
• Normal : transformation reads content and metadata of the incoming message, and its result will affect
content and metadata of the outgoing message.
• Metadata only for outgoing message : only the metadata of the outgoing message will be updated. The
content of the outgoing message wil be the same is the input. This mode can be used in special situations
where the transformation must only generate some additional metadata.
• Metadata only for incoming message : only the metadata of the incoming message will be used, not its
content. This mode can be used in special situations where the transformation only operated on the
metadata of the incoming message. A dummy message in will be used instead of the incoming content.
• Metadata only : the transformation only operates on the metadata of the incoming message, and can only
update metadata of the outgoing message. Content will not be updated by the transform.
4.4.6. No Transformation
The No transformation option is used when Babelway interface is used to transfer an unchanged message from
one gateway to another.
If you are only transfering messages that do not require transformation from one gateway to another one, for
example from a mail server to an FTP serve, you should use the "No transformation" transformation.
When specifying this transformation for the first time or when changing transformation type, click on Open
catalogue command and choose an No transformation transformation from catalogue. Please refer to Catalogue chapter for more informations about catalogue use and commands.
Note
187
Channels
If message in and out formats are not the same, using this no transformation setting may return unexpected results or empty out message.
Usually, this setting is used in combination with in and out Not Defined Message Formats in a channel
that simply transfers an unchanged and unprocessed message from one gateway to another different
one.
4.5. Notifications
This section contains all the stuff needed to manage your notifications. A simplified edition of the notifications
is directly available in the channels overview, but you need to come to this section to have access to all functionnalities.
Message notifications allows you to be informed by email when a message is processed by the Babelway platform. You can choose to be notified upon :
• Success: You are notified when message processing is fully completed, and is successful (when message
status is changed to Success).
• Failure: You are notified when the processing of a message has failed (when message status is changed to Error).
• File available: You are notified when the output message is available. For client gateways, where we have to
push the message to a remote server, the notification condition is the same as the Success condition. For
server gateways, when we have to make the file available on a Babelway server, where you will be able to
download it, the "File available" notification will be sent when the file is available for download on Babelway server (allowing you to know that you have to come and download it), while the "Success" notification
will only be sent when you have successfully received the file (after the download).
A special notification, named Alert notification also allows you to be informed by email when an alert is generated by the Babelway platform. This notification can not be deleted.
You can configure notifications in details : recipients in case of error, recipients in case of success, texts, ...
As for all other elements, notifications can be managed centrally, and reused in many channels.
4.5.1. Notifications list
The List of Notifications screen shows you all the notifications defined in your environment, even if they are
not used in any channel. From here, you can easily edit them, or create new ones.
This screen is accessible by clicking on the menu Channels, then the sub-menu Notifications
188
Channels
Figure 4.112. Notifications list screen
The list can contain the following columns:
Name
A name that identifies the notification.
Description
A free description for the notification.
Success Recipients
A comma-separated list of emails to which a notification will be sent when a message has been successfully
processed.
Failure Recipients
A comma-separated list of emails to which a notification will be sent every time the processing of a message fails.
File available Recipients
A comma-separated list of emails to which a notification will be sent when messageOut is available. See
notifications main section for precise conditions when each notification is sent.
Id
A technical identifier for the notification.
Created on
The date and time when the channel was created.
Last updated on
The date and time of the last modification that affected the channel.
For more information about the behavior of the grid, and how to make searches, see the grid section of the help.
You can click on a line to view the details of the associated notification, or edit it. See notification details.
The Create notification action button allows you to create a new notification.
The Clean notifications action button allows you to very easily delete all the notifications that are not used. The
interface will just show you the list of all notifications that are deletable (this mean not used in any channel).
You'll just have to tick the ones that you want to be deleted, and confirm the operation.
4.5.2. Notification detail
This page shows all the details about a notification, and gives access to all operations that can be made in notifications.
This page can be accessed from the notifications list, the Notifications tab of the channels detail page, or by following any link that refers to a notification.
The page contains the following tabs:
General
189
Channels
The general tab contains the signaletic information of the notification, and offers actions that act on the whole
notification.
Name
A name that you can set and/or modify to easily retrieve and manage your element.
Description
A free text field that you can set and/or modify used in addition to element name to help you identify your
element usage and/or function.
Id
A unique identifier automatically set by Babelway platform.
Created On
Date and time of element creation.
Last Updated On
Date and time of last element configuration update.
The Save action button allows you to save the changes that you have made in this tab (name and description).
The Delete action button allows you to delete the notification, but it is only accessible if the notification is not
used in any channel.
Figure 4.113. Notification detail - tab General
Recipients
This tab allows you to configure to who the notification emails will be sent.
Target users
This table allows you to choose who will receive the notification, amongst all the users that can access the
environment.
Additional emails
This table allows you to add other email addresses, to which notifications will also be sent.
For email addresses of your users, we recommend that you select them in "Target users", and not add them
here. The advantage of placing them in "Target users" is that their email will be automatically updated
190
Channels
when you change the signaletic of the user in the admin section, or the user will be automatically removed
from the notification if you remove the access to your environment to this user.
To add an email to this list, just add the email in the input field in the last line of the table, and save. Emails
are automatically removed if you untick all checkboxes in a line.
Target gateways
This table allows you to choose what Internal gateway In will receive in the notification, amonst all the internal gateway is defined in the environment.
Note that selecting a inactive gateway (not deployed in production) will prevent the environment to deploy.
Figure 4.114. Notification detail - tab Recipients
Email
This tab allows you to configure the content of notification emails, for every type of notification. See notifications main section for precise conditions when each notification sent.
Sender
The email address 'from' of all the notification emails.
Success subject
The subject of notification emails, for "Success" notifications.
Success body
The body of notification emails,for "Success" notifications.
Failure subject
The subject of notification emails, for "Failure" notifications.
Failure body
The body of notification emails, for "Failure" notifications.
File available subject
191
Channels
The subject of notification emails, for "File available" notifications.
File available body
The body of notification emails,for "File available" notifications.
These subject and body fields are free text fields that you can fill in as you want. In addition you can use
Metadata to customize your messages adding dynamic information such as message name, account environment and channel identification, time and type of error...
Figure 4.115. Notification detail - tab Email
Related items
This tab contains quick links to many other elements related to this gateway.
Using channels
192
Channels
All the channels that use this element.
Connected gateways
List of gateways to which this notification sends messages.
Figure 4.116. Notification detail - tab Related items
4.6. Partners
The Partners are the entities that communicate via Babelway.
For example, when Babelway is used to tranfer an invoice from Coca-Cola to Colruyt, the 2 partners involved
in the communication are Coca-Cola and Colruyt. Coca-Cola is the sender, or Partner IN. Colruyt is the receiver, or Partner OUT.
Babelway allows you to :
• Define and manage your partners, including additional infos like a description, contact information, address,
... and every other information (specific to you) that you want to store with your partners.
• Assign automatically partners to the messages processed in your environment.
• Extract partner infos directly from the messages processed in your environment.
• Make searchs, or get statistics based on your partner (ex: give me all the invoices sent to Colruyt).
• Be compliant to GS1.
Partners and gateways are different concepts. The Partners is really the entity involved in the communication
(typically a company), while Gateways represent a technical way of reaching this partner (eg "send an email to
address [email protected]", or "Place files on ftp server of mypartner.com").
You can have multiple gateways to connect to the same partner (ex: invoices must be sent by email, while orders must be sent via ftp).
A simple gateway can also be used to communicate with multiple partners. For example, I could setup an Email
gateway IN [email protected], that all of my clients are allowed to use to send me an order. In this case,
the sender (partner IN) will just be written in the order.
4.6.1. Defining partners manually
To define your partners, the easiest way is to go to the Partners section. As for all sections, you will first come
to a main screen with the list of all your partners.
193
Channels
Figure 4.117. Partners section
The action button Create Partner, at the bottom of the list allows you to define new partners. You just have to
fill the different information. As for all other objectives, you can also use the Reuse and save time zone, at the
right of the screen, to easily import partners already defined in the Babelway catalogue. See section Reuse and
save time section for more details.
Figure 4.118. Partner creation
The identifiers that you assign to this partner are quite important, as they will be used to identify the partners of
your messages. For example, when an order will be processed, the system will see that the sender of the order is
the company with TVA BE XXX. It will deduce your partner (and make the link) by finding which partner you
have assigned this TVA number to. For this reason, you can not have two different partners with the same identifier. See section Assigning partners to messages for more details.
It is up to you to organize your partners as you want. The best way is to make them really like you think, en194
Channels
coding how your relationship with your clients happens. Some people may for example want to have two different partners for "Carrefour Belgium" and for "Carrefour France", while another is not interested by the distinction and just wants a single partner "Carrefour". A third one could prefer different partners for every supermarket ("Carrefour Wavre", "Carrefour Bruxelles", ...). You can choose the solution that best fits your needs.
To do so, you just have to list all the ids (TVA, GLN, ...) of all the companies that you want to group into this
partner.
All the other fields are quite informative, and you can use them freely to store and retrieve your main information about the partner.
If you want to store other data for your partners, you can add your own fields in the Environment settings.
These custom fields wil be available in the edition of the partners, or in the list, as for the standrad fields.
Figure 4.119. Edition of partner with user fields.
Figure 4.120. List of partners with user fields.
195
Channels
4.6.2. Assigning partners to messages
Assigning partners to the messages automatically is interesting, because it will allow you to view the directly
partners involved in a message, make search egs.("give me all messages exchanged with partner X") or make
stats by partners, ... See section Using partners for more details.
You can associate two partners with messages:
• The Partner IN. It is the entity from which the message comes, the sender of the message.
• The Partner OUT. It is the entity to which the message is adressed, the recipient of the message.
Figure 4.121. Partners IN and OUT in list of messages
Assigning partners via gateways
The easiest way to assign partners to messages is to tell the system "All the messages that are processed by this
gateway come from partner X", or "All the messages that are processed by this gateway go to partner Y".
This is the easiest way, when a specific gateway is only used to communicate with ONE partner.
To make this in the interface, you have to go to the GatewayDetail screen, in the General tab, and just choose
your partner. You have to define your partners first, so that you can choose it from the dropdown menu.
Figure 4.122. Assigning partners via gateways
196
Channels
Assigning partners via MessageDefinitions
The previous case was very easy, but is not possible when your gateway is used to communicate to multiple
partners. For example, if you setup an email Gateway IN to receive orders from all of your clients, you can not
associate this gateway to just one partner.
In this case, the only way to known the sender of the order is to open the order, and read the sender in it.
To do this in the interface, you have to go to the definition of the structure of the MessageDefinition, select the
fields that contains the ids of the partners (VAT, GLN, ...), and set this info in the "Semantic field" zone.
Figure 4.123. Assigning partners via MessageDefinitions
To identify partners, you just need to designate one field with one id for the partner IN, and one field with one
id for the partner OUT. Anyway, the interface also allows you to flag other fields to tell the system what they
contain, like the name, or the address of the partners IN and OUT. This info are not needed to identify partners
(ids are enough), but it can be interesting to fill them, as they can then be used to create your partners automatically from the data contained in your messages. See section Create your partners from messages for more details.
197
Channels
Figure 4.124. Designating other fields in MessageDefinition
Note
As for all other elements of the application, the changes will only apply after deployment of your environment. Changes in partners (add, delete, change of ids, ...) also need to be deployed to apply to production messages.
Conflicts during identification
There are four steps of the processing of the message where partners can be identified: gatewayIn step (for partner IN), messageDefinitionIn step (IN and OUT), messageDefinitionOut step (IN and OUT) and gatewayOut
step (OUT).
If you fill the partner info in just one of these steps, it will be enough for the system to extract the information.
Filling the information in many of these steps should not cause any problem, as the extracted info should be the
same as each step. For example, there is no reason (apart from wrong configuration), when ids of the sender
would be different in the source format of the message than in the output format of the message.
Anyway, if it should happen, the message will not be set in error, and the first identified partner will be assigned to your message. A warning will also be added to the execution log of the message.
Figure 4.125. Message processing log - partner identification conflict
4.6.3. Creating your partners from messages
It is also possible to automatically analyse a set of messages to extract/create your selected partners.
The procedure is the following:
• Verify that you have told the system which fields of your messages contains the partner information.
• Select the messages that you want to analyze, and click on Extract partners from these messages
198
Channels
Figure 4.126. Extract partners from messages - messages selection
• Confirm
Figure 4.127. Extract partners from messages - confirmation
• The system will extract all possible partners, and show you found informations. Select the partners you want
to create, and click on Create selected partners
Figure 4.128. Extract partners from messages - select partners to create
Figure 4.129. Extract partners from messages - Confirmation of creation
199
Channels
4.6.4. Using partners
Partner information can be used in many places of the application
View or search in your messages
In the grid of your messages, you can directly view the identified partners. You can also search or sort on these
fields.
Figure 4.130. Partners IN and OUT in list of messages
The information is also available in the screen with the detail of a message.
200
Channels
Figure 4.131. Partners IN and OUT in MessageDetail screen
Statistics
You will soon get access to the statistics by partner IN or partner OUT (now only by channel, gateway IN or
gateway OUT).
Related items
Related items allow you to navigate very quickly through the application
201
Channels
Figure 4.132. Related items of partner
In the processing of messages
Coming soon. The partners infos are accessible via metadata. You can access and use them.
It is very useful to use in routing, to select your channels based on the sender or the receiver.
4.6.5. Be compliant to GS1.
Babelway offers all the tools needed to be compliant with GS1.
If you need this, contact our support team to activate the option in your environment. You will have access to a
new partner tab GS1, with all the info required by GS1. You will also have access to the generation of all reports asked by GS1.
202
Channels
Figure 4.133. Partners - GS1 tab
4.6.6. Automatic Population of your Partners List
The import partners page allows you to import all your partners from a CSV file.
Figure 4.134. Importing Partners From CSV - General
203
Channels
CSV File
The CSV file contains the list of partners you wish to import and is formatted using UTF8 (without BOM).
The first line must contain the column headers for the values you wish to import. The file must only contain
existing columns and may not include system columns such as "Environment", "Creation date", "ID"... Below is a working CSV sample:
Note
"PartnerIdentifiers";"Name";"Description"
"OTHER:123456";"Julien Inc.";"Supplies"
"OTHER:654987";"Bertrand & Co";"Mergers and Acquisitions"
"OTHER:123478";"Mathieu Square";"Music Duet"
All the other lines in the file represent a new partner. Trying to modify existing partners will trigger an import error.
Values for most columns can be written out in plain text. The following types require a specific format for
babelway to interpret them properly:
• DateTime: Accepted formats are "dd/MM/yyyy HH:mm:ss" and "yyyyMMddHHmmss" or your preferred user format (see environment preferences).
• Date: Dates are expected in the following format: "DD/MM/YYYY" or "YYYY-MM-DD"
• Partner Identifiers: These should be presented as a comma separated list of identifiers ("CODE:Value").
For example: "VAT:BE1234567890" or "VAT:BE1234567890,GLN:1234567890123" are valid partner
identifiers.
Delimiter Character
The delimiter character separates different values in a given line.
Quote Character
Text between your "Quote Character"s will be handled as a single value/entry.
4.7. Lookup tables
Lookup tables are tables of values, that can be accessed by transformations to replace incoming values by corresponding outgoing values (For example, when your B2B partner is using different items codes than your own
items codes).
Lookup tables are not bound to a specific channel, but are defined at the level of your environment, and can be
accessed by all transformations. It is even possible to make them available to other environments.
4.7.1. Lookup tables list
The List of lookup tables screen shows you all the lookup tables defined in your environment. From here, you
can easily edit them, or create new ones.
This screen is accessible by clicking on the menu Channels, then the sub-menu Lookup tables
204
Channels
Figure 4.135. List of lookup tables
The list can contain the following columns:
Name
A name that identifies the lookup table.
Description
A free description for the lookup table.
Columns
The names of the columns of the lookup table (separated by commas).
Shared access key
When the lookup table is shared, its sharing access key. See lookup table details for more information.
Id
A technical identifier of the lookup table, automatically set by Babelway platform.
Created on
The date and time when the lookup table was created.
Last updated on
The date and time of the last modification of the structure of the lookup table.
For more information about the behavior of the grid, and how to make searches, see the grid section of the help.
You can click on an entry to view the details of the associated lookup table, or edit it. See lookup table details.
The Create lookup table action button allows you to create a new lookup table.
4.7.2. Create a lookup table
This page explains how to create a new lookup table.
Just click on the Create lookup table action button at the bottom of the lookup tables list screen.
The creation screen will ask you to choose a name and description for the table, and a name for each column
that you want to use. Just leave empty the columns that you don't want to use.
205
Channels
Figure 4.136. Creation of lookup table
The lookup table structure can be updated later from the Structure tab in the lookup table detail screen.
The Duplicate an existing lookup table action button available at the upper section of the creation screen, can
be used to duplicate an existing lookup table from the current environment or from another environment you
have access to.
Figure 4.137. Duplicate a lookup table
4.7.3. Lookup table detail
206
Channels
This page shows you all the details about the lookup table. It can be accessed from the lookup tables list screen.
The page contains the following tabs.
General
This tab contains the signaletic information of the lookup table, and offers actions that act on the whole lookup
table.
Figure 4.138. Lookup table detail - tab General
Id
A unique identifier automatically set by Babelway platform.
Created On
Date and time of element creation.
Last Updated On
Date and time of last element configuration update.
Name
A name that you can set and/or modify to easily retrieve and manage your element.
Description
A free description for the lookup table.
Shared
207
Channels
If checked, the lookup table can be accessed from other environments. The other environment will just
need the sharing access key to be able to access it.
Sharing access key
The key used by Babelway' system to identify the lookup table.
Replication mode
Lookup table entries are synchronized among all messaging engine servers. In a normal situation (when all
servers are available and able to communicate), all entries are guaranteed to be correct, regardless where
messages are processed. The 'Replication mode' parameter controls the synchronization during stress periods, like the network disconnection of one of the servers. The 'loose' mode is fault tolerant, this means that
the messages processing will not be interrupted. However there is a very little chance of inaccuracy. When
the re-connections occurs, the system performs consistency checks and creates an alert if an entry was modified independently by 2 messaging engine servers. The 'strict' mode guarantees the exactness of the entries.
This mode implies that message processing will fail if the entry update cannot be replicated immediately to
all messaging engine servers. Use this for exact counters, like invoice number. This Default is 'loose'.
The Save action button allows you save the changes that you have made in this tab (name, description and sharing option).
The Delete table action button allows you to delete the lookup table, but is only accessible if the lookup table is
not used in any transformation.
The Duplicate table action button allows you to duplicate the lookup table, with an option let you choose
wheather to duplicate only table structure or table structure and table content.
Figure 4.139. Lookup table detail - duplicate table
Structure
This tab allows you to edit the columns of the lookup table.
208
Channels
Figure 4.140. Lookup table detail - tab Structure
Content
This tab allows you to view and edit content of the lookup table.
Figure 4.141. Lookup table detail - tab Content
• To update the value of a cell, just click on it. The cell will become editable, and you will be able to change
the value.
209
Channels
• To add new rows, click on Add an entry. A new row will be added at the bottom of the table. You can then
complete the values by updating each cell.
• To delete rows, click on Delete at the right of the line. The row will be removed from the table.
Don't forget to Save after applying the needed changes.
The Import data from CSV action button allows you to import the lookup table data directly from CSV file
without the need to create a channel to do that. See Automatic Population of Lookup table from CSV
The Create data import channel action button allows you to create a channel to import data in the lookup table
from an outside data source in an automatic way.
The Export data action button allows you to export existing lookup table data in CSV format.
Related items
This tab allows you to see in which transformations the lookup table is used.
Note that this list does not contain transformations within other environments using the table as a 'shared lookup table' or transformations using the table inside custom XPath or Xslt functions.
Figure 4.142. Lookup table detail - tab Related items
4.7.4. Use your lookup tables.
The lookup tables are almost exclusively used in transformations, to translate incoming values to outgoing values contained in the table.
This is explained in details in the help section about drag-and-drop transformations.
4.7.5. Automatic Population of Lookup table from CSV
Automatic Population of Lookup table allows you to import the lookup table data directly from a CSV file
without the need to create a channel to do so.
After creation of a lookup table you can import data from a CSV file by clicking on Import data from CSV action button under the Content tab as illustrated below:
210
Channels
Figure 4.143. Import action button under Content tab
This will automatically direct you to the the following page.
Figure 4.144. Lookup Tables Data Import from CSV page
You can upload your CSV file and select the parameters that match your CSV structure and then click on Import action button to complete the import process.
4.7.6. Automatic Population of Lookup table using Channel
Automatic Population of Lookup table allow you to import the lookup table data from outside data source.
After creation of a lookup table you can create a data import channel by clicking on Create a channel to import
data in the table as illustrated below:
211
Channels
Figure 4.145. Create a lookup table data import Channel
This will automatically create a data import channel in your account with predefined gateways and message
definitions
You can upload your CSV file directly from the created web gateway like the following example or you can
modify the channel to meet your requirements.
Figure 4.146. Lookup Tables Data Import Channel
212
Channels
In this example we have two fields (counterName and value)
And this the uploaded CSV file
1,1001
2,1002
3,1003
4,1004
4.8. Routing
Routing is used to choose which channel must process a message, when different channels share the same gateway in.
Routing is done at first step that is different for the channels. So if 2 channels use the same gateway in but different messages in, routing will take place at message in step, and define rules to choose which message in
must be chosen. If both channels use the same gateway in and the same message in but different transformations, routing will take place at transformation step, and choose wich transformation should be used.
As the routing only chooses the next element of the processing (message in, transformation or gateway out),
and not directly channels, it can happen that a channel has routing at multiple steps. Let's illustrate this by the
following example:
Figure 4.147. Channels that need routing
• The 3 channels share the same gateway in. A routing will be required.
• As the 3 channels also share the same message in, no routing is required at this step.
• When coming to transformation step, there are 2 potential transformations to be executed : a first routing is
required to choose between these 2 transformations.
• If second transformation is chosen ("Countries xml to csv-1""), a second routing wil be required when coming to gateway out step, because there are again two candidates ("Smtp out" and "Smtp out-1").
This example will be used for all screenshots of this chapter.
4.8.1. Routings list
The List of routings shows all the routings existing in your environment, one by line.
This screen is accessible by clicking on the menu Channels, then the sub-menu Routing
213
Channels
Figure 4.148. List of routings
The first five columns illustrate, in order, the five main steps of the processing of the messages : Gateway in,
Message in, Transformation, Message out and Gateway out. 3 cases are possible :
• The background is white. This means that this step precedes the step of the routing illustrated on the line, and
therefore that all channels involved in the routing share the same element for this step. The name of this element is displayed in the cell.
• The background is dark gray. This means that this is the step for which the routing must make decisions. The
number of choices is displayed in the cell. Click on the line to get more details about the involved elements
and the edit the rules for the decision. See routing detail.
• The background is light gray. This means that this step follows the step of the routing, and is therefore of no
interest for the routing. The cell is left empty.
The Channel columns just show you the names of all the channels that are involved in this routing. At the end
of the processing, the routing decisions will have chosen one of these channels.
You can click on a line to view the details of the routing, and edit all the its rules.
You can't directly create new routings. The routings will be automatically created when needed.
4.8.2. Routings detail
The detail of the routing allows you to edit all the rules to choose the next element to process.
Figure 4.149. Routing detail
The first part of the screen just summarizes when this routing will be used, by clearly showing which preceding
steps are shared by all the channels involved in this routing.
The second part of the screen displays all the rules. There is one line by possible candidate that can be chosen
by the routing. The columns of the table are:
214
Channels
Priority
Tells in which order the rules will be evaluated. The system first evaluated rules that have the lower priority. The evaluation of the rules is stopped as soon as the condition of a rule is satisfied, and the system
chooses the next element noticed in this rule.
Metadata
Tells which metadata will be used for testing the condition. For example, in the figure, the metadata
com_babelway_messaging_context_mail_subject has been selected. This means that the rule will be satisfied if the subject of the email used to receive the message matches the following expression. If you want
that your condition applies on the whole message, select com_babelway_messaging_context_message.
Please refer to Metadata chapter for a list and description of all available metadata.
Condition (regular expression)
A regular expression that the selected metadata must match to satisfy the routing rule. Please refer to Regular Expression in External References chapter in appendices for description and reference about regular expressions.
then choose...
The element that will be chosen as next element for the processing if the rule matches.
Channels
The channels that area still reachable after having chosen the rule. If you still get multiple channels, it
means that another routing will happen at a further step to decide between them.
As example, the rules illustrated in the figure before can be read :
• If the subject of the email is "Tutorial1", then choose the transformation "Countries xml to csv" (used in
Channel "Tutorial 1") as next step.
• If the subject of the email is "Tutorial2", then choose the transformation "Countries xml to csv-1" (leading to
Channel "Tutorial 2a" or "Tutorial 2b") as next step.
4.8.3. Edition of routings from channels section
It is also possible to edit the routing rules directly from the channel detail screen.
The edition is done exactly like in the routing detail screen. There are only a few differences, that will be explained here.
Figure 4.150. Edit routing in channel detail
215
Channels
The main difference is that this screen is channel-centric, while the routing detail screen is routing-centric.
• All the routings in which the channel is involved will be detailed.
• The rules that applies to the current channel will be emphasized. They have a blue background.
4.9. Test cases
Testing enables easy channel operation test and validation before channel deployment. A minimum of testing is
mandatory in order to validate a channel.
After a channel configuration, its operation should be tested. This is done by creating and running test cases,
that is feeding the channel with test input files and checking corresponding output results after processing.
During a test case running, message in, transformation and message out processes are executed and tested in
real conditions. Only both in and out gateway cannot be validated that way as they require external operations
not managed by Babelway interface.
Figure 4.151. Testing tab list of existing test cases
At opening, testing tab displays a list of test cases defined for the selected channel. An existing test cases can be
edited by clicking on its name in first column. A new test case can be created by clicking on Create Test Case
command. Both these operations open the Edit Test Case screen described hereunder.
In the same table, clicking on Run command in middle column will manually run selected test case and display
test results in Message Record screen described hereunder.
The boxes that are checked in the third column select test cases will be deleted by clicking on Delete Selected
command.
Edit Test Case
When you create a new test case or edit an existing one, following screen will be displayed:
216
Channels
Figure 4.152. Edit test case screen
Following parameters can be set according to your setup:
Id
A unique identifier automatically set by Babelway platform.
Name
A name that you can set and/or modify to easily retrieve and manage your element.
Success
Select one of following conditions for testing success:
if there is no error and it has been processed by this channel
Test is successful if no error occurred during processing, do the routing rules if routing is checked and look
at the end if the Message Record is in state "DONE" and that the Message Record's channel is the one
where the test case is configured.
if there is no error, the output equals the ExpectedMessageOut and it has been processed by this channel
Test is successful if no error occurred during processing, do the routing rules if routing is checked, check
that the channel of the message record is the one of the test case and checks if the output file is the same as
the file in the File Property "ExpectedMessageOut".
if an error occurs
Test is successful if an error occured during processing. This test is used to validate processing behavior in
specific cases and check that an error is properly returned in these cases.
217
Channels
if there is no error and it has not been processed by this channel
Test is successful if the status of the Message Record is set to DONE but also checks if the channel of the
Message Record is not the channel of the test case (meaning that the message did not generate any error
and it has been routed away from the channel of the test case). This allows you to test that the routing happens as expected.
ExpectedMessageOut
Upload message that will be compared to processed message during test.
MessageIn
Upload message that will be used as input for test.
Message Record
As a result of running a test, following message record screen is displayed. Click on More details command to
see all information.
Figure 4.153. Message record
From here you have access to all message files such as in and out messages in defined format as well as pro218
Channels
cessed in and out XML messages.
The Status field indicates if message processing was successful or not. Next to it, between brackets, the test result is added as Test Successful or Test failed.
Note
All existing tests will be run at channel deployment time. If at least one of them fails, deployment will
be aborted.
4.9.1. Test case detail
Note
Describe all the fields and actions of all tabs.
Channel
The channel used by this test case, acccess it following the link.
Name
A name that you can set and/or modify to easily retrieve and manage your element.
Description
A free text field that you can set and/or modify used in addition to element name to help you identify your
element usage and/or function.
4.10. Certificates
The keystore is the page where you can modify the keystore specific to your account.Each Babelway account
environment has its own keystore and is able to add or remove certificates without affecting other users.
A key is private information that is only known by your account environment and may not be shared with others.It holds the secret that only you can know to decrypt messages sent to you.
A certificate is public information that can be share with others and be known by anyone. It allows them to
verify that your signature could only have been generated with the key corresponding to the certificate.
Key/Certificate pairs can be self-signed but are usually generated by certificate authorities such as Thawte Consuting, Verisign Inc.,Comodo CA Limited….etc
You can Edit Keystore by clicking on "Keystore edit" on Certificates page
Each certificate entry in the table below can be downloaded in various formats, or revoked. These option are
available on the certificate's detail page, accessible by clicking on a table entry.
219
Channels
Figure 4.154. Manage Keystore Certificates
Certificates
This section lists all pair of key and certificates that are currently in you keystore. Those are typically used to
sign outgoing messages or decrypt incoming messages. In order to share the certificate with your partner, you
can download the certificate by clicking the certificate to access the details page, and using the Download link.
Note that the downloaded file will never include your private key and only contain your public certificate.
You can add new pair of key/certificate using a PKCS12 file under the Add new Certificate section.
Trusted certificates
This is the list of trusted certificates currently in your keystore. A trusted certificate corresponds to the public
certificate of one of your partners.
You can add a new trusted certificate either by using an https URL. In this case, the certificate linked to the
HTTPS page will be trusted. You can also add a new trusted certificate using the certificate file provided by
your partner.
In each case, you can select to trust the root of the given certificate. If you choose to do so, all certificates gen-
220
Channels
erated by the certificate authority will be trusted.
To read more about Https gateway See HttpClientOut Gateway
4.10.1. Certificate's Details
The certificate's details page regroups and displays all the useful informations about a certificate, and give access to several actions such as revoking the certificate, or downloading it.
Alias
An alias to easily identify the certificate.
Distinguished Name
A set of informations about the certificate, used to uniquely identify it.
Serial Number
Internal parameter used to classify certificates
Expiration Date
Date after which the certificate will no longer be valid.
Several actions are available, to help you easily manage every certificate in your keystore, and share them with
your partner or accross applications.
Download
Download the certificate in PKCS12 format.
Download PKCS7
Download the certificate in PKCS7 format.
Download SSH
Download the certificate's public key in pub format encoded as an ssh-rsa key.
Revoke
Definitely remove a certificate from your Babelway keystore
Related items
This tab contains quick links to many other elements related to this gateway.
Using channels
All the channels that use this element.
Using gateways
All the Gateways that use this element.
Connected Message Definition (through extra-processing)
List of message definition that have an extra-processing related to this certificate.
4.10.2. Trust new certificate
221
Channels
Note
Describe all the fields and actions of all tabs.
Alias
An alias that you can set to easily identify your certificate.
Certificate
Upload or give the location of the certificate when you trust.
Trust root certificate
Indicate if you want to trust certificates issued by the provider of the selected certificate.
4.10.3. Add a certificate
Note
Describe all the fields and actions of all tabs.
Alias
An alias that you can set to easily identify your certificate.
Pkcs12 file
Upload your Pkcs12 file.
Pkcs12 password
The password required to use your Pkcs12 file.
4.11. Extra processings
An extra processing is an additional operation that must be applied on all messages.
Some examples are : extract a message from a zip file, sign a message, reject a message if it is a duplicate, ...
The extra processings can take place before of after every of the 5 main operations that are followed by messages within Babelway plaform (gateway in, message in, transformation, message out and gateway out).
The extra processings of an element can be accessed via the tab "Extra processings" of the screen that details
the element.
222
Channels
Figure 4.155. Extra processings
To add an extra processing, just click on Add extra processing. It will open a popup like shown in the following
screenshot, where you can just click on the wanted extra processing to add it. Don't forget to save.
Figure 4.156. Extra processings
If you use multiple extra processings on the same element, they will be executed in a predefined order, that you
can not choose. The extra processings are always displayed in the order of execution (first displayed extra pro223
Channels
cessing if also the first one to be executed). For example, in the screenshot above, zip unwrapping will be executed before relacement based on regular expression.
4.11.1. Extra processings on gateway IN
Zip unwrapping
This extra-processing allows to extract multiple files from a zip, and to process each of those files separately.
The parameters are :
File name pattern
Pattern (regular expression) for the file name in the zip of the files that will be extracted.
Automatically close errors
This extra-processing allows to define criteria to automatically close an error that occurs during the Gateway IN
step.
The parameters are :
Error message patterns
The patterns that will be tested against the error message.
If the error message matches at least one of the patterns, the status of the message will automatically be set
to Error(closed).
Message identifier
This extra processing analyses the incoming message, and associates the following metadata to it:
universal_router_type
The type of document, like 'ORDERS', 'INVOIC', 'DESADV', ...
universal_router_format
The format of the message, like 'EDIFACT', 'X12', 'IDOC', ...
universal_router_version
The version of the message format. For example, for EDIFACT, version can be '96A', '01A', ...
universal_router_sender
The identification of the sender of the message
universal_router_receiver
The identification of the receiver of the message
universal_router_key
The intergration of the five previous fields, separated by '_'. The goal of this field is to simplify the writing
or routing rules, or of keys of messages, that want to use all of the above fields.
The metadata will typically be used by a following routing. As an example, suppose that you receive orders in
different formats with the same gateway. This extra processing can be used to identify the following formats:
224
Channels
EDIFACT, X12, IDOC (xml or flat file), RND, VDA, cXML. This information can then be used to route the
message to the correct message definition.
This extra processing doesn't take any parameter.
4.11.2. Extra processings on message definition IN
Save input file
Allows you to save your input file as a metadata, for future use as explained in the next steps.
The parameters are :
Metadata
The metadata in which you want to be saved in the input file.
Duplicate incoming message
Allows to duplicate the incoming message, and inject it into another channel.
The parameters are :
Step
When the incoming message must be duplicated in the process of the original message. If Duplicating the
message later the message will not be duplicated if the message fails some validation.
Target gateways
The gateways to which the duplicated message will be sent.
User Metadata Transfer Strategy
The strategy that will be used to transfer the user metadata to the new message created in the connected
gateways.
Zip unwrapping
Allows you to extract your input file from a zip. It also allows you to save other files of the zip to be reused, in
the next steps.
As an example, suppose that your channel is designed to process xml orders. But instead of directly receiving
the xml order from your partner, you receive a zip file, that contains the expected file order.xml, and also a file
order.pdf. You can just extract your order.xml file by using this extra processing with the pattern 'order.xml'. If
you need it for later use, you can also save the pdf file for future use (reuse in your transformation, reinclude it
in archive in message out, ...)
The parameters are :
File name pattern
Pattern (regular expression) for the file name in the zip of the file that will become your input message.
First match is used.
Other files to save
Allows you to save other files of the zip for future use. For every file that you want to save, you have to
225
Channels
specify the pattern of the file name in the zip , and the name of the metadata in which you want to save the
content. If one pattern matches multiple files, it is possible to save them all if you guarantee to generate a
different metadata name for each. This can be achieved by using the capturing groups of the regex in the
metadata names. Ex: if your pattern is (.*\.csv) and your metadata name is attachment-$1, processing with
files file1.csv and file2.csv will result in two metadata as follows attachment-file1.csv and attachmentfile2.csv .
Pdf unwrapping
Allows you to extract your input file from a pdf. It also allows you to save other files of the pdf to be reused in
the next steps.
As an example, suppose that your channel is designed to process xml orders. But instead of directly receiving
the xml order from your partner, you receive a pdf file, with your xml order included as a pdf attachment. You
can extract your order.xml file by using this extra processing with the pattern 'order.xml'.
The parameters are :
File name pattern
Pattern (regular expression) for the file name in the pdf of the file that will become your input message.
First match is used.
Password
Password, if any, to open the pdf file.
Other files to save
Allows you to save other files of the pdf for future use. For every file that you want to save, you have to
specify the pattern of the name of the pdf attachment(first match), and the name of the metadata in which
you want to save the content.
S/MIME unwrapping
Allows you to extract your input file from a S/MIME envelop. It also allows you to save other files of the pdf to
be reused, in the next steps.
The parameters are :
File name pattern
Pattern (regular expression) for the file name in the S/MIME of the file that will become your input message. First match is used.
Other files to save
Allows you to save other attachments of the S/MIME envelop for future use. For every file that you want to
save, you have to specify the pattern of the name of the pdf attachment (first match), and the name of the
metadata in which you want to save the content.
Signature key alias
The alias of the key (in the keystore of your environment) that will be used to check the signature.
Verify signature
Enables or disables the check of the signature.
PGP unwrapping
226
Channels
Allows to decrypt a file encrypted using PGP.
The parameters are :
PGP Private Key
Private key to be used to decrypt the message.
Password
Password to access the private key.
Validation of Xml Signature.
Allows you to validate the Xml Signature.
The parameters are :
Signature verification certificate
Select certificate for data or go to certificates store.
Replacement based on regular-expressions.
Allows you to make a global search and apply regular-expression replacements on your input file, before it is
analyzed.
You can define more than one pair of regular-expressions to find & replace pattern.
The parameters are :
Replacements
List of regular expressions and replacement patterns that will be applied on your document for every match.
Remove ASCII Control characters (except line feed)
Allows you to remove ASCII Control characters from input file.
Characters removed are : [x00-x09]|[x0B-x0C]|[x0E-x0F]|[x10-x1F]|x7F
Message identifier
This extra processing analyses the incoming message, and associates the following metadatas to it:
universal_router_type
The type of document, like 'ORDERS', 'INVOIC', 'DESADV', ...
universal_router_format
The format of the message, like 'EDIFACT', 'X12', 'IDOC', ...
universal_router_version
The version of the message format. For example, for EDIFACT, version can be '96A', '01A', ...
universal_router_sender
The identification of the sender of the message
227
Channels
universal_router_receiver
The identification of the receiver of the message
universal_router_key
The sequence of the five previous fields, separated by '_'. The goal of this field is to simplify the writing or
routing rules, or of keys of messages, that want to use all of the above fields.
The metadata will typically be used by a following routing. As an example, suppose you receive orders in different formats with the same gateway. This extra processing can be used to identify the following formats: EDIFACT, X12, IDOC (xml or flat file), RND, VDA, cXML. This information can then be used to route the message to the correct message definition.
This extra processing doesn't take any parameter.
Trustweaver processing
Calls upon Trustweaver to process your message. See http://www.trustweaver.com for more informations.
The parameters are :
Trustweaver environment
The Trustweaver environment that is targeted by the process.
Trustweaver country
The country for which the Trustweaver process will be done.
Validation Outcome code pattern
A pattern designating the validation outcomes that are accepted.
Trustweaver client key alias
The alias of the key (in the keystore of your environment) that will be used to authenticate to Trustweaver.
Contact email address
The email address that will be provided to TrustWeaver as the point of contact for all registered branches.
Xslt transformer
Applies a xslt to correct your message. It is applied on the internal xml representation of the message (after the
message have been analysed and converted).
Be aware that the message resulting from your transformation must conform with the message definition (tree
structure).
The parameters are :
Xslt
The transformation that must be applied.
Automatically close errors
This extra-processing allows to define criteria to automatically close an error that occurs during the message
definition IN step.
228
Channels
The parameters are :
Error message patterns
The patterns that will be tested against the error message.
If the error message matches at least one of the patterns, the status of the message will automatically be set
to Error(closed).
4.11.3. Extra processings on Transformation
Automatically retry transformation on error
Automatically retry transformation on error
This extra-processing allows to define criteria to automatically retry a transformation if an error occured.
The parameters are :
Error message patterns
The patterns that will be tested against the error message.
Retry strategy
Allows you to determine the time interval that needs to be used for the retries.
Email Recipients
Address to which an email will be sent if the a retry is scheduled. You can add a comma separated list of
recipients or a metadata.
Email Subject
Email message subject. You can use metadata.
Email body type
[text/plain , text/html] default is text/plain.
Email body
Email message Body. You can use metadata.
This extra-processing allows to define criteria to automatically close an error that occurs during the Transformation step.
The parameters are :
Error message patterns
The patterns that will be tested against the error message.
If the error message matches at least one of the patterns, the status of the message will automatically be set
to Error(closed).
4.11.4. Extra processings on message definition OUT
Xslt transformer
229
Channels
Applies a xslt to correct your message. It is applied on the internal xml representation of the message (before
the message is converted to the output format).
Be aware that the output of your transformation must be compatible with the internal representation of Babelway for this message format.
The parameters are :
Xslt
The transformation that must be applied.
Line delimiter converter
Converts all line delimiters to the line delimiter that you choose. The original file can have its line delimiters in
any style (Unix, Windows, Mac).
The parameters are:
Line delimiter
The line delimiter that you want to be used in your output file.
Xml Signer
Signs an Xml.
The parameters are:
Key alias
Alias of the key (in your keystore) that will be used to sign the Xml.
Digest method
The digest method that will be used during the signature of the Xml.
Signature Method
The signature method that will to be used to sign the Xml.
Signature transformation
The transformation that will be used to sign the Xml.
You have the choice between an inclusive Canonicalization or an enveloped signature.
Xpath to the target node's URI
The Xpath that will allow the extraction of the URI of the root node of the subtree that needs to be signed.
If not defined, the whole xml document will be signed.
xmlSigner
Pdf wrapping
Allows you to create a pdf that will contain your output file in attachment.
The parameters are:
230
Channels
Pdf from template
The template that will be used to create and container the pdf. You have here 4 possibilities :
• You directly provide a pdf file. This pdf file will be used as it is, and the extra processing will just add
the requested pdf attachments.
• You provide an xhtml template for the pdf. This template will be converted into a pdf. This option can be
useful if you want to use some metadata in your pdf template (current date, ...).
• In the parameter 'Pdf from metadata', You provide the name of a metadata containing the pdf you want to
use. This metadata must be have already been populated earlier in the process of the message.
• You don't provide any file. A default (empty) pdf template will be used. This option can for example be
useful if the pdfWrapper is just used to benefit from the pdf digitial signature functionnality.
Pdf from metadata
The name of the metadata containing the pdf. This metadata must be have been already populated earlier in
the process of the message, for instance by extracting it from a zip file.
File name
The name that your output file will have in the pdf.
File description
The description that your output file will have in the pdf.
Attachments
Other files that must be added to the pdf. For each individual file, you will have to stae the name that the
file will have in the pdf, and the name of the metadata that contains the content.
Pdf resizer
Allows you to resize an output pdf.
The parameters are:
Page size
The page size requested for the new pdf (A4, A5, LETTER, ...). The default is A4.
Offset X
Specifies the zone in the input pdf that will be copied to the output pdf. The default is 0.
Offset Y
Specifies the zone in the input pdf that will be copied to the output pdf. The default is 0.
Position X
Specifies the where to zone copied from the input pdf will be placed on the page in the output pdf.
Position Y
Specifies the where to zone copied from the input pdf will be placed on the page in the output pdf.
Scale X
Specifies the zoom ratio that must be applied when copying requested zones from the input to the output
pdf. The default is 1.
231
Channels
Scale Y
Specifies the zoom ratio that must be applied when copying requested zones from the input to the output
pdf. The default is 1.
Pdf Letterhead
Allows you to set a letterhead to your output pdf file.
The parameters are:
Letterhead pdf
The pdf file that contains the letterhead.
Page order
When the letterhead pdf contains multiple pages, it tells you which page of the letterhead must be used for
every page of the output pdf file. The possible values are described hereafter. For every value, we also
show as an example the result of the association for a output pdf file that would contain 5 pages (1, 2, 3, 4
and 5) and a letterhead pdf that would contain 2 pages (A, B).
• Match forward. Repeat last page. starting from the first page, all pages of the two pdfs are used together.
If output pdf has more pages that the letterhead model, the last page of the letterhead is used for all the
subsequent pages. In our example, it would give the following result : 1:A, 2:B, 3:B, 4:B, 5:B.
• Match backward. Repeat first page. starting from the last page, all pages of the two pdfs are used together. If output pdf has more pages that the letterhead model, the first page of the letterhead is used for all
the previous pages. In our example, it would give the following result : 1:A, 2:A, 3:A, 4:A, 5:B.
• Repeat all pages. all pages of the letterhead are repeated till the end of the output pdf. In our example, the
following result would be: 1:A, 2:B, 3:A, 4:B, 5:A.
Pdf Appendix
Allows you to add extra pages to your output pdf file.
The parameters are:
Pdf to add
The pdf file that wil be appended at the end of the existing pdf.
Add attachments to a pdf
Allows you to add attachments to your output pdf file.
The parameters are:
Files to add
The attachments that must be added to the pdf. For every attachment, you have to state the name that the
file will have in the pdf, and the name of the metadata that contains the content.
PdfA converter
Transforms a pdf to make it PDFA1B compliant.
232
Channels
Pdf signer
Allows you to sign your output pdf file.
The parameters are:
Key alias
Alias of the key (in your keystore) that will be used to sign the pdf .
Reason
Text that will be associated to the signature.
Show signature ?
Allows you to add an image to your pdf to show the signature.
Signature lower left X
Position (lower left X) where the signature image will be displayed. Only if you choose to show signature.
Signature lower left Y
Position (lower left Y) where the signature image will be displayed. Only if you choose to show signature.
Signature upper right X
Position (upper right X) where the signature image will be displayed. Only if you choose to show signature.
Signature upper right Y
Position (upper right Y) where the signature image will be displayed. Only if you choose to show signature.
Signature image
Image used to show the signature. Only if you choose to show signature.
Timestamp method
Allows you to timestamp your output pdf.
Timestamp authority url
If you choose the external as timestamp method, the url to be called for the timestamping.
Timestamp authority login
If you choose the external as timestamp method, the optional login to use for the call.
Timestamp authority password
If you choose the external as timestamp method, the optional password to use for the call.
Zip wrapping
Allows you to wrap your output file from a zip. It also allows you to add other files in the zip.
The parameters are:
File name
The name that your output file will have in the zip.
Other files
Other files that must be added to the zip. Metadata = Pattern to match the metadata containing the file to attach. Filename = name of the file in the zip. If one pattern matches multiple files, it is possible to put them
233
Channels
all, if you guarantee to generate a different filename name for each one. This can be achieved by using the
capturing groups of the regex in the filename. Ex: if your metadata pattern is attachment-(.*) and your filename is \1, processing with two metadata attachment-file1.csv and attachment-file2.csv will result in files,
file1.csv and file2.csv.
PGP wrapping
Allows you to encrypt a file using PGP.
The parameters are:
PGP public Key
Public key to be used to encrypt the message.
Output in ascii
If checked, the PGP output follows the Ascii armored format, if not the output is in binary.
S/MIME wrapping
Allows you to wrap your output message in a S/MIME envelop.
The parameters are:
File name
The name that your output file will have in the S/MIME envelop.
Content type
The content type that will be associated to your output file in the S/MIME envelop.
Signature key alias
The alias of the key (in the keystore of your environment) that will be used to generate the signature.
Partner key alias
The alias (in the keystore of your environment) of the certificate of your partner. It will be used to crypt the
S/MIME message. If left empty, the message will not be crypted.
Replacement based on regular-expressions.
Allows you to make a global search and apply regular-expression replacements on your output file.
You can define more than one pair of regular-expressions, find & replace pattern.
The parameters are:
Replacements
List of regular expressions and replacement patterns that will be applied on your document for every match.
Create messages from metadata
Allows you to create new messages, with content from current metadata.
The parameters are:
234
Channels
Target gateways
The gateways to which the new message will be sent.
Metadata and names
Metadata containing content for messages to create. Metadata = Pattern to match the metadata that contains
the contents for new messages. Filename = fileName of the new messages. If one pattern matches multiple
metadata, a new message will be generated for each metadata. You can use the capturing groups of the
regex in the filename. Ex: if your metadata pattern is attachment-(.*) and your filename is \1, processing
with two metadata attachment-file1.csv and attachment-file2.csv will result 2 new messages files file1.csv
and file2.csv.
User Metadata Transfer Strategy
The strategy that will be used to transfer the user metadata to the new message created in the connected
gateways.
Message Validation
Allow you to validate a message against a metadata.
The parameters are:
Fail on error
Create an error if the message is not valid.
Set status on error
If 'Fail on error' is not selected, this puts the message in error without creating a ticket.
Metadata name
Name of the metadata containing the expected result.
Regex to ignore
List of regular expression to ignore.
Date to ignore
List of date format expression to ignore. Dates are expressed using the regular java format like : yyyyMMddhhmmss.
Message Unwrapper (Deprecated)
Allows you to extract message from zip or pdf
The parameters are:
Unzip
Extract the message from a zip container.
Pdf attachment
Extract the message from an attachment in a pdf container.
Parse pdf
Create an XML from extracted pdf
Message
235
Channels
Regular expression to extract the message
Extra metadata
Regular expression to extract an extra file and store it in a metadata.
Extra metadata encoding
encoding of the extra metadata
Extra metadata name
Metadata name to use. Default is the same as the real name.
Save Original as
Same, the original message in a metadata with this name.
Save extracted as
Same, the unzip / unpdf message in a metadata with this name.
Other attachments
Regular expression to save other attachments
Automatically close errors
This extra-processing allows to define criteria to automatically close an error that occurs during the message
definition OUT step.
The parameters are :
Error message patterns
The patterns that will be tested against the error message.
If the error message matches at least one of the patterns, the status of the message will automatically be set
to Error(closed).
4.11.5. Extra processings on gateway OUT
Automatically close errors
This extra-processing allows to define criteria to automatically close an error that occurs during the Gateway
OUT step.
The parameters are :
Error message patterns
The patterns that will be tested against the error message.
If the error message matches at least one of the patterns, the status of the message will automatically be set
to Error(closed).
4.12. Metadata
Metadata are data that are associated with the processing of the message, besides of the processed input and
output files.
236
Channels
For example, some metadata are the date and time when the message was received, the channel that processes
the message, informations about the sender of the message, ... The complete list of system metadata can be
found here.
Metadata is useful to customize your output messages or notifications. See below some usage examples.
It is also possible that you define your own metadata. See drag-and-drop transformation details
4.12.1. Metadata usage
This page shows you some examples of locations in the application where metadata can be used.
Changing value assigned to a system metadata in drag and drop transformation
See details in drag-and-drop transformation.
Using metadata to customize messages and file names
You can use system or user defined metadata in your output gateways and email notification configuration. The
metadata values can be used to name output files sent through output gateways or as part of a notification email
subject and or body. The metadata used may even be different for success or failure messages as shown in the
figures below.
System metatada are referenced using syntax {com_babelway_messaging_context_***}. A list of available
system metadata with returned variables and examples is available in System Metadata appendix.
Figure 4.157. System metadata used to customize notification emails
237
Channels
Figure 4.158. System metadata used to customize file names
User defined metatada are referenced using syntax {user-defined-property:your_metadata} where
your_metadata is the name of your user defined metadata you want to reference it as illustrated in the following
example where the earlier user defined metadata is used as a name for the file sent as email attachment.
238
Channels
Figure 4.159. User defined metadata used to customize attachment name
Concatenate values from a loop in a metadata
If you want to concatenate multiples values from a loop in a single metadata such as a message reference or a
user defined metadata, you have 2 options:
1. Use a full custom xpath:
• Do not map any loop.
• Create a Xpath custom expression such as:
string-join (YOUR_XPATH, 'YOUR_SEPARATOR')
Where YOUR_XPATH is the path to all the elements you want to concat such as:
/ediroot/interchange/group/transaction/loop/segment[@Id='NAD' and element[@Id='NAD01'] =
'BY']/element[@Id='NAD02']/subelement[@Sequence='1']
or
/csv/line/field1
Or drag a repeated element (such as the line hereover) on the custom function. All field1 elements under the re239
Channels
peated element will be concatenated and separated by the given separator.
$arg1/field1
YOUR_SEPARATOR is the separator between two elements of the list such as ' - ' for example.
2. Use the functions get-metadata and set-metadata
• Map the loops to the output metadata
• Create a Xpath custom expression with the following expression:
metadata-util:put($MSG,'com_babelway_messaging_context_message_reference', bfn:concat
('YOUR_PREFIX', 'YOUR_SEPARATOR', 'YOUR_SUFFIX', metadata-util:get($MSG,
'com_babelway_messaging_context_message_reference'), $arg1))
Where
• YOUR_PREFIX is the prefix added at the beginning of the result, ex: ' here is the list of value: '
• YOUR_SEPARATOR is the separator added between the different elements, ex: ' – '
• YOUR_SUFFIX is the suffix added at the end of the result ex: [i ' '[/i]
• Drop the value of the element to the expression (= $arg1 )
• Map the expression to the metadata
4.12.2. System Metadata
System metadata is metadata that is defined in the system and contains useful information relating to the message being processed. See Metadata chapter for reference and examples of use.
Table 4.1. List of System Metadata
Code
Name
{com_babelway_
saging_context
_message}
mes- Message context
{com_babelway_
saging_context
_accountId}
mes- Account ID
Description
Example
The ID of the account 25010
which has the processing
Hub.
{com_babelway_ mes- Hub ID
saging_context _hubId}
The ID of the account en- 25030
vironment which processed the message
{com_babelway_
saging_context
_channelId}
mes- Channel ID
The ID of the channel 26885
which is used in processing the message.
{com_babelway_
saging_context
mes- Receive Day
The day in which the 20090503
message was delivered by
240
Channels
Code
Name
_receiveDay}
{com_babelway_
saging_context
_receiveTime}
Description
Example
the system.
mes- Receive Time
The time in which the 20090503-163446
message was delivered by
the system.
{com_babelway_ mes- Receive Time extended
saging_context
_receiveTime_extended}
The extended
time.
receive 20090503-163446-968
{com_babelway_ mes- Message reference
saging_context
_message_reference}
A reference for the mes- ABNAmrosage
Funds_AAA.xls
{com_babelway_
saging_context
_client_reference}
mes- Client reference
A reference for the client
{com_babelway_
saging_context
_in_filename}
mes- Input file name
The name of the input file ABNAmroFunds_AAA.xls
{com_babelway_
saging_context
_in_filename
_no_extension}
mes- Input file name
The name of the input file ABNAmroFunds_AAA
with no extension.
{com_babelway_
saging_context
_out_filename}
mes- Output file name
The name of the output 20090430_ABNAMROL
file
UX _MMF.xls
{com_babelway_
saging_context
_out_fileContent}
mes- Output file content
{com_babelway_
saging_context
_mail_from}
mes- The sender email address
The email address from [email protected]
which the message was
sent.
{com_babelway_ mes- The receiver email ad- The email address to [email protected]
saging_context _mail_to} dress
which the message was
sent.
{com_babelway_
saging_context
_mail_subject}
mes- Email message subject
The subject the email FW:
Abnamromessage received by the funds_AAA.xls - MMF system.
20090430
{com_babelway_
saging_context
_mail_body}
mes- Mail body
{com_babelway_
saging_context
_mail_send_date}
mes- Mail sending date
{com_babelway_
saging_context
mes- AS2 message receive date The receive date of the 1241504709696
AS2 message.
javax.mail.internet.
MimeMultipart@13dc44a
The sending date of the 1241422103000
email message.
241
Channels
Code
Name
Description
Example
_as2_receive_date}
{com_babelway_
saging_context
_as2_send_date}
mes- AS2 send date
The sending date of the
AS2 message.
{com_babelway_
saging_context
_as2_from}
mes- AS2 from address
The AS2 sender address.
C4NETBE
{com_babelway_ mes- AS2 to address
saging_context _as2_to}
The AS2 receiver ad- BABELdress.
WAY_AS2_25010
{com_babelway_
saging_context
_as2_message_id}
The ID of the AS2 mes- d19bc8_1210d8ea134_-4
sage.
5ec @C4NETBE_host
mes- AS2 message ID
{com_babelway_ mes- Input user
saging_context _in_user}
The
username
from -ftp login: 'fc-invoice'
which the message was
sent (such as the ftp login
name or sender email address)
4.13. Change Log
Each time you push on the "save" button in a component, a revision is created, that keeps track of all the
changes done. This allows to know the state of your components at any given point in time. The Revert function uses those revisions in order to go back in time and put your components at a given revision.
The change log can be viewed for the whole environment, or by element.
4.13.1. Environment change Log
Each time you click on the "save" button in a component, a revision is created. This allows you to know the
state of your components at any given point in time. The Revert function uses those revisions in order to go
back in time and put your components at a given revision.
List of revisions
To view the list of revisions click on Change Log in the menu below Channels
The list of revisions is displayed as illustrated below:
242
Channels
Figure 4.160. list of revisions
The revisions are listed from the latest to the oldest. So your last modification is displayed at the top of the list.
By definition, the last revision corresponds to the last time you clicked on "save'. So by definition, there would
be no difference between the current version of your components and the last time you clicked on save.
All the revisions below the first are old states of your components. There is a timestamp (which represents
when you clicked on 'save'), the user who clicked on 'save' and a small description limited to the components
(i.e. channel, message in, message out, transformation, test, ...) that have been modified.
4.13.2. Elements change Log
Note
Explains here that is it possible to view the element change log in a tab of gateway|MD|transformation
detail screen. Explains the info, how to revert, ... This page will be linked from these screens.
4.14. Reuse and save time
The reuse and save time zone allows you, when you need to configure some element, to make all the configuration in just one click, by reusing elements that have been previously defined.
In this zone, the system will always try to make the suggestions that are the most relevant to your usage, depending on the whole known context (what you have already selected, other elements of the channel, ...). These
suggestions can be of different types :
• Element from the Babelway catalogue. The Babelway catalogue contains many message definitions or gateways used by main retailers. These elements are ready to use, and can just be copied to your environment.
• Elements that you already defined in your environment. You will be able to use them, or duplicate them in
just one click.
243
Channels
• Elements that are in other environments to chich you have access.
• Examples, that are useful to make your first steps and test the application.
• Suggestions. In some cases, we can deduce what you need from what you already did. For example, MessageDefinitions can in some situations be deduced from the gateway you selected.
Figure 4.161. Reuse with different types of suggestions.
This zone is available when you want to create an element ( gateway creation, MessageDefinition creation,
transformation creation, channel creation or partner creation) and in the ChannelDetail screen.
4.14.1. Search and Reuse
To filter the elements, you just need to type your criteria in the search bar, at the top of the zone. In the following example, only entries that match "Colruyt" will be returned.
Figure 4.162. Reuse search.
If you use multiple words, like 'Colruyt Order', all the word will be searched separately. Only entries that contains all of the words will be returned.
244
Channels
If you specify a given type in the creation form, search will also be limited to elements of this type. IN the following example, only invoices of type EDIFACT will be returned.
Figure 4.163. Reuse search.
By default, only first 5 entries by category will be returned. If you want to view more, you can use the More action to view the full list, and have access to more advanced search.
Figure 4.164. Reuse search - more
245
Channels
Figure 4.165. Reuse search - more results
When you have found the element that you want to use, just click on it.
Figure 4.166. Reuse search - more results
4.14.2. Using the Babelway catalogue
The catalogue is a large repository of elements predefined by Babelway. These elements are ready to use, and
you can just copy them into your environment and use them.
The catalogue contains many message definitions or gateways used by main retailers, ... Before thinking to
define the message definitions or gateways for your partner, always check that it is not already defined in our
catalogue !
246
Channels
Figure 4.167. Catalogue items.
4.14.3. Using or duplicating elements that you already defined.
In the section of the results names You already defined, you will find elements that you have already defined in
your current environment, and be able to use them again.
Figure 4.168. Reuse - already defined elements.
If you are creating a new item ( in gateway creation screen, in MessageDefinition creation screen, in transformation creation, screen, in channel creation screen, ...), reusing an existing element means duplicating it.
Figure 4.169. Reuse - element duplicated.
If you are in the ChannelDetail screen, and it is the first time you use this element, the element will just be assigned to the channel.
Figure 4.170. Reuse - element set in channel.
If you are in the ChannelDetail screen, and the selected element is already used in other channels, you will get
the option of duplicating or sharing it.
247
Channels
Figure 4.171. Reuse - element set in channel.
4.14.4. Accessing elements from other environments.
You can also access and reuse elements from other environments you are allowed to access.
These elements are not returned by default by the pertinence algorithm. To use them, you will always have to
use the advanced search (click on More ).
Figure 4.172. Use element from another env - Click on More
248
Channels
Figure 4.173. Use element from another env - Choose environment
4.14.5. Using examples or suggestions.
When you are making your first steps with the application, you will have access to some examples. These examples are ideal to be able to setup a first channel in a few seconds, and being able to test the application.
Figure 4.174. Use element from another env - Click on More
The application can also make you suggestions, based on the other elements present in your channel.
In the following example, a gateway IN of type MessageRecord has already been set to the current channel.
The application will automatically suggest you just one MessageDefinition to use, because it knows the format
of files generated by this gateway.
Figure 4.175. Use element from another env - Click on More
249
5
Admin
This section explains what can be found under the admin section menu.
5.1. Personal data
Manage and edit your personal information such as username, name, email address, password...
Figure 5.1. My Profile
The following information is displayed:
Username
The username you entered at registration time (cannot be modified).
Email
Your email address (mandatory). If you change it, an email will be sent to this email address to verify it.
First name
Your first name (optional, can be modified).
Last name
Your last name (optional, can be modified).
250
Admin
Phone
Your telephone number (optional, can be modified).
After your registration, an email is sent to your email address in order to verify it. You have 7 days to click on
the verify link. After that, your user will be blocke. A reminder is displayed when you log in and in this page
Figure 5.2. Email address verification reminder
Commands
Save
Save your modifications.
Edit password
Enables you to change your password.
Verify email address
An email will be sent to your email address in order to verify it
Select, enter or change parameter values then click on Save to save your changes or on Back return to previous
screen without saving changes.
Click on Change Password command to open following screen and change your account password.
Enter old and new passwords, confirm new password then click on Change Password to save your new password or on Back return to previous screen without saving change.
Figure 5.3. Edit screen
5.2. Environment settings
251
Admin
An account environment contains a collection of one or more channels that are managed together.
In this section, you can change settings that affect your whole environment. You can also create additional environments if required.
5.2.1. General
The General tab allows you to view or change how your account and environment is identified.
If you have multiple environments, it is important to name them correctly, to ease the comprehension of the
content of each of them.
Figure 5.4. Environment settings - General
Account name
The name of your account. By default, this name includes your login name.
Account Password Policy
The password policy defines the security level used for the authentication of all the users having access to
this account.
The following policies exist:
• Regular: The user password must have a length not less than 6 characters.
• Strong: The user password must contain a mix of UPPER-CASE and lower-case characters as well as
numbers, and have a length not less than 8 characters. A mandatatory password renewal is enforced at
least every 90 days. Each new password should differ from the previously used ones.
Only the Babelway administrators can modify this setting.
Environment name
The name of the current environment. By default, this name is "Environment X" (X is the count of environments in your account).
252
Admin
Id
A unique identifier for your environment, automatically set by Babelway platform.
5.2.2. Messages
This tab allows you to view and change the parameters of your environment that affect how the messages are
processed.
Figure 5.5. Environment settings - Messages
Message Storage Duration
How long the messages processed in this environment will be kept. The possible values are 15 days, 1
month, 3 months, 1 year or 10 years for legal documents that must be kept longer. The value set here is a
default value at environment level, and will only be used if a more specific value is not set at channel level.
Messaging Engine
This parameter defines on which "Messaging Engine" an environment is running. A Messaging Engine
groups the different components processing and storing messages. This leverages Babelway multi cloud architecture allowing to load balance operations on several infrastructures.
IP addresses
This parameter defines the IPs of components of the "Messaging Engine" on which an environment is running.
Use Secure Chain
Defines if the environment is using Babelway Secure Chain mechanism. The secure chain is a key part of
Babelway legal archiving solution.
Special Data Privacy
If true, only users with an explicit right on the environment have access to the content of the messages and
user management. This prevents Babelway support to see the content of messages.
253
Admin
SLA Capacity
1 or more, is a measure of the processing capacity associated to the account environment. It defines the
maximum number of messages (in 10kB chunk) that can be processed per minute.(Service Level Agreement)
5.2.3. Partners
This tab allows you to add specific fields to the Partner model. See Partners section for a full explanation about
partners.
The fields that you add here will be available in add or edit a Partner, or in the list of Partners.
Thanks to this,in the Partners sections you can also have all the fields that are specific to your business, or important for you but non-standard.
Figure 5.6. Environment settings - Partners
For every field, you can choose its name and its type.
The type is important, as it helps the application validate the data that you encode, and eases the manipulation
of the data. For example :
• If you tell the application the possible values that a String may contain (when the field can only have a
known set of acceptable values), the interface will offer you a dropdown menu for selecting the values, this
guarantees that you can not enter another value in error.
254
Admin
• If you choose an Integer type, you will be guaranteed to have only numbers in the field, and the interface will
sort the values numerically (ex: 1, 2, 10) instead of alphabetically (1, 10, 2).
5.2.4. Document types
Documents allows you to have a business view on the processed messages.
In this tab, you can configure which documents you want to use, and configure the fields that you want to have,
or how to interface must display them.
Figure 5.7. Environment settings - DocumentTypes
The following parameters are available :
Name
The name of the document. Please note that this name will be used as an identifier to identify the Docu255
Admin
mentType, and is therefore independent of the language, but you will be able to define labels for this DocumentType in every language (see parameter Labels).
Keep duration
How long the documents must be kept.
Fields
All the fields that you want to have for this DocumentType.
For every field, you can choose its name and its type.
The type is important, as it helps the application validate the data that you encode, and eases the manipulation of the data. For example :
• If you tell the application the possible values that a String may contain (when the field can only have a
known set of acceptable values), the interface will offer you a dropdown menu for selecting the values,
this guarantees that you can not enter another value in error.
• If you choose an Integer type, you will be guaranteed to have only numbers in the field, and the interface
will sort the values numerically (ex: 1, 2, 10) instead of alphabetically (1, 10, 2).
A special field UniqueKey can be used as a user identifier for the Document. It can be used in extractors to
indicate that multiple extractions concern the same logical document, and result in updates instead of creation of a new document.
You can also personalize how the interface will display your DocumentTypes.
Menu section
By default, if you leave this field empty, all Documents will be displayed in the Monitoring section, with
one menu entry by DocumentType.
By using this parameter, you can group multiple DocumentTypes in just one menu section. The DocumentTypes will then be displayed as tabs in this menu section.
To do this, just put here an id of the menu section. All the DocumentTypes with the same id will be
grouped together.
Labels
This parameter allows you to load labels that must be used, in any language, to display data related to this
DocumentType.
To do this, you must load a zip file containing properties file (with all labels) for every language. Files in
the zip must be named documents_[language].properties, or documents.properties for texts to use by default.
By clicking on link "Download file pattern", you can easily get an example file for the properties files, with
all the correct keys already defined.
256
Admin
Figure 5.8. Document Type labels
List default columns
Names of the columns that must be displayed by default in the list of documents, separated by commas.
The names must be the name of a field. 'id', 'creationMoment', 'lastUpdateMoment', 'keepUntil' are also accepted to show the corresponding columns.
If you leave this field blank, the default is to display the columns for all of your fields, and also id and creationMoment.
Order of elements in the list has no impmortance.
Detail columns
How the fields must be displayed in the page with the details of a document.
The value must have the form [Section1]field1,field2[Section2]field4,field3... For better readability,
newLines are also accepted before every section.
If you leave this field blank, the default is to display all the possible fields.
5.2.5. Do I need one or several account environments ?
Channel elements are very flexible and can be copied from one environment to another as long as the user has
access to both environments. Here is some advice for organising work in Babelway if you plan to use more than
a few channels.
257
Admin
You can create a new environment by clicking on "create new environment", and confirm.
Create environments according to your business
If you manage many channels, you may want to group them together to easily manage them. For example, you
may create a different environment for each of your customers to manage them separately. Or you may create a
specific environment dedicated to testing and another one for production.
Create environments according to your user rights
Users rights can be limited to a specific account environment so you may create different environments to limit
user access to a specific set of channels and messages.
Using a test environment for transformation development
Before starting, let's mention that Babelway is managing a single multi-tenant platform. From a Babelway perspective all environments and messages are "production".
However a customer can decide to organise himself in a traditional multi-environment setting.
Create a "test environment" in your account and use it to develop messages and transformation. Once you are
ready to use it, then "promote" to production by simply replacing the element in your production environment.
When importing the element in the production environment, give it a name including a version indicator. ex:
Invoice flatefile My ERP v1.23 or Invoice Carrefour 96A 200900416. All of the previous "production" version
will therefore remain available allowing you to revert changes if required.
For this model to work properly, it is important to do all modifications in the "test environment". There is no
need to keep a copy of the "promoted" version in the test environment. Should you need to work on an old release, simply copy it back from the production environment.
It is also a best practice to include all the production channels in your test environment. This way you will be
able to test your routing rules and metadata substitution in the gateways. Note that you can use a different type
of gateway to make your life simple, for instance use an email or a web gateway instead of a AS2 gateway.
Service provider
There are 3 valid set-ups for a service provider to use Babelway:
• One account per client
• One environment per client in a single account
• One single account/environment
The key differences between these is the billing and the possibility to give access to end-customers. If each
end-customer should receive their Babelway invoice in full transparency, go for one account per client. If each
client should get individual online access to channels and messages but the service provider takes care of the
overall Babelway invoice, go for one environment per client in a single account. If the service provider
provides full outsourcing service to its customers, without giving them any visibility on Babelway, go for one
single account/environment.
Anyway the best practice for the service provider is still to create a test environment in one of these accounts or
in his own.
258
Admin
5.3. Billing
This screen displays a table showing the details of the billing run. The details will depend on the price plan you
have chosen. For instance if you are on a Babelway BUSSINESS account, the billing runs once a month, at the
anniversary of you account creation. Each month, new lines will be added for monthly fee, the extra volume,
extra channels and so on.
Figure 5.9. Billing details
5.4. Users
The table lists all your users.
Figure 5.10.
To manage a given user, you can just open its details by clicking on it.
Add a user
Click on Add a User to add a new user in any role for your account as described in the Add a User chapter.
259
Admin
5.4.1. Add a User
Add a new user and select their role.
From this screen, you can add and invite a new user and select their role on any of your account environments.
Figure 5.11. Add a user
To add a new user, enter their email address and select their role (one of the 3 available ones described above,
"no access" is not available).
If the role is restricted to an environment (channel manager or web gateway user), you should select the environment the new user will be added to otherwise the drop-down list is not available.
Email
The email address to send the invitation.
Access Level
The rights given to the new user.
Invitation text
You can change the Invitation Text if you want. This message will be sent to the new user to request acceptance and activate this option.
Preferred Language
Babelway's interface will be set in this language when your new user logs into the application.
Click on Back command to cancel and go back to previous screen. Click on Send to send this email and invite
the new user.
260
Admin
Note
The new user will be added with his role after accepting this invitation and activates it by clicking on
the link included in the mail within the three days following the date of your invitation sent.
5.4.2. User detail
Manage and edit the details about one of your users.
Figure 5.12.
Rights
In the "Rights" tab you can assing different access levels to the user for the current environment.
261
Admin
Figure 5.13.
There are six different roles available that are described here:
Account Administrator (Full access)
Has full rights over the account (yourself by default).
Channel Manager
Has full rights over alerts/messages/channels functions, but cannot access admin information (user rights,
billing). This type of access is for people who will manage and maintain channels.
Operations
Can view and operate messages or alerts, but can not change configuration of channels. Can edit partners
but not deploy them. Can manage users of this environment. This type of access is for people who will
manage the system but wihtout modifying the channels.
Monitoring
Can view and operate messages or alerts, but can not change configuration of channels. This type of access
is for people who monitor the system.
Read-only monitoring
Can view messages or alerts, but can not change anythings. This type of access is for people who monitor
the system.
Portal user
Portal user will only see documents (invoices, orders, ...) related to some partners. This role is typically for
people from another company that the owner of the account, and that should only be able to see documents
related to this company.
No Access
Has no access to your environment, but you can switch to another role without sending an invitation.
262
6
Miscellanous
This chapter contains some more information, not closely related to the web interface.
6.1. B2B Integration Project Management
When you set up a channel to tranfer data between your system and the external system of your B2B partner,
you must agree on a way to transfer this data. This activity is a project, possibly involving multiple parties:
Your company, your B2B partner, your and their IT integrator, etc.
So, before starting any implementation, even in a test configuration, Babelway recommends that you follow a
project management process such as this one:
1. Agree on project terms
You and your B2B partner should agree on the purpose of collaboration and data to be transferred. This part
should also include the possible financial terms. Some exchanges may even require the writing of contracts.
2. Write specifications
Together with your B2B partner, you should write technical specifications about what is going to be transferred and how (gateway types and configuration, message formats required, mandatory information included in messages, validation processes, test cases definition for project acceptance...)
3. Plan and execute work
Configure and test your channels to meet agreed specifications. The planning should include when your
partner must have resource available, for example, for testing and for acceptance phases.
4. Production and acceptance tests
Once the development and tests are completed, the system is used in production for a trial period. If adjustements are required, they should be implemented as soon as possible. Once all issues are solved and the trial
period is finished, the system can be fully used in production.
Here is a short checklist of items that will be required during development and that sould be agreed between
both sides and included in the specifications:
At account level:
• Details of users who will have access and their respective roles.
• Details of settings including volumes of transactions, price package, expected concurrent volume...
For each channel:
263
Miscellanous
• Details of gateways in and out including external system details, usernames, passwords, certificates... Details
of test environments of external partners prior to moving to production, if relevant.
• Details of messages in and out formats. Both sides should provide several examples of each in and out message types.
• Details of message transformation rules, possible values mapping, exception, mandatory and optional fields...
• Details of routing rules, if relevant.
• Details of in and out message validation rules, if any.
• Details of messages, channels and any other items naming conventions.
• Details of users notifications (success and/or errors).
• Detailed test plan, including acceptance criteria.
6.2. DNS load-balancing
Hosting and redundancy
Babelway infrastructure is hosted externally. Babelway has agreements with 2 hosting providers:
• Combell, a recognised Belgian hosting company. Combell uses several physical premises in Belgium.
Premises have been audited by an independent consultant mandated by Babelway.
• Amazon, a recognized International company and cloud inventor. Babelway subscribes to the Amazon Web
Service (AWS) allowing Babelway access to virtual servers "on-demand". The servers are physically located
in IRELAND and other locations around the world.
To maximise availability and reliability, not only has Babelway contracted with reliable partners on strict
terms, but it has also installed redundancy between its 2 data centres. In the event of downtime of one of the 2
data centres, Babelway can switch all data traffic to the other data centre. Current limitation of the redundancy
are:
• SelfService application (human access to user hubs) are only active on one data center. In case of unavailability of this infrastructure, messaging services can continue but human tracking or maintenance is not available. A manual process allows Babelway to switch the SelfService application to the other infrastructure.
• Gateways to external systems based on physical IP addressing would also be interrupted. We recommend
that users use a URL locator instead of IP addressing wherever possible.
DNS load-balancing and fail-over
Babelway always maintains the configuration of the 2 data centres in sync. All customer configurations are deployed concurrently on both infrastructures. The load balancing and the fail-over between data centres are performed at the DNS level. The messaging engine deployed in the 2 data centres have the ability to work in complete autonomy in both active / active or active / passive modes. This mechanism is used by Babelway for failover as well as scalability needs.
264
Miscellanous
To fully leverage Babelway fail-over mechanism, traffic with Babelway gateways are based on DNS (logical
addressing) and accept traffic with each of the public IP address published by Babelway.
For outbound traffic, Babelway guarantees that all traffic will be issued from one of its public IP addresses.
For inbound traffic, Babelway guarantees that all DNS entries for public services, like ftp.babelway.net,
ws.babelway.net or as2.babelway.net will be resolved to one or several of its public IP addresses. At any time,
DNS will be resolved to 2, 3 or 4 servers. Clients software connecting to Babelway should be able to fail-over
to the next IP in case of a server is unreachable (like all Browsers do). Babelway reserves the right to changes
these allocations.
6.3. External References
Regex or regular expression
Regular expressions provide a concise and flexible means for identifying strings of text of interest, such as particular characters, words, or patterns. A regular expression, or a regex, is written in a formal language that can
be interpreted by a regular expression processor, a program that examines text and identifies parts that match
the provided specification.
Among other sources, you can find a description and a help about Regex on the following website http://www.regular-expressions.info/
XML
XML (Extensible Markup Language) is a set of rules for encoding documents electronically. It is defined in the
XML 1.0 Specification produced by the W3C and several other open standards. XML’s design goals emphasize
simplicity, generality, and usability over the Internet. It is a textual data format.
Although XML design focuses on documents, it is widely used for the representation of arbitrary data structures, for example in EDI transactions. There are a variety of programming interfaces which software developers may use to access XML data. XML has become a wide-used file format.
Among other sources, you can find a description, help and tutorial about XML language on W3Schools website
at http://www.w3schools.com/xml/default.asp
Xslt
XSL Transformations (XSLT) is a declarative XML-based language used for the transformation of XML documents into other XML documents. The original document is not changed and a new document is created based
on the content of the original one.
XSLT is also used to translate XML messages between different XML schemas, or to make changes to documents within the scope of a single schema, for example by removing the parts of a message that are not needed.
Among other sources, you can find a description, help and tutorial about Xslt language on W3Schools website
at http://www.w3schools.com/xsl/default.asp
XPath
265
Miscellanous
XPath, the XML Path Language, is a query language for selecting nodes from an XML document. In addition,
XPath may be used to compute values (e.g., strings, numbers, or Boolean values) from the content of an XML
document.
Among other sources, you can find a description, help and tutorial about XPatch language on W3Schools website at http://www.w3schools.com/xpath/default.asp
EDIFACT
United Nations/Electronic Data Interchange For Administration, Commerce and Transport (UN/EDIFACT) is
the international EDI standard developed under the United Nations.
Among other sources, you can find a description, help and tutorial about EDIFACT on the official website at
http://www.unece.org/trade/untdid/welcome.html
X12
ASC X12, chartered by the American National Standards Institute (ANSI) in 1979, develops EDI standards for
national and global markets.
Among other sources, you can find a description, help and tutorial about X12 on the official website at http://www.x12.org
Odette
ASC X12, chartered by the American National Standards Institute (ANSI) in 1979, develops EDI standards for
national and global markets.
Among other sources, you can find a description, help and tutorial about X12 on the official website at http://www.odette.org/html/home.htm
AS2
ASC X12, chartered by the American National Standards Institute (ANSI) in 1979, develops EDI standards for
national and global markets.
Among other sources, you can find a description, help and tutorial about AS2 on the following website : http://www.as2basics.co.uk/index.htm
OFTP
ASC X12, chartered by the American National Standards Institute (ANSI) in 1979, develops EDI standards for
national and global markets.
Among other sources, you can find a description, help and tutorial about X12 on the official website at http://oftp.net/US/default.htm
FTP
ASC X12, chartered by the American National Standards Institute (ANSI) in 1979, develops EDI standards for
266
Miscellanous
national and global markets.
Among other sources, you can find a description, help and tutorial about X12 on the official website at http://www.x12.org
6.4. Rest API
The Rest API provides for third party software developers, a way to access the Babelway data (catalogue
entries, user's channel, user's tickets, user's messages) and integrate them inside of their own application.
For software developers, it is way to easily interact with Babelway directly from within your application. The
API is based on the REST protocol, using the JSON and XML formats.
6.4.1. Introduction
URLs
All
the
requests
to
access
the
REST
api
have
the
form
tps://www.babelway.net/SelfService3/rest/v2/hub-{hubId}/{action}.{format}?{parameters}, where
ht-
hubId
The id of your environment. It can be found in the Environment settings section, under the Admin menu.
format
The format in which you want to receive the answer. It must be 'json' or 'xml'. All actions support the 2
formats.
action and parameters
The name and parameters of the action you want to call. See below for all available actions and parameters.
Authentication
All the requests require authentication.
The API currently supports the HTTP Basic Authentication1.
It is also possible to provide the credentials via the 2 extra parameters userName and pwd
The Babelway Rest API is to be used on a HTTPS (SSL/TLS) connection in order to encrypt the credentials.
Representations
All timestamps should be formatted as the number of milliseconds since the first of January 1970 (midnight
UTC/GMT).
6.4.2. Available actions
The following methods are available in the api:
1
http://en.wikipedia.org/wiki/Basic_access_authentication#Example
267
Miscellanous
6.4.2.1. tickets
This actions allows to list all the tickets, optionnaly filtered by some search criteria.
Parameters
description
A keyword to filter the tickets by. It will search within the description.
status
The status of ticket. The accepted values are OPEN and CLOSED.
severity
The severity of ticket. The accepted values are HIGH, MEDIUM, LOW and INFO.
since
Returns tickets created after the given timestamp.
before
Returns tickets created before the given timestamp.
type
The type of ticket, one in the following list.
The following values are accepted : _0_MONITORING, _1_MESSAGE_PROCESSING_ISSUES,
_1_1_UNIDENTIFIED_SOURCE,
_1_2_UNIDENTIFIED_MESSAGE_IN,
_1_3_UNIDENTIFIED_CHANNEL,
_1_4_MESSAGE_VALIDATION_ISSUE,
_1_5_FAILED_DELIVERY,
_1_6_PLANNED_CLEANING_OF_UNATTENDED_MESSAGES,
_2_HUB_ISSUES,
_2_1_STORAGE_CAPACITY_REACHED,
_2_2_PLANNED_MAINTENANCE_UNAVAILABILITY,
_2_3_NEW_FUNCTIONALITY_AVAILABLE,
_3_ACCOUNT_ISSUES,
_3_1_CREDIT_LIMIT_REACHED,
_3_2_UNPAID_INVOICE,
_3_3_CREDIT_LIMIT_NEAR_REACHED,
_3_4_VAT_CHANGED,
_4_CHANNEL_MANAGEMENT_ISSUE,
_4_1_MAINTENANCE_WARNING_OF_A_LINKED_CHANNEL,
_4_2_PLANNED_DELETION_OF_UNUSED_CHANNELS,
_4_3_DOCUMENTATION_OF_A_CHANNEL,
_4_4_CERTIFICATE_EXPIRATION,
_5_USER_MANAGEMENT_ISSUE,
_5_1_FAILED_CONNECTION_ATTEMPTS,
_5_2_FIRST_CONNECTION_FROM_INVITEE,
_5_3_PLANNED_CLEANING_OF_DORMANT_USERS, _5_4_INVITATION_EXPIRED
start
An integer to set the first result. By default, the value is at 0. The API returns 25 results per query. To get
the 25 next one, it should be 25, then 50, then 75, ...
Examples
• Get tickets with severity MEDIUM in environment 12345 in JSON format
https://www.babelway.net/SelfService3/rest/v2/hub-12345/tickets.json?severity=MEDIUM
[
{
268
Miscellanous
"ticket":222577,
"hub":12345,
"type":"_0_MONITORING",
"severity":"MEDIUM",
"status":"OPEN",
"summary":"Ftp server : ftp:\/\/ftp.server.com\/input DOWN",
"description": "Ftp server (ftp:\/\/ftp.server.com\/input) became DOWN at 07\/02\/2011
"creationMoment":1349180055000,
"key":"aa3a19d7-14f4-4f66-819b-e044eb24b273"
}
]
• Get opened tickets in environment 12345 in XML format
https://www.babelway.net/SelfService3/rest/v2/hub-12345/tickets.xml?status=OPEN
<collection>
<ticket>
<ticket>222577</ticket>
<hub>12345</hub>
<type>_0_MONITORING</type>
<severity>MEDIUM</severity>
<status>OPEN</status>
<summary>Ftp server : ftp://ftp.server.com/input DOWN</summary>
<description>Ftp server (ftp://ftp.server.com/input) became DOWN at 07/02/2011 01:46:3
<creationMoment>1349180055000</creationMoment>
<key>aa3a19d7-14f4-4f66-819b-e044eb24b273</key>
</ticket>
</collection>
6.4.2.2. ticket
This action allows to get all the informations about a ticket.
Parameters
key
the ticket key as found by listing messages
Examples
• Get the details for the ticket with key 'aa3a19d7-14f4-4f66-819b-e044eb24b273' in JSON format
https://www.babelway.net/SelfService/rest/v1/hub-12345/ticket.json?key=aa3a19d7-14f4-4f66-819b-e044eb24
b273
{
"ticket":222577,
"hub":12345,
"type":"_0_MONITORING",
"severity":"MEDIUM",
"status":"OPEN",
"summary":"Ftp server : ftp:\/\/ftp.server.com\/input DOWN",
"description": "Ftp server (ftp:\/\/ftp.server.com\/input) became DOWN at 07\/02\/2011 01:46:3
"creationMoment":1349180055000,
"key":"aa3a19d7-14f4-4f66-819b-e044eb24b273"
269
Miscellanous
}
6.4.2.3. deleteTicket
This action allows to delete a ticket. It returns true if ticket have been found and deleted, or false otherwise.
Parameters
key
the ticket key
Examples
• Delete the ticket with key 'aa3a19d7-14f4-4f66-819b-e044eb24b273' in JSON format
https://www.babelway.net/SelfService/rest/v1/hub-12345/deleteTicket.json?key=aa3a19d7-14f4-4f66-819b-e0
44eb24b273
"true"
6.4.2.4. messages
Search and list messages.
Parameters
Parameters can be added to filter the query
key
A message key
channel
a string search in the channel name
since
Returns messages created after the given timestamp (number of milliseconds since the first of January
1970, midnight UTC/GMT)
before
Returns messages created before the given timestamp (number of milliseconds since the first of January
1970, midnight UTC/GMT)
gatewayIn
a string search in the gateway in name
gatewayOut
a string search in the gateway out name
270
Miscellanous
maxInSize
the maximum size of the incoming message (in bytes)
minInSize
the minimum size of the incoming message (in bytes)
errorDescription
a string search within the error description
ref
the message reference
status
The status of the message. The accepted values are IN_PROGRESS, PAUSED, IN_DELIVERY, SUCCESS, ERROR, ERROR_CLOSED.
type
The type of ticket. The accepted values are REGULAR and TEST.
start
An integer to set the first result. By default, the value is at 0. The API returns 25 results per query. To get
the 25 next one, it should be 25, then 50, then 75, ...
Examples
• Get regular messages that ended up in success in JSON format in environment 12345
https://www.babelway.net/SelfService3/rest/v2/hub-12345/messages.json?status=DONE&type=REGULAR
[
{
"message":6442207,
"hub":26112,
"creationMoment":1330072230000,
"key":"5914d53b-cb39-4221-ad0d-42a2af8d487c",
"test":"false",
"testCase":0,
"status":"DONE",
"channel":{"id":66264,"name":"Channel2","type":"Channel","subType":"CHANNEL"},
"gatewayIn":{"id":66292,"name":"EmailBertrand2","type":"Gateway","subType":"GATEWAY_IN
"gatewayOut":{"id":64080,"name":"Email","type":"Gateway","subType":"GATEWAY_OUT_SMTP_O
"reference":"brol.csv",
"longTerm":"false",
"acknowledgmentMoment":null,
"acknowledgmentReference":null,
"errorDescription":null,
"receiveMoment":1330072230000,
"gatewayInMoment":1330072230000,
"gatewayOutMoment":1330072231000,
"gatewayInMessageStatus":"Received from 74.125.82.177 using Smtp In server",
"gatewayInMessageKey":"<[email protected]>",
"gatewayOutMessageKey":null
},
{
"message":6481099,
"hub":26112,
"creationMoment":1330336124000,
"key":"4c196771-5a93-4d67-b7ac-6c45f9268886",
"test":"false",
"testCase":0,
"status":"DONE",
271
Miscellanous
"channel":{"id":66264,"name":"Channel2","type":"Channel","subType":"CHANNEL"},
"gatewayIn":{"id":66292,"name":"EmailBertrand2",
"type":"Gateway","subType":"GATEWAY_IN_SMTP_IN"},
"gatewayOut":{"id":64080,"name":"Email","type":"Gateway","subType":"GATEWAY_OUT_SMTP_O
"reference":"brol.csv",
"longTerm":"false",
"acknowledgmentMoment":null,
"acknowledgmentReference":null,
"errorDescription":null,
"receiveMoment":1330336124000,
"gatewayInMoment":1330336124000,
"gatewayOutMoment":1330336126000,
"gatewayInMessageStatus":"Received from 209.85.214.49 using Smtp In server",
"gatewayInMessageKey":"<[email protected]>",
"gatewayOutMessageKey":null
}
]
6.4.2.5. message
Gets all the informations about a message
Parameters
key
the message key.
Examples
• Get the details for the message with key '5914d53b-cb39-4221-ad0d-42a2af8d487c' in XML format
https://www.babelway.net/SelfService3/rest/v2/hub-26112/message.xml?key=5914d53b-cb39-4221-ad0d-42a2
af8d487c
<messageRecord>
<message>6442207</message>
<hub>26112</hub>
<creationMoment>1330072230000</creationMoment>
<key>5914d53b-cb39-4221-ad0d-42a2af8d487c</key>
<test>false</test>
<testCase>0</testCase>
<status>DONE</status>
<channel>
<id>66264</id>
<name>Channel2</name>
<type>Channel</type>
<subType>CHANNEL</subType>
</channel>
<gatewayIn>
<id>66292</id>
<name>EmailBertrand2</name>
<type>Gateway</type>
<subType>GATEWAY_IN_SMTP_IN</subType>
</gatewayIn>
<gatewayOut>
<id>64080</id>
<name>Email</name>
<type>Gateway</type>
272
Miscellanous
<subType>GATEWAY_OUT_SMTP_OUT</subType>
</gatewayOut>
<reference>brol.csv</reference>
<longTerm>false</longTerm>
<acknowledgmentMoment/>
<acknowledgmentReference/>
<errorDescription/>
<receiveMoment>1330072230000</receiveMoment>
<gatewayInMoment>1330072230000</gatewayInMoment>
<gatewayOutMoment>1330072231000</gatewayOutMoment>
<gatewayInMessageStatus>Received from 74.125.82.177 using Smtp In server</gatewayInMessageStat
<gatewayInMessageKey><[email protected]></gatewayInMessageKey>
<gatewayOutMessageKey/>
</messageRecord>
6.4.2.6. channels
You can search and list channels for a given environment.
Parameters
name
A string search on the channel name
description
a string search on the channel description
since
Returns messages created after the given timestamp (number of milliseconds since the first of January
1970, midnight UTC/GMT)
before
Returns messages created before the given timestamp.
deployed
'true' or 'false' : returns channels that are deployed or not (i.e. in production). If not set, the API returns all
channels regardless of their deployed state.
start
An integer to set the first result. By default, the value is at 0. The API returns 25 results per query. To get
the 25 next one, it should be 25, then 50, then 75, ...
Examples
• List the channels of environment 26112 in JSON format
https://www.babelway.net/SelfService3/rest/v2/hub-12345/channels.json
[
{
"id":66264,
"hub":26112,
"creationMoment":1308583384000,
"lastUpdateMoment":1346405222000,
"name":"Channel2",
"description":"Second test...",
273
Miscellanous
"gatewayIn":{"id":66292,"name":"EmailBertrand2","type":"Gateway","subType":"GATEWAY_IN
"gatewayOut":{"id":64080,"name":"Email","type":"Gateway","subType":"GATEWAY_OUT_SMTP_O
"messageDefinitionIn":{"id":66268,"name":"SimpleCsv","type":"MessageDefinition","subTy
"messageDefinitionOut":{"id":66270,"name":"SimpleCsv","type":"MessageDefinition","subT
"transformation":{"id":107807,"name":"k","type":"Transformation","subType":"VISUAL"},
"active":"false",
"deployed":"true",
"nextDeploymentAction":"desactivate"
},
{
"id":106823,
"hub":26112,"creationMoment":1337006265000,
"lastUpdateMoment":1342613179000,
"name":"dgfh",
"description":null,
"gatewayIn":null,
"gatewayOut":{"id":106825,"name":"dfg","type":"Gateway","subType":"GATEWAY_OUT_OFTP2_S
"messageDefinitionIn":{"id":66268,"name":"SimpleCsv","type":"MessageDefinition","subTy
"messageDefinitionOut":{"id":66270,"name":"SimpleCsv","type":"MessageDefinition","subT
"transformation":{"id":106919,"name":"sdf","type":"Transformation","subType":"VISUAL"}
"active":"false",
"deployed":"false",
"nextDeploymentAction":"noChange"
}
]
• List deployed channels in environment 26112 in XML format
https://www.babelway.net/SelfService3/rest/v2/hub-26112/channels.xml?deployed=true
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<collection>
<channel>
<id>66264</id>
<hub>26112</hub>
<creationMoment>1308583384000</creationMoment>
<lastUpdateMoment>1346405222000</lastUpdateMoment>
<name>Channel2</name>
<description>Second test...</description>
<gatewayIn>
<id>66292</id>
<name>EmailBertrand2</name>
<type>Gateway</type>
<subType>GATEWAY_IN_SMTP_IN</subType>
</gatewayIn>
<gatewayOut>
<id>64080</id>
<name>Email</name>
<type>Gateway</type>
<subType>GATEWAY_OUT_SMTP_OUT</subType>
</gatewayOut>
<messageDefinitionIn>
<id>66268</id>
<name>SimpleCsv</name>
<type>MessageDefinition</type>
<subType>CSV</subType>
</messageDefinitionIn>
<messageDefinitionOut>
<id>66270</id>
<name>SimpleCsv</name>
<type>MessageDefinition</type>
<subType>CSV</subType>
</messageDefinitionOut>
<transformation>
<id>107807</id>
<name>k</name>
274
Miscellanous
<type>Transformation</type>
<subType>VISUAL</subType>
</transformation>
<active>false</active>
<deployed>true</deployed>
<nextDeploymentAction>desactivate</nextDeploymentAction>
</channel>
</collection>
6.4.2.7. gateways
Search and list gateways for a given environment.
Parameters
name
A string search on the channel name
description
a string search on the channel description
since
Returns only gateways created after the given timestamp.
before
Returns only gateways created before the given timestamp.
direction
Returns only the gateways with the specified direction : IN or OUT.
type
Returns only the gateways with the specified type.
start
An integer to set the first result. By default, the value is at 0. The API returns 25 results per query. To get
the 25 next one, it should be 25, then 50, then 75, ...
Examples
• List all the gateways of environment 26112 in XML format
https://www.babelway.net/SelfService3/rest/v2/hub-26112/gateways.xml
<collection>
<gateway>
<id>106825</id>
<type>GATEWAY_OUT_OFTP2_SERVER_OUT</type>
<creationMoment>1337329988000</creationMoment>
<lastUpdateMoment>1342613179000</lastUpdateMoment>
<name>dfg</name><description/>
<hub>26112</hub>
</gateway>
<gateway>
<id>66292</id>
<type>GATEWAY_IN_SMTP_IN</type>
275
Miscellanous
<creationMoment>1308584779000</creationMoment>
<lastUpdateMoment>1342613179000</lastUpdateMoment>
<name>EmailBertrand2</name>
<description>Emails from [email protected].</description
><hub>26112</hub>
</gateway>
</collection>
• List all the OUT gateways of environment 26112 in JSON format
https://www.babelway.net/SelfService3/rest/v2/hub-26112/gateways.json?direction=IN
[
{
"id":66292,
"type":"GATEWAY_IN_SMTP_IN",
"creationMoment":1308584779000,
"lastUpdateMoment":1342613179000,
"name":"EmailBertrand2",
"description":"Emails from [email protected].",
"hub":26112
}
]
6.4.2.8. messageDefinitions
Search and list message definitions for a given environment.
Parameters
name
A string search on the channel name
description
a string search on the channel description
since
Returns only gateways created after the given timestamp.
before
Returns only gateways created before the given timestamp.
direction
Returns only the gateways with the specified direction : IN or OUT.
type
Returns only the gateways with the specified type.
start
An integer to set the first result. By default, the value is at 0. The API returns 25 results per query. To get
the 25 next one, it should be 25, then 50, then 75, ...
Examples
276
Miscellanous
• List all the messages definitions IN of environment 26112 in JSON format
https://www.babelway.net/SelfService3/rest/v2/hub-26112/messageDefinitions.json?direction=IN
[
{
"id":106869,
"direction":"IN",
"type":"CSV",
"creationMoment":1337609602000,
"lastUpdateMoment":1342613179000,
"name":"MyOrder",
"description":null,
"hub":26112
}
]
6.4.2.9. transformations
Search and list transformations for a given environment.
Parameters
name
A string search on the channel name
description
a string search on the channel description
since
Returns only gateways created after the given timestamp.
before
Returns only gateways created before the given timestamp.
start
An integer to set the first result. By default, the value is at 0. The API returns 25 results per query. To get
the 25 next one, it should be 25, then 50, then 75, ...
Examples
• List all the transformations of environment 26112 in XML format
https://www.babelway.net/SelfService3/rest/v2/hub-26112/transformations.xml
<collection>
<transformation>
<id>106919</id>
<name>SimpleTransformation</name>
<description/><type>VISUAL</type>
<messageDefinitionIn>
<id>66268</id>
<name>SimpleCsv</name>
<type>MessageDefinition</type>
<subType>CSV</subType>
</messageDefinitionIn>
<messageDefinitionOut>
277
Miscellanous
<id>66270</id>
<name>SimpleCsv</name>
<type>MessageDefinition</type>
<subType>CSV</subType>
</messageDefinitionOut>
<creationMoment>1337756138000</creationMoment>
<lastUpdateMoment>1342613179000</lastUpdateMoment>
<hub>26112</hub>
</transformation>
</collection>
6.4.2.10. catalogue
Search and list catalogue items
Parameters
q
a query string (not case-sensitive)
start
An integer to set the first result. By default, the value is at 0. The API returns 25 results per query. To get
the 25 next one, it should be 25, then 50, then 75, ...
Examples
• Get catalogue items with the tags 'belgium' and 'as2' in JSON
https://www.babelway.net/SelfService3/rest/v2/hub-26112/catalogue.xml?q=belgium%20as2
<collection>
<gateway>
<id>28786</id>
<type>GATEWAY_IN_AS2_IN</type>
<creationMoment>1232979153000</creationMoment>
<lastUpdateMoment>1342613186000</lastUpdateMoment>
<name>AS2 Delhaize</name>
<description>AS2 parameters to exchange files with Delhaize. </description>
<hub>25037</hub>
</gateway>
<gateway>
<id>33967</id>
<type>GATEWAY_IN_AS2_IN</type>
<creationMoment>1242646263000</creationMoment>
<lastUpdateMoment>1342613187000</lastUpdateMoment>
<name>AS2 Cora (Belux)</name>
<description>AS2 Connection to be used in order to receive messages from Cora (Belux).
<hub>25037</hub>
</gateway>
</collection>
6.4.3. Code samples
Here are examples written in different programming language to show how to use the Babelway REST API
within your application. These are just starting points to build upon.
278
Miscellanous
Java
Download the last 25 messages in ERROR. It requires using Apache Commons httpclient2, codec3 and logging4
for HTTP calls and SAX for XML parsing
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import
import
import
import
import
import
import
org.apache.commons.httpclient.HttpClient;
org.apache.commons.httpclient.UsernamePasswordCredentials;
org.apache.commons.httpclient.auth.AuthScope;
org.apache.commons.httpclient.methods.GetMethod;
org.xml.sax.Attributes;
org.xml.sax.SAXException;
org.xml.sax.helpers.DefaultHandler;
public class RESTClient {
public static void main(String[] args) throws Exception {
String baseUrl = "https://www.babelway.net/SelfService/rest/v1/";
Long myHub = 0L; // You can find this on the My Account page
String user = "";// the username you use to connect to Babelway
String pwd = ""; // the password you use to connect to Babelway
// Download the last 25 messages in ERROR
String request = baseUrl + "hub-" + myHub + "/messages.xml?status=ERROR";
HttpClient client = new HttpClient();
client.getState().setCredentials(AuthScope.ANY_REALM, "www.babelway.net", new UsernamePasswordCreden
GetMethod method = new GetMethod(request);
// Send the request
int statusCode = client.executeMethod(method);
// read the result
if (statusCode == 200) {
InputStream rstream = null;
rstream = method.getResponseBodyAsStream();
BufferedReader br = new BufferedReader(new InputStreamReader(rstream));
SAXParser sxp = SAXParserFactory.newInstance().newSAXParser();
sxp.parse(rstream, new SaxHandler());
}
}
private static final class SaxHandler extends DefaultHandler {
// invoked when document-parsing is started:
public void startDocument() throws SAXException {
System.out.println("Document processing started");
}
// notifies about finish of parsing:
public void endDocument() throws SAXException {
System.out.println("Document processing finished");
}
// we enter to element 'qName':
public void startElement(String uri, String localName,
String qName, Attributes attrs) throws SAXException {
// Do your processing
2
http://hc.apache.org/httpclient-3.x/
http://commons.apache.org/codec/
4
http://commons.apache.org/logging/
3
279
Miscellanous
System.out.println("Element " + qName);
}
// we leave element 'qName' without any actions:
public void endElement(String uri, String localName, String qName)
throws SAXException {
// do nothing;
}
}
}
C#
using
using
using
using
System;
System.Text;
System.Net;
System.IO;
namespace RESTClient
{
class Program
{
static void Main(string[] args)
{
string baseURL = "https://www.babelway.net/SelfService/rest/v1/";
long myHub = 0; // You can find this on the My Account page
String user = "";// the username you use to connect to Babelway
String pwd = ""; // the password you use to connect to Babelway
// Download the last 25 messages in ERROR
String request = baseURL + "hub-" + myHub + "/messages.xml?status=ERROR";
HttpWebRequest webRequest = WebRequest.Create(request) as HttpWebRequest;
// Add authentication to request
webRequest.Credentials = new NetworkCredential(user, pwd);
// Get Response
HttpWebResponse response = webRequest.GetResponse() as HttpWebResponse;
// Read the result
if (webRequest.HaveResponse == true && response != null)
{
// Get the response stream
StreamReader reader = new StreamReader(response.GetResponseStream());
// Console application output
Console.WriteLine(reader.ReadToEnd());
}
}
}
}
Python
This code snipet requires Python 2.6 or newer. No extra modules are required
import json
import urllib2
base_url = "https://www.babelway.net/SelfService/rest/v1/";
my_hub = 0 #You can find this on the My Account page
user = "" #the username you use to connect to Babelway
pwd = "" #the password you use to connect to Babelway
280
Miscellanous
request = "%shub-%s/messages.json" %(base_url, my_hub)
# Create a pwd manager that handles any realm (default realm)
pwd_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
# Create the authentication handler, add the login/pwd to it
auth_handler = urllib2.HTTPBasicAuthHandler(pwd_manager)
auth_handler.add_password(None, request, user, pwd)
# Build the URL Opener
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
# Read and parse the JSON response
try:
f = urllib2.urlopen(request)
print json.load(f)
except urllib2.HTTPError as e:
print e
PHP
This code snippet requires PHP version 5.2.0 or newer. No extra modules are required.
<?
$base_url = "https://www.babelway.net/SelfService/rest/v1/";
$my_hub = 0; // You can find this on the My Account page :
$user = ""; // the username you use to connect to Babelway
$pwd = ""; // the password you use to connect to Babelway
// Download all your tickets for the month of July 2010
$from = mktime(0, 0, 0, 7, 1, 2010);
$to = mktime(23, 59, 59, 7, 31, 2010);
// Generate the URL for the tickets:
$url = $base_url . "hub-" . $my_hub . "/messages.json?since=" . $from . "&before=" . $to;
// Make the REST query
$context = stream_context_create(array(
'http' => array(
'method' => 'GET',
'header' => sprintf("Authorization: Basic %s\r\n", base64_encode($user.':'.$pwd))."\r\n",
'timeout' => 5,
),
));
$content = file_get_contents($url, false, $context);
// Decode the JSON
$data = json_decode($content);
// Display them
echo '<pre>';
print_r($data);
echo '</pre>';
?>
6.5. BabelInvoice
281
Miscellanous
6.5.1. BabelInvoice Solution
BabelInvoice is a solution to send secure electronic invoices. BabelInvoice leverages Babelway's B2B integration in the cloud.
The sender
BabelInvoice enables you to forget the paper invoice all together. It works as a regular printer: The sender
'prints' the invoice on the BabelInvoice printer. The invoice is then automatically sent to the receiver through
Babelway. As the sender of the invoice, you receive an email copy of the invoice sent to your customer. Store it
on your computer and keep a back-up for safety. This invoice is signed with an advanced signature using the
accredited system of Babelway. This method guarantees the authenticity and the integrity of the invoice. At any
time in the future, you can certify and demonstrate the authenticity and the integrity of the invoice.
The receiver
Your customers receive an email with your invoice as a PDF attachment. They can store and print it without the
need to subscribe to Babelway or any other system. The electronic signature generated by Babelway makes the
invoice authentic and unalterable.
The e-invoice
The PDF invoice looks exactly the same as the invoice that would have been printed using your usual printer.
Pictures, logos, fonts, etc. are kept. BabelInvoice also transfers XML information to Babelway. This enables
you to extend BabelInvoice to send any other formats to enable automatic integration, via any protocol, with
accounting software.
The signature
The signature used to sign your invoice is uniquely attached to you. No other Babelway user can sign with this
unique signature. The first time a customer receives an invoice from you, the signature will appear with a yellow question mark.
Figure 6.1. yellow-questionmark
This is to request the customers attention that this document comes with a signature that is not recognized yet.
To accept your signature, your customer must click on the yellow question mark and include your signature in
the list of trusted signatures. Next time, your customer will receive an invoice with a green OK sign (V) to indicate that the invoice is signed by a trusted person.
282
Miscellanous
Figure 6.2. green-v
Note
The advanced signature complies with the definition of Directive 1999/93/CE of the European Parliament and the Council of 13 December 1999.
Archiving
Babelway stores invoices for 3 months (unless you ask otherwise). Archive security elements (guaranteeing the
authenticity and the integrity of your invoices) are kept by Babelway for at least 12 years. This enables, at any
future time, to legally prove that an invoice has been sent through the sender's account at a specific time.
Legal requirements
In Belgium (our country), the law requires that you get explicit approval from your customers to send them
electronic invoices. Sending an email is the most widely accepted method for electronic invoices. Legal requirements may change from country to country, you should seek legal advice if you are unsure.
6.5.2. Install BabelInvoice for PDFCreator
To Install BabelInvoice you should follow these steps:
Pre Requirements
BabelInvoice for PDFCreator require the following software
1-.Net framework 3 or above.
2- PDFCreator version 1.0.0 or above.
If you didn’t install the required software before running the installation the setup will detect the missing requirement and download it after confirming that is your choice.
Installation
1-After clicking on the exe file you will see the welcome screen, click on "Next".
283
Miscellanous
Figure 6.3. BabelInvoice Setup Wlcom Screen
2-The setup will check the required software and inform you of any missing software , click on "OK" to download and install it or cancel the setup and install it from any other location.
Figure 6.4. BabelInvoice Missing Software Dialog
If you chose to download the required software the download screen will appear and download will start immediately.
284
Miscellanous
Figure 6.5. BabelInvoice Download Screen
After finishing download you should install the software with you requirements.
3- Select the destination folder you want to install application in and click "Next".
285
Miscellanous
Figure 6.6. BabelInvoice Select Install Location
4-Setup will install the files to the selected destination.
286
Miscellanous
Figure 6.7. BabelInvoice Installation Process
5-Application needs to create new printer on PDFCreator printer, click "Next" to create it.
287
Miscellanous
Figure 6.8. BabelInvoice Add Printer
6-Click on Finish to complete the setup process
288
Miscellanous
Figure 6.9. BabelInvoice Finish Setup
7-After finishing the setup process you need to verify that the created printer is assigned properly with the right
profile to allow BabelInvoice work properly.
Open PDFCreator printers screen from PDFCreator->Printer->Printers.
Make sure that printer "BabelInvoice (PDFCreator)" is assigned to the profile "BabelInvoice".
289
Miscellanous
Figure 6.10. Assign the printer with the profile
8-You can use the BabelInvoice for PDFCreator by printing the documents with the created printer.
290
Miscellanous
Figure 6.11. BabelInvoice Printing Document
After printing the document you will see the main screen of the BabelInvoice application, type the required
parameter and send the document.
291
Miscellanous
Figure 6.12. BabelInvoice Email Form
6.5.3. Using BabelInvoice for Stand alone
BabelInvoice for Standalone version designed for use by command prompt.
After installing the package you can use it by calling the BabelInvoice.exe with the following parameters
292
Miscellanous
Figure 6.13. BabelInvoice for Standalone
-Help
Show list of available commands.
"Input File"
The invoice file path.
-User="UserName"
Set the FTP User (OPTIONAL).
-M"%metadata name%"="%Value%"
Add metadata to metadata.xml (OPTIONAL).
-Silent
Don’t show any error messages and write the error details in the log file and return exit code (OPTIONAL).
-Settings
Open the settings form (OPTIONAL).
-Config
Sets the configuration folder path (create if not exists), (OPTIONAL) default folder is Application Data
folder.
6.5.4. BabelInvoice Setting
To set up your BabelInvoice you should follow these steps:
1- Babelway Registration
If you don't have an account yet, please register at http://www.babelway.net
293
Miscellanous
2- Babelway Channel Import
You should Import the BabelInvoice Channel to your Babelway Account. If you don’t have a channel yet,
please
import
the
BabelInvoice
to
your
hub
by
clicking
on
this
link
http://www.babelway.net/i/ZTQwNTg3/BabelInvoice_1.5_using_email_form.
3- Configure FTP gateway in
You only need to set username and password for the input ftp gateway in, you will need these parameters in the
BabelInvoice application. Don't forget to save after setting the username and password.
Figure 6.14. BabelInvoice FTP In
To read more about ftp server gateway configuration click here
4- Activate and Deploy the channel
First activate the channel you've just imported by clicking on the "Activate channel" button on the top right of
the screen. Then deploy by clicking on "Deploy channel" at the bottom of the list of channels.
Figure 6.15. BabelInvoice activate channel
294
Miscellanous
Figure 6.16. BabelInvoice Deploy channel
To read more about Activate and Deploy a Channel click here
5- Configure BabelInvoice application
The first time you'll use the BabelInvoice application, the setting screen will appear. It will let you configure
the application with your parameters.
295
Miscellanous
Figure 6.17. BabelInvoice Settings
6.6. Verify yourself the chain
296
Miscellanous
To verify the message yourself, you will need 3 set of files. First you need the secure chain chunk containing
the message, then you need the corresponding timestamps and finally the signatures of all messages in the
chunk.
The following java code, using bouncycastle and CSVReader can be use to validate the chain. Please note that
several formats were used successively by Babelway and must be reflected in the validation program.
package com.babelway.business.securechain;
import
import
import
import
import
import
import
import
import
import
import
import
java.io.File;
java.io.FileInputStream;
java.io.InputStreamReader;
java.security.MessageDigest;
java.security.cert.CertStore;
java.security.cert.X509Certificate;
java.text.SimpleDateFormat;
java.util.Collection;
java.util.regex.Matcher;
java.util.regex.Pattern;
java.util.zip.ZipEntry;
java.util.zip.ZipInputStream;
import
import
import
import
import
import
import
import
import
import
import
import
import
import
org.bouncycastle.asn1.ASN1Sequence;
org.bouncycastle.asn1.DERObject;
org.bouncycastle.asn1.DERObjectIdentifier;
org.bouncycastle.asn1.cms.Attribute;
org.bouncycastle.asn1.ocsp.BasicOCSPResponse;
org.bouncycastle.cms.CMSSignedData;
org.bouncycastle.cms.SignerInformation;
org.bouncycastle.jce.provider.BouncyCastleProvider;
org.bouncycastle.ocsp.BasicOCSPResp;
org.bouncycastle.ocsp.CertificateStatus;
org.bouncycastle.ocsp.SingleResp;
org.bouncycastle.tsp.TimeStampToken;
org.bouncycastle.util.encoders.Base64;
org.bouncycastle.util.encoders.Hex;
import au.com.bytecode.opencsv.CSVReader;
import com.babelway.business.common.TestInOneEmptyHub;
import com.babelway.messaging.storage.StoreUtils;
public class SecureChainValidation extends TestInOneEmptyHub {
public static void main(String[] args) throws Exception {
validateSecureChainChunk(new File("..."), new File("..."), new File("..."));
}
private static void validateSecureChainChunk(File secureChainChunkFile, File secureChainChunkT
Pattern messageKeyPattern = Pattern.compile("/Accounts/Account-.*/Hubs/Hub-.*/Messages
ZipInputStream secureChainChunkFileZipInputStream = new ZipInputStream(new FileInputSt
secureChainChunkFileZipInputStream.getNextEntry();
CSVReader secureChainChunkFileReader = new CSVReader(new InputStreamReader(secureChain
ZipInputStream secureChainChunkTimestampsZipInputStream = new ZipInputStream(new FileI
secureChainChunkTimestampsZipInputStream.getNextEntry();
CSVReader secureChainChunkTimestampsReader = new CSVReader(new InputStreamReader(secur
try {
//1. validate timestamps
String[] firstTimestamp = secureChainChunkTimestampsReader.readNext();
String[] lastTimestamp = secureChainChunkTimestampsReader.readNext();
String firstChainId = firstTimestamp[10];
validateTimestampCms(firstTimestamp[3].getBytes(), true, false);
String lastChainId = lastTimestamp[10];
validateTimestampCms(lastTimestamp[3].getBytes(), true, false);
297
Miscellanous
//2. validate chain
//2.a verify the first timestamps
String[] previousSecureChainElement = secureChainChunkFileReader.readNext();
if (!firstChainId.equals(previousSecureChainElement[0])) {
throw new RuntimeException("First timestamp do not match with securech
}
String[] currentSecureChainElement = secureChainChunkFileReader.readNext();
while (previousSecureChainElement != null && currentSecureChainElement != null
//2.b verify the chain
validateChainHash(currentSecureChainElement, previousSecureChainElemen
//2.c verify signatures
Matcher matcher = messageKeyPattern.matcher(currentSecureChainElement[
matcher.matches();
String fileName = matcher.group(1) + "_" + matcher.group(2).toLowerCas
ZipInputStream zis = new ZipInputStream(new FileInputStream(secureChai
ZipEntry entry;
boolean found = false;
while ((entry = zis.getNextEntry()) != null) {
if (entry.getName().equals(fileName)) {
MessageDigest md = MessageDigest.getInstance("SHA-512"
if (!new String(Hex.encode(md.digest(StoreUtils.getByt
throw new RuntimeException("Signature do not m
}
found = true;
break;
}
}
if (!found) {
throw new RuntimeException("Missing signature");
}
previousSecureChainElement = currentSecureChainElement;
currentSecureChainElement = secureChainChunkFileReader.readNext();
}
//2.a verify the last timestamps
if (!lastChainId.equals(previousSecureChainElement[0])) {
throw new RuntimeException("Last timestamp do not match with securecha
}
} finally {
secureChainChunkFileReader.close();
secureChainChunkTimestampsReader.close();
}
}
private static void validateChainHash(String[] secureChainElement, String previousChainHashAsH
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String previousChainHash = null;
String signatureHash = null;
String linkedId = null;
if (secureChainElement[9].equals("SCv1")) {
linkedId = secureChainElement[1];
signatureHash = new String(Base64.encode(secureChainElement[7].getBytes()), "U
previousChainHash = new String(Base64.encode(Hex.decode(previousChainHashAsHex
} else if (secureChainElement[9].equals("SCv2")) {
linkedId = secureChainElement[1];
signatureHash = org.postgresql.util.Base64.encodeBytes(secureChainElement[7].g
previousChainHash = org.postgresql.util.Base64.encodeBytes(Hex.decode(previous
previousChainHash = previousChainHash.replaceAll("\n", "\\\\012");
} else if (secureChainElement[9].equals("SCv3")) {
linkedId = secureChainElement[0];
signatureHash = secureChainElement[7];
previousChainHash = previousChainHashAsHex;
} else {
throw new RuntimeException("chain format not supported");
}
StringBuilder sb = new StringBuilder();
sb.append(linkedId).append(';').append(sdf.parse(secureChainElement[2]).getTime()).app
298
Miscellanous
MessageDigest md = MessageDigest.getInstance("SHA-512");
boolean r = new String(Hex.encode(md.digest(sb.toString().getBytes())), "UTF8").equals
if (!r) {
throw new RuntimeException("chain not ok at " + secureChainElement[0] + " s ="
}
}
@SuppressWarnings("unchecked")
private static void validateTimestampCms(byte[] bytes, boolean validateTimestamp, boolean vali
DERObjectIdentifier ID_CONTENT_TYPE = new DERObjectIdentifier("1.2.840.113549.1.9.3");
DERObjectIdentifier ID_MESSAGE_DIGEST = new DERObjectIdentifier("1.2.840.113549.1.9.4"
DERObjectIdentifier ID_SIGNING_TIME = new DERObjectIdentifier("1.2.840.113549.1.9.5");
DERObjectIdentifier ID_SIGNATURETIMESTAMPTOKEN = new DERObjectIdentifier("1.2.840.1135
DERObjectIdentifier ID_COMPLETEREVOCATIONREFERENCES = new DERObjectIdentifier("1.2.840
CMSSignedData signedData = new CMSSignedData(Hex.decode(bytes));
signedData.getSignedContent().getContent();
Collection<SignerInformation> signers = signedData.getSignerInfos().getSigners();
SignerInformation signer = (SignerInformation) signers.iterator().next();
CertStore signedDataCertStore = signedData.getCertificatesAndCRLs("Collection", Bouncy
X509Certificate signingCertificate = (X509Certificate) signedDataCertStore.getCertific
if (!signer.verify(signingCertificate.getPublicKey(), BouncyCastleProvider.PROVIDER_NA
throw new RuntimeException("Signature is not OK");
}
signer.getSignedAttributes().get(ID_SIGNING_TIME).getAttrValues().getObjectAt(0).getDE
signer.getSignedAttributes().get(ID_CONTENT_TYPE).getAttrValues().getObjectAt(0).getDE
signer.getSignedAttributes().get(ID_MESSAGE_DIGEST).getAttrValues().getObjectAt(0).get
if (validateTimestamp) {
TimeStampToken timeStampToken = null;
for (SignerInformation signerInformation : signers) {
Attribute attribute = signerInformation.getUnsignedAttributes().get(ID
if (attribute != null) {
byte[] timestampBytes = attribute.getAttrValues().getObjectAt(
CMSSignedData cmsSignedData = new CMSSignedData(timestampBytes
timeStampToken = new TimeStampToken(cmsSignedData);
}
}
if (timeStampToken != null) {
SignerInformation timestampSigner = (SignerInformation) timeStampToken
CertStore timestampCertStore = timeStampToken.getCertificatesAndCRLs("
X509Certificate timestampSigningCertificate = (X509Certificate) timest
if (!timestampSigner.verify(timestampSigningCertificate.getPublicKey()
throw new RuntimeException("Timestamp status is not OK");
}
} else {
throw new RuntimeException("No timestamp found");
}
}
if (validateOcsp) {
BasicOCSPResp basicResponse = null;
for (SignerInformation signerInformation : signers) {
Attribute attribute = signerInformation.getSignedAttributes().get(ID_C
if (attribute != null) {
DERObject derObject = attribute.getAttrValues().getObjectAt(0)
basicResponse = new BasicOCSPResp(new BasicOCSPResponse((ASN1S
}
}
if (basicResponse != null) {
SingleResp singleResp = basicResponse.getResponses()[0];
if (singleResp.getCertStatus() != CertificateStatus.GOOD) {
throw new RuntimeException("OCSP status is not OK");
}
} else {
throw new RuntimeException("No ocsp found");
}
}
299
Miscellanous
}
}
300