AutoLab4j Configuration: Difference between revisions

From Commander4j
Created page with "==config.xml== The configuration file which is called config.xml is located in the xml/config folder. An example file is shown below and a description of it's contents follow. A single instance of the application can support multiple printers if required. In this example it's setup to support 2 production lines each with 1 printer. One of the core concepts underlying the design of this module is resilience. It is designed so that it can be run even if there is a netw..."
 
No edit summary
 
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Category:AutoLab4j]]
==config.xml==
==config.xml==


Line 124: Line 125:
</syntaxhighlight>
</syntaxhighlight>


| Element | Description |
{| class="wikitable" style="margin:auto"
| :- | :- |
|+ System Keys
|<sub>  `<debug suppressLabelPrint="false" suppressOutputMessage="false"/>`</sub> |<sub> This section is used for test/debug purposes only. By changing these values you can run the Auto Labeller module and suppress either the Label and/or the Message to Commander4j. (Production Declaration / Goods Receipt)</sub> |  
|-
|<sub>  `<watchDog port="8000"/>`</sub> | <sub>This is used to ensure that only 1 instance of the software can be running at once. If a second instance is loaded then the first copy is requested to close automatically.</sub> |
! Element !! Description
|<sub>  `<email enabled="false"/>`</sub> | <sub>This option allows you to enable or disable the generation of emails by the application. You need to have configured EMAIL.XML correctly if emails are to be sent.</sub> |
|-
|<sub>  `<updateURL>file:/myupdatepath/updates.xml</updateURL>`</sub> |<sub> Where to look for updates.</sub> |
|style="width: 50%"|<sub>  <debug suppressLabelPrint="false" suppressOutputMessage="false"/></sub> ||<sub> This section is used for  
|<sub> `<updateMode>MANUAL</updateMode>`</sub> | <sub>Can be either MANUAL or AUTOMATIC </sub>|
test/debug purposes only. By changing these values you can run the Auto Labeller module and suppress either the Label and/or the Message to Commander4j. (Production Declaration / Goods Receipt)</sub>  
|<sub> `<paths>`</sub> | <sub>--------------</sub> |
|-
|<sub> `<labelSync path="./remote_labels" frequency="120"/>`</sub> | <sub>This is the location where the application should search for updated label templates.</sub> |
|<sub>  <watchDog port="8000"/></sub> || <sub>This is used to ensure that only 1 instance of the software can be running at once. If a second instance is loaded then the first copy is requested to close automatically.</sub>  
|<sub>  `<dataSet path="./remote_dataset"/>`</sub> | <sub>This is where the application looks for data files which contain the base data for the label. This will be a CSV file and has been designed to use the CSV generated by Commander4j.</sub> |
|-
|<sub>  `<output path="./interface/output/ProdDec"/>`</sub> | <sub>This is the location for output messages which contain a record of the labels which have been printed. Typically these would be collected by Commandeer4j / Middleware4j so that the pallet data can be inserted into the C4J database.</sub>|
|<sub>  <email enabled="false"/></sub> || <sub>This option allows you to enable or disable the generation of emails by the application. You need to have configured EMAIL.XML correctly if emails are to be sent.</sub>  
|<sub>  `<ssccSequence path=""/>`</sub> | <sub>If left blank this path will default to the xml/sscc folder within the application folder. You can override this if necessary by specifying a path here.</sub> |
|-
|<sub>  `</paths>`</sub> | <sub>--------------</sub> |
|<sub>  <updateURL>file:/myupdatepath/updates.xml</updateURL></sub> ||<sub> Where to look for updates.</sub>  
|<sub> `<labels>`</sub> | <sub>--------------</sub> |
|-
|<sub> <pallet ssccPerPallet="1" labelsPerSSCC="2"/>` </sub>| <sub>Two types of pallet configuration are supported pallet and semiPallet</sub> |
|<sub> <updateMode>MANUAL</updateMode></sub> || <sub>Can be either MANUAL or AUTOMATIC </sub>
|<sub> <semiPallet ssccPerPallet="2" labelsPerSSCC="2"/>` </sub>| <sub>Two types of pallet configuration are supported pallet and semiPallet</sub> |
|-
|<sub> `</labels>`</sub> | <sub>--------------</sub> |
|<sub> <paths></sub> || <sub>--------------</sub>  
|<sub> `<batchFormats>`</sub> | <sub>--------------</sub> |
|-
|<sub> `<customer id="SELF" pattern="{YEAR1}{JULIAN_DAY}{PROCESS_ORDER}"/>`</sub> | <sub>The format of the system generated batch number on a customer by customer basis.</sub>|
|<sub> &nbsp;&nbsp;&nbsp;<labelSync path="./remote_labels" frequency="120"/></sub> || <sub>This is the location where the application should search for updated label templates.</sub>  
|<sub> `</batchFormats>`</sub> | <sub>--------------</sub> |
|-
|<sub> `<controls>` </sub>| <sub>--------------</sub> |
|<sub>  &nbsp;&nbsp;&nbsp;<dataSet path="./remote_dataset"/></sub> || <sub>This is where the application looks for data files which contain the base data for the label. This will be a CSV file and has been designed to use the CSV generated by Commander4j.</sub>  
|<sub> <system key="HOST REF" value="DEMO>`</sub> | <sub>Used in the creation of production confirmation messages back to Commander4j or other</sub> |
|-
|<sub> <system key="PLANT" value="1234">` </sub>| <sub>Used in the creation of production confirmation messages back to Commander4j or other</sub> |
|<sub>  &nbsp;&nbsp;&nbsp;<output path="./interface/output/ProdDec"/></sub> || <sub>This is the location for output messages which contain a record of the labels which have been printed. Typically these would be collected by Commandeer4j / Middleware4j so that the pallet data can be inserted into the C4J database.</sub>
|<sub> <system key="BATCH_FORMAT" value="{YEAR1}{JULIAN_DAY}{PROCESS_ORDER}">`</sub> | <sub>Default Batch Format if no customer specific one defined.</sub> |
|-
|<sub> <system key="BATCH_EXPIRY_TIME" value="-">` </sub>| <sub>Determines the format of the batch expiry time.</sub> |
|<sub>  &nbsp;&nbsp;&nbsp;<ssccSequence path=""/></sub> || <sub>If left blank this path will default to the xml/sscc folder within the application folder. You can override this if necessary by specifying a path here.</sub>  
|<sub> <system key="LABEL_HEADER_COMMENT" value="Free format text">` </sub>| <sub>Optional text message on label</sub> |
|-
|<sub> <system key="EXPIRY DATE MODE" value="SSCC">` </sub>| <sub>BATCH or SSCC</sub> |
|<sub>  </paths></sub> || <sub>--------------</sub>  
|<sub> <system key="SSCC AUTO CONFIRM" value="Y">` </sub>| <sub>Flag to determine if Commander4j automatically determines that the pallet exists and can be confirmed - OR requires a separate confirmation scan.</sub> |
|-
|<sub> `</controls>`</sub> | <sub>--------------</sub> |
|<sub><labels></sub> || <sub>--------------</sub>  
|<sub>  `<labelary enabled="true">` </sub>| <sub>The application can display a preview of the label using a very useful webite https://labelary.com/viewer.html</sub> |
|-
|<sub>  `<url>http://api.labelary.com/v1/printers/8dpmm/labels/6x9/0/</url>`</sub> | <sub>URL which includes dpi and paper size</sub>|
|<sub>&nbsp;&nbsp;&nbsp;<pallet ssccPerPallet="1" labelsPerSSCC="2"/> </sub>|| <sub>Two types of pallet configuration are supported pallet and semiPallet</sub>  
|<sub>  `</labelary>` </sub>|<sub>-------------- </sub>|
|-
|<sub>  `<productionLines>`</sub> |<sub>--------------</sub> |
|<sub>&nbsp;&nbsp;&nbsp;<semiPallet ssccPerPallet="2" labelsPerSSCC="2"/> </sub>|| <sub>Two types of pallet configuration are supported pallet and semiPallet</sub>  
|<sub> <productionLine name="LINE 1" enabled="Y">`</sub> |<sub>--------------</sub> |
|-
|<sub> `      <modbus name="ADAM-6050">`</sub> | <sub>Description of the Modbus device</sub>|
|<sub></labels></sub> || <sub>--------------</sub>  
|<sub> `        <ipaddress>127.0.0.1</ipaddress>`</sub> |<sub>IP Address of the Modbus device</sub> |
|-
|<sub> `        <portNumber>502</ipaddress>`</sub> |<sub>Port number of the Modbus device</sub> |
|<sub><batchFormats></sub> || <sub>--------------</sub>  
|<sub> `        <coilAddress>1</coilAddress>`</sub> |<sub>The coil number to monitor for trigger events</sub> |
|-
|<sub> `        <timeout>4000</timeout>` </sub>|<sub>Modbus timeout</sub> |
|<sub>&nbsp;&nbsp;&nbsp;<customer id="SELF" pattern="{YEAR1}{JULIAN_DAY}{PROCESS_ORDER}"/></sub> || <sub>The format of the system generated batch number on a customer by customer basis.</sub>
|<sub> `        <retryDelay>1000</retryDelay>` </sub>|<sub>Delay before trying to connect again</sub> |
|-
|<sub> `        <coilTriggerValue>true</coilTriggerValue>`</sub> |<sub>Trigger value</sub> |
|<sub></batchFormats></sub> || <sub>--------------</sub>  
|<sub> `        <semiPalletCoilAddress>2</semiPalletCoilAddress>`</sub> |<sub>Alternative coil to use for secondary pallet configuration.</sub>|
|-
|<sub> `      </modbus>`</sub> |<sub>--------------</sub> |
|<sub><controls> </sub>|| <sub>--------------</sub>  
|<sub> </productionLine>`</sub> |<sub>--------------</sub> |
|-
|<sub> `</productionLines>`</sub> |<sub>--------------</sub> |
|<sub>&nbsp;&nbsp;&nbsp;<system key="HOST REF" value="DEMO></sub> || <sub>Used in the creation of production confirmation messages back to Commander4j or other</sub>  
|<sub> `<fieldNamesLookup>`</sub> |<sub>--------------</sub> |
|-
|<sub> <fieldName csv="MATERIAL_DESCRIPTION" db="DESCRIPTION"/>`</sub> | |
|<sub>&nbsp;&nbsp;&nbsp;<system key="PLANT" value="1234"> </sub>|| <sub>Used in the creation of production confirmation messages back to Commander4j or other</sub>  
|<sub> <fieldName csv="PROD_EAN" db="EAN"/>` </sub>| |
|-
|<sub> <fieldName csv="PROD_UOM" db="UOM"/>` </sub>| |
|<sub>&nbsp;&nbsp;&nbsp;<system key="BATCH_FORMAT" value="{YEAR1}{JULIAN_DAY}{PROCESS_ORDER}"></sub> || <sub>Default Batch Format if no customer specific one defined.</sub>  
|<sub> <fieldName csv="PROD_QUANTITY" db="QUANTITY"/>`</sub> | |
|-
|<sub> <fieldName csv="DATE_OF_MANUFACTURE" db="DATE_CREATED"/>` </sub>| |
|<sub>&nbsp;&nbsp;&nbsp;<system key="BATCH_EXPIRY_TIME" value="-"> </sub>|| <sub>Determines the format of the batch expiry time.</sub>  
|<sub> `</fieldNamesLookup>` </sub>|<sub>--------------</sub> |
|-
|<sub> `<clone>` </sub>|<sub>--------------</sub> |
|<sub>&nbsp;&nbsp;&nbsp;<system key="LABEL_HEADER_COMMENT" value="Free format text"> </sub>|| <sub>Optional text message on label</sub>  
|<sub> <field from="QUANTITY" to="QUANTITY_DECIMALS"/>`</sub> | |
|-
|<sub> `</clone>`</sub> |<sub>--------------</sub> |
|<sub>&nbsp;&nbsp;&nbsp;<system key="EXPIRY DATE MODE" value="SSCC"> </sub>|| <sub>BATCH or SSCC</sub>  
|<sub> `<formats>`</sub> |<sub>--------------</sub> |
|-
|<sub> <field name="QUANTITY" format="0000"/>`</sub> | |
|<sub>&nbsp;&nbsp;&nbsp;<system key="SSCC AUTO CONFIRM" value="Y"> </sub>|| <sub>Flag to determine if Commander4j automatically determines that the pallet exists and can be confirmed - OR requires a separate confirmation scan.</sub>  
|<sub> <field name="BASE_QUANTITY" format="0000"/>` </sub>| |
|-
|<sub> `</formats>`</sub> |<sub>--------------</sub> |
|<sub></controls></sub> || <sub>--------------</sub>  
 
|-
|<sub>  <labelary enabled="true"> </sub>|| <sub>The application can display a preview of the label using a very useful webite https://labelary.com/viewer.html</sub>  
|-
|<sub>  &nbsp;&nbsp;&nbsp;<url>http://api.labelary.com/v1/printers/8dpmm/labels/6x9/0/</url></sub> || <sub>URL which includes dpi and paper size</sub>
|-
|<sub>  </labelary> </sub>||<sub>-------------- </sub>
|-
|<sub>  <productionLines></sub> ||<sub>--------------</sub>  
|-
|<sub>&nbsp;&nbsp;&nbsp;<productionLine name="LINE 1" enabled="Y"></sub> ||<sub>--------------</sub>  
|-
|<sub>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<modbus name="ADAM-6050"></sub> || <sub>Description of the Modbus device</sub>
|-
|<sub>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<ipaddress>127.0.0.1</ipaddress></sub> ||<sub>IP Address of the Modbus device</sub>  
|-
|<sub>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<portNumber>502</ipaddress></sub> ||<sub>Port number of the Modbus device</sub>  
|-
|<sub>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<coilAddress>1</coilAddress></sub> ||<sub>The coil number to monitor for trigger events</sub>  
|-
|<sub>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<timeout>4000</timeout> </sub>||<sub>Modbus timeout</sub>  
|-
|<sub>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<retryDelay>1000</retryDelay> </sub>||<sub>Delay before trying to connect again</sub>  
|-
|<sub>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<coilTriggerValue>true</coilTriggerValue></sub> ||<sub>Trigger value</sub>  
|-
|<sub>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<semiPalletCoilAddress>2</semiPalletCoilAddress></sub> ||<sub>Alternative coil to use for secondary pallet configuration.</sub>
|-
|<sub>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</modbus></sub> ||<sub>--------------</sub>  
|-
|<sub>&nbsp;&nbsp;&nbsp;</productionLine></sub> ||<sub>--------------</sub>  
|-
|<sub></productionLines></sub> ||<sub>--------------</sub>  
|-
|<sub><fieldNamesLookup></sub> ||<sub>--------------</sub>  
|-
|<sub>&nbsp;&nbsp;&nbsp;<fieldName csv="MATERIAL_DESCRIPTION" db="DESCRIPTION"/></sub> ||
|-
|<sub>&nbsp;&nbsp;&nbsp;<fieldName csv="PROD_EAN" db="EAN"/> </sub>||
|-
|<sub>&nbsp;&nbsp;&nbsp;<fieldName csv="PROD_UOM" db="UOM"/> </sub>||
|-
|<sub>&nbsp;&nbsp;&nbsp;<fieldName csv="PROD_QUANTITY" db="QUANTITY"/></sub> ||
|-
|<sub>&nbsp;&nbsp;&nbsp;<fieldName csv="DATE_OF_MANUFACTURE" db="DATE_CREATED"/> </sub>||
|-
|<sub></fieldNamesLookup> </sub>||<sub>--------------</sub>
|-
|<sub><clone> </sub>||<sub>--------------</sub>
|-
|<sub>&nbsp;&nbsp;&nbsp;<field from="QUANTITY" to="QUANTITY_DECIMALS"/></sub> ||
|-
|<sub></clone></sub> ||<sub>--------------</sub>
|-
|<sub><formats></sub> ||<sub>--------------</sub>
|-
|<sub>&nbsp;&nbsp;&nbsp;<field name="QUANTITY" format="0000"/></sub> ||
|-
|<sub>&nbsp;&nbsp;&nbsp;<field name="BASE_QUANTITY" format="0000"/> </sub>||
|-
|<sub></formats></sub> ||<sub>--------------</sub>
|}


