Configuration manager

Source tables and mapping

This is the most important part in telling the system where to retrieve data, how to translate it, and where to store it. Everything you enter in this section is from the point of view of the source. Or you specify the record (line, file,...) to retrieve once from the source, and then what to do with it. On this page we will give a brief explanation, how you enter the configuration elements. If you want to find out more on what to do in particular cases, check the knowledge base section. 

This section is valid whether you use the trigger based or batch oriented channel.

In the navigation tree-view under 'source tables and mapping' select new or properties to enter this section of the configuration.

  • Source connection name: Select the source connection you previously defined in the database connection section. You cannot enter a connection name that was not defined before. The source connection is the connection client to retrieve the information from.
  • Source table name: The table name, without library or user name, to retrieve the data from. Table name is the general name for what logically can be represented as a database table name. FILE and SMS are reserved words when you use the Record file or SMS connection client.
  • Source field name:  the name of the field, column to retrieve the data from. This is the name without leading or trailing characters when you use the record file connection client.
  • Source field type: The field type you retrieve. This can only be NUMBER or STRING. For those more familiar with ANSI SQL, this is to determine whether the data is written between quotes (') or not. When you are handling time and/or datestamps, it will go under NUMBER or STRING (most likely STRING). Allthough you might not be able to retrieve time and datestamps in ISO format, converting them to ISO format can solve a lot of problems, and is supported by most of the databases. (ISO format: yyyy-mm-dd hh:mm:ss). For booleans it depends on the database you're working with. Most likely they return 0 (False) or 1 (True), and support this when you write this back.
  • Primary key: check this on when or the source field, or the destination field is part of the primary key. The primary key is all the fields that are needed to get a unique record in a table. For some connection clients this might be irelevant, but for common databases this the basic rule to access records. 

    Once you defined a source field and destination field as part of the primary key, it will be used in the primary key. This means, that when you use a source field multiple times to be distributed to different destinations, and this source field is part of the primary key of the source record, you only need to define this once. 

    If you have a combination source - destination field where one of both fields is part of the primary key, and the other can't be part, you must work out a solution by using the STACK and split one from-to definition into 2.

    The primary key you define in PRODBX should not necessarily be the primary key that is defined in the database. Like when you have an incremental meaningless key in your database, your primary key definition is most likely different then this database key. Remember the primary key is the combination of fields that gives you unique records.

    It might be that one source record is translated into multiple records on the destination. Then your destination primary key is most likely having more fields then your source primary key. You might have this when your source record contains a number of fields (columns) that should be translated into multiple records on the destination. Each of those records will have an extra primary key identifier on the destination that indexes the data type. To accomplish this, reuse your source primary key field to define the additional destination primary key, and use functions like DEFAULT_STRING or DEFAULT_NUMERIC.

    Please remind: when you define a batch oriented exchange, and you apply a filter to the records to be exchanged, it is not the filtered recordset PRODBX is working with. Primary key should give unique records on the entire source table.

    For those familiar with ANSI SQL, PRODBX will use the primary key information to build the WHERE clause.

  • Multiple use id: Whenever you reuse a combination source connection, source table and source field, you must give it a unique multiple use id. 
  • Record id: If one source record results in multiple destination records (independent of the connection) you must distinguish those destination records by giving them a record name. PRODBX will group all fields having the same record id and assume them to be written as a separate record to the destination. If you don't specify a record id, PRODBX will also group all empty record ids to be a destination record. The sequence in which PRODBX will generate the destination records is the alphabetical sorted record id. 
  • Destination connection name: like source connection but to define the destination connection.
  • Destination table name: like source table but to define the destination table.
  • Destination field name: like the source field name but to define the destination field. The destination field my also be STACK. The stack is one internal PRODBX variable. By writing information to the stack, you may reuse it later in a function that supports the stack input. Using the stack also implicates you define a correct 'Field handling sequence'.

    If you have difficulties with the reserved word STACK being the stack indicator, you may change it in the registry under HKEY_LOCAL_MACHINE\Software\Promes\Prodbx\StackName

  • Destination field type: as source field type but for the destination. PRODBX will automatically switch numbers and strings if the source type would be different then the destination type.
  • Field handling sequence:  When you are working with the STACK, and since you have only one stack variable, it is very important PRODBX knows the sequence when the stack is written, and when it is used. If PRODBX would interpret a field using the stack before it interpreted the field that generated the stack, your result will be incorrect. To make sure the fields are interpreted in the correct order, you define a field handling sequence over here. What happens is: first PRODBX will isolate the destination record by grouping the record id. Thereafter the lines that build this record are sorted in ascending field handling sequence. This is the order PRODBX will handle each line. (line = source table and mapping line).
  • Translate function: This is the script that interprets the data of the source, translates it for writing to the destination. See the functions section.
  • Function parameter 1: string constant as input for the translate function.
  • Function parameter 2: string constant as input for the translate function.
  • Function parameter 3: numeric constant as input for the translate function.
  • Function parameter 4: numeric constant as input for the translate function.
  • Obsolete check on destination: Only valid for batch-oriented data exchange. Applied on all fields of the same destination connection and table. When executing a full 'download' from source to destination there is always the problem of the obsolete records. This is, records that do no longer exist in the source, but still available in the destination. If you switch on this obsolete check, PRODBX will find out the obsolete records and delete them at the end of the 'download'. How? At the start PRODBX will save all primary key information of the destination in internal memory. Each record written to the destination will delete the primary key of the record in internal memory. At the end, the internal memory only primary key information of records that do no longer exist in the source. These records are then deleted at the destination.
    When the destination client is a Fixed file client then enabling this function will group all records between begin and end obsolete check, and write only one file, instead of writing a file per record.
  • 'Last updated on' field: This is the field (column) name in the destination table that hold the time and date stamp when the record was updated the last time. If the time and date stamp of this update is older then the time and datestamp in the destination record, the transaction is redirected to the logging manager. This can be very important when you have a distributed setup of offline databases to be synchronised with one main database. 

    How does PRODBX determine the time and date stamp of the current update? It will investigate in the next order the existence of:

    • It is generated by the source application. This means that one of the source fields contains the time and date stamp of when the source was updated, and to written to the field of the destination having the same name as you defined here.
    • It is generated by the trigger. Now you find the time and date stamp back in the TRB file of the source supplying database. The trigger must generate the time and date stamp and write it to the field TDS_UPDATE. Since the format might be different then the destination format you must define a function to run between retrieving the TDS_UPDATE from TRB and using it for comparison with the field entered here ('last updated' on field). Defining this function is done in the database connections section.
    • It is generated by PRODBX. Nor source application or source trigger can supply the time and date stamp. PRODBX will take the system clock of the connection client running the source connection.