Babelway B2B Integration Platform Documentation


Welcome to the Babelway documentation.

This documentation is structured to help you to quickly find an answer to your questions.

To best suit your needs, the documentation is available in the following formats:

In addition to this documentation, you may find additional information in the following places:

Self-service help

Babelway B2B Integration Platform Documentation


1. Introduction - Babelway concept
2. Generalities
2.1. Login and registration
2.2. Page structure
2.3. Finding help
2.4. Grids
2.5. Style conventions
3. Monitoring
3.1. Messages
3.1.1. Messages list
3.1.2. Message details
3.1.3. Resubmitting a Message
3.1.4. Resubmit multiple messages
3.1.5. Verify a message integrity
3.2. Alerts
3.2.1. Alerts list
3.2.2. Alert details
3.2.3. All possible alerts types
3.3. Statistics
3.3.1. Status statistics
3.3.2. Time evolution statistics
3.3.3. Traffic shape statistics
4. Channels
4.1. Overview
4.1.1. Channels list
4.1.2. Creation of a new Channel
4.1.3. Channel detail
4.1.4. Deployment
4.1.5. Delete a Channel
4.1.6. Duplicate a Channel
4.2. Gateways
4.2.1. Gateways list
4.2.2. Creation of a gateway
4.2.3. Gateway detail
4.2.4. Gateway types
4.3. Message definitions
4.3.1. Message definitions list
4.3.2. Creation of a message definition
4.3.3. Message definition detail
4.3.4. Update the message definition tree
4.3.5. Message definitions formats
4.3.6. Extra processings
4.3.6.1. Extra processings on message definition IN
4.3.6.2. Extra processings on message definition OUT
4.4. Transformations
4.4.1. Transformations list
4.4.2. Creation of a transformation
4.4.3. Transformation detail
4.4.4. Drag and Drop Transformation
4.4.4.1. Nodes mapping
4.4.4.2. Mapping loops
4.4.4.3. Mapping choices nodes
4.4.4.4. Multi nodes mapping
4.4.4.5. Functions
4.4.4.6. Filter Function
4.4.4.7. Format Function
4.4.4.8. If Function
4.4.4.9. Using or changing metadata
4.4.4.10. Counter
4.4.4.11. Creating XSLT Functions
4.4.4.12. Advanced options
4.4.5. Xslt Transformation
4.4.6. No Transformation
4.5. Notifications
4.5.1. Notifications list
4.5.2. Notification detail
4.6. Lookup tables
4.6.1. Lookup tables list
4.6.2. Create a lookup table
4.6.3. Lookup table detail
4.6.4. Use your lookup tables.
4.6.5. Automatic Population of Lookup Tables
4.7. Routing
4.7.1. Routings list
4.7.2. Routings detail
4.7.3. Edition of routings from channels section
4.8. Test cases
4.8.1. Test case detail
4.9. Certificates
4.9.1. Trust new certificate
4.9.2. Add a certificate
4.10. Metadata
4.10.1. Metadata usage
4.10.2. System Metadata
4.11. Change Log
4.11.1. Environment change Log
4.11.1.1. Change detail
4.11.2. Elements change Log
5. Catalogue
5.1. Searching the catalogue
5.2. Import a template
5.3. Use a wizard
5.4. Some catalogue items in details
6. Admin
6.1. Personal data
6.2. Environment settings
6.2.1. Best Practices
6.3. Billing
6.3.1. Buy Credits
6.4. Users
6.4.1. Add a User
7. Miscelleanous
7.1. B2B Integration Project Management
7.2. DNS load-balancing
7.3. External References
7.4. Rest API
7.4.1. Introduction
7.4.2. Available actions
7.4.2.1. tickets
7.4.2.2. ticket
7.4.2.3. deleteTicket
7.4.2.4. messages
7.4.2.5. message
7.4.2.6. channels
7.4.2.7. gateways
7.4.2.8. messageDefinitions
7.4.2.9. transformations
7.4.2.10. catalogue
7.4.3. Code samples
7.5. BabelInvoice
7.5.1. BabelInvoice Solution
7.5.2. Install BabelInvoice for PDFCreator
7.5.3. Using BabelInvoice for Stand alone
7.5.4. BabelInvoice Setting
7.6. Verify yourself the chain

Chapter 1. Introduction - Babelway concept

Babelway is a B2B integration Software-as-a-Service. Babelway provides data translation software and B2B communication gateways organised in a full-service proposition. Babelway services are fully available on-demand via a web-browser. There is no software or hardware to buy and maintain in-house, but yet 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 a good introduction to the application.

Chapter 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 the the url https://www.babelway.net/.

Login page

Figure 2.1. Login page


If you are already a registered user, just fill in your login and password 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 for free for 30 days.

2.2. Page structure

All the pages of the application have the following elements (see figure) :

Page structure

Figure 2.2. Page structure


  • The goal of the top bar is to show you in which environment you are working. The following informations are available :

    • 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.

    • You'll find in the Monitoring section all the functionnalities 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 must be processed by the system.

    • The Catalogue offers you a set of wizards, or of predefined elements, that allows you to define your Channels more faster and easily

    • 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 breadcrumb just shows you precisely where you are in the application, and allows you to return up.

  • 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 can use many methods to get help. Most of this help is available via the help menu, right of the top bar.

Page structure

Figure 2.3. Page structure


  • Page introduction. In the begin of every page, a short text gives you contextual help about the page.

    Page introduction

    Figure 2.4. Page introduction


    If you don't want to see it anymore, just close it by clicking the cross upper-right of this zone, and this zone won't be displayed anymore for all the following pages. Only a small image will remain, in place of the cross, that will allow you to make it appear again if you want.

  • In many places of the application, inline help is available. It is notices by the icon . To see the help, just put your mouse on the icon.

    Inline help

    Figure 2.5. Inline help


  • Reference manual. This manual, available via the help menu.

  • Babel academy. A training given by an expert user of Babelway. Click in the help menu to access.

  • Support. If you have any question, don't hesitate to ask to support@babelway.com . We'll answer you very rapidly. The link is also accessible via the help menu.

  • Tutorial. The tutorial is a good way to learn the basics of the interface. You can launch the tutorial by clicking on the tutorial entry in the help menu.

  • Feedback. At any time, if you experienced a problem, or just have some feedback or suggestion about the interface, you can send it to us by clicking the feedback button, bottom-right of the interface.

    Feedback

    Figure 2.6. Feedback


2.4. Grids

In many pages of the application, grids of data are displayed.

The grids are very powerful, and have many options, that are described here.

The grids are always displayed as in the following figure.

Grids

Figure 2.7. Grids


  • The headers contains the title of the column.

    On most columns, you can just 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 noticed by the icon

    You can resize columns by clicking on the separation between two columns, and dragging the icon to the wanted size.

    You can also reorder columns by just 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 put in this line.

    Note

    We should also write some help about specificities of some searches (custom for dates, format for searching on integers, autocomplete for searching on elements, ...)
  • The data zone just displays the asked data.

  • The zone with the number of data tells you how many records have matched your criteria, and which part of these 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 display by default all the next tables with this number of records.

  • The action buttons allow you the following actions :

    • allows you to change the displayed columns.
    • allows you to clear all search criteria.
    • allows you to refresh the data.
    • allows you to export the data.

2.5. Style conventions

Note

We should describe here all the rules about how things are designed in our interface. For example, the 4 levels of actions buttons (and their disabled state), or the style for the clickable things

Chapter 3. Monitoring

The monitoring section of the application contains all the stuff 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 functionnalities 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.

Note

The items in the previous list should link to the section that details the functionnality.

3.1. Messages

A message encapsulates all the informations about the processing of an input file of data by the Babelway systems.

The message contains the following information :

  • The incoming file: the file received by the Babelway from the source external system.

  • The outgoing file: the file sent by the 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, ...

  • Informations 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 auitomatically selected.

List of messages

Figure 3.1. List of messages


Many informations 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 screens shows you all the details about the processing of a message by the Babelway systems. It also allows you to make all needed 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.

Message details screen

Figure 3.2. Message details screen


The following informations can be available on a message:

Created On

Date and time of element creation.

Status

Message status, can be either In Progress, Success (waiting ack), Success, Error or Error (closed). The status Error (closed) allows to mark messages in error, so that you can know very easily which error still requires management, and which has already been closed.

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 messaging engine was enable 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 differenciated from the Status field, that just 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, that will cause the test to be considered as 'failed' if not fulfilled.

Date In

The date and time when the incoming file was received by Babelway system from external source system.

Date Out

The date and time when the outgoing file was sent by Babelway system to external target system.

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 that uniquely identifies a Message.

Reference

Message reference or file name.

Acknowledgment Reference

Message that tells that the target external system has correctly received the output file.

Acknowledgment timestamp

Date and time of the acknowledgment.

Gateway in message key

Specific communication-level identifier from the gateway in

Gateway in message status

Specific communication-level informations 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 informations from the gateway out, like related id's or addressing information of partner systems

Size of incoming message

Incoming message size (in bytes).

Size of outcoming message

Outgoing message size (in bytes).

Message XML In

Incoming message after xml conversion and before processing.

Message XML Out

Outgoing message in xml format after conversion and before conversion to output format.

Context

Additional list of properties and log of processes applied during message processing.

Click on Back action to go back 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 test message and of outgoing message that will be used as expected message out.

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.

Resubmit message screen

Figure 3.3. 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 maunch 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.

Selecting multiple messages for resubmit

Figure 3.4. Selecting multiple messages for resubmit


The function works the same way as the resubmit message function. The difference is that you process here many messages.

Resubmit multiple messages screen

Figure 3.5. 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.

Resubmit multiple messages in progress

Figure 3.6. Resubmit multiple messages in progress


3.1.5. 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 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 a 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 garanties 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.

Signature info

Figure 3.7. Signature info


Note

adresse of the verification page : https://www.babelway.net/SelfService3/MessageLongtermSearch.html should have a link from outside of the application.

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 use the chain search functionnality.

The chain search allows you to upload the file you have received in the previous screen and then click on the "List" button ; it will show you information about the message like when and in which account it has been processed using the secure chain. On top of that, it will show you the previous and next timestamp of that chain element (the timestamp are the marks that Babelway team signs everyday using his ID card).

Secure Chain Search

Figure 3.8. Secure Chain Search


If a message has been processed twice, it will be shown 2 entries in the result.

Secure Chain Search Result

Figure 3.9. Secure Chain Search Result


It is a way to prove two things:

The integrity of the message (it has not been modified)

The authenticity of origin (it was processed in the given account as each account environment has its own certificate that is not shared with other account environment).

The difference between the secure chain search and usual message search is that

1- Its a public page (anybody can check, even people that don't have a Babelway account as receivers are not automatically Babelway users)

2- The message search is limited to 3 months if the long term archive option is not activated. The secure chain search is unlimited in time (but gives less information if the message itself is not archived).

3.2. Alerts

An alert is a signal sent by the Babelway system to inform you that something abnormal has happened. For example, most common type of alert is to inform you when the processing of a message failed.

All alerts should normally be handled by an human. Once the problem is solved, the alert should be deleted (or at least closed).

You'll be warned in the WelcomePage if you have opened alerts.

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.

List of alerts

Figure 3.10. 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 to take the necessary actions to solve the problem.
Detail of an alert

Figure 3.11. 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 opened 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 solvge 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 resubmit easily 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.

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

...

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. These 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 splitted following the status of the messages. The total count will also be displayed.

Status by channel

Figure 3.12. 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 amongst the many Success messages.

Status by channel, Success messages are hidden.

Figure 3.13. Status by channel, Success messages are hidden.


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 exactly these messages.

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 specially 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.

Messages stats

Figure 3.14. Messages stats


3.3.2. Time evolution statistics

This screen allows you to have see the evolution of the messages processed over time.

This statistics counts 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 just 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.

Count and sizes of messages by month.

Figure 3.15. Count and sizes of messages by month.


Zoom in line graphic.

Figure 3.16. Zoom in line graphic.


3.3.3. Traffic shape statistics

This graphic shows you the graphic shape over one days, 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.

Traffic shape over owe week

Figure 3.17. Traffic shape over owe week


Traffic shape over owe day

Figure 3.18. Traffic shape over owe day


Chapter 4. Channels

This section of the application contains all the stuff needed to configure how the messages must be processed by the Babelway systems.

The different sub-menu items contains 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.

It's 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.

.

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 to the production systems.

Channels list screen

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

Tells if the channel is now running in the production system (value top bar ), or not (value Off ). See deployment for more details.

Next deployment

Tells which kind of change will be applied to the production systems at next deployment. Possible values are No change, Start, Stop or Apply changes. See deployment for more details.

Enabled

Tells if the channel is Enabled ) or Disabled. See deployment for more details.

Gateway in

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 uniqely 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 to create the 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.

Create a channel

Figure 4.2. Create a channel


4.1.3. Channel detail

All the information required to configure a channel is displayed here, splitted in different tabs. Tabs are presented 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.

Channel detail screen

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.

Message storage duration

How long the message processed by this channel will be kept. This value can also be set at environment level.

Status

Status ON means that the channel is currently running in the production systems. Status OFF means the channel is NOT currently running in the production systems.

Next deployment action

Tells what wil happen with this channel at next deployment. 'ApplyChanges' 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 wil be done about this channel at next deployment.

It displays informations about date and times where the channel was created or last updated.

You can also precisely see and control the informations about the deployment of this channel (fields Status, Next deployment and Enabled ? ). All the informations avout these 3 fields and the associated commands can be found in the deployment section.

The Delete action allows you to delete your channel.

The Duplicate action allows you to duplicate your channel.

Gateway In

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.

You can find all informations 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 informations 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 informations 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 informations 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 informations 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.

You can find all informations 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 informations 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 informations about how to define and configure gateways in the test cases chapter.

Related Items

Related Items

Figure 4.4. Related Items


That tab gives 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

Display the channels using the current channel's gateway In

Other channels with same message definition IN

Display the channels using the current channel's message In

Other channels with same message definition OUT

Display the channels using the current channel's message Out

Other channels with same gateway OUT

Display the channels using the current channel's gateway Out

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. Its is not possible do deploy changes of only one channel.

Keep also in mind that any server, mail adress, 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 general tab of the channel detail screen.

In all the screens that deals with deployment, the 3 following concepts are used:

Status

The status tells if a channel is currently deployed in production ( On ) or not ( Off ).

Enabled

Channels are normally enabled, and all channels are deployed in production every time you deploy. But it is possible to disable a channel, so that this channel is completely ignored in all operations related to deployment. A disabled channel is almost like a deleted channel, except that you keep it for later use (by enabling it again). Disabling a channel can also be useful if you want to deploy your environment, but have some channels that are under development, and not yet ready to be promoted to production.

Next deployment

The next deployment field shows what will happen with the channel during next deployment. The possible values are:

  • No Change: channel will not be impacted by next deployment. It can be because the channel is disabled, or because the channel is enabled, but has not changed since the last deployment.
  • Start: channel is currently not deployed, but will be after next deployment.
  • Apply Changes: channel is currently activated and modifications will be applied at deployment.
  • Stop: channel is currently deployed, but will be undeployed at next deployment.

Before the deployment really take 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:

Deployment confirmation

Figure 4.5. 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 only includes elements that are deletable, that means that are not referenced by other channels or transformations.

Delete a channel

Figure 4.6. 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.

Duplicating a channel

Figure 4.7. Duplicating a channel


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 stuff 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 functionnalities.

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 are used to specify the way incoming messages are communicated from the source external system to Babelway.
  • Gateway out are 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 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 Gateways

List of gateways

Figure 4.8. List of gateways


The list can contain the following columns:

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 of the 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.

Clean gateways

Figure 4.9. Clean gateways


4.2.2. Creation of a gateway

To create a new gateway, you have two main options:

You can access this choice by clicking on Create a gateway in the gateways list screen, or directly from the channel detail screen.

Gateway creation choice

Figure 4.10. Gateway creation choice


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

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.

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.

Messages processed by this gateway

A link that shows you the message list filtered to show messages processed by this gateway.

Change Log

