Déploiement du MAARCH2MAARCH (M2M)

La fonctionnalité M2M, permet d'envoyer un courrier et des pièces jointes entre deux instances de Maarch Courrier, ou entre Maarch Courrier et une autre GEC.

L'expéditeur du courrier sera automatiquement créé dans la base de données s'il n'existe pas.
Il est également possible de recevoir un accusé de réception et de suivre l'avancement de notre courrier chez le destinataire.

Les données sont transmises dans une archive ZIP soit par l'envoi de mail (et Maarch Capture), soit par web service REST, soit manuellement. Cette archive ZIP est appelée par la suite "Pli numérique"

Dans les trois cas, une configuration doit être faite dans l'administration de l'application

Configuration M2GEC

Afin de pouvoir configurer votre instance M2GEC, il est nécessaire de créer le fichier m2mconfig.xml dans le dossier _config de votre instance custom avant de renseigner les informations dans l'écran d'administration des paramètres. Vous trouverez un exemple de ce fichier dans le dossier config de votre instance Maarch Courrier (m2m_config.xml.default)

Docservers M2GEC

1) Vérifier que le docserver_id ARCHIVETRANSFER existe dans la table docservers. S'il n'existe pas, passer cette commande dans la base de données :

INSERT  INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, enabled, size_limit_number, actual_size_number, path_template, ext_docserver_info, chain_before, chain_after, creation_date, closing_date, coll_id, priority_number, docserver_location_id, adr_priority_number)
VALUES ('ARCHIVETRANSFER', 'ARCHIVETRANSFER', 'Fast internal disc bay for archive transfer', 'N', 'Y', 50000000000, 1, '/opt/maarch/docservers/archive_transfer/', NULL, NULL, NULL, '2017-01-13 14:47:49.197164', NULL, 'archive_transfer_coll', 10, 'NANTERRE', 2);

Vérifier également que le chemin /opt/maarch/docservers/archive_transfer/ existe sur votre serveur et que les droits soient correctement positionnés. Sinon modifier ce chemin, ou créer le dossier.

2) Vérifier que le docserver_type ARCHIVETRANSFER existe dans la table docserver_types. S'il n'existe pas, passer cette commande dans la base de données :

INSERT  INTO docserver_types (docserver_type_id, docserver_type_label, enabled, is_container, container_max_number, is_compressed, compression_mode, is_meta, meta_template, is_logged, log_template, is_signed, fingerprint_mode)
VALUES ('ARCHIVETRANSFER', 'Archive Transfer', 'Y', 'N', 0, 'N', 'NONE', 'N', 'NONE', 'N', 'NONE', 'Y', 'SHA256');

Communication des données

Afin de transférer les documents entre les deux instances, le protocole utilisé est SEDA2.

Le pli numérique est une archive ZIP, contenant :

  • Un bordereau au format SEDA2 décrivant le package
  • Le document principal et ses pièces jointes

Exemple de paquet transféré :
ArchiveTransfer_20181008_164539_bblier.zip

  • ArchiveTransfer_20181008_164539_bblier.xml
  • 0030_1200000707.pdf

Exemple de bordereau SEDA2 généré : (Par soucis de lisibilité, le fichier encodé en base64 a été enlevé)

<?xml version="1.0" encoding="UTF-8"?>
<ArchiveTransfer xmlns="fr:gouv:culture:archivesdefrance:seda:v2.0">
    <Comment>Bernard BLIER (Ville de Maarch-les-bains - Service Courrier - support@maarch.org) :  Votre message est prêt à  être envoyé avec les fichiers joints suivants :&#13;
 &#13;