==sscc.xml==
==sscc.xml==

Latest revision as of 16:54, 27 August 2024

config.xml

The configuration file which is called config.xml is located in the xml/config folder. An example file is shown below and a description of it's contents follow.

A single instance of the application can support multiple printers if required. In this example it's setup to support 2 production lines each with 1 printer.

One of the core concepts underlying the design of this module is resilience. It is designed so that it can be run even if there is a network or server/database issue. As far as is practical the software is designed to be self contained and to accept data from external systems via ascii files rather than a database connection.

Some of the configuration items held in the XML below will share the same name as their Commander4j counterparts which are stored in the database.

<?xml version="1.0" encoding="UTF-8"?>
<config name="AutoLab">
    
    <debug suppressLabelPrint="false" suppressOutputMessage="false"/>
    
    <watchDog port="8000"/>
    
    <email enabled="false"/>
    
    <updateURL>file:/myupdatepath/updates.xml</updateURL>
    <updateMode>MANUAL</updateMode>
    
    <!-- Folders -->
    
    <paths>
        <labelSync path="./remote_labels" frequency="120"/>
        <dataSet path="./remote_dataset"/>
        <output path="./interface/output/ProdDec"/>
        <ssccSequence path=""/>
    </paths>
    
    <!-- Label Quantities -->
    
    <labels>
        <pallet ssccPerPallet="1" labelsPerSSCC="2"/>
        <semiPallet ssccPerPallet="2" labelsPerSSCC="2"/>
    </labels>
    
    <!-- Customer Specific Batch Formats -->
    
    <batchFormats>
        <customer id="SELF" pattern="{YEAR1}{JULIAN_DAY}{PROCESS_ORDER}"/>
    </batchFormats>
    
    <!-- Copy of some System Keys normally read from database (jdbc) -->
    
    <controls>
        <system key="HOST REF" value="DEMO"/>
        <system key="PLANT" value="1234"/>
        <system key="BATCH FORMAT" value="{YEAR1}{JULIAN_DAY}{PROCESS_ORDER}"/>
        <system key="BATCH EXPIRY TIME" value="-"/>     
        <system key="LABEL_HEADER_COMMENT" value="Free format text"/>
        <system key="EXPIRY DATE MODE" value="SSCC"/>
        <system key="SSCC AUTO CONFIRM" value="Y"/>
    </controls>
    
    <!-- URL of Internet Web Service used to display label on screen -->
    
    <labelary enabled="true">
    	<url>http://api.labelary.com/v1/printers/8dpmm/labels/6x9/0/</url>
    </labelary>
    
    <productionLines>
        
        <!-- LINE1 1 -->

        <productionLine name="LINE 1" enabled="Y"> 
            <modbus name="ADAM-6050">
                <ipAddress>127.0.0.1</ipAddress>
                <portNumber>502</portNumber>
                <coilAddress>1</coilAddress>
                <timeout>4000</timeout>
                <retryDelay>1000</retryDelay>
                <coilTriggerValue>true</coilTriggerValue>
                <semiPalletCoilAddress>2</semiPalletCoilAddress>
            </modbus>
            <printer name="LABELLER 1"/>
            <SSCC filename="LABELLER 1.xml"/>
        </productionLine>
        
        <!-- LINE 2 -->
        
       <productionLine name="LINE 2" enabled="Y"> 
            <modbus name="ADAM-6050">
                <ipAddress>127.0.0.1</ipAddress>
                <portNumber>502</portNumber>
                <coilAddress>3</coilAddress>
                <timeout>4000</timeout>
                <retryDelay>1000</retryDelay>
                <coilTriggerValue>true</coilTriggerValue>
                <semiPalletCoilAddress>4</semiPalletCoilAddress>
            </modbus> 
            <printer name="LABELLER 2"/>
            <SSCC filename="LABELLER 2.xml"/>
        </productionLine>
                
    </productionLines>
    
    <!-- Alias field names so we can use unmodified .lbl templayte file -->  
    
    <fieldNamesLookup>
        <fieldName csv="MATERIAL_DESCRIPTION" db="DESCRIPTION"/>
        <fieldName csv="PROD_EAN" db="EAN"/>
        <fieldName csv="PROD_UOM" db="UOM"/>
        <fieldName csv="PROD_QUANTITY" db="QUANTITY"/>
        <fieldName csv="DATE_OF_MANUFACTURE" db="DATE_CREATED"/>
    </fieldNamesLookup>
        
    <!-- Make unmodified copy of Quantity for use in ProdDec XML -->   
    
     <clone>
         <field from="QUANTITY" to="QUANTITY_DECIMALS"/>
     </clone>   
     
    <!-- Overide format of Quantity so we can use in ZPL -->   
    
    <formats>
        <field name="QUANTITY" format="0000"/>
        <field name="BASE_QUANTITY" format="0000"/>
    </formats>
    