This tabs shows you all the history of changes 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 gateway types used in the application, with some more information about their specificities, or their specific parameters.

  • Email Gateway in: 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 login and password.

  • SFTP Client Gateway: Incoming messages are polled and retrieved from a remote sftp server using login and password.

  • FTP Server Gateway: Incoming messages are transferred to a Babelway specific Ftp server and processed as soon as they arrive.

  • SFTP Server Gateway: Incoming messages are transferred to a Babelway specific sftp server and processed as soon as they arrive.

  • AS2 Gateway: A communication standard largely used in retail environment to secure communications over Internet.

  • Internal Gateway: A gateway used for internal transfer of messages between channels inside Babelway platform.

  • OFTP Server Gateway In: Incoming messages are transferred to a Babelway specific OFTP server and processed as soon as they arrive.

  • OFTP Client Gateway In: Incoming messages are polled and retrieved from a remote OFTP server using login and password.

  • Http Gateway In: Incoming messages are transferred to a Babelway specific Http server and processed as soon as they arrive.

  • X.400 Gateway In: Incoming messages are transferred to a Babelway specific X.400 server and processed as soon as they arrive.

  • Scheduler Gateway In: Create new messages based on time events.

  • Store Gateway In: Incoming messages are polled and retrieved from a remote store server like FTP, S3, NFS...

  • SAP Gateway In: Incoming messages are pushed to Babelway from a SAP server and processed as soon as they arrive.

  • E-conomic Gateway In: Incoming messages are pushed to Babelway from a e-conomic account and processed as soon as they arrive.

  • Email Gateway Out: With an Email Gateway Out, Processed messages are attached to email messages and sent to a specific email address.

  • FTP Client Gateway: With a Ftp Client Output Gateway, outgoing messages are transfered to an external Ftp server.

  • SFTP Client Gateway: With a SFTP Client Output Gateway, outgoing messages are transfered to an external SFTP server.

  • FTP Server Gateway:With a Ftp Server Output Gateway, outgoing messages are transferred to a Babelway FTP server.

  • AS2 Gateway: A communication standard largely used in retail environment to secure communications over Internet.

  • Generic Gateway: .

  • Internal Gateway: The internal gateway in / out are used for internal transfer of messages between channels inside the same account envioronment.

  • Null Gateway: A gateway used for test and development purposes. The outgoing messages are not sent anywhere.

  • Splitter Gateway: A gateway used to split your messages and pass them to others gateways.

  • OFTP server Gateway:With a OFTP Server Output Gateway, outgoing messages are transferred to a Babelway OFTP server.

  • OFTP Client Gateway: With a OFTP Client Output Gateway, outgoing messages are transfered to an external OFTP server.

  • HTTP out Gateway: With a HTTP out Output Gateway, outgoing messages are transferred to a Babelway HTTP server.

  • Http Client Out Gateway:With an HttpClientOut Gateway, outgoing messages are send using a Http connection.

  • X.400 Gateway Out:With a X.400 Gateway,Processed messages are attached and send to specific trading partner address using a X.400 network.

  • Aggregator Gateway Out:The aggregator allows to merge messages into one larger file. The resulting messages is forwarded to an other channel in the same environment.

  • Store Gateway Out: Outgoing messages are pushed from Babelway to outgoing messages are transfered to a remote store server like FTP, S3, NFS...

  • SAP Gateway Out: Outgoing messages are pushed from Babelway to a SAP server.

Email Gateway In

Email gateway in allows 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 will be sent as email attachment.If the address you try to create already exists, you will receive an error message and you will have to enter a new address. Also remember that this email address will only be created at next channel deployment.

Email Gateway configuration

Figure 4.11. Email Gateway configuration


Ftp Client Gateway In

With a Ftp Client Input Gateway, incoming messages are transfered to an external Ftp server. Babelway platform polls this server at regular intervals and retrieves incoming files to process them.

The specific parameters are :

Server

External ftp server address where Babelway platform should fetch messages.

Username

Login or username to access files on this external ftp server.

Password

Password associated to previous username to access account.

Directory

Directory where files are to be fetched on the server.

Passive Mode

Indicates that the ftp connection is in passive. Setting this to true means the ftp client will establish two connection to the ftpserver client.

Polling Interval

Interval of times in seconds between checking for message arrival.

Post Process Delete

Delete file once it has been retrieved and processed.

Post Process Suffix

The file suffix which will be added to the file name after it is processed.

Post Process Directory

The ftp directory to which the file will be moved after it is processed

Error Delete

If true, the file will be deleted if an error occurs during processing. Note that in that case error-directory and error-suffix have no effect.

Error Suffix

The file suffix which will be added to the file name after an error occurs during processing.

Error Directory

The ftp directory to which the file will be moved after when an error occurs during processing.

Input Suffix

The file suffix used to filter files targeted for consumption (note: add the dot, so something like '.esbIn'). This can also be specified as an empty string to specify that all files should be retrieved.

When a message is transfered to the ftp server, it is processed immediately then original file is removed from server.

Ftp Server Gateway In

With a Ftp Server Input Gateway, incoming messages are received on a Babelway specific ftp server and processed as soon as they arrive.

The specific parameters are :

Hostname

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 will be linked to a specific directory on ftp server.

Password

Password associated to previous username to access your account.

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.

When a message is received by the ftp server, it is processed in the 90 seconds (default polling interval) max. After processing, the original file is removed from server.

If you are using an ftp server both as incoming and outgoing gateways, you cannot use the same login for both gateway servers.

SFTP Client Gateway In

With a SFTP Client Input Gateway, incoming messages are transfered to an external SFTP server. Babelway platform polls this server at regular intervals and retrieves incoming files to process them.

The specific parameters are:

Protocol

Use sftp protocol for incoming messages that transfered to SFTP server.

Hostname

Sftp server host name

Username

Login or username to access files on this external sftp server.

Password

Password associated to previous username to access account.

Private key

Private key associated to previous username to access account.

Directory

Directory where files are to be fetched on the server.

Polling Interval

Interval of times in seconds between checking for message arrival.

Post Process Delete

Delete file once it has been retrieved and processed.

Post Process Suffix

The file suffix which will be added to the file name after it is processed.

Post Process Directory

The sftp directory to which the file will be moved after it is processed

Error Delete

If true, the file will be deleted if an error occurs during processing. Note that in that case error-directory and error-suffix have no effect.

Error Suffix

The file suffix which will be added to the file name after an error occurs during processing.

Error Directory

The sftp directory to which the file will be moved after when an error occurs during processing.

Input Suffix

The file suffix used to filter files targeted for consumption (note: add the dot, so something like '.esbIn'). This can also be specified as an empty string to specify that all files should be retrieved.

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.

When a message is transfered to the sftp server, it is processed immediately then original file is removed from server.

SFTP Server Gateway In

Using the SFTP Server Input 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 publickey user authentication mechanisms.

The specific parameters are:

Hostname

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 will be linked to a specific directory on the SFTP server.

Password

The password associated to the previous username to access your account. This can be left empty if you choose to only use the public key authentication mechanism.

Public Key

The public key associated to 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 public key (OpenSSH, Putty or DER format). More information about generating such a key can be found at the end of this page.

you can set both password and public key fields. In that case, 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

Server address that sends incoming messages.

To

Babelway destination server.

Subject

AS2 message subject

Recipient Address

The endpoint URL of the receiving message gateway ,requires protocol prefix in URL (http:// or https://).

Request Receipt

Should a receipt be sent when a request is received or not.

Receipt Return URL

URL address where to send receipt.

Signed Receipt

Should receipt be signed or not.

Signing Algorithm

Select algorithm used for signing receipt, if any.

Asynchronous Receipt

Should receipt be sent asynchronously or not.

Message Compression Required

Should send message be compressed or not?

Message Signing Required

Should send message be signed or not?

Message Encryption Required

Should send message be encrypted or not?

Encryption Algorithm

Select algorithm used for encrypting message, if any.

Message Signature Enforced

Should message signature be enforced or not?

MIC Algorithm

Select MIC algorithm, if any.

Message Encryption Enforced

Should message encryption be enforced or not?

Maximum Retries

Maximum number of retries if message sending failed?

Retry Interval

Interval of time before trying to send message again (in seconds)?

Certification For Encryption

Certificate used for message encryption?

Certification For Verification

Certificate used for message verification?

AS2 documentation

File containing your AS2 parameters. It should be completed as detailed hereafter before being sent to your AS2 partner for configuration of his system side.

After channel deployment, your AS2 connection will be available to receive messages.

To report AS2 parameters to the other party, click on GenericAS2Specifications.doc command to download a Word file including all parameters values required to establish AS2 communication. In this file, you should change Identity field to match the To field value (see above) as automatically attributed by Babelway interface, this value follows " BABELWAY_AS2_xxxxx " form.

Once this parameter has been changed to match your settings, you can send the file to the other party to give him all parameters he will require to establish a communication with your channel.

GenericAS2Specifications Word file example

Figure 4.12. GenericAS2Specifications Word file example


Warning

  • À quoi servent les paramètres non (encore) documentés ?

  • Y a-t-il un polling ?

  • Le "Retry Interval" est-il bien exprimé en secondes (à ajouter dans l'interface?) ? Si oui, y a-t-il un maximum et/ou un minimum ?

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:

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.

Polling int ... in seconds

The interval in seconds between each polling,default is 90s.

Use TLS

Use TLS (SSL) for communication

ISDN Number

List of phone numbers used used for ISDN communication instead of Internet communication. The expected format is a comma separated list of phone numbers ex : 0049511211306466 or 0049511211306466,003221234567

Partner SSID

The OFTP ID provided by your partner.

Partner SFID

The SFID provided by your partner. If none has been provide, this is probably the same as his 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'.

Use Compression

Compresses the messages.

Sign messages

Sign outgoing messages using the key selected in "My private key". This allows your partner to verify that you are the one sending the message.

Encrypt messages

Encrypt outgoing messages using the certificate selected in "certificate for data". This allows your partner to be the only one able to decrypt the messages sent.

Receive signed messages

This allows you to verify that your partner are the one sending the message.

Request signed ack (EERP)

Requests that incoming acknowledgments are signed. The signature will be verified using the Certificate for EERP. This allows you to be sure that only the partner could have signed the incoming messages.

Signature key

Select Signature key or go to Keystore edit.

Encryption certificate

Select Encryption certificate or go to Keystore edit.

Encryption algorithm

Select Encryption algorithm or go to Keystore edit.

Certificate

Select Certificate for data or go to Keystore edit.

Certificate for EERP

Select Certificate for EERP or go to Keystore edit.

Version

Advanced. Babelway is supporting both OFTP1 and OFTP2. The way it works is that when a connection is open, we are using the OFTP built-in mechanism to negotiate the protocol version. The protocol will be the highest possible. Valid values are : OFTP_V12 / OFTP_V13 / OFTP_V14 / OFTP_V20

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)

Restart Position

Advanced. You can specify the restart position.

Transfer Mode

Advanced. Once the connection is open 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

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 2048

Credit Count

Advanced. Control the OFTP "creditCount" parameter. This is the number of data command ( = CREDIT) that could be exchange before an OFTP confirmation from the partner. Default is 64

Max BData Len

Advanced. Control the OFTP "maxBDataLen" parameter (ISDN only). Default is 2048

Max BData Blocks

Advanced. Control the OFTP "maxBDataBlocks" parameter (ISDN only). Default is 7

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 support@babelway.com .

When a message is transfered to the Oftp server, it is processed immediately then original file is removed from server.

OFTP client Gateway In

With an OFTP Client Input 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:

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.

Polling int ... in seconds

The interval in seconds between each polling,default is 90s.

Use TLS

Use TLS (SSL) for communication

ISDN Number

List of phone numbers used used for ISDN communication instead of Internet communication. The expected format is a comma separated list of phone numbers ex : 0049511211306466 or 0049511211306466,003221234567

Partner SSID

The OFTP ID provided by your partner.

Partner SFID

The SFID provided by your partner. If none has been provide, this is probably the same as his 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'.

Use Compression

Compresses the messages.

Sign messages

Sign outgoing messages using the key selected in "My private key". This allows your partner to verify that you are the one sending the message.

Encrypt messages

Encrypt outgoing messages using the certificate selected in "certificate for data". This allows your partner to be the only one able to decrypt the messages sent.

Receive signed messages

This allows you to verify that your partner are the one sending the message.

Request signed ack (EERP)

Requests that incoming acknowledgments are signed. The signature will be verified using the Certificate for EERP. This allows you to be sure that only the partner could have signed the incoming messages.

Signature key

Select Signature key or go to Keystore edit.

Encryption certificate

Select Encryption certificate or go to Keystore edit.

Encryption algorithm

Select Encryption algorithm or go to Keystore edit.

Certificate

Select Certificate for data or go to Keystore edit.

Certificate for EERP

Select Certificate for EERP or go to Keystore edit.

version

Advanced. Babelway is supporting both OFTP1 and OFTP2. The way it works is that when a connection is open, we are using the OFTP built-in mechanism to negotiate the protocol version. The protocol will be the highest possible. Valid values are : OFTP_V12 / OFTP_V13 / OFTP_V14 / OFTP_V20

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)

Restart Position

Advanced. You can specify the restart position.

Transfer Mode

Advanced. Once the connection is open 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

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 2048

Credit Count

Advanced. Control the OFTP "creditCount" parameter. This is the number of data command ( = CREDIT) that could be exchange before an OFTP confirmation from the partner. Default is 64

Max BData Len

Advanced. Control the OFTP "maxBDataLen" parameter (ISDN only). Default is 2048

Max BData Blocks

Advanced. Control the OFTP "maxBDataBlocks" parameter (ISDN only). Default is 7

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 support@babelway.com .

When a message is transfered to the Oftp server, it is processed immediately then original file is removed from server.

Http In Gateway

With an Http In Gateway, incoming messages are received on a Babelway specific server and processed as soon as they arrive.

The specific parameters are:

Username

Login or username to access the service .

Password

Password associated to previous username.

HTTPPostURL

using the HTTP Post protocols.

SOAPURL

using the SOAP Post protocols. WSDL

After channel deployment, your connection will be available to send messages.

The HTTP Post can do the following:

  • Take the input of the HTTP Post as the message.

  • Use the HTTP Post with an HTML Form. You need to set the string-property "contentIsForm" to true. You can specify which parameter to use as the file input "messageParameterName". You can also decode the message with one of the following method : "base64" and "urlencode".

X.400 Gateway In

With a X.400 Input Gateway,allows to receive message from X.400 networks. Your trading partners can reach you to your hub private X.400 address.

The specific parameters are:

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 format are: 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 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.

Filename

Filename for the input message. The default value is attachment. Note that only the metadata message_uuid, receiveTimestamp, and gatewayInTimestamp can be used at this stage in the process.

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

Xslt

Allows to upload an Xslt to create another message than the default message

If no values are provided, the scheduler will create an input message every 90 seconds. The input message will enter the channel and follow the processing steps as in any other channel

The message has the following structure:

<?xml version="1.0" encoding="UTF-8"?>
<simpleScheduler>
	<date>
		<time>1327871680013</time>
		<display>20120129-221440</display>
	</date>
	<gatewayIn>9999999</gatewayIn>
</simpleScheduler>
		

Where the time and display tags provide the current time and the gatewayIn tag provides the gateway Id

To create another message than the default message, you can specify and upload an Xslt transformation. For instance, the following xslt will use the built-in XPath function used to search for message and message record to retrieve message records for every message since yesterday midnight:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:date-util="java:com.babelway.messaging.transformation.xslt.function.DateUtil"
	xmlns:enrich="java:com.babelway.messaging.transformation.xslt.function.Enrich"
	xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="no"/>
		<xsl:template match="/">
			<xsl:variable name="start" select="date-util:formatDateLenient(concat(date-util:formatDateLenient(date-util:currentDate(), 'yyyy-MM-dd HH:mm:ss.SSS', 'yyyy', 'true'),number(date-util:formatDateLenient(date-util:currentDate(), 'yyyy-MM-dd HH:mm:ss.SSS', 'D', 'true'))-1), 'yyyyD', 'yyyy-MM-dd''T''HH:mm:ss', 'true')"/>
			<xsl:variable name="messages" select="enrich:searchMessage($start)"/>
			<xsl:copy-of select="$messages" />						
		</xsl:template>			
</xsl:stylesheet>
		

There is also the possibility to upload your own code to create a new timebase gateway In. Please contact the support if you need this kind of gateway.

Internal Gateway In

The internal gateway in / out are used for internal transfer of messages between channels inside the same account environment.

There is no parameter to define in this template. The internal gateway will be automaticaly created using the gateway name you entered. You will then be able to select it as an Internal Gateway Out in another channel configuration.

As opposed to most other gateways, this internal one is immediately available as gateway out for other channels configuration without requiring a channel deployment.

Store Client Gateway In

With a Store Client Input Gateway, incoming messages are transfered to an external Store server, like FTP, S3, NFS... Babelway platform polls this server at regular intervals and retrieves incoming files to process them.

The specific parameters are :

Store Implementation

Type of the store to fetch: S3, NFS, FTP, FTPS, SFTP

URL

External store server address where Babelway platform should fetch messages.

Username

Login or username to access files on this external store server.

Password

Password associated to previous username to access account.

Prevent Collision

Flag to specify if the store should use temporary name when writting or reading to avoid collision.

Polling Interval

Interval of times in seconds between checking for message arrival.

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

Post Process Delete

Delete file once it has been retrieved and processed.

Post Process Suffix

The file suffix which will be added to the file name after it is processed.

Post Process Directory

The store directory to which the file will be moved after it is processed

Error Delete

If true, the file will be deleted if an error occurs during processing. Note that in that case error-directory and error-suffix have no effect.

Error Suffix

The file suffix which will be added to the file name after an error occurs during processing.

Error Directory