sdfsddf: sdfsddf.pdf&#13;
    </Comment>
    <Date>2018-10-08T16:45:39+02:00</Date>
    <MessageIdentifier>ArchiveTransfer_20181008_164539_bblier</MessageIdentifier>
    <CodeListVersions>
        <ReplyCodeListVersion>""</ReplyCodeListVersion>
        <MessageDigestAlgorithmCodeListVersion>""</MessageDigestAlgorithmCodeListVersion>
        <MimeTypeCodeListVersion>""</MimeTypeCodeListVersion>
        <EncodingCodeListVersion>""</EncodingCodeListVersion>
        <FileFormatCodeListVersion>""</FileFormatCodeListVersion>
        <CompressionAlgorithmCodeListVersion>""</CompressionAlgorithmCodeListVersion>
        <DataObjectVersionCodeListVersion>""</DataObjectVersionCodeListVersion>
        <StorageRuleCodeListVersion>""</StorageRuleCodeListVersion>
        <AppraisalRuleCodeListVersion>""</AppraisalRuleCodeListVersion>
        <AccessRuleCodeListVersion>""</AccessRuleCodeListVersion>
        <DisseminationRuleCodeListVersion>""</DisseminationRuleCodeListVersion>
        <ReuseRuleCodeListVersion>""</ReuseRuleCodeListVersion>
        <ClassificationRuleCodeListVersion>""</ClassificationRuleCodeListVersion>
        <AuthorizationReasonCodeListVersion>""</AuthorizationReasonCodeListVersion>
        <RelationshipCodeListVersion>""</RelationshipCodeListVersion>
    </CodeListVersions>
    <DataObjectPackage>
        <BinaryDataObject id="res_letterbox_0_104">
            <Attachment filename="0030_1200000707.pdf">BASE64_DU_DOCUMENT</Attachment>
            <MessageDigest algorithm="sha256">d4ae804a0e20cd61d63a92056506fe40fe6d46ade73a5803c54cf5ebf024cc2896133f7314da49edcaab61f9c3049f74030d153b30566f9822f2722173105e95</MessageDigest>
            <Size>111108</Size>
            <FormatIdentification>
                <MimeType>application/pdf</MimeType>
            </FormatIdentification>
        </BinaryDataObject>
        <DescriptiveMetadata>
            <ArchiveUnit id="mail_1">
                <Content>
                    <DescriptionLevel>File</DescriptionLevel>
                    <Title>[CAPTUREM2M]Réponse à votre courrier du 27-06-2018</Title>
                    <OriginatingSystemId>104</OriginatingSystemId>
                    <Status>Nouveau courrier ou document non qualifié</Status>
                    <Writer>
                        <FirstName>Barbara</FirstName>
                        <BirthName>BAIN</BirthName>
                    </Writer>
                    <CreatedDate>2018-06-27</CreatedDate>
                </Content>
                <ArchiveUnit id="archiveUnit_res_letterbox_0_104">
                    <Content>
                        <DescriptionLevel>Item</DescriptionLevel>
                        <Title>sdfsddf</Title>
                        <OriginatingSystemId>104</OriginatingSystemId>
                        <Status>Nouveau courrier ou document non qualifié</Status>
                        <Writer>
                            <FirstName>Barbara</FirstName>
                            <BirthName>BAIN</BirthName>
                        </Writer>
                        <CreatedDate>2018-06-27</CreatedDate>
                    </Content>
                    <DataObjectReference>
                        <DataObjectReferenceId>res_letterbox_0_104</DataObjectReferenceId>
                    </DataObjectReference>
                </ArchiveUnit>
            </ArchiveUnit>
        </DescriptiveMetadata>
        <ManagementMetadata></ManagementMetadata>
    </DataObjectPackage>
    <ArchivalAgency>
        <Identifier>org_987654321_DGS_SF</Identifier>
        <OrganizationDescriptiveMetadata>
            <Name>Préfecture de Maarch Les Bains</Name>
            <Communication>
                <Channel>url</Channel>
                <CompleteNumber>https://cchaplin:maarch@demo.maarchcourrier.com/rest/saveNumericPackage</CompleteNumber>
            </Communication>
            <Contact>
                <PersonName>MARTIN Nicolas</PersonName>
                <Communication>
                    <Channel>phone</Channel>
                    <CompleteNumber></CompleteNumber>
                </Communication>
                <Communication>
                    <Channel>email</Channel>
                    <CompleteNumber>info@maarch.org</CompleteNumber>
                </Communication>
                <Address>
                    <CityName>MAARCH LES BAINS</CityName>
                    <Country>FRANCE</Country>
                    <PostOfficeBox>13</PostOfficeBox>
                    <StreetName>RUE LA PREFECTURE</StreetName>
                </Address>
            </Contact>
        </OrganizationDescriptiveMetadata>
    </ArchivalAgency>
    <TransferringAgency>
        <Identifier>org_987654321_DGS_SF</Identifier>
        <OrganizationDescriptiveMetadata>
            <LegalClassification>Ville de Maarch-les-bains</LegalClassification>
            <Name>Service Courrier</Name>
            <Communication>
                <Channel>url</Channel>
                <CompleteNumber>https://cchaplin:maarch@localhost/maarch_v2</CompleteNumber>
            </Communication>
            <Contact>
                <DepartmentName>Service Courrier</DepartmentName>
                <PersonName>Bernard BLIER</PersonName>
                <Communication>
                    <Channel>phone</Channel>
                </Communication>
                <Communication>
                    <Channel>email</Channel>
                    <CompleteNumber>florian.azizian@maarch.org</CompleteNumber>
                </Communication>
                <Address></Address>
            </Contact>
        </OrganizationDescriptiveMetadata>
    </TransferringAgency>
