Online Supplement

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

Common recommendations

Case 1 – One eSchKG/e-LP/e-LEF application

Assumption

Prerequisite

Example configuration

 

 

/mh_examples/case1/
.
+-- application
¦   +-- inbox
¦   +-- outbox
+-- log
¦   +-- mh
¦   +-- sedex
+-- mh
¦   +-- install-dir
¦   ¦   +-- bin
¦   ¦   +-- conf
¦   ¦   ¦   +-- config.xml
¦   ¦   ¦   +-- config.xsd
¦   ¦   ¦   +-- log4j.properties
¦   ¦   ¦   +-- recipientIdResolver.groovy
¦   ¦   ¦   +-- wrapper.conf
¦   ¦   +-- lib
¦   +-- working-dir
¦       +-- corrupted
¦       +-- db
¦       +-- sent
¦       +-- tmp
¦       ¦   +-- preparing
¦       ¦   +-- receiving
¦       +-- unknown
+-- sedex
    +-- inbox
    +-- outbox
    +-- receipts
    +-- sent
<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.1">
    <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>
/**
 * This resolver works for eSchKG messages. The sedex ID will be extracted
 * from the filename.
 *
 * @param filename the name of the file to be sent including path
 * @return the resolved Sedex-ID or an empty string
*/
def String resolve(String filename) {
  // If the filename matches the eSchKG convention -> extract sedex ID
  def matcher = (filename =~ /^.*\/([1-9]-[0-9A-Z]+-[0-9]+)_.*/)
  if (matcher.matches()) {
    return matcher.group(1)
  }
 
  // If all else fails: return empty string
  return ''
}

Case 2 – Two eSchKG/e-LP/e-LEF applications

Assumption

Prerequisite

Both applications work with the same sedex message type (10301). Due to this each application requires its own logical sedex ID!

Example configuration

mh_examples/case2/
.
+-- applicationA
¦   +-- inbox
¦   +-- outbox
+-- applicationB
¦   +-- inbox
¦   +-- outbox
+-- log
¦   +-- mh
¦   +-- sedex
+-- mh
¦   +-- install-dir
¦   ¦   +-- bin
¦   ¦   +-- conf
¦   ¦   ¦   +-- config.xml
¦   ¦   ¦   +-- config.xsd
¦   ¦   ¦   +-- log4j.properties
¦   ¦   ¦   +-- recipientIdResolver.groovy
¦   ¦   +-- lib
¦   +-- working-dir
¦       +-- corrupted
¦       +-- db
¦       +-- sent
¦       +-- tmp
¦       ¦   +-- preparing
¦       ¦   +-- receiving
¦       +-- unknown
+-- sedex
    +-- inbox
    +-- outbox
    +-- receipts
    +-- sent
<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.1">
    <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>

 

recipientIdResolver.groovy: same as in case 1.

Case 3 – One eSchKG eSchKG/e-LP/e-LEF and one sedex application

Assumption

Prerequisite

Since the applications send and receive using different sedex message types they can share the same physical sedex participant. This kind of setup is not recommended, if you plan to serve additional applications which might use the same message types!

Example configuration

/mh_examples/case3/
.
+-- applicationA
¦   +-- inbox
¦   +-- outbox
+-- applicationB
¦   +-- inbox
¦   +-- outbox
¦   +-- receipts
+-- log
¦   +-- mh
¦   +-- sedex
+-- mh
¦   +-- install-dir
¦   ¦   +-- bin
¦   ¦   +-- conf
¦   ¦   ¦   +-- config.xml
¦   ¦   ¦   +-- config.xsd
¦   ¦   ¦   +-- log4j.properties
¦   ¦   ¦   +-- recipientIdResolver.groovy
¦   ¦   +-- lib
¦   +-- working-dir
¦       +-- corrupted
¦       +-- db
¦       +-- sent
¦       +-- tmp
¦       ¦   +-- preparing
¦       ¦   +-- receiving
¦       +-- unknown
+-- sedex
    +-- inbox
    +-- outbox
    +-- receipts
    +-- sent
<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.1">
    <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>

 

recipientIdResolver.groovy: same as in case 1

Case 4 – Two applications in Transparent Mode

Assumption

Prerequisite

Both applications work with the same sedex message type (112). Due to this each application requires its own logical sedex ID.

 

Example configuration

/mh_examples/case4
.
+-- applicationA
¦   +-- inbox
¦   +-- outbox
¦   +-- receipts
+-- applicationB
¦   +-- inbox
¦   +-- outbox
¦   +-- receipts
+-- log
¦   +-- mh
¦   +-- sedex
+-- mh
¦   +-- install-dir
¦   ¦   +-- bin
¦   ¦   +-- conf
¦   ¦   ¦   +-- config.xml
¦   ¦   ¦   +-- config.xsd
¦   ¦   ¦   +-- log4j.properties
¦   ¦   +-- lib
¦   +-- working-dir
¦       +-- corrupted
¦       +-- db
¦       +-- sent
¦       +-- tmp
¦       ¦   +-- preparing
¦       ¦   +-- receiving
¦       +-- unknown
+-- sedex
    +-- inbox
    +-- outbox
    +-- receipts
    +-- sent
<?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.1">
    <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>

 