The store directory to which the file will be moved after when an error occurs during processing.

Input Suffix

The file suffix used to filter files targeted for consumption (note: add the dot, so something like '.esbIn'). This can also be specified as an empty string to specify that all files should be retrieved.

Directory (FTP only)

Directory where files are to be fetched on the server.

Passive Mode (FTP only)

Indicates that the store connection is in passive. Setting this to true means the store client will establish two connection to the ftpserver client.

When a message is transfered to the store server, it is processed immediately then original file is removed from server.

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).

Solution overview

Figure 4.13. 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 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 (91.198.243.225, 91.198.243.226, 79.125.5.172, 79.125.5.173) 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 support@babelway.com

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".
    RFC destination

    Figure 4.14. RFC destination


  • Create a "Ports in IDoc processing" (transaction we21) in the "Transactional RFC" with the name "BABELWAY".
    Ports in IDoc processing

    Figure 4.15. 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".
    Sap Partner Profiles

    Figure 4.16. Sap Partner Profiles


    Sap Partner Profiles Outbound Parameters

    Figure 4.17. 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 here.
  • 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"
    • 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.

Sap Channel Details

Figure 4.18. 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

Password associated with the user ID. For instance: password

Server address

IP or DNS name for SAP application server. For instance: sap.yourcompany.com

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

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:

Frequency

Number of seconds between two events. 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.

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 this link.

CVR Reference

Reference to Central Business Register (CVR). Only invoice documents with this reference will be retrieved and processed by Babelway.

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

Email Gateway Out

With an Email Gateway Out, Processed messages are attached to email messages and sent to a specific email address.

The specific parameters are:

Sending Email Address

Email address from which messages will be sent.

To Recipients

Email address to which messages will be sent (destination). You can add a comma separated list of recipients.

Cc Recipients

Email destination CC address.You can add a comma separated list of recipients.

Bcc Recipients

Email destination Bcc address.You can add a comma separated list of recipients.

Subject

Email message subject.

Send message as attachment?

Should message send as attachment or not.

Attachment Name

Attachment file name.

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 image loaded for the first time, it will "acknowledge" the message.

Add a download link

Add a download link in the message Body or not. When the link is first activated, it will "acknowledge" the message.

Email Body

Email message Body.

HTML codes < and > must be escaped

see http://www.htmlescape.net/htmlescape_tool.html for an online tool

Secure Email

If checked, the email message would be signed using the transfer certificate. The sending email address should used as hub-25XXX@babelway.net where 25XXX is your account environment id.

bodyType

[text/plain , text/html] default is text/plain

downloadLinkMessage

default: "download message".

emailTrackingImageAlt

default: "load this image to notify the reception of the message".

emailTrackingMessage

default: "Download this image to notify the reception of the message".

Ftp Client Gateway Out

With a Ftp Client Output Gateway, outgoing messages are transfered 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 platform should send messages.

Username

Login or username to access files on this external ftp server.

Password

Password associated to previous username to access account.

Directory

Directory where outgoing files are to be stored on the server.

Passive Mode

Indicates that the ftp connection is in passive. Setting this to true means the ftp client will establish two connection to the ftpserver client.

Filename

Filename of the outgoing message.

Private Key

The private key associated to the previous username to access your account. This can be left empty if you choose to only use the password authentication mechanism.

Ftp Server Gateway Out

With a Ftp Server Output Gateway, outgoing messages are transferred to a Babelway FTP server, where you'll be able to fetch them.

The specific parameters are:

Hostname

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 will be linked to a specific directory on ftp server.

Password

Password associated to previous username to access your account.

Filename

Filename of the outgoing message.

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.

If you are using an ftp server both as incoming and outgoing gateways, you cannot use the same login for both gateway servers.

SFTP Client Gateway Out

With a SFTP Client Output Gateway, outgoing messages are transfered to an external SFTP server.

The specific parameters are:

Server

External sftp server address where Babelway platform should send messages.

Username

Login or username to access files on this external sftp server.

Password

Password associated to previous username to access account.

Private Key

The private key associated to 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).

Passphrase

The passphrase associated to the key

Filename

Filename of the outgoing message.

Directory

Directory where outgoing files are to be stored on the server.

OFTP client Gateway out

With an OFTP Client out Gateway, outgoing messages are transferred to an external OFTP server as soon as they are processed by the Babelway engine.

The specific parameters are:

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.

Polling int ... in seconds

The interval in seconds between each polling,default is 90s.

Use TLS

Use TLS (SSL) for communication

ISDN Number

List of phone numbers used used for ISDN communication instead of Internet communication. The expected format is a comma separated list of phone numbers ex : 0049511211306466 or 0049511211306466,003221234567

Partner SSID

The OFTP ID provided by your partner.

Partner SFID

The SFID provided by your partner. If none has been provide, this is probably the same as his 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'.

Use Compression

Compresses the messages.

Sign messages

Sign outgoing messages using the key selected in "My private key". This allows your partner to verify that you are the one sending the message.

Encrypt messages

Encrypt outgoing messages using the certificate selected in "certificate for data". This allows your partner to be the only one able to decrypt the messages sent.

Receive signed messages

This allows you to verify that your partner are the one sending the message.

Request signed ack (EERP)

Requests that incoming acknowledgments are signed. The signature will be verified using the Certificate for EERP. This allows you to be sure that only the partner could have signed the incoming messages.

Signature key

Select Signature key or go to Keystore edit.

Encryption certificate

Select Encryption certificate or go to Keystore edit.

Encryption algorithm

Select Encryption algorithm or go to Keystore edit.

Certificate

Select Certificate for data or go to Keystore edit.

Certificate for EERP

Select Certificate for EERP or go to Keystore edit.

version

Advanced. Babelway is supporting both OFTP1 and OFTP2. The way it works is that when a connection is open, we are using the OFTP built-in mechanism to negotiate the protocol version. The protocol will be the highest possible. Valid values are : OFTP_V12 / OFTP_V13 / OFTP_V14 / OFTP_V20

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)

Restart Position

Advanced. You can specify the restart position.

Transfer Mode

Advanced. Once the connection is open 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

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 2048

Credit Count

Advanced. Control the OFTP "creditCount" parameter. This is the number of data command ( = CREDIT) that could be exchange before an OFTP confirmation from the partner. Default is 64

Max BData Len

Advanced. Control the OFTP "maxBDataLen" parameter (ISDN only). Default is 2048

Max BData Blocks

Advanced. Control the OFTP "maxBDataBlocks" parameter (ISDN only). Default is 7

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 support@babelway.com .

When a message is transfered to the Oftp server, it is processed immediately then original file is removed from server.

OFTP Server Gateway out

With an OFtp server Gateway out, Outgoing messages are transferred to an Babelway OFTP server.

The specific parameters are:

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.

Polling int ... in seconds

The interval in seconds between each polling,default is 90s.

Use TLS

Use TLS (SSL) for communication

ISDN Number

List of phone numbers used used for ISDN communication instead of Internet communication. The expected format is a comma separated list of phone numbers ex : 0049511211306466 or 0049511211306466,003221234567

Partner SSID

The OFTP ID provided by your partner.

Partner SFID

The SFID provided by your partner. If none has been provide, this is probably the same as his 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'.

Use Compression

Compresses the messages.

Sign messages

Sign outgoing messages using the key selected in "My private key". This allows your partner to verify that you are the one sending the message.

Encrypt messages

Encrypt outgoing messages using the certificate selected in "certificate for data". This allows your partner to be the only one able to decrypt the messages sent.

Receive signed messages

This allows you to verify that your partner are the one sending the message.

Request signed ack (EERP)

Requests that incoming acknowledgments are signed. The signature will be verified using the Certificate for EERP. This allows you to be sure that only the partner could have signed the incoming messages.

Signature key

Select Signature key or go to Keystore edit.

Encryption certificate

Select Encryption certificate or go to Keystore edit.

Encryption algorithm

Select Encryption algorithm or go to Keystore edit.

Certificate

Select Certificate for data or go to Keystore edit.

Certificate for EERP

Select Certificate for EERP or go to Keystore edit.

Version

Advanced. Babelway is supporting both OFTP1 and OFTP2. The way it works is that when a connection is open, we are using the OFTP built-in mechanism to negotiate the protocol version. The protocol will be the highest possible. Valid values are : OFTP_V12 / OFTP_V13 / OFTP_V14 / OFTP_V20

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)

Restart Position

Advanced. You can specify the restart position.

Transfer Mode

Advanced. Once the connection is open 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

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 2048

Credit Count

Advanced. Control the OFTP "creditCount" parameter. This is the number of data command ( = CREDIT) that could be exchange before an OFTP confirmation from the partner. Default is 64

Max BData Len

Advanced. Control the OFTP "maxBDataLen" parameter (ISDN only). Default is 2048

Max BData Blocks

Advanced. Control the OFTP "maxBDataBlocks" parameter (ISDN only). Default is 7

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 support@babelway.com .

When a message is transfered to the Oftp server, it is processed immediately then original file is removed from 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

Server address that receives outgoing messages.

Subject

AS2 message subject

Recipient Address

The endpoint URL of the receiving message gateway ,requires protocol prefix in URL (http:// or https://).

Request Receipt

Should a receipt be sent when a request is received or not.

Receipt Return URL

URL address where to send receipt.

Signed Receipt

Should receipt be signed or not.

Signing Algorithm

Select algorithm used for signing receipt, if any.

Asynchronous Receipt

Should receipt be sent asynchronously or not.

Message Compression Required

Should send message be compressed or not?

Message Signing Required

Should send message be signed or not?

Message Encryption Required

Should send message be encrypted or not?

Encryption Algorithm

Select algorithm used for encrypting message, if any.

Message Signature Enforced

Should message signature be enforced or not?

MIC Algorithm

Select MIC algorithm, if any.

Message Encryption Enforced

Should message encryption be enforced or not?

Maximum Retries

Maximum number of retries if message sending failed?

Retry Interval

Interval of time before trying to send message again (in seconds)?

Certification For Encryption

Certificate used for message encryption?

Certification For Verification

Certificate used for message verification?

AS2 documentation

File containing your AS2 parameters. It should be completed as detailed hereafter before being sent to your AS2 partner for configuration of his system side.

type

"edi", for the content type "application/EDIFACT".

"x12", for the content type "application/EDI-X12".

"eco", for the content type "application/edi-consent".

"xml", for the content type "application/XML".

"bin", for the content type "application/ octet-stream".

To report AS2 parameters to the other party, click on GenericAS2Specifications.doc command to download a Word file including all parameters values required to establish AS2 communication. In this file, you should change Identity field to match the To field value (see above) as automatically attributed by Babelway interface, this value follows " BABELWAY_AS2_xxxxx " form.

Once this parameter has been changed to match your settings, you can send the file to the other party to give him all parameters he will require to establish a communication with your channel.

GenericAS2Specifications Word file example

Figure 4.19. GenericAS2Specifications Word file example


Http Client Out Gateway

With an HttpClientOut Gateway, outgoing messages are send using a Http connection.

you can select several http internal in

The specific parameters are:

Url

External service address.

Username

Login or username to access the service .

Password

Password associated to previous username.

SSLTrustLevel

Select SSL algorithm,if any.

Connected Gateway

Select gateway that receive the response from the gateway.If no gateway is selected the http response will only be use to validate the success Expression then be discarted

Filename

Filename of the outgoing message.

Response Filename

Filename of the Response message.

Success expression

expression is a regex. If response doesn't match the message is flag in error.

Preemptive authentication

a flag for preemptive authentication.

Login url

httpCient in is not mandatory any more.

Authentication method

it supports form authentication now.you can select from "FORM,BASIC,ANY,DIGEST,CERT"

numberOfRetries

number of retry (default = 1)

userAgent

(default = "babelway-HttpClientOutGateway")

timeout

(default = 90s)

http-header:CUSTOM_HEADER

You can also add specific http header by adding the string properties with the following prefix "http-header:" followed by the name of the header. This accepts metadata.

auth-form-field:CUSTOM_AUTHENTICATION_FORM_FIELD

You can also add specific authentication form field by adding the string properties with the following prefix "auth-form-field:" followed by the name of the header. This accepts metadata.

authFormContentType

You can specify the content type of the submitted authentication form (default is application/x-www-form-urlencoded).

After channel deployment, your connection will be available to send messages.

Http Out Gateway

With a HTTP out Output Gateway, outgoing messages are transferred to a Babelway HTTP server.

The specific parameters are:

Username

Login or username to access the service .

Password

Password associated to previous username.

SOAPURL

using the SOAP Post protocols.

After channel deployment, your connection will be available to send messages.

X.400 Gateway out

With a X.400 out Gateway, allows to sends the message on the X.400 network. To specify the address from your trading partner.

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.

manual address

You can choose to enter the the full address in the "manual address field" or each address component in the corresponding field.

Internal Gateway Out

The internal gateway in / out are used for internal transfer of messages between channels inside the same account environment.

The specific parameters are:

Conected 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.

Filename

Filename of the outgoing message.

Response Filename

Filename of the Response message.

As opposed to most other gateways, this internal one is immediately available as gateway out for other channels configuration without requiring a channel deployment.

Null Gateway

The null gateway is used for test and development purposes. The outgoing message will not be sent out of Babelway platform.

Outgoing messages will not be forwarded but they are nevertheless created and readable through Messages interface. You may use this gateway for testing your messages transformation and creation before going to production or for preventing a channel to send messages before deployment.

Splitter gateway out

Create a splitter channel

Th specific parameters are:

class name

com.babelway.messaging.orchestration.SplitterGatewayOut

splitType

regex

expression

[\n](?=EE)

which means split when seeing line return and then EE

responseServiceCategory

account-%AccountID%.hub-%HubID%

responseServiceName

account-%AccountID%.hub-%HubID%.gateway-%DestinationInternalGatewayID%_BabelwayInternalIn

  • All data between %xx% must be replaced.

  • AccountID and HubID are available in "my account" .

  • DestinationInternalGatewayID is the ID of the gw in of the channel receiving the splitted files (see below)

  • Create a channel to process splitted files Define the gateway-in as internal gateway Open the Advanced property tab and note the ID (it is the value to assign to %DestinationInternalGatewayID%)

Aggregator Gateway Out

The aggregator allows to merge messages into one larger file. The aggregation could simply append the messages, use a xslt to merge xml document or merge Edifact or X12 documents. The resulting messages is forwarded to an other channels in the same environment.

The specific parameters are:

Connected Gateways

List of internal gateway to send a copy of the result of the aggregation trigger. You can select multiple gateway 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. Optionaly an xslt can be applyed to te result. Select 'edifact' or 'x12' to merge edi document. The envelop of the first document will be used.

Group by

Use a metadata to spread the file in smaller group. One message fill be created for each group containing messages.

Filename

Filename, Default is the same as the message in.

Response Filename

Response Filename, Default is the same as the message in. Tpis: You can use: {com_babelway_messaging_context_aggregator_groupBy} to include the name of the group by in the file name

Header

For 'append' type: prefix to add at the begining 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 begining of the file.

Input charset

Charset to use to decode file waiting to be aggragated.

Output charset

Charset to use to encode the file resulting of the aggragation.

Xslt

Xslt to perform on the resulting Xml. Default='Identity'

Frequency

Frequency

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

Minimum Idle time

Specify the time the last message should have. This allows to ensure all messages from a batch were received by the aggregator.

As opposed to most other gateways, this internal one is immediately available as gateway out for other channels configuration without requiring a channel deployment.

Store Client Gateway Out

With a Store Client Output Gateway, outgoing messages are transfered to an external Store server, like FTP, S3, NFS...

The specific parameters are :

Store Implementation

Type of the store to fetch: S3, NFS, FTP, FTPS, SFTP

URL

External store server address where Babelway platform should fetch messages.

Username

Login or username to access files on this external store server.

Password

Password associated to previous username to access account.

Prevent Collision

Flag to specify if the store should use temporary name when writting or reading to avoid collision. This iproperty is also known as postRename

Post Process Delete

Delete file once it has been retrieved and processed.

Directory (FTP only)

Directory where files are to be fetched on the server.

Passive Mode (FTP only)

Indicates that the store connection is in passive. Setting this to true means the store client will establish two connection to the ftpserver client.

SAP Gateway Out

With a SAP Output 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 ...

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

Generic Gateway

The generic gateway is used to setup gateway out with features not available at other gateways like transfer of output message to more than one channel.

After importing generic gateway from Babelway templates, you should complete setup of gateway manually by entering class name and adding string and file properties under advanced properties.

4.3. Message definitions

This section contains all the stuff 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 functionnalities.

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 defitniions 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 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 definition 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:

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.

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 signaletic 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.

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 informations about the message definition tree.

Don't forget to save when you're finished with your changes.

Properties

The properties are the parameters of the message definition, and allows to configure all the options of the message definition, depending of its type.

See message definitions types section for the description of every parameter, type by type.

Extra processings

The extra processings allows you to configure additional processings that must be applied on the messages. Some examples are extracting the file from a zip file, or signing the output file.

See extra processings 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

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.

Message edit screen

Figure 4.20. Message edit screen


Understand the nodes

The message tree representing a hierarchical view of the message is based on three node types:

Node types

Figure 4.21. Node types


  • (1) A value node is the representation of a business value in the message.

    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.

    Note

    TODO: complete the images !
    • represents a fixed static value defined as an xml element.

    • represents a standard value depending on message file defined as an xml element.

    • represents a fixed static value defined as an xml attribute.

    • represents a standard value depending on message file defined as an xml attribute.

  • (2) A structural node has no value, but is used to group nodes or specify a hierarchy between nodes. It also has a representation in the message.

    • represents root level message node.

    • represents any other structural node.

  • (3) A virtual node has no representation in the message but brings subsequent information concerning this message, like value multiplicity or possible structure alternatives. There are two different value nodes: Loop and Choice/Option nodes.

    • represents a loop node.

    • represents a choice node.

    • represents an option node, used together with a choice node.

Contextual menu

When you right click on message nodes, a context menu such as the one illustrated below will open. This menu displays a set of commands available for selected node. All possible commands are listed hereunder and described in details in referenced chapters.

Edit screen contextual menu

Figure 4.22. Edit screen contextual menu


Edit Element enables you to modify node name, to add a node description, to define a static value and to tag node as required.

Duplicate makes a copy of selected node and all its children if any. You should modify duplicated nodes name according to your system to avoid any problem at message processing time.

Hide and Show makes node (and its children if any) visible or not in the transformation tab. This function is used to simplify transformation step by not displaying nodes that do not require mapping. Note that if a hidden node is already mapped, it remains mapped in the transformation tab but cannot be modified.

Delete removes selected node (and its children if any). A confirmation message box is displayed before deletion.

The Add Validations... submenu allows you to select one or more criteria that must be met by a node in order for the message to be properly processed by the system. If any of these criteria is not met, message will not be processed and an error will be raised. Refer to Message Validation for detailled informations.

Create Loop, Remove from Loop, Put in next/previous Loop enables you configure loops in your message. These loops are used to manage repetitive elements such as multiple items lines in a message. Refer to the Managing Loops chapter for detailled informations.

Create Choice, Remove from Choice, Put in next/previous Choice enables you configure choices and options in your message. These choices are used to manage different mutually exclusive message configurations. Refer to the Managing Choice chapter for detailled informations.

Message Validation

In Babelway interface, it is possible to set up validations at message definition level.

You can set up validation rules for incoming and/or outgoing messages. These validations will be performed at runtime on messages.

To add validation rules, right click on a node in message definition window and select Add Validations... submenu. There are 3 basic validation rules that you can set up directly. In addition, you can also define your own rules in Xpath language.

  • Mandatory is used to check that the selected (value or structural) node is always present in the message.

  • Max Length defines a maximum length for the node value.

  • Min Length defines a minimum length for the node value.

  • Custom enables you to define your own Xpath validation rule.

Several validation rules may be applied to a same node. For example, using together a Max Length and a Min Length rule makes it easy to check that a node value has a specific length.

Once a validation rule has been added to a field, it will appears under the Validations section of message node. It can be removed by right-clicking on the validation rule and selecting the Delete command.

Example of Xpath validation rule:

string-length()>4
	
matches(.,"\d+") to validate if this field is only numeric 

Example of cross field validation rule:

For XML like this

<item>
	<price>456</price>
	<tax>123</tax>
	</item>

You can write Cross field validation like

price > tax

Note

  • If a validation rule is not met in a message, this message will not be further processed in the channel and an error will be raised.

  • If you are using XSD to define your incoming or outgoing message, all rules defined in XSD file will be validated at runtime even if you do not add specific validation rules at message level.

  • During xslt transformation, all data is seen as text string and therefore no specific validation is performed on data type at that stage.

  • Validation uses static values to identify the node to validate. If, after a mapping, a static value is overwritten, the validation my not be able to apply anymore, and may not validate all nodes.

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:

Example of a choice

Figure 4.23. 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 others. 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 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:

Message tree

Figure 4.24. 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 type:

  • Group By: groups together all nodes having the same value as the Grouping value.

  • Group Adjacent: groups together all nodes having 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 tab durint channel editing.

Loop parameters

Figure 4.25. 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
 4,       1,       1,      61,Item 24
 4,       1,       1,      17,Item 25
 4,       1,       2,       2,Item 26
 4,       1,       2,       9,Item 27
 4,       1,       2,      85,Item 28
 5,       1,       1,      57,Item 29
Default message tree

Figure 4.26. Default message tree


In this example, we have a loop of lines defining an item to dispatch, where each line has the truck id where the item is stored.

We could regroup this loop of lines by TruckId so we can loop on all trucks and then loop inside each truck on all 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).