</ArchiveTransfer>

Envoi d'un pli numérique

Afin de pouvoir envoyer un pli numérique, un utilisateur doit faire parti d'un groupe qui a le privilège "Enregistrer un pli numérique".

L'envoi de pli numérique se fait dans la partie "Eléments envoyés" visible dans la fiche détaillée, ou la page de traitement. Cliquer ensuite sur le logo "Envoyer un pli numérique" afin d'accéder au formulaire d'envoi.

Creation Pli Numérique

  • Contact : Seuls les contacts ayant des moyens de communication apparaissent dans l'autocomplétion. Cette information peut être renseigné dans les champs "Moyen de communication/Valeur" de la fiche d'un contact. Le champ Identifiant contact externe de l'adresse du contact doit correspondre au numéro SIRET d'une entité dans l'instance destinatrice. Dans le cas contraire, une erreur s'affichera.
  • Fichiers joints : Sélectionner les éléments (Courrier, pièce jointe, note) que vous voulez intégrer dans le pli numérique. Le premier élément sera positionné en tant que document principal (celui qui s'affiche dans la partie droite sur la page de traitement dans Maarch Courrier)

Le pli numérique peut être transmis selon 3 méthodes. Cela dépend du moyen de communication de l'expéditeur et du destinataire.

Envoi par webservice

Aucun paramétrage à faire en plus. Les courriers, accusé de réception et suivi des demandes seront visibles en tant réel (sauf ralentissement réseau).

Envoi manuel

Si les 2 instances ne sont pas joignables, il est possible d'enregistrer le pli numérique et de le transférer au destinataire "manuellement".
Pour cela :

  • Enregistrer un pli numérique.
  • Cliquer sur le bouton "Télécharger" dans la liste des pli numérique.
  • Transmettre le pli numérique complet au destinataire (par messagerie instantanée, par clé usb, ...)
  • Le destinataire va importer le pli numérique via le menu "Enregistrer un pli numérique". Pour avoir accès à ce menu, il faut que l'un de ses groupes ait le privilège "Enregistrer un pli numérique".

Import Pli Numérique

Envoi par mail automatisé

Attention, avec cette méthode, la transmission des pli numérique, des accusés de réception et du suivi des demandes ne sont pas instantanés. Cela dépend de la fréquence d'exécution des scripts d'envoi de mail et de capture.

Pour utiliser cette méthode, il faut paramétrer Maarch Capture :

1) Copier le fichier [racine_Maarch_Capture]/config/samples/Capture_m2m_sample.xml.default vers [racine_Maarch_Capture]/config/Capture.xml. Et modifier les chemins des attributs maarchLogParam et directory en fonction de votre environnement.

2) Copier les 4 fichiers [racine_Maarch_Capture]modules/MailCapture/samples/MailCapture_M2M{_ACK, _NOTIFICATION, _REPLY}.xml.default vers [racine_Maarch_Capture]modules/MailCapture/MailCapture_M2M{_ACK, _NOTIFICATION, _REPLY}.xml.default

3) Copier le fichier [racine_Maarch_Capture]/modules/MaarchWSClient/samples/MaarchWSClient_m2m_sample.xml.default vers [racine_Maarch_Capture]/modules/MaarchWSClient/MaarchWSClient_m2m_sample.xml. Et modifier l'attribut uri en fonction de votre environnement.

4) Copier le script [racine_Maarch_Capture]/scripts/samples/linux/CAPTURE_M2M.sh.default en [racine_Maarch_Capture]/scripts/samples/linux/CAPTURE_M2M.sh

Il faut ensuite rendre ce script exécutable avec la commande "chmod +x", puis le lancer en tâche planifié.
Les logs de Maarch Capture sont visibles dans le fichier que vous avez indiqué dans l'attribut directory du fichier Capture.xml

