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:
On-line html help, the most complete up-to-date version, with navigation tabs and search function.
Single html page help, same as the previous one but available as a single html page if you prefer to use your own search engine for example.
Pdf file, same as the previous ones but in format adapted to quick and easy printing of the whole documentation or a selected part of it. Once saved it is also available off-line. Note: if you are using such an off-line pdf file, it may not be the most up-to-date version.
In addition to this documentation, you may find additional information in the following places:
The Babelway tutorial is the best place to learn the basics of the Babelway interface. It is available inside the web application.
Technical support: send your question by mail to Babelway technical support.
Babel Academy: hands-on training provided by expert users of Babelway.
The White Paper (available from the web site) quickly presents Babelway, its products and services.
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.
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.
To access the application, just go the the url https://www.babelway.net/.
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.
All the pages of the application have the following elements (see figure) :
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.
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 introduction. In the begin of every page, a short text gives you contextual help about the page.
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.
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.
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.
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.
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 :
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.
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.
...
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.
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.
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.
The following informations can be available on a message:
Date and time of element creation. | |
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. | |
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. | |
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. | |
When the message couldn't be processed, a text that describes the error's reason. | |
Message type, can be either Test or Regular. | |
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. | |
The date and time when the incoming file was received by Babelway system from external source system. | |
The date and time when the outgoing file was sent by Babelway system to external target system. | |
The channel that processed the message. | |
Incoming gateway used to receive the input file. | |
Outgoing gateway used to process the input file. | |
A uuid that uniquely identifies a Message. | |
Message reference or file name. | |
Message that tells that the target external system has correctly received the output file. | |
Date and time of the acknowledgment. | |
Specific communication-level identifier from the gateway in | |
Specific communication-level informations from the gateway in, like related id's or addressing information of partner systems | |
Specific communication-level identifier from the gateway out | |
Specific communication-level informations from the gateway out, like related id's or addressing information of partner systems | |
Incoming message size (in bytes). | |
Outgoing message size (in bytes). | |
Incoming message after xml conversion and before processing. | |
Outgoing message in xml format after conversion and before conversion to output format. | |
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.
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.
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
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.
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.
The function works the same way as the resubmit message function. The difference is that you process here many messages.
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.
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.
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).
If a message has been processed twice, it will be shown 2 entries in the 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).
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.
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.
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.
The alert details displays all the information about an alert, and allows to take the necessary actions to solve the problem.
The seriousness of the issue, it can be High, Medium, Low or Info. | |
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. | |
The type of alert, see Possible Alerts for a complete list and further information. | |
The alert generation date and time. | |
A short description of the issue. | |
An additional description of the issue. | |
An uuid that uniquely identifies the alert within the Babelway platform. | |
Enable you to add comments about the issue. It may be useful to keep track of actions already taken to solvge the problem. | |
When applicable, gives you a direct link to the message(s) that caused the problem. | |
When applicable, gives you a direct link to the channel(s) related to the problem. | |
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.
This page describes all possible alert types. The types should also be grouped from a logocal way.
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... |
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.
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.
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.
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.
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 :
This graphic shows you the graphic shape over one days, or over one week.
The Type of graphic option allows you to choose between :
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.
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.
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.
.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.
The list can contain the following columns:
A name that identifies the channel. | |
A free description for the channel. | |
The date and time when the channel was created. | |
The date and time of the last modification that affected the channel. | |
Tells if the channel is now running in the production system (value top bar ), or not (value Off ). See deployment for more details. | |
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. | |
Tells if the channel is Enabled ) or Disabled. See deployment for more details. | |
The name of the gateway in used in this channel, or blank if it is not yet defined. | |
The name of the message in used in this channel, or blank if it is not yet defined. | |
The name of the transformation used in this channel, or blank if it is not yet defined. | |
The name of the message out used in this channel, or blank if it is not yet defined. | |
The name of the gateway out used in this channel, or blank if it is not yet defined. | |
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.
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.
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.
This tab displays the following information. You can change it by just editing the fields and click on Save.
The name of the channel. | |
The description of the channel. | |
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. | |
How long the message processed by this channel will be kept. This value can also be set at environment level. | |
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. | |
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.
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.
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.
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.
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.
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.
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.
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.
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.
That tab gives you quick links to many other elements of the application that are related to this channel :
Channel used as base for this channel. | |
Channels based on this channel | |
Display the channels using the current channel's gateway In | |
Display the channels using the current channel's message In | |
Display the channels using the current channel's message Out | |
Display the channels using the current channel's gateway Out | |
Channel from which the current channel receive messages. | |
Channels following the current channel to execute advance functions. | |
Redirect you to the messages list containing only the messages of this channel. |
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:
The status tells if a channel is currently deployed in production ( On ) or not ( Off ). | |
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. | |
The next deployment field shows what will happen with the channel during next deployment. The possible values are:
|
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:
On this screen, the following two advanced functions are also available:
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. | |
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. |
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.
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.
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.
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 :
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.
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
The list can contain the following columns:
A name that identifies the channel. | |
A free description for the channel. | |
IN for gateways in, or OUT for gateways out. | |
The type of the gateway. See gateway types for all possible values. | |
The date and time when the channel was created. | |
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.
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.
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.
The general tab contains the signaletic information of the gateway, and offers actions that act on the whole gateway.
Field used to indicate if the message is coming in the system or leaving it. | |
Type of the gateway. See gateway types for more details. | |
A name that you can set and/or modify to easily retrieve and manage your element. | |
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. | |
A unique identifier automatically set by Babelway platform. | |
Date and time of element creation. | |
Date and time of last element configuration update. |
This tab contains the configuration of the gateway.
The parameters depend on the type of the gateway.
This tab contains quick links to many other elements related to this gateway.
All the channels that use this element. | |
The parent is the element from which the element has been copied. | |
The children is the element which is a copy of the current element. | |
List of gateways to which this gateway sends messages. | |
List of gateways from which this gateway receives messages. | |
A link that shows you the message list filtered to show messages processed by this gateway. |
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.
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.
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 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 :
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. |
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 :
External ftp server address where Babelway platform should fetch messages. | |
Login or username to access files on this external ftp server. | |
Password associated to previous username to access account. | |
Directory where files are to be fetched on the server. | |
Indicates that the ftp connection is in passive. Setting this to true means the ftp client will establish two connection to the ftpserver client. | |
Interval of times in seconds between checking for message arrival. | |
Delete file once it has been retrieved and processed. | |
The file suffix which will be added to the file name after it is processed. | |
The ftp directory to which the file will be moved after it is processed | |
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. | |
The file suffix which will be added to the file name after an error occurs during processing. | |
The ftp directory to which the file will be moved after when an error occurs during processing. | |
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.
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 :
Babelway ftp server set as "ftp.babelway.net" | |
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 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.
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:
Use sftp protocol for incoming messages that transfered to SFTP server. | |
Sftp server host name | |
Login or username to access files on this external sftp server. | |
Password associated to previous username to access account. | |
Private key associated to previous username to access account. | |
Directory where files are to be fetched on the server. | |
Interval of times in seconds between checking for message arrival. | |
Delete file once it has been retrieved and processed. | |
The file suffix which will be added to the file name after it is processed. | |
The sftp directory to which the file will be moved after it is processed | |
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. | |
The file suffix which will be added to the file name after an error occurs during processing. | |
The sftp directory to which the file will be moved after when an error occurs during processing. | |
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.
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:
Babelway SFTP server default value is « sftp.babelway.net » | |
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. | |
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. | |
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
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:
Server address that sends incoming messages. | |
Babelway destination server. | |
AS2 message subject | |
The endpoint URL of the receiving message gateway ,requires protocol prefix in URL (http:// or https://). | |
Should a receipt be sent when a request is received or not. | |
URL address where to send receipt. | |
Should receipt be signed or not. | |
Select algorithm used for signing receipt, if any. | |
Should receipt be sent asynchronously or not. | |
Should send message be compressed or not? | |
Should send message be signed or not? | |
Should send message be encrypted or not? | |
Select algorithm used for encrypting message, if any. | |
Should message signature be enforced or not? | |
Select MIC algorithm, if any. | |
Should message encryption be enforced or not? | |
Maximum number of retries if message sending failed? | |
Interval of time before trying to send message again (in seconds)? | |
Certificate used for message encryption? | |
Certificate used for message verification? | |
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.
À 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 ?
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:
The URL of the server of your partner. It is provided by your partner. | |
The port to connect onto. It is provided by your partner. | |
The interval in seconds between each polling,default is 90s. | |
Use TLS (SSL) for communication | |
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 | |
The OFTP ID provided by your partner. | |
The SFID provided by your partner. If none has been provide, this is probably the same as his SSID. | |
The password of your partner. Provided by your partner. | |
Babelway is providing an official Odette SSID : O01770000000000X0B5SHARED. Please call support if you want to use a different one. | |
An SFID is automatically assigned to your Environment : O01770000000000X0B5xxxxxx. Please call support if you want to use a different one. | |
The value of the password is 'BABELWAY'. | |
Compresses the 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 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. | |
This allows you to verify that your partner are the one sending the message. | |
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. | |
Select Signature key or go to Keystore edit. | |
Select Encryption certificate or go to Keystore edit. | |
Select Encryption algorithm or go to Keystore edit. | |
Select Certificate for data or go to Keystore edit. | |
Select Certificate for EERP or go to Keystore edit. | |
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 | |
Advanced. Babelway is supporting all types of records. Valid values are : FIXED / TEXTFILE / UNSTRUCTURED / VARIABLE. Default is UNSTRUCTURED | |
Advanced. You can specify the record size (only used for FIXED and VARIABLE) | |
Advanced. You can specify the restart position. | |
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 | |
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 | |
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 | |
Advanced. Control the OFTP "maxBDataLen" parameter (ISDN only). Default is 2048 | |
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.
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:
The URL of the server of your partner. It is provided by your partner. | |
The port to connect onto. It is provided by your partner. | |
The interval in seconds between each polling,default is 90s. | |
Use TLS (SSL) for communication | |
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 | |
The OFTP ID provided by your partner. | |
The SFID provided by your partner. If none has been provide, this is probably the same as his SSID. | |
The password of your partner. Provided by your partner. | |
Babelway is providing an official Odette SSID : O01770000000000X0B5SHARED. Please call support if you want to use a different one. | |
An SFID is automatically assigned to your Environment : O01770000000000X0B5xxxxxx. Please call support if you want to use a different one. | |
The value of the password is 'BABELWAY'. | |
Compresses the 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 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. | |
This allows you to verify that your partner are the one sending the message. | |
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. | |
Select Signature key or go to Keystore edit. | |
Select Encryption certificate or go to Keystore edit. | |
Select Encryption algorithm or go to Keystore edit. | |
Select Certificate for data or go to Keystore edit. | |
Select Certificate for EERP or go to Keystore edit. | |
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 | |
Advanced. Babelway is supporting all types of records. Valid values are : FIXED / TEXTFILE / UNSTRUCTURED / VARIABLE. Default is UNSTRUCTURED | |
Advanced. You can specify the record size (only used for FIXED and VARIABLE) | |
Advanced. You can specify the restart position. | |
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 | |
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 | |
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 | |
Advanced. Control the OFTP "maxBDataLen" parameter (ISDN only). Default is 2048 | |
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.
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:
Login or username to access the service . | |
Password associated to previous username. | |
using the HTTP Post protocols. | |
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".
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:
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.
The Scheduler in Gateway allows to create a message based on a time trigger.
The specific parameters are:
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 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. 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 | |
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.
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.
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 :
Type of the store to fetch: S3, NFS, FTP, FTPS, SFTP | |
External store server address where Babelway platform should fetch messages. | |
Login or username to access files on this external store server. | |
Password associated to previous username to access account. | |
Flag to specify if the store should use temporary name when writting or reading to avoid collision. | |
Interval of times in seconds between checking for message arrival. | |
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 | |
Delete file once it has been retrieved and processed. | |
The file suffix which will be added to the file name after it is processed. | |
The store directory to which the file will be moved after it is processed | |
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. | |
The file suffix which will be added to the file name after an error occurs during processing. | |
The store directory to which the file will be moved after when an error occurs during processing. | |
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 where files are to be fetched on the server. | |
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.
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).
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.
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:
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.
Here is the list of the SAP specific setup to perform in order to make the connector working. This is guide lines
Simply create a channel with the SAP gateway and XML IDoc message definition.
The specific parameters are :
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 ... | |
The Valid SAP user ID you want to use. Ideally this should be a user specially created for this purpose. For instance: user | |
Password associated with the user ID. For instance: password | |
IP or DNS name for SAP application server. For instance: sap.yourcompany.com | |
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 is the last 2 digits of the SAP client. For instance: 01, 10, 00. Default is the last 2 digits of SAP client parameter | |
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. | |
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. | |
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. | |
The name of the RFC updating the status. For instance: ZZBABELWAY_IDOC_STATUS_UPD | |
Specify if unicode should be used. Use 0 for false and 1 for true. For instance: 0 |
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:
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. | |
The generated Token Id by e-conomic that grants Babelway access to your e-conomic account. It can be generated via this link. | |
Reference to Central Business Register (CVR). Only invoice documents with this reference will be retrieved and processed by Babelway. | |
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 |
With an Email Gateway Out, Processed messages are attached to email messages and sent to a specific email address.
The specific parameters are:
Email address from which messages will be sent. | |
Email address to which messages will be sent (destination). You can add a comma separated list of recipients. | |
Email destination CC address.You can add a comma separated list of recipients. | |
Email destination Bcc address.You can add a comma separated list of recipients. | |
Email message subject. | |
Should message send as attachment or not. | |
Attachment file name. | |
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 in the message Body or not. When the link is first activated, it will "acknowledge" the message. | |
Email message Body. HTML codes < and > must be escaped see http://www.htmlescape.net/htmlescape_tool.html for an online tool | |
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. | |
[text/plain , text/html] default is text/plain | |
default: "download message". | |
default: "load this image to notify the reception of the message". | |
default: "Download this image to notify the reception of the message". |
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:
External ftp server address where Babelway platform should send messages. | |
Login or username to access files on this external ftp server. | |
Password associated to previous username to access account. | |
Directory where outgoing files are to be stored on the server. | |
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 of the outgoing message. | |
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. |
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:
Babelway ftp server set as "ftp.babelway.net" | |
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 associated to previous username to access your account. | |
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.
With a SFTP Client Output Gateway, outgoing messages are transfered to an external SFTP server.
The specific parameters are:
External sftp server address where Babelway platform should send messages. | |
Login or username to access files on this external sftp server. | |
Password associated to previous username to access account. | |
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). | |
The passphrase associated to the key | |
Filename of the outgoing message. | |
Directory where outgoing files are to be stored on the server. |
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:
The URL of the server of your partner. It is provided by your partner. | |
The port to connect onto. It is provided by your partner. | |
The interval in seconds between each polling,default is 90s. | |
Use TLS (SSL) for communication | |
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 | |
The OFTP ID provided by your partner. | |
The SFID provided by your partner. If none has been provide, this is probably the same as his SSID. | |
The password of your partner. Provided by your partner. | |
Babelway is providing an official Odette SSID : O01770000000000X0B5SHARED. Please call support if you want to use a different one. | |
An SFID is automatically assigned to your Environment : O01770000000000X0B5xxxxxx. Please call support if you want to use a different one. | |
The value of the password is 'BABELWAY'. | |
Compresses the 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 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. | |
This allows you to verify that your partner are the one sending the message. | |
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. | |
Select Signature key or go to Keystore edit. | |
Select Encryption certificate or go to Keystore edit. | |
Select Encryption algorithm or go to Keystore edit. | |
Select Certificate for data or go to Keystore edit. | |
Select Certificate for EERP or go to Keystore edit. | |
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 | |
Advanced. Babelway is supporting all types of records. Valid values are : FIXED / TEXTFILE / UNSTRUCTURED / VARIABLE. Default is UNSTRUCTURED | |
Advanced. You can specify the record size (only used for FIXED and VARIABLE) | |
Advanced. You can specify the restart position. | |
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 | |
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 | |
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 | |
Advanced. Control the OFTP "maxBDataLen" parameter (ISDN only). Default is 2048 | |
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.
With an OFtp server Gateway out, Outgoing messages are transferred to an Babelway OFTP server.
The specific parameters are:
The URL of the server of your partner. It is provided by your partner. | |
The port to connect onto. It is provided by your partner. | |
The interval in seconds between each polling,default is 90s. | |
Use TLS (SSL) for communication | |
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 | |
The OFTP ID provided by your partner. | |
The SFID provided by your partner. If none has been provide, this is probably the same as his SSID. | |
The password of your partner. Provided by your partner. | |
Babelway is providing an official Odette SSID : O01770000000000X0B5SHARED. Please call support if you want to use a different one. | |
An SFID is automatically assigned to your Environment : O01770000000000X0B5xxxxxx. Please call support if you want to use a different one. | |
The value of the password is 'BABELWAY'. | |
Compresses the 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 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. | |
This allows you to verify that your partner are the one sending the message. | |
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. | |
Select Signature key or go to Keystore edit. | |
Select Encryption certificate or go to Keystore edit. | |
Select Encryption algorithm or go to Keystore edit. | |
Select Certificate for data or go to Keystore edit. | |
Select Certificate for EERP or go to Keystore edit. | |
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 | |
Advanced. Babelway is supporting all types of records. Valid values are : FIXED / TEXTFILE / UNSTRUCTURED / VARIABLE. Default is UNSTRUCTURED | |
Advanced. You can specify the record size (only used for FIXED and VARIABLE) | |
Advanced. You can specify the restart position. | |
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 | |
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 | |
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 | |
Advanced. Control the OFTP "maxBDataLen" parameter (ISDN only). Default is 2048 | |
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.
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:
Babelway source server. | |
Server address that receives outgoing messages. | |
AS2 message subject | |
The endpoint URL of the receiving message gateway ,requires protocol prefix in URL (http:// or https://). | |
Should a receipt be sent when a request is received or not. | |
URL address where to send receipt. | |
Should receipt be signed or not. | |
Select algorithm used for signing receipt, if any. | |
Should receipt be sent asynchronously or not. | |
Should send message be compressed or not? | |
Should send message be signed or not? | |
Should send message be encrypted or not? | |
Select algorithm used for encrypting message, if any. | |
Should message signature be enforced or not? | |
Select MIC algorithm, if any. | |
Should message encryption be enforced or not? | |
Maximum number of retries if message sending failed? | |
Interval of time before trying to send message again (in seconds)? | |
Certificate used for message encryption? | |
Certificate used for message verification? | |
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. | |
"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.
With an HttpClientOut Gateway, outgoing messages are send using a Http connection.
you can select several http internal in
The specific parameters are:
External service address. | |
Login or username to access the service . | |
Password associated to previous username. | |
Select SSL algorithm,if any. | |
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 of the outgoing message. | |
Filename of the Response message. | |
expression is a regex. If response doesn't match the message is flag in error. | |
a flag for preemptive authentication. | |
httpCient in is not mandatory any more. | |
it supports form authentication now.you can select from "FORM,BASIC,ANY,DIGEST,CERT" | |
number of retry (default = 1) | |
(default = "babelway-HttpClientOutGateway") | |
(default = 90s) | |
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. | |
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. | |
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.
With a HTTP out Output Gateway, outgoing messages are transferred to a Babelway HTTP server.
The specific parameters are:
Login or username to access the service . | |
Password associated to previous username. | |
using the SOAP Post protocols. |
After channel deployment, your connection will be available to send messages.
With a X.400 out Gateway, allows to sends the message on the X.400 network. To specify the address from your trading partner.
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. | |
You can choose to enter the the full address in the "manual address field" or each address component in the corresponding field. |
The internal gateway in / out are used for internal transfer of messages between channels inside the same account environment.
The specific parameters are:
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 of the outgoing message. | |
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.
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.
Create a splitter channel
Th specific parameters are:
com.babelway.messaging.orchestration.SplitterGatewayOut | |
regex | |
[\n](?=EE) which means split when seeing line return and then EE | |
account-%AccountID%.hub-%HubID% | |
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%)
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:
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. | |
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. | |
Use a metadata to spread the file in smaller group. One message fill be created for each group containing messages. | |
Filename, Default is the same as the message in. | |
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 | |
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' | |
For 'append' type: message separator. For 'xslt' type: name for the element surrounding each message. Default='message' | |
Suffix to add at the begining of the file. | |
Charset to use to decode file waiting to be aggragated. | |
Charset to use to encode the file resulting of the aggragation. | |
Xslt to perform on the resulting Xml. Default='Identity' | |
Frequency | |
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 | |
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.
With a Store Client Output Gateway, outgoing messages are transfered to an external Store server, like FTP, S3, NFS...
The specific parameters are :
Type of the store to fetch: S3, NFS, FTP, FTPS, SFTP | |
External store server address where Babelway platform should fetch messages. | |
Login or username to access files on this external store server. | |
Password associated to previous username to access account. | |
Flag to specify if the store should use temporary name when writting or reading to avoid collision. This iproperty is also known as postRename | |
Delete file once it has been retrieved and processed. | |
Directory where files are to be fetched on the server. | |
Indicates that the store connection is in passive. Setting this to true means the store client will establish two connection to the ftpserver client. |
With a SAP Output Gateway, outgoing messages are pushed from Babelway to a SAP server.
The specific parameters are :
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 ... | |
The Valid SAP user ID you want to use. Ideally this should be a user specially created for this purpose. For instance: user | |
Password associated with the user ID. For instance: password | |
IP or DNS name for SAP application server. For instance: sap.yourcompany.com | |
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 |
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.
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 :
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:
A name that identifies the channel. | |
A free description for the channel. | |
IN for message definitions in, or OUT for message definitions out. | |
The type of the message definition. See message definitions types for all possible values. | |
The date and time when the message definition was created. | |
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.
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.
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.
The general tab contains the signaletic information of the gateway, and offers actions that act on the whole message definition.
Field used to indicate if the message is coming in the system or leaving it. | |
Type of the message definition (CSV, XML, EDIFACT, ...) | |
A name that you can set and/or modify to easily retrieve and manage your element. | |
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. | |
A unique identifier automatically set by Babelway platform. | |
Date and time of element creation. | |
Date and time of last element configuration update. |
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.
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.
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.
This tab contains quick links to many other elements related to this message definition.
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.
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.
The message tree representing a hierarchical view of the message is based on three node types:
(1) A value node is the representation of a business value in the message.
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.
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.
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 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.
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
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.
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:
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).
Create loops to manage repetitive parts of your message definition.
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:
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.
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.
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 ).
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
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).
We now have a loop on all trucks and a sub loop on all item in a truck.
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.
This list shows main message formats supported by the application.
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.
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 :
The character that is used to separate the fields in the csv. It can be a comma, colon, semicolon, tab. | |
The character that is used to quote the specials characters in the csv. It can be a single quote (') or a double quote ("). | |
Tells if the csv file begins with a line that contains headers of the columns, or directly begins with the lines of data. | |
The encoding of the csv file. | |
An example csv file. | |
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. |
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.
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
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'
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
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.
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)
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 stands for eXtensible Markup Language and is a very common type of files.
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>
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.
When you create a new message format, you must first configure it using the following wizard.
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.
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>
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".
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.
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. | |
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 Wizard screen allows you to define your Multirecord message format (delimited or a fixed-length) according to your own file format.
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.
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=""" quoteSymbol-escapeSequence="\"" 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=""" quoteSymbol-escapeSequence="\"" 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 ")
* quoteSymbol-escapeSequence is the sequence that will display the quote symbol character in a quoted field (often \")
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.
HH00123 AB HH00045 CDE R1one 100 R1two 101 R1four 103 FF3
<?xml version="1.0" encoding="UTF-8"?>
<multirecord name="mymultirecord" type="fixed-length" recordDelimiter="\r\n" quoteSymbol-character=""" quoteSymbol-escapeSequence="\"" 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>Following is a sample Flat file.
EE54001340000093012918100700000000000147521 DD0000018713906060109 6011 3005330101 DD0000028713906061106 6111 3005250201
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.
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
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 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.
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 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.
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 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.
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).
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.
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.
Allows to save your input file as a metadata, for future use in the next steps.
The parameters are :
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 :
Pattern (regular expression) for the file name in the zip of the file that will become your input message. First match is used. | |
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. |
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 :
Pattern (regular expression) for the file name in the pdf of the file that will become your input message. First match is used. | |
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. |
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 :
Pattern (regular expression) for the file name in the S/MIME of the file that will become your input message. First match is used. | |
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. | |
The alias of the key (in the keystore of your environment) that will be used to check the signature. | |
Enables or disables the check of the siagnture. |
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 :
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 :
Allows to create a pdf that will contain your output file in attachment.
The parameters are :
The template that will be used to create the container pdf. You have here 3 possibilities :
| |
The name that your output file will have in the pdf. | |
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. |
Allows to resize an output pdf.
The parameters are :
The page size requested for the new pdf (A4, A5, LETTER, ...). The default is A4. | |
Specifies the zone in the input pdf that will be copied to the output pdf. The default is 0. | |
Specifies the zone in the input pdf that will be copied to the output pdf. The default is 0. | |
Specifies where to zone copied from the input pdf will be placed on the page in the output pdf. | |
Specifies where to zone copied from the input pdf will be placed on the page in the output pdf. | |
Specifies the zoom ration that must be applied when copying asked zones from the input to the output pdf. The default is 1. | |
Specifies the zoom ration that must be applied when copying asked zones from the input to the output pdf. The default is 1. |
Allows to set letterhead on your output pdf file.
The parameters are :
The pdf file that contains the letterhead. | |
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).
|
Allows to add extra pages to your output pdf file.
The parameters are :
Allows to add attachments to your output pdf file.
The parameters are :
Allows to wrap your output file from a zip. It also allows to add other files in the zip.
The parameters are :
Allows to wrap your output message in a S/MIME envelop.
The parameters are :
The name that your output file will have in the S/MIME envelop. | |
The content type that will be associated to your output file in the S/MIME envelop. | |
The alias of the key (in the keystore of your environment) that will be used to generate the signature. | |
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. |
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.
Most of transformations can be defined using Drag and Drop Transformation editor.
Alternatively, you can write your transformation directly in standard Xslt format using Xslt Transformation editor.
Additionally, in some specific case when no transformation is required, you can select a No Transformation template.
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:
A name that identifies the channel. | |
A free description for the channel. | |
The message in used as input of the transformation. | |
The message in produced as output of the transformation. | |
The date and time when the channel was created. | |
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.
The general tab contains the signaletic information of the gateway, and offers actions that act on the whole transformation.
The message definition of the input message related to this transformation. | |
The message definition of the output message related to this transformation. | |
A name that you can set and/or modify to easily retrieve and manage your element. | |
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. | |
A unique identifier automatically set by Babelway platform. | |
Date and time of element creation. | |
Date and time of last element configuration update. |
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.
This tab contains quick links to many other elements related to this gateway.
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.
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.
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.
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.
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.
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..
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 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.
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.
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.
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...
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...
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.
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.
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.
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.
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.
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.
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.
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.
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)
This function requires a Name, an optional Description and the Xpath expression including one or more arguments if required.
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 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:
same as Current Date function | |
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. |
return the MD5 hash for the string argument. | |
return the SHA1 hash for the string argument. | |
return the SHA256 hash for the string argument. | |
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 |
return a auto incrementing number | |
return the metadata with this name | |
add a metadata with the given name and value | |
return the metadatavalue encoded as Base64 | |
return an object encoded as Base64 | |
return an object decoded as Base64 | |
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 |
return this string unescaped from the xml encoding | |
return this string unescaped from the html encoding | |
return this string unescaped from the filename encoding | |
return this string escaped with the xml encoding | |
return this string escaped with the html encoding | |
return this string escaped with the filename encoding | |
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 |
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 |
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 |
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 |
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 |
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 |
return substring | |
String bfn:replace(String str , String searchStr, String replaceStr, String ignoreCase) | return replace |
return the same loop of elements but sorted using the sort-key | |
return the same loop of elements but sorted using the sort-key case insensitive | |
return the same loop of elements but sorted using the sort-key numeric | |
return a new line | |
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>
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).
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.
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).
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.
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.
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.
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.
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.
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.
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.
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
A compléter
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
A compléter
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.
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.
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
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
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 ').
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
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.
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.
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
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
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.
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
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.
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.
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
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
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' ').
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
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.
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.
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.
Do not forget to link the relevant loop to your custom rules in order to access proper relevant data.
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
Optionally you can set some advanced properties like
= 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 | |
= 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 |
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.
Once all your mapping and transformations are ready and additional filter, if and/or format entered, do not forget to save this transformation with Save button.
The 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.
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.
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.
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
The list can contain the following columns:
A name that identifies the notification. | |
A free description for the notification. | |
A comma-separated list of emails to which a notification will be sent every time a message is successfully processed. | |
A comma-separated list of emails to which a notification will be sent every time the processing of a message fails. | |
A technical identifier for the notification. | |
The date and time when the channel was created. | |
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.
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.
The general tab contains the signaletic information of the notification, and offers actions that act on the whole notification.
A name that you can set and/or modify to easily retrieve and manage your element. | |
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. | |
A unique identifier automatically set by Babelway platform. | |
Date and time of element creation. | |
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.
This tab allows you to configure to who the notifications emails will be sent.
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. | |
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. |
This tab allows you to configure the notification emails.
The email address 'from' of all the notifications emails. | |
The subject of notifications emails, when a message is successfully processed. | |
The body of notifications emails, when a message is successfully processed. | |
The subject of notifications emails, when the processing of a message fails. | |
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...
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.
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
The list can contain the following columns:
A name that identifies the lookup table. | |
The names of the columns of the lookup table (separated by commas). | |
When the lookup table is shared, its sharing access key. See lookup table details for more information. | |
A technical identifier of the lookup table, automatically set by Babelway platform. | |
The date and time when the lookup table was created. | |
The date and time of the last modification of the structure of the lookup table. | |
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.
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.
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.
This screen allows you to edit the structure parameters of the table, and its content.
The following fields are displayed, about the structure of the table.
A unique identifier automatically set by Babelway platform. | |
Date and time of element creation. | |
Date and time of last element configuration update. | |
A name that you can set and/or modify to easily retrieve and manage your element. | |
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. | |
The key used by Babelway' system to identify the lookup table. |
The content of the table can also be edited directly in the table.
Don't forget to save after your changes.
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.
To learn how to use lookup table in drag and drop transformation see Using lookup tables.
To learn how to use shared lookup table in drag and drop transformation see Using shared 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:
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.
In this example we have two fields (counterName and value)
And this the uploaded CSV file
1,1001 2,1002 3,1003 4,1004
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:
This example will be used for all screenshots of this chapter.
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
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 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.
The detail of the routing allows you to edit all the rules to choose the next element to process.
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:
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. | |
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. | |
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. | |
The element that will be chosen as next element for the processing if the rule matches. | |
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 :
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.
The main difference is that this screen is channel-centric, while the routing detail screen is routing-centric.
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.
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.
When you create a new test case or edit an existing one, following screen will be displayed:
Following parameters can be set according to your setup:
Ajouter la description des properties ???
As a result of running a test, following message record screen is displayed. Click on More details command to see all information.
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.
All existing tests will be run at channel deployment time. If all of them are not successful, deployment will be aborted.
The channel used by this test case, acccess it following the link. | |
A name that you can set and/or modify to easily retrieve and manage your element. | |
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. |
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
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.
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
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
This page shows you some examples of locations in the application where metadata can be used.
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.
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.
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
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
| Code | Name | Description | Example |
|---|---|---|---|
| {com_babelway_ messaging_context _message} | Message context | ||
| {com_babelway_ messaging_context _accountId} | Account ID | The ID of the account which has the processing Hub. | 25010 |
| {com_babelway_ messaging_context _hubId} | Hub ID | The ID of the account environment which processed the message | 25030 |
| {com_babelway_ messaging_context _channelId} | Channel ID | The ID of the channel which is used in processing the message. | 26885 |
| {com_babelway_ messaging_context _receiveDay} | Receive Day | The day in which the message was delivered by the system. | 20090503 |
| {com_babelway_ messaging_context _receiveTime} | Receive Time | The time in which the message was delivered by the system. | 20090503-163446 |
| {com_babelway_ messaging_context _receiveTime_extended} | Receive Time extended | The extended receive time. | 20090503-163446-968 |
| {com_babelway_ messaging_context _message_reference} | Message reference | A reference for the message | ABNAmroFunds_AAA.xls |
| {com_babelway_ messaging_context _client_reference} | Client reference | A reference for the client | |
| {com_babelway_ messaging_context _in_filename} | Input file name | The name of the input file | ABNAmroFunds_AAA.xls |
| {com_babelway_ messaging_context _in_filename _no_extension} | Input file name | The name of the input file with no extension. | ABNAmroFunds_AAA |
| {com_babelway_ messaging_context _out_filename} | Output file name | The name of the output file | 20090430_ABNAMROLUX _MMF.xls |
| {com_babelway_ messaging_context _out_fileContent} | Output file content | ||
| {com_babelway_ messaging_context _mail_from} | The sender email address | The email address from which the message was sent. | no-reply@babelway.net |
| {com_babelway_ messaging_context _mail_to} | The receiver email address | The email address to which the message was sent. | fund-x@babelway.net |
| {com_babelway_ messaging_context _mail_subject} | Email message subject | The 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 date | The sending date of the email message. | 1241422103000 |
| {com_babelway_ messaging_context _as2_receive_date} | AS2 message receive date | The receive date of the AS2 message. | 1241504709696 |
| {com_babelway_ messaging_context _as2_send_date} | AS2 send date | The sending date of the AS2 message. | |
| {com_babelway_ messaging_context _as2_from} | AS2 from address | The AS2 sender address. | C4NETBE |
| {com_babelway_ messaging_context _as2_to} | AS2 to address | The AS2 receiver address. | BABELWAY_AS2_25010 |
| {com_babelway_ messaging_context _as2_message_id} | AS2 message ID | The ID of the AS2 message. | d19bc8_1210d8ea134_-45ec @C4NETBE_host |
| {com_babelway_ messaging_context _in_user} | Input user | The username from which the message was sent (such as the ftp login name or sender email address) | -ftp login: 'fc-invoice' |
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.
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.
To view the list of revisions click on Change Log in the menu below Channels
The list of revisions is displayed as illustrated below:
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.
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:
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.
Revert function is an advanced function, use it with care.
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.
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).
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.
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.
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.
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.
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).
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.
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.
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.
In this chapter, we must explain that can be found under the admin section menu.
Manage and edit your personal information such as username, name, email address, password...
The following information is displayed:
The username you entered at registration time (cannot be modified). | |
The email address you entered at registration time (cannot be modified). | |
Your first name (optional, can be modified). | |
Your last name (optional, can be modified). | |
Your telephone number (optional, can be modified). |
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.
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:
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. | |
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) |
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.
There are different operations that can be done on an environment hub:
By default, this name includes your login name but you can edit and change it. | |
By default, this name is "Environment X" (X is the count of environments in your account) but you can edit and change it |
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.
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.
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.
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.
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.
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. | |
This environment price plan for Babelway services and message processing. |
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.
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.
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.
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:
Has full rights over the account (yourself by default). | |
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. | |
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. | |
Has no access to your environment, but you can switch to another role without sending an invitation. |
Click on Add a User to add a new user in any role for your account as described in the Add a User chapter.
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.
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.
The email address to send the invitation. | |
The rights given to the new user. | |
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.
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.
This chapter contains some more stuff, not closely related to the web interface.
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:
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.
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...)
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.
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.
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.
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.
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 (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
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, 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
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
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
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
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
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
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
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.
All the requests to access the REST api have the form https://www.babelway.net/SelfService3/rest/v2/hub-{hubId}/{action}.{format}?{parameters}, where
The id of your environment. It can be found in the Environment settings section, under the Admin menu. | |
The format in which you want to receive the answer. It must be 'json' or 'xml'. All actions support the 2 formats. | |
The name and parameters of the action you want to call. See below for all available actions and parameters. |
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.
The following methods are available in the api:
List and search tickets | |
Get all the informations about a ticket | |
Delete a ticket | |
List and search messages | |
Get all the informations about a message | |
List and search channels | |
List and search gateways | |
List and search message definitions | |
List and search transformations | |
Search in the catalogue |
This actions allows to list all the tickets, optionnaly filtered by some search criteria.
A keyword to filter the tickets by. It will search within the description. | |
The status of ticket. The accepted values are OPEN and CLOSED. | |
The severity of ticket. The accepted values are HIGH, MEDIUM, LOW and INFO. | |
Returns tickets created after the given timestamp. | |
Returns tickets created before the given timestamp. | |
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 | |
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, ... |
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>
This action allows to get all the informations about a ticket.
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"
}
This action allows to delete a ticket. It returns true if ticket have been found and deleted, or false otherwise.
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"
Search and list messages.
Parameters can be added to filter the query
A message key | |
a string search in the channel name | |
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) | |
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) | |
a string search in the gateway in name | |
a string search in the gateway out name | |
the maximum size of the incoming message (in bytes) | |
the minimum size of the incoming message (in bytes) | |
a string search within the error description | |
the message reference | |
The status of the message. The accepted values are IN_PROGRESS, WAITING_ACK, DONE, ERROR and CLOSED. | |
The type of ticket. The accepted values are REGULAR and TEST. | |
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, ... |
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
}
]
Gets all the informations about a message
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>
You can search and list channels for a given environment.
A string search on the channel name | |
a string search on the channel description | |
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) | |
Returns messages created before the given timestamp. | |
'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. | |
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, ... |
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>
Search and list gateways for a given environment.
A string search on the channel name | |
a string search on the channel description | |
Returns only gateways created after the given timestamp. | |
Returns only gateways created before the given timestamp. | |
Returns only the gateways with the specified direction : IN or OUT. | |
Returns only the gateways with the specified type. | |
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, ... |
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
}
]
Search and list message definitions for a given environment.
A string search on the channel name | |
a string search on the channel description | |
Returns only gateways created after the given timestamp. | |
Returns only gateways created before the given timestamp. | |
Returns only the gateways with the specified direction : IN or OUT. | |
Returns only the gateways with the specified type. | |
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, ... |
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
}
]Search and list transformations for a given environment.
A string search on the channel name | |
a string search on the channel description | |
Returns only gateways created after the given timestamp. | |
Returns only gateways created before the given timestamp. | |
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, ... |
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>
Search and list catalogue items
a query string (not case-sensitive) | |
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, ... |
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>
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.
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;
}
}
}
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());
}
}
}
} 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
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>';
?>
BabelInvoice is a solution to send secure electronic invoices. BabelInvoice leverages Babelway's B2B integration in the cloud.
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.
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 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 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.
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.
The advanced signature complies with the definition of Directive 1999/93/CE of the European Parliament and the Council of 13 December 1999.
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.
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.
To Install up your BabelInvoice you should follow these steps.
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.
1-After clicking on the exe file you will see welcome screen, click on "Next".
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.
If you chose to download the required software the download screen will appear and download will start immediately.
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".
4-setup will install the files to the selected destination.
5-Application needs to create new printer on PDFCreator printer, click "Next" to create it.
6-Click on Finish to complete the setup process
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".
8-you can use the BabelInvoice for PDFCreator by printing the documents with the created printer.
After printing the document you will see the main screen of BabelInvoice application type the required parameter and send the document.
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
Show list of available commands. | |
The invoice file path. | |
Set the FTP User (OPTIONAL). | |
Add metadata to metadata.xml (OPTIONAL). | |
Don’t show any error messages and write the error details in the log file and return exit code (OPTIONAL). | |
Open the settings form (OPTIONAL). | |
Sets the configuration folder path (create if not exists), (OPTIONAL) default folder is Application Data folder. |
To set up your BabelInvoice you should follow these steps.
If you don't have an account yet, please register on http://www.babelway.net
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.
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.
To read more about ftp server gateway configuration click here
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.
To read more about Activate and deploy a Channel click here
The first time you'll use the BabelInvoice application, the setting screen will appear. It will let you configure the application with your parameters.
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;