Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

This online supplement to the documentation for version 3.0 .0 of the Open eGov MessageHandler  shows concrete configuration examples. Please refer to the documentation for details of the configurations options.

Table of Contents
maxLevel2
minLevel2
indent10px

Common recommendations

  • As always: RTFM !Please consult the documentation prior to contacting your IT provider or any other supporting organisation. In particular, careful reading of the Open eGov MessageHandler v3.0 technical documentation is considered necessary.
  • Keep installation directories for sedex and MH apart from inboxes, outboxes and log directories.
  • A single sedex adapter can serve N application (N > 1) only, if each of the applications uses a different sedex message type or if the application can be addressed through different logical sedex IDs.
  • If you intend to let a single sedex adapter to serve N application (N > 1), it’s a good idea to allocate a logical sedex participant per application and to use the physical sedex participant ID to address the sedex adapter only.
    Common rule: 1 application = 1 logical sedex participant.
  • If you intend to let a single sedex adapter to serve N application (N > 1), which use the same sedex message type for communication, you will be force to use the rule above!

...

Code Block
languagehtml/xml
titleconfig.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://msghandler.suis.admin.ch/xmlns/config config.xsd"
        xmlns="http://msghandler.suis.admin.ch/xmlns/config"
        version="3.01">
    <sedexAdapter>
        <participantId>T7-4-1</participantId>
        <inboxDir>/mh_examples/case1/sedex/inbox</inboxDir>
        <outboxDir>/mh_examples/case1/sedex/outbox</outboxDir>
        <receiptDir>/mh_examples/case1/sedex/receipts</receiptDir>
        <sentDir>/mh_examples/case1/sedex/sent</sentDir>
    </sedexAdapter>
    <messageHandler>
        <!-- In diesem Pfad mssen die MH Basis-Verzeichnisse sein: 
        corrupted, tmp, unkown, etc. -->
        <workingDir dirPath="/mh_examples/case1/mh/working-dir"/>
        <!-- Wo starten relative Pfade -->
        <baseDir dirPath="/mh_examples/case1/application"/>
        <!--  wie oft wird die sedex inbox geprft -->
        <sedexInboxDirCheck cron="0/5 * * * * ?" />
        <!--  wie oft wird das sedex receipts directoty geprft -->
        <sedexReceiptDirCheck cron="0/5 * * * * ?" />
        <!-- jede *outbox kann Wert berschreiben -->
        <defaultOutboxCheck cron="0/5 * * * * ?" />
        <webserviceInterface host="localhost" port="18080"/>
        <statusDatabase dirPath="/mh_examples/case1/mh/working-dir/db" 
        dataHoldTimeInDays="2" resend="true"/>
        <protocol createPerMessageProtocols="false"/>
    </messageHandler>
    <nativeApp participantId="T7-4-1" > <!-- die lokale sedexId -->
        <outbox dirPath="outbox" msgType="10301"> 
            <recipientIdResolver filePath="/mh_examples/case1/mh/install-dir/conf/recipientIdResolver.groovy" method="resolve" />
        </outbox>
        <inbox dirPath="inbox" msgTypes="10301"/>
    </nativeApp>
</config>

...