</config>
System Keys
Element Description
<debug suppressLabelPrint="false" suppressOutputMessage="false"/> This section is used for

test/debug purposes only. By changing these values you can run the Auto Labeller module and suppress either the Label and/or the Message to Commander4j. (Production Declaration / Goods Receipt)

<watchDog port="8000"/> This is used to ensure that only 1 instance of the software can be running at once. If a second instance is loaded then the first copy is requested to close automatically.
<email enabled="false"/> This option allows you to enable or disable the generation of emails by the application. You need to have configured EMAIL.XML correctly if emails are to be sent.
<updateURL>file:/myupdatepath/updates.xml</updateURL> Where to look for updates.
<updateMode>MANUAL</updateMode> Can be either MANUAL or AUTOMATIC
<paths> --------------
   <labelSync path="./remote_labels" frequency="120"/> This is the location where the application should search for updated label templates.
   <dataSet path="./remote_dataset"/> This is where the application looks for data files which contain the base data for the label. This will be a CSV file and has been designed to use the CSV generated by Commander4j.
   <output path="./interface/output/ProdDec"/> This is the location for output messages which contain a record of the labels which have been printed. Typically these would be collected by Commandeer4j / Middleware4j so that the pallet data can be inserted into the C4J database.
   <ssccSequence path=""/> If left blank this path will default to the xml/sscc folder within the application folder. You can override this if necessary by specifying a path here.