Case 5 – Two applications in Transparent Mode – local recipients

Assumption

Prerequisite

Both applications work with the same sedex message type (112). Due to this each application requires its own logical sedex ID.

Example configuration

mh_examples/case5
.
+-- applicationA
¦   +-- inbox
¦   +-- outbox
¦   +-- receipts
+-- applicationB
¦   +-- inbox
¦   +-- outbox
¦   +-- receipts
+-- log
¦   +-- mh
¦   +-- sedex
+-- mh
¦   +-- install-dir
¦   ¦   +-- bin
¦   ¦   +-- conf
¦   ¦   ¦   +-- config.xml
¦   ¦   ¦   +-- config.xsd
¦   ¦   ¦   +-- log4j.properties
¦   ¦   +-- lib
¦   +-- working-dir
¦       +-- corrupted
¦       +-- db
¦       +-- sent
¦       +-- tmp
¦       ¦   +-- preparing
¦       ¦   +-- receiving
¦       +-- unknown
+-- sedex
    +-- inbox
    +-- outbox
    +-- receipts
    +-- sent
<?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.1">
    
    <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>

 

Case 6 – One eSchKG/e-LP/e-LEF application with one signing outbox

Assumption

Prerequisite

The signing process: The application adds the file “document.pdf” inside the signing-outbox directory. MH takes this file and adds a signature to it. The new file with the signature will be added to the outbox directory with the new filename “document-sig.pdf”. If this step is successfully executed the original file “document.pdf” will be moved to the processed directory.

Example configuration

/mh_examples/case6/
.
+-- application
¦   +-- inbox
¦   +-- outbox
¦   +-- processed
¦   +-- signing-outbox
+-- log
¦   +-- mh
¦   +-- sedex
+-- mh
¦   +-- install-dir
¦   ¦   +-- bin
¦   ¦   +-- conf
¦   ¦   ¦   +-- config.xml
¦   ¦   ¦   +-- config.xsd
¦   ¦   ¦   +-- log4j.properties
¦   ¦   ¦   +-- recipientIdResolver.groovy
¦   ¦   ¦   +-- signature.properties
¦   ¦   +-- lib
¦   +-- working-dir
¦       +-- corrupted
¦       +-- db
¦       +-- sent
¦       +-- tmp
¦       ¦   +-- preparing
¦       ¦   +-- receiving
¦       +-- unknown
+-- sedex
    +-- certificate
    ¦   +-- certificate1.p12
    +-- conf
    ¦   +-- certificateConfiguration.xml
    ¦   +-- CertificateConfiguration-1-0.xsd
    +-- inbox
    +-- outbox
    +-- receipts
    +-- sent
<?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.1">
    <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 
                   filePath="/mh_examples/case6/sedex/conf/certificateConfiguration.xml"/>
            </signingOutbox>
        </outbox>
        <inbox dirPath="inbox" msgTypes="10301"/>
    </nativeApp>
</config>

 

recipientIdResolver.groovy: same as in case 1.

typeOfSignature = signature
visibleSignature = true
location = Bern
reason = Genehmigt
contact = info@glue.ch
backgroundImage = 
leftPos = 100
topPos = 100
boxWidth = 80
boxHeight = 40
signOn = 0
enableTimestamping = false
tsaurl = http://tsa.swisssign.net, http://tsa-t01.admin.ch/rfc3161
tsauser =
tsapassword =

Case 7– One eSchKG/e-LP/e-LEF application with two signing outboxes

Assumption

Prerequisite

 

  • Signing process: In this example there’s no processed directory configured for the signing process. See case 6 for an example with a processed directory. 
  • Signing process: The application adds the file “document.pdf” inside the signing-outbox directory. MH takes this file and adds a signature to it. The new file with the signature will be added to the outbox directory with the new filename “document-sig.pdf”. If this step is successfully executed the original file “document.pdf” will no longer exist.

 

Example configuration

/mh_examples/case7/
.
+-- application
¦   +-- inbox
¦   +-- outbox
¦   +-- signing-outbox1
¦   +-- signing-outbox2
+-- log
¦   +-- mh
¦   +-- sedex
+-- mh
¦   +-- install-dir
¦   ¦   +-- bin
¦   ¦   +-- conf
¦   ¦   ¦   +-- certificate1.p12
¦   ¦   ¦   +-- config.xml
¦   ¦   ¦   +-- config.xsd
¦   ¦   ¦   +-- log4j.properties
¦   ¦   ¦   +-- recipientIdResolver.groovy
¦   ¦   ¦   +-- signature1.properties
¦   ¦   ¦   +-- signature2.properties
¦   ¦   +-- lib
¦   +-- working-dir
¦       +-- corrupted
¦       +-- db
¦       +-- sent
¦       +-- tmp
¦       ¦   +-- preparing
¦       ¦   +-- receiving
¦       +-- unknown
+-- sedex
    +-- certificate
    ¦   +-- certificate2.p12
    +-- conf
    ¦   +-- certificateConfiguration.xml
    ¦   +-- CertificateConfiguration-1-0.xsd
    +-- inbox
    +-- outbox
    +-- receipts
    +-- sent
<?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.1">
    <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">
                <certificateConfigFile 
                    filePath="/mh_examples/case7/sedex/conf/certificateConfiguration.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