Code Block
languagehtml/xml
titleconfig.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://msghandler.suis.admin.ch/xmlns/config config.xsd"
        xmlns="http://msghandler.suis.admin.ch/xmlns/config"
        version="3.01">
    <sedexAdapter>
        <participantId>T7-4-1</participantId>
        <inboxDir>/mh_examples/case2/sedex/inbox</inboxDir>
        <outboxDir>/mh_examples/case2/sedex/outbox</outboxDir>
        <receiptDir>/mh_examples/case2/sedex/receipts</receiptDir>
        <sentDir>/mh_examples/case2/sedex/sent</sentDir>
    </sedexAdapter>
    <messageHandler>
        <!-- In diesem Pfad mssen die MH Basis-Verzeichnisse sein: 
        corrupted, tmp, unkown, etc. -->
        <workingDir dirPath="/mh_examples/case2/mh/working-dir"/>
        <!-- Wo starten relative Pfade -->
        <baseDir dirPath="/mh_examples/case2"/>
        <!--  wie oft wird die sedex inbox geprft -->
        <sedexInboxDirCheck cron="0/30 * * * * ?" />
        <!--  wie oft wird das sedex receipts directoty geprft -->
        <sedexReceiptDirCheck cron="0/30 * * * * ?" />
        <!-- jede *outbox kann Wert berschreiben -->
        <defaultOutboxCheck cron="0/30 * * * * ?" />
        <webserviceInterface host="localhost" port="18080"/>
        <statusDatabase dirPath="/mh_examples/case2/mh/working-dir/db" 
        dataHoldTimeInDays="2" resend="true"/>
        <protocol createPerMessageProtocols="false"/>
    </messageHandler>
    <nativeApp participantId="T7-4-2" > <!-- die lokale sedexId -->
        <outbox dirPath="applicationA/outbox" msgType="10301"> 
            <recipientIdResolver filePath="/mh_examples/case2/mh/install-dir/conf/recipientIdResolver.groovy" method="resolve" />
        </outbox>
        <inbox dirPath="applicationA/inbox" msgTypes="10301"/>
    </nativeApp>
    <nativeApp participantId="T7-4-3" > <!-- die lokale sedexId -->
        <outbox dirPath="applicationB/outbox" msgType="10301"> 
            <recipientIdResolver filePath="/mh_examples/case2/mh/install-dir/conf/recipientIdResolver.groovy" method="resolve" />
        </outbox>
        <inbox dirPath="applicationB/inbox" msgTypes="10301"/>
    </nativeApp>
</config>

...

Code Block
languagehtml/xml
titleconfig.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://msghandler.suis.admin.ch/xmlns/config config.xsd"
        xmlns="http://msghandler.suis.admin.ch/xmlns/config"
        version="3.01">
    <sedexAdapter>
        <participantId>T7-4-1</participantId>
        <inboxDir>/mh_examples/case3/sedex/inbox</inboxDir>
        <outboxDir>/mh_examples/case3/sedex/outbox</outboxDir>
        <receiptDir>/mh_examples/case3/sedex/receipts</receiptDir>
        <sentDir>/mh_examples/case3/sedex/sent</sentDir>
    </sedexAdapter>
    <messageHandler>
        <!-- In diesem Pfad mssen die MH Basis-Verzeichnisse sein: 
        corrupted, tmp, unkown, etc. -->
        <workingDir dirPath="/mh_examples/case3/mh/working-dir"/>
        <!-- Wo starten relative Pfade -->
        <baseDir dirPath="/mh_examples/case3"/>
        <!--  wie oft wird die sedex inbox geprft -->
        <sedexInboxDirCheck cron="0/30 * * * * ?" />
        <!--  wie oft wird das sedex receipts directoty geprft -->
        <sedexReceiptDirCheck cron="0/30 * * * * ?" />
        <!-- jede *outbox kann Wert berschreiben -->
        <defaultOutboxCheck cron="0/30 * * * * ?" />
        <webserviceInterface host="localhost" port="18080"/>
        <statusDatabase dirPath="/mh_examples/case3/mh/working-dir/db" 
        dataHoldTimeInDays="2" resend="true"/>
        <protocol createPerMessageProtocols="false"/>
    </messageHandler>
    <nativeApp participantId="T7-4-1" > <!-- die lokale sedexId -->
        <outbox dirPath="applicationA/outbox" msgType="10301"> 
            <recipientIdResolver filePath="/mh_examples/case3/mh/install-dir/conf/recipientIdResolver.groovy" method="resolve" />
        </outbox>
        <inbox dirPath="applicationA/inbox" msgTypes="10301"/>
    </nativeApp>
    <transparentApp participantId="T7-4-1" > <!-- die lokale sedexId -->
        <outbox dirPath="applicationB/outbox" />
        <inbox dirPath="applicationB/inbox" msgTypes="112"/>
        <receipts dirPath="applicationB/receipts" msgTypes="112"/>
    </transparentApp>
</config>

...