</paths> --------------
<labels> --------------
   <pallet ssccPerPallet="1" labelsPerSSCC="2"/> Two types of pallet configuration are supported pallet and semiPallet
   <semiPallet ssccPerPallet="2" labelsPerSSCC="2"/> Two types of pallet configuration are supported pallet and semiPallet
</labels> --------------
<batchFormats> --------------
   <customer id="SELF" pattern="{YEAR1}{JULIAN_DAY}{PROCESS_ORDER}"/> The format of the system generated batch number on a customer by customer basis.
</batchFormats> --------------
<controls> --------------
   <system key="HOST REF" value="DEMO> Used in the creation of production confirmation messages back to Commander4j or other
   <system key="PLANT" value="1234"> Used in the creation of production confirmation messages back to Commander4j or other
   <system key="BATCH_FORMAT" value="{YEAR1}{JULIAN_DAY}{PROCESS_ORDER}"> Default Batch Format if no customer specific one defined.
   <system key="BATCH_EXPIRY_TIME" value="-"> Determines the format of the batch expiry time.
   <system key="LABEL_HEADER_COMMENT" value="Free format text"> Optional text message on label
   <system key="EXPIRY DATE MODE" value="SSCC"> BATCH or SSCC
   <system key="SSCC AUTO CONFIRM" value="Y"> Flag to determine if Commander4j automatically determines that the pallet exists and can be confirmed - OR requires a separate confirmation scan.