Regroup this loop

Figure 4.27. Regroup this loop


We now have a loop on all trucks and a sub loop on all item in a truck.

Sub loop

Figure 4.28. 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.29. ...


4.3.5. Message definitions formats

This list shows main message formats supported by the application.

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 Ccy,TNA,Outstanding,Publication Ccy,NAV in Publication Ccy,Bid Price in Publication Ccy,Offer Price in Publication Ccy,Equity Profit,WKN Code,Zwischengewinn,TIS,TID
06/13/2008,LU0223208157,HSBC GIF EMERGING EUROPE EQUITY,AC,EUR,15.088,15.088,15.924,12190498.17,807980.236,GBP,11.96,11.96,12.623,37.650,A0ER9A,0.001,,

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, 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 if the csv file begins with a line that contains headers of the columns, or directly begins with the lines of data.

Encoding

The encoding of the csv file.

Sample file

An example csv file.

Message definition

A file that contains the structure of the fields in the message definition. We recommend that you edit this structure via the graphical editor (tree) of the interface.

Edifact and Odette

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.

As Babelway supports all EDI transaction sets of the EDIFACT standard, you can use any of them in your own gateway setup.

Babelway supports all following EDIFACT documents:

APERAK, AUTHOR, AVLREQ, AVLRSP, BALANC, BANSTA, BAPLIE, BERMAN, BMISRM, BOPBNK, BOPCUS, BOPDIR, BOPINF, BUSCRD, CALINF, CASINT, CASRES, CHACCO, CLASET, CNTCND, COACSU, COARRI, CODECO, CODENO, COEDOR, COHAOR, COLREQ, COMDIS, CONAPW, CONDPV, CONDRA, CONDRO, CONEST, CONITT, CONPVA, CONQVA, CONRPW, CONTEN, CONWQD, COPARN, COPAYM, COPINO, COPRAR, COREOR, COSTCO, COSTOR, CREADV, CREEXT, CREMUL, CUSCAR, CUSDEC, CUSEXP, CUSPED, CUSREP, CUSRES, DAPLOS, DEBADV, DEBMUL, DEBREC, DELFOR, DELJIT, DESADV, DESTIM, DGRECA, DIRDEB, DIRDEF, DMRDEF, DMSTAT, DOCADV, DOCAMA, DOCAMI, DOCAMR, DOCAPP, DOCARE, DOCINF, ENTREC, FINCAN, FINPAY, FINSTA, GENRAL, GESMES, HANMOV, ICASRP, ICSOLI, IFCSUM, IFTCCA, IFTDGN, IFTFCC, IFTICL, IFTMAN, IFTMBC, IFTMBF, IFTMBP, IFTMCA, IFTMCS, IFTMIN, IFTRIN, IFTSAI, IFTSTA, IFTSTQ, IHCEBI, IHCLME, IMPDEF, INFCON, INFENT, INSDES, INSPRE, INSREQ, INSRPT, INVOIC, INVRPT, IPPOAD, IPPOMO, ISENDS, ITRRPT, JAPRES, JINFDE, JOBAPP, JOBCON, JOBMOD, JOBOFF, JUPREQ, LEDGER, LREACT, LRECLM, MEDPID, MEDPRE, MEDREQ, MEDRPT, MEDRUC, MEQPOS, MOVINS, MSCONS, ORDCHG, ORDERS, ORDRSP, OSTENQ, OSTRPT, PARTIN, PASREQ, PASRSP, PAXLST, PAYDUC, PAYEXT, PAYMUL, PAYORD, PRICAT, PRIHIS, PROCST, PRODAT, PRODEX, PROINQ, PROSRV, PROTAP, PRPAID, QALITY, QUOTES, RDRMES, REBORD, RECADV, RECALC, RECECO, RECLAM, RECORD, REGENT, RELIST, REMADV, REPREM, REQDOC, REQOTE, RESETT, RESMSG, RESREQ, RESRSP, RETACC, RETANN, RETINS, RPCALL, SAFHAZ, SANCRT, SKDREQ, SKDUPD, SLSFCT, SLSRPT, SOCADE, SSIMOD, SSRECH, SSREGW, STATAC, STLRPT, SUPCOT, SUPMAN, SUPRES, TANSTA, TAXCON, TIQREQ, TIQRSP, TPFREP, TSDUPD, TUPREQ, TUPRSP, UTILMD, UTILTS, VATDEC, VESDEP, WASDIS, WKGRDC, WKGRRE

File sample

Following is a sample EDIFACT file.

UNA:+.? '
UNB+UNOC:3+000eanpimgest:14+000eanatelier:14+2009-05-26 10:41:34.524 +0200:2009-05-26 10:41:34.524 +0200+1518'
UNH+1+DESADV:D:01B:UN:EAN007'
BGM+351+0000090027+9'
DTM+137:200905190938:203'
DTM+17:200905150000:203'
DTM+2:200905150000:203'
DTM+171:20090519:102'
NAD+BY+000eanatelier::9++LATELIER+Chausse de Lige 477+JAMBES++5100+BE'
NAD+SU+000eanpimgest::9++PmiGest+Parc Scientifique Cralys+LES ISNES++5032+BE'
TDT+1++30'
CPS+1'
PAC+2+:52+201::9'
CPS+2+1'
PAC+1+:52+201::9'
MEA+PD+AAC+KGM:0'
MEA+PD+T+KGM:0'
PCI+33E'
GIN+BJ+p00001'
PCI+34E'
GIN+SRV+05400111005652'

ODETTE Messages List

Babelway supports all following ODETTE Messages:

  • 1.ODETTE AVIEXP

  • 2.ODETTE AVIGRU

  • 3.ODETTE AVIREX

  • 4.ODETTE BASDAT

  • 5.ODETTE CONFOR

  • 6.ODETTE CONTRL

  • 7.ODETTE CREDIT

  • 8.ODETTE DEBNOT

  • 9.ODETTE DELINS

  • 10.ODETTE ENQIRY

  • 11.ODETTE FORDIS

  • 12.ODETTE GRUDES

  • 13.ODETTE INVOIC

  • 14.ODETTE KANBAN

  • 15.ODETTE MODPRI

  • 16.ODETTE OFFERR

  • 17.ODETTE ORDERR

  • 18.ODETTE OSTENQ

  • 19.ODETTE PRILST

  • 20.ODETTE REMADV

  • 21.ODETTE REPDEL

  • 22.ODETTE REPINV

  • 23.ODETTE REPORD

  • 24.ODETTE STATAC

  • 25.ODETTE STOACT

  • 26.ODETTE SYNCRO

  • 27.ODETTE SYNPAC

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 following X12 documents:

Order Series (ORD), Materials Handling Series (MAT), Tax Services Series (TAX), Warehousing Series (WAR), Financial Series (FIN), Government Series (GOV), Manufacturing Series (MAN), Delivery Series (DEL), Engineering Management and Contract Series (ENG), Insurance/Health Series (INS), Miscellaneous ANSI X12 Transactions Series (MIS), Mortgage Series (MOR), Product Services Series (PSS), Quality and Safety Series (QSS), Student Information Series (STU), Transportation (Air and Motor Series (TAM) - Ocean Series (TOS), Rail Series (TRS),Automotive Series (TAS)

File sample

Following is a sample X12 file.

ISA*00*          *00*          *ZZ*SENDERISA      *ZZ*RECEIVERISA    *960807*1548*U*00401*000000020*0*T*>~
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~
		

XML

XML stands for eXtensible Markup Language and is a very common type of files.

File sample

Following 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>

Excel Message Format

File sample

Following is a sample Excel file having headers at the first row of the Excel sheet.

Excel Sample file

Figure 4.30. Excel Sample file


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 following screen will be displayed.

Wizard screen

When you create a new message format, you must first configure it using the following wizard.

PDF Wizard screen

Figure 4.31. PDF Wizard screen


An PDF messsage 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

Following 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 { size: A4; margin: 3cm 1.5cm 2cm 1.5cm; border: none; padding: 1em; }
 @page { @top-left{content: ""; }}
 @page { @top-right{content: "Page " counter(page) " on " counter(pages);}}
 @page { @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>
      <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 xhtml.
      <br/>  
      <br/>    
      For specific print css options, see http://www.w3schools.com/css/css_reference.asp for all css options 
      <br/>  
      <br/>  	  
      <h2>Barcode Integration</h2>
        <br/> 
        <barcode style="display: inline-block; width: 300px; height: 200px;" type="EAN13">123456789012345675</barcode>
        <br/>
        <barcode style="display: inline-block; width: 300px; height: 200px;" type="EAN8">123456789012345675</barcode>
        <br/>
        <barcode style="display: inline-block; width: 300px; height: 200px;" type="UPCA">123456789012345675</barcode>
        <br/>
        <barcode style="display: inline-block; width: 300px; height: 200px;" type="UPCE">01234133</barcode>
        <br/>
        <barcode style="display: inline-block; width: 300px; height: 200px;" type="CODABAR">A123456789A</barcode>
        <br/>
        <barcode style="display: inline-block; width: 300px; height: 200px;" type="CODE39">123456789012345675</barcode>
        <br/>
        <barcode style="display: inline-block; width: 300px; height: 200px;" type="CODE39_EXTENDED">123456789012345675</barcode>
        <br/>
        <barcode style="display: inline-block; width: 300px; height: 200px;" type="CODE128">123456789012345675</barcode>
        <br/>
        <barcode style="display: inline-block; width: 300px; height: 200px;" type="CODE128_UCC">123456789012345675</barcode>
        <br/>
        <barcode style="display: inline-block; width: 300px; height: 200px;" type="CODE128_RAW">123456789012345675</barcode>
        <br/>
        <barcode style="display: inline-block; width: 300px; height: 200px;" type="EAN8">123456789012345675</barcode>
        <br/>
        <barcode style="display: inline-block; width: 300px; height: 200px;" type="POSTNET">123456789012345675</barcode>
        <br/>
	  <div id="footer">
		Footer line#1<br/>Footer line#2
	  </div>

   </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".

PDF Edit screen

Figure 4.32. PDF Edit screen


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 preserve if you upload a other 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. Additionaly, 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.

PDF/x conformance

specify weither or not you want to comply with PDF/A format. This is mainly used for long term archiving. Embedded content and font can simply be added as file properties of the message.

Barcode integration

Creation of barcode respecting the following standards: EAN13, EAN8, UPCA, UPCE, SUPP2, SUPP5, POSTNET, PLANET, CODE128, CODE128_UCC, CODE128_RAW, CODABAR, CODE39, CODE39_EXTENDED

See xhtml example above for reference.

Multirecord Message Format

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" quoteSymbol-character="&quot;" quoteSymbol-escapeSequence="\&quot;" xmlns="http://xmlns.babelway.com/2007/multi-record">

For the delimited messages the mr file header will look like this:

<multirecord name="mymultirecord" type="delimited" fieldDelimiter="," recordDelimiter="\r\n" quoteSymbol-character="&quot;" quoteSymbol-escapeSequence="\&quot;" xmlns="http://xmlns.babelway.com/2007/multi-record">

* 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 specify if the system use a record delimiter. If set to false, record will be based on the sum of the fields lenght for fixed length or the number of fields for delimited multirecords.

* trim specify if the white spaces in the begining and the end of the fields should be removed.

* fieldDelimiter, only used whith a delimited message, defines the field delimiter.

* quoteSymbol-character is the character used to quote a field (often &quot;)

* 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 field. 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 defines 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 a fixed-length message 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 identifier like in the following:

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"/>
	    <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="x" width="10"/>

* label and description are used to display the message tree

* justify can be center, left or right

* padCharacter is the character used to fill 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 '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="&quot;" quoteSymbol-escapeSequence="\&quot;" xmlns="http://xmlns.babelway.com/2007/multi-record">
<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>

Flat File Message Format

File sample

Following is a sample Flat file.

EE54001340000093012918100700000000000147521
DD0000018713906060109 6011                               3005330101
DD0000028713906061106 6111                               3005250201

TRADACOM Message Format

Tradacoms 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

File sample

Following 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.Ireland:OG27 5WQ+412557175'
CDT=501xxxxxxxxx+NAMESERVICES (U.K.) LTD.+Cnexynaqf Pbheg:OvezvatunzTerng Cnex:Ehorel:Birmingham:OG45 9CM'
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'

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.

To define a message in JSON format, select an existing template or make a copy of the generic JSON wizard in the catalogue and following screen will be displayed.

File sample

Following is a sample JSON file.

	{
	"id": "0001",
	"type": "donut",
	"name": "Cake",
	"ppu": 0.55,
	"batters":
		{
			"batter":
				[
					{ "id": "1001", "type": "Regular" },
					{ "id": "1002", "type": "Chocolate" },
					{ "id": "1003", "type": "Blueberry" },
					{ "id": "1004", "type": "Devil's Food" }
				]
		},
	"topping":
		[
			{ "id": "5001", "type": "None" },
			{ "id": "5002", "type": "Glazed" },
			{ "id": "5005", "type": "Sugar" },
			{ "id": "5007", "type": "Powdered Sugar" },
			{ "id": "5006", "type": "Chocolate with Sprinkles" },
			{ "id": "5003", "type": "Chocolate" },
			{ "id": "5004", "type": "Maple" }
		]
	}
	

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

Following is a sample SAP IDOC file.

BEGIN_RECORD_SECTION
   BEGIN_CONTROL_RECORD
     BEGIN_FIELDS
       NAME                TABNAM
       TEXT                Name of external structure
       TYPE                CHARACTER
       LENGTH              000010
       FIELD_POS           0001
       CHARACTER_FIRST     000001
       CHARACTER_LAST      000010

       NAME                MANDT
       TEXT                Client
       TYPE                CHARACTER
       LENGTH              000003
       FIELD_POS           0002
       CHARACTER_FIRST     000011
       CHARACTER_LAST      000013

       NAME                DOCNUM
       TEXT                IDoc number
       TYPE                CHARACTER
       LENGTH              000016
       FIELD_POS           0003
       CHARACTER_FIRST     000014
       CHARACTER_LAST      000029

       NAME                DOCREL
	   ...
	

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 messages formats, such as specific binary ERP format (for example idoc of SAP...)

If message in format is "Not defined", so should be out message otherwise output may return unexpected results or 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.

Generic Message Format

Generic Wizard screen allows you to define your generic message format according to your own file format.

4.3.6. Extra processings

An extra processing is an additional operation that must be applied on all messages corresponding to this message definition.

The available extra processing do not depend of the type of message definition. All message definitions are therefore available on any message definition (of any type).

Extra processings

Figure 4.33. 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.

Extra processings

Figure 4.34. Extra processings


If you use multiple extra processings on the same message definition, 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 processing 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.

Almost all extra processings are applied on the message in or the message out, not on internal representations of the messages in the system :

  • For a message definition IN, the extra processings are applied on the message in, then the message is analyzed following its definition.

  • For a message definition OUT, the message out is generated following its definition, then the extra processings are applied on the message out.

It will be mentionned explicitely in the very rare cases where extra processings are applied on the internal representation of the message.

4.3.6.1. Extra processings on message definition IN

Save input file

Allows to save your input file as a metadata, for future use in the next steps.

The parameters are :

Metadata

The metadata in which you want that the input file is saved.

Zip unwrapping

Allows to extract your input file from a zip. It also allows 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, reicnlude 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 specify the pattern of the file name in the zip (first match), and the name of the metadata in which you want to save the content.

Pdf unwrapping

Allows to extract your input file from a pdf. It also allows 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.

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 to extract your input file from a S/MIME envelop. It also allows 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 siagnture.

Replacement based on regular expression.

Allows to make a global search and replace on your input file, before it is analyzed.

The parameters are :

Find

The pattern (regular expression) that will be searched in your document.

Replace by

The replacement that will be applied for every match.

4.3.6.2. Extra processings on message definition OUT

Replacement based on regular expression.

Allows to make a global search and replace on your output file, after if has been produced, but before it is delivered to the gateway out.

The parameters are :

Find

The pattern (regular expression) that will be searched in your document.

Replace by

The replacement that will be applied for every match.

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.

Pdf wrapping

Allows to create a pdf that will contain your output file in attachment.

The parameters are :

Pdf template

The template that will be used to create the container pdf. You have here 3 possibilities :

  • You provide directly a pdf file. This pdf file will be used as is, and the extra processing will just add the asked 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, ...).

  • 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.

File name

The name that your output file will have in the pdf.

Other files

Other files that must be added to the pdf. For every of them, you have to tell the name that the file will have in the pdf, and the name of the metadata that contains the content.

Pdf resizer

Allows 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 where to zone copied from the input pdf will be placed on the page in the output pdf.

Position Y

Specifies where to zone copied from the input pdf will be placed on the page in the output pdf.

Scale X

Specifies the zoom ration that must be applied when copying asked zones from the input to the output pdf. The default is 1.

Scale Y

Specifies the zoom ration that must be applied when copying asked zones from the input to the output pdf. The default is 1.

Pdf Letterhead

Allows to set letterhead on 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, tells which page of the letterhead must be used for every page of the output pdf file. The possible values are described hereunder. 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 pdf 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 pdf 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, it would give the following result : 1:A, 2:B, 3:A, 4:B, 5:A.

Pdf Appendix

Allows 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 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 of them, you have to tell 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.

Zip wrapping

Allows to wrap your output file from a zip. It also allows 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. For every of them, you have to tell the name that the file will have in the zip, and the name of the metadata that contains the content.

S/MIME wrapping

Allows 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.

4.4. Transformations

This sections covers all the stuff that is related to the 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.

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:

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 gateways.

4.4.2. Creation of a transformation

Note

Describe all ways to create a transformation.

4.4.3. Transformation detail

General

The general tab contains the signaletic 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 more details, see the change log section.

4.4.4. Drag and Drop Transformation

Drag and Drop transformation visual editor enables to easily define transformation rules and implement transformation functions.

When specifying transformation for the first time or when changing transformation type, click on Open catalogue command and choose a drag and drop 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 visual editor screen.

Drag and drop transformation visual editor

Figure 4.35. Drag and drop transformation visual editor


This transformation visual editor is divided in three panes:

  • The left pane displays incoming message definition tree plus, in first position, the Metadata node and in last position the Transformation functions node. See the Metadata chapter for more information about their use.

  • The right pane displays outgoing message definition tree plus, in first position, the User defined metadata node. See the Metadata chapter for more information bout their use.

  • The bottom pane lists set up transformation rules.

4.4.4.1. Nodes mapping

To map an incoming message node to an outgoing message node, you only need to click on incoming message node in left pane then to drag it to right pane and drop it on outgoing message node as illustrated by arrow (1) in following figure.

As illustrated by arrow (2), the icon of nodes that are already linked displays a little chain mark.

Note

Please note that before being able to map two nodes, parent loop nodes must be already mapped. In illustrated example, mapping (2) must be done before mapping (1) is possible.

Drag and drop mapping example

Figure 4.36. Drag and drop mapping example


All defined mapping are listed in Transformation rules table, one per table line, with following fields:

  • Type: node type.

  • Source Field: can be either a node from message in definition or a transformation function.

  • Target field: a node in message out definition.

  • Filter: you can add a filtering rule to be applied on loop elements. See Filter Function chapter for more informations.

  • If: you can add an evaluation rule to be applied on node value. See If Function chapter for more informations..

  • Format: you can add a formating rule to be applied on output value. See Format Function chapter for more informations..

4.4.4.2. Mapping loops

Loops from the input message must be mapped to the output if you want to map one of its enclosed nodes. Otherwise the mapper cannot resolve the reference to the node since there can be more than one occurrence of the same node (as defined by the loop).

  • Loop to loop

    • Input: loop node

    • Output: loop node

    • Effect: ensures that the generated output has the same number of occurence than the input.

    • Filter: reduces the number of input occurence based on a criterion. See the Filter Function chapter.

    • If: for each occurence of the loop, checks the condition before generating an output. See the If Function chapter.

Loop to loop example

Figure 4.37. Loop to loop example


  • Loop to non loop

    • Input: loop node

    • Output: structural node or value node

    • Effect: since the output is not multiple this loop will not generate multiple outputs. It is used to resolve the reference to the input node. By default, the first occurence of a multiple input is used for the output generation. The default behaviour can be changed using a filter.

    • Filter: use of a criterion to select a specific occurence for the input (like taking the last occurence using 'last()' as a filter). See the Filter Function chapter.

    • If: checks the condition before generating an output. See the If Function chapter.

Loop to non loop example

Figure 4.38. Loop to non loop example


4.4.4.3. Mapping choices nodes

Choice nodes are not mappable, only Option nodes can be mapped (using drag and drop).

  • Option mapping

    • Input: option node

    • Output: any node

    • Effect: the output node will only be generated if the option has been identified in the input. In this sample, there will be a price-vat-exc node on the output only if a price with its VAT equals to 0 is present in the input.

    • Purpose: acts like an 'if', it is a conditional execution based on the presence of the option.

Option mapping

Figure 4.39. Option mapping


  • Mapping of nodes within an option node

    • Input: any node within an option node

    • Output: any node

    • Effect: this will map the node as usual only in the case that the parent option has been identified. Otherwise the mapping is not executed. It is not mandatory to map the parent option node, the condition will always be applied.

    • Special case: as the mapping is conditional, you can map multiple value nodes on the same target value node, as long as the source has a parent option node.

Mapping of nodes within an option node

Figure 4.40. Mapping of nodes within an option node


4.4.4.4. Multi nodes mapping

Visual mapping is able to map two message definition tree structures. When mapping an element having children to another element having similar children structure, the system will offer you to automatically map children and loops based on their names or uid similarities. This is a very valuable when dealing with complex and often similar XML messages like in soap messages, IDOC or UBL...

Note

Please note that this function could is eavy and might freeze your browser for a little time, specially in Firefow browser. Be patient, the system is working for you...

Multi mapping confirmation box

Figure 4.41. Multi mapping confirmation box


4.4.4.5. Functions

In addition to direct mapping, you can add one or more transformation rules. Right-click on Transformation functions in message in left pane. See Transformation for a complete list of available functions and how to use them.

In following example, a multiply operator is selected as transformation function.

Transformation rule selection example

Figure 4.42. Transformation rule selection example


Once desired function is selected and named, it appears in transformation functions list in message in pane. This specific function, multiply, requires two nodes as arguments. Once again drag and drop both selected nodes on this function as illustrated in next figure with arrows (1) and (2).

Mapped nodes are listed under transformation function and may be removed by right-clicking and selecting Remove command.

Transformation rule mapping example

Figure 4.43. Transformation rule mapping example


Once the transformation function is defined it can be in turn, mapped to a message out node. See arrow (3) on previous illustration.

Transformation functions may also be cascaded using the same drag and drop mapping. A transformation may be used as argument for another one as illustrated below with a second multiply operation that takes previous result as argument.

Note

Nevertheless, you should make sure that you do not create unconsistent mapping by mapping one item to another one and at the same time mapping them the other way.

Transformation rule mapping example

Figure 4.44. Transformation rule mapping example


Once all your mapping and transformations are ready and additional filter, if and/or format entered, do not forget to save this transformation with button.

You can find hereunder an explanation of all available functions.

Constant String

A Constant String, as it names implies, allows you to create a string of characters that can be used elsewhere in your mapping either alone or combined with other items. You can further format this string using Format String function described hereunder. As illustrated, this function requires a Name, an optional Description and the constant string Value.

Constant string

Figure 4.45. Constant string


Constant Number

A Constant Number, as it names implies, allows you to create a number that can be used elsewhere in your mapping either alone or combined with other items. You can further format this number using Format Number function described hereunder. As illustrated, this function requires a Name, an optional Description and the constant number Value.

Constant number

Figure 4.46. Constant number


Current Date/Time

The Current Date/Time function, as it names implies, allows you to retrieve the current complete date (including time) and to use elsewhere in your mapping either alone or combined with other items. You can further format this date using Format Date function described hereunder. As illustrated, this function requires only a Name and an optional Description.

Current Date/Time

Figure 4.47. Current Date/Time


Custom Xpath expression

The Custom Xpath expression function allows you to define your own Xpath expression. For more information about Xpath syntax, see Xpath in External References chapter in appendix.

You can drag and drop any number of element on this custom function. In the order they are dropped, each element is binded to an argument $argN. $arg1 for the first, $arg2 for the second... You can use these argument in the Xpath expression.

Example 4.1. 

string-length($arg1)
concat($arg1,' - ',$arg2)
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))
metadata-util:getAsBase64($MSG, 'attachment:Invoice.pdf')

You can also use the special argument $ARGS which correspond to the sequence of elements dropped, ie.: $ARGS = ($arg1, $arg2, $arg3, ..., $argN)

Example 4.2. 

(max($ARGS) - min($ARGS)) div 2
concat($ARGS)

This function requires a Name, an optional Description and the Xpath expression including one or more arguments if required.

Custom Xpath expression

Figure 4.48. Custom Xpath expression


Note

By default, if the xpath expression use number values, the resulting number has only eleven significant digits. If you need more significant digits, you can either use the Big Number Xpath expression or you can explicitly cast the arguments using xs:decimal($arg1).

Note

Note that all transformation functions can be replaced directly by their Xpath expression. All other functions are available for easy and quick message transformation, while Xpath expression allows for more specific or more complex operations.

Babelway is providing a set of useful predefined xpath functions. These are functions accessible through the right menu but they could also be used in more complexe xpath expression. Here is the list of available functions:

date-util:currentDate()

same as Current Date function

date-util:formatDate('date', 'formatIn', 'formatOut')

same as Format Date function

date-util:formatDateLenient('date', 'formatIn', 'formatOut', true)

same as Format Date function, except that it allows to use a loose date parsing. For instance Apr 31 will be parsed as May 1st.

hash-util:hashMD5('toHash')

return the MD5 hash for the string argument.

hash-util:hashSHA1('toHash')

return the SHA1 hash for the string argument.

hash-util:hashSHA256('toHash')

return the SHA256 hash for the string argument.

hash-util:hashSHA512('toHash')

return the SHA512 hash for the string argument.

String lookup:addLookupTableEntry(String lookupTableId, String[] cols)

same as addLookupTableEntry in context menu

String lookup:addLookupTableEntry(String lookupTableId,String colNameIn, String[] cols)

same as addLookupTableEntry in context menu

String lookup:addSharedLookupTableEntry(String tableShareKey, String[] cols)

same as addSharedLookupTableEntry in context menu

String lookup:addSharedLookupTableEntry(String tableShareKey,String colNameIn, String[] cols)

same as addSharedLookupTableEntry in context menu

String lookup:lookupTableIncrementValue(String lookupTableId, int colIndexIn, int colIndexOut, String key)

same as lookupTableIncrementValue in context menu

String lookup:sharedLookupTableIncrementValue(String tableShareKey, int colIndexIn, int colIndexOut, String key)

same as sharedLookupTableIncrementValue in context menu

String lookup:sharedLookupTableValue(String tableShareKey, int colIndexIn, int colIndexOut, String whenNoResult, String defaultValue, String key)

same as sharedLookupTableValue in context menu

String lookup:sharedLookupTableValue(String tableShareKey, int colIndexIn, int colIndexOut, String whenNoResult, String defaultValue, String key, boolean subStringQuery)

same as sharedLookupTableValue in context menu

String lookup:sharedLookupTableValue(String tableShareKey, int colIndexIn, int colIndexOut, String whenNoResult, String defaultValue, String key, boolean subStringQuery, boolean messageCache)

same as sharedLookupTableValue in context menu

String lookup:lookupTableValue(String tableid, String colNameIn, String colNameOut, String whenNoResult, String defaultValue, String key)

same as lookupTableValue in context menu

String lookup:lookupTableValue(String tableid, String colNameIn, String colNameOut, String whenNoResult, String defaultValue, String key, boolean subStringQuery)

same as lookupTableValue in context menu

String lookup:lookupTableValue(String tableid, String colNameIn, String colNameOut, String whenNoResult, String defaultValue, String key, boolean subStringQuery, boolean messageCache)

same as lookupTableValue in context menu

int metadata-util:counter(String key)

return a auto incrementing number

String metadata-util:get(String key)

return the metadata with this name

void metadata-util:put(String key, String value)

add a metadata with the given name and value

String metadata-util:getAsBase64(String key)

return the metadatavalue encoded as Base64

String metadata-util:encodeBase64(Object value)

return an object encoded as Base64

byte[] metadata-util:decodeBase64(Object value)

return an object decoded as Base64

String metadata-util:replace(String key)

return replace metadata in the given string

String number-util:formatNumber(Number number, String format)

same as formatNumber in context menu

String number-util:formatNumber(String number, String formatIn, String formatOut)

same as formatNumber in context menu

String string-util:paddingString(String str, int strSize, String padding, String align)

same as paddingString in context menu

String string-util:unescapeXml(String aText)

return this string unescaped from the xml encoding

String string-util:unescapeHtml(String aText)

return this string unescaped from the html encoding

String string-util:unescapeFilenane(String aText)

return this string unescaped from the filename encoding

String string-util:escapeXml(String aText)