Code Block
languagehtml/xml
titleconfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://msghandler.suis.admin.ch/xmlns/config config.xsd"
        xmlns="http://msghandler.suis.admin.ch/xmlns/config"
        version="3.01">
    <sedexAdapter>
        <participantId>T7-4-1</participantId>
        <inboxDir>/mh_examples/case4/sedex/inbox</inboxDir>
        <outboxDir>/mh_examples/case4/sedex/outbox</outboxDir>
        <receiptDir>/mh_examples/case4/sedex/receipts</receiptDir>
        <sentDir>/mh_examples/case4/sedex/sent</sentDir>
    </sedexAdapter>
    <messageHandler>
        <!-- In diesem Pfad mssen die MH Basis-Verzeichnisse sein: 
        corrupted, tmp, unkown, etc. -->
        <workingDir dirPath="/mh_examples/case4/mh/working-dir"/>
        <!-- Wo starten relative Pfade -->
        <baseDir dirPath="/mh_examples/case4"/>
        <!--  wie oft wird die sedex inbox geprft -->
        <sedexInboxDirCheck cron="0/30 * * * * ?" />
        <!--  wie oft wird das sedex receipts directoty geprft -->
        <sedexReceiptDirCheck cron="0/30 * * * * ?" />
        <!-- jede *outbox kann Wert berschreiben -->
        <defaultOutboxCheck cron="0/30 * * * * ?" />
        <webserviceInterface host="localhost" port="18080"/>
        <statusDatabase dirPath="/mh_examples/case4/mh/working-dir/db" 
        dataHoldTimeInDays="2" resend="true"/>
        <protocol createPerMessageProtocols="false"/>
    </messageHandler>
    <transparentApp participantId="T7-4-2" > <!-- die lokale sedexId -->
        <outbox dirPath="applicationA/outbox" /> 
        <inbox dirPath="applicationA/inbox" msgTypes="112"/>
        <receipts dirPath="applicationA/receipts" msgTypes="112"/>
    </transparentApp>
    <transparentApp participantId="T7-4-3" > <!-- die lokale sedexId -->
        <outbox dirPath="applicationB/outbox" />
        <inbox dirPath="applicationB/inbox" msgTypes="112"/>
        <receipts dirPath="applicationB/receipts" msgTypes="112"/>
    </transparentApp>
</config>

...

Code Block
languagehtml/xml
titleconfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://msghandler.suis.admin.ch/xmlns/config config.xsd"
    xmlns="http://msghandler.suis.admin.ch/xmlns/config"
    version="3.01">
    
    <sedexAdapter>
        <participantId>T7-4-1</participantId>
        <inboxDir>/mh_examples/case5/sedex/inbox</inboxDir>
        <outboxDir>/mh_examples/case5/sedex/outbox</outboxDir>
        <receiptDir>/mh_examples/case5/sedex/receipts</receiptDir>
        <sentDir>/mh_examples/case5/sedex/sent</sentDir>
    </sedexAdapter>
    
    <messageHandler>
        <!-- In diesem Pfad mssen die MH Basis-Verzeichnisse sein: 
            corrupted, tmp, unkown, etc. -->
        <workingDir dirPath="/mh_examples/case5/mh/working-dir"/>
        <!-- Wo starten relative Pfade -->
        <baseDir dirPath="/mh_examples/case5"/>
        <!--  wie oft wird die sedex inbox geprft -->
        <sedexInboxDirCheck cron="0/30 * * * * ?" />
        <!--  wie oft wird das sedex receipts directoty geprft -->
        <sedexReceiptDirCheck cron="0/30 * * * * ?" />
        <!-- jede *outbox kann Wert berschreiben -->
        <defaultOutboxCheck cron="0/30 * * * * ?" />
        <webserviceInterface host="localhost" port="18080"/>
        <statusDatabase dirPath="/mh_examples/case5/mh/working-dir/db" 
            dataHoldTimeInDays="2" resend="true"/>
        <localRecipients>
            <localRecipient recipientId="T7-4-2" msgTypes="112" />
            <localRecipient recipientId="T7-4-3" msgTypes="112" />
        </localRecipients>
        <protocol createPerMessageProtocols="false"/>
    </messageHandler>
    
    <transparentApp participantId="T7-4-2" > <!-- die lokale sedexId -->
        <outbox dirPath="applicationA/outbox" />
        <inbox dirPath="applicationA/inbox" msgTypes="112"/>
        <receipts dirPath="applicationA/receipts" msgTypes="112"/>
    </transparentApp>
    
    <transparentApp participantId="T7-4-3" > <!-- die lokale sedexId -->
        <outbox dirPath="applicationB/outbox" />
        <inbox dirPath="applicationB/inbox" msgTypes="112"/>
        <receipts dirPath="applicationB/receipts" msgTypes="112"/>
    </transparentApp>
</config>