</controls> --------------
<labelary enabled="true"> The application can display a preview of the label using a very useful webite https://labelary.com/viewer.html
   <url>http://api.labelary.com/v1/printers/8dpmm/labels/6x9/0/</url> URL which includes dpi and paper size
</labelary> --------------
<productionLines> --------------
   <productionLine name="LINE 1" enabled="Y"> --------------
      <modbus name="ADAM-6050"> Description of the Modbus device
         <ipaddress>127.0.0.1</ipaddress> IP Address of the Modbus device
         <portNumber>502</ipaddress> Port number of the Modbus device
         <coilAddress>1</coilAddress> The coil number to monitor for trigger events
         <timeout>4000</timeout> Modbus timeout
         <retryDelay>1000</retryDelay> Delay before trying to connect again
         <coilTriggerValue>true</coilTriggerValue> Trigger value
         <semiPalletCoilAddress>2</semiPalletCoilAddress> Alternative coil to use for secondary pallet configuration.
      </modbus> --------------
   </productionLine> --------------
</productionLines> --------------
<fieldNamesLookup> --------------
   <fieldName csv="MATERIAL_DESCRIPTION" db="DESCRIPTION"/>
   <fieldName csv="PROD_EAN" db="EAN"/>
   <fieldName csv="PROD_UOM" db="UOM"/>
   <fieldName csv="PROD_QUANTITY" db="QUANTITY"/>
   <fieldName csv="DATE_OF_MANUFACTURE" db="DATE_CREATED"/>