return this string escaped with the xml encoding

String string-util:escapeHtml(String aText)

return this string escaped with the html encoding

String string-util:escapeFilenane(String aText)

return this string escaped with the filename encoding

void validate:assertTrue(boolean assertion, String message)

raise an error if the assertion is not true

void validate:assertFalse(boolean assertion, String message)

raise an error if the assertion is not false

boolean validate:validateDate(String date, String formatIn)

return true if the assertion is true

boolean validate:validateDateLenient(String date, String formatIn, boolean lenient)

return true if date is valid

void validate:assertDateValid(String date, String formatIn, String formatOut, String message)

return true if date is valid

void validate:assertDateValid(String date, String formatIn, String formatOut, String message, boolean lenient)

return true if date is valid

String enrich:getMessageIn(String uuid)

return the content of the message in corresponding to the message key uuid

String enrich:getMessageIn(String uuid boolean ignoreMissing)

return the content of the message in corresponding to the message key uuid

String enrich:getMessageIn(String uuid, boolean omitXmlDeclaration, boolean ignoreMissing)

return the content of the message in corresponding to the message key uuid

String enrich:getXmlIn(String uuid)

return the content of the message xml in corresponding to the message key uuid

String enrich:getXmlIn(String uuid, boolean omitXmlDeclaration)

return the content of the message xml in corresponding to the message key uuid

String enrich:getXmlIn(String uuid, boolean omitXmlDeclaration, boolean ignoreMissing)

return the content of the message xml in corresponding to the message key uuid

String enrich:getXmlOut(String uuid)

return the content of the message xml out corresponding to the message key uuid

String enrich:getXmlOut(String uuid, boolean omitXmlDeclaration)

return the content of the message xml out corresponding to the message key uuid

String enrich:getXmlOut(String uuid, boolean omitXmlDeclaration, boolean ignoreMissing)

return the content of the message xml out corresponding to the message key uuid

String enrich:getMessageOut(String uuid)

return the content of the message out corresponding to the message key uuid

String enrich:getMessageOut(String uuid, boolean omitXmlDeclaration)

return the content of the message out corresponding to the message key uuid

String enrich:getMessageOut(String uuid, boolean omitXmlDeclaration, boolean ignoreMissing)

return the content of the message out corresponding to the message key uuid

String bfn:concat(String prefix, String separator, String suffix, String list)

return the concatenaition using prefix, suffix and separator

String bfn:substring(String str , String from, String to)

return substring

String bfn:replace(String str , String searchStr, String replaceStr, String ignoreCase)

return replace

loop bfn:sort(loop, String sort-key)

return the same loop of elements but sorted using the sort-key

loop bfn:sort-case-insensitive(loop, String sort-key)

return the same loop of elements but sorted using the sort-key case insensitive

loop bfn:sort-as-numeric(loop, String sort-key)

return the same loop of elements but sorted using the sort-key numeric

String bfn:newline()

return a new line

xmlNode searchMessage(String createdFrom)

search the message records and creates an xml as the result. This xml can optionally contain the actual content of the messages.

Request example:

enrich:searchMessage('2012-01-30T00:00:00')

result:


<?xml version="1.0" encoding="UTF-8"?>
<messages>
  <message id="9999999" key="7b65d710-ef9b-9999-83ad-deef8b47aaae">
    <record>
      <channelId>99999</channelId>
      <errorDescription>Message is not equal to metadata : {metadataName}
      </errorDescription>
      <gatewayInId>99999</gatewayInId>
      <gatewayInMessageKey>7b65d710-ef9b-4718-83ad-deef8b47aaae
      </gatewayInMessageKey>
      <gatewayInMessageStatus>Related to message
      6e57d755-9cf1-9999-a94c-0b7ede2a9869 </gatewayInMessageStatus>
      <gatewayInTimestamp>2012-01-29T09:07:48</gatewayInTimestamp>
      <gatewayOutTimestamp>2012-01-29T09:07:49</gatewayOutTimestamp>
      <hubId>999999</hubId>
      <id>999999</id>
      <inSize>17257</inSize>
      <messageFormatFileNameIn>2549518.edi</messageFormatFileNameIn>
      <messageFormatFileNameOut>2549518.edi</messageFormatFileNameOut>
      <messageFormatInHash>93f112bdb52b33e...</messageFormatInHash>
      <messageFormatInSignHash>3f20f88...</messageFormatInSignHash>
      <messageFormatOutHash>826c6ad23da17...</messageFormatOutHash>
      <messageFormatOutSignHash>984cc...</messageFormatOutSignHash>
      <messageFormatToXmlTimestamp>2012-01-29T09:07:48
      </messageFormatToXmlTimestamp>
      <messageKey>7b65d710-ef9b-4718-83ad-deef8b47aaae</messageKey>
      <messageReference>25495189.edi</messageReference>
      <outSize>5817</outSize>
      <parentMessageId>5741867</parentMessageId>
      <receiveTimestamp>2012-01-29T09:07:48</receiveTimestamp>
      <status>DONE</status>
      <type>REGULAR</type>
      <xmlInSize>17257</xmlInSize>
      <xmlOutSize>10924</xmlOutSize>
      <xmlToMessageFormatElapse>22</xmlToMessageFormatElapse>
      <xmlToMessageFormatTimestamp>2012-01-29T09:07:49
      </xmlToMessageFormatTimestamp>
      <xmlToXmlElapse>7</xmlToXmlElapse>
      <xmlToXmlTimestamp>2012-01-29T09:07:48</xmlToXmlTimestamp>
    </record>
  </message>
  <message id="9999999" key="7b65d710-ef9b-9999-83ad-deef8b47aaae"> 
  ...   
  </message>   
</messages>

					

xmlNode searchMessage(String createdFrom, String createdTo)

same as searchMessage with default values

xmlNode searchMessage(String createdFrom, String createdTo, String status)

same as searchMessage with default values

status possible values : IN_PROGRESS, WAITING_ACK, DONE, ERROR

xmlNode searchMessage(String createdFrom, String createdTo, String status, String messageMultiKeys)

same as searchMessage with default values

xmlNode searchMessage(String createdFrom, String createdTo, String status, String messageMultiKeys, String messageRef)

same as searchMessage with default values

xmlNode searchMessage(String createdFrom, String createdTo, String status, String messageMultiKeys, String messageRef, String channelName)

same as searchMessage with default values

xmlNode searchMessage(String createdFrom, String createdTo, String status, String messageMultiKeys, String messageRef, String channelName, String errorDesc, String fileName, String fromName, String toName, String maxSize, String minSize, String maxResults, String order, String type, String hash)

same as searchMessage with default values

type possible values : TEST, REGULAR

xmlNode searchMessage(String createdFrom, String createdTo, String status, String messageMultiKeys, String messageRef, String channelName, String errorDesc, String fileName, String fromName, String toName, String maxSize, String minSize, String maxResults, String order, String type, String hash, String messageInPayloadType, String xmlInPayloadType, String xmlOutPayloadType, String messageOutPayloadType,String contextPayloadType)

same as searchMessage with default values

PayloadType allow to specify if the content of the message must be included in the output. Default is NONE.

payloadType possible values : NONE, XML, Base64

Big Number Xpath expression

The Big Number Xpath expression function as the same purpose as the Custom Xpath Expression except that it is meant to only accpet numbers as arguments and only return a number. All arguments are treated as big numbers allowing calculation requiring more than eleven significant digits.

This function requires a Name, an optional Description and the Xpath expression including one or more arguments if required (see Custom Xpath expression for more information about arguments).

Big Number Xpath expression

Figure 4.49. Big Number Xpath expression


Format Number

The Format Number function allows you to format any number according to your specific needs. A short description of available symbols is given in the dialog box as illustrated. This function requires a Name, an optional Description, an optional Source Format and a Target Format.

Example 4.3. 

For example, 1234 will be displayed as "01234.00" using a "00000.00" format or as "1,234.0" using a "#,###.0" format.


Format Number

Figure 4.50. Format Number


Format String

The Format String function allows you to format any string of character according to your specific needs. This function requires a Name, an optional Description, and three format parameters: Size to define the string length, Padding Character to define the character used to fill empty spaces and Align to define where the original string is aligned ( Left with padding characters added right, Right with padding characters added left or Center with padding characters distributed on both sides).

Format String

Figure 4.51. Format String


Format Date

The Format Date function allows you to format any date and time according to your specific needs. A short description of available symbols is given in the dialog box as illustrated. This function requires a Name, an optional Description, an optional Date format In and a Date Format out.

Example 4.4. 

For example, a date will be displayed as "15-Sep-2009" using a " dd-MMM-yyyy" format or as "2009-09-15" using a "yyyyy-MM-dd" format.


Format Date

Figure 4.52. Format Date


Arithmetic Operations

All arithmetic operations, allows you to arithmetically combine two arguments. As illustrated, these functions require only a Name and an optional Description.

  • Add(+) function returns the sum of both numbers entered as arguments.

  • Multiply(*) function returns the product of both numbers entered as arguments.

  • Minus(-) function returns the difference of both numbers entered as arguments.

  • Div function returns the integer part of the division of both numbers entered as arguments.

  • Mod function returns the reminder of the division of both numbers entered as arguments.

Arithmetical operation

Figure 4.53. Arithmetical operation


Concat

The Concat function allows you to concatenate together two strings to form a new one. You can also add additional characters before, between and/or after both concatenated strings. As illustrated, this function requires a Name, an optional Description, and three optional format parameters to define additional characters to be added in front of ( Prefix ) and behind ( Suffix ) the concatenated string and between ( Separator ) both original strings.

Concat

Figure 4.54. Concat


Replace

The Replace function allows you to replace, inside a string, a defined pattern by another one. As illustrated, this function requires a Name, an optional Description, a Search Pattern defining the character or string to be searched and replaced and a Replace Pattern defining the new character or string that will replace the found one inside the string. If Ignore case? is checked, the search will be case insensitive.

Replace

Figure 4.55. Replace


Substring

The Substring function returns a substring of the attached argument starting at the position specified in the From field and ending at the position specified in To field. As illustrated, this function requires a Name, an optional Description, a From defining the character starting position,and To defining the character ending position.

Substring

Figure 4.56. Substring


Lookup Table - Lookup Table

The Lookup Table function allows you to replace an item with the matching item from a lookup table. To use this function, first you select a lookup table in Table name drop down list. Then you select In column, this is the column where the item will be searched for. If a match is found, the value in selected Out column will be returned. In and Out are fields are selected from lookup table available columns. If no match is found, the result will depends on the When no result setup ( Default value will return the value defined in the following Default value field, Same value will return as output the incoming value, Raise Error will return an error in such a case). As illustrated, this function also requires a Name and an optional Description.

Lookup table

Figure 4.57. Lookup table


Lookup Table - Shared Lookup Table

The use of a shared lookup table is the same as a standard lookup table but for its name that is replaces by its Access Key (automatically defined when lookup table is defined as shared) and In and Out that are respectively replaced by Column index of the source and Column index of the destination.

Shared lookup table

Figure 4.58. Shared lookup table


Lookup Table - Add Lookup Table Entry

You can add an new entry in your lookup table using this transformation function. As illustrated, this function requires a Name, an optional Description, Table name, Replace based on column

Warning

A compléter

Add lookup table entry

Figure 4.59. Add lookup table entry


Lookup Table - Lookup Table Increment Value

The transformation function "Lookup Table Increment Value" is used to increase a lookup table value by 1. It could be used to implement a persistent counter. As illustrated, this function requires a Name, an optional Description, Table name, In and Out column

Warning

A compléter

Increment value

Figure 4.60. Increment value


4.4.4.6. Filter Function

The Filter function is used to specify if the mapping result will be used as an output or not.

You can add a Filter function as an Xpath expression to any mapping rule to filter the output of this mapping rule, that is to decide if the result is output or not in the generated message out. Note that the Filter function will always return an element, but if the filtering condition is not met, this output will be empty.

The Filter can be used on any element but is most useful to filter loop elements and to generate only some of these elements according to the filter rule as illustrated in the following examples.

Note

  • The Filter is done on the mapped element, that means that the filter context is the mapped element and that it can be immediately referenced using a ' . ' in the filtering Xpath expression.

  • The Filter function is applied on the mapped element and always returns a result. That is not the case for the If function that is applied before the mapping, meaning that, if the condition is not met, the mapping is not performed. See the If Function chapter for more details.

Filter example on a value node

In the following example, the node mapping is filtered on the Price value and the mapping output is used only if it is greater than 12 (Xpath filter expression is ' .>12 ').

Input csv file:

Code, Quantity, Price
A23, 2, 12.5
A24, 3, 10.0
A25, 1, 15.2
A26, 2, 13.6
Filter example mapping

Figure 4.61. Filter example mapping


In the second ligne, the Price is lower than the filter value and the mapping output will be empty. Note that the output is generated and so the separating comma is present (as opposed to If function output).

Output csv file:

Code, Quantity, Price
A23, 2, 12.5
A24, 3,
A25, 1, 15.2
A26, 2, 13.6
Filter example on a loop node

In the following example, the entire line mapping is filtered on the Price value and the mapping output is used only if it is greater than 12 (Xpath filter expression is ' field[3]>12 ').

Filter example mapping

Figure 4.62. Filter example mapping


Now, using the same input file as in the previous example, the entire second line, for which the Price is lower than the filter value is not output in the out message file.

Output csv file:

Code, Quantity, Price
A23, 2, 12.5
A25, 1, 15.2
A26, 2, 13.6

4.4.4.7. Format Function

For each mapping, you can define a Format expression that will be applied on the mapped value.

The Format column appears next to the If and the Filter columns in the Transformation rules pane.

You can add a Format function as an Xpath expression to any mapping rule to easily and quickly format the output of this mapping rule. You can even use Format on a loop mapping to perform an action, like sorting, on the loop elements.

Note

  • The Format function is equivalent to the format functions available in the Drag and Drop Transformation Functions but it is lighter and easier to use to format output data.

  • The Format expression is an Xpath expression, and the current mapped value is referenced by $value.

Format examples on a value node

In the following example, a data formatting is done on a numeric value and on a string..

Input csv file:

Code, Quantity, Price
A23, 2, 12.5
A24, 3, 10.0
A25, 1, 15.2
A26, 2, 13.6
Format example on a value node

Figure 4.63. Format example on a value node


The Price value is a number and is formatted using the ' format-number($value,'000.00') ' Xpath command in order to generate all this column values with the same format (three digits before the decimal dot with leading zeros if required, and two digits after).

The Code strings are formatted using the ' translate($value,'A','a') ' Xpath command in order to replace all capital 'A' with lower case 'a'.

The output file after mapping and formatting the input file is:

Code,Quantity,Price
a23,2,012.50
a24,3,010.00
a25,1,015.20
a26,2,013.60
Format example on a loop node

The format function applied to a loop mapping will allow to manipulate the loop. This brings lots of possibilities from the simplest like sorting or filtering but also it allows to change the structure of the loop and having for instance 2 items on the message out for every single items in the input message.

In the following example, the loop mapping format function sorts the csv file based on the first field value (Xpath filter expression is ' bfn:sort($value, 'field[1]') ') see for the complete list of functions.

Format example on a loop node

Figure 4.64. Format example on a loop node


The following input csv file is used as input:

a1,a2,a3
9,8,7
6,5,4
3,2,1
11,12,13
1,0,0

The hereover Xpath condition will generate the following output file:

b1,b2,b3
1,0,0
11,12,13
3,2,1
6,5,4
9,8,7

An other example, is the manipulation the the loop structure itself. If you need to create a number of iteration in the out message depending of the value of the input message you can use an expression like this: for $i in $value return for $j in 1 to $i/field[1] return $i. See the result in the example below.

The following input csv file is used as input:

a1,a2,a3
1,2,3
4,5,6
7,8,9

The hereover Xpath condition will generate the following output file:

b1,b2,b3
1,2,3
4,5,6
4,5,6
4,5,6
4,5,6
7,8,9
7,8,9
7,8,9
7,8,9
7,8,9
7,8,9
7,8,9

4.4.4.8. If Function

Tip

See: Managing Channels - Message Transformation Functions

If function means that for each occurrence of the loop, check the condition before generating an output.

If is more like a toggle for the mapping. The transformation evaluates the If expression, and if this expression is true, it will apply the mapping. But if it is false, the mapping will not be applied and the target element of the mapping will even not be created.

You can for example create a specific target element only if the value of a source element equals MyValue: " .='MyValue'"

If will only create the target element if the expression is validated, but will not change the value of the mapping.

The If function is used to test a condition before doing the mapping and generating the output.

You can add a If function as an Xpath expression to any mapping rule to condition the execution of this mapping rule, that is to decide if the mapping is performed or not on the input data. Note that the If function does not always return an element, if the filtering condition is not met, the mapping is not performed and so no output is generated.

The If function will only create the target element if the expression is validated, but will not change the value of the mapping.

The If can be used on any element as illustrated in the following examples.