...

  • One eSchKG/e-LP/e-LEF application (message type = 10301) has to be connected to the sedex network.
  • The application uses a single signing outbox to sign PDF files by the MH. The configuration parameter for signing will be read from the sedex certificate configuration file (CertificateConfiguration.xml).
  • One nativeApp -> Native Mode.

...

Code Block
titleDirectory structure
/mh_examples/case6/
.
+-- application
¦   +-- inbox
¦   +-- outbox
¦   +-- processed
¦   +-- signing-outbox
+-- log
¦   +-- mh
¦   +-- sedex
+-- mh
¦   +-- install-dir
¦   ¦   +-- bin
¦   ¦   +-- conf
¦   ¦   ¦   +-- certificate.p12
¦   ¦   ¦   +-- config.xml
¦   ¦   ¦   +-- config.xsd
¦   ¦   ¦   +-- log4j.properties
¦   ¦   ¦   +-- recipientIdResolver.groovy
¦   ¦   ¦   +-- signature.properties
¦   ¦   +-- lib
¦   +-- working-dir
¦       +-- corrupted
¦       +-- db
¦       +-- sent
¦       +-- tmp
¦       ¦   +-- preparing
¦       ¦   +-- receiving
¦       +-- unknown
+-- sedex
    +-- certificate
 inbox   ¦   +-- outboxcertificate1.p12
    +-- receiptsconf
    +-- ¦   +-- certificateConfiguration.xml
    ¦   +-- CertificateConfiguration-1-0.xsd
    +-- inbox
    +-- outbox
    +-- receipts
    +-- sent
Code Block
languagehtml/xml
titleconfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://msghandler.suis.admin.ch/xmlns/config config.xsd"
        xmlns="http://msghandler.suis.admin.ch/xmlns/config"
        version="3.01">
    <sedexAdapter>
        <participantId>T7-4-1</participantId>
        <inboxDir>/mh_examples/case6/sedex/inbox</inboxDir>
        <outboxDir>/mh_examples/case6/sedex/outbox</outboxDir>
        <receiptDir>/mh_examples/case6/sedex/receipts</receiptDir>
        <sentDir>/mh_examples/case6/sedex/sent</sentDir>
    </sedexAdapter>
    <messageHandler>
        <!-- In diesem Pfad mssen die MH Basis-Verzeichnisse sein: 
        corrupted, tmp, unkown, etc. -->
        <workingDir dirPath="/mh_examples/case6/mh/working-dir"/>
        <!-- Wo starten relative Pfade -->
        <baseDir dirPath="/mh_examples/case6/application"/>
        <!--  wie oft wird die sedex inbox geprft -->
        <sedexInboxDirCheck cron="0/30 * * * * ?" />
        <!--  wie oft wird das sedex receipts directoty geprft -->
        <sedexReceiptDirCheck cron="0/30 * * * * ?" />
        <!-- jede *outbox kann Wert berschreiben -->
        <defaultOutboxCheck cron="0/30 * * * * ?" />
        <webserviceInterface host="localhost" port="18080"/>
        <statusDatabase dirPath="/mh_examples/case6/mh/working-dir/db" 
        dataHoldTimeInDays="2" resend="true"/>
        <protocol createPerMessageProtocols="false"/>
    </messageHandler>
    <nativeApp participantId="T7-4-1" > <!-- die lokale sedexId -->
        <outbox dirPath="outbox" msgType="10301"> 
            <recipientIdResolver filePath="/mh_examples/case6/mh/install-dir/conf/recipientIdResolver.groovy" method="resolve" />
            <signingOutbox dirPath="signing-outbox" processedDir="processed" signingProfilePath="/mh_examples/case6/mh/install-dir/conf/signature.properties">
                <certificateConfigFile 
                  <certificate filePath="/mh_examples/case6/mh/install-dirsedex/conf/certificatecertificateConfiguration.p12" password="secret"xml"/>
            </signingOutbox>
        </outbox>
        <inbox dirPath="inbox" msgTypes="10301"/>
    </nativeApp>
</config>

...

  • One eSchKG/e-LP/e-LEF application (message type = 10301) has to be connected to the sedex network.
  • The application uses two signing outboxes to sign PDF files by the MH. One of these outboxes is configured with a p12 file and password, the other is configured with the sedex certificate configuration file (CertificateConfiguration.xml).
  • One nativeApp -> Native Mode.

...