De plus, il faut que l'envoi de mail soit correctement configuré dans votre application (Voir la documentation).

Liste des plis numérique envoyés

Après l'envoi d'un pli numérique, celui-ci est visible dans la liste des plis numériques.

Liste des Plis Numériques

Vous pouvez voir si le pli numérique a été reçu par le destinataire en vérifiant que la date de réception soit bien remplie.

  • De : Expéditeur du message
  • A : Destinataire du message
  • Reçu le : Date de réception du pli numérique par le destinataire. Reste vide tant que l'expéditeur n'a pas reçu le pli numérique. Cela indique que le pli numérique a bien été intégré dans la base de données du destinataire
  • Pris en charge : Date de prise en charge du pli numérique par le destinataire. Reste vide tant que le destinataire n'a pas fait d'action sur le pli numérique. Seule la date de la première action est visible.
  • Statut : Si le pli numérique n'a pas pu être envoyé, il est au statut "Non envoyé"

Suivi de la demande

Dans la liste des plis numérique envoyés, cliquer sur un pli numérique.

Le détail du pli numérique envoyé s'affiche.

Suivi Pli Numérique

Aussi, vous pouvez voir :

  • L'expéditeur, le destinataire, etc...
  • Les éléments envoyés dans le pli numérique
  • L'historique des actions : Chaque action de workflow réalisée sur le courrier (chez l'expéditeur) s'affichera ici. Seules les actions avec l'option "Tracer l'action" ajouteront une ligne dans cette partie (Paramétrage des actions ici).

Historique

Les actions sont enregistrées dans l'historique :

  • Pli numérique ajouté sur le document
  • Pli numérique importé

Focus : peut on communiquer avec une instance Maarch Courrier pour différents services destinataires ?

C'est tout à fait possible, grâce au contact que vous créez dans l'instance émettrice via le champ "Identifiant contact externe de l'adresse du contact" qui doit être de la forme SIRET/ENTITY_ID correspondant à une entité de l'instance destinatrice.

Ex : vous pouvez envoyer un pli numérique au service informatique de la ville de Maarch-les-Bains, si vous avez créé dans votre instance émettrice le contact "Service informatique de Maarch-les-Bains". Le contact "Service informatique de Maarch-les-Bains" doit avoir dans le champ "identifiant du contact externe" le numéro de SIRET de l'entité "service informatique" de Maarch-les-Bains.

Pour étayer cet exemple, imaginons que vous souhaitez envoyer deux plis numériques à la ville de Maarch-les-Bains. Un pour le service informatique, un autre pour le service comptabilité.

Le paramétrage et les étapes suivantes devront alors être validées :

Etape 0 : dans l'instance destinatrice, la ville de Maarch-les-Bains, il faut que j'ai les deux entités déclarées avec le champ numéro de SIRET unique. J'ai donc créé le service informatique (ou Direction des Systèmes d'Information) avec le num SIRET 45239273100025/DSI et le service comptabilité (Direction des Finances) avec le SIRET 45239273100025/FIN.

Etape 0

Etape 0

Etape 1 : je créé le contact "Service Informatique de Maarch-les-Bains" avec comme identifiant MAARCH2MAARCH "45239273100025/DSI", l'URL correspondante à l'instance de destination, les identifiants utilisateur et mot de passe de l'utilisateur Webservice

Etape 1

Etape 2 : je créé le contact "Service Comptabilité de Maarch-les-Bains" avec comme identifiant MAARCH2MAARCH "45239273100025/FIN", l'URL correspondante à l'instance de destination, les identifiants utilisateur et mot de passe de l'utilisateur Webservice

Etape 2

Etape 3 : une fois mon courrier enregistré (associé au contact "Service Informatique de Maarch-les-Bains") j'envoie le pli numérique au service informatique de la ville de Maarch-les-Bains

Etape 3

Etape 4 : une fois mon courrier enregistré (associé au contact "Service Comptabilité de Maarch-les-Bains") j'envoie le pli numérique au service comptabilité de la ville de Maarch-les-Bains

Etape 4

Chargement d'un jeu de contacts

Depuis le répertoire ./sql vous avez à votre disposition un fichier SQL vous permettant de vous aider à charger des contacts candidats au M2GEC. C'est un fichier exemple quand vous êtes en multi-instances. Cela vous permet de charger les contacts des autres instances de votre plateforme, vous permettant ainsi de faire des transferts de courriers entre vos instances.