Note

  • The If is done on the mapped element parent, that means that the filter context is the mapped element parent and not the mapped element itself as with the Filter function. This is because the condition is tested before the mapping is done (or not), so the condition must be tested against the element parent as the element may not exist.

  • The Filter function is applied on the mapped element and always returns a result. That is not the case for the If function that is applied before the mapping, meaning that, if the condition is not met, the mapping is not performed. See the Filter Function chapter for more details.

If example on a value node

In the following example, the node mapping is tested on the Price value and the mapping output is generated only if it is greater than 12 (Xpath filter expression is ' .>12 ').

Input csv file:

Code, Quantity, Price
A23, 2, 12.5
A24, 3, 10.0
A25, 1, 15.2
A26, 2, 13.6
If example mapping

Figure 4.65. If example mapping


In the second ligne, the Price is lower than the test value and the mapping output will be empty. Note that the output is not generated and so the separating comma is not present (as opposed to Filter function output).

Output csv file:

Code, Quantity, Price
A23, 2, 12.5
A24, 3
A25, 1, 15.2
A26, 2, 13.6
If example on a loop node

Doing a test on a loop node will condition the whole loop generation or not. The previous example is not very meaningful in this case. A loop is not conditionned to its own elements but can be conditionned to an external element such as a date or a general value as in the following example.

In the following example, the entire loop mapping is filtered on the Type of Invoice value and the mapping of the entire loop is performed only if this value is equal to 'AAA' (Xpath filter expression is ' csv/line[1]/field[1]='AAA' ').

If example mapping

Figure 4.66. If example mapping


The following input csv file (the same as in the previous example, but with an additional 'invoice' line) is used as input:

Code, Quantity, Price
AAA, 001, 25/09/2009
A23, 2, 12.5
A25, 1, 15.2
A26, 2, 13.6

The hereover Xpath condition, as it is met by the input file, will generate the following output file, including the complete loop data:

Code, Quantity, Price
A23, 2, 12.5
A25, 1, 15.2
A26, 2, 13.6

If the hereover Xpath condition is modified such as it is not met anymore by the input file, the loop data will not be generate and the output file woul simply be:

Code, Quantity, Price

4.4.4.9. Using or changing metadata

In drag and drop transformation you can use and route metadata linked to incoming message such as Input File Name, Input User... On the other hand, you can also add your own metadata in the Message Definition Out pane and map any node to this metadata. To add such a metadata, right click on User defined metadata and choose Add in the contextual menu.

This new metadata will then be available in following processing steps, for example it can be used in email notification body text as illustrated hereunder.

Drag and drop transformation with metadata

Figure 4.67. Drag and drop transformation with metadata


4.4.4.10. Counter

You can easily add a counter using a custom drag and drop transformation function.

You can add a counter in a custom drag and drop transformation function. Use the Xpath ' position() ' to implement this local counter in your transformation.

Additionally, it is also possible to keep track of a counter from one transformation to another by implementing it into a lookup table and applying it using the custom function ' lookup table counter '.

To implement a "persistent" counter:

  • Create a lookup table named ' counters ' with two columns named ' name, value '.

  • Add an entry (mycounter, 0).

  • In the transformation screen, add a transformation function type : LookupTable / LookupTable Increment Value.

  • Select the table to ' counters ' and the IN to ' name ' and OUT to ' value '.

  • Now create a new transformation function ' contant string ' with a value of ' mycounter '.

  • Drag the contant string as the argument of the lookup table.

You are now ready to use the counter in you mapping. Each time the counter is used, the value will be incremented by 1.

Example

Make a counter of segments during XML incoming message file transformation.

Example:
SEGMENT A (multiple segments possible)
- FIELD A1
- FIELD A2

In this example, how to make a dynamic counter to count all segments A where the field A1 = "009"?

To count all segments A with field A1='009', use the following custom Xpath function: count(A[A1='009']) and map it to the target segment.

To ignore the loop on the counter that resets this counter, use a custom Xpath function with the following code: 1 + count(preceding-sibling::subelement) + count(../preceding-sibling::element/subelement) where element is the name of element used with loop1 and subelement is the name of element used with loop2.

Note

Do not forget to link the relevant loop to your custom rules in order to access proper relevant data.

4.4.4.11. Creating XSLT Functions

Create XSL function

To create your own XSL function you need to do the following

Write the functions in XSL file like this sample

<?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>

Upload the created Xsl file on the File Property Name in Advanced Properties, then add the file name to the comma separated list of included xsl files contained in the StringProperty XsltIncludeFileList

4.4.4.12. Advanced options

Optionally you can set some advanced properties like

output.notransform

= true ->do not apply transformation to the message. This is useful to create user metadata without modifying the message. It can be used in conjunction with input.binary

input.binary

= true -> the input is binary. This is useful, for instance to create a message out based on metadata only or in conjunction with output.notransform

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.

Xslt transformation editor

Figure 4.68. 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.

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

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.

Notifications allows you to be informed by email when a message is processed by the Babelway platform.

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

Notifications list screen

Figure 4.69. 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 every time a message is 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.

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 on 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

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 save the changes that you have made in this tab (name and description).

The Delete action button allows you to delete the notification, but is only accessible if the notification is not used in any channel.

Notification detail - tab General

Figure 4.70. Notification detail - tab General


Recipients

This tab allows you to configure to who the notifications emails will be sent.

Target users

This table allows you to choose, amongst all the users that can access the environment, who will receive the notification when a message is successfully processed, and who will receive the notification when the processing of a message fails.

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 when you change the signaletic of the user in the admin section, or the user will be automatically removed from the notification if you removes accesses 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.

Notification detail - tab Recipients

Figure 4.71. Notification detail - tab Recipients


Email

This tab allows you to configure the notification emails.

Sender

The email address 'from' of all the notifications emails.

Success subject

The subject of notifications emails, when a message is successfully processed.

Success body

The body of notifications emails, when a message is successfully processed.

Failure subject

The subject of notifications emails, when the processing of a message fails.

Failure body

The body of notifications emails, when the processing of a message fails.

These subject and body fields are free text fields that you can fill 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...

Notification detail - tab Email

Figure 4.72. Notification detail - tab Email


Related items

This tab contains quick links to many other elements related to this gateway.

Using channels

All the channels that use this element.

Notification detail - tab Related items

Figure 4.73. Notification detail - tab Related items


4.6. 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.6.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

List of lookup tables

Figure 4.74. List of lookup tables


The list can contain the following columns:

Name

A name that identifies 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.

Last entry modification on

The date and time of the last modification of the content 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 a line to view the details of the associated lookup table, or edit it. See lookup table etails.

The Create action button allows you to create a new lookup table.

4.6.2. Create a lookup table

To create a new lookup table, just click on Create at the bottom of the lookup tables list screen.

The creation screen just asks you to choose a name for the table, anf dor each column that you want to use. Just leave empty the columns that you don't want to use.

Creation of lookup table

Figure 4.75. Creation of lookup table


This screen can also be accessed later to update the structure of an existing lookup table. Just click on Change columns in the lookup table detail screen.

4.6.3. Lookup table detail

This screen allows you to edit the structure parameters of the table, and its content.

List of lookup tables

Figure 4.76. List of lookup tables


The following fields are displayed, about the structure of the table.

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.

Shared

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.

The content of the table can also be edited directly in the table.

  • 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.
  • To add new rows, click on Add 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 your changes.

4.6.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.6.5. Automatic Population of Lookup Tables

Automatic Population of Lookup Tables allow you to import the lookup tables data from outside data source.

After creation of lookup table you can create data import channel by click on Create a lookup table data import Channel as illustrated below:

Create a lookup table data import Channel

Figure 4.77. 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 meets your requirements.

Lookup Tables Data Import Channel

Figure 4.78. Lookup Tables Data Import Channel


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.7. 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:

Channels that need routing

Figure 4.79. 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.7.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

List of routings

Figure 4.80. 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.7.2. Routings detail

The detail of the routing allows you to edit all the rules to choose the next element to process.

Routing detail

Figure 4.81. 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:

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.7.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.

Edit routing in channel detail

Figure 4.82. Edit routing in channel detail


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.8. 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.

Testing tab list of existing test cases

Figure 4.83. 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:

Edit test case screen

Figure 4.84. 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.

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.

...

...

Warning

Ajouter la description des properties ???

Message Record

As a result of running a test, following message record screen is displayed. Click on More details command to see all information.

Message record

Figure 4.85. Message record


From here you have access to all message files such as in and out messages in defined format as well as processed 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 all of them are not successful, deployment will be aborted.

4.8.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.9. 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

You can download the certificates or revoke them as illustrated below

Manage Keystore Certificates

Figure 4.86. 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 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 generated by the certificate authority will be trusted.

To read more about Https gateway See HttpClientOut Gateway

4.9.1. Trust new certificate

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 you when to trust.

Trust root certificate

Indicate if you want to trust certificates issued by the provider of the selected certificate.

4.9.2. 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.10. Metadata

Metadata are data that are associated with the processing of the message, besides of the processed input and output files.

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.10.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 following figures.

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.

System metadata used to customize notification emails

Figure 4.87. System metadata used to customize notification emails


System metadata used to customize file names

Figure 4.88. 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 as illustrated in the following example where the earlier user defined metadata is used as a name for the file sent as email attachment.

User defined metadata used to customize attachment name

Figure 4.89. 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 element 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 repeated 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.10.2. System Metadata

System metadata is metadata that are defined in the system and have useful information relating to message being processed. See Metadata chapter for reference and examples of use.

Table 4.1. List of System Metadata

CodeNameDescriptionExample
{com_babelway_ messaging_context _message}Message context  
{com_babelway_ messaging_context _accountId}Account IDThe ID of the account which has the processing Hub.25010
{com_babelway_ messaging_context _hubId}Hub IDThe ID of the account environment which processed the message25030
{com_babelway_ messaging_context _channelId}Channel IDThe ID of the channel which is used in processing the message.26885
{com_babelway_ messaging_context _receiveDay}Receive DayThe day in which the message was delivered by the system.20090503
{com_babelway_ messaging_context _receiveTime}Receive TimeThe time in which the message was delivered by the system.20090503-163446
{com_babelway_ messaging_context _receiveTime_extended}Receive Time extendedThe extended receive time.20090503-163446-968
{com_babelway_ messaging_context _message_reference}Message referenceA reference for the messageABNAmroFunds_AAA.xls
{com_babelway_ messaging_context _client_reference}Client referenceA reference for the client 
{com_babelway_ messaging_context _in_filename}Input file nameThe name of the input fileABNAmroFunds_AAA.xls
{com_babelway_ messaging_context _in_filename _no_extension}Input file nameThe name of the input file with no extension.ABNAmroFunds_AAA
{com_babelway_ messaging_context _out_filename}Output file nameThe name of the output file20090430_ABNAMROLUX _MMF.xls
{com_babelway_ messaging_context _out_fileContent}Output file content  
{com_babelway_ messaging_context _mail_from}The sender email addressThe email address from which the message was sent.no-reply@babelway.net
{com_babelway_ messaging_context _mail_to}The receiver email addressThe email address to which the message was sent.fund-x@babelway.net
{com_babelway_ messaging_context _mail_subject}Email message subjectThe subject the email message received by the system.FW: Abnamrofunds_AAA.xls - MMF - 20090430
{com_babelway_ messaging_context _mail_body}Mail body javax.mail.internet. MimeMultipart@13dc44a
{com_babelway_ messaging_context _mail_send_date}Mail sending dateThe sending date of the email message.1241422103000
{com_babelway_ messaging_context _as2_receive_date}AS2 message receive dateThe receive date of the AS2 message.1241504709696
{com_babelway_ messaging_context _as2_send_date}AS2 send dateThe sending date of the AS2 message. 
{com_babelway_ messaging_context _as2_from}AS2 from addressThe AS2 sender address.C4NETBE
{com_babelway_ messaging_context _as2_to}AS2 to addressThe AS2 receiver address.BABELWAY_AS2_25010
{com_babelway_ messaging_context _as2_message_id}AS2 message IDThe ID of the AS2 message.d19bc8_1210d8ea134_-45ec @C4NETBE_host
{com_babelway_ messaging_context _in_user}Input userThe username from which the message was sent (such as the ftp login name or sender email address)-ftp login: 'fc-invoice'

4.11. 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.11.1. Environment change Log

Each time you push 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:

list of revisions

Figure 4.90. list of revisions


The revisions are listed from the latest to the olds. 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 above the first are old states of your components. There is a timestamp (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.

By clicking on one of those revisions, you will see a detailed list about what will happen at revert. This basically corresponds to a diff between the current state of your components and the state you've chosen to revert to.

4.11.1.1. Change detail

Each time you push 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.

The revisions details page is illustrated below:

revisions details

Figure 4.91. revisions details


When you've chosen a revision to go back to, your components will be modified. The list at that point only tells you what will happen. (properties will be changes, elements will be deleted/created) in order to get in the exact same state at the revision you had chosen. A new revision will be created corresponding to the revert.

So if you had a component A and a component B. You delete the component B. You can use the revert to go back to the point before you had deleted component B.

But the granularity is limited. If you had a component A and a component B. You delete B. Then you create a component C. If you realize that deleting B was a mistake, you can go back at the time before you deleted B.

Reverting to that point will delete component C and recreate component B. There is no way to get component B while keeping component C,You can see that as if you were in Word, a component is a paragraph and you use the "Undo" (Ctrl-Z) function. If you changed multiple paragraphs, you cannot undo a paragraph, you can only undo at the document level.

Note

Revert function is an advanced function, use it with care.

4.11.2. Elements change Log

Note

Explain here that is it possible to view the element change log in a tab of gateway|MD|transformation detail screen. Explain the infos, how to revert, ... This page will be linked from these screens.

Chapter 5. Catalogue

The catalogue is a large repository of templates and wizards, that allows you to define easily the elements you need to build your channels.

A template is a predefined element, that is ready to use, and that you can just copy into your environment to use it. The catalogue contains many such elements, like 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 !

A wizard is an application that allows you to define an element in just a few clicks. It will just ask you a few minimal questions, and do the whole job for you. Wizards go from definition of a single element (for example a message definition from an xml sample file) to the definition of complete and ready to use channels.

Catalogue example

Figure 5.1. Catalogue example


5.1. Searching the catalogue

To access the catalogue, just click in the main menu on the Catalogue section. You can also directly access it from most places where you have to define elements.

To search the catalogue, just type the words corresponding to your search in the search box. You can search for companies (e.g. Carrefour), applications (e.g. SAP), processes (e.g. invoice) or technologies (e.g. FTP).

Catalogue search Result

Figure 5.2. Catalogue search Result


If you want to create a precise kind of element, and what that the search only shows you thins kind of items in the result, you can click on the loop just behind the search box, and access some more search parameters. Just select the element types that you want to be returned by the search.

Catalogue search Result

Figure 5.3. Catalogue search Result


In the results, the following base images describe the type of the element of the catalogue object. In case of wizards, it is the kind of element that can be generated by the wizard.

Incoming gateways

Incoming message definitions

Transformations

Outgoing message definitions

Outgoing gateways

Complete channels, or at least multiple elements already configured to work together.

If the icon also have a cog on it, it is a wizard. Otherwise, it is a template.

Wizard for creating incoming gateways

Wizard for creating incoming message definitions

Wizard for creating transformations

Wizard for creating outgoing message definitions

Wizard for creating outgoing gateways

Wizard for creating complete channels, or at least multiple elements already configured to work together.

The meaning of the other icons is the following.

Gives an indication of how often is this item of the catalogue used. More dark-blue people means more usage. You can have more confidence in items that are largely used. results of the catalogue are always sorted by decreasing confidence.

This icon tells that this wizard item can be used for free.

When you think you have found the item you search for, you can click on the result line to get more details about the item. From this screen, you'll be able to import the templates or launch the wizard.

5.2. Import a template

When you have found an interesting template in the catalogue, you have to import it into your environment before using it. In your environment, you'll have you own copy of the template, and will be allowed to make any change you want to the template.

To import an element, just click on Import on the detail screen of the item.

Template detail

Figure 5.4. Template detail


A intermediate screen with some options, depending of the type of the element, will already allow you to customize the element to your needs. You can then just click on Import to terminate the process.

Import options

Figure 5.5. Import options


Import done

Figure 5.6. Import done


After you have decided to use an item coming from the catalogue, during the lifetime of your projects, it happens that the catalogue elements continue to be updated (ameliorations, addition of functionnalities, fixes, ...). It is important to realize that the changes don't affect your environment, as you are working with your own copy of the template. If you would want to upgrade to get all the latest changes from the template, just go to the related items tab of the element, and click on Update from parent. The element will then be equal again to the template (but the changes you could have made to the template will be lost).

Update from parent

Figure 5.7. Update from parent


5.3. Use a wizard

Using wizards is also very simple: just click on Run installation on the detail screen of the wizard. The wizard will then just ask you the input he needs, and then make the complete installation into your environment. Note that, even if most wizards are very simple, a wizard can have multiple steps.

Template detail

Figure 5.8. Template detail


When the wizard has finished, you can directly use the item, or update it if needed.

Another interesting option is the Run installation wizard again option that will be available. It allows you to rerun the wizard to update your element, if some input should have changed. This action button is available from the general tab of the detail of the created element.

Please note that not all wizards can be rerun.

Template detail

Figure 5.9. Template detail


5.4. Some catalogue items in details

In this section, we give some more explanations about some items or wizards that are very often used.

Please keep in mind that the catalogue contains many elements, and that most of them don't require more help than the inline explanations.

Wizards for message definitions.

Chapter 6. Admin

In this chapter, we must explain that can be found under the admin section menu.

6.1. Personal data

Manage and edit your personal information such as username, name, email address, password...
My Profile

Figure 6.1. My Profile


The following information is displayed:

Username

The username you entered at registration time (cannot be modified).

Email

The email address you entered at registration time (cannot be modified).

First name

Your first name (optional, can be modified).

Last name

Your last name (optional, can be modified).

Phone

Your telephone number (optional, can be modified).

Commands

Save

Save your modifications.

Edit password

Enable you to change your password.

Select, enter or change parameters values then click on   Save to save your changes or on   Back to go back 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 to go back to previous screen without saving change.

Edit screen

Figure 6.2. Edit screen


6.2. Environment settings

An account environment contains a collection of one or more channels that are managed together. Gateway addresses are specific to each Babelway environment. In your Babelway account, you could create additional environments if required.

A channel in Babelway is the communication between 2 external systems, for instance your ERP and the accounting package of your customer. The channel defines all the aspects of the communication, the formats used as well as email notification parameters.

There are 2 main parameters that are defined at the level of the account environment:

Message Storage Duration

How long the messages processed in this environment will be kept. The possible values are 1 month, 3 months, 1 year or 10 years for legal documents that must be kept longer. The value setted here is a default value at environment level, and will only be used if a more specific value is not set at channel level.

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)