Code Block
titleDirectory structure
/mh_examples/case7/
.
+-- application
¦   +-- inbox
¦   +-- outbox
¦   +-- signing-outbox1
¦   +-- signing-outbox2
+-- log
¦   +-- mh
¦   +-- sedex
+-- mh
¦   +-- install-dir
¦   ¦   +-- bin
¦   ¦   +-- conf
¦   ¦   ¦   +-- certificate1.p12
¦   ¦   ¦   +-- certificate2config.p12xml
¦   ¦   ¦   +-- config.xmlxsd
¦   ¦   ¦   +-- configlog4j.xsdproperties
¦   ¦   ¦   +-- log4jrecipientIdResolver.propertiesgroovy
¦   ¦   ¦   +-- recipientIdResolversignature1.groovyproperties
¦   ¦   ¦   +-- signature1signature2.properties
¦   ¦   +-- lib
¦   +-- working-dir
¦       +-- signature2.propertiescorrupted
¦       +-- db
¦       +-- libsent
¦       +-- working-dirtmp
¦       ¦   +-- corruptedpreparing
¦       ¦   +-- dbreceiving
¦       +-- sentunknown
¦+--  sedex
    +-- tmp
¦  certificate
    ¦   +-- preparingcertificate2.p12
  ¦  +-- conf
    ¦   +-- receivingcertificateConfiguration.xml
¦    ¦   +-- unknown
+CertificateConfiguration-1- sedex0.xsd
    +-- inbox
    +-- outbox
    +-- receipts
    +-- sent
Code Block
languagehtml/xml
titleconfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://msghandler.suis.admin.ch/xmlns/config config.xsd"
        xmlns="http://msghandler.suis.admin.ch/xmlns/config"
        version="3.01">
    <sedexAdapter>
        <participantId>T7-4-1</participantId>
        <inboxDir>/mh_examples/case7/sedex/inbox</inboxDir>
        <outboxDir>/mh_examples/case7/sedex/outbox</outboxDir>
        <receiptDir>/mh_examples/case7/sedex/receipts</receiptDir>
        <sentDir>/mh_examples/case7/sedex/sent</sentDir>
    </sedexAdapter>
    <messageHandler>
        <!-- In diesem Pfad mssen die MH Basis-Verzeichnisse sein: 
        corrupted, tmp, unkown, etc. -->
        <workingDir dirPath="/mh_examples/case7/mh/working-dir"/>
        <!-- Wo starten relative Pfade -->
        <baseDir dirPath="/mh_examples/case7/application"/>
        <!--  wie oft wird die sedex inbox geprft -->
        <sedexInboxDirCheck cron="0/30 * * * * ?" />
        <!--  wie oft wird das sedex receipts directoty geprft -->
        <sedexReceiptDirCheck cron="0/30 * * * * ?" />
        <!-- jede *outbox kann Wert berschreiben -->
        <defaultOutboxCheck cron="0/30 * * * * ?" />
        <webserviceInterface host="localhost" port="18080"/>
        <statusDatabase dirPath="/mh_examples/case7/mh/working-dir/db" 
        dataHoldTimeInDays="2" resend="true"/>
        <protocol createPerMessageProtocols="false"/>
    </messageHandler>
    <nativeApp participantId="T7-4-1" > <!-- die lokale sedexId -->
        <outbox dirPath="outbox" msgType="10301"> 
            <recipientIdResolver filePath="/mh_examples/case7/mh/install-dir/conf/recipientIdResolver.groovy" method="resolve" />
            <signingOutbox dirPath="signing-outbox1" signingProfilePath="/mh_examples/case7/mh/install-dir/conf/signature1.properties">
                <certificate filePath="/mh_examples/case7/mh/install-dir/conf/certificate1.p12" password="secret"/>
            </signingOutbox>
            <signingOutbox dirPath="signing-outbox2" signingProfilePath="/mh_examples/case7/mh/install-dir/conf/signature2.properties">
                <certificate<certificateConfigFile 
                    filePath="/mh_examples/case7/mh/install-dirsedex/conf/certificate2certificateConfiguration.p12" password="secret"xml"/>
            </signingOutbox>
        </outbox>
        <inbox dirPath="inbox" msgTypes="10301"/>
    </nativeApp>
</config>

 recipientIdResolver.groovy: same as in case 1 

signature1.properties and signature2.properties: See case 6