</fieldNamesLookup> --------------
<clone> --------------
   <field from="QUANTITY" to="QUANTITY_DECIMALS"/>
</clone> --------------
<formats> --------------
   <field name="QUANTITY" format="0000"/>
   <field name="BASE_QUANTITY" format="0000"/>
</formats> --------------

sscc.xml

<?xml version="1.0" encoding="UTF-8"?>
<sscc>
    <prefix>384133182</prefix>
    <sequence>00011079</sequence>
    <checkDigit>3</checkDigit>
    <warninglimit>00021030</warninglimit>
    <upperlimit>00030000</upperlimit>
</sscc>

email.xml

<?xml version="1.0" encoding="UTF-8"?>
<emailSettings>    
    <!-- The section called "configuration" is always the active one - rename as appropriate-->
    
    <!-- Microsoft smtp.live.com Example -->
    
    <configuration>
        <property name="mail.smtp.auth" value="true"/>
        <property name="mail.smtp.starttls.enable" value="true"/>
        <property name="mail.smtp.host" value="smtp.live.com"/>
        <property name="mail.smtp.socketFactory.port" value="25"/>
        <property name="mail.smtp.user" value="email@outlook.com"/>
        <property name="mail.smtp.password" value="password"/>  -->
        <property name="mail.smtp.socketFactory.class" value="javax.net.ssl.SSLSocketFactory"/>
        <property name="mail.smtp.auth" value="true"/>
        <property name="mail.smtp.port" value="25"/>
        <property name="mail.smtp.from" value="email@outlook.com"/>
        <property name="mail.debug" value="true"/>
    </configuration>

    <!-- Google gmail Example -->
    
    <configuration1>
        <property name="mail.smtp.auth" value="true"/>
        <property name="mail.smtp.starttls.enable" value="true"/>
        <property name="mail.smtp.host" value="smtp.gmail.com"/>
        <property name="mail.smtp.socketFactory.port" value="465"/>
        <property name="mail.smtp.user" value="email@gmail.com"/>
        <property name="mail.smtp.password" value="password"/>
        <property name="mail.smtp.socketFactory.class" value="javax.net.ssl.SSLSocketFactory"/>
        <property name="mail.smtp.auth" value="true"/>
        <property name="mail.smtp.port" value="465"/>
        <property name="mail.smtp.from" value="email@gmail.com"/>
        <property name="mail.debug" value="true"/>
    </configuration1>
    
    <!-- SMTP No Authentication Example -->
    
    <configuration2>
        <property name="mail.smtp.starttls.enable" value="false"/>
        <property name="mail.smtp.host" value="smtp.demo.com"/>
        <property name="mail.smtp.socketFactory.port" value="25"/>
        <property name="mail.smtp.user" value="demo@email.com"/>
        <property name="mail.smtp.password" value=""/>
        <property name="mail.smtp.socketFactory.class" value="javax.net.ssl.SSLSocketFactory"/>
        <property name="mail.smtp.auth" value="false"/>
        <property name="mail.smtp.port" value="25"/>
        <property name="mail.smtp.from" value="demo@email.com"/>
        <property name="mail.debug" value="true"/>
    </configuration2>   

    <!-- Distribution Lists are referred to within message mapping Config.xml -->

    <distributionList id="StartStop" enabled="Y" maxFrequencyMins="0">
        <toAddressList>example@email.com</toAddressList>
    </distributionList>

    <distributionList id="LabelSync" enabled="N" maxFrequencyMins="0">
        <toAddressList>example@email.com</toAddressList>
    </distributionList>
    
    <distributionList id="Logs" enabled="Y" maxFrequencyMins="0">
        <toAddressList>example@email.com</toAddressList>
    </distributionList>

    <distributionList id="Config" enabled="Y" maxFrequencyMins="0">
        <toAddressList>example@email.com</toAddressList>
    </distributionList>

    <distributionList id="Monitor" enabled="Y" maxFrequencyMins="0">
        <toAddressList>example@email.com</toAddressList>
    </distributionList>

    <distributionList id="Info" enabled="Y" maxFrequencyMins="0">
        <toAddressList>example@email.com</toAddressList>
    </distributionList>

    <distributionList id="Error" enabled="Y" maxFrequencyMins="5">
        <toAddressList>example@email.com</toAddressList>
    </distributionList>
    
    <distributionList id="SSCC" enabled="Y" maxFrequencyMins="5">
        <toAddressList>example@email.com</toAddressList>
    </distributionList>
    
     <distributionList id="OrderAssigned" enabled="Y" maxFrequencyMins="0">
        <toAddressList>example@email.com</toAddressList>
    </distributionList>
</emailSettings>