From 5476b66310e670b12a5c123b9993ea1e6f344d3e Mon Sep 17 00:00:00 2001
From: Nicolas ROCHE <nroche@entrouvert.com>
Date: Thu, 13 Jun 2019 17:44:08 +0200
Subject: [PATCH] signal-publik: add a role to test signal-publik deployement
 locally (#33957)

---
 README.rst                                    |  35 +
 delete-signal-all-tenants.yml                 |  32 +
 delete-signal-tenants.yml                     |  28 +
 deploy-signal-tenants.yml                     |   8 +
 roles/deploy-signal-tenants/defaults/main.yml |   5 +
 roles/deploy-signal-tenants/tasks/main.yml    |  40 +
 .../templates/authentic.tpl                   | 675 ++++++++++++
 .../templates/cook-recipe.j2                  |  53 +
 .../templates/passerelle.tpl                  |  51 +
 .../templates/portal-agent.tpl                | 239 +++++
 .../templates/portal-user.tpl                 | 995 ++++++++++++++++++
 .../templates/publik.zip                      | Bin 0 -> 52436 bytes
 roles/deploy-signal-tenants/vars/main.yml     |   7 +
 13 files changed, 2168 insertions(+)
 create mode 100644 delete-signal-all-tenants.yml
 create mode 100644 delete-signal-tenants.yml
 create mode 100644 deploy-signal-tenants.yml
 create mode 100644 roles/deploy-signal-tenants/defaults/main.yml
 create mode 100644 roles/deploy-signal-tenants/tasks/main.yml
 create mode 100644 roles/deploy-signal-tenants/templates/authentic.tpl
 create mode 100644 roles/deploy-signal-tenants/templates/cook-recipe.j2
 create mode 100644 roles/deploy-signal-tenants/templates/passerelle.tpl
 create mode 100644 roles/deploy-signal-tenants/templates/portal-agent.tpl
 create mode 100644 roles/deploy-signal-tenants/templates/portal-user.tpl
 create mode 100644 roles/deploy-signal-tenants/templates/publik.zip
 create mode 100644 roles/deploy-signal-tenants/vars/main.yml

diff --git a/README.rst b/README.rst
index 22e8db2..82416c2 100644
--- a/README.rst
+++ b/README.rst
@@ -5,3 +5,38 @@ An bunch of Ansible playbooks that install and setup a multitenant publik instan
 
 A complete version of the documentation is maintained here:
 https://dev.entrouvert.org/projects/publik-devinst/wiki/Installation_d'un_environnement_de_développement_local
+
+---8<---
+Ci-dessous la procédure pour signal-publik seulement :
+
+Initialiser authentic (pour simuler du multi-publik) :
+* Créer un authentic (et le reste aussi mais on va le détruire) 
+$ ansible-playbook -i inventory.yml deploy-signal-tenants.yml -vvv
+
+* Créer un rôle 'Agent' via l'IHM :
+    https://signal-authentic.dev.publik.love/manage/roles
+  puis modifier son uuid via psql (pour que l'appairage fonctionne):
+$ psql
+> \c authentic_multitenant
+> set search_path="signal_authentic_dev_publik_love";
+> update a2_rbac_role set uuid = '45ac46653a94423fb2d60091bb826cbd' where name = 'Agent';
+
+A présent on peut rejouer autant de fois que voulu le déploiement :
+* Suppression de tout sauf de l'authentic
+$ ansible-playbook -i inventory.yml delete-signal-tenants.yml
+
+* Préparation de la recette et premier lancement du cook : 
+$ ansible-playbook -i inventory.yml deploy-signal-tenants.yml
+
+* modifier la description du rôle 'Agent' via l'IHM :
+    https://signal-authentic.dev.publik.love/manage/roles
+
+* Second lancement du cook :
+$ hobo-manage cook /tmp/cook-recipe-signal.json
+
+
+nb: en cas de problèmes de connexion, penser à relancer les serveurs :
+# supervisorctl restart all
+
+les logs de hobo-agent permettent de suivre le déploiement :
+# tail -f /var/log/hobo-agent/stderr.log 
diff --git a/delete-signal-all-tenants.yml b/delete-signal-all-tenants.yml
new file mode 100644
index 0000000..3dfa7d1
--- /dev/null
+++ b/delete-signal-all-tenants.yml
@@ -0,0 +1,32 @@
+---
+- name: delete all publik tenants
+  hosts: local
+  vars:
+    venv_bin: "{{venv}}/bin"
+  roles:
+    - facts
+
+  tasks:
+    - name: "delete hobo tenant"
+      command: "{{venv_bin}}/{{apps['hobo']['project_name']}}-manage delete_tenant signal-{{tenants_conf['dev-hobo']}}"
+      ignore_errors: yes
+
+    - name: "delete combo user tenant"
+      command: "{{venv_bin}}/{{apps['combo']['project_name']}}-manage delete_tenant signal-{{tenants_conf['user-combo']}}"
+      ignore_errors: yes
+
+    - name: "delete combo agent tenant"
+      command: "{{venv_bin}}/{{apps['combo']['project_name']}}-manage delete_tenant signal-{{tenants_conf['agent-combo']}}"
+      ignore_errors: yes
+
+    - name: "delete authentic tenant"
+      command: "{{venv_bin}}/{{apps['authentic']['project_name']}}-manage delete_tenant signal.{{tenants_conf['connexion-authentic']}}"
+      ignore_errors: yes
+
+    - name: "delete wcs tenant"
+      command: "{{venv_bin}}/wcsctl.py delete_tenant signal-{{tenants_conf['demarches-wcs']}}"
+      ignore_errors: yes
+
+    - name: "delete passerelle tenant"
+      command: "{{venv_bin}}/{{apps['passerelle']['project_name']}}-manage delete_tenant signal-{{tenants_conf['dev-passerelle']}}"
+      ignore_errors: yes
diff --git a/delete-signal-tenants.yml b/delete-signal-tenants.yml
new file mode 100644
index 0000000..c4bbc00
--- /dev/null
+++ b/delete-signal-tenants.yml
@@ -0,0 +1,28 @@
+---
+- name: delete all publik tenants
+  hosts: local
+  vars:
+    venv_bin: "{{venv}}/bin"
+  roles:
+    - facts
+
+  tasks:
+    - name: "delete hobo tenant"
+      command: "{{venv_bin}}/{{apps['hobo']['project_name']}}-manage delete_tenant signal-{{tenants_conf['dev-hobo']}}"
+      ignore_errors: yes
+
+    - name: "delete combo user tenant"
+      command: "{{venv_bin}}/{{apps['combo']['project_name']}}-manage delete_tenant signal-{{tenants_conf['user-combo']}}"
+      ignore_errors: yes
+
+    - name: "delete combo agent tenant"
+      command: "{{venv_bin}}/{{apps['combo']['project_name']}}-manage delete_tenant signal-{{tenants_conf['agent-combo']}}"
+      ignore_errors: yes
+
+    - name: "delete wcs tenant"
+      command: "{{venv_bin}}/wcsctl.py delete_tenant signal-{{tenants_conf['demarches-wcs']}}"
+      ignore_errors: yes
+
+    - name: "delete passerelle tenant"
+      command: "{{venv_bin}}/{{apps['passerelle']['project_name']}}-manage delete_tenant signal-{{tenants_conf['dev-passerelle']}}"
+      ignore_errors: yes
diff --git a/deploy-signal-tenants.yml b/deploy-signal-tenants.yml
new file mode 100644
index 0000000..d27ba73
--- /dev/null
+++ b/deploy-signal-tenants.yml
@@ -0,0 +1,8 @@
+---
+- name: deploy signal-publik tenants for local developement
+  hosts: local
+  roles:
+    - facts
+    - deploy-signal-tenants
+  vars:
+    venv_bin: "{{venv}}/bin"
diff --git a/roles/deploy-signal-tenants/defaults/main.yml b/roles/deploy-signal-tenants/defaults/main.yml
new file mode 100644
index 0000000..af149ab
--- /dev/null
+++ b/roles/deploy-signal-tenants/defaults/main.yml
@@ -0,0 +1,5 @@
+superuser_username: "admin"
+superuser_email: "admin@localhost"
+superuser_firstname: "admin"
+superuser_lastname: "admin"
+superuser_password: "admin"
diff --git a/roles/deploy-signal-tenants/tasks/main.yml b/roles/deploy-signal-tenants/tasks/main.yml
new file mode 100644
index 0000000..d86d54d
--- /dev/null
+++ b/roles/deploy-signal-tenants/tasks/main.yml
@@ -0,0 +1,40 @@
+- debug :
+    msg: |
+      "IF {{ tenants_conf['dev-hobo'] }} or any sub-domain from 'tenants_conf' DNS is not configured locally, this playbook will block and fail. Check the documentation."
+
+- name : copies a wcs skeleton archive
+  copy:
+    src: templates/publik.zip
+    dest:  "/var/lib/wcs/skeletons/{{wcs_skeleton_filename}}"
+
+- name : copies passerelle skeleton archive
+  copy:
+    src: templates/passerelle.tpl
+    dest:  "/var/lib/passerelle/skeletons/signal-publik.json"
+
+- name : copies portal-user skeleton archive
+  copy:
+    src: templates/portal-user.tpl
+    dest:  "/var/lib/combo/skeletons/signal-publik-portal-user.json"
+
+- name : copies portal-agent skeleton archive
+  copy:
+    src: templates/portal-agent.tpl
+    dest:  "/var/lib/combo/skeletons/signal-publik-portal-agent.json"
+
+- name : copies authentik skeleton archive
+  copy:
+    src: templates/authentic.tpl
+    dest:  "/var/lib/authentic-multitenant/skeletons/authentic.json"
+
+- name: copies a cook json template
+  template:
+    src: templates/cook-recipe.j2
+    dest: "{{wcs_dev_template_path}}"
+
+- name: Run command hobo-manage to initiate the development subdomains and a super-user
+  command: "{{venv_bin}}/hobo-manage cook {{wcs_dev_template_path}} --timeout=600"
+
+- debug :
+    msg: |
+      "Houra ! Go and click manage on this URL https://signal-{{tenants_conf['user-combo']}} with username = {{superuser_username}} and password = {{superuser_password}}"
diff --git a/roles/deploy-signal-tenants/templates/authentic.tpl b/roles/deploy-signal-tenants/templates/authentic.tpl
new file mode 100644
index 0000000..c7fdcf0
--- /dev/null
+++ b/roles/deploy-signal-tenants/templates/authentic.tpl
@@ -0,0 +1,675 @@
+{
+    "ous": [
+        {
+            "username_is_unique": false, 
+            "validate_emails": false, 
+            "uuid": "a8cc3f485d7642899272585cf39c503f", 
+            "default": true, 
+            "description": "", 
+            "email_is_unique": false, 
+            "slug": "default", 
+            "name": "Collectivit\u00e9 par d\u00e9faut"
+        }
+    ], 
+    "roles": [
+        {
+            "description": "", 
+            "service": {
+                "ou": {
+                    "slug": "default", 
+                    "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                    "name": "Collectivit\u00e9 par d\u00e9faut"
+                }, 
+                "slug": "hobo"
+            }, 
+            "name": "Administrateur de Hobo", 
+            "attributes": [
+                {
+                    "kind": "string", 
+                    "name": "is_superuser", 
+                    "value": "true"
+                }
+            ], 
+            "ou": {
+                "slug": "default", 
+                "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                "name": "Collectivit\u00e9 par d\u00e9faut"
+            }, 
+            "external_id": "", 
+            "slug": "_a2-hobo-superuser", 
+            "uuid": "efa47a8677ce466a9999c5b94e60953b"
+        }, 
+        {
+            "description": "", 
+            "service": {
+                "ou": {
+                    "slug": "default", 
+                    "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                    "name": "Collectivit\u00e9 par d\u00e9faut"
+                }, 
+                "slug": "portal"
+            }, 
+            "name": "Administrateur de Portail", 
+            "attributes": [
+                {
+                    "kind": "string", 
+                    "name": "is_superuser", 
+                    "value": "true"
+                }
+            ], 
+            "ou": {
+                "slug": "default", 
+                "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                "name": "Collectivit\u00e9 par d\u00e9faut"
+            }, 
+            "external_id": "", 
+            "slug": "_a2-hobo-superuser", 
+            "uuid": "df5804baabf243a7a150cf7d34221088"
+        }, 
+        {
+            "description": "", 
+            "service": {
+                "ou": {
+                    "slug": "default", 
+                    "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                    "name": "Collectivit\u00e9 par d\u00e9faut"
+                }, 
+                "slug": "portal-agent"
+            }, 
+            "name": "Administrateur de Portail Agent", 
+            "attributes": [
+                {
+                    "kind": "string", 
+                    "name": "is_superuser", 
+                    "value": "true"
+                }
+            ], 
+            "ou": {
+                "slug": "default", 
+                "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                "name": "Collectivit\u00e9 par d\u00e9faut"
+            }, 
+            "external_id": "", 
+            "slug": "_a2-hobo-superuser", 
+            "uuid": "0a316d673d9340b08847d549c0a24eda"
+        }, 
+        {
+            "description": "", 
+            "service": {
+                "ou": {
+                    "slug": "default", 
+                    "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                    "name": "Collectivit\u00e9 par d\u00e9faut"
+                }, 
+                "slug": "eservices"
+            }, 
+            "name": "Administrateur de D\u00e9marches", 
+            "attributes": [
+                {
+                    "kind": "string", 
+                    "name": "is_superuser", 
+                    "value": "true"
+                }
+            ], 
+            "ou": {
+                "slug": "default", 
+                "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                "name": "Collectivit\u00e9 par d\u00e9faut"
+            }, 
+            "external_id": "", 
+            "slug": "_a2-hobo-superuser", 
+            "uuid": "d6d2fbec36df4381b2bc8ce1e2be0839"
+        }, 
+        {
+            "description": "", 
+            "service": {
+                "ou": {
+                    "slug": "default", 
+                    "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                    "name": "Collectivit\u00e9 par d\u00e9faut"
+                }, 
+                "slug": "passerelle"
+            }, 
+            "name": "Administrateur de Passerelle", 
+            "attributes": [
+                {
+                    "kind": "string", 
+                    "name": "is_superuser", 
+                    "value": "true"
+                }
+            ], 
+            "ou": {
+                "slug": "default", 
+                "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                "name": "Collectivit\u00e9 par d\u00e9faut"
+            }, 
+            "external_id": "", 
+            "slug": "_a2-hobo-superuser", 
+            "uuid": "78f6288997614cd1ac0758eff85d6771"
+        }, 
+        {
+            "description": "", 
+            "service": {
+                "ou": {
+                    "slug": "default", 
+                    "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                    "name": "Collectivit\u00e9 par d\u00e9faut"
+                }, 
+                "slug": "statistics"
+            }, 
+            "name": "Administrateur de Statistiques", 
+            "attributes": [
+                {
+                    "kind": "string", 
+                    "name": "is_superuser", 
+                    "value": "true"
+                }
+            ], 
+            "ou": {
+                "slug": "default", 
+                "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                "name": "Collectivit\u00e9 par d\u00e9faut"
+            }, 
+            "external_id": "", 
+            "slug": "_a2-hobo-superuser", 
+            "uuid": "c49ae192ae4945058205a4bfedcf91ef"
+        }, 
+        {
+            "description": "", 
+            "service": null, 
+            "name": "Administrateur du r\u00f4le \u00ab\u00a0Administrateur fonctionnel\u00a0\u00bb", 
+            "ou": {
+                "slug": "default", 
+                "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                "name": "Collectivit\u00e9 par d\u00e9faut"
+            }, 
+            "permissions": [
+                {
+                    "operation": {
+                        "slug": "view"
+                    }, 
+                    "ou": null, 
+                    "target_ct": {
+                        "model": "contenttype", 
+                        "app_label": "contenttypes"
+                    }, 
+                    "target": {
+                        "model": "user", 
+                        "app_label": "custom_user"
+                    }
+                }, 
+                {
+                    "operation": {
+                        "slug": "admin"
+                    }, 
+                    "ou": {
+                        "slug": "default", 
+                        "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                        "name": "Collectivit\u00e9 par d\u00e9faut"
+                    }, 
+                    "target_ct": {
+                        "model": "role", 
+                        "app_label": "a2_rbac"
+                    }, 
+                    "target": {
+                        "name": "Administrateur fonctionnel", 
+                        "ou": {
+                            "slug": "default", 
+                            "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                            "name": "Collectivit\u00e9 par d\u00e9faut"
+                        }, 
+                        "uuid": "4d4294780a8648da9bc514b345853e84", 
+                        "service": null, 
+                        "slug": "administrateur-fonctionnel"
+                    }
+                }, 
+                {
+                    "operation": {
+                        "slug": "change"
+                    }, 
+                    "ou": null, 
+                    "target_ct": {
+                        "model": "role", 
+                        "app_label": "a2_rbac"
+                    }, 
+                    "target": {
+                        "name": "Administrateur du r\u00f4le \u00ab\u00a0Administrateur fonctionnel\u00a0\u00bb", 
+                        "ou": {
+                            "slug": "default", 
+                            "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                            "name": "Collectivit\u00e9 par d\u00e9faut"
+                        }, 
+                        "uuid": "16601f315cc24b318170a5d52a884dd6", 
+                        "service": null, 
+                        "slug": "_a2-managers-of-role-administrateur-fonctionnel"
+                    }
+                }
+            ], 
+            "external_id": "", 
+            "slug": "_a2-managers-of-role-administrateur-fonctionnel", 
+            "uuid": "16601f315cc24b318170a5d52a884dd6"
+        }, 
+        {
+            "description": "", 
+            "service": null, 
+            "name": "Administrateur du r\u00f4le \u00ab\u00a0Agent\u00a0\u00bb", 
+            "ou": {
+                "slug": "default", 
+                "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                "name": "Collectivit\u00e9 par d\u00e9faut"
+            }, 
+            "permissions": [
+                {
+                    "operation": {
+                        "slug": "view"
+                    }, 
+                    "ou": null, 
+                    "target_ct": {
+                        "model": "contenttype", 
+                        "app_label": "contenttypes"
+                    }, 
+                    "target": {
+                        "model": "user", 
+                        "app_label": "custom_user"
+                    }
+                }, 
+                {
+                    "operation": {
+                        "slug": "admin"
+                    }, 
+                    "ou": {
+                        "slug": "default", 
+                        "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                        "name": "Collectivit\u00e9 par d\u00e9faut"
+                    }, 
+                    "target_ct": {
+                        "model": "role", 
+                        "app_label": "a2_rbac"
+                    }, 
+                    "target": {
+                        "name": "Agent", 
+                        "ou": {
+                            "slug": "default", 
+                            "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                            "name": "Collectivit\u00e9 par d\u00e9faut"
+                        }, 
+                        "uuid": "45ac46653a94423fb2d60091bb826cbd", 
+                        "service": null, 
+                        "slug": "agent"
+                    }
+                }, 
+                {
+                    "operation": {
+                        "slug": "change"
+                    }, 
+                    "ou": null, 
+                    "target_ct": {
+                        "model": "role", 
+                        "app_label": "a2_rbac"
+                    }, 
+                    "target": {
+                        "name": "Administrateur du r\u00f4le \u00ab\u00a0Agent\u00a0\u00bb", 
+                        "ou": {
+                            "slug": "default", 
+                            "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                            "name": "Collectivit\u00e9 par d\u00e9faut"
+                        }, 
+                        "uuid": "c1d2bd9314794b92b90edac34a78d086", 
+                        "service": null, 
+                        "slug": "_a2-managers-of-role-agent"
+                    }
+                }
+            ], 
+            "external_id": "", 
+            "slug": "_a2-managers-of-role-agent", 
+            "uuid": "c1d2bd9314794b92b90edac34a78d086"
+        }, 
+        {
+            "description": "", 
+            "service": null, 
+            "name": "Administrateur du r\u00f4le \u00ab\u00a0Debug EO\u00a0\u00bb", 
+            "ou": {
+                "slug": "default", 
+                "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                "name": "Collectivit\u00e9 par d\u00e9faut"
+            }, 
+            "permissions": [
+                {
+                    "operation": {
+                        "slug": "view"
+                    }, 
+                    "ou": null, 
+                    "target_ct": {
+                        "model": "contenttype", 
+                        "app_label": "contenttypes"
+                    }, 
+                    "target": {
+                        "model": "user", 
+                        "app_label": "custom_user"
+                    }
+                }, 
+                {
+                    "operation": {
+                        "slug": "admin"
+                    }, 
+                    "ou": {
+                        "slug": "default", 
+                        "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                        "name": "Collectivit\u00e9 par d\u00e9faut"
+                    }, 
+                    "target_ct": {
+                        "model": "role", 
+                        "app_label": "a2_rbac"
+                    }, 
+                    "target": {
+                        "name": "Debug EO", 
+                        "ou": {
+                            "slug": "default", 
+                            "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                            "name": "Collectivit\u00e9 par d\u00e9faut"
+                        }, 
+                        "uuid": "427664f4dc4e48d4a5f848a17b9c0387", 
+                        "service": null, 
+                        "slug": "debug-eo"
+                    }
+                }, 
+                {
+                    "operation": {
+                        "slug": "change"
+                    }, 
+                    "ou": null, 
+                    "target_ct": {
+                        "model": "role", 
+                        "app_label": "a2_rbac"
+                    }, 
+                    "target": {
+                        "name": "Administrateur du r\u00f4le \u00ab\u00a0Debug EO\u00a0\u00bb", 
+                        "ou": {
+                            "slug": "default", 
+                            "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                            "name": "Collectivit\u00e9 par d\u00e9faut"
+                        }, 
+                        "uuid": "84a70d586064438da7ca0c466398baeb", 
+                        "service": null, 
+                        "slug": "_a2-managers-of-role-debug-eo"
+                    }
+                }
+            ], 
+            "external_id": "", 
+            "slug": "_a2-managers-of-role-debug-eo", 
+            "uuid": "84a70d586064438da7ca0c466398baeb"
+        }, 
+        {
+            "description": "", 
+            "service": null, 
+            "name": "Administrateur fonctionnel", 
+            "attributes": [
+                {
+                    "kind": "json", 
+                    "name": "emails", 
+                    "value": "[]"
+                }, 
+                {
+                    "kind": "json", 
+                    "name": "details", 
+                    "value": "\"\""
+                }, 
+                {
+                    "kind": "json", 
+                    "name": "emails_to_members", 
+                    "value": "true"
+                }
+            ], 
+            "ou": {
+                "slug": "default", 
+                "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                "name": "Collectivit\u00e9 par d\u00e9faut"
+            }, 
+            "external_id": "", 
+            "slug": "administrateur-fonctionnel", 
+            "uuid": "4d4294780a8648da9bc514b345853e84"
+        }, 
+        {
+            "description": "", 
+            "service": null, 
+            "name": "Agent", 
+            "attributes": [
+                {
+                    "kind": "json", 
+                    "name": "emails", 
+                    "value": "[]"
+                }, 
+                {
+                    "kind": "json", 
+                    "name": "details", 
+                    "value": "\"\""
+                }, 
+                {
+                    "kind": "json", 
+                    "name": "emails_to_members", 
+                    "value": "true"
+                }
+            ], 
+            "ou": {
+                "slug": "default", 
+                "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                "name": "Collectivit\u00e9 par d\u00e9faut"
+            }, 
+            "external_id": "", 
+            "slug": "agent", 
+            "uuid": "45ac46653a94423fb2d60091bb826cbd"
+        }, 
+        {
+            "description": "", 
+            "service": null, 
+            "name": "Debug EO", 
+            "attributes": [
+                {
+                    "kind": "json", 
+                    "name": "emails", 
+                    "value": "[]"
+                }, 
+                {
+                    "kind": "json", 
+                    "name": "details", 
+                    "value": "\"\""
+                }, 
+                {
+                    "kind": "json", 
+                    "name": "emails_to_members", 
+                    "value": "true"
+                }
+            ], 
+            "ou": {
+                "slug": "default", 
+                "uuid": "a8cc3f485d7642899272585cf39c503f", 
+                "name": "Collectivit\u00e9 par d\u00e9faut"
+            }, 
+            "external_id": "", 
+            "slug": "debug-eo", 
+            "uuid": "427664f4dc4e48d4a5f848a17b9c0387"
+        }, 
+        {
+            "description": "", 
+            "service": null, 
+            "name": "Administrateur", 
+            "parents": [
+                {
+                    "name": "Administrateur des utilisateurs", 
+                    "ou": null, 
+                    "uuid": "2e87dc99707f40a3a7290914fc1824c8", 
+                    "service": null, 
+                    "slug": "_a2-administrateur-des-utilisateurs"
+                }, 
+                {
+                    "name": "Administrateur des r\u00f4les", 
+                    "ou": null, 
+                    "uuid": "5bb6482e46a143cb981848e1ba3388af", 
+                    "service": null, 
+                    "slug": "_a2-administrateur-des-roles"
+                }, 
+                {
+                    "name": "Administrateur des entit\u00e9s", 
+                    "ou": null, 
+                    "uuid": "fe85dbb1977448c19e5a30a7f712aa7b", 
+                    "service": null, 
+                    "slug": "_a2-administrateur-des-entites"
+                }
+            ], 
+            "ou": null, 
+            "permissions": [
+                {
+                    "operation": {
+                        "slug": "change"
+                    }, 
+                    "ou": null, 
+                    "target_ct": {
+                        "model": "role", 
+                        "app_label": "a2_rbac"
+                    }, 
+                    "target": {
+                        "name": "Administrateur", 
+                        "ou": null, 
+                        "uuid": "a583791a39674692ac19a256f0d54696", 
+                        "service": null, 
+                        "slug": "_a2-manager"
+                    }
+                }
+            ], 
+            "external_id": "", 
+            "slug": "_a2-manager", 
+            "uuid": "a583791a39674692ac19a256f0d54696"
+        }, 
+        {
+            "description": "", 
+            "service": null, 
+            "name": "Administrateur des entit\u00e9s", 
+            "ou": null, 
+            "permissions": [
+                {
+                    "operation": {
+                        "slug": "search"
+                    }, 
+                    "ou": null, 
+                    "target_ct": {
+                        "model": "contenttype", 
+                        "app_label": "contenttypes"
+                    }, 
+                    "target": {
+                        "model": "organizationalunit", 
+                        "app_label": "a2_rbac"
+                    }
+                }, 
+                {
+                    "operation": {
+                        "slug": "admin"
+                    }, 
+                    "ou": null, 
+                    "target_ct": {
+                        "model": "contenttype", 
+                        "app_label": "contenttypes"
+                    }, 
+                    "target": {
+                        "model": "organizationalunit", 
+                        "app_label": "a2_rbac"
+                    }
+                }
+            ], 
+            "external_id": "", 
+            "slug": "_a2-administrateur-des-entites", 
+            "uuid": "fe85dbb1977448c19e5a30a7f712aa7b"
+        }, 
+        {
+            "description": "", 
+            "service": null, 
+            "name": "Administrateur des r\u00f4les", 
+            "ou": null, 
+            "permissions": [
+                {
+                    "operation": {
+                        "slug": "view"
+                    }, 
+                    "ou": null, 
+                    "target_ct": {
+                        "model": "contenttype", 
+                        "app_label": "contenttypes"
+                    }, 
+                    "target": {
+                        "model": "user", 
+                        "app_label": "custom_user"
+                    }
+                }, 
+                {
+                    "operation": {
+                        "slug": "search"
+                    }, 
+                    "ou": null, 
+                    "target_ct": {
+                        "model": "contenttype", 
+                        "app_label": "contenttypes"
+                    }, 
+                    "target": {
+                        "model": "organizationalunit", 
+                        "app_label": "a2_rbac"
+                    }
+                }, 
+                {
+                    "operation": {
+                        "slug": "admin"
+                    }, 
+                    "ou": null, 
+                    "target_ct": {
+                        "model": "contenttype", 
+                        "app_label": "contenttypes"
+                    }, 
+                    "target": {
+                        "model": "role", 
+                        "app_label": "a2_rbac"
+                    }
+                }
+            ], 
+            "external_id": "", 
+            "slug": "_a2-administrateur-des-roles", 
+            "uuid": "5bb6482e46a143cb981848e1ba3388af"
+        }, 
+        {
+            "description": "", 
+            "service": null, 
+            "name": "Administrateur des utilisateurs", 
+            "ou": null, 
+            "permissions": [
+                {
+                    "operation": {
+                        "slug": "search"
+                    }, 
+                    "ou": null, 
+                    "target_ct": {
+                        "model": "contenttype", 
+                        "app_label": "contenttypes"
+                    }, 
+                    "target": {
+                        "model": "organizationalunit", 
+                        "app_label": "a2_rbac"
+                    }
+                }, 
+                {
+                    "operation": {
+                        "slug": "admin"
+                    }, 
+                    "ou": null, 
+                    "target_ct": {
+                        "model": "contenttype", 
+                        "app_label": "contenttypes"
+                    }, 
+                    "target": {
+                        "model": "user", 
+                        "app_label": "custom_user"
+                    }
+                }
+            ], 
+            "external_id": "", 
+            "slug": "_a2-administrateur-des-utilisateurs", 
+            "uuid": "2e87dc99707f40a3a7290914fc1824c8"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/roles/deploy-signal-tenants/templates/cook-recipe.j2 b/roles/deploy-signal-tenants/templates/cook-recipe.j2
new file mode 100644
index 0000000..7870443
--- /dev/null
+++ b/roles/deploy-signal-tenants/templates/cook-recipe.j2
@@ -0,0 +1,53 @@
+{
+  "steps": [
+    {"create-hobo": {
+      "url": "https://signal-{{tenants_conf['dev-hobo']}}/"
+    }},
+    {"create-superuser": {
+      "username": "{{superuser_username}}",
+      "first_name": "{{superuser_firstname}}",
+      "last_name": "{{superuser_lastname}}",
+      "email": "{{superuser_email}}",
+      "password": "{{superuser_password}}"
+    }},
+    {"create-authentic": {
+      "url": "https://signal-{{tenants_conf['connexion-authentic']}}/",
+	"title": "Connexion"
+    }},
+    {"set-idp": {
+    }},
+    {"create-combo": {
+        "url": "https://signal-{{tenants_conf['user-combo']}}/",
+        "title": "Portail",
+        "template_name": "signal-publik-portal-user"
+    }},
+    {"create-combo": {
+        "url": "https://signal-{{tenants_conf['agent-combo']}}/",
+        "title": "Portail Agent",
+        "slug": "portal-agent",
+        "template_name": "signal-publik-portal-agent"
+    }},
+    {"create-wcs": {
+        "url": "https://signal-{{tenants_conf['demarches-wcs']}}/",
+        "template_name": "{{wcs_skeleton_filename}}",
+        "title": "Démarches"
+    }},
+    {"create-passerelle": {
+        "url": "https://signal-{{tenants_conf['dev-passerelle']}}/",
+	"template_name": "signal-publik",
+        "title": "Passerelle"
+    }},
+    {"create-bijoe": {
+        "url": "https://signal-{{tenants_conf['dev-bijoe']}}/",
+        "title": "Statistiques"
+    }},
+    {"set-theme": {
+      "theme": "clapotis-les-canards"
+    }},
+    {"set-variable": {
+	"name": "collectivite",
+	"value": "Paris 14",
+	"label": "Collectivite"
+    }}
+  ]
+}
diff --git a/roles/deploy-signal-tenants/templates/passerelle.tpl b/roles/deploy-signal-tenants/templates/passerelle.tpl
new file mode 100644
index 0000000..537fe78
--- /dev/null
+++ b/roles/deploy-signal-tenants/templates/passerelle.tpl
@@ -0,0 +1,51 @@
+{
+    "apiusers": [
+        {
+            "username": "*", 
+            "description": "", 
+            "keytype": "", 
+            "key": "", 
+            "fullname": "*", 
+            "ipsource": null, 
+            "@type": "passerelle-user"
+        }
+    ], 
+    "resources": [
+        {
+            "log_level": "INFO", 
+            "description": "ban", 
+            "title": "ban", 
+            "zipcode": "", 
+            "access_rights": [], 
+            "@type": "passerelle-resource", 
+            "service_url": "https://api-adresse.data.gouv.fr/", 
+            "slug": "ban", 
+            "resource_type": "base_adresse.baseadresse"
+        }, 
+        {
+            "log_level": "INFO", 
+            "description": "", 
+            "title": "Foo", 
+            "access_rights": [], 
+            "@type": "passerelle-resource", 
+            "text_value_template": "", 
+            "slug": "foo", 
+            "resource_type": "jsondatastore.jsondatastore"
+        }, 
+        {
+            "log_level": "INFO", 
+            "description": ".", 
+            "title": "Bar", 
+            "access_rights": [
+                {
+                    "codename": "can_access", 
+                    "apiuser": "*"
+                }
+            ], 
+            "@type": "passerelle-resource", 
+            "text_value_template": "{{nom|safe}}", 
+            "slug": "bar", 
+            "resource_type": "jsondatastore.jsondatastore"
+        }
+    ]
+}
diff --git a/roles/deploy-signal-tenants/templates/portal-agent.tpl b/roles/deploy-signal-tenants/templates/portal-agent.tpl
new file mode 100644
index 0000000..77d1beb
--- /dev/null
+++ b/roles/deploy-signal-tenants/templates/portal-agent.tpl
@@ -0,0 +1,239 @@
+{
+  "pwa": {
+    "navigation": [], 
+    "settings": {}
+  }, 
+  "map-layers": [], 
+  "pages": [
+    {
+      "fields": {
+        "sub_slug": "", 
+        "picture": "", 
+        "description": "", 
+        "parent": null, 
+        "title": "Accueil", 
+        "last_update_timestamp": "2019-01-14T15:51:40.870Z", 
+        "template_name": "standard-sidebar", 
+        "order": 1, 
+        "public": false, 
+        "snapshot": null, 
+        "redirect_url": "", 
+        "groups": [
+          "Agent"
+        ], 
+        "slug": "index", 
+        "exclude_from_navigation": false
+      }, 
+      "cells": [
+        {
+          "model": "data.textcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-14T16:00:40.383Z", 
+            "text": "<h1>Portail agent</h1>", 
+            "slug": "", 
+            "groups": [], 
+            "order": 0, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "search.searchcell", 
+          "fields": {
+            "extra_css_class": "grid-1-2", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-14T16:01:14.193Z", 
+            "slug": "", 
+            "_search_services": {
+              "data": [
+                "users", 
+                "tracking-code", 
+                "_text", 
+                "formdata:dd83e3ba"
+              ]
+            }, 
+            "groups": [], 
+            "order": 1, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.backofficesubmissioncell", 
+          "fields": {
+            "extra_css_class": "newline grid-1-2", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-14T15:51:40.162Z", 
+            "wcs_site": "eservices", 
+            "slug": "", 
+            "groups": [], 
+            "order": 2, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.textcell", 
+          "fields": {
+            "extra_css_class": "grid-1-2", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-14T15:51:40.293Z", 
+            "text": "<h2>Services</h2>\r\n", 
+            "slug": "services", 
+            "groups": [], 
+            "order": 3, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.textcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-14T15:51:40.513Z", 
+            "text": "<p><strong>Bienvenue sur le portail des agents.</strong></p>\r\n", 
+            "slug": "", 
+            "groups": [], 
+            "order": 5, 
+            "placeholder": "sidebar", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.textcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-15T06:57:17.114Z", 
+            "text": "<h2>Informations</h2>\r\n\r\n<p><a href=\"https://portail-agent.signalpublik.com/management/listing\">Vue globale</a></p>\r\n\r\n<p><a href=\"https://doc-publik.entrouvert.com/\">Documentation de Publik</a></p>\r\n\r\n<p><a href=\"https://portail-citoyen.signalpublik.com\">Portail usager (FO)</a></p>\r\n\r\n<p>&nbsp;</p>", 
+            "slug": "", 
+            "groups": [], 
+            "order": 6, 
+            "placeholder": "sidebar", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.parentcontentcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-14T15:51:40.728Z", 
+            "slug": "", 
+            "groups": [], 
+            "order": 7, 
+            "placeholder": "footer", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "dataviz.gauge", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "data_source": "https://demarches.signalpublik.com/backoffice/management/count?waiting=yes", 
+            "title": "Demandes \u00e0 traiter", 
+            "last_update_timestamp": "2019-01-15T06:57:16.218Z", 
+            "max_value": 50, 
+            "jsonp_data_source": true, 
+            "slug": "", 
+            "url": "https://demarches.signalpublik.com/backoffice/management/listing", 
+            "groups": [], 
+            "order": 7, 
+            "placeholder": "sidebar", 
+            "public": true
+          }
+        }
+      ]
+    }, 
+    {
+      "fields": {
+        "sub_slug": "(?P<name_id>[a-z0-9]+)", 
+        "picture": "", 
+        "description": "", 
+        "parent": null, 
+        "title": "Fiche usager", 
+        "last_update_timestamp": "2019-01-15T06:58:38.181Z", 
+        "template_name": "two-columns", 
+        "order": 2, 
+        "public": false, 
+        "snapshot": null, 
+        "redirect_url": "", 
+        "groups": [
+          "Agent"
+        ], 
+        "slug": "fiche-usager", 
+        "exclude_from_navigation": false
+      }, 
+      "cells": [
+        {
+          "model": "profile.profilecell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-14T15:51:41.023Z", 
+            "slug": "", 
+            "groups": [], 
+            "order": 1, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.backofficesubmissioncell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-14T15:51:41.137Z", 
+            "wcs_site": "", 
+            "slug": "", 
+            "groups": [], 
+            "order": 2, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcscurrentformscell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "groups": [], 
+            "current_forms": true, 
+            "last_update_timestamp": "2019-01-14T15:51:41.277Z", 
+            "wcs_site": "", 
+            "slug": "", 
+            "done_forms": false, 
+            "order": 3, 
+            "placeholder": "right", 
+            "public": true, 
+            "categories": {}
+          }
+        }, 
+        {
+          "model": "wcs.wcscurrentformscell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "groups": [], 
+            "current_forms": false, 
+            "last_update_timestamp": "2019-01-14T15:51:41.564Z", 
+            "wcs_site": "", 
+            "slug": "", 
+            "done_forms": true, 
+            "order": 5, 
+            "placeholder": "right", 
+            "public": true, 
+            "categories": {
+              "data": []
+            }
+          }
+        }
+      ]
+    }
+  ], 
+  "assets": []
+}
\ No newline at end of file
diff --git a/roles/deploy-signal-tenants/templates/portal-user.tpl b/roles/deploy-signal-tenants/templates/portal-user.tpl
new file mode 100644
index 0000000..332d624
--- /dev/null
+++ b/roles/deploy-signal-tenants/templates/portal-user.tpl
@@ -0,0 +1,995 @@
+{
+  "pwa": {
+    "navigation": [], 
+    "settings": {}
+  }, 
+  "map-layers": [
+    {
+      "fields": {
+        "icon_colour": "#000000", 
+        "properties": "residence,prestataire,adresse", 
+        "geojson_url": "https://data.toulouse-metropole.fr/api/records/1.0/search/?dataset=points_apport_volontaire_dmt&refine.flux=OM&format=geojson", 
+        "label": "Ordures M\u00e9nageres", 
+        "cache_duration": 60, 
+        "marker_colour": "#28d747", 
+        "include_user_identifier": true, 
+        "slug": "ordures-menageres", 
+        "icon": "trash"
+      }
+    }, 
+    {
+      "fields": {
+        "icon_colour": "#000000", 
+        "properties": "categorie_signalement,souscategorie_signalement", 
+        "geojson_url": "https://demarches-montoulouse.cutm-publik-preprod.nfrance.com/api/forms/signalement-domaine-public/geojson?full=on&email=vclaudet@entrouvert.org", 
+        "label": "signalements", 
+        "cache_duration": 60, 
+        "marker_colour": "#1323ec", 
+        "include_user_identifier": false, 
+        "slug": "signalements", 
+        "icon": "warning"
+      }
+    }, 
+    {
+      "fields": {
+        "icon_colour": "#000000", 
+        "properties": "", 
+        "geojson_url": "https://download.data.grandlyon.com/wfs/rdata?SERVICE=WFS&VERSION=2.0.0&outputformat=GEOJSON&maxfeatures=30&request=GetFeature&typename=jcd_jcdecaux.jcdvelov&SRSNAME=urn:ogc:def:crs:EPSG::4171", 
+        "label": "velov", 
+        "cache_duration": 60, 
+        "marker_colour": "#ff00fe", 
+        "include_user_identifier": true, 
+        "slug": "velov", 
+        "icon": "bicycle"
+      }
+    }
+  ], 
+  "pages": [
+    {
+      "fields": {
+        "sub_slug": "", 
+        "picture": "", 
+        "description": "", 
+        "parent": null, 
+        "title": "Accueil", 
+        "last_update_timestamp": "2019-01-15T07:43:05.116Z", 
+        "template_name": "standard", 
+        "order": 1, 
+        "public": true, 
+        "snapshot": null, 
+        "redirect_url": "", 
+        "groups": [], 
+        "slug": "index", 
+        "exclude_from_navigation": false
+      }, 
+      "cells": [
+        {
+          "model": "wcs.trackingcodeinputcell", 
+          "fields": {
+            "extra_css_class": "grid-1-3", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-15T07:43:16.865Z", 
+            "wcs_site": "", 
+            "slug": "", 
+            "groups": [], 
+            "order": 0, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.textcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-14T16:01:39.716Z", 
+            "text": "<h1>Vos services <span style=\"color: #de3559\">en ligne</span></h1>\r\n\r\n<h2>Avec la mairie de Toulouse</h2>\r\n\r\n<p>Lorem ipsum dolor sit amet, vim oportere salutatus vulputate et, lorem equidem vis in, at mea facer possit. At homero consequuntur sea, idque virtute ei pri. Ad homero graeco meliore eos, decore inimicus in pri. Torquatos referrentur ad eos, no choro sanctus eum. Dicat facilisi reprimique at mel. Legere vituperatoribus ex per, vidisse delectus vituperata no pro.</p>", 
+            "slug": "vos-services-en-ligne", 
+            "groups": [], 
+            "order": 0, 
+            "placeholder": "intro", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.textcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": true, 
+            "last_update_timestamp": "2019-01-14T16:01:39.832Z", 
+            "text": "<h3>Pas encore inscrit\u202f?</h3>\r\n\r\n<p>Effectuez vos d&eacute;marches et suivez leur traitement.</p>\r\n\r\n<p><a href=\"/register\" id=\"creer-mon-compte\">Cr&eacute;er mon compte maintenant</a></p>\r\n\r\n<p>D&eacute;j&agrave; inscrit\u202f? <a href=\"/login/\">Se connecter</a></p>", 
+            "slug": "encart-inscription", 
+            "groups": [], 
+            "order": 1, 
+            "placeholder": "intro", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.textcell", 
+          "fields": {
+            "extra_css_class": "grid-2-3", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-15T07:42:19.536Z", 
+            "text": "<h1>Bienvenue sur le site de signalement de {{collectivite}}</h1>\r\n\r\n<p>Pour signaler un probl&egrave;me, vous pouvez choisir pami les cat&eacute;gories propos&eacute;es.</p>", 
+            "slug": "", 
+            "groups": [], 
+            "order": 1, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcsformcell", 
+          "fields": {
+            "extra_css_class": "newline grid-1-3", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-06-04T12:18:07.492Z", 
+            "formdef_reference": "eservices:arbres-espaces-verts-aires-de-jeux", 
+            "slug": "tile", 
+            "groups": [], 
+            "order": 2, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.textcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-14T16:01:39.957Z", 
+            "text": "<h3>Vous &ecirc;tes connect&eacute;\u202f!</h3>\r\n\r\n<p>Effectuez vos d&eacute;marches ci-dessous en toute simplicit&eacute;.</p>\r\n\r\n<p><a href=\"/tableau-de-bord/\" id=\"creer-mon-compte\">Suivre mes demandes</a></p>\r\n\r\n<p><a href=\"/logout/\">Se d&eacute;connecter</a></p>\r\n", 
+            "slug": "encart-inscription", 
+            "groups": [], 
+            "order": 2, 
+            "placeholder": "intro", 
+            "public": false
+          }
+        }, 
+        {
+          "model": "wcs.wcsformsofcategorycell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "manual_order": {
+              "data": [
+                "eservices:etat-civil:carte-nationale-d-identite-cni-ou-passeport-prise-de-rendez-vous", 
+                "eservices:etat-civil:demande-d-acte-de-mariage", 
+                "eservices:etat-civil:demande-d-acte-de-naissance", 
+                "eservices:etat-civil:demande-d-acte-de-deces", 
+                "eservices:etat-civil:demande-d-acte-de-reconnaissance", 
+                "eservices:etat-civil:demande-de-composteur-en-pied-d-immeuble", 
+                "eservices:etat-civil:demande-de-composteur-en-structures-educatives", 
+                "eservices:etat-civil:inscription-listes-electorales"
+              ]
+            }, 
+            "last_update_timestamp": "2019-06-04T12:18:07.593Z", 
+            "category_reference": "eservices:etat-civil", 
+            "slug": "", 
+            "ordering": "manual", 
+            "limit": null, 
+            "groups": [], 
+            "order": 3, 
+            "placeholder": "particuliers", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.textcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-15T07:51:13.351Z", 
+            "text": "<p style=\"text-align: center;\">&nbsp;</p>\r\n\r\n<p style=\"text-align: center;\">SIGNAL PUBLIK</p>\r\n\r\n<p style=\"text-align: center;\">Service fourni par Entr&#39;ouvert</p>\r\n\r\n<p style=\"text-align: center;\"><a href=\"https://matrice.signalpublik.com/mentions-legales/\">Mentions l&eacute;gales</a> - <a href=\"https://matrice.signalpublik.com/conditions-generales-dutilisation/\">Conditions g&eacute;n&eacute;rales d&#39;utilisation</a></p>", 
+            "slug": "", 
+            "groups": [], 
+            "order": 3, 
+            "placeholder": "footer", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcsformsofcategorycell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "manual_order": {
+              "data": []
+            }, 
+            "last_update_timestamp": "2019-06-04T12:18:07.645Z", 
+            "category_reference": "eservices:prestations-periscolaires", 
+            "slug": "", 
+            "ordering": "manual", 
+            "limit": null, 
+            "groups": [], 
+            "order": 4, 
+            "placeholder": "particuliers", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcsformsofcategorycell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "manual_order": {
+              "data": [
+                "eservices:environnement-proprete:IWS-enlevement-dechets-verts", 
+                "eservices:environnement-proprete:demande-encombrants-IWS", 
+                "eservices:environnement-proprete:signalement-domaine-public", 
+                "eservices:environnement-proprete:demande-de-composteur-en-pied-d-immeuble", 
+                "eservices:environnement-proprete:demande-de-composteur-en-structures-educatives"
+              ]
+            }, 
+            "last_update_timestamp": "2019-06-04T12:18:07.695Z", 
+            "category_reference": "eservices:environnement-proprete", 
+            "slug": "", 
+            "ordering": "manual", 
+            "limit": null, 
+            "groups": [], 
+            "order": 5, 
+            "placeholder": "particuliers", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcsformsofcategorycell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "manual_order": {
+              "data": []
+            }, 
+            "last_update_timestamp": "2019-06-04T12:18:07.751Z", 
+            "category_reference": "eservices:stationnement", 
+            "slug": "", 
+            "ordering": "alpha", 
+            "limit": null, 
+            "groups": [], 
+            "order": 6, 
+            "placeholder": "particuliers", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcsformsofcategorycell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "manual_order": {
+              "data": []
+            }, 
+            "last_update_timestamp": "2019-06-04T12:18:07.801Z", 
+            "category_reference": "eservices:risques-majeurs", 
+            "slug": "", 
+            "ordering": "alpha", 
+            "limit": null, 
+            "groups": [], 
+            "order": 7, 
+            "placeholder": "particuliers", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcsformsofcategorycell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "manual_order": {
+              "data": []
+            }, 
+            "last_update_timestamp": "2019-06-04T12:18:07.849Z", 
+            "category_reference": "eservices:enseignement", 
+            "slug": "", 
+            "ordering": "alpha", 
+            "limit": null, 
+            "groups": [], 
+            "order": 8, 
+            "placeholder": "particuliers", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcsformsofcategorycell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "manual_order": {
+              "data": []
+            }, 
+            "last_update_timestamp": "2019-06-04T12:18:07.898Z", 
+            "category_reference": "eservices:loisirs", 
+            "slug": "", 
+            "ordering": "alpha", 
+            "limit": null, 
+            "groups": [], 
+            "order": 9, 
+            "placeholder": "particuliers", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcsformsofcategorycell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "manual_order": {
+              "data": [
+                "eservices:polices-speciale-et-voirie:dpark-demande-abonnement-copie", 
+                "eservices:polices-speciale-et-voirie:declaration-d-abonnement-resident", 
+                "eservices:polices-speciale-et-voirie:dpark-renouvellement-abonnement", 
+                "eservices:polices-speciale-et-voirie:dpark-ne-plus-suivre-mon-dossier-en-ligne-desappairage", 
+                "eservices:polices-speciale-et-voirie:demande-d-acces-a-la-zone-reservee-du-centre-ville-des-allees-jules-guesde-paul-feuga", 
+                "eservices:polices-speciale-et-voirie:inscription-appels-en-masse"
+              ]
+            }, 
+            "last_update_timestamp": "2019-06-04T12:18:07.951Z", 
+            "category_reference": "eservices:polices-speciale-et-voirie", 
+            "slug": "", 
+            "ordering": "manual", 
+            "limit": null, 
+            "groups": [], 
+            "order": 10, 
+            "placeholder": "particuliers", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.linkcell", 
+          "fields": {
+            "extra_css_class": "wcsformcell", 
+            "restricted_to_unlogged": false, 
+            "link_page": null, 
+            "title": "Demande de subvention", 
+            "last_update_timestamp": "2019-01-14T16:01:41.160Z", 
+            "slug": "", 
+            "url": "https://montoulouse.fr/demarche/sfjsp?interviewID=eSubvention", 
+            "groups": [], 
+            "anchor": "", 
+            "order": 11, 
+            "placeholder": "associations", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.linkcell", 
+          "fields": {
+            "extra_css_class": "wcsformcell", 
+            "restricted_to_unlogged": false, 
+            "link_page": null, 
+            "title": "Demande de r\u00e9servation de salle", 
+            "last_update_timestamp": "2019-01-14T16:01:41.279Z", 
+            "slug": "", 
+            "url": "https://montoulouse.fr/demarche/sfjsp?interviewID=ReservationSalle", 
+            "groups": [], 
+            "anchor": "", 
+            "order": 12, 
+            "placeholder": "associations", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.linkcell", 
+          "fields": {
+            "extra_css_class": "wcsformcell", 
+            "restricted_to_unlogged": false, 
+            "link_page": null, 
+            "title": "March\u00e9s publics", 
+            "last_update_timestamp": "2019-01-14T16:01:41.404Z", 
+            "slug": "", 
+            "url": "https://www.marchespublics.toulouse-metropole.fr", 
+            "groups": [], 
+            "anchor": "", 
+            "order": 13, 
+            "placeholder": "professionnels", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.linkcell", 
+          "fields": {
+            "extra_css_class": "wcsformcell", 
+            "restricted_to_unlogged": false, 
+            "link_page": null, 
+            "title": "Appels \u00e0 projets", 
+            "last_update_timestamp": "2019-01-14T16:01:41.511Z", 
+            "slug": "", 
+            "url": "https://www.toulouse.fr/web/entreprises-partenaires/appels-a-projets", 
+            "groups": [], 
+            "anchor": "", 
+            "order": 14, 
+            "placeholder": "professionnels", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.linkcell", 
+          "fields": {
+            "extra_css_class": "wcsformcell", 
+            "restricted_to_unlogged": false, 
+            "link_page": null, 
+            "title": "Occupation du domaine public", 
+            "last_update_timestamp": "2019-01-14T16:01:41.609Z", 
+            "slug": "", 
+            "url": "https://www.toulouse.fr/web/demarches/occupation-du-domaine-public", 
+            "groups": [], 
+            "anchor": "", 
+            "order": 15, 
+            "placeholder": "professionnels", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcsformcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-06-04T12:18:08.001Z", 
+            "formdef_reference": "eservices:demande-d-acces-a-la-zone-reservee-du-centre-ville-des-allees-jules-guesde-paul-feuga", 
+            "slug": "", 
+            "groups": [], 
+            "order": 20, 
+            "placeholder": "professionnels", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcsformsofcategorycell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "manual_order": {
+              "data": []
+            }, 
+            "last_update_timestamp": "2019-06-04T12:18:08.050Z", 
+            "category_reference": "eservices:proprietaires", 
+            "slug": "", 
+            "ordering": "alpha", 
+            "limit": null, 
+            "groups": [], 
+            "order": 21, 
+            "placeholder": "particuliers", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.linkcell", 
+          "fields": {
+            "extra_css_class": "wcsformcell", 
+            "restricted_to_unlogged": false, 
+            "link_page": null, 
+            "title": "Taxe de s\u00e9jour", 
+            "last_update_timestamp": "2019-01-14T16:01:42.537Z", 
+            "slug": "", 
+            "url": "https://taxedesejour.toulouse-metropole.fr/ ", 
+            "groups": [], 
+            "anchor": "", 
+            "order": 22, 
+            "placeholder": "professionnels", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcsformcell", 
+          "fields": {
+            "extra_css_class": "grid-1-3", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-06-04T12:18:08.104Z", 
+            "formdef_reference": "eservices:collecte-des-poubelles", 
+            "slug": "tile", 
+            "groups": [], 
+            "order": 23, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcsformcell", 
+          "fields": {
+            "extra_css_class": "grid-1-3", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-06-04T12:18:08.147Z", 
+            "formdef_reference": "eservices:dechets-et-proprete", 
+            "slug": "tile", 
+            "groups": [], 
+            "order": 24, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcsformcell", 
+          "fields": {
+            "extra_css_class": "newline grid-1-3", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-06-04T12:18:08.198Z", 
+            "formdef_reference": "eservices:eau-assainissement", 
+            "slug": "tile", 
+            "groups": [], 
+            "order": 25, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcsformcell", 
+          "fields": {
+            "extra_css_class": "grid-1-3", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-06-04T12:18:08.252Z", 
+            "formdef_reference": "eservices:nuisances-olfactives", 
+            "slug": "tile", 
+            "groups": [], 
+            "order": 26, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcsformcell", 
+          "fields": {
+            "extra_css_class": "grid-1-3", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-06-04T12:18:08.308Z", 
+            "formdef_reference": "eservices:tranquillite-publique", 
+            "slug": "tile", 
+            "groups": [], 
+            "order": 27, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcsformcell", 
+          "fields": {
+            "extra_css_class": "newline grid-1-3", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-06-04T12:18:08.430Z", 
+            "formdef_reference": "eservices:voirie-et-signalisation", 
+            "slug": "tile", 
+            "groups": [], 
+            "order": 28, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcsformcell", 
+          "fields": {
+            "extra_css_class": "grid-1-3", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-06-04T12:18:08.479Z", 
+            "formdef_reference": "eservices:eclairage-public", 
+            "slug": "tile", 
+            "groups": [], 
+            "order": 29, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }
+      ]
+    }, 
+    {
+      "fields": {
+        "sub_slug": "", 
+        "picture": "", 
+        "description": "", 
+        "parent": null, 
+        "title": "Mon compte", 
+        "last_update_timestamp": "2019-01-15T07:44:21.092Z", 
+        "template_name": "standard", 
+        "order": 2, 
+        "public": false, 
+        "snapshot": null, 
+        "redirect_url": "https://connexion-matrice.signalpublik.com/accounts/", 
+        "groups": [], 
+        "slug": "mon-compte", 
+        "exclude_from_navigation": false
+      }, 
+      "cells": [
+        {
+          "model": "data.parentcontentcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-15T07:33:19.450Z", 
+            "slug": "", 
+            "groups": [], 
+            "order": 0, 
+            "placeholder": "footer", 
+            "public": true
+          }
+        }
+      ]
+    }, 
+    {
+      "fields": {
+        "sub_slug": "", 
+        "picture": "", 
+        "description": "", 
+        "parent": null, 
+        "title": "Mes demandes", 
+        "last_update_timestamp": "2019-01-15T07:44:27.360Z", 
+        "template_name": "standard", 
+        "order": 3, 
+        "public": false, 
+        "snapshot": null, 
+        "redirect_url": "", 
+        "groups": [], 
+        "slug": "mes-demandes", 
+        "exclude_from_navigation": false
+      }, 
+      "cells": [
+        {
+          "model": "wcs.wcscurrentformscell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "groups": [], 
+            "current_forms": true, 
+            "last_update_timestamp": "2019-01-15T07:36:11.844Z", 
+            "wcs_site": "", 
+            "slug": "", 
+            "done_forms": false, 
+            "order": 0, 
+            "placeholder": "content", 
+            "public": true, 
+            "categories": {
+              "data": []
+            }
+          }
+        }, 
+        {
+          "model": "wcs.wcscurrentdraftscell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-15T07:36:11.898Z", 
+            "wcs_site": "", 
+            "slug": "", 
+            "groups": [], 
+            "order": 1, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "wcs.wcscurrentformscell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "groups": [], 
+            "current_forms": false, 
+            "last_update_timestamp": "2019-01-15T07:35:57.813Z", 
+            "wcs_site": "", 
+            "slug": "", 
+            "done_forms": true, 
+            "order": 2, 
+            "placeholder": "content", 
+            "public": true, 
+            "categories": {
+              "data": []
+            }
+          }
+        }, 
+        {
+          "model": "data.parentcontentcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-15T07:36:11.786Z", 
+            "slug": "", 
+            "groups": [], 
+            "order": 3, 
+            "placeholder": "footer", 
+            "public": true
+          }
+        }
+      ]
+    }, 
+    {
+      "fields": {
+        "sub_slug": "", 
+        "picture": "", 
+        "description": "", 
+        "parent": null, 
+        "title": "Mes notifications", 
+        "last_update_timestamp": "2019-01-15T07:44:33.459Z", 
+        "template_name": "standard", 
+        "order": 4, 
+        "public": false, 
+        "snapshot": null, 
+        "redirect_url": "", 
+        "groups": [], 
+        "slug": "mes-notifications", 
+        "exclude_from_navigation": false
+      }, 
+      "cells": [
+        {
+          "model": "data.parentcontentcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-15T07:33:49.817Z", 
+            "slug": "", 
+            "groups": [], 
+            "order": 0, 
+            "placeholder": "footer", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "notifications.notificationscell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-15T07:43:26.608Z", 
+            "slug": "", 
+            "groups": [], 
+            "order": 1, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }
+      ]
+    }, 
+    {
+      "fields": {
+        "sub_slug": "", 
+        "picture": "", 
+        "description": "", 
+        "parent": null, 
+        "title": "Conditions g\u00e9n\u00e9rales d'utilisation", 
+        "last_update_timestamp": "2019-01-15T07:34:30.447Z", 
+        "template_name": "standard", 
+        "order": 5, 
+        "public": true, 
+        "snapshot": null, 
+        "redirect_url": "", 
+        "groups": [], 
+        "slug": "conditions-generales-dutilisation", 
+        "exclude_from_navigation": true
+      }, 
+      "cells": [
+        {
+          "model": "data.parentcontentcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-14T16:01:45.898Z", 
+            "slug": "", 
+            "groups": [], 
+            "order": 0, 
+            "placeholder": "footer", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.textcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-15T07:09:38.720Z", 
+            "text": "<h1>Conditions g&eacute;n&eacute;rales d&#39;utilisation</h1>", 
+            "slug": "", 
+            "groups": [], 
+            "order": 1, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }
+      ]
+    }, 
+    {
+      "fields": {
+        "sub_slug": "", 
+        "picture": "", 
+        "description": "", 
+        "parent": null, 
+        "title": "Mentions l\u00e9gales", 
+        "last_update_timestamp": "2019-01-15T10:33:38.328Z", 
+        "template_name": "standard", 
+        "order": 6, 
+        "public": true, 
+        "snapshot": null, 
+        "redirect_url": "{{mention_legales_url}}", 
+        "groups": [], 
+        "slug": "mentions-legales", 
+        "exclude_from_navigation": true
+      }, 
+      "cells": [
+        {
+          "model": "data.parentcontentcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-14T16:01:46.168Z", 
+            "slug": "", 
+            "groups": [], 
+            "order": 0, 
+            "placeholder": "footer", 
+            "public": true
+          }
+        }
+      ]
+    }, 
+    {
+      "fields": {
+        "sub_slug": "", 
+        "picture": "", 
+        "description": "", 
+        "parent": null, 
+        "title": "Hors ligne", 
+        "last_update_timestamp": "2019-01-15T07:34:30.459Z", 
+        "template_name": "standard", 
+        "order": 7, 
+        "public": true, 
+        "snapshot": null, 
+        "redirect_url": "", 
+        "groups": [], 
+        "slug": "offline", 
+        "exclude_from_navigation": true
+      }, 
+      "cells": [
+        {
+          "model": "data.parentcontentcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-14T16:01:49.384Z", 
+            "slug": "", 
+            "groups": [], 
+            "order": 0, 
+            "placeholder": "footer", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.textcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-14T16:01:49.493Z", 
+            "text": "<h1>Vous n&#39;avez pas de connexion r&eacute;seau.</h1>\r\n", 
+            "slug": "title-section", 
+            "groups": [], 
+            "order": 1, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }, 
+        {
+          "model": "data.textcell", 
+          "fields": {
+            "extra_css_class": "", 
+            "restricted_to_unlogged": false, 
+            "last_update_timestamp": "2019-01-14T16:01:49.597Z", 
+            "text": "<p><a class=\"pk-button\" href=\"/\">R&eacute;essayer</a></p>\r\n", 
+            "slug": "", 
+            "groups": [], 
+            "order": 2, 
+            "placeholder": "content", 
+            "public": true
+          }
+        }
+      ]
+    }
+  ], 
+  "assets": [
+    {
+      "fields": {
+        "asset": "assets/part-stationnement.png", 
+        "key": "wcs:category:picto:eservices:dpark"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/part-etat-civil.png", 
+        "key": "wcs:category:picto-hover:eservices:etat-civil"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/part-risques.png", 
+        "key": "wcs:category:picto:eservices:polices-speciale-et-voirie"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/part-enseignement.png", 
+        "key": "wcs:category:picto:eservices:allo-toulouse"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/part-loisirs.png", 
+        "key": "wcs:category:picto:eservices:prestations-scolaires-et-periscolaires-activites-sportives-et-socioculturelles"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/pictogramme-dechets-sacs.png", 
+        "key": "picto:dechets-sacs"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/pictogramme-dechets-fagots_u7jWPAj.png", 
+        "key": "picto:dechets-fagots"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/pictogramme-encombrants-armoire-commode.png", 
+        "key": "picto:encombrants-armoire-commode"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/pictogramme-encombrants-aspirateur.png", 
+        "key": "picto:encombrants-aspirateur"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/pictogramme-encombrants-canape.png", 
+        "key": "picto:encombrants-canape"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/pictogramme-encombrants-chaise.png", 
+        "key": "picto:encombrants-chaise"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/pictogramme-encombrants-cuisiniere.png", 
+        "key": "picto:encombrants-cuisiniere"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/pictogramme-encombrants-lave_vaisselle-four.png", 
+        "key": "picto:encombrants-lave-vaisselle-four"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/pictogramme-encombrants-machine-a-laver.png", 
+        "key": "picto:encombrants-machine-a-laver"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/pictogramme-encombrants-matela-sommier.png", 
+        "key": "picto:encombrants-matelas-sommier"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/pictogramme-encombrants-ordinateur-tele.png", 
+        "key": "picto:encombrants-ordinateur-tele"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/pictogramme-encombrants-refrigirateur.png", 
+        "key": "picto:encombrants-refrigerateur"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/pictogramme-encombrants-refrigirateur-americain.png", 
+        "key": "picto:encombrants-refrigerateur-americain"
+      }
+    }, 
+    {
+      "fields": {
+        "asset": "assets/pictogramme-encombrants-etageres-table.png", 
+        "key": "picto:encombrants-etagere-table"
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/roles/deploy-signal-tenants/templates/publik.zip b/roles/deploy-signal-tenants/templates/publik.zip
new file mode 100644
index 0000000000000000000000000000000000000000..582babf46406c8b51a5bb0228debe5f602bd38e7
GIT binary patch
diff --git a/roles/deploy-signal-tenants/vars/main.yml b/roles/deploy-signal-tenants/vars/main.yml
new file mode 100644
index 0000000..756f51b
--- /dev/null
+++ b/roles/deploy-signal-tenants/vars/main.yml
@@ -0,0 +1,7 @@
+wcs_dev_template_path: /tmp/cook-recipe-signal.json
+wcs_skeleton_filename: publik.zip
+wcs_error_email: ""
+wcs_language: "fr"
+wcs_postgres_user: ""
+wcs_postgres_host: ""
+wcs_postgres_database: "postgres"
-- 
2.20.1