Do I need one or several account environments?

If you manage channels that require different settings for storage duration or SLA described above, then you must create different environments.

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.

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.

Controlling account environments

There are different operations that can be done on an environment hub:

Account name

By default, this name includes your login name but you can edit and change it.

Environment name

By default, this name is "Environment X" (X is the count of environments in your account) but you can edit and change it

You can create a new environment by clicking on "create new environment", and confirm.

6.2.1. Best Practices

Channel elements are very flexible and can be copied from one environment to another as long as the user has access to both environment. Here is some advice for organising work in Babelway if you plan to use more than a few channels.

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 the previous "production" version will therefore remain available allowing you to revert changes if you need it.

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. Would 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.

Versioning of channel

Instead of modifying an existing channel, simply deactivate it and create a new one. Import the new elements from the test environment to the new one and activate it. The next deployment will deploy the new channel and undeploy the old one. You now have a backup copy of the old channel.

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.

6.3. Billing

Buy additional units, credits or services.

This screen displays a table display the details of the billing run. The details will depend on the price plan you are on. 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.

Billing details

Figure 6.3. Billing details


Current credit balance

Number of units left in your account. A negative number means that you already exceeded your limit. A ticket (and its related mail) is always generated before the limit is reached to warn you that you should buy new units.

Price plan

This environment price plan for Babelway services and message processing.

6.3.1. Buy Credits

Buy additional units, credits or services.

According to your current price plan, you can buy or subscribe to additional services and credits.

Enter the desired quantity for items then click on   Next command and proceed to invoice and payment screens as described hereunder, or click on   Back command to cancel order and go back to previous screen.

Purchasing process and invoicing

Buy credits 2/3

Figure 6.4. Buy credits 2/3


Enter all required personnal information for your account, company, contact, and references then click on   Next command to proceed to last step as described hereunder, or click on   Back command to cancel and go back to previous screen.

Buy units 3/3

Figure 6.5. Buy units 3/3


Check your order summary then click on   Confirm command to confirm and send your order, or click on   Back command to cancel and go back to previous screen.

6.4. Users

Manage and edit users and users access to your account.

The table lists all users who have a right on your environments. There are three different roles available that are described here:

Account Administrator

Has full rights over the account (yourself by default).

Channel Manager

Has full rights over alerts/messages/channels functions, but cannot access account information, subscription parameters, and other user rights. This type of access is for people who will manage and maintain channels, without being allowed to view and change specific account information.

Monitoring

Can upload/download messages from specific webpage of the account. Cannot view or access anything else than messages from/to that webpage. This type of access is for people who will manually upload/download message files.

No Access

Has no access to your environment, but you can switch to another role without sending an invitation.

Figure 6.6. 


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.

6.4.1. Add a User

Add a new user and select his role.

From this screen, you can add and invite a new user and select his role on any of your account environments.

Add a user

Figure 6.7. Add a user


To add a new user, enter his email address and select his 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 this drop-down list is not available.

Email

The email address to send the invitation.

Role

The rights given to the new user.

Invitation text

You can change the Invitation Text if you want. This message will be send to the new user to ask him to accept and activate this option.

Click on   Back command to cancel and go back to previous screen. Click on   Send to send this email and invite the new user.

Note

The new user will be added with his role after he accepts this invitation and activates it by clicking on the link included in the mail in the three days following your invitation sending.

Chapter 7. Miscelleanous

This chapter contains some more stuff, not closely related to the web interface.

7.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 these 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 to 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, messages 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 ressource 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:

  • Details of gateways in and out including external systems 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.

7.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) offering whereby Babelway has access to virtual servers "on-demand". Servers are physically located in the IRELAND and other locations around the world.

To maximise availability and reliability, not only has Babelway contracted on strict terms with reliable partners 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 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 fail-over as well as scalability needs.

To fully leverage Babelway fail-over mechanism, traffic with Babelway gateways be based on DNS (logical addressing) and accept traffic with each of the public IP address published by Babelway:

  • 79.125.5.172

  • 79.125.5.173

  • 91.198.243.225

  • 91.198.243.226

For outbound traffic, Babelway guarantees that all traffic will be issued from one of these IP addresses.

For inbound traffic, Babelway garrantees 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 these IP addresses. At any time, DNS will 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 itself the right to changes these allocations.

7.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 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 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

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 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

7.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.

7.4.1. Introduction

URLs

All the requests to access the REST api have the form https://www.babelway.net/SelfService3/rest/v2/hub-{hubId}/{action}.{format}?{parameters}, where

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 Authentication.

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 a UNIX Epoch time (number of seconds since the first of January 1970).

7.4.2. Available actions

The following methods are available in the api:

tickets

List and search tickets

ticket

Get all the informations about a ticket

deleteTicket

Delete a ticket

messages

List and search messages

message

Get all the informations about a message

channels

List and search channels

gateways

List and search gateways

messageDefinitions

List and search message definitions

transformations

List and search transformations

catalogue

Search in the catalogue

7.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

    [
    	{
    		"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:34.\nDue to exception:ftp.server.com",
    		"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:34. Due to exception:ftp.server.com</description>
    		<creationMoment>1349180055000</creationMoment>
    		<key>aa3a19d7-14f4-4f66-819b-e044eb24b273</key>
    	</ticket>
    </collection>			
    			

7.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-e044eb24b273

    {
    	"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:34.\nDue to exception:ftp.server.com",
    	"creationMoment":1349180055000,
    	"key":"aa3a19d7-14f4-4f66-819b-e044eb24b273"
    }
    			

7.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-e044eb24b273

    "true"
    			

7.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. Timestamp should be formatted as a UNIX Epoch time (number of seconds since the first of January 1970)

before

Returns messages created before the given timestamp. Timestamp should be formatted as a UNIX Epoch time (number of seconds since the first of January 1970)

gatewayIn

a string search in the gateway in name

gatewayOut

a string search in the gateway out name

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, WAITING_ACK, DONE, ERROR and 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_SMTP_IN"},
    		"gatewayOut":{"id":64080,"name":"Email","type":"Gateway","subType":"GATEWAY_OUT_SMTP_OUT"},
    		"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":"<4F474AA3.2070203@babelway.com>",
    		"gatewayOutMessageKey":null
    	},
    	{
    		"message":6481099,
    		"hub":26112,
    		"creationMoment":1330336124000,
    		"key":"4c196771-5a93-4d67-b7ac-6c45f9268886",
    		"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_SMTP_IN"},
    		"gatewayOut":{"id":64080,"name":"Email","type":"Gateway","subType":"GATEWAY_OUT_SMTP_OUT"},
    		"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":"<4F4B517A.6090307@babelway.com>",
    		"gatewayOutMessageKey":null
    	}
    ]			
    			
    	

7.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-42a2af8d487c

    <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>
    		<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</gatewayInMessageStatus>
    	<gatewayInMessageKey><4F474AA3.2070203@babelway.com></gatewayInMessageKey>
    	<gatewayOutMessageKey/>
    </messageRecord>
    			

7.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. Timestamp should be formatted as a UNIX Epoch time (number of seconds since the first of January 1970)

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...",
    		"gatewayIn":{"id":66292,"name":"EmailBertrand2","type":"Gateway","subType":"GATEWAY_IN_SMTP_IN"},
    		"gatewayOut":{"id":64080,"name":"Email","type":"Gateway","subType":"GATEWAY_OUT_SMTP_OUT"},
    		"messageDefinitionIn":{"id":66268,"name":"SimpleCsv","type":"MessageDefinition","subType":"CSV"},
    		"messageDefinitionOut":{"id":66270,"name":"SimpleCsv","type":"MessageDefinition","subType":"CSV"},
    		"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_SERVER_OUT"},
    		"messageDefinitionIn":{"id":66268,"name":"SimpleCsv","type":"MessageDefinition","subType":"CSV"},
    		"messageDefinitionOut":{"id":66270,"name":"SimpleCsv","type":"MessageDefinition","subType":"CSV"},
    		"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>
    			<type>Transformation</type>
    			<subType>VISUAL</subType>
    		</transformation>
    		<active>false</active>
    		<deployed>true</deployed>
    		<nextDeploymentAction>desactivate</nextDeploymentAction>
    	</channel>
    </collection>
    
    			

7.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>
    		<creationMoment>1308584779000</creationMoment>
    		<lastUpdateMoment>1342613179000</lastUpdateMoment>
    		<name>EmailBertrand2</name>
    		<description>Emails from bertrand2@babelway.net.</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 bertrand2@babelway.net.",
    		"hub":26112
    	}
    ]
    

7.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
  • 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
    	}
    ]

7.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>
    			<id>66270</id>
    			<name>SimpleCsv</name>
    			<type>MessageDefinition</type>
    			<subType>CSV</subType>
    		</messageDefinitionOut>
    		<creationMoment>1337756138000</creationMoment>
    		<lastUpdateMoment>1342613179000</lastUpdateMoment>
    		<hub>26112</hub>
    	</transformation>
    </collection>			
    		

7.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).  </description>
    		<hub>25037</hub>
    	</gateway>
    </collection>	
    

7.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.

Java

Download the last 25 messages in ERROR. It requires using Apache Commons httpclient, codec and logging 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 org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.GetMethod;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import 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 UsernamePasswordCredentials(user, pwd));
  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
   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 System;
using System.Text;
using System.Net;
using 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
   
 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>';
 ?>
 
 

7.5. BabelInvoice

7.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.

yellow-questionmark

Figure 7.1. yellow-questionmark


This is to request his 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.

green-v

Figure 7.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.

7.5.2. Install BabelInvoice for PDFCreator

To Install up your 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 welcome screen, click on "Next".

BabelInvoice Setup Wlcom Screen

Figure 7.3. BabelInvoice Setup Wlcom Screen


2-the setup will check the required software and inform you if any missing software , click on "OK" to download and install it or cancel the setup and install it from any other location.

BabelInvoice Missing Software Dialog

Figure 7.4. BabelInvoice Missing Software Dialog


If you chose to download the required software the download screen will appear and download will start immediately.

BabelInvoice Download Screen

Figure 7.5. BabelInvoice Download Screen


After finishing download you should install software with you requirement.

3- Select the destination folder you want to install application in it and click "Next".

BabelInvoice Select Install Location

Figure 7.6. BabelInvoice Select Install Location


4-setup will install the files to the selected destination.

BabelInvoice Installation Process

Figure 7.7. BabelInvoice Installation Process


5-Application needs to create new printer on PDFCreator printer, click "Next" to create it.

BabelInvoice Add Printer

Figure 7.8. BabelInvoice Add Printer


6-Click on Finish to complete the setup process

BabelInvoice Finish Setup

Figure 7.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)" assigned to the profile "BabelInvoice".

Assign the printer with the profile

Figure 7.10. Assign the printer with the profile


8-you can use the BabelInvoice for PDFCreator by printing the documents with the created printer.

BabelInvoice Printing Document

Figure 7.11. BabelInvoice Printing Document


After printing the document you will see the main screen of BabelInvoice application type the required parameter and send the document.

BabelInvoice Email Form

Figure 7.12. BabelInvoice Email Form


7.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

BabelInvoice for Standalone

Figure 7.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.

7.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 on http://www.babelway.net

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 Click 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.

BabelInvoice FTP In

Figure 7.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 channels" at the bottom of the list of channels.

BabelInvoice activate channel

Figure 7.15. BabelInvoice activate channel


BabelInvoice deploy channel

Figure 7.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.

BabelInvoice Settings

Figure 7.17. BabelInvoice Settings


7.6. Verify yourself the chain

To verify the message yourself, you will need a chunk of the chain, a PostgreSQL database. In that database, you will create the following table and function :

CREATE TABLE babelway_verify
(
  id bigserial NOT NULL,
  created_on timestamp without time zone NOT NULL,
  deleted boolean NOT NULL DEFAULT false,
  deleted_on timestamp without time zone,
  last_updated_on timestamp without time zone NOT NULL,
  version integer NOT NULL,
  chain_hash bytea,
  hub_id bigint NOT NULL,
  path character varying(512) NOT NULL,
  sign_date timestamp without time zone NOT NULL,
  sign_hash bytea NOT NULL,
  hash bytea,
  chain_id bigint DEFAULT 0,
  verify bytea,
  CONSTRAINT secure_chain_pkey PRIMARY KEY (id )
)
WITH (
  OIDS=FALSE
);
CREATE INDEX babelway_verify_chain_id_idx
  ON babelway_verify
  USING btree
  (chain_id );
CREATE INDEX babelway_verify_id_idx
  ON babelway_verify
  USING hash
  (id );
CREATE INDEX babelway_verify_hash_idx
  ON babelway_verify
  USING hash
  (hash );
  
  CREATE OR REPLACE FUNCTION verify_chain_links()
  RETURNS integer AS
$BODY$
  DECLARE

    row_data babelway_verify%ROWTYPE;
    previousLink babelway_verify%ROWTYPE;
	
  BEGIN
     SELECT * INTO previousLink FROM babelway_verify ORDER BY chain_id ASC LIMIT 1;
     -- Iterate through the results of a query.
    FOR row_data IN SELECT * FROM babelway_verify ORDER BY chain_id ASC
	LOOP
      IF previousLink.chain_id != row_data.chain_id THEN 
	  row_data.verify = digest(convert_to(replace(cast (row_data.id as text) || ';' || cast (extract(epoch from row_data.created_on)*1000 as text) || 
	  ';' || cast (extract(epoch from row_data.sign_date)*1000 as text) || ';' || cast (row_data.hub_id as text) || ';' || row_data.path || 
	  ';' || cast(convert_to(encode(row_data.sign_hash , 'base64') , 'UTF8') as text) || 
	  ';' || cast(convert_to(encode(previousLink.verify , 'base64') , 'UTF8') as text), E'\\012',''),'UTF8'),'SHA512') ;

	  row_data.chain_id = previousLink.chain_id + 1;
	  UPDATE babelway_verify SET verify = row_data.verify WHERE id = row_data.id;
	  previousLink = row_data ;
	  ELSEIF previousLink.chain_id = row_data.chain_id THEN
	  previousLink.verify = previousLink.chain_hash;
	  END IF;
    END LOOP;
      
      -- Return 1.
    RETURN 1;
  END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
	

Donwload the shrunk of the chain from the page linked to your message. Extract the files and insert the SecureChain_ChainId_XXXX_to_XXXXX.csv as follow :

COPY babelway_verify FROM '/path/to/your/file/SecureChain_ChainId_XXXXX_to_XXXXXX.csv' DELIMITER '\t';
	

Now, you need to run the function to process the rows starting from the first timestamped to the second.

SELECT verify_chain_links();
	

Once it is done, you could verify the chain_hash with the results you get.

SELECT verify=chain_hash FROM babelway_verify WHERE hash = 'hash_of_the_message_you_want_to_verify';
SELECT verify=chain_hash FROM babelway_verify WHERE path LIKE('uuid_of_the_message_you_want_to_verify');
SELECT count(*),verify=chain_hash FROM babelway_verify GROUP BY verify=chain_hash;