./sql/m2m_contacts_samples.sql

Voici son contenu :

    --CREATE GROUP FOR M2GEC
    DELETE FROM usergroups WHERE group_id = 'MAARCHTOGEC';
    INSERT INTO usergroups (group_id,group_desc) VALUES ('MAARCHTOGEC', 'Envoi dématérialisé');
    DELETE FROM usergroups_services WHERE group_id = 'MAARCHTOGEC';
    INSERT INTO usergroups_services (group_id, service_id) VALUES ('MAARCHTOGEC', 'manage_numeric_package');

    --CREATE SECURITY FOR M2GEC
    DELETE FROM security WHERE group_id = 'MAARCHTOGEC';
    INSERT INTO security (group_id, coll_id, where_clause, maarch_comment) VALUES ('MAARCHTOGEC', 'letterbox_coll', '1=0', 'Aucun courrier');

    --CREATE A USER FOR M2GEC
    DELETE FROM users WHERE user_id = 'cchaplin';
    INSERT INTO users (user_id, password, firstname, lastname, mail, status, mode) VALUES ('cchaplin', '$2y$10$993vH6NihRnLIEN4FdlNu.ta.SRHH6984HfG/cmCMS.USyjXEpiQi', 'Jean', 'WEBSERVICE', 'dev.maarch@maarch.org', 'OK', 'rest');
    DELETE FROM usergroup_content WHERE user_id = 24;
    INSERT INTO usergroup_content (user_id, group_id, role) VALUES (24, 11, '');

    --CREATE CONTACTS FOR M2GEC
    DELETE FROM contacts where id >= 1000000;

    -- INSTANCE A
    INSERT INTO contacts VALUES (1000000, 1, 'Custom 1', 'Custom 1', 'Custom 1', NULL, NULL, '13', 'RUE LA PREFECTURE', NULL, NULL, '99000', 'MAARCH LES BAINS', NULL, NULL, NULL, '{"url": "http://127.0.0.1/MaarchCourrier/cs_custom_1/", login: "cchaplin", "password": "Gzb35N9t::248178e69ec75ced9b8be2dc1ff465bf"}', NULL, 21, '2018-04-18 12:43:54.97424', '2020-03-24 15:06:58.16582', true, NULL, '{"m2m": "org_custom_1"}');
    INSERT INTO contacts VALUES (1000001, 1, 'Custom 2', 'Custom 2', 'Custom 2', NULL, NULL, '13', 'RUE LA PREFECTURE', NULL, NULL, '99000', 'MAARCH LES BAINS', NULL, NULL, NULL, '{"url": "http://127.0.0.1/MaarchCourrier/cs_custom_2/", login: "cchaplin", "password": "Gzb35N9t::248178e69ec75ced9b8be2dc1ff465bf"}', NULL, 21, '2018-04-18 12:43:54.97424', '2020-03-24 15:06:58.16582', true, NULL, '{"m2m": "org_custom_2"}');
    INSERT INTO contacts VALUES (1000002, 1, 'Custom 3', 'Custom 3', 'Custom 3', NULL, NULL, '13', 'RUE LA PREFECTURE', NULL, NULL, '99000', 'MAARCH LES BAINS', NULL, NULL, NULL, '{"url": "http://127.0.0.1/MaarchCourrier/cs_custom_3/", login: "cchaplin", "password": "Gzb35N9t::248178e69ec75ced9b8be2dc1ff465bf"}', NULL, 21, '2018-04-18 12:43:54.97424', '2020-03-24 15:06:58.16582', true, NULL, '{"m2m": "org_custom_3"}');

    -- FOR EACH INSTANCE
    DO $$
    BEGIN
        IF (SELECT current_database() = 'custom_1') THEN
            UPDATE entities set business_id = 'org_custom_1';
        END IF;
    END $$;
    DO $$
    BEGIN
        IF (SELECT current_database() = 'custom_2') THEN
            UPDATE entities set business_id = 'org_custom_2';
        END IF;
    END $$;
    DO $$
    BEGIN
        IF (SELECT current_database() = 'custom_3') THEN
            UPDATE entities set business_id = 'org_custom_3';
        END IF;
    END $$;

results matching ""

    No results matching ""