diff --git a/HOWTOS.md b/HOWTOS.md
deleted file mode 100644
index ae4e2da7b96e93025bcb526dc317b2e7ff918896..0000000000000000000000000000000000000000
--- a/HOWTOS.md
+++ /dev/null
@@ -1,73 +0,0 @@
-Howto's
-=======
-
-Modify main NiFi pipeline
--------------------------
-
-To make modifications to the main NiFi pipeline and add it to the Ansible playbook, do the following in the soctool directory:
-
-* Make necesarry to the pipeline in the NiFi GUI
-* Copy flow.xml.gz file from one of the NiFi containers:  
-  `docker cp soctools-nifi-1:/opt/nifi/nifi-current/conf/flow.xml.gz .`
-* Convert flowx.xml.gz to new template  
-  `utils/flow2template.py flow.xml.gz roles/nifi/templates/flow.xml.j2`
-
-
-Update configuration files in docker containers using Ansible
--------------------------------------------------------------
-To update configuration files for all docker containers together, run the following command:
-	ansible-playbook -i inventories soctools.yml -t update-config
-To update configuration files only for specific services, run the following commands:
-	ansible-playbook -i inventories soctools.yml -t update-keycloak-config
-	ansible-playbook -i inventories soctools.yml -t update-thehive-config
-        ansible-playbook -i inventories soctools.yml -t update-cortex-config
-        ansible-playbook -i inventories soctools.yml -t update-cassandra-config
-        ansible-playbook -i inventories soctools.yml -t update-haproxy-config
-        ansible-playbook -i inventories soctools.yml -t update-filebeat-config
-        ansible-playbook -i inventories soctools.yml -t update-nifi-config
-        ansible-playbook -i inventories soctools.yml -t update-odfees-config
-        ansible-playbook -i inventories soctools.yml -t update-odfekibana-config
-
-
-Restart services inside docker containers using Ansible
--------------------------------------------------------
-To restart services for all docker containers together, run the following command:
-        ansible-playbook -i inventories soctools.yml -t restart
-To restart services only for specific docker containers, run the following commands:
-        ansible-playbook -i inventories soctools.yml -t restart-keycloak
-        ansible-playbook -i inventories soctools.yml -t restart-thehive
-        ansible-playbook -i inventories soctools.yml -t restart-cortex
-        ansible-playbook -i inventories soctools.yml -t restart-cassandra
-        ansible-playbook -i inventories soctools.yml -t restart-haproxy
-        ansible-playbook -i inventories soctools.yml -t restart-filebeat
-        ansible-playbook -i inventories soctools.yml -t restart-misp
-        ansible-playbook -i inventories soctools.yml -t restart-mysql
-        ansible-playbook -i inventories soctools.yml -t restart-nifi
-        ansible-playbook -i inventories soctools.yml -t restart-odfees
-        ansible-playbook -i inventories soctools.yml -t restart-odfekibana
-
-Stop services inside docker containers using Ansible
-----------------------------------------------------
-To stop services for all docker containers together, run the following command:
-        ansible-playbook -i inventories soctools.yml -t stop
-To stop services only for specific docker containers, run the following commands:
-        ansible-playbook -i inventories soctools.yml -t stop-keycloak
-        ansible-playbook -i inventories soctools.yml -t stop-thehive
-        ansible-playbook -i inventories soctools.yml -t stop-cortex
-        ansible-playbook -i inventories soctools.yml -t stop-cassandra
-        ansible-playbook -i inventories soctools.yml -t stop-haproxy
-        ansible-playbook -i inventories soctools.yml -t stop-filebeat
-        ansible-playbook -i inventories soctools.yml -t stop-misp
-        ansible-playbook -i inventories soctools.yml -t stop-mysql
-        ansible-playbook -i inventories soctools.yml -t stop-nifi
-        ansible-playbook -i inventories soctools.yml -t stop-odfees
-        ansible-playbook -i inventories soctools.yml -t stop-odfekibana
-
-Restart services inside docker containers manually
---------------------------------------------------
-To restart services inside docker containers after changes in configuration files:
-	1. Attache container: docker exec -it container_id_or_name bash (example: docker exec -it soctools-keycloak bash)
-	2. List  services and their statuses: supervisorctl status
-	3. Restart service: supervisorctl restart supervisor_service_name (example: supervisorctl restart keycloak)
-	4. Detach from container: exit
-
diff --git a/README.md b/README.md
index f44a4984173bae749d95a9cbcf4551c6461643e6..967fa3f7e48937ed76b2e4a61ff2d77fa888801c 100644
--- a/README.md
+++ b/README.md
@@ -13,45 +13,36 @@ Log in and install ansible:
 `yum -y install ansible git`  
 `ansible-galaxy collection install ansible.posix`
 
-Clone soctools:
-Temporary solution: Upload your ssh key to gitlab.geant.org
-`git clone git@gitlab.geant.org:gn4-3-wp8-t3.1-soc/soctools.git`
+Clone soctools:  
+`git clone https://scm.uninett.no/geant-wp8-t3.1/soctools.git`  
 `cd soctools`
 
 Install soctools:
-Edit group_vars/all/main.yml and change 'soctoolsproxy' so that it point to the FQDN of the server.  
+Edit group_vars/all/main.yml and change 'dslproxy' so that it point to the FQDN of the server.  
 `vi group_vars/all/main.yml`  
-Users are specified in the file:  
-`group_vars/all/users.yml`  
+The first entry in the soctools_users variable is the user with full admin privileges in NiFi and Kibana.
 
 To configure the server running soctools, run the ansible playbook:  
-`ansible-playbook -i inventories soctools_server.yml`
+`ansible-playbook -i soctools-inventory soctools_server.yml`
 
 To build the Docker images needed, run the ansible playbook:  
-`ansible-playbook -i inventories buildimages.yml`
+`ansible-playbook -i soctools-inventory buildimages.yml`
 
 To build the CA needed for host and user certificates, run the ansible playbook:  
-`ansible-playbook -i inventories buildca.yml`
+`ansible-playbook -i soctools-inventory buildca.yml`
 
-If using soctools CA certificates provided with this installation, you first need to download and import root certificate found in secrets/CA/ca.crt   
-For Windows, CA certificate should be installed in Trusted Root Certification Authorities store. 
-
-User certificates are can be found in the directory secrets/certificates. Import into browser for authentication.
-For Windows, user certificate should be installed in Personal store. Passwords for the certificates can be found in the directory secrets/passwords.   
+User certificates are can be found in the directory roles/ca/files/CA/private. Import into browser for authentication.
 
 To start the cluster, run the ansible playbook soctools.yml:  
-`ansible-playbook -i inventories soctools.yml -t start`
+`ansible-playbook -i soctools-inventory soctools.yml -t start`
 
 To stop the cluster, run the ansible playbook soctools.yml:  
-`ansible-playbook -i inventories soctools.yml -t stop`
-
-Web interfaces are available on the following ports:
- * 9443 - NiFi
- * 5601 - Kibana
- * 6443 - Misp : Default user/password: admin@admin.test/test
- * 9000 - The Hive : Default user/password: admin@thehive.local/secret
- * 9001 - Cortex
- * 12443 - Keycloak : Default user/password: admin/Pass005
+`ansible-playbook -i soctools-inventory soctools.yml -t stop`
+
+The NiFi interface should now be available on port 9443 on the server.  
+The OpenDistro for Elasticsearch interface should now be available on port 5601 on the server. To access preconfigured 
+index patterns you have to switch to Global tenant.  
+The Keycloak IdP interface should now be available on port 12443 on the server.
 
 License
 -------
diff --git a/buildca.yml b/buildca.yml
index 37ef902ce7086d5c92610d72eb86fa0e5022aec6..b718286139aa329e0a343f4ff60624cdfc6b3c34 100644
--- a/buildca.yml
+++ b/buildca.yml
@@ -1,7 +1,7 @@
 ---
 
 - name: Build certification authority
-  hosts: soctoolsmain
+  hosts: dsldev
   roles:
     - ca
 
diff --git a/buildimages.yml b/buildimages.yml
index 8a935836e253947d7181cf637718e66cb6b80b23..d30f905968d72cffd2aaf2973fcf65a33a3107b2 100644
--- a/buildimages.yml
+++ b/buildimages.yml
@@ -1,7 +1,7 @@
 ---
 
 - name: Build docker images
-  hosts: soctoolsmain
+  hosts: dsldev
   roles:
     - build
 
diff --git a/group_vars/all/main.yml b/group_vars/all/main.yml
index 0c1c3d27ad556cea5d86f677becc8dddc0658312..c6adf5f95e0594287ec6815a4f43e6a95713922e 100644
--- a/group_vars/all/main.yml
+++ b/group_vars/all/main.yml
@@ -1,75 +1,124 @@
 ---
 
-soctoolsproxy: "<CHANGE_ME:hostname>"
-
-maxmind_key: ""
-
-docker_build_dir: "{{playbook_dir}}/build"
+dslproxy: "dsoclab.gn4-3-wp8-soc.sunet.se"
 
 # TheHive Button plugin
 THEHIVE_URL: "https://hive.gn4-3-wp8-soc.sunet.se/"
-THEHIVE_API_KEY: "5LymseWiurZBrQN8Kqp8O+9KniTL5cE0"
-THEHIVE_OWNER: "admin"
+# here enter API key for default admin user
+THEHIVE_API_KEY: "bs2Jc3tGJqhVv0AYyX2NYlhMlorPz7mX"
+# ID of the default admin user
+THEHIVE_OWNER: "admin@thehive.local"
+
+# TheHive Create Organisation and Users
+# Login as default admin user and create API key, populate it here
+# thehive_admin_api: "KoHrKbIJm8XMsJxA9nZLs6YemCu76o3u"
+# thehive_writer: "[write]"
+
+#THEHIVE_API_KEY: "1gFdNhmUSxO3BRe1SBB5JYEvkW9UOo6s"
+THEHIVE_USERS:
+  - kiril:
+    username: "kiril"
+    name: "Kiril"
+    surname: "Kiroski"
+    roles: '["read", "write", "admin"]'
+    organization: "uninett.no"
+  - temur:
+    username: "temur"
+    name: "Temur"
+    surname: "Maisuradze"
+    roles: '["read", "write", "admin"]'
+    organization: "uninett.no"
+
+
 
 soctools_netname: "soctoolsnet"
 soctools_network: "172.22.0.0/16"
 
-repo: soctools
+repo: gn43-dsl
 version: 7
 suffix: a20201004
 
-haproxy_name: "soctools-haproxy"
+haproxy_name: "dsoclab-haproxy"
 haproxy_version: "2.2"
 haproxy_img: "{{repo}}/haproxy:{{version}}{{suffix}}"
 HAPROXY_PROCESSES: "2"
-
-FILEBEAT_VERSION: "7.9.3"
-FILEBEAT_OUTPUT_HOST: "{{soctoolsproxy}}"
-FILEBEAT_OUTPUT_PORT: "6000"
-FILEBEAT_CERT: "/opt/filebeat/filebeat.crt"
-FILEBEAT_KEY: "/opt/filebeat/filebeat.key"
+HAPROXY_STATS_PASS: "eiph2Eepaizicheelah3tei+bae3ohgh"
 
 temp_root: "/tmp/centosbuild"
 
 openjdk_img: "{{repo}}/openjdk:{{version}}{{suffix}}"
 
-zookeeper_name: "soctools-zookeeper"
+zookeeper_name: "dsoclab-zookeeper"
 zookeeper_img: "{{repo}}/zookeeper:{{version}}{{suffix}}"
 
-misp_name: "soctools-misp"
+misp_name: "dsoclab-misp"
 misp_img: "{{repo}}/misp:{{version}}{{suffix}}"
-misp_url: "https://{{soctoolsproxy}}:6443"
 
 nifi_img: "{{repo}}/nifi:{{version}}{{suffix}}"
 
-mysql_name: "soctools-mysql"
+mysql_name: "dsoclab-mysql"
 mysql_img: "{{repo}}/mysql:{{version}}{{suffix}}"
+mysql_dbrootpass: "Pass006"
 
-cassandra_name: "soctools-cassandra"
+cassandra_name: "dsoclab-cassandra"
 cassandra_img: "{{repo}}/cassandra:{{version}}{{suffix}}"
 
-thehive_name: "soctools-thehive"
+thehive_name: "dsoclab-thehive"
 thehive_img: "{{repo}}/thehive:{{version}}{{suffix}}"
+# GENERATED WITH cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1
+thehive_secret_key: "LcnI9eKLo33711BmCnzf6UM1y05pdmj3dlADL81PxuffWqhobRoiiGFftjNPKpmM"
 
-cortex_name: "soctools-cortex"
+cortex_name: "dsoclab-cortex"
 cortex_img: "{{repo}}/cortex:{{version}}{{suffix}}"
 cortex_elasticsearch_mem: "256m"
+# GENERATED WITH cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1
+cortex_secret_key: "9CZ844IcAp5dHjsgU4iuaEssdopLcS6opzhVP3Ys4t4eRpNlHmwZdtfveLEXpM9D"
+cortex_odfe_pass: "Pass009"
+
+kspass: "Testing003"
+tspass: "Testing003"
 
 sysctlconfig:
-  - { key: "net.core.rmem_max", val: "4194304" }
-  - { key: "net.core.wmem_max", val: "4194304" }
+  - { key: "net.core.rmem_max", val: "2097152" }
+  - { key: "net.core.wmem_max", val: "2097152" }
   - { key: "vm.max_map_count" , val:  "524288" }
 
 nifi_javamem: "1g"
 odfe_javamem: "512m"
 
-nifi_version: 1.12.1
+nifi_version: 1.11.4
 nifi_repo: "https://archive.apache.org/dist"
 
 ca_cn: "SOCTOOLS-CA"
 
+soctools_users:
+  - firstname: "Bozidar"
+    lastname: "Proevski"
+    username: "bozidar.proevski"
+    email: "bozidar.proevski@finki.ukim.mk"
+    DN: "CN=Bozidar Proevski"
+    CN: "Bozidar Proevski"
+    password: "Pass001"
+  - firstname: "Arne"
+    lastname: "Oslebo"
+    username: "arne.oslebo"
+    email: "arne.oslebo@uninett.no"
+    DN: "CN=Arne Oslebo"
+    CN: "Arne Oslebo"
+    password: "Pass002"
+  - firstname: "Kiril"
+    lastname: "Kjiroski"
+    username: "kiril.kjiroski"
+    email: "kiril.kjiroski@finki.ukim.mk"
+    DN: "CN=Kiril Kjiroski"
+    CN: "Kiril Kjiroski"
+    password: "Pass003"
+
 odfees_img: "{{repo}}/odfees:{{version}}{{suffix}}"
 odfekibana_img: "{{repo}}/odfekibana:{{version}}{{suffix}}"
+# GENERATE 32-bit secure value
+odfekibana_cookie: "iroAm0ueIV7w6CS1WcJTwIV6R4d5RIAt"
+odfees_adminpass: "Pass004"
 #elk_version: "oss-7.6.1"
 elk_version: "oss-7.4.2"
 #odfeplugin_version: "1.7.0.0"
@@ -80,25 +129,16 @@ openid_scope: profile
 openid_subjkey: preferred_username
 
 keycloak_img: "{{repo}}/keycloak:{{version}}{{suffix}}"
+keycloak_adminpass: "Pass005"
 
 elastic_username: "admin"
+misp_token: ""
+misp_url: ""
+maxmind_key: ""
 
 misp_dbname: "mispdb"
 misp_dbuser: "misp"
-
-services:
-  - mysql
-  - haproxy
-  - openjdk
-  - zookeeper
-  - nifi
-  - elasticsearch
-  - kibana
-  - odfees
-  - odfekibana
-  - keycloak
-  - misp
-  - cassandra
-  - thehive
-  - cortex
+misp_dbpass: "Pass007"
+# misp_salt generated with: openssl rand -base64 32
+misp_salt:   "wa2fJA2mGIn32IDl+uKrCJ069Mg3khDdGzFNv8DOwM0="
 
diff --git a/group_vars/all/users.yml b/group_vars/all/users.yml
deleted file mode 100644
index bc785e4800de9f8642c7236db63cbe5069f2826a..0000000000000000000000000000000000000000
--- a/group_vars/all/users.yml
+++ /dev/null
@@ -1,21 +0,0 @@
----
-
-soctools_users:
-  - firstname: "User1"
-    lastname: "SOC"
-    username: "user1"
-    email: "user1@soctools.test"
-    DN: "CN=User1Soctools"
-    CN: "User1Soctools"
-  - firstname: "User2"
-    lastname: "SOC"
-    username: "user2"
-    email: "user2@soctools.test"
-    DN: "CN=User2Soctools"
-    CN: "User2Soctools"
-
-# Minimum one user is required
-ODFE_ADMIN_USERS:
-  - user1
-
-
diff --git a/inventories/build/group_vars/all.yml b/inventories/build/group_vars/all.yml
new file mode 100644
index 0000000000000000000000000000000000000000..704323666712c480e383ad2c4bf695794b1c6cb0
--- /dev/null
+++ b/inventories/build/group_vars/all.yml
@@ -0,0 +1,4 @@
+---
+
+docker_image_path: images
+base_image: python:2.7-stretch
diff --git a/inventories/build/hosts.yml b/inventories/build/hosts.yml
new file mode 100644
index 0000000000000000000000000000000000000000..485463850c4bf51c14826fb6b13adbad2a1a18ed
--- /dev/null
+++ b/inventories/build/hosts.yml
@@ -0,0 +1,12 @@
+all:
+  hosts:
+    nifi-image:
+      ansible_connection: docker
+      ansible_python_interpreter: /usr/bin/python
+    localhost:
+      ansible_python_interpreter: /usr/bin/python
+      ansible_connection: local
+  children:
+    nifi:
+      hosts:
+        localhost:
diff --git a/inventories/cassandra b/inventories/cassandra
deleted file mode 100644
index 65a4f3475d64e7d85474ef8f6831d9df949b6dee..0000000000000000000000000000000000000000
--- a/inventories/cassandra
+++ /dev/null
@@ -1,2 +0,0 @@
-[cassandra]
-soctools-cassandra ansible_connection=docker
diff --git a/inventories/cortex b/inventories/cortex
deleted file mode 100644
index 6a64e81773fe3de5f89dd23e65ed35d6fcf4bfdd..0000000000000000000000000000000000000000
--- a/inventories/cortex
+++ /dev/null
@@ -1,2 +0,0 @@
-[cortex]
-soctools-cortex ansible_connection=docker
diff --git a/inventories/deploy/group_vars/haproxy.yml b/inventories/deploy/group_vars/haproxy.yml
new file mode 100644
index 0000000000000000000000000000000000000000..b53d50d6b11f23d908ad3fe74b42e70f318e2119
--- /dev/null
+++ b/inventories/deploy/group_vars/haproxy.yml
@@ -0,0 +1,11 @@
+---
+index: haproxy
+scale: "{{ haproxy_scale | default('1')}}"
+docker:
+  haproxy:
+    image: haproxy:latest
+    volumes:
+      - /usr/local/etc/haproxy/:/usr/local/etc/haproxy:ro
+    ports:
+      - "80:80"
+    source: pull
\ No newline at end of file
diff --git a/inventories/deploy/group_vars/nifi.yml b/inventories/deploy/group_vars/nifi.yml
new file mode 100644
index 0000000000000000000000000000000000000000..5b718692a776eb9418de06d5c9bf18b8c1a5724b
--- /dev/null
+++ b/inventories/deploy/group_vars/nifi.yml
@@ -0,0 +1,19 @@
+---
+index: nifi
+scale: "{{ nifi_scale | default('1')}}"
+docker:
+  nifi:
+#    image: nifi-soctools #For nifi image built by soctools
+#    source: load
+    image: apache/nifi:latest
+    source: pull
+    command: /opt/nifi/nifi-current/scripts/start.sh
+    env: 
+      NIFI_HOME: "/opt/nifi/nifi-current"
+      NIFI_LOG_DIR: "/opt/nifi/nifi-current/logs"
+      NIFI_PID_DIR: "/opt/nifi/nifi-current/run"
+      NIFI_CLUSTER_IS_NODE: "true"
+      NIFI_ZK_CONNECT_STRING: "zookeeper_1:2181"
+      NIFI_CLUSTER_NODE_PROTOCOL_PORT: "8082"
+      NIFI_ELECTION_MAX_WAIT: "1 min"
+    load_path: "{{ image_location }}/nifi-soctools.tar" 
diff --git a/inventories/deploy/group_vars/zookeeper.yml b/inventories/deploy/group_vars/zookeeper.yml
new file mode 100644
index 0000000000000000000000000000000000000000..5604be8138d47975f9e1ed6fb075ebc27d392e13
--- /dev/null
+++ b/inventories/deploy/group_vars/zookeeper.yml
@@ -0,0 +1,7 @@
+---
+index: zookeeper
+scale: "{{ zookeeper_scale | default('1')}}"
+docker:
+  zookeeper:
+    image: zookeeper:latest
+    source: pull
\ No newline at end of file
diff --git a/inventories/deploy/hosts.yml.example b/inventories/deploy/hosts.yml.example
new file mode 100644
index 0000000000000000000000000000000000000000..7d85e5bdf3a5030bbfbd114016b78808000bcd73
--- /dev/null
+++ b/inventories/deploy/hosts.yml.example
@@ -0,0 +1,21 @@
+all:
+  hosts:
+    host1:
+      ansible_ssh_user: debian
+      ansible_python_interpreter: /usr/bin/python
+      become: yes
+  children:
+    soctools_server:
+      hosts:
+        host1:
+    nifi:
+      hosts:
+        host1:
+          nifi_scale: 3
+    haproxy:
+      hosts:
+        host1:
+    zookeeper:
+      hosts:
+        host1:
+          zookeeper_scale: 3
\ No newline at end of file
diff --git a/inventories/elasticsearch b/inventories/elasticsearch
deleted file mode 100644
index 73901fb0cd71e4434bd33159a45fc97c34ee98bb..0000000000000000000000000000000000000000
--- a/inventories/elasticsearch
+++ /dev/null
@@ -1,3 +0,0 @@
-[odfeescontainers]
-soctools-odfe-1 ansible_connection=docker
-soctools-odfe-2 ansible_connection=docker
diff --git a/inventories/filebeat b/inventories/filebeat
deleted file mode 100644
index 2add349aa63b05076383cb8d04f9ec27a4e1f309..0000000000000000000000000000000000000000
--- a/inventories/filebeat
+++ /dev/null
@@ -1,16 +0,0 @@
-[filebeat]
-soctools-nifi-1 ansible_connection=docker FILEBEAT_FILES='["/opt/nifi/nifi-current/logs/nifi-app.log","/opt/nifi/nifi-current/logs/nifi-bootstrap.log","/opt/nifi/nifi-current/logs/nifi-user.log","/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="nifi" FILEBEAT_LOG_FORMAT="text"
-soctools-nifi-2 ansible_connection=docker FILEBEAT_FILES='["/opt/nifi/nifi-current/logs/nifi-app.log","/opt/nifi/nifi-current/logs/nifi-bootstrap.log","/opt/nifi/nifi-current/logs/nifi-user.log","/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="nifi" FILEBEAT_LOG_FORMAT="text"
-soctools-nifi-3 ansible_connection=docker FILEBEAT_FILES='["/opt/nifi/nifi-current/logs/nifi-app.log","/opt/nifi/nifi-current/logs/nifi-bootstrap.log","/opt/nifi/nifi-current/logs/nifi-user.log","/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="nifi" FILEBEAT_LOG_FORMAT="text"
-soctools-misp ansible_connection=docker FILEBEAT_FILES='["/var/opt/rh/rh-php72/log/php-fpm/*.log","/var/opt/rh/rh-redis32/log/redis/redis.log","/var/log/httpd/*log","/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="misp" FILEBEAT_LOG_FORMAT="text"
-soctools-odfe-1 ansible_connection=docker FILEBEAT_FILES='["/usr/share/elasticsearch/logs/soctools-cluster_server.json"]' FILEBEAT_LOG_TYPE="elasticsearch" FILEBEAT_LOG_FORMAT="json"
-soctools-odfe-2 ansible_connection=docker FILEBEAT_FILES='["/usr/share/elasticsearch/logs/soctools-cluster_server.json"]' FILEBEAT_LOG_TYPE="elasticsearch" FILEBEAT_LOG_FORMAT="json"
-soctools-kibana ansible_connection=docker FILEBEAT_FILES='["/var/log/supervisor/kibana_stdout.log"]' FILEBEAT_LOG_TYPE="kibana" FILEBEAT_LOG_FORMAT="json"
-soctools-keycloak ansible_connection=docker FILEBEAT_FILES='["/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="keycloak" FILEBEAT_LOG_FORMAT="json"
-soctools-mysql ansible_connection=docker FILEBEAT_FILES='["/var/opt/rh/rh-mariadb103/log/mariadb/mariadb.log","/var/opt/rh/rh-mariadb103/lib/mysql/server_audit.log"]' FILEBEAT_LOG_TYPE="mysql" FILEBEAT_LOG_FORMAT="text"
-soctools-haproxy ansible_connection=docker FILEBEAT_SYSLOG_PORT=9000 FILEBEAT_LOG_TYPE="haproxy" FILEBEAT_LOG_FORMAT="text"
-soctools-zookeeper ansible_connection=docker FILEBEAT_FILES='["/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="zookeeper" FILEBEAT_LOG_FORMAT="text"
-soctools-cortex ansible_connection=docker FILEBEAT_FILES='["/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="cortex" FILEBEAT_LOG_FORMAT="text"
-soctools-thehive ansible_connection=docker FILEBEAT_FILES='["/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="thehive" FILEBEAT_LOG_FORMAT="text"
-soctools-cassandra ansible_connection=docker FILEBEAT_FILES='["/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="cassandra" FILEBEAT_LOG_FORMAT="text"
-
diff --git a/inventories/haproxy b/inventories/haproxy
deleted file mode 100644
index 7ded04a5134a971fadf026b2d214fa2ce11e1ec4..0000000000000000000000000000000000000000
--- a/inventories/haproxy
+++ /dev/null
@@ -1,2 +0,0 @@
-[haproxy]
-soctools-haproxy ansible_connection=docker
\ No newline at end of file
diff --git a/inventories/keycloak b/inventories/keycloak
deleted file mode 100644
index b998e8f6a613fd2feb0450a5ad11a0237c952ae6..0000000000000000000000000000000000000000
--- a/inventories/keycloak
+++ /dev/null
@@ -1,2 +0,0 @@
-[keycloakcontainers]
-soctools-keycloak ansible_connection=docker
diff --git a/inventories/kibana b/inventories/kibana
deleted file mode 100644
index 1f00ac6c362b94aaf698cb74343d1fbf2a402ab1..0000000000000000000000000000000000000000
--- a/inventories/kibana
+++ /dev/null
@@ -1,2 +0,0 @@
-[odfekibanacontainers]
-soctools-kibana ansible_connection=docker
diff --git a/inventories/misp b/inventories/misp
deleted file mode 100644
index 445ec1e88dde819705331e8a221d9540bf7cf34e..0000000000000000000000000000000000000000
--- a/inventories/misp
+++ /dev/null
@@ -1,2 +0,0 @@
-[mispcontainers]
-soctools-misp ansible_connection=docker
diff --git a/inventories/mysql b/inventories/mysql
deleted file mode 100644
index 6d0b3065b10647a34ff7eebc94dde8d3197788be..0000000000000000000000000000000000000000
--- a/inventories/mysql
+++ /dev/null
@@ -1,2 +0,0 @@
-[mysql]
-soctools-mysql ansible_connection=docker
\ No newline at end of file
diff --git a/inventories/nifi b/inventories/nifi
deleted file mode 100644
index d434490139a0736c046257fdf260d503f76576ff..0000000000000000000000000000000000000000
--- a/inventories/nifi
+++ /dev/null
@@ -1,4 +0,0 @@
-[nificontainers]
-soctools-nifi-1 ansible_connection=docker
-soctools-nifi-2 ansible_connection=docker
-soctools-nifi-3 ansible_connection=docker
diff --git a/inventories/soctools b/inventories/soctools
deleted file mode 100644
index 46ea675635f842bbcae314c0c21ff55b3d3ab425..0000000000000000000000000000000000000000
--- a/inventories/soctools
+++ /dev/null
@@ -1,2 +0,0 @@
-[soctoolsmain]
-localhost ansible_connection=local
diff --git a/inventories/thehive b/inventories/thehive
deleted file mode 100644
index 6fd7b99444c07fac165fa5bca0ec19ec270db0ef..0000000000000000000000000000000000000000
--- a/inventories/thehive
+++ /dev/null
@@ -1,2 +0,0 @@
-[thehive]
-soctools-thehive ansible_connection=docker
diff --git a/restart-soctools.yml b/restart-soctools.yml
deleted file mode 100644
index 5aa1c94116243ecdf120c17813677b9c59643630..0000000000000000000000000000000000000000
--- a/restart-soctools.yml
+++ /dev/null
@@ -1,52 +0,0 @@
----
-
-- name: Restart services for haproxy
-  hosts: haproxy
-  roles:
-    - haproxy
-
-- name: Restart services for mysql
-  hosts: mysql
-  roles:
-    - mysql
-
-- name: Restart services for Cassandra
-  hosts: cassandra
-  roles:
-    - cassandra
-
-- name: Restart services for Keycloak
-  hosts: keycloakcontainers
-  roles:
-    - keycloak
-
-- name: Restart services for NiFi
-  hosts: nificontainers
-  roles:
-    - nifi
-
-- name: Restart services for OpenDistro for Elasticsearch
-  hosts: odfeescontainers
-  roles:
-    - odfees
-
-- name: Restart services for OpenDistro Kibana for Elasticsearch
-  hosts: odfekibanacontainers
-  roles:
-    - odfekibana
-
-- name: Restart services for MISP
-  hosts: mispcontainers
-  roles:
-    - misp
-
-- name: Restart services for TheHive
-  hosts: thehive
-  roles:
-    - thehive
-
-- name: Restart services for Cortex
-  hosts: cortex
-  roles:
-    - cortex
-
diff --git a/roles/build/files/cassandra/cassandrasupervisord.conf b/roles/build/files/cassandra/cassandrasupervisord.conf
deleted file mode 100644
index 6cef6509c659ff4d16d1abb8ecafaf34eb0b84e8..0000000000000000000000000000000000000000
--- a/roles/build/files/cassandra/cassandrasupervisord.conf
+++ /dev/null
@@ -1,44 +0,0 @@
-[unix_http_server]
-file=/tmp/supervisor.sock
-
-[supervisord]
-pidfile=/tmp/supervisord.pid
-nodaemon=true
-logfile=/var/log/supervisor/supervisord.log
-logfile_maxbytes=10MB
-logfile_backups=10
-loglevel=info
-childlogdir=/var/log/supervisor/
-
-[rpcinterface:supervisor]
-supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
-
-[supervisorctl]
-serverurl=unix:///tmp/supervisor.sock
-
-[program:cassandra]
-directory=/usr/share/cassandra
-user=cassandra
-group=cassandra
-environment = CASSANDRA_HOME="/usr/share/cassandra",CASSANDRA_CONF="/usr/share/cassandra/conf",CASSANDRA_INCLUDE="/usr/share/cassandra/cassandra.in.sh"
-command=/bin/bash -c '/usr/sbin/cassandra -f'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/cassandra_stderr.log
-stdout_logfile = /var/log/supervisor/cassandra_stdout.log
-
-[program:filebeat]
-directory=/opt/filebeat
-user=root
-group=root
-command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/filebeat_stderr.log
-stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/cassandraDockerfile b/roles/build/files/cassandraDockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..c1b73887b9bdfe51d27938507bf3280e7966fbc1
--- /dev/null
+++ b/roles/build/files/cassandraDockerfile
@@ -0,0 +1,35 @@
+FROM gn43-dsl/openjdk:7a20201004
+
+USER root
+#COPY cassandra.repo /etc/yum.repos.d/cassandra.repo
+#COPY supervisord.conf /etc/supervisord.conf
+#COPY start.sh /start.sh
+RUN echo "[cassandra]" > /etc/yum.repos.d/cassandra.repo && \
+    echo "name=Apache Cassandra" >> /etc/yum.repos.d/cassandra.repo && \
+    echo "baseurl=https://downloads.apache.org/cassandra/redhat/311x/" >> /etc/yum.repos.d/cassandra.repo && \
+    echo "gpgcheck=1" >> /etc/yum.repos.d/cassandra.repo && \
+    echo "repo_gpgcheck=1" >> /etc/yum.repos.d/cassandra.repo && \
+    echo "gpgkey=https://downloads.apache.org/cassandra/KEYS" >> /etc/yum.repos.d/cassandra.repo && \
+    echo '#!/bin/bash' > /start.sh && \
+    echo 'export CASSANDRA_HOME=/usr/share/cassandra' >> /start.sh && \
+    echo 'export CASSANDRA_CONF=$CASSANDRA_HOME/conf' >> /start.sh && \
+    echo 'export CASSANDRA_INCLUDE=$CASSANDRA_HOME/cassandra.in.sh' >> /start.sh && \
+    echo 'log_file=/var/log/cassandra/cassandra.log' >> /start.sh && \
+    echo 'pid_file=/var/run/cassandra/cassandra.pid' >> /start.sh && \
+    echo 'lock_file=/var/lock/subsys/cassandra' >> /start.sh && \
+    echo 'CASSANDRA_PROG=/usr/sbin/cassandra' >> /start.sh && \
+    echo '' >> /start.sh && \
+    echo '$CASSANDRA_PROG -p $pid_file > $log_file 2>&1' >> /start.sh && \
+    yum install -y epel-release && \
+    yum install -y cassandra supervisor && \
+    mkdir /usr/share/cassandra/conf && \
+    cp -a /etc/cassandra/conf/* /usr/share/cassandra/conf && \
+    chown -R cassandra:cassandra /usr/share/cassandra && \
+    chown -R cassandra:cassandra /var/lib/cassandra && \
+    sed -i -e 's,/etc/cassandra,/usr/share/cassandra,g' /usr/share/cassandra/cassandra.in.sh && \
+    chmod a+x /start.sh && \
+    yum -y clean all
+EXPOSE 7000 9042
+#ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+USER cassandra
+# ENTRYPOINT ["/start.sh"]
diff --git a/roles/build/files/cortex/cortexsupervisord.conf b/roles/build/files/cortex/cortexsupervisord.conf
deleted file mode 100644
index 99e89e48ea30bcf6e76ba3527918a1d190ba148b..0000000000000000000000000000000000000000
--- a/roles/build/files/cortex/cortexsupervisord.conf
+++ /dev/null
@@ -1,56 +0,0 @@
-[unix_http_server]
-file=/tmp/supervisor.sock
-
-[supervisord]
-pidfile=/tmp/supervisord.pid
-nodaemon=true
-logfile=/var/log/supervisor/supervisord.log
-logfile_maxbytes=10MB
-logfile_backups=10
-loglevel=info
-childlogdir=/var/log/supervisor/
-
-[rpcinterface:supervisor]
-supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
-
-[supervisorctl]
-serverurl=unix:///tmp/supervisor.sock
-
-[program:elasticsearch]
-directory=/usr/share/elasticsearch
-user=elasticsearch
-group=elasticsearch
-command=/bin/bash -c '/usr/share/elasticsearch/bin/elasticsearch'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/elasticsearch_stderr.log
-stdout_logfile = /var/log/supervisor/elasticsearch_stdout.log
-
-[program:cortex]
-directory=/opt/cortex
-user=cortex
-group=cortex
-command=/bin/bash -c '/opt/cortex/bin/cortex -Dconfig.file=/etc/cortex/application.conf -Dlogger.file=/etc/cortex/logback.xml -J-Xms1g -J-Xmx1g -Dpidfile.path=/dev/null'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/cortex_stderr.log
-stdout_logfile = /var/log/supervisor/cortex_stdout.log
-
-[program:filebeat]
-directory=/opt/filebeat
-user=root
-group=root
-command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/filebeat_stderr.log
-stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/cortexDockerfile b/roles/build/files/cortexDockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..014cdf01134d97139671c702bbc6dde96682ee8e
--- /dev/null
+++ b/roles/build/files/cortexDockerfile
@@ -0,0 +1,32 @@
+FROM gn43-dsl/openjdk:7a20201004
+
+USER root
+#COPY thehive.repo /etc/yum.repos.d/thehive.repo
+#COPY supervisord.conf /etc/supervisord.conf
+#COPY start.sh /start.sh
+RUN echo "[thehive-project]" > /etc/yum.repos.d/thehive.repo && \
+    echo "enabled=1" >> /etc/yum.repos.d/thehive.repo && \
+    echo "priority=1" >> /etc/yum.repos.d/thehive.repo && \
+    echo "name=TheHive-Project RPM repository" >> /etc/yum.repos.d/thehive.repo && \
+    echo "baseurl=http://rpm.thehive-project.org/stable/noarch" >> /etc/yum.repos.d/thehive.repo && \
+    echo "gpgcheck=1" >> /etc/yum.repos.d/thehive.repo && \
+    yum install -y epel-release && \
+    rpm --import https://raw.githubusercontent.com/TheHive-Project/TheHive/master/PGP-PUBLIC-KEY && \
+    rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch && \
+    yum install -y cortex supervisor daemonize vim net-tools telnet htop python3-pip.noarch git gcc python3-devel.x86_64 ssdeep-devel.x86_64 python3-wheel.noarch libexif-devel.x86_64 libexif.x86_64 perl-Image-ExifTool.noarch  gcc-c++ whois && \
+    rpm -Uvh https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-6.8.13.rpm && \
+    chown -R elasticsearch:elasticsearch /etc/elasticsearch && \
+    mkdir -p /home/cortex && \
+    chown -R cortex:cortex /home/cortex && \
+    chown -R cortex:cortex /etc/cortex && \
+    cd /opt && \
+    git clone https://github.com/TheHive-Project/Cortex-Analyzers && \
+    chown -R cortex:cortex /opt/Cortex-Analyzers && \
+    cd /opt/Cortex-Analyzers && \
+    for I in analyzers/*/requirements.txt; do LC_ALL=en_US.UTF-8 pip3 install --no-cache-dir -U -r $I || true; done && \
+    for I in responders/*/requirements.txt; do LC_ALL=en_US.UTF-8 pip3 install --no-cache-dir -U -r $I || true; done && \
+    yum -y clean all
+EXPOSE 9001
+#ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+USER cortex
+# ENTRYPOINT ["/start.sh"]
diff --git a/roles/build/files/elasticDockerfile b/roles/build/files/elasticDockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..dba40032af25404c9470cb7ca39cf3ccc43b4ff3
--- /dev/null
+++ b/roles/build/files/elasticDockerfile
@@ -0,0 +1,21 @@
+FROM gn43-dsl/openjdk:7a20201004
+
+ENV PATH="/usr/share/elasticsearch/bin:${PATH}"
+
+RUN groupadd -g 1000 elasticsearch && \
+    adduser -u 1000 -g 1000 -d /usr/share/elasticsearch elasticsearch
+
+WORKDIR /usr/share/elasticsearch
+
+RUN rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch && \
+    rpm -Uvh https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-7.4.2-no-jdk-x86_64.rpm && \
+    cp -a /etc/elasticsearch/ /usr/share/elasticsearch/config/ && \
+    chown -R elasticsearch /usr/share/elasticsearch/config && \
+    mkdir -p /usr/share/elasticsearch/data && \
+    chown -R elasticsearch /usr/share/elasticsearch/data && \
+    sed -i -e 's,ES_PATH_CONF=/etc/elasticsearch,ES_PATH_CONF=/usr/share/elasticsearch/config,g' /etc/sysconfig/elasticsearch
+
+EXPOSE 9200 9300
+USER elasticsearch
+ENTRYPOINT ["/bin/bash"]
+
diff --git a/roles/build/files/haproxy/haproxysupervisord.conf b/roles/build/files/haproxy/haproxysupervisord.conf
deleted file mode 100644
index 2738cf2d75e4646aafc687fb855ded53414594c0..0000000000000000000000000000000000000000
--- a/roles/build/files/haproxy/haproxysupervisord.conf
+++ /dev/null
@@ -1,44 +0,0 @@
-[unix_http_server]
-file=/tmp/supervisor.sock
-
-[supervisord]
-pidfile=/tmp/supervisord.pid
-nodaemon=true
-logfile=/var/log/supervisor/supervisord.log
-logfile_maxbytes=10MB
-logfile_backups=10
-loglevel=info
-childlogdir=/var/log/supervisor/
-
-[rpcinterface:supervisor]
-supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
-
-[supervisorctl]
-serverurl=unix:///tmp/supervisor.sock
-
-[program:haproxy]
-directory=/root
-user=root
-group=root
-command=/bin/bash -c '/usr/local/sbin/haproxy -f /usr/local/etc/haproxy/haproxy.cfg'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/haproxy_stderr.log
-stdout_logfile = /var/log/supervisor/haproxy_stdout.log
-
-
-[program:filebeat]
-directory=/opt/filebeat
-user=root
-group=root
-command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/filebeat_stderr.log
-stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/haproxyDockerfile b/roles/build/files/haproxyDockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..f36d8f4cfb974f7a641bbf60d4473a0c39afa0f8
--- /dev/null
+++ b/roles/build/files/haproxyDockerfile
@@ -0,0 +1,71 @@
+FROM gn43-dsl/centos:7a20201004
+
+ENV HAPROXY_VERSION 2.2.3
+ENV HAPROXY_URL https://www.haproxy.org/download/2.2/src/haproxy-2.2.3.tar.gz
+ENV HAPROXY_SHA256 7209db363d4dbecb21133f37b01048df666aebc14ff543525dbea79be202064e
+ENV OPENSSL_VERSION=1.0.2u
+
+
+# see https://sources.debian.net/src/haproxy/jessie/debian/rules/ for some helpful navigation of the possible "make" arguments
+RUN \
+  yum install -y epel-release && \
+  yum update -y && \
+  `# Install build tools. Note: perl needed to compile openssl...` \
+  yum install -y \
+  inotify-tools \
+  wget \
+  tar \
+  gzip \
+  make \
+  gcc \
+  perl \
+  pcre-devel \
+  zlib-devel \
+  iptables \
+  pcre2-devel \
+  daemonize \
+  pth-devel && \
+  `# Install newest openssl...` \
+  wget -O /tmp/openssl.tgz https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz && \
+  tar -zxf /tmp/openssl.tgz -C /tmp && \
+  cd /tmp/openssl-* && \
+  ./config --prefix=/usr \
+  --openssldir=/etc/ssl \
+  --libdir=lib          \
+  no-shared zlib-dynamic && \
+  make -j$(getconf _NPROCESSORS_ONLN) V= && make install_sw && \
+  cd && rm -rf /tmp/openssl* && \
+  `# Install HAProxy...` \ 
+  && wget -O haproxy.tar.gz "$HAPROXY_URL" \
+  && echo "$HAPROXY_SHA256 *haproxy.tar.gz" | sha256sum -c \
+  && mkdir -p /usr/src/haproxy \
+  && tar -xzf haproxy.tar.gz -C /usr/src/haproxy --strip-components=1 \
+  && rm haproxy.tar.gz \
+  \
+  && makeOpts=' \
+    TARGET=linux-glibc \
+    USE_GETADDRINFO=1 \
+    USE_OPENSSL=1 \
+    USE_PCRE2=1 USE_PCRE2_JIT=1 \
+    USE_ZLIB=1 \
+    \
+    EXTRA_OBJS=" \
+# see https://github.com/docker-library/haproxy/issues/94#issuecomment-505673353 for more details about prometheus support
+      contrib/prometheus-exporter/service-prometheus.o \
+    " \
+  ' \
+  && nproc="$(nproc)" \
+  && eval "make -C /usr/src/haproxy -j '$nproc' all $makeOpts" \
+  && eval "make -C /usr/src/haproxy install-bin $makeOpts" \
+  \
+  && mkdir -p /usr/local/etc/haproxy \
+  && cp -R /usr/src/haproxy/examples/errorfiles /usr/local/etc/haproxy/errors \
+  && rm -rf /usr/src/haproxy 
+
+ENTRYPOINT ["/bin/bash"]
+
+# https://www.haproxy.org/download/1.8/doc/management.txt
+# "4. Stopping and restarting HAProxy"
+# "when the SIGTERM signal is sent to the haproxy process, it immediately quits and all established connections are closed"
+# "graceful stop is triggered when the SIGUSR1 signal is sent to the haproxy process"
+STOPSIGNAL SIGUSR1
diff --git a/roles/build/files/keycloak/keycloaksupervisord.conf b/roles/build/files/keycloak/keycloaksupervisord.conf
deleted file mode 100644
index 63694dc8cf6227d2540f4afb74af54ca18633d2d..0000000000000000000000000000000000000000
--- a/roles/build/files/keycloak/keycloaksupervisord.conf
+++ /dev/null
@@ -1,44 +0,0 @@
-[unix_http_server]
-file=/tmp/supervisor.sock
-
-[supervisord]
-pidfile=/tmp/supervisord.pid
-nodaemon=true
-logfile=/var/log/supervisor/supervisord.log
-logfile_maxbytes=10MB
-logfile_backups=10
-loglevel=info
-childlogdir=/var/log/supervisor/
-
-[rpcinterface:supervisor]
-supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
-
-[supervisorctl]
-serverurl=unix:///tmp/supervisor.sock
-
-[program:keycloak]
-directory=/opt/jboss/keycloak
-user=jboss
-group=jboss
-#command=/opt/jboss/keycloak/bin/standalone.sh -b 0.0.0.0
-command=/bin/bash -c '/docker-java-home/jre/bin/java -D[Standalone] -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Dorg.jboss.boot.log.file=/opt/jboss/keycloak/standalone/log/server.log -Dlogging.configuration=file:/opt/jboss/keycloak/standalone/configuration/logging.properties -jar /opt/jboss/keycloak/jboss-modules.jar -mp /opt/jboss/keycloak/modules org.jboss.as.standalone -Djboss.home.dir=/opt/jboss/keycloak -Djboss.server.base.dir=/opt/jboss/keycloak/standalone -b 0.0.0.0'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/keycloak_stderr.log
-stdout_logfile = /var/log/supervisor/keycloak_stdout.log
-
-[program:filebeat]
-directory=/opt/filebeat
-user=root
-group=root
-command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/filebeat_stderr.log
-stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/keycloakDockerfile b/roles/build/files/keycloakDockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..ba6e7c130c1ec511d49e743d068c43d9bde1dc85
--- /dev/null
+++ b/roles/build/files/keycloakDockerfile
@@ -0,0 +1,41 @@
+FROM gn43-dsl/openjdk:7a20201004
+
+ENV KEYCLOAK_VERSION 10.0.1
+ENV JDBC_POSTGRES_VERSION 42.2.5
+ENV JBOSS_HOME /opt/jboss/keycloak
+
+ARG KEYCLOAK_DIST=https://downloads.jboss.org/keycloak/$KEYCLOAK_VERSION/keycloak-$KEYCLOAK_VERSION.tar.gz
+
+USER root
+
+#ADD //root/ansible-soctools-scm-uninett-no/soctools-buildtest-20201022/roles/build/templates/keycloak/keycloak-tools /opt/jboss/tools
+ADD keycloak-tools /opt/jboss/tools
+#ADD ../templates/keycloak/keycloak-tools /opt/jboss/tools
+RUN yum -y install openssl && yum -y clean all && \
+    mkdir -p /opt/jboss/ && cd /opt/jboss/ && \
+    curl -L $KEYCLOAK_DIST | tar zx && \
+    mv /opt/jboss/keycloak-* /opt/jboss/keycloak && \
+    mkdir -p /opt/jboss/keycloak/modules/system/layers/base/org/postgresql/jdbc/main && \
+    cd /opt/jboss/keycloak/modules/system/layers/base/org/postgresql/jdbc/main && \
+    curl -L https://repo1.maven.org/maven2/org/postgresql/postgresql/$JDBC_POSTGRES_VERSION/postgresql-$JDBC_POSTGRES_VERSION.jar > postgres-jdbc.jar && \
+    cp /opt/jboss/tools/databases/postgres/module.xml . && \
+    cd /opt/jboss/keycloak && \
+    bin/jboss-cli.sh --file=/opt/jboss/tools/cli/standalone-configuration.cli && \
+    rm -rf /opt/jboss/keycloak/standalone/configuration/standalone_xml_history && \
+    rm -rf /opt/jboss/keycloak/standalone/tmp/auth && \
+    rm -rf /opt/jboss/keycloak/domain/tmp/auth && \
+    adduser -u 1000 -g 0 -d /opt/jboss jboss && \
+    chown -R jboss:root /opt/jboss && \
+    chmod -R g+rwX /opt/jboss && \
+    mkdir -p /etc/x509/{https,ca} && chown -R jboss:root /etc/x509/{https,ca}
+
+ENV PATH="/opt/jboss/keycloak/bin:${PATH}"
+
+WORKDIR /opt/jboss/keycloak
+
+EXPOSE 8080
+EXPOSE 8443
+
+USER jboss
+ENTRYPOINT ["/bin/bash"]
+
diff --git a/roles/build/files/kibana/kibanasupervisord.conf b/roles/build/files/kibana/kibanasupervisord.conf
deleted file mode 100644
index 2cceed0bc2c3da97bb7b6012a381430808a6f5ae..0000000000000000000000000000000000000000
--- a/roles/build/files/kibana/kibanasupervisord.conf
+++ /dev/null
@@ -1,43 +0,0 @@
-[unix_http_server]
-file=/tmp/supervisor.sock
-
-[supervisord]
-pidfile=/tmp/supervisord.pid
-nodaemon=true
-logfile=/var/log/supervisor/supervisord.log
-logfile_maxbytes=10MB
-logfile_backups=10
-loglevel=info
-childlogdir=/var/log/supervisor/
-
-[rpcinterface:supervisor]
-supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
-
-[supervisorctl]
-serverurl=unix:///tmp/supervisor.sock
-
-[program:kibana]
-user=kibana
-group=kibana
-directory=/usr/share/kibana
-command=sh -c "/usr/share/kibana/bin/kibana -c /usr/share/kibana/config/kibana.yml"
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/kibana_stderr.log
-stdout_logfile = /var/log/supervisor/kibana_stdout.log
-
-[program:filebeat]
-directory=/opt/filebeat
-user=root
-group=root
-command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/filebeat_stderr.log
-stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/templates/kibana/Dockerfile.j2 b/roles/build/files/kibanaDockerfile
similarity index 57%
rename from roles/build/templates/kibana/Dockerfile.j2
rename to roles/build/files/kibanaDockerfile
index ef2a4768f809d02b8320cb90963ea701cbddec16..0f137e085aae12dbae9099256a584e71c0dc9fbd 100644
--- a/roles/build/templates/kibana/Dockerfile.j2
+++ b/roles/build/files/kibanaDockerfile
@@ -1,7 +1,4 @@
-FROM {{repo}}/centos:{{version}}{{suffix}}
-
-RUN yum install -y supervisor
-RUN yum clean all
+FROM gn43-dsl/centos:7a20201004
 
 ENV PATH="/usr/share/kibana/bin:${PATH}"
 
@@ -11,13 +8,11 @@ RUN groupadd -g 1000 kibana && \
 WORKDIR /usr/share/kibana
 
 RUN rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch && \
-    rpm -Uvh https://artifacts.elastic.co/downloads/kibana/kibana-{{elk_version}}-x86_64.rpm && \
+    rpm -Uvh https://artifacts.elastic.co/downloads/kibana/kibana-oss-7.4.2-x86_64.rpm && \
     cp -a /etc/kibana/ /usr/share/kibana/config/ && \
     chown -R kibana /usr/share/kibana/config/
 
-RUN echo 'kibana ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers
-
 EXPOSE 5601
-COPY kibanasupervisord.conf /etc/supervisord.conf
-ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+USER kibana
+ENTRYPOINT ["/bin/bash"]
 
diff --git a/roles/build/files/misp/misp_rh-php72-php-fpm b/roles/build/files/misp/misp_rh-php72-php-fpm
deleted file mode 100644
index 2d67a51c4a2c69132897823a698bef39f4ee0fa6..0000000000000000000000000000000000000000
--- a/roles/build/files/misp/misp_rh-php72-php-fpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/var/opt/rh/rh-php72/log/php-fpm/error.log {
-    missingok
-    notifempty
-    sharedscripts
-    delaycompress
-    postrotate
-        /bin/kill -SIGUSR1 `cat /var/opt/rh/rh-php72/run/php-fpm/php-fpm.pid 2>/dev/null` 2>/dev/null || true
-    endscript
-}
-
-/var/opt/rh/rh-php72/log/php-fpm/www-*log {
-    su apache apache
-    create 600 apache apache
-    missingok
-    notifempty
-    sharedscripts
-    delaycompress
-    postrotate
-        /bin/kill -SIGUSR1 `cat /var/opt/rh/rh-php72/run/php-fpm/php-fpm.pid 2>/dev/null` 2>/dev/null || true
-    endscript
-}
diff --git a/roles/build/files/misp/mispsupervisord.conf b/roles/build/files/misp/mispsupervisord.conf
deleted file mode 100644
index fce59b7aa8a838bd76824961dd7f881062460563..0000000000000000000000000000000000000000
--- a/roles/build/files/misp/mispsupervisord.conf
+++ /dev/null
@@ -1,83 +0,0 @@
-[unix_http_server]
-file=/tmp/supervisor.sock
-
-[supervisord]
-pidfile=/tmp/supervisord.pid
-nodaemon=true
-logfile=/var/log/supervisor/supervisord.log
-logfile_maxbytes=10MB
-logfile_backups=10
-loglevel=info
-childlogdir=/var/log/supervisor/
-user=root
-
-[rpcinterface:supervisor]
-supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
-
-[supervisorctl]
-serverurl=unix:///tmp/supervisor.sock
-
-[program:cron]
-autostart=true
-autorestart=true
-command=crond -n
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/cron_stderr.log
-stdout_logfile = /var/log/supervisor/cron_stdout.log
-
-[program:php-fpm]
-# EnvironmentFile=/etc/opt/rh/rh-php72/sysconfig/php-fpm
-command=/opt/rh/rh-php72/root/usr/sbin/php-fpm --nodaemonize
-autostart=false
-autorestart=true
-
-[program:redis-server]
-process_name = redis-server
-directory = /var/opt/rh/rh-redis32/lib/redis/
-command=/opt/rh/rh-redis32/root/usr/bin/redis-server /etc/opt/rh/rh-redis32/redis.conf
-user=redis
-autostart=false
-autorestart=true
-
-[program:apache2]
-command=/usr/sbin/httpd -DFOREGROUND
-autostart=false
-autorestart=true
-
-[program:misp-modules]
-command=/bin/bash -c "/usr/local/bin/misp-modules -l '0.0.0.0' -s && sleep infinity"
-user = apache
-autostart=false
-autorestart=unexpected
-startsecs = 0
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/misp-modules_stderr.log
-stdout_logfile = /var/log/supervisor/misp-modules_stdout.log
-
-[program:workers]
-command=/bin/bash -c "cleanup() { /var/www/MISP/app/Console/worker/stop.sh; }; trap 'echo signal received!; kill ${child_pid}; wait ${child_pid}; cleanup' SIGINT SIGTERM; /var/www/MISP/app/Console/worker/start.sh; sleep infinity & child_pid=$!; wait ${child_pid};"
-user=apache
-autostart=false
-autorestart=unexpected
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/workers_stderr.log
-stdout_logfile = /var/log/supervisor/workers_stdout.log
-
-[program:filebeat]
-directory=/opt/filebeat
-user=root
-group=root
-command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/filebeat_stderr.log
-stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/mispDockerfile b/roles/build/files/mispDockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..26f09fb32e6420b2cdcc83d1d7af3c436e730201
--- /dev/null
+++ b/roles/build/files/mispDockerfile
@@ -0,0 +1,84 @@
+FROM gn43-dsl/centos:7a20201004
+
+USER root
+RUN yum install -y epel-release centos-release-scl scl-utils ; \
+    yum install -y gcc git zip openssl supervisor rh-git218 httpd24 mod_ssl mod_auth_openidc rh-redis32 libxslt-devel zlib-devel libcaca-devel ssdeep-devel rh-php72 rh-php72-php-fpm rh-php72-php-devel rh-php72-php-mysqlnd rh-php72-php-mbstring rh-php72-php-xml rh-php72-php-bcmath rh-php72-php-opcache rh-php72-php-gd mariadb devtoolset-7 make cmake3 cppcheck libcxx-devel gpgme-devel openjpeg-devel gcc gcc-c++ poppler-cpp-devel pkgconfig python-devel redhat-rpm-config rubygem-rouge rubygem-asciidoctor zbar-devel opencv-devel wget screen rh-python36-mod_wsgi postfix curl make cmake python3 python3-devel python3-pip python3-yara python3-wheel python3-redis python3-zmq python3-setuptools redis sudo vim zip sqlite moreutils rng-tools libxml2-devel libxslt-devel zlib-devel libpqxx openjpeg2-devel ssdeep-devel ruby asciidoctor tesseract ImageMagick poppler-cpp-devel python36-virtualenv opencv-devel zbar zbar-devel ; \
+    yum -y clean all ; \
+    sed -i "s/max_execution_time = 30/max_execution_time = 300/" /etc/opt/rh/rh-php72/php.ini ; \
+    sed -i "s/memory_limit = 128M/memory_limit = 2048M/" /etc/opt/rh/rh-php72/php.ini ; \
+    sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 50M/" /etc/opt/rh/rh-php72/php.ini ; \
+    sed -i "s/post_max_size = 8M/post_max_size = 50M/" /etc/opt/rh/rh-php72/php.ini ; \
+    mkdir -p /var/www/MISP ; \
+    chown -R apache:apache /var/www/MISP
+
+USER apache
+WORKDIR /var/www/MISP
+RUN git clone https://github.com/MISP/MISP.git /var/www/MISP ; \
+    git submodule update --init --recursive ; \
+    git submodule foreach --recursive git config core.filemode false ; \
+    git config core.filemode false
+
+USER root
+RUN pip3 install --upgrade pip ; \
+    pip3 install git+https://github.com/CybOXProject/mixbox.git ; \
+    pip3 install git+https://github.com/CybOXProject/python-cybox.git ; \
+    pip3 install git+https://github.com/STIXProject/python-stix.git ; \
+    pip3 install git+https://github.com/MAECProject/python-maec.git ; \
+    pip3 install /var/www/MISP/cti-python-stix2 ; \
+    pip3 install /var/www/MISP/PyMISP ; \
+    pip3 install git+https://github.com/kbandla/pydeep.git ; \
+    pip3 install https://github.com/lief-project/packages/raw/lief-master-latest/pylief-0.9.0.dev.zip ; \
+    pip3 install jsonschema ; \
+    pip3 install reportlab ; \
+    pip3 install python-magic ; \
+    pip3 install pyzmq ; \
+    pip3 install redis
+
+USER apache
+WORKDIR /var/www/MISP
+RUN git submodule init ; \
+    git submodule update
+
+USER root
+WORKDIR /usr/local/src
+RUN git clone https://github.com/MISP/misp-modules.git
+WORKDIR /usr/local/src/misp-modules
+RUN git checkout ; \
+    # sudo pip3 install -I -r REQUIREMENTS ;  \
+    LANG=en_US.UTF-8 pip3 install -I -r REQUIREMENTS; \
+    pip3 install -I . ; \
+    mkdir /var/www/.composer && chown -R apache:apache /var/www/.composer ; \
+    cd /tmp ; \
+    wget https://github.com/ssdeep-project/ssdeep/releases/download/release-2.14.1/ssdeep-2.14.1.tar.gz ; \
+    tar zxvf ssdeep-2.14.1.tar.gz && cd ssdeep-2.14.1 && ./configure && make && make install ; \
+    /usr/bin/scl enable rh-php72 "pecl install ssdeep" ; \
+    echo "extension=ssdeep.so" > /etc/opt/rh/rh-php72/php.d/88-ssdeep.ini ; \
+    cd
+
+USER apache
+WORKDIR /var/www/MISP/app
+RUN wget https://getcomposer.org/download/1.2.1/composer.phar -O composer.phar ; \
+    COMPOSER_CACHE_DIR=/var/www/.composer /usr/bin/scl enable rh-php72 "php composer.phar require kamisama/cake-resque:4.1.2" ; \
+    COMPOSER_CACHE_DIR=/var/www/.composer /usr/bin/scl enable rh-php72 "php composer.phar config vendor-dir Vendor" ; \
+    COMPOSER_CACHE_DIR=/var/www/.composer /usr/bin/scl enable rh-php72 "php composer.phar install" ; \
+    sed -i -e "s/bind 127.0.0.1/bind 0.0.0.0/" /etc/redis.conf ; \
+    cp -fa /var/www/MISP/INSTALL/setup/config.php /var/www/MISP/app/Plugin/CakeResque/Config/config.php ; \
+    cp -a /var/www/MISP/app/Config/bootstrap.default.php /var/www/MISP/app/Config/bootstrap.php ; \
+    cp -a /var/www/MISP/app/Config/database.default.php /var/www/MISP/app/Config/database.php ; \
+    cp -a /var/www/MISP/app/Config/core.default.php /var/www/MISP/app/Config/core.php ; \
+    cp -a /var/www/MISP/app/Config/config.default.php /var/www/MISP/app/Config/config.php
+
+USER root
+COPY mispstart.sh /var/www/MISP/app/Console/worker/start.sh
+RUN chown -R apache:apache /var/www/MISP ; \
+    chmod -R 750 /var/www/MISP ; \
+    chmod -R g+ws /var/www/MISP/app/tmp ; \
+    chmod -R g+ws /var/www/MISP/app/files ; \
+    chmod -R g+ws /var/www/MISP/app/files/scripts/tmp
+
+# 80/443 - MISP web server, 3306 - mysql, 6379 - redis, 6666 - MISP modules, 50000 - MISP ZeroMQ
+EXPOSE 80 443 6443 6379 6666 50000
+
+COPY mispsupervisord.conf /etc/supervisord.conf
+#ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+
diff --git a/roles/build/files/misp/mispstart.sh b/roles/build/files/mispstart.sh
similarity index 100%
rename from roles/build/files/misp/mispstart.sh
rename to roles/build/files/mispstart.sh
diff --git a/roles/build/files/mispsupervisord.conf b/roles/build/files/mispsupervisord.conf
new file mode 100644
index 0000000000000000000000000000000000000000..fbd4dea3bbd292aa2eea51772ecc559dc0b51703
--- /dev/null
+++ b/roles/build/files/mispsupervisord.conf
@@ -0,0 +1,25 @@
+[supervisord]
+nodaemon=false
+user=root
+
+[program:php-fpm]
+# EnvironmentFile=/etc/opt/rh/rh-php72/sysconfig/php-fpm
+command=/opt/rh/rh-php72/root/usr/sbin/php-fpm --nodaemonize
+
+[program:redis-server]
+process_name = redis-server
+directory = /var/opt/rh/rh-redis32/lib/redis/
+command=/opt/rh/rh-redis32/root/usr/bin/redis-server /etc/opt/rh/rh-redis32/redis.conf
+user=redis
+
+[program:apache2]
+command=/usr/sbin/httpd -DFOREGROUND
+
+[program:misp-modules]
+command=/bin/bash -c "/usr/local/bin/misp-modules -l '0.0.0.0' -s"
+user = apache
+startsecs = 0
+
+[program:workers]
+command=/bin/bash /var/www/MISP/app/Console/worker/start.sh
+user=apache
diff --git a/roles/build/files/mysql/mysqlsupervisord.conf b/roles/build/files/mysql/mysqlsupervisord.conf
deleted file mode 100644
index 60d3109fc26d3b20de3d811482d1f6f2f2ed6a89..0000000000000000000000000000000000000000
--- a/roles/build/files/mysql/mysqlsupervisord.conf
+++ /dev/null
@@ -1,45 +0,0 @@
-[unix_http_server]
-file=/tmp/supervisor.sock
-
-[supervisord]
-pidfile=/tmp/supervisord.pid
-nodaemon=true
-logfile=/var/log/supervisor/supervisord.log
-logfile_maxbytes=10MB
-logfile_backups=10
-loglevel=info
-childlogdir=/var/log/supervisor/
-
-[rpcinterface:supervisor]
-supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
-
-[supervisorctl]
-serverurl=unix:///tmp/supervisor.sock
-
-[program:mysql]
-user=mysql
-directory=/var/lib/mysql
-command=/opt/rh/rh-mariadb103/root/usr/libexec/mysqld-scl-helper enable rh-mariadb103 -- /opt/rh/rh-mariadb103/root/usr/libexec/mysqld --basedir=/opt/rh/rh-mariadb103/root/usr --log-error=/var/opt/rh/rh-mariadb103/log/mariadb/mariadb.log
-
-[program:cron]
-autostart=true
-autorestart=true
-command=crond -n
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/cron_stderr.log
-stdout_logfile = /var/log/supervisor/cron_stdout.log
-
-[program:filebeat]
-directory=/opt/filebeat
-user=root
-group=root
-command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/filebeat_stderr.log
-stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/mysqlDockerfile b/roles/build/files/mysqlDockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..7c547b1e5959c3352c807b6ec9002673228709c6
--- /dev/null
+++ b/roles/build/files/mysqlDockerfile
@@ -0,0 +1,13 @@
+FROM gn43-dsl/centos:7a20201004
+
+USER root
+RUN yum -y update && yum install -y epel-release centos-release-scl scl-utils && \
+    yum install -y rh-mariadb103 python36-PyMySQL MySQL-python supervisor && \
+    /usr/bin/scl enable rh-mariadb103 -- /opt/rh/rh-mariadb103/root/usr/libexec/mysql-prepare-db-dir /var/opt/rh/rh-mariadb103/lib/mysql 
+RUN yum clean all
+
+EXPOSE 3306
+COPY mysqlsupervisord.conf /etc/supervisord.conf
+
+ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+
diff --git a/roles/build/files/mysqlsupervisord.conf b/roles/build/files/mysqlsupervisord.conf
new file mode 100644
index 0000000000000000000000000000000000000000..e44e9fe1189eae3241d8bb1001c3a081a386353c
--- /dev/null
+++ b/roles/build/files/mysqlsupervisord.conf
@@ -0,0 +1,7 @@
+[supervisord]
+loglevel=debug
+nodaemon=true
+[program:mysql]
+user=mysql
+directory=/var/lib/mysql
+command=/opt/rh/rh-mariadb103/root/usr/libexec/mysqld-scl-helper enable rh-mariadb103 -- /opt/rh/rh-mariadb103/root/usr/libexec/mysqld --basedir=/opt/rh/rh-mariadb103/root/usr
diff --git a/roles/build/files/nifi/nifisupervisord.conf b/roles/build/files/nifi/nifisupervisord.conf
deleted file mode 100644
index dcfa15c6e07538c492047eda004bfaec585237a1..0000000000000000000000000000000000000000
--- a/roles/build/files/nifi/nifisupervisord.conf
+++ /dev/null
@@ -1,44 +0,0 @@
-[unix_http_server]
-file=/tmp/supervisor.sock
-
-[supervisord]
-pidfile=/tmp/supervisord.pid
-nodaemon=true
-logfile=/var/log/supervisor/supervisord.log
-logfile_maxbytes=10MB
-logfile_backups=10
-loglevel=info
-childlogdir=/var/log/supervisor/
-
-[rpcinterface:supervisor]
-supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
-
-[supervisorctl]
-serverurl=unix:///tmp/supervisor.sock
-
-[program:nifi]
-directory=/opt/nifi/nifi-current
-user=nifi
-group=nifi
-command=/bin/bash -c '/opt/nifi/nifi-current/bin/nifi.sh run'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/nifi_stderr.log
-stdout_logfile = /var/log/supervisor/nifi_stdout.log
-
-
-[program:filebeat]
-directory=/opt/filebeat
-user=root
-group=root
-command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/filebeat_stderr.log
-stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/nifiDockerfile b/roles/build/files/nifiDockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..c3ef342673bb0ddaec532229bf8f5d588a753526
--- /dev/null
+++ b/roles/build/files/nifiDockerfile
@@ -0,0 +1,97 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+FROM gn43-dsl/openjdk:7a20201004 
+#LABEL maintainer="Apache NiFi <dev@nifi.apache.org>"
+#LABEL site="https://nifi.apache.org"
+
+ARG UID=1000
+ARG GID=1000
+ARG NIFI_VERSION=1.11.4
+ARG BASE_URL=https://archive.apache.org/dist
+ARG MIRROR_BASE_URL=${MIRROR_BASE_URL:-${BASE_URL}}
+ARG NIFI_BINARY_PATH=${NIFI_BINARY_PATH:-/nifi/${NIFI_VERSION}/nifi-${NIFI_VERSION}-bin.zip}
+ARG NIFI_TOOLKIT_BINARY_PATH=${NIFI_TOOLKIT_BINARY_PATH:-/nifi/${NIFI_VERSION}/nifi-toolkit-${NIFI_VERSION}-bin.zip}
+
+ENV NIFI_BASE_DIR=/opt/nifi
+ENV NIFI_HOME ${NIFI_BASE_DIR}/nifi-current
+ENV NIFI_TOOLKIT_HOME ${NIFI_BASE_DIR}/nifi-toolkit-current
+
+ENV NIFI_PID_DIR=${NIFI_HOME}/run
+ENV NIFI_LOG_DIR=${NIFI_HOME}/logs
+
+# ADD sh/ ${NIFI_BASE_DIR}/scripts/
+
+# Setup NiFi user and create necessary directories
+RUN groupadd -g ${GID} nifi || groupmod -n nifi `getent group ${GID} | cut -d: -f1` \
+    && useradd --shell /bin/bash -u ${UID} -g ${GID} -m nifi \
+    && mkdir -p ${NIFI_BASE_DIR} \
+    && chown -R nifi:nifi ${NIFI_BASE_DIR} \
+    && yum -y install jq xmlstarlet procps-ng
+
+USER nifi
+
+# Download, validate, and expand Apache NiFi Toolkit binary.
+RUN curl -fSL ${MIRROR_BASE_URL}/${NIFI_TOOLKIT_BINARY_PATH} -o ${NIFI_BASE_DIR}/nifi-toolkit-${NIFI_VERSION}-bin.zip \
+    && echo "$(curl ${BASE_URL}/${NIFI_TOOLKIT_BINARY_PATH}.sha256) *${NIFI_BASE_DIR}/nifi-toolkit-${NIFI_VERSION}-bin.zip" | sha256sum -c - \
+    && unzip ${NIFI_BASE_DIR}/nifi-toolkit-${NIFI_VERSION}-bin.zip -d ${NIFI_BASE_DIR} \
+    && rm ${NIFI_BASE_DIR}/nifi-toolkit-${NIFI_VERSION}-bin.zip \
+    && mv ${NIFI_BASE_DIR}/nifi-toolkit-${NIFI_VERSION} ${NIFI_TOOLKIT_HOME} \
+    && ln -s ${NIFI_TOOLKIT_HOME} ${NIFI_BASE_DIR}/nifi-toolkit-${NIFI_VERSION}
+
+# Download, validate, and expand Apache NiFi binary.
+RUN curl -fSL ${MIRROR_BASE_URL}/${NIFI_BINARY_PATH} -o ${NIFI_BASE_DIR}/nifi-${NIFI_VERSION}-bin.zip \
+    && echo "$(curl ${BASE_URL}/${NIFI_BINARY_PATH}.sha256) *${NIFI_BASE_DIR}/nifi-${NIFI_VERSION}-bin.zip" | sha256sum -c - \
+    && unzip ${NIFI_BASE_DIR}/nifi-${NIFI_VERSION}-bin.zip -d ${NIFI_BASE_DIR} \
+    && rm ${NIFI_BASE_DIR}/nifi-${NIFI_VERSION}-bin.zip \
+    && mv ${NIFI_BASE_DIR}/nifi-${NIFI_VERSION} ${NIFI_HOME} \
+    && mkdir -p ${NIFI_HOME}/conf \
+    && mkdir -p ${NIFI_HOME}/database_repository \
+    && mkdir -p ${NIFI_HOME}/flowfile_repository \
+    && mkdir -p ${NIFI_HOME}/content_repository \
+    && mkdir -p ${NIFI_HOME}/provenance_repository \
+    && mkdir -p ${NIFI_HOME}/state \
+    && mkdir -p ${NIFI_LOG_DIR} \
+    && ln -s ${NIFI_HOME} ${NIFI_BASE_DIR}/nifi-${NIFI_VERSION}
+
+#VOLUME ${NIFI_LOG_DIR} \
+#       ${NIFI_HOME}/conf \
+#       ${NIFI_HOME}/database_repository \
+#       ${NIFI_HOME}/flowfile_repository \
+#       ${NIFI_HOME}/content_repository \
+#       ${NIFI_HOME}/provenance_repository \
+#       ${NIFI_HOME}/state
+
+# Clear nifi-env.sh in favour of configuring all environment variables in the Dockerfile
+RUN echo "#!/bin/sh\n" > $NIFI_HOME/bin/nifi-env.sh
+
+# Web HTTP(s) & Socket Site-to-Site Ports
+EXPOSE 8080 8443 10000 8000
+
+WORKDIR ${NIFI_HOME}
+
+# Apply configuration and start NiFi
+#
+# We need to use the exec form to avoid running our command in a subshell and omitting signals,
+# thus being unable to shut down gracefully:
+# https://docs.docker.com/engine/reference/builder/#entrypoint
+#
+# Also we need to use relative path, because the exec form does not invoke a command shell,
+# thus normal shell processing does not happen:
+# https://docs.docker.com/engine/reference/builder/#exec-form-entrypoint-example
+ENTRYPOINT ["/bin/bash"]
diff --git a/roles/build/files/odfees/odfesupervisord.conf b/roles/build/files/odfees/odfesupervisord.conf
deleted file mode 100644
index 975b7cdcb388e0292b82abde53f0a593505bda3c..0000000000000000000000000000000000000000
--- a/roles/build/files/odfees/odfesupervisord.conf
+++ /dev/null
@@ -1,43 +0,0 @@
-[unix_http_server]
-file=/tmp/supervisor.sock
-
-[supervisord]
-pidfile=/tmp/supervisord.pid
-nodaemon=true
-logfile=/var/log/supervisor/supervisord.log
-logfile_maxbytes=10MB
-logfile_backups=10
-loglevel=info
-childlogdir=/var/log/supervisor/
-
-[rpcinterface:supervisor]
-supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
-
-[supervisorctl]
-serverurl=unix:///tmp/supervisor.sock
-
-[program:odfe]
-user=elasticsearch
-group=elasticsearch
-directory=/usr/share/elasticsearch
-command=sh -c "/usr/share/elasticsearch/bin/elasticsearch"
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/elasticsearch_stderr.log
-stdout_logfile = /var/log/supervisor/elasticsearch_stdout.log
-
-[program:filebeat]
-directory=/opt/filebeat
-user=root
-group=root
-command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/filebeat_stderr.log
-stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/odfeesDockerfile b/roles/build/files/odfeesDockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..fedbee116f53049f01eff626f04d0901f61a6095
--- /dev/null
+++ b/roles/build/files/odfeesDockerfile
@@ -0,0 +1,16 @@
+FROM gn43-dsl/elasticsearch:7a20201004
+
+ENV PATH="/usr/share/elasticsearch/bin:${PATH}"
+
+USER root
+WORKDIR /usr/share/elasticsearch
+
+RUN for PLUGIN in \
+    https://d3g5vo6xdbdb9a.cloudfront.net/downloads/elasticsearch-plugins/opendistro-security/opendistro_security-1.4.0.0.zip \
+    https://d3g5vo6xdbdb9a.cloudfront.net/downloads/elasticsearch-plugins/opendistro-alerting/opendistro_alerting-1.4.0.0.zip \
+    https://d3g5vo6xdbdb9a.cloudfront.net/downloads/elasticsearch-plugins/opendistro-sql/opendistro_sql-1.4.0.0.zip; \
+    do bin/elasticsearch-plugin install -b ${PLUGIN}; done && \
+    chown -R elasticsearch plugins/opendistro_security
+
+USER elasticsearch
+
diff --git a/roles/build/files/odfekibanaDockerfile b/roles/build/files/odfekibanaDockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..1945e272dbe7ad17523b795b3ae00d984fa822e5
--- /dev/null
+++ b/roles/build/files/odfekibanaDockerfile
@@ -0,0 +1,18 @@
+FROM gn43-dsl/kibana:7a20201004
+
+ENV PATH="/usr/share/kibana/bin:${PATH}"
+
+USER root
+WORKDIR /usr/share/kibana
+
+RUN for PLUGIN in \
+    https://d3g5vo6xdbdb9a.cloudfront.net/downloads/kibana-plugins/opendistro-security/opendistro_security_kibana_plugin-1.4.0.0.zip \
+    https://d3g5vo6xdbdb9a.cloudfront.net/downloads/kibana-plugins/opendistro-alerting/opendistro-alerting-1.4.0.0.zip \
+    https://d3g5vo6xdbdb9a.cloudfront.net/downloads/kibana-plugins/opendistro-index-management/opendistro_index_management_kibana-1.4.0.0.zip; \
+    do bin/kibana-plugin install --allow-root ${PLUGIN}; done
+
+ADD thehive_button /usr/share/kibana/plugins/thehive_button
+RUN chown -R kibana:kibana /usr/share/kibana/plugins/thehive_button
+
+USER kibana
+
diff --git a/roles/build/files/openjdkDockerfile b/roles/build/files/openjdkDockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..2d83f47915490b23565d16b38b19c44bd2dea498
--- /dev/null
+++ b/roles/build/files/openjdkDockerfile
@@ -0,0 +1,11 @@
+FROM gn43-dsl/centos:7a20201004
+
+RUN yum update -y; \
+    yum install -y wget unzip curl java-1.8.0-openjdk-headless.x86_64
+
+RUN ln -svT "/usr/lib/jvm/java-1.8.0-openjdk-$(rpm -q --queryformat "%{VERSION}-%{RELEASE}.%{ARCH}\n" java-1.8.0-openjdk-headless)" /docker-java-home
+ENV JAVA_HOME /docker-java-home/jre
+
+RUN yum clean all
+
+CMD ["/bin/bash"]
diff --git a/roles/build/files/thehive/thehivesupervisord.conf b/roles/build/files/thehive/thehivesupervisord.conf
deleted file mode 100644
index 8fa1d9384573319fe465395cadc49db68c0a0cfb..0000000000000000000000000000000000000000
--- a/roles/build/files/thehive/thehivesupervisord.conf
+++ /dev/null
@@ -1,43 +0,0 @@
-[unix_http_server]
-file=/tmp/supervisor.sock
-
-[supervisord]
-pidfile=/tmp/supervisord.pid
-nodaemon=true
-logfile=/var/log/supervisor/supervisord.log
-logfile_maxbytes=10MB
-logfile_backups=10
-loglevel=info
-childlogdir=/var/log/supervisor/
-
-[rpcinterface:supervisor]
-supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
-
-[supervisorctl]
-serverurl=unix:///tmp/supervisor.sock
-
-[program:thehive]
-directory=/opt/thehive
-user=thehive
-group=thehive
-command=/bin/bash -c '/opt/thehive/bin/thehive -Dconfig.file=/etc/thehive/application.conf -Dlogger.file=/etc/thehive/logback.xml -J-Xms1g -J-Xmx1g -Dpidfile.path=/dev/null'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/thehive_stderr.log
-stdout_logfile = /var/log/supervisor/thehive_stdout.log
-
-[program:filebeat]
-directory=/opt/filebeat
-user=root
-group=root
-command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/filebeat_stderr.log
-stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/thehiveDockerfile b/roles/build/files/thehiveDockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..ce8ddb82f09b5629c48fad91cb7635b82aacea87
--- /dev/null
+++ b/roles/build/files/thehiveDockerfile
@@ -0,0 +1,24 @@
+FROM gn43-dsl/openjdk:7a20201004
+
+USER root
+#COPY thehive.repo /etc/yum.repos.d/thehive.repo
+#COPY supervisord.conf /etc/supervisord.conf
+#COPY start.sh /start.sh
+RUN echo "[thehive-project]" > /etc/yum.repos.d/thehive.repo && \
+    echo "enabled=1" >> /etc/yum.repos.d/thehive.repo && \
+    echo "priority=1" >> /etc/yum.repos.d/thehive.repo && \
+    echo "name=TheHive-Project RPM repository" >> /etc/yum.repos.d/thehive.repo && \
+    echo "baseurl=http://rpm.thehive-project.org/stable/noarch" >> /etc/yum.repos.d/thehive.repo && \
+    echo "gpgcheck=1" >> /etc/yum.repos.d/thehive.repo && \
+    yum install -y epel-release && \
+    rpm --import https://raw.githubusercontent.com/TheHive-Project/TheHive/master/PGP-PUBLIC-KEY && \
+    yum install -y thehive4 supervisor daemonize vim net-tools telnet htop && \
+    mkdir -p /opt/thp_data/files/thehive && \
+    chown -R thehive:thehive /opt/thp_data/files/thehive && \
+    mkdir -p /home/thehive && \
+    chown -R thehive:thehive /home/thehive /etc/thehive && \
+    yum -y clean all
+EXPOSE 9000
+#ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+USER thehive
+# ENTRYPOINT ["/start.sh"]
diff --git a/roles/build/files/thehive_button/.eslintrc b/roles/build/files/thehive_button/.eslintrc
new file mode 100644
index 0000000000000000000000000000000000000000..64eba86220ec489c9c364e9a443941d14a8d3b16
--- /dev/null
+++ b/roles/build/files/thehive_button/.eslintrc
@@ -0,0 +1,7 @@
+---
+extends: "@elastic/kibana"
+
+settings:
+  import/resolver:
+    '@elastic/eslint-import-resolver-kibana':
+      rootPackageName: 'thehive_button'
diff --git a/roles/build/files/thehive_button/.kibana-plugin-helpers.json b/roles/build/files/thehive_button/.kibana-plugin-helpers.json
new file mode 100644
index 0000000000000000000000000000000000000000..2c63c0851048d8f7bff41ecf0f8cee05f52fd120
--- /dev/null
+++ b/roles/build/files/thehive_button/.kibana-plugin-helpers.json
@@ -0,0 +1,2 @@
+{
+}
diff --git a/roles/build/files/thehive_button/index.js b/roles/build/files/thehive_button/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..fa69c75c30d7ee40f8d7089d6debd6cf69c8d402
--- /dev/null
+++ b/roles/build/files/thehive_button/index.js
@@ -0,0 +1,19 @@
+import newCaseRoute from './server/routes/newcase';
+
+export default function (kibana) {
+  return new kibana.Plugin({
+    require: [], //['elasticsearch'],
+    name: 'thehive_button',
+    uiExports: {
+      visTypes: [
+        'plugins/thehive_button/main',
+      ],
+    },
+
+    init(server, options) { // eslint-disable-line no-unused-vars
+      // Add server routes and initialize the plugin here
+      newCaseRoute(server);
+    }
+  });
+}
+
diff --git a/roles/build/files/thehive_button/package.json b/roles/build/files/thehive_button/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..e1c070d62c2e69b0f42fa4c5d47e1e8c0b408988
--- /dev/null
+++ b/roles/build/files/thehive_button/package.json
@@ -0,0 +1,35 @@
+{
+  "name": "thehive_button",
+  "version": "1.0.0",
+  "description": "Visualisation plugin which creates a simple button to create a new case in The Hive.",
+  "main": "index.js",
+  "kibana": {
+    "version": "7.4.2"
+  },
+  "scripts": {
+    "lint": "eslint .",
+    "start": "plugin-helpers start",
+    "build": "plugin-helpers build"
+  },
+  "dependencies": {
+    "request": "^2.88.0",
+    "@elastic/eui": "10.4.2",
+    "react": "^16.8.0"
+  },
+  "devDependencies": {
+    "@elastic/eslint-config-kibana": "link:../../packages/eslint-config-kibana",
+    "@elastic/eslint-import-resolver-kibana": "link:../../packages/kbn-eslint-import-resolver-kibana",
+    "@kbn/plugin-helpers": "link:../../packages/kbn-plugin-helpers",
+    "babel-eslint": "^9.0.0",
+    "eslint": "^5.6.0",
+    "eslint-plugin-babel": "^5.2.0",
+    "eslint-plugin-import": "^2.14.0",
+    "eslint-plugin-jest": "^21.26.2",
+    "eslint-plugin-jsx-a11y": "^6.1.2",
+    "eslint-plugin-mocha": "^5.2.0",
+    "eslint-plugin-no-unsanitized": "^3.0.2",
+    "eslint-plugin-prefer-object-spread": "^1.2.1",
+    "eslint-plugin-react": "^7.11.1",
+    "expect.js": "^0.3.1"
+  }
+}
diff --git a/roles/build/files/thehive_button/public/create_case.js b/roles/build/files/thehive_button/public/create_case.js
new file mode 100644
index 0000000000000000000000000000000000000000..fc8edd6f6f1e4ccb1b24ec5554e55e2d6503cf6c
--- /dev/null
+++ b/roles/build/files/thehive_button/public/create_case.js
@@ -0,0 +1,101 @@
+// Functions to send data to Kibana endpoints
+
+import chrome from 'ui/chrome';
+
+// Create a new Case in The Hive via its API
+// Return a Promise which resolves to object with ID of the new case ('id' attr) or error message ('error' attr)
+export function createTheHiveCase(base_url, api_key, title, descr, severity, startDate, owner, flag, tlp, tags) {
+  // Prepare data
+  var data = JSON.stringify({
+    "base_url": base_url,
+    "api_key": api_key,
+    "body": {
+      "title": title,
+      "description": descr,
+      "severity": severity, // number: 1=low, 2=medium, 3=high
+      "startDate": startDate,
+      "owner": owner, // user name the case will be assigned to
+      "flag": flag, // bool
+      "tlp": tlp, // number: 0=white, 1=green, 2=amber, 3=red
+      "tags": tags, // array of strings
+    }
+  });
+  console.log("TheHiveButton: Sending request to API endpoint 'new_case':", data);
+  var kibana_endpoint_url = chrome.addBasePath('/api/thehive_button/new_case');
+
+  return new Promise(function (resolve, reject) {
+    // Create AJAX request
+    var xhr = new XMLHttpRequest();
+    
+    // Listener to process reply
+    xhr.onreadystatechange = function () {
+      if (this.readyState != 4) {
+        return; // response not ready yet
+      }
+      if (this.status == 200) {
+        const resp = JSON.parse(this.responseText);
+        console.log("TheHiveButton: Response from backend:", resp);
+        if ("error" in resp) {
+          resolve({"error": resp.error});
+        }
+        else if (resp.status_code != 201) {
+          resolve({"error": "Unexpected reply received from The Hive: [" + resp.status_code + "] " + resp.status_msg});
+        }
+        else {
+          resolve({"id": resp.body.id}); // return ID of the new case
+        }
+      }
+      else {
+        console.log("TheHiveButton: Error " + this.status + ": " + this.statusText);
+        resolve({"error": "Error " + this.status + ": " + this.statusText});
+      }
+    }
+
+    // Send the AJAX request
+    xhr.open("POST", kibana_endpoint_url);
+    xhr.setRequestHeader("Content-Type", "application/json");
+    xhr.setRequestHeader("kbn-xsrf", "thehive_plugin"); // this header must be set, although its content is probably irrelevant
+    xhr.send(data);
+  });
+}
+
+// Add observables to an existing Case in The Hive
+// (send the list of observables to our backend endpoint, it pushes them to The Hive)
+export function addCaseObservables(base_url, api_key, caseid, observables) {
+  const kibana_endpoint_url = chrome.addBasePath('/api/thehive_button/add_observables');
+  const data = JSON.stringify({
+    "base_url": base_url,
+    "api_key": api_key,
+    "caseid": caseid,
+    "observables": observables,
+  });
+  console.log("TheHiveButton: Sending request to API endpoint 'add_observables':", data);
+  
+  return new Promise(function (resolve, reject) {
+    // Create AJAX request
+    var xhr = new XMLHttpRequest();
+    
+    // Listener to process reply
+    xhr.onreadystatechange = function () {
+      if (this.readyState != 4) {
+        return; // response not ready yet
+      }
+      if (this.status == 200) {
+        const resp = JSON.parse(this.responseText);
+        console.log("TheHiveButton: Response from backend:", resp);
+        resolve(resp);
+      }
+      else {
+        console.log("TheHiveButton: Error " + this.status + ": " + this.statusText);
+        resolve({"error": "Error " + this.status + ": " + this.statusText});
+      }
+    }
+
+    // Send the AJAX request
+    xhr.open("POST", kibana_endpoint_url);
+    xhr.setRequestHeader("Content-Type", "application/json");
+    xhr.setRequestHeader("kbn-xsrf", "thehive_plugin"); // this header must be set, although its content is probably irrelevant
+    xhr.send(data);
+  });
+}
+
diff --git a/roles/build/files/thehive_button/public/env.js b/roles/build/files/thehive_button/public/env.js
new file mode 100644
index 0000000000000000000000000000000000000000..4321b85f5ee1682abd17871889a165ae8d96b465
--- /dev/null
+++ b/roles/build/files/thehive_button/public/env.js
@@ -0,0 +1,4 @@
+// Default plugin configuration
+export const THEHIVE_URL = 'https://hive.gn4-3-wp8-soc.sunet.se/';
+export const THEHIVE_API_KEY = '5LymseWiurZBrQN8Kqp8O+9KniTL5cE0';
+export const THEHIVE_OWNER = 'admin'; // default owner account of the created cases
diff --git a/roles/build/files/thehive_button/public/main.js b/roles/build/files/thehive_button/public/main.js
new file mode 100644
index 0000000000000000000000000000000000000000..ee46d73170d4fb43739c58468e3396caace6dcbe
--- /dev/null
+++ b/roles/build/files/thehive_button/public/main.js
@@ -0,0 +1,54 @@
+import { THEHIVE_API_KEY, THEHIVE_URL, THEHIVE_OWNER } from './env';
+import { TheHiveButtonVisComponent } from './vis_controller';
+import { theHiveButtonRequestHandlerProvider } from './request_handler';
+import { optionsEditor } from './options_editor';
+
+import { VisFactoryProvider } from 'ui/vis/vis_factory';
+import { VisTypesRegistryProvider } from 'ui/registry/vis_types';
+import { DefaultEditorSize } from 'ui/vis/editor_size';
+
+
+function TheHiveButtonVisProvider(Private) {
+  const VisFactory = Private(VisFactoryProvider);
+
+  //console.log("default URL:", THEHIVE_URL);
+  //console.log("default API key:", THEHIVE_API_KEY);
+
+  return VisFactory.createReactVisualization({
+    name: 'thehive_button',
+    title: 'The Hive Case',
+    icon: 'alert',
+    description: 'A button to create a new Case in The Hive.',
+    //requiresUpdateStatus: [Status.PARAMS, Status.RESIZE, Status.UI_STATE],
+    visConfig: {
+      component: TheHiveButtonVisComponent,
+      defaults: {
+        // add default parameters
+        url: THEHIVE_URL,
+        apikey: THEHIVE_API_KEY,
+        owner: THEHIVE_OWNER,
+        obsFields: [], // list of objects, e.g. {name: "clientip", type: "ip", cnt: 100}
+      }
+    },
+    //editor: 'default',
+    editorConfig:  {
+      optionTabs: [
+        {
+          name: "options",
+          title: "Options",
+          editor: optionsEditor,
+        }
+      ],
+      defaultSize: DefaultEditorSize.LARGE,
+    },
+//       optionsTemplate: optionsEditor, //optionsTemplate,
+//       //enableAutoApply: true,
+//     },
+    requestHandler: 'theHiveButtonRequestHandler', // own request handler
+    responseHandler: 'none', // pass data as returned by requestHandler
+  });
+}
+
+// register the provider with the visTypes registry
+VisTypesRegistryProvider.register(TheHiveButtonVisProvider);
+
diff --git a/roles/build/files/thehive_button/public/options_editor.js b/roles/build/files/thehive_button/public/options_editor.js
new file mode 100644
index 0000000000000000000000000000000000000000..38762bd463115702a0c4f03f099434485f5d59dc
--- /dev/null
+++ b/roles/build/files/thehive_button/public/options_editor.js
@@ -0,0 +1,176 @@
+import React from 'react';
+import {
+  EuiForm,
+  EuiFormRow,
+  EuiTitle,
+  EuiSpacer,
+  EuiFieldText,
+  EuiFieldNumber,
+  EuiSelect,
+  EuiFlexGroup,
+  EuiFlexItem,
+  EuiButton,
+  EuiButtonIcon,
+} from '@elastic/eui';
+
+// Default data types in The Hive
+const DEFAULT_THE_HIVE_TYPES = [
+  '',
+  'autonomous-system',
+  'domain',
+  'file',
+  'filename',
+  'fqdn',
+  'hash',
+  'ip',
+  'mail',
+  'mail_subject',
+  'regexp',
+  'registry',
+  'uri_path',
+  'url',
+  'user-agent',
+  'other',	
+];
+
+// Options for EuiSelect for selection of field's data type in TheHive
+const typesOptions = DEFAULT_THE_HIVE_TYPES.map( dt => ({value: dt, text: dt}) );
+
+export function optionsEditor(props) {
+  //console.log("editor render(), props:", props);
+  const { stateParams, setValue, setValidity, vis } = props;
+  
+  // onClick/onChange handlers
+  const obsAddNew = () => {
+    const newObsFields = [...stateParams.obsFields, {name: "", type: "", cnt: 100}];
+    // For some reason, first click on the button after editor is loaded does
+    // nothing. Calling setValue twice here fixes it.  
+    setValue("obsFields", newObsFields);
+    setValue("obsFields", newObsFields);
+//     setValidity(false); // since new row is empty, form is always invalid
+  };
+  const obsRemove = (ix) => {
+    let newArray = [...stateParams.obsFields];
+    newArray.splice(ix, 1);
+    setValue("obsFields", newArray);
+//     validate();
+  }
+  const obsSetName = (ix, name) => {
+    let newArray = [...stateParams.obsFields];
+    newArray[ix].name = name;
+    setValue("obsFields", newArray);
+//     validate();
+  } 
+  const obsSetType = (ix, type) => {
+    let newArray = [...stateParams.obsFields];
+    newArray[ix].type = type;
+    setValue("obsFields", newArray);
+//     validate();
+  }
+  const obsSetCnt = (ix, cnt) => {
+    let newArray = [...stateParams.obsFields];
+    newArray[ix].cnt = parseInt(cnt);
+    setValue("obsFields", newArray);
+//     validate();
+  }
+//   const validate = () => {
+//     let valid = true;
+//     for (let field of stateParams.obsFields) {
+//       if (field.name == "" || field.type == "" || field.cnt == "") {
+//         valid = false;
+//         break;
+//       }
+//     }
+//     // TODO check for duplicate fields
+//     setValidity(valid);
+//   }
+  
+  // Get list of all fields in index (except those beginning with "_" or "@")
+  // and create "options" parameter for EuiSelect.
+  // Also, fields with "aggregatable=false" are removed, as they can't be used
+  // with "terms" aggregation we need.
+  // See this for details: https://www.elastic.co/guide/en/elasticsearch/reference/7.x/fielddata.html
+  // Empty field is added at the beginning, meaning "no selection yet".
+  const fieldOptions = [{value: "", text: ""}].concat(
+    vis.indexPattern.fields.raw.filter( f => (f.name[0] != "_" && f.name[0] != "@" && f.aggregatable) ).map( f => ({value: f.name, text: `${f.name} (${f.type})`}) )
+  );
+
+  return <EuiForm>
+    <EuiFormRow fullWidth={true} label="Base URL of The Hive">
+      <EuiFieldText
+        fullWidth={true}
+        value={stateParams.url}
+        onChange={e => setValue('url', e.target.value)}
+        isInvalid={stateParams.url == ""}
+      />
+    </EuiFormRow>
+    <EuiFlexGroup>
+      <EuiFlexItem grow={1}>
+        <EuiFormRow label="API key to access The Hive" helpText="API key of a user with write permission.">
+          <EuiFieldText
+            fullWidth={true}
+            value={stateParams.apikey}
+            onChange={e => setValue('apikey', e.target.value)}
+            isInvalid={stateParams.apikey == ""}
+          />
+        </EuiFormRow>
+      </EuiFlexItem>
+      <EuiFlexItem grow={1}>
+        <EuiFormRow label="Assignee" helpText="User to assign created cases to. Must be a valid username from The Hive instance.">
+          <EuiFieldText
+            value={stateParams.owner}
+            onChange={e => setValue('owner', e.target.value)}
+            isInvalid={stateParams.owner == ""}
+          />
+        </EuiFormRow>
+      </EuiFlexItem>
+    </EuiFlexGroup>
+    <EuiTitle size="s"><h3>Fields to get potential observables from ...</h3></EuiTitle>
+    <EuiSpacer size="s" />
+    {stateParams.obsFields.map( (field, ix) => (
+      <EuiFlexGroup key={ix} gutterSize="s">
+        <EuiFlexItem grow={3}>
+          <EuiFormRow label="Field name">
+            <EuiSelect
+              options={fieldOptions}
+              value={field.name}
+              onChange={ e => obsSetName(ix, e.target.value) }
+              isInvalid={field.name == ""}
+            />
+          </EuiFormRow>
+        </EuiFlexItem>
+        <EuiFlexItem grow={2}>
+          <EuiFormRow label="Data type in The Hive">
+            <EuiSelect
+              options={typesOptions}
+              value={field.type}
+              onChange={ e => obsSetType(ix, e.target.value) }
+              isInvalid={field.type == ""}
+            />
+          </EuiFormRow>
+        </EuiFlexItem>
+        <EuiFlexItem grow={1}>
+          <EuiFormRow label="Max items shown">
+            <EuiFieldNumber
+              min={1}
+              max={1000}
+              value={parseInt(field.cnt)}
+              onChange={ e => obsSetCnt(ix, e.target.value) }
+              isInvalid={!(field.cnt > 0)}
+            />
+          </EuiFormRow>
+        </EuiFlexItem>
+        <EuiFlexItem grow={false}>
+          <EuiFormRow hasEmptyLabelSpace>
+            <EuiButtonIcon iconType="trash" iconSize="m" color="danger" aria-label="Remove field" onClick={ e => obsRemove(ix) } />
+          </EuiFormRow>
+        </EuiFlexItem>
+      </EuiFlexGroup>
+    ))}
+    <EuiFlexGroup>
+      <EuiFlexItem grow={false}>
+        <EuiButton iconType="plusInCircleFilled" color="primary" onClick={obsAddNew}>Add new field ...</EuiButton>
+      </EuiFlexItem>
+    </EuiFlexGroup>
+  </EuiForm>
+}
diff --git a/roles/build/files/thehive_button/public/options_template.html b/roles/build/files/thehive_button/public/options_template.html
new file mode 100644
index 0000000000000000000000000000000000000000..ef996577786150282c2ffb0d28652a3d1712842b
--- /dev/null
+++ b/roles/build/files/thehive_button/public/options_template.html
@@ -0,0 +1,8 @@
+<div class="form-group">
+  <p><label>Base URL of The Hive</label>
+  <input ng-model="editorState.params.url" class=form-control /></p>
+  <p><label>API key</label>
+  <input ng-model="editorState.params.apikey" class=form-control /></p>
+  <p><label>User name to use as the owner of cases created from here</label>
+  <input ng-model="editorState.params.owner" class=form-control /></p>
+</div>
diff --git a/roles/build/files/thehive_button/public/request_handler.js b/roles/build/files/thehive_button/public/request_handler.js
new file mode 100644
index 0000000000000000000000000000000000000000..bdbb0f4ebee4ff5307a1bf549706bf1ecc92e11b
--- /dev/null
+++ b/roles/build/files/thehive_button/public/request_handler.js
@@ -0,0 +1,195 @@
+import { CourierRequestHandlerProvider as courierRequestHandlerProvider } from 'ui/vis/request_handlers/courier';
+import { SearchSourceProvider } from 'ui/courier/search_source';
+import { RequestAdapter, DataAdapter } from 'ui/inspector/adapters';
+import { VisRequestHandlersRegistryProvider } from 'ui/registry/vis_request_handlers';
+import { AggConfig } from 'ui/vis/agg_config';
+import { AggConfigs } from 'ui/vis/agg_configs';
+import { getTime } from 'ui/timefilter/get_time';
+import { i18n } from '@kbn/i18n';
+import { has } from 'lodash';
+import { calculateObjectHash } from 'ui/vis/lib/calculate_object_hash';
+import { getRequestInspectorStats, getResponseInspectorStats } from 'ui/courier/utils/courier_inspector_utils';
+import chrome from 'ui/chrome';
+
+// Maximum number of unique values of each field (observables) to fetch
+const MAX_NUMBER_OF_TERMS = 5;
+
+const handleCourierRequest = courierRequestHandlerProvider().handler;
+
+// Register new RaquestHandlerProvider 
+const theHiveButtonRequestHandlerProvider = function () {
+  return {
+    name: 'theHiveButtonRequestHandler',
+    handler: theHiveButtonRequestHandler,
+  }
+}
+VisRequestHandlersRegistryProvider.register(theHiveButtonRequestHandlerProvider);
+
+export {theHiveButtonRequestHandlerProvider, theHiveButtonRequestHandler};
+
+
+// The request handler function itself
+async function theHiveButtonRequestHandler(params) {
+  //console.log("theHiveButtonRequestHandler params:", params);
+  
+  let index = params.index;
+  let partialRows = params.partialRows;
+  let metricsAtAllLevels = params.metricsAtAllLevels;
+  let timeRange = params.timeRange;
+  let query = params.query;
+  let filters = params.filters;
+  let inspectorAdapters = params.inspectorAdapters;
+  let queryFilter = params.queryFilter;
+  let forceFetch = params.forceFetch;
+  // our own confiuration:
+  // list of fields to get potential observables from
+  // (each "field" is object {name: str, type: str, cnt: int})
+  let obsFields = params.visParams.obsFields;
+  
+  // filter out invalid field specifications
+  obsFields = obsFields.filter( f => (f.name != "" && f.type != "" && f.cnt > 0) );
+  
+  if (obsFields.length == 0) {
+    //console.log("theHiveButtonRequestHandler: Empty obsFields, nothing to do")
+    return {} // no fields specified, nothing to do
+  }
+
+  // === Prepare request to ask for unique values of all selected fields ===
+
+  // Construct a query for ElasticSearch
+  // Get "terms" (most common unique values) for each field of obsFields
+  const aggs_dsl = {}
+  for (let field of obsFields) {
+    aggs_dsl[field.name] = {
+      terms: {
+          field: field.name,
+          size: field.cnt,
+          order: {_count: "desc"}
+        }
+    };
+  }
+  //console.log("aggs_dsl:", aggs_dsl);
+  
+  // Create empty AggConfigs
+  // (We could pass specifications of a metric and the buckets here,
+  //  but default processing functions assume multiple buckets are sub-buckets,
+  //  which is not what we want. So we must do a "hack" and manually create  
+  //  query directly in format for ElasticSearch)
+  const aggs = new AggConfigs(params.index, []);
+  
+  // === Some magic to get searchSource object ===
+  // (inspired by https://github.com/fbaligand/kibana-enhanced-table/blob/7.4/public/data_load/enhanced-table-request-handler.js)
+  // (I don't understand it, but it works)
+
+  let $injector = await chrome.dangerouslyGetActiveInjector();
+  let Private = $injector.get('Private');
+  let SearchSource = Private(SearchSourceProvider);
+  let searchSource = new SearchSource();
+  searchSource.setField('index', index);
+  searchSource.setField('size', 0);
+
+  inspectorAdapters.requests = new RequestAdapter();
+  inspectorAdapters.data = new DataAdapter();
+  
+
+  // === Execute query ===
+  // We could call standard "courier" here, but it tries to convert the response
+  // to a table, which fails in our case, so we copied the main code of courier
+  // and modified it here.
+  
+  const abortSignal = false;
+  
+  const timeFilterSearchSource = searchSource.createChild({ callParentStartHandlers: true });
+  const requestSearchSource = timeFilterSearchSource.createChild({ callParentStartHandlers: true });
+
+  aggs.setTimeRange(timeRange);
+
+  // For now we need to mirror the history of the passed search source, since
+  // the request inspector wouldn't work otherwise.
+  Object.defineProperty(requestSearchSource, 'history', {
+    get() {
+      return searchSource.history;
+    },
+    set(history) {
+      return searchSource.history = history;
+    }
+  });
+
+  // This has been modified to override DSL format by ours
+//   requestSearchSource.setField('aggs', function () {
+//     return aggs.toDsl(metricsAtAllLevels);
+//   });
+  requestSearchSource.setField('aggs', aggs_dsl); 
+
+  requestSearchSource.onRequestStart((searchSource, searchRequest) => {
+    return aggs.onSearchRequestStart(searchSource, searchRequest);
+  });
+
+  if (timeRange) {
+    timeFilterSearchSource.setField('filter', () => {
+      return getTime(searchSource.getField('index'), timeRange);
+    });
+  }
+
+  requestSearchSource.setField('filter', filters);
+  requestSearchSource.setField('query', query);
+
+  const reqBody = await requestSearchSource.getSearchRequestBody();
+
+  const queryHash = calculateObjectHash(reqBody);
+  // We only need to reexecute the query, if forceFetch was true or the hash of the request body has changed
+  // since the last request
+  const shouldQuery = forceFetch || (searchSource.lastQuery !== queryHash);
+
+  if (shouldQuery) {
+    inspectorAdapters.requests.reset();
+    const request = inspectorAdapters.requests.start(
+      i18n.translate('common.ui.vis.courier.inspector.dataRequest.title', { defaultMessage: 'Data' }),
+      {
+        description: i18n.translate('common.ui.vis.courier.inspector.dataRequest.description',
+          { defaultMessage: 'This request queries Elasticsearch to fetch the data for the visualization.' }),
+      }
+    );
+    request.stats(getRequestInspectorStats(requestSearchSource));
+
+    try {
+      // Abort any in-progress requests before fetching again
+      if (abortSignal) {
+        abortSignal.addEventListener('abort', () => requestSearchSource.cancelQueued());
+      }
+
+      const response = await requestSearchSource.fetch();
+      //console.log("raw response:", response);
+
+      searchSource.lastQuery = queryHash;
+
+      request
+        .stats(getResponseInspectorStats(searchSource, response))
+        .ok({ json: response });
+
+      searchSource.rawResponse = response;
+    } catch(e) {
+      // Log any error during request to the inspector
+      request.error({ json: e });
+      throw e;
+    } finally {
+      // Add the request body no matter if things went fine or not
+      requestSearchSource.getSearchRequestBody().then(req => {
+        request.json(req);
+      });
+    }
+  }
+
+  // === Copy of courier code ends here, now we parse the response ===
+  
+  const resp = searchSource.rawResponse;
+  // Return as object containing a list of unique values (terms) for each 
+  // requested field
+  let unique_values_lists = {}
+  for (let field of obsFields) {
+    unique_values_lists[field.name] = resp.aggregations[field.name].buckets.map( (x) => x.key );
+  }
+
+  //console.log("Final lists:", unique_values_lists);
+  return unique_values_lists;
+}
diff --git a/roles/build/files/thehive_button/public/vis.less b/roles/build/files/thehive_button/public/vis.less
new file mode 100644
index 0000000000000000000000000000000000000000..b6f887afaef57a7674a0d0f06ee6f821a0fc015e
--- /dev/null
+++ b/roles/build/files/thehive_button/public/vis.less
@@ -0,0 +1,3 @@
+.myvis-container-div {
+  padding: 1em;
+}
diff --git a/roles/build/files/thehive_button/public/vis_controller.js b/roles/build/files/thehive_button/public/vis_controller.js
new file mode 100644
index 0000000000000000000000000000000000000000..8b23222700ab072c9665442851982e11cdc56788
--- /dev/null
+++ b/roles/build/files/thehive_button/public/vis_controller.js
@@ -0,0 +1,555 @@
+//import { Status } from 'ui/vis/update_status';
+import { toastNotifications } from 'ui/notify';
+import { createTheHiveCase, addCaseObservables } from './create_case';
+//import vis_template from './vis_template.html';
+
+import React, { Component } from 'react';
+import {
+  EuiButton,
+  EuiButtonEmpty,
+  EuiModal,
+  EuiModalBody,
+  EuiModalFooter,
+  EuiModalHeader,
+  EuiModalHeaderTitle,
+  EuiOverlayMask,
+  EuiTitle,
+  EuiFlexGroup,
+  EuiFlexItem,
+  EuiSpacer,
+  EuiForm,
+  EuiFormRow,
+  EuiFieldText,
+  EuiTextArea,
+  EuiSuperSelect,
+  EuiBasicTable,
+  EuiCheckbox,
+  makeId,
+} from '@elastic/eui';
+
+
+// ********** React components **********
+
+// Main React component - the root of visualization
+export class TheHiveButtonVisComponent extends Component {
+  render() {
+    //console.log("TheHiveButtonVisComponent.render(), props:", this.props);
+    return (
+      <div>
+        <NewCaseButton params={this.props.vis.params} observables={this.props.visData} />
+      </div>
+    );
+  }
+
+  componentDidMount() {
+    this.props.renderComplete();
+  }
+
+  componentDidUpdate() {
+    this.props.renderComplete();
+  }
+}
+
+// Button to show the pop-up window (modal)
+// Props:
+//  .params - visualization parameters (from vis.params)
+//  .observables - object with lists of potential observables to add to the Case
+//     for each field in params.obsFields there should be a key in this object
+//     containing list of observables (this is returned by request_handler) 
+class NewCaseButton extends Component {
+
+  constructor(props) {
+    super(props);
+    // Filter out invalid obsField specifications
+    this.obsFields = props.params.obsFields.filter( f => (f.name != "" && f.type != "" && f.cnt > 0) );
+    //console.log("Filtered field specs:", this.obsFields);
+    
+    // The complete state is here, so it's kept even when modal is closed
+    this.state = {
+      isModalVisible: false,
+      isWorking: false, // used to show a spinner on submit button
+      ...this.create_initial_state(),
+    }
+    
+    this.resetCnt = 0; // used to change Modal component key on each form reset
+
+    // Each handler function in a class (method) must be "binded" this way
+    this.closeModal = this.closeModal.bind(this);
+    this.showModal = this.showModal.bind(this);
+    this.resetForm = this.resetForm.bind(this);
+
+    this.onTitleChange = this.onTitleChange.bind(this);
+    this.onSeverityChange = this.onSeverityChange.bind(this);
+    this.onTLPChange = this.onTLPChange.bind(this);
+    this.onDescriptionChange = this.onDescriptionChange.bind(this);
+    
+    this.onObsSelectionChange = this.onObsSelectionChange.bind(this);
+    this.onObsDataChange = this.onObsDataChange.bind(this);
+    
+    this.submitCase = this.submitCase.bind(this);
+  }
+
+  create_initial_state() {
+    // create a new instance of initial state definition
+    let initial_state = {
+      // Case parameters
+      title: "",
+      description: "\n\n--\nCreated from Kibana",
+      severity: "2", // medium
+      tlp: "2", // amber
+      tags: [], // TODO (not implemented yet)
+      obsData: {}, // state of observables form fields (obsData->field->index->{descr,tlp,ioc,tags})
+      obsSel: {}, // list of observable selections (obsSel->field->list_of_selected_indices)
+    }
+    // pre-fill state of each observable to defaults
+    const initial_field_data = {descr: "", tlp: 2, ioc: false, tags: []};
+    for (let field of this.obsFields) {
+      const n_obs = this.props.observables[field.name].length;
+      // fill obsData with new copies of initial_field_data
+      initial_state.obsData[field.name] = new Array(n_obs).fill().map((_)=>({...initial_field_data}));
+      // nothing is selected
+      initial_state.obsSel[field.name] = new Array();
+    }
+    return initial_state;
+  }
+
+  componentDidUpdate(prevProps) {
+    // If list of observables was updated or obsFields setting has changed, 
+    // reset the component state and precomputed variables.
+    if (this.props.observables != prevProps.observables) {
+      if (this.props.params.obsFields != prevProps.params.obsFields) {
+        // when obsFields change, observables must change as well, so this "if"
+        // can be inside the first one.
+        // Filter out invalid obsField specifications
+        this.obsFields = this.props.params.obsFields.filter( f => (f.name != "" && f.type != "" && f.cnt && f.cnt > 0) );
+        //console.log("Filtered field specs:", this.obsFields);
+      }
+      //console.log("New list of observables, resetting form.");
+      this.resetForm();
+    }
+  }
+
+  resetForm() {
+    this.setState(this.create_initial_state());
+    this.resetCnt += 1; // this changes the key of ModalContent, causing it to be replaced by new DOM elelments (otherwise, not all things are reset properly)
+    this.forceUpdate();
+  }
+
+  closeModal() {
+    this.setState({ isModalVisible: false });
+  }
+
+  showModal() {
+    this.setState({ isModalVisible: true });
+  }
+
+  // Event handlers for change of case parameter
+  onTitleChange(evt) {
+    this.setState({title: evt.target.value});
+  }
+  onSeverityChange(value) {
+    this.setState({severity: value});
+  }
+  onTLPChange(value) {
+    this.setState({tlp: value});
+  }
+  onDescriptionChange(evt) {
+    this.setState({description: evt.target.value});
+  }
+
+  // Event handler for observable (de)selection
+  onObsSelectionChange(fieldName, selectedItems) {
+    // Extract indices from the items and store them into state
+    const selectedIndices = selectedItems.map(item4 => item4.i);
+    this.setState((state, props) => {
+      let newObsSel = {...this.state.obsSel};
+      newObsSel[fieldName] = selectedIndices;
+      return {obsSel: newObsSel};
+    });
+  }
+
+  // Event handler for edit of a form field in observable row
+  // - fieldName: which field (table of observables)
+  // - ix: index of the observable in the field's table
+  // - param: one of: descr,tlp,ioc,tags
+  // - value: new value of the form field
+  onObsDataChange(fieldName, ix, param, value) {
+    this.setState((state, props) => {
+      let newObsData = {...this.state.obsData};
+      newObsData[fieldName][ix][param] = value;
+      return {obsData: newObsData};
+    });
+  }
+
+  // Render function
+  render() {
+    let modal;
+    if (this.state.isModalVisible) {
+      modal = <ModalContent
+        resetCnt={this.resetCnt} // used to change "key" of modalBody, causing all form fields to be re-created (some things are not reset properly by reseting state only)
+        close={this.closeModal}
+        reset={this.resetForm}
+        fields={this.obsFields}
+        observables={this.props.observables}
+        // form state
+        title={this.state.title}
+        description={this.state.description}
+        severity={this.state.severity}
+        tlp={this.state.tlp}
+        tags={this.state.tags}
+        obsData={this.state.obsData}
+        obsSel={this.state.obsSel}
+        spinner={this.state.isWorking}
+        // event handlers
+        onTitleChange={this.onTitleChange}
+        onSeverityChange={this.onSeverityChange}
+        onTLPChange={this.onTLPChange}
+        onDescriptionChange={this.onDescriptionChange}
+        onObsSelectionChange={this.onObsSelectionChange}
+        onObsDataChange={this.onObsDataChange}
+        submitCase={this.submitCase}
+      />;
+    }
+    return (
+      <div>
+        <EuiButton fill iconType="alert" color="danger" onClick={this.showModal}>Create new Case ...</EuiButton>
+        {modal}
+      </div>
+    );
+  }
+
+  // Submit case button handler
+  async submitCase(evt) {
+    const params = this.props.params;
+    
+    // Get case parameters
+    const title = this.state.title;
+    const descr = this.state.description;
+    const severity = parseInt(this.state.severity);
+    const start_date = null;
+    const owner = params.owner;
+    const flag = false;
+    const tlp = parseInt(this.state.tlp);
+    const tags = this.state.tags;
+    
+    if (!title) {
+      toastNotifications.addDanger("Title can't be empty");
+      return;
+    }
+    
+    // Get list of selected observables and their params
+    let observables = [];
+    for (let field of this.obsFields) {
+      let selectionIndices = [...this.state.obsSel[field.name]]; // make a copy
+      selectionIndices.sort();
+      for (let i = 0; i < selectionIndices.length; i++) {
+        const j = selectionIndices[i]; // index of a selected obs. in the list of all observables
+        // fill in observable definition according to model at
+        // https://github.com/TheHive-Project/TheHiveDocs/blob/master/api/artifact.md
+        const obs = {
+          dataType: field.type,
+          data: this.props.observables[field.name][j],
+          message: this.state.obsData[field.name][j].descr,
+          tlp: this.state.obsData[field.name][j].tlp,
+          ioc: this.state.obsData[field.name][j].ioc,
+          tags: this.state.obsData[field.name][j].tags,
+        };
+        observables.push(obs);
+      }
+    }
+    
+    //console.log("Selected observables:", observables);
+    
+    // Check '/' at the end of base URL, add it if needed
+    let base_url = params.url;
+    if (base_url[base_url.length-1] != "/") {
+      base_url += "/";
+    }
+    
+    // Show spinner at submit button
+    this.setState({isWorking: true});
+    
+    // Submit request to create the case, handle response
+    let resp;
+    resp = await createTheHiveCase(base_url, params.apikey, title, descr, severity, start_date, owner, flag, tlp, tags);
+
+    if ('error' in resp) {
+      // Error contacting The Hive
+      console.error("TheHiveButton: ERROR when trying to create new case:", resp.error);
+      toastNotifications.addDanger("ERROR: " + resp.error);
+      this.setState({isWorking: false}); // Hide spinner
+      return;
+    }
+
+    console.log("TheHiveButton: Case created:", resp);
+    const case_id = resp.id;
+    const case_url = base_url + "index.html#/case/" + case_id + "/details";
+    
+    // Show notification
+    let obs_text;
+    if (observables.length > 0) {
+      obs_text = "Adding " + observables.length + " observables in background ...";
+    }
+    else {
+      obs_text = "(no observables added)";
+    }
+    toastNotifications.add({
+      title: "Case created",
+      color: "success",
+      iconType: "checkInCircleFilled",
+      text: (
+        <div>
+          <p><b><a href={case_url} target="_blank">Edit the new Case</a></b></p>
+          <p>{obs_text}</p>
+        </div>
+      ),
+    });
+    
+    // Close the popup window, reset form fields and hide spinner
+    this.closeModal();
+    this.resetForm();
+    this.setState({isWorking: false});
+     
+    // Open a new window with the case in The Hive
+    // (adding observables may take some time, so the case is opened first;
+    //  The Hive web is dynamic so the observables appear as they are added)
+    window.open(case_url, '_blank');
+    
+    if (observables.length == 0)
+      return;
+    
+    // Submit request to add observables
+    console.log("TheHiveButton: adding " + observables.length + " observables ...");
+    resp = await addCaseObservables(base_url, params.apikey, case_id, observables);
+    
+    if ('error' in resp) {
+      console.error("TheHiveButton: ERROR when trying to add observables: " + resp.error);
+      toastNotifications.addDanger("ERROR when trying to add observables: " + resp.error);
+    }
+    else {
+      console.log("TheHiveButton: Done, observables added.");
+      toastNotifications.add("Done, observables added.");
+    }
+  }
+}
+
+
+// The popup window with a form
+// props:
+//  - spinner: when true, disable form and show a spinner over it
+class ModalContent extends Component {
+  constructor(props) {
+    super(props);
+    // No state here, everything is in the parent class (NewCaseButton)
+    
+    // "Select" options
+    this.severityOptions = [
+      {value: "1", inputDisplay: "low"},
+      {value: "2", inputDisplay: "medium"},
+      {value: "3", inputDisplay: "high"},
+    ];
+    this.tlpOptions = [
+      {value: "0", inputDisplay: "white"},
+      {value: "1", inputDisplay: "green"},
+      {value: "2", inputDisplay: "amber"},
+      {value: "3", inputDisplay: "red"},
+    ];
+  }
+  
+  // Main render function
+  render() {
+    // TODO: replace Modal with Flyout?
+
+    // Note: onClick on EuiOverlayMask causes close of modal when clicked outside,
+    // implementation inspired by PR: https://github.com/elastic/eui/pull/3462/files#diff-c8fda532e48f75c94c343247cbc6b2d3R53-R60
+    return (
+      <EuiOverlayMask onClick={(evt) => {if (evt.target.classList.contains("euiOverlayMask")) this.props.close();} }>
+        <EuiModal onClose={this.props.close} maxWidth={false} initialFocus="[name=title]">
+          <EuiModalHeader>
+            <EuiModalHeaderTitle>Create a new case in The Hive</EuiModalHeaderTitle>
+          </EuiModalHeader>
+
+          <EuiModalBody key={this.props.resetCnt}>
+            <EuiForm style={{width: "800px"}}>
+              <EuiFlexGroup>
+                <EuiFlexItem grow={1}>
+                  <EuiFormRow label="Title" fullWidth>
+                    <EuiFieldText name="title" value={this.props.title} onChange={this.props.onTitleChange} required={true} fullWidth />
+                  </EuiFormRow>
+                </EuiFlexItem>
+                <EuiFlexItem grow={false}>
+                  <EuiFormRow label="Severity">
+                    <EuiSuperSelect
+                      options={this.severityOptions}
+                      valueOfSelected={this.props.severity}
+                      onChange={this.props.onSeverityChange}
+                    />
+                  </EuiFormRow>
+                </EuiFlexItem>
+                <EuiFlexItem grow={false}>
+                  <EuiFormRow label="TLP">
+                    <EuiSuperSelect
+                      prepend="TLP"
+                      options={this.tlpOptions}
+                      valueOfSelected={this.props.tlp}
+                      onChange={this.props.onTLPChange}
+                    />
+                  </EuiFormRow>
+                </EuiFlexItem>
+              </EuiFlexGroup>
+              <EuiFormRow label="Description" fullWidth>
+                <EuiTextArea
+                  defaultValue={this.props.description}
+                  onChange={this.props.onDescriptionChange}
+                  rows={4}
+                  fullWidth
+                />
+              </EuiFormRow>
+              
+              {this.props.fields.length > 0 && <EuiTitle size="s"><h3>Add observables from current query ...</h3></EuiTitle>}
+              {this.props.fields.map((field,ix) => (
+                <ObservablesTable
+                  key={field.name + ":" + this.props.resetCnt}
+                  fieldName={field.name}
+                  observables={this.props.observables[field.name]}
+                  obsData={this.props.obsData[field.name]}
+                  obsSel={this.props.obsSel[field.name]}
+                  onObsSelectionChange={this.props.onObsSelectionChange}
+                  onObsDataChange={this.props.onObsDataChange}
+                />
+              ))}
+            </EuiForm>
+          </EuiModalBody>
+
+          <EuiModalFooter>
+            <EuiButtonEmpty onClick={this.props.close}>Close</EuiButtonEmpty>
+            <EuiButtonEmpty onClick={this.props.reset}>Reset</EuiButtonEmpty>
+            <EuiButton onClick={this.props.submitCase} fill isLoading={this.props.spinner}>Create Case</EuiButton>
+          </EuiModalFooter>
+        </EuiModal>
+      </EuiOverlayMask>
+    );
+  }
+}
+
+// Table of potential observables taken from a given field, allowing to select
+// which observables to send to The Hive.
+// Props:
+//  fieldName - name of the field this table is for
+//  observables - list of observable IDs of this field
+//  obsData - array of objects specifying state of form fields in the table (.descr, .tlp, ...)
+//  obsSel - array of indices of selected observables
+class ObservablesTable extends Component {
+
+  constructor(props) {
+    super(props);
+    
+    // Table columns definition
+    this.columns = [
+      {
+        field: "id",
+        name: "Observable",
+      },
+      {
+        field: "descr",
+        name: "Description",
+        description: "Description of the observable in the context of the case",
+        render: (value, item1) => (<EuiFieldText
+          value={item1.descr}
+          onChange={(e) => this.props.onObsDataChange(props.fieldName, item1.i, "descr", e.target.value)}
+          disabled={!item1.selected}
+        />)
+      },
+      /*{
+        field: "tlp",
+        name: "TLP",
+        dataType: "number",
+        // TODO render and process changes
+      },*/
+      {
+        field: "ioc",
+        name: "Is IOC",
+        dataType: "boolean",
+        description: "Indicates if the observable is an IOC",
+        render: (value, item2) => (<EuiCheckbox
+          id={"ioc-checkbox-"+item2.id}
+          checked={item2.ioc}
+          onChange={(e) => this.props.onObsDataChange(props.fieldName, item2.i, "ioc", e.target.checked)}
+          disabled={!item2.selected}
+        />)
+      },
+      /*{
+        field: "tags",
+        name: "Tags",
+        // TODO render and process changes
+      },*/
+    ]
+    
+    // Create a reference to EuiBasicTable, so it's node can be accessed in componentDidMount
+    this.tableRef = React.createRef();
+  }
+
+  render() {
+    // Table data definition (convert props to format suitable for EuiBasicTable)
+    const n_obs = this.props.observables.length;
+    this.table_data = new Array(n_obs);
+    for (let i = 0; i < n_obs; i++) {
+      this.table_data[i] = {
+        id: this.props.observables[i],
+        descr: this.props.obsData[i].descr,
+        tlp: this.props.obsData[i].tlp,
+        ioc: this.props.obsData[i].ioc,
+        tags: this.props.obsData[i].tags,
+        // auxiliary fields, not shown in table:
+        i: i, // row index
+        selected: this.props.obsSel.includes(i),
+      };
+    }
+    
+    return (
+      <>
+        <EuiTitle size="xs"><h4>{this.props.fieldName}</h4></EuiTitle>
+        <EuiBasicTable
+          ref={this.tableRef}
+          columns={this.columns}
+          items={this.table_data}
+          itemId={(item3) => item3.id}
+          selection={ {onSelectionChange: (selectedItems) => this.props.onObsSelectionChange(this.props.fieldName, selectedItems) } }
+          noItemsMessage="No observables found"
+          rowProps={{
+            // Hack to allow selection by clicking anywhere in the table row
+            // (except input elements)
+            onClick: (e) => {
+              if (e.target.tagName != "INPUT") {
+                // simulate click on the first checkbox in the row to (de)select the row
+                e.currentTarget.querySelector("input").click();
+                e.currentTarget.blur(); // without this the focus remains on the row after click (results in different color)
+              }
+            },
+            tabIndex: "-1", // prevents focus on row by keyboard navigation
+          }}
+        />
+        <EuiSpacer size="l" />
+      </>
+    )
+  }
+  
+  componentDidMount() {
+    // There's no way to specify initially selected items in EuiBasicTable by 
+    // props, but we may need to select some (in case a user selects some obs.,
+    // closes the modal and opens it again).
+    // However, the selection is stored as a 'selection' field of table's state,
+    // so here we directly edit the state just after the table is created.
+    
+    // Prepare the 'selection' array - it should contain a list of selected row specifications
+    let selection = [];
+    for (let ix of this.props.obsSel) {
+      selection.push(this.table_data[ix]);
+    }
+    
+    // Get ref to EuiBasicTable element and update its state 
+    const table_node = this.tableRef.current;
+    table_node.setState({selection: selection});
+  }
+}
+
diff --git a/roles/build/files/thehive_button/server/routes/newcase.js b/roles/build/files/thehive_button/server/routes/newcase.js
new file mode 100644
index 0000000000000000000000000000000000000000..175dee818c5569a5e5e02db31a6e443abe5f03fb
--- /dev/null
+++ b/roles/build/files/thehive_button/server/routes/newcase.js
@@ -0,0 +1,153 @@
+const request = require('request');
+//const fs = require('fs');
+//const path = require('path');
+
+//const caFile = path.resolve(__dirname, '../../ca.cert.pem'); // TODO resolve where the CA file should be located / configured
+
+export default function (server) {
+  server.route({
+    path: '/api/thehive_button/new_case',
+    method: 'POST',
+    handler: newCaseHandler,
+  });
+  server.route({
+    path: '/api/thehive_button/add_observables',
+    method: 'POST',
+    handler: addObservablesHandler,
+  });
+}
+
+// Handler of ajax requests to create a new Case in The Hive
+function newCaseHandler(req, resp) {
+  // Parse the request to get connection parameters
+  // (everything is configured in forntend and sent as part of the request,
+  //  since I don't know how to configure the backend)
+  var base_url = req.payload['base_url'];
+  var api_key = req.payload['api_key'];
+  var req_body = req.payload['body'];
+
+  // check it's a valid URL with slash at the end
+  if (!base_url) {
+    return {'error': 'Base URL not set'};
+  }
+  if (!base_url.match(/https?:\/\/(([a-z\d.-]+)|((\d{1,3}\.){3}\d{1,3}))(\:\d+)?(\/[-a-z\d%_.~+]*)*\//i)) {
+  //if (!base_url.match(/https?:\/\/.*\//)) {
+    return {'error': 'Invalid base URL (it must begin with "http[s]" and end with "/")'};
+  }
+  if (!api_key) {
+    return {'error': 'API key not set'};
+  }
+
+  return new Promise( function(resolve, reject) {
+    request({
+        method: 'POST',
+        url: base_url + 'api/case',
+        auth: {'bearer': api_key},
+        json: true,
+        body: req_body,
+        //ca: fs.readFileSync(caFile), // TODO resolve the issue with custom CA, where to get its cert?
+        rejectUnauthorized: false,
+      },
+      // handler of the reply from The Hive - just return as reply
+      function (error, response, body) {
+        // TODO: find out how to set response code, for now we always return sucess and encode original status code in the content
+        if (error) {
+          console.error("ERROR when trying to send request to The Hive:", error);
+          resolve({'error': error.message});
+        }
+        else {
+          if (response.statusCode < 200 || response.statusCode >= 300) {
+            console.error("ERROR Unexpected reply received from The Hive:", response.statusCode, response.statusMessage, "\n", body)
+          }
+          resolve({
+            'status_code': response.statusCode,
+            'status_msg': response.statusMessage,
+            'body': body
+          });
+        }
+      } // handler function
+    ); // request()
+  }); // Promise()
+}
+
+// Note:
+// There are two ways to create multiple Observables (artifacts) via The Hive API:
+// 1. post one request with an array of observables in "data" field
+//    - this allows to create all in one request, but doesn't allow to set 
+//      different parameters (IOC, TLP, etc.) to different observables
+// 2. post each observable in a separate request
+// The second way is used here.
+
+// Handler of ajax requests to add Observables to a Case in The Hive
+function addObservablesHandler(req, resp) {
+  // Parse the request to get connection parameters
+  // (everything is configured in forntend and sent as part of the request,
+  //  since I don't know how to configure the backend)
+  var base_url = req.payload['base_url'];
+  var api_key = req.payload['api_key'];
+
+  // check it's a valid URL with slash at the end
+  if (!base_url) {
+    return {'error': 'Base URL not set'};
+  }
+  if (!base_url.match(/https?:\/\/(([a-z\d.-]+)|((\d{1,3}\.){3}\d{1,3}))(\:\d+)?(\/[-a-z\d%_.~+]*)*\//i)) {
+  //if (!base_url.match(/https?:\/\/.*\//)) {
+    return {'error': 'Invalid base URL (it must begin with "http[s]" and end with "/")'};
+  }
+  // TODO add "/" to the end automatically
+  if (!api_key) {
+    return {'error': 'API key not set'};
+  }
+
+  const caseid = req.payload['caseid'];
+  const observables = req.payload['observables']; // array of obersvable specifications
+
+  return new Promise( async function(resolve, reject) {
+    // Run one request for each observable
+    // (A way to run multiple async tasks sequentially inspired by:
+    //  https://jrsinclair.com/articles/2019/how-to-run-async-js-in-parallel-or-sequential/ )
+    const starterPromise = Promise.resolve(null);
+    await observables.reduce(
+      (p, obs) => p.then(() => addObservable(base_url, api_key, caseid, obs)),
+      starterPromise
+    ).catch((err_msg) => {
+        console.error(err_msg); // log whole message
+        resolve({'error': err_msg.split("\n", 1)[0]}); // send the first line to frontend
+        return;
+      }
+    );
+    resolve({});
+  });
+}
+  
+function addObservable(base_url, api_key, caseid, obs) {
+  return new Promise( function(resolve, reject) {
+    //console.log("Adding observable:", obs);
+    request({
+        method: 'POST',
+        url: base_url + 'api/case/' + caseid + "/artifact",
+        auth: {'bearer': api_key},
+        json: true,
+        body: obs,
+        //ca: fs.readFileSync(caFile), // TODO resolve the issue with custom CA, where to get its cert?
+        rejectUnauthorized: false,
+      },
+      // handler of the reply from The Hive - just return as reply
+      function (error, response, body) {
+        if (error) {
+          reject("ERROR when trying to send request to The Hive: " + error);
+        }
+        else if (response.statusCode < 200 || response.statusCode >= 300) {
+          reject("ERROR: Unexpected reply received from The Hive: " + response.statusCode + " " + response.statusMessage + "\n" + JSON.stringify(body));
+        }
+        else {
+          // success - continue with the next observable
+          resolve("OK");
+          resolve({})
+        }
+      } // handler function
+    ); // request()
+  }); //Promise()
+}
+
+
diff --git a/roles/build/files/thehive_button/thehive_button/.eslintrc b/roles/build/files/thehive_button/thehive_button/.eslintrc
new file mode 100644
index 0000000000000000000000000000000000000000..64eba86220ec489c9c364e9a443941d14a8d3b16
--- /dev/null
+++ b/roles/build/files/thehive_button/thehive_button/.eslintrc
@@ -0,0 +1,7 @@
+---
+extends: "@elastic/kibana"
+
+settings:
+  import/resolver:
+    '@elastic/eslint-import-resolver-kibana':
+      rootPackageName: 'thehive_button'
diff --git a/roles/build/files/thehive_button/thehive_button/.kibana-plugin-helpers.json b/roles/build/files/thehive_button/thehive_button/.kibana-plugin-helpers.json
new file mode 100644
index 0000000000000000000000000000000000000000..2c63c0851048d8f7bff41ecf0f8cee05f52fd120
--- /dev/null
+++ b/roles/build/files/thehive_button/thehive_button/.kibana-plugin-helpers.json
@@ -0,0 +1,2 @@
+{
+}
diff --git a/roles/build/files/thehive_button/thehive_button/index.js b/roles/build/files/thehive_button/thehive_button/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..fa69c75c30d7ee40f8d7089d6debd6cf69c8d402
--- /dev/null
+++ b/roles/build/files/thehive_button/thehive_button/index.js
@@ -0,0 +1,19 @@
+import newCaseRoute from './server/routes/newcase';
+
+export default function (kibana) {
+  return new kibana.Plugin({
+    require: [], //['elasticsearch'],
+    name: 'thehive_button',
+    uiExports: {
+      visTypes: [
+        'plugins/thehive_button/main',
+      ],
+    },
+
+    init(server, options) { // eslint-disable-line no-unused-vars
+      // Add server routes and initialize the plugin here
+      newCaseRoute(server);
+    }
+  });
+}
+
diff --git a/roles/build/files/thehive_button/thehive_button/package.json b/roles/build/files/thehive_button/thehive_button/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..e1c070d62c2e69b0f42fa4c5d47e1e8c0b408988
--- /dev/null
+++ b/roles/build/files/thehive_button/thehive_button/package.json
@@ -0,0 +1,35 @@
+{
+  "name": "thehive_button",
+  "version": "1.0.0",
+  "description": "Visualisation plugin which creates a simple button to create a new case in The Hive.",
+  "main": "index.js",
+  "kibana": {
+    "version": "7.4.2"
+  },
+  "scripts": {
+    "lint": "eslint .",
+    "start": "plugin-helpers start",
+    "build": "plugin-helpers build"
+  },
+  "dependencies": {
+    "request": "^2.88.0",
+    "@elastic/eui": "10.4.2",
+    "react": "^16.8.0"
+  },
+  "devDependencies": {
+    "@elastic/eslint-config-kibana": "link:../../packages/eslint-config-kibana",
+    "@elastic/eslint-import-resolver-kibana": "link:../../packages/kbn-eslint-import-resolver-kibana",
+    "@kbn/plugin-helpers": "link:../../packages/kbn-plugin-helpers",
+    "babel-eslint": "^9.0.0",
+    "eslint": "^5.6.0",
+    "eslint-plugin-babel": "^5.2.0",
+    "eslint-plugin-import": "^2.14.0",
+    "eslint-plugin-jest": "^21.26.2",
+    "eslint-plugin-jsx-a11y": "^6.1.2",
+    "eslint-plugin-mocha": "^5.2.0",
+    "eslint-plugin-no-unsanitized": "^3.0.2",
+    "eslint-plugin-prefer-object-spread": "^1.2.1",
+    "eslint-plugin-react": "^7.11.1",
+    "expect.js": "^0.3.1"
+  }
+}
diff --git a/roles/build/files/thehive_button/thehive_button/public/create_case.js b/roles/build/files/thehive_button/thehive_button/public/create_case.js
new file mode 100644
index 0000000000000000000000000000000000000000..fc8edd6f6f1e4ccb1b24ec5554e55e2d6503cf6c
--- /dev/null
+++ b/roles/build/files/thehive_button/thehive_button/public/create_case.js
@@ -0,0 +1,101 @@
+// Functions to send data to Kibana endpoints
+
+import chrome from 'ui/chrome';
+
+// Create a new Case in The Hive via its API
+// Return a Promise which resolves to object with ID of the new case ('id' attr) or error message ('error' attr)
+export function createTheHiveCase(base_url, api_key, title, descr, severity, startDate, owner, flag, tlp, tags) {
+  // Prepare data
+  var data = JSON.stringify({
+    "base_url": base_url,
+    "api_key": api_key,
+    "body": {
+      "title": title,
+      "description": descr,
+      "severity": severity, // number: 1=low, 2=medium, 3=high
+      "startDate": startDate,
+      "owner": owner, // user name the case will be assigned to
+      "flag": flag, // bool
+      "tlp": tlp, // number: 0=white, 1=green, 2=amber, 3=red
+      "tags": tags, // array of strings
+    }
+  });
+  console.log("TheHiveButton: Sending request to API endpoint 'new_case':", data);
+  var kibana_endpoint_url = chrome.addBasePath('/api/thehive_button/new_case');
+
+  return new Promise(function (resolve, reject) {
+    // Create AJAX request
+    var xhr = new XMLHttpRequest();
+    
+    // Listener to process reply
+    xhr.onreadystatechange = function () {
+      if (this.readyState != 4) {
+        return; // response not ready yet
+      }
+      if (this.status == 200) {
+        const resp = JSON.parse(this.responseText);
+        console.log("TheHiveButton: Response from backend:", resp);
+        if ("error" in resp) {
+          resolve({"error": resp.error});
+        }
+        else if (resp.status_code != 201) {
+          resolve({"error": "Unexpected reply received from The Hive: [" + resp.status_code + "] " + resp.status_msg});
+        }
+        else {
+          resolve({"id": resp.body.id}); // return ID of the new case
+        }
+      }
+      else {
+        console.log("TheHiveButton: Error " + this.status + ": " + this.statusText);
+        resolve({"error": "Error " + this.status + ": " + this.statusText});
+      }
+    }
+
+    // Send the AJAX request
+    xhr.open("POST", kibana_endpoint_url);
+    xhr.setRequestHeader("Content-Type", "application/json");
+    xhr.setRequestHeader("kbn-xsrf", "thehive_plugin"); // this header must be set, although its content is probably irrelevant
+    xhr.send(data);
+  });
+}
+
+// Add observables to an existing Case in The Hive
+// (send the list of observables to our backend endpoint, it pushes them to The Hive)
+export function addCaseObservables(base_url, api_key, caseid, observables) {
+  const kibana_endpoint_url = chrome.addBasePath('/api/thehive_button/add_observables');
+  const data = JSON.stringify({
+    "base_url": base_url,
+    "api_key": api_key,
+    "caseid": caseid,
+    "observables": observables,
+  });
+  console.log("TheHiveButton: Sending request to API endpoint 'add_observables':", data);
+  
+  return new Promise(function (resolve, reject) {
+    // Create AJAX request
+    var xhr = new XMLHttpRequest();
+    
+    // Listener to process reply
+    xhr.onreadystatechange = function () {
+      if (this.readyState != 4) {
+        return; // response not ready yet
+      }
+      if (this.status == 200) {
+        const resp = JSON.parse(this.responseText);
+        console.log("TheHiveButton: Response from backend:", resp);
+        resolve(resp);
+      }
+      else {
+        console.log("TheHiveButton: Error " + this.status + ": " + this.statusText);
+        resolve({"error": "Error " + this.status + ": " + this.statusText});
+      }
+    }
+
+    // Send the AJAX request
+    xhr.open("POST", kibana_endpoint_url);
+    xhr.setRequestHeader("Content-Type", "application/json");
+    xhr.setRequestHeader("kbn-xsrf", "thehive_plugin"); // this header must be set, although its content is probably irrelevant
+    xhr.send(data);
+  });
+}
+
diff --git a/roles/build/files/thehive_button/thehive_button/public/env.js b/roles/build/files/thehive_button/thehive_button/public/env.js
new file mode 100644
index 0000000000000000000000000000000000000000..4321b85f5ee1682abd17871889a165ae8d96b465
--- /dev/null
+++ b/roles/build/files/thehive_button/thehive_button/public/env.js
@@ -0,0 +1,4 @@
+// Default plugin configuration
+export const THEHIVE_URL = 'https://hive.gn4-3-wp8-soc.sunet.se/';
+export const THEHIVE_API_KEY = '5LymseWiurZBrQN8Kqp8O+9KniTL5cE0';
+export const THEHIVE_OWNER = 'admin'; // default owner account of the created cases
diff --git a/roles/build/files/thehive_button/thehive_button/public/main.js b/roles/build/files/thehive_button/thehive_button/public/main.js
new file mode 100644
index 0000000000000000000000000000000000000000..ee46d73170d4fb43739c58468e3396caace6dcbe
--- /dev/null
+++ b/roles/build/files/thehive_button/thehive_button/public/main.js
@@ -0,0 +1,54 @@
+import { THEHIVE_API_KEY, THEHIVE_URL, THEHIVE_OWNER } from './env';
+import { TheHiveButtonVisComponent } from './vis_controller';
+import { theHiveButtonRequestHandlerProvider } from './request_handler';
+import { optionsEditor } from './options_editor';
+
+import { VisFactoryProvider } from 'ui/vis/vis_factory';
+import { VisTypesRegistryProvider } from 'ui/registry/vis_types';
+import { DefaultEditorSize } from 'ui/vis/editor_size';
+
+
+function TheHiveButtonVisProvider(Private) {
+  const VisFactory = Private(VisFactoryProvider);
+
+  //console.log("default URL:", THEHIVE_URL);
+  //console.log("default API key:", THEHIVE_API_KEY);
+
+  return VisFactory.createReactVisualization({
+    name: 'thehive_button',
+    title: 'The Hive Case',
+    icon: 'alert',
+    description: 'A button to create a new Case in The Hive.',
+    //requiresUpdateStatus: [Status.PARAMS, Status.RESIZE, Status.UI_STATE],
+    visConfig: {
+      component: TheHiveButtonVisComponent,
+      defaults: {
+        // add default parameters
+        url: THEHIVE_URL,
+        apikey: THEHIVE_API_KEY,
+        owner: THEHIVE_OWNER,
+        obsFields: [], // list of objects, e.g. {name: "clientip", type: "ip", cnt: 100}
+      }
+    },
+    //editor: 'default',
+    editorConfig:  {
+      optionTabs: [
+        {
+          name: "options",
+          title: "Options",
+          editor: optionsEditor,
+        }
+      ],
+      defaultSize: DefaultEditorSize.LARGE,
+    },
+//       optionsTemplate: optionsEditor, //optionsTemplate,
+//       //enableAutoApply: true,
+//     },
+    requestHandler: 'theHiveButtonRequestHandler', // own request handler
+    responseHandler: 'none', // pass data as returned by requestHandler
+  });
+}
+
+// register the provider with the visTypes registry
+VisTypesRegistryProvider.register(TheHiveButtonVisProvider);
+
diff --git a/roles/build/files/thehive_button/thehive_button/public/options_editor.js b/roles/build/files/thehive_button/thehive_button/public/options_editor.js
new file mode 100644
index 0000000000000000000000000000000000000000..38762bd463115702a0c4f03f099434485f5d59dc
--- /dev/null
+++ b/roles/build/files/thehive_button/thehive_button/public/options_editor.js
@@ -0,0 +1,176 @@
+import React from 'react';
+import {
+  EuiForm,
+  EuiFormRow,
+  EuiTitle,
+  EuiSpacer,
+  EuiFieldText,
+  EuiFieldNumber,
+  EuiSelect,
+  EuiFlexGroup,
+  EuiFlexItem,
+  EuiButton,
+  EuiButtonIcon,
+} from '@elastic/eui';
+
+// Default data types in The Hive
+const DEFAULT_THE_HIVE_TYPES = [
+  '',
+  'autonomous-system',
+  'domain',
+  'file',
+  'filename',
+  'fqdn',
+  'hash',
+  'ip',
+  'mail',
+  'mail_subject',
+  'regexp',
+  'registry',
+  'uri_path',
+  'url',
+  'user-agent',
+  'other',	
+];
+
+// Options for EuiSelect for selection of field's data type in TheHive
+const typesOptions = DEFAULT_THE_HIVE_TYPES.map( dt => ({value: dt, text: dt}) );
+
+export function optionsEditor(props) {
+  //console.log("editor render(), props:", props);
+  const { stateParams, setValue, setValidity, vis } = props;
+  
+  // onClick/onChange handlers
+  const obsAddNew = () => {
+    const newObsFields = [...stateParams.obsFields, {name: "", type: "", cnt: 100}];
+    // For some reason, first click on the button after editor is loaded does
+    // nothing. Calling setValue twice here fixes it.  
+    setValue("obsFields", newObsFields);
+    setValue("obsFields", newObsFields);
+//     setValidity(false); // since new row is empty, form is always invalid
+  };
+  const obsRemove = (ix) => {
+    let newArray = [...stateParams.obsFields];
+    newArray.splice(ix, 1);
+    setValue("obsFields", newArray);
+//     validate();
+  }
+  const obsSetName = (ix, name) => {
+    let newArray = [...stateParams.obsFields];
+    newArray[ix].name = name;
+    setValue("obsFields", newArray);
+//     validate();
+  } 
+  const obsSetType = (ix, type) => {
+    let newArray = [...stateParams.obsFields];
+    newArray[ix].type = type;
+    setValue("obsFields", newArray);
+//     validate();
+  }
+  const obsSetCnt = (ix, cnt) => {
+    let newArray = [...stateParams.obsFields];
+    newArray[ix].cnt = parseInt(cnt);
+    setValue("obsFields", newArray);
+//     validate();
+  }
+//   const validate = () => {
+//     let valid = true;
+//     for (let field of stateParams.obsFields) {
+//       if (field.name == "" || field.type == "" || field.cnt == "") {
+//         valid = false;
+//         break;
+//       }
+//     }
+//     // TODO check for duplicate fields
+//     setValidity(valid);
+//   }
+  
+  // Get list of all fields in index (except those beginning with "_" or "@")
+  // and create "options" parameter for EuiSelect.
+  // Also, fields with "aggregatable=false" are removed, as they can't be used
+  // with "terms" aggregation we need.
+  // See this for details: https://www.elastic.co/guide/en/elasticsearch/reference/7.x/fielddata.html
+  // Empty field is added at the beginning, meaning "no selection yet".
+  const fieldOptions = [{value: "", text: ""}].concat(
+    vis.indexPattern.fields.raw.filter( f => (f.name[0] != "_" && f.name[0] != "@" && f.aggregatable) ).map( f => ({value: f.name, text: `${f.name} (${f.type})`}) )
+  );
+
+  return <EuiForm>
+    <EuiFormRow fullWidth={true} label="Base URL of The Hive">
+      <EuiFieldText
+        fullWidth={true}
+        value={stateParams.url}
+        onChange={e => setValue('url', e.target.value)}
+        isInvalid={stateParams.url == ""}
+      />
+    </EuiFormRow>
+    <EuiFlexGroup>
+      <EuiFlexItem grow={1}>
+        <EuiFormRow label="API key to access The Hive" helpText="API key of a user with write permission.">
+          <EuiFieldText
+            fullWidth={true}
+            value={stateParams.apikey}
+            onChange={e => setValue('apikey', e.target.value)}
+            isInvalid={stateParams.apikey == ""}
+          />
+        </EuiFormRow>
+      </EuiFlexItem>
+      <EuiFlexItem grow={1}>
+        <EuiFormRow label="Assignee" helpText="User to assign created cases to. Must be a valid username from The Hive instance.">
+          <EuiFieldText
+            value={stateParams.owner}
+            onChange={e => setValue('owner', e.target.value)}
+            isInvalid={stateParams.owner == ""}
+          />
+        </EuiFormRow>
+      </EuiFlexItem>
+    </EuiFlexGroup>
+    <EuiTitle size="s"><h3>Fields to get potential observables from ...</h3></EuiTitle>
+    <EuiSpacer size="s" />
+    {stateParams.obsFields.map( (field, ix) => (
+      <EuiFlexGroup key={ix} gutterSize="s">
+        <EuiFlexItem grow={3}>
+          <EuiFormRow label="Field name">
+            <EuiSelect
+              options={fieldOptions}
+              value={field.name}
+              onChange={ e => obsSetName(ix, e.target.value) }
+              isInvalid={field.name == ""}
+            />
+          </EuiFormRow>
+        </EuiFlexItem>
+        <EuiFlexItem grow={2}>
+          <EuiFormRow label="Data type in The Hive">
+            <EuiSelect
+              options={typesOptions}
+              value={field.type}
+              onChange={ e => obsSetType(ix, e.target.value) }
+              isInvalid={field.type == ""}
+            />
+          </EuiFormRow>
+        </EuiFlexItem>
+        <EuiFlexItem grow={1}>
+          <EuiFormRow label="Max items shown">
+            <EuiFieldNumber
+              min={1}
+              max={1000}
+              value={parseInt(field.cnt)}
+              onChange={ e => obsSetCnt(ix, e.target.value) }
+              isInvalid={!(field.cnt > 0)}
+            />
+          </EuiFormRow>
+        </EuiFlexItem>
+        <EuiFlexItem grow={false}>
+          <EuiFormRow hasEmptyLabelSpace>
+            <EuiButtonIcon iconType="trash" iconSize="m" color="danger" aria-label="Remove field" onClick={ e => obsRemove(ix) } />
+          </EuiFormRow>
+        </EuiFlexItem>
+      </EuiFlexGroup>
+    ))}
+    <EuiFlexGroup>
+      <EuiFlexItem grow={false}>
+        <EuiButton iconType="plusInCircleFilled" color="primary" onClick={obsAddNew}>Add new field ...</EuiButton>
+      </EuiFlexItem>
+    </EuiFlexGroup>
+  </EuiForm>
+}
diff --git a/roles/build/files/thehive_button/thehive_button/public/options_template.html b/roles/build/files/thehive_button/thehive_button/public/options_template.html
new file mode 100644
index 0000000000000000000000000000000000000000..ef996577786150282c2ffb0d28652a3d1712842b
--- /dev/null
+++ b/roles/build/files/thehive_button/thehive_button/public/options_template.html
@@ -0,0 +1,8 @@
+<div class="form-group">
+  <p><label>Base URL of The Hive</label>
+  <input ng-model="editorState.params.url" class=form-control /></p>
+  <p><label>API key</label>
+  <input ng-model="editorState.params.apikey" class=form-control /></p>
+  <p><label>User name to use as the owner of cases created from here</label>
+  <input ng-model="editorState.params.owner" class=form-control /></p>
+</div>
diff --git a/roles/build/files/thehive_button/thehive_button/public/request_handler.js b/roles/build/files/thehive_button/thehive_button/public/request_handler.js
new file mode 100644
index 0000000000000000000000000000000000000000..bdbb0f4ebee4ff5307a1bf549706bf1ecc92e11b
--- /dev/null
+++ b/roles/build/files/thehive_button/thehive_button/public/request_handler.js
@@ -0,0 +1,195 @@
+import { CourierRequestHandlerProvider as courierRequestHandlerProvider } from 'ui/vis/request_handlers/courier';
+import { SearchSourceProvider } from 'ui/courier/search_source';
+import { RequestAdapter, DataAdapter } from 'ui/inspector/adapters';
+import { VisRequestHandlersRegistryProvider } from 'ui/registry/vis_request_handlers';
+import { AggConfig } from 'ui/vis/agg_config';
+import { AggConfigs } from 'ui/vis/agg_configs';
+import { getTime } from 'ui/timefilter/get_time';
+import { i18n } from '@kbn/i18n';
+import { has } from 'lodash';
+import { calculateObjectHash } from 'ui/vis/lib/calculate_object_hash';
+import { getRequestInspectorStats, getResponseInspectorStats } from 'ui/courier/utils/courier_inspector_utils';
+import chrome from 'ui/chrome';
+
+// Maximum number of unique values of each field (observables) to fetch
+const MAX_NUMBER_OF_TERMS = 5;
+
+const handleCourierRequest = courierRequestHandlerProvider().handler;
+
+// Register new RaquestHandlerProvider 
+const theHiveButtonRequestHandlerProvider = function () {
+  return {
+    name: 'theHiveButtonRequestHandler',
+    handler: theHiveButtonRequestHandler,
+  }
+}
+VisRequestHandlersRegistryProvider.register(theHiveButtonRequestHandlerProvider);
+
+export {theHiveButtonRequestHandlerProvider, theHiveButtonRequestHandler};
+
+
+// The request handler function itself
+async function theHiveButtonRequestHandler(params) {
+  //console.log("theHiveButtonRequestHandler params:", params);
+  
+  let index = params.index;
+  let partialRows = params.partialRows;
+  let metricsAtAllLevels = params.metricsAtAllLevels;
+  let timeRange = params.timeRange;
+  let query = params.query;
+  let filters = params.filters;
+  let inspectorAdapters = params.inspectorAdapters;
+  let queryFilter = params.queryFilter;
+  let forceFetch = params.forceFetch;
+  // our own confiuration:
+  // list of fields to get potential observables from
+  // (each "field" is object {name: str, type: str, cnt: int})
+  let obsFields = params.visParams.obsFields;
+  
+  // filter out invalid field specifications
+  obsFields = obsFields.filter( f => (f.name != "" && f.type != "" && f.cnt > 0) );
+  
+  if (obsFields.length == 0) {
+    //console.log("theHiveButtonRequestHandler: Empty obsFields, nothing to do")
+    return {} // no fields specified, nothing to do
+  }
+
+  // === Prepare request to ask for unique values of all selected fields ===
+
+  // Construct a query for ElasticSearch
+  // Get "terms" (most common unique values) for each field of obsFields
+  const aggs_dsl = {}
+  for (let field of obsFields) {
+    aggs_dsl[field.name] = {
+      terms: {
+          field: field.name,
+          size: field.cnt,
+          order: {_count: "desc"}
+        }
+    };
+  }
+  //console.log("aggs_dsl:", aggs_dsl);
+  
+  // Create empty AggConfigs
+  // (We could pass specifications of a metric and the buckets here,
+  //  but default processing functions assume multiple buckets are sub-buckets,
+  //  which is not what we want. So we must do a "hack" and manually create  
+  //  query directly in format for ElasticSearch)
+  const aggs = new AggConfigs(params.index, []);
+  
+  // === Some magic to get searchSource object ===
+  // (inspired by https://github.com/fbaligand/kibana-enhanced-table/blob/7.4/public/data_load/enhanced-table-request-handler.js)
+  // (I don't understand it, but it works)
+
+  let $injector = await chrome.dangerouslyGetActiveInjector();
+  let Private = $injector.get('Private');
+  let SearchSource = Private(SearchSourceProvider);
+  let searchSource = new SearchSource();
+  searchSource.setField('index', index);
+  searchSource.setField('size', 0);
+
+  inspectorAdapters.requests = new RequestAdapter();
+  inspectorAdapters.data = new DataAdapter();
+  
+
+  // === Execute query ===
+  // We could call standard "courier" here, but it tries to convert the response
+  // to a table, which fails in our case, so we copied the main code of courier
+  // and modified it here.
+  
+  const abortSignal = false;
+  
+  const timeFilterSearchSource = searchSource.createChild({ callParentStartHandlers: true });
+  const requestSearchSource = timeFilterSearchSource.createChild({ callParentStartHandlers: true });
+
+  aggs.setTimeRange(timeRange);
+
+  // For now we need to mirror the history of the passed search source, since
+  // the request inspector wouldn't work otherwise.
+  Object.defineProperty(requestSearchSource, 'history', {
+    get() {
+      return searchSource.history;
+    },
+    set(history) {
+      return searchSource.history = history;
+    }
+  });
+
+  // This has been modified to override DSL format by ours
+//   requestSearchSource.setField('aggs', function () {
+//     return aggs.toDsl(metricsAtAllLevels);
+//   });
+  requestSearchSource.setField('aggs', aggs_dsl); 
+
+  requestSearchSource.onRequestStart((searchSource, searchRequest) => {
+    return aggs.onSearchRequestStart(searchSource, searchRequest);
+  });
+
+  if (timeRange) {
+    timeFilterSearchSource.setField('filter', () => {
+      return getTime(searchSource.getField('index'), timeRange);
+    });
+  }
+
+  requestSearchSource.setField('filter', filters);
+  requestSearchSource.setField('query', query);
+
+  const reqBody = await requestSearchSource.getSearchRequestBody();
+
+  const queryHash = calculateObjectHash(reqBody);
+  // We only need to reexecute the query, if forceFetch was true or the hash of the request body has changed
+  // since the last request
+  const shouldQuery = forceFetch || (searchSource.lastQuery !== queryHash);
+
+  if (shouldQuery) {
+    inspectorAdapters.requests.reset();
+    const request = inspectorAdapters.requests.start(
+      i18n.translate('common.ui.vis.courier.inspector.dataRequest.title', { defaultMessage: 'Data' }),
+      {
+        description: i18n.translate('common.ui.vis.courier.inspector.dataRequest.description',
+          { defaultMessage: 'This request queries Elasticsearch to fetch the data for the visualization.' }),
+      }
+    );
+    request.stats(getRequestInspectorStats(requestSearchSource));
+
+    try {
+      // Abort any in-progress requests before fetching again
+      if (abortSignal) {
+        abortSignal.addEventListener('abort', () => requestSearchSource.cancelQueued());
+      }
+
+      const response = await requestSearchSource.fetch();
+      //console.log("raw response:", response);
+
+      searchSource.lastQuery = queryHash;
+
+      request
+        .stats(getResponseInspectorStats(searchSource, response))
+        .ok({ json: response });
+
+      searchSource.rawResponse = response;
+    } catch(e) {
+      // Log any error during request to the inspector
+      request.error({ json: e });
+      throw e;
+    } finally {
+      // Add the request body no matter if things went fine or not
+      requestSearchSource.getSearchRequestBody().then(req => {
+        request.json(req);
+      });
+    }
+  }
+
+  // === Copy of courier code ends here, now we parse the response ===
+  
+  const resp = searchSource.rawResponse;
+  // Return as object containing a list of unique values (terms) for each 
+  // requested field
+  let unique_values_lists = {}
+  for (let field of obsFields) {
+    unique_values_lists[field.name] = resp.aggregations[field.name].buckets.map( (x) => x.key );
+  }
+
+  //console.log("Final lists:", unique_values_lists);
+  return unique_values_lists;
+}
diff --git a/roles/build/files/thehive_button/thehive_button/public/vis.less b/roles/build/files/thehive_button/thehive_button/public/vis.less
new file mode 100644
index 0000000000000000000000000000000000000000..b6f887afaef57a7674a0d0f06ee6f821a0fc015e
--- /dev/null
+++ b/roles/build/files/thehive_button/thehive_button/public/vis.less
@@ -0,0 +1,3 @@
+.myvis-container-div {
+  padding: 1em;
+}
diff --git a/roles/build/files/thehive_button/thehive_button/public/vis_controller.js b/roles/build/files/thehive_button/thehive_button/public/vis_controller.js
new file mode 100644
index 0000000000000000000000000000000000000000..8b23222700ab072c9665442851982e11cdc56788
--- /dev/null
+++ b/roles/build/files/thehive_button/thehive_button/public/vis_controller.js
@@ -0,0 +1,555 @@
+//import { Status } from 'ui/vis/update_status';
+import { toastNotifications } from 'ui/notify';
+import { createTheHiveCase, addCaseObservables } from './create_case';
+//import vis_template from './vis_template.html';
+
+import React, { Component } from 'react';
+import {
+  EuiButton,
+  EuiButtonEmpty,
+  EuiModal,
+  EuiModalBody,
+  EuiModalFooter,
+  EuiModalHeader,
+  EuiModalHeaderTitle,
+  EuiOverlayMask,
+  EuiTitle,
+  EuiFlexGroup,
+  EuiFlexItem,
+  EuiSpacer,
+  EuiForm,
+  EuiFormRow,
+  EuiFieldText,
+  EuiTextArea,
+  EuiSuperSelect,
+  EuiBasicTable,
+  EuiCheckbox,
+  makeId,
+} from '@elastic/eui';
+
+
+// ********** React components **********
+
+// Main React component - the root of visualization
+export class TheHiveButtonVisComponent extends Component {
+  render() {
+    //console.log("TheHiveButtonVisComponent.render(), props:", this.props);
+    return (
+      <div>
+        <NewCaseButton params={this.props.vis.params} observables={this.props.visData} />
+      </div>
+    );
+  }
+
+  componentDidMount() {
+    this.props.renderComplete();
+  }
+
+  componentDidUpdate() {
+    this.props.renderComplete();
+  }
+}
+
+// Button to show the pop-up window (modal)
+// Props:
+//  .params - visualization parameters (from vis.params)
+//  .observables - object with lists of potential observables to add to the Case
+//     for each field in params.obsFields there should be a key in this object
+//     containing list of observables (this is returned by request_handler) 
+class NewCaseButton extends Component {
+
+  constructor(props) {
+    super(props);
+    // Filter out invalid obsField specifications
+    this.obsFields = props.params.obsFields.filter( f => (f.name != "" && f.type != "" && f.cnt > 0) );
+    //console.log("Filtered field specs:", this.obsFields);
+    
+    // The complete state is here, so it's kept even when modal is closed
+    this.state = {
+      isModalVisible: false,
+      isWorking: false, // used to show a spinner on submit button
+      ...this.create_initial_state(),
+    }
+    
+    this.resetCnt = 0; // used to change Modal component key on each form reset
+
+    // Each handler function in a class (method) must be "binded" this way
+    this.closeModal = this.closeModal.bind(this);
+    this.showModal = this.showModal.bind(this);
+    this.resetForm = this.resetForm.bind(this);
+
+    this.onTitleChange = this.onTitleChange.bind(this);
+    this.onSeverityChange = this.onSeverityChange.bind(this);
+    this.onTLPChange = this.onTLPChange.bind(this);
+    this.onDescriptionChange = this.onDescriptionChange.bind(this);
+    
+    this.onObsSelectionChange = this.onObsSelectionChange.bind(this);
+    this.onObsDataChange = this.onObsDataChange.bind(this);
+    
+    this.submitCase = this.submitCase.bind(this);
+  }
+
+  create_initial_state() {
+    // create a new instance of initial state definition
+    let initial_state = {
+      // Case parameters
+      title: "",
+      description: "\n\n--\nCreated from Kibana",
+      severity: "2", // medium
+      tlp: "2", // amber
+      tags: [], // TODO (not implemented yet)
+      obsData: {}, // state of observables form fields (obsData->field->index->{descr,tlp,ioc,tags})
+      obsSel: {}, // list of observable selections (obsSel->field->list_of_selected_indices)
+    }
+    // pre-fill state of each observable to defaults
+    const initial_field_data = {descr: "", tlp: 2, ioc: false, tags: []};
+    for (let field of this.obsFields) {
+      const n_obs = this.props.observables[field.name].length;
+      // fill obsData with new copies of initial_field_data
+      initial_state.obsData[field.name] = new Array(n_obs).fill().map((_)=>({...initial_field_data}));
+      // nothing is selected
+      initial_state.obsSel[field.name] = new Array();
+    }
+    return initial_state;
+  }
+
+  componentDidUpdate(prevProps) {
+    // If list of observables was updated or obsFields setting has changed, 
+    // reset the component state and precomputed variables.
+    if (this.props.observables != prevProps.observables) {
+      if (this.props.params.obsFields != prevProps.params.obsFields) {
+        // when obsFields change, observables must change as well, so this "if"
+        // can be inside the first one.
+        // Filter out invalid obsField specifications
+        this.obsFields = this.props.params.obsFields.filter( f => (f.name != "" && f.type != "" && f.cnt && f.cnt > 0) );
+        //console.log("Filtered field specs:", this.obsFields);
+      }
+      //console.log("New list of observables, resetting form.");
+      this.resetForm();
+    }
+  }
+
+  resetForm() {
+    this.setState(this.create_initial_state());
+    this.resetCnt += 1; // this changes the key of ModalContent, causing it to be replaced by new DOM elelments (otherwise, not all things are reset properly)
+    this.forceUpdate();
+  }
+
+  closeModal() {
+    this.setState({ isModalVisible: false });
+  }
+
+  showModal() {
+    this.setState({ isModalVisible: true });
+  }
+
+  // Event handlers for change of case parameter
+  onTitleChange(evt) {
+    this.setState({title: evt.target.value});
+  }
+  onSeverityChange(value) {
+    this.setState({severity: value});
+  }
+  onTLPChange(value) {
+    this.setState({tlp: value});
+  }
+  onDescriptionChange(evt) {
+    this.setState({description: evt.target.value});
+  }
+
+  // Event handler for observable (de)selection
+  onObsSelectionChange(fieldName, selectedItems) {
+    // Extract indices from the items and store them into state
+    const selectedIndices = selectedItems.map(item4 => item4.i);
+    this.setState((state, props) => {
+      let newObsSel = {...this.state.obsSel};
+      newObsSel[fieldName] = selectedIndices;
+      return {obsSel: newObsSel};
+    });
+  }
+
+  // Event handler for edit of a form field in observable row
+  // - fieldName: which field (table of observables)
+  // - ix: index of the observable in the field's table
+  // - param: one of: descr,tlp,ioc,tags
+  // - value: new value of the form field
+  onObsDataChange(fieldName, ix, param, value) {
+    this.setState((state, props) => {
+      let newObsData = {...this.state.obsData};
+      newObsData[fieldName][ix][param] = value;
+      return {obsData: newObsData};
+    });
+  }
+
+  // Render function
+  render() {
+    let modal;
+    if (this.state.isModalVisible) {
+      modal = <ModalContent
+        resetCnt={this.resetCnt} // used to change "key" of modalBody, causing all form fields to be re-created (some things are not reset properly by reseting state only)
+        close={this.closeModal}
+        reset={this.resetForm}
+        fields={this.obsFields}
+        observables={this.props.observables}
+        // form state
+        title={this.state.title}
+        description={this.state.description}
+        severity={this.state.severity}
+        tlp={this.state.tlp}
+        tags={this.state.tags}
+        obsData={this.state.obsData}
+        obsSel={this.state.obsSel}
+        spinner={this.state.isWorking}
+        // event handlers
+        onTitleChange={this.onTitleChange}
+        onSeverityChange={this.onSeverityChange}
+        onTLPChange={this.onTLPChange}
+        onDescriptionChange={this.onDescriptionChange}
+        onObsSelectionChange={this.onObsSelectionChange}
+        onObsDataChange={this.onObsDataChange}
+        submitCase={this.submitCase}
+      />;
+    }
+    return (
+      <div>
+        <EuiButton fill iconType="alert" color="danger" onClick={this.showModal}>Create new Case ...</EuiButton>
+        {modal}
+      </div>
+    );
+  }
+
+  // Submit case button handler
+  async submitCase(evt) {
+    const params = this.props.params;
+    
+    // Get case parameters
+    const title = this.state.title;
+    const descr = this.state.description;
+    const severity = parseInt(this.state.severity);
+    const start_date = null;
+    const owner = params.owner;
+    const flag = false;
+    const tlp = parseInt(this.state.tlp);
+    const tags = this.state.tags;
+    
+    if (!title) {
+      toastNotifications.addDanger("Title can't be empty");
+      return;
+    }
+    
+    // Get list of selected observables and their params
+    let observables = [];
+    for (let field of this.obsFields) {
+      let selectionIndices = [...this.state.obsSel[field.name]]; // make a copy
+      selectionIndices.sort();
+      for (let i = 0; i < selectionIndices.length; i++) {
+        const j = selectionIndices[i]; // index of a selected obs. in the list of all observables
+        // fill in observable definition according to model at
+        // https://github.com/TheHive-Project/TheHiveDocs/blob/master/api/artifact.md
+        const obs = {
+          dataType: field.type,
+          data: this.props.observables[field.name][j],
+          message: this.state.obsData[field.name][j].descr,
+          tlp: this.state.obsData[field.name][j].tlp,
+          ioc: this.state.obsData[field.name][j].ioc,
+          tags: this.state.obsData[field.name][j].tags,
+        };
+        observables.push(obs);
+      }
+    }
+    
+    //console.log("Selected observables:", observables);
+    
+    // Check '/' at the end of base URL, add it if needed
+    let base_url = params.url;
+    if (base_url[base_url.length-1] != "/") {
+      base_url += "/";
+    }
+    
+    // Show spinner at submit button
+    this.setState({isWorking: true});
+    
+    // Submit request to create the case, handle response
+    let resp;
+    resp = await createTheHiveCase(base_url, params.apikey, title, descr, severity, start_date, owner, flag, tlp, tags);
+
+    if ('error' in resp) {
+      // Error contacting The Hive
+      console.error("TheHiveButton: ERROR when trying to create new case:", resp.error);
+      toastNotifications.addDanger("ERROR: " + resp.error);
+      this.setState({isWorking: false}); // Hide spinner
+      return;
+    }
+
+    console.log("TheHiveButton: Case created:", resp);
+    const case_id = resp.id;
+    const case_url = base_url + "index.html#/case/" + case_id + "/details";
+    
+    // Show notification
+    let obs_text;
+    if (observables.length > 0) {
+      obs_text = "Adding " + observables.length + " observables in background ...";
+    }
+    else {
+      obs_text = "(no observables added)";
+    }
+    toastNotifications.add({
+      title: "Case created",
+      color: "success",
+      iconType: "checkInCircleFilled",
+      text: (
+        <div>
+          <p><b><a href={case_url} target="_blank">Edit the new Case</a></b></p>
+          <p>{obs_text}</p>
+        </div>
+      ),
+    });
+    
+    // Close the popup window, reset form fields and hide spinner
+    this.closeModal();
+    this.resetForm();
+    this.setState({isWorking: false});
+     
+    // Open a new window with the case in The Hive
+    // (adding observables may take some time, so the case is opened first;
+    //  The Hive web is dynamic so the observables appear as they are added)
+    window.open(case_url, '_blank');
+    
+    if (observables.length == 0)
+      return;
+    
+    // Submit request to add observables
+    console.log("TheHiveButton: adding " + observables.length + " observables ...");
+    resp = await addCaseObservables(base_url, params.apikey, case_id, observables);
+    
+    if ('error' in resp) {
+      console.error("TheHiveButton: ERROR when trying to add observables: " + resp.error);
+      toastNotifications.addDanger("ERROR when trying to add observables: " + resp.error);
+    }
+    else {
+      console.log("TheHiveButton: Done, observables added.");
+      toastNotifications.add("Done, observables added.");
+    }
+  }
+}
+
+
+// The popup window with a form
+// props:
+//  - spinner: when true, disable form and show a spinner over it
+class ModalContent extends Component {
+  constructor(props) {
+    super(props);
+    // No state here, everything is in the parent class (NewCaseButton)
+    
+    // "Select" options
+    this.severityOptions = [
+      {value: "1", inputDisplay: "low"},
+      {value: "2", inputDisplay: "medium"},
+      {value: "3", inputDisplay: "high"},
+    ];
+    this.tlpOptions = [
+      {value: "0", inputDisplay: "white"},
+      {value: "1", inputDisplay: "green"},
+      {value: "2", inputDisplay: "amber"},
+      {value: "3", inputDisplay: "red"},
+    ];
+  }
+  
+  // Main render function
+  render() {
+    // TODO: replace Modal with Flyout?
+
+    // Note: onClick on EuiOverlayMask causes close of modal when clicked outside,
+    // implementation inspired by PR: https://github.com/elastic/eui/pull/3462/files#diff-c8fda532e48f75c94c343247cbc6b2d3R53-R60
+    return (
+      <EuiOverlayMask onClick={(evt) => {if (evt.target.classList.contains("euiOverlayMask")) this.props.close();} }>
+        <EuiModal onClose={this.props.close} maxWidth={false} initialFocus="[name=title]">
+          <EuiModalHeader>
+            <EuiModalHeaderTitle>Create a new case in The Hive</EuiModalHeaderTitle>
+          </EuiModalHeader>
+
+          <EuiModalBody key={this.props.resetCnt}>
+            <EuiForm style={{width: "800px"}}>
+              <EuiFlexGroup>
+                <EuiFlexItem grow={1}>
+                  <EuiFormRow label="Title" fullWidth>
+                    <EuiFieldText name="title" value={this.props.title} onChange={this.props.onTitleChange} required={true} fullWidth />
+                  </EuiFormRow>
+                </EuiFlexItem>
+                <EuiFlexItem grow={false}>
+                  <EuiFormRow label="Severity">
+                    <EuiSuperSelect
+                      options={this.severityOptions}
+                      valueOfSelected={this.props.severity}
+                      onChange={this.props.onSeverityChange}
+                    />
+                  </EuiFormRow>
+                </EuiFlexItem>
+                <EuiFlexItem grow={false}>
+                  <EuiFormRow label="TLP">
+                    <EuiSuperSelect
+                      prepend="TLP"
+                      options={this.tlpOptions}
+                      valueOfSelected={this.props.tlp}
+                      onChange={this.props.onTLPChange}
+                    />
+                  </EuiFormRow>
+                </EuiFlexItem>
+              </EuiFlexGroup>
+              <EuiFormRow label="Description" fullWidth>
+                <EuiTextArea
+                  defaultValue={this.props.description}
+                  onChange={this.props.onDescriptionChange}
+                  rows={4}
+                  fullWidth
+                />
+              </EuiFormRow>
+              
+              {this.props.fields.length > 0 && <EuiTitle size="s"><h3>Add observables from current query ...</h3></EuiTitle>}
+              {this.props.fields.map((field,ix) => (
+                <ObservablesTable
+                  key={field.name + ":" + this.props.resetCnt}
+                  fieldName={field.name}
+                  observables={this.props.observables[field.name]}
+                  obsData={this.props.obsData[field.name]}
+                  obsSel={this.props.obsSel[field.name]}
+                  onObsSelectionChange={this.props.onObsSelectionChange}
+                  onObsDataChange={this.props.onObsDataChange}
+                />
+              ))}
+            </EuiForm>
+          </EuiModalBody>
+
+          <EuiModalFooter>
+            <EuiButtonEmpty onClick={this.props.close}>Close</EuiButtonEmpty>
+            <EuiButtonEmpty onClick={this.props.reset}>Reset</EuiButtonEmpty>
+            <EuiButton onClick={this.props.submitCase} fill isLoading={this.props.spinner}>Create Case</EuiButton>
+          </EuiModalFooter>
+        </EuiModal>
+      </EuiOverlayMask>
+    );
+  }
+}
+
+// Table of potential observables taken from a given field, allowing to select
+// which observables to send to The Hive.
+// Props:
+//  fieldName - name of the field this table is for
+//  observables - list of observable IDs of this field
+//  obsData - array of objects specifying state of form fields in the table (.descr, .tlp, ...)
+//  obsSel - array of indices of selected observables
+class ObservablesTable extends Component {
+
+  constructor(props) {
+    super(props);
+    
+    // Table columns definition
+    this.columns = [
+      {
+        field: "id",
+        name: "Observable",
+      },
+      {
+        field: "descr",
+        name: "Description",
+        description: "Description of the observable in the context of the case",
+        render: (value, item1) => (<EuiFieldText
+          value={item1.descr}
+          onChange={(e) => this.props.onObsDataChange(props.fieldName, item1.i, "descr", e.target.value)}
+          disabled={!item1.selected}
+        />)
+      },
+      /*{
+        field: "tlp",
+        name: "TLP",
+        dataType: "number",
+        // TODO render and process changes
+      },*/
+      {
+        field: "ioc",
+        name: "Is IOC",
+        dataType: "boolean",
+        description: "Indicates if the observable is an IOC",
+        render: (value, item2) => (<EuiCheckbox
+          id={"ioc-checkbox-"+item2.id}
+          checked={item2.ioc}
+          onChange={(e) => this.props.onObsDataChange(props.fieldName, item2.i, "ioc", e.target.checked)}
+          disabled={!item2.selected}
+        />)
+      },
+      /*{
+        field: "tags",
+        name: "Tags",
+        // TODO render and process changes
+      },*/
+    ]
+    
+    // Create a reference to EuiBasicTable, so it's node can be accessed in componentDidMount
+    this.tableRef = React.createRef();
+  }
+
+  render() {
+    // Table data definition (convert props to format suitable for EuiBasicTable)
+    const n_obs = this.props.observables.length;
+    this.table_data = new Array(n_obs);
+    for (let i = 0; i < n_obs; i++) {
+      this.table_data[i] = {
+        id: this.props.observables[i],
+        descr: this.props.obsData[i].descr,
+        tlp: this.props.obsData[i].tlp,
+        ioc: this.props.obsData[i].ioc,
+        tags: this.props.obsData[i].tags,
+        // auxiliary fields, not shown in table:
+        i: i, // row index
+        selected: this.props.obsSel.includes(i),
+      };
+    }
+    
+    return (
+      <>
+        <EuiTitle size="xs"><h4>{this.props.fieldName}</h4></EuiTitle>
+        <EuiBasicTable
+          ref={this.tableRef}
+          columns={this.columns}
+          items={this.table_data}
+          itemId={(item3) => item3.id}
+          selection={ {onSelectionChange: (selectedItems) => this.props.onObsSelectionChange(this.props.fieldName, selectedItems) } }
+          noItemsMessage="No observables found"
+          rowProps={{
+            // Hack to allow selection by clicking anywhere in the table row
+            // (except input elements)
+            onClick: (e) => {
+              if (e.target.tagName != "INPUT") {
+                // simulate click on the first checkbox in the row to (de)select the row
+                e.currentTarget.querySelector("input").click();
+                e.currentTarget.blur(); // without this the focus remains on the row after click (results in different color)
+              }
+            },
+            tabIndex: "-1", // prevents focus on row by keyboard navigation
+          }}
+        />
+        <EuiSpacer size="l" />
+      </>
+    )
+  }
+  
+  componentDidMount() {
+    // There's no way to specify initially selected items in EuiBasicTable by 
+    // props, but we may need to select some (in case a user selects some obs.,
+    // closes the modal and opens it again).
+    // However, the selection is stored as a 'selection' field of table's state,
+    // so here we directly edit the state just after the table is created.
+    
+    // Prepare the 'selection' array - it should contain a list of selected row specifications
+    let selection = [];
+    for (let ix of this.props.obsSel) {
+      selection.push(this.table_data[ix]);
+    }
+    
+    // Get ref to EuiBasicTable element and update its state 
+    const table_node = this.tableRef.current;
+    table_node.setState({selection: selection});
+  }
+}
+
diff --git a/roles/build/files/thehive_button/thehive_button/server/routes/newcase.js b/roles/build/files/thehive_button/thehive_button/server/routes/newcase.js
new file mode 100644
index 0000000000000000000000000000000000000000..175dee818c5569a5e5e02db31a6e443abe5f03fb
--- /dev/null
+++ b/roles/build/files/thehive_button/thehive_button/server/routes/newcase.js
@@ -0,0 +1,153 @@
+const request = require('request');
+//const fs = require('fs');
+//const path = require('path');
+
+//const caFile = path.resolve(__dirname, '../../ca.cert.pem'); // TODO resolve where the CA file should be located / configured
+
+export default function (server) {
+  server.route({
+    path: '/api/thehive_button/new_case',
+    method: 'POST',
+    handler: newCaseHandler,
+  });
+  server.route({
+    path: '/api/thehive_button/add_observables',
+    method: 'POST',
+    handler: addObservablesHandler,
+  });
+}
+
+// Handler of ajax requests to create a new Case in The Hive
+function newCaseHandler(req, resp) {
+  // Parse the request to get connection parameters
+  // (everything is configured in forntend and sent as part of the request,
+  //  since I don't know how to configure the backend)
+  var base_url = req.payload['base_url'];
+  var api_key = req.payload['api_key'];
+  var req_body = req.payload['body'];
+
+  // check it's a valid URL with slash at the end
+  if (!base_url) {
+    return {'error': 'Base URL not set'};
+  }
+  if (!base_url.match(/https?:\/\/(([a-z\d.-]+)|((\d{1,3}\.){3}\d{1,3}))(\:\d+)?(\/[-a-z\d%_.~+]*)*\//i)) {
+  //if (!base_url.match(/https?:\/\/.*\//)) {
+    return {'error': 'Invalid base URL (it must begin with "http[s]" and end with "/")'};
+  }
+  if (!api_key) {
+    return {'error': 'API key not set'};
+  }
+
+  return new Promise( function(resolve, reject) {
+    request({
+        method: 'POST',
+        url: base_url + 'api/case',
+        auth: {'bearer': api_key},
+        json: true,
+        body: req_body,
+        //ca: fs.readFileSync(caFile), // TODO resolve the issue with custom CA, where to get its cert?
+        rejectUnauthorized: false,
+      },
+      // handler of the reply from The Hive - just return as reply
+      function (error, response, body) {
+        // TODO: find out how to set response code, for now we always return sucess and encode original status code in the content
+        if (error) {
+          console.error("ERROR when trying to send request to The Hive:", error);
+          resolve({'error': error.message});
+        }
+        else {
+          if (response.statusCode < 200 || response.statusCode >= 300) {
+            console.error("ERROR Unexpected reply received from The Hive:", response.statusCode, response.statusMessage, "\n", body)
+          }
+          resolve({
+            'status_code': response.statusCode,
+            'status_msg': response.statusMessage,
+            'body': body
+          });
+        }
+      } // handler function
+    ); // request()
+  }); // Promise()
+}
+
+// Note:
+// There are two ways to create multiple Observables (artifacts) via The Hive API:
+// 1. post one request with an array of observables in "data" field
+//    - this allows to create all in one request, but doesn't allow to set 
+//      different parameters (IOC, TLP, etc.) to different observables
+// 2. post each observable in a separate request
+// The second way is used here.
+
+// Handler of ajax requests to add Observables to a Case in The Hive
+function addObservablesHandler(req, resp) {
+  // Parse the request to get connection parameters
+  // (everything is configured in forntend and sent as part of the request,
+  //  since I don't know how to configure the backend)
+  var base_url = req.payload['base_url'];
+  var api_key = req.payload['api_key'];
+
+  // check it's a valid URL with slash at the end
+  if (!base_url) {
+    return {'error': 'Base URL not set'};
+  }
+  if (!base_url.match(/https?:\/\/(([a-z\d.-]+)|((\d{1,3}\.){3}\d{1,3}))(\:\d+)?(\/[-a-z\d%_.~+]*)*\//i)) {
+  //if (!base_url.match(/https?:\/\/.*\//)) {
+    return {'error': 'Invalid base URL (it must begin with "http[s]" and end with "/")'};
+  }
+  // TODO add "/" to the end automatically
+  if (!api_key) {
+    return {'error': 'API key not set'};
+  }
+
+  const caseid = req.payload['caseid'];
+  const observables = req.payload['observables']; // array of obersvable specifications
+
+  return new Promise( async function(resolve, reject) {
+    // Run one request for each observable
+    // (A way to run multiple async tasks sequentially inspired by:
+    //  https://jrsinclair.com/articles/2019/how-to-run-async-js-in-parallel-or-sequential/ )
+    const starterPromise = Promise.resolve(null);
+    await observables.reduce(
+      (p, obs) => p.then(() => addObservable(base_url, api_key, caseid, obs)),
+      starterPromise
+    ).catch((err_msg) => {
+        console.error(err_msg); // log whole message
+        resolve({'error': err_msg.split("\n", 1)[0]}); // send the first line to frontend
+        return;
+      }
+    );
+    resolve({});
+  });
+}
+  
+function addObservable(base_url, api_key, caseid, obs) {
+  return new Promise( function(resolve, reject) {
+    //console.log("Adding observable:", obs);
+    request({
+        method: 'POST',
+        url: base_url + 'api/case/' + caseid + "/artifact",
+        auth: {'bearer': api_key},
+        json: true,
+        body: obs,
+        //ca: fs.readFileSync(caFile), // TODO resolve the issue with custom CA, where to get its cert?
+        rejectUnauthorized: false,
+      },
+      // handler of the reply from The Hive - just return as reply
+      function (error, response, body) {
+        if (error) {
+          reject("ERROR when trying to send request to The Hive: " + error);
+        }
+        else if (response.statusCode < 200 || response.statusCode >= 300) {
+          reject("ERROR: Unexpected reply received from The Hive: " + response.statusCode + " " + response.statusMessage + "\n" + JSON.stringify(body));
+        }
+        else {
+          // success - continue with the next observable
+          resolve("OK");
+          resolve({})
+        }
+      } // handler function
+    ); // request()
+  }); //Promise()
+}
+
+
diff --git a/roles/build/files/zookeeper/zookeepersupervisord.conf b/roles/build/files/zookeeper/zookeepersupervisord.conf
deleted file mode 100644
index 3089c9bdf608285cfbffeb6a31ff6fef8940a578..0000000000000000000000000000000000000000
--- a/roles/build/files/zookeeper/zookeepersupervisord.conf
+++ /dev/null
@@ -1,43 +0,0 @@
-[unix_http_server]
-file=/tmp/supervisor.sock
-
-[supervisord]
-pidfile=/tmp/supervisord.pid
-nodaemon=true
-logfile=/var/log/supervisor/supervisord.log
-logfile_maxbytes=10MB
-logfile_backups=10
-loglevel=info
-childlogdir=/var/log/supervisor/
-
-[rpcinterface:supervisor]
-supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
-
-[supervisorctl]
-serverurl=unix:///tmp/supervisor.sock
-
-[program:zookeeper]
-directory=/opt/zookeeper
-user=root
-group=root
-command=/bin/bash -c '/opt/zookeeper/bin/zkServer.sh start-foreground'
-autostart=true
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/zookeeper_stderr.log
-stdout_logfile = /var/log/supervisor/zookeeper_stdout.log
-
-[program:filebeat]
-directory=/opt/filebeat
-user=root
-group=root
-command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
-autostart=false
-autorestart=true
-logfile_maxbytes=10MB
-stdout_logfile_backups = 0
-stderr_logfile_backups = 0
-stderr_logfile = /var/log/supervisor/filebeat_stderr.log
-stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/zookeeperDockerfile b/roles/build/files/zookeeperDockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..33ea38ad66a5b006a77ee2c5fd396a285ff654f7
--- /dev/null
+++ b/roles/build/files/zookeeperDockerfile
@@ -0,0 +1,34 @@
+FROM gn43-dsl/openjdk:7a20201004
+#LABEL maintainer="Apache NiFi <dev@nifi.apache.org>"
+#LABEL site="https://nifi.apache.org"
+
+#ARG UID=1000
+#ARG GID=1000
+ARG ZOOKEEPER_VERSION=3.5.5
+ARG BASE_URL=https://archive.apache.org/dist
+ARG MIRROR_BASE_URL=${MIRROR_BASE_URL:-${BASE_URL}}
+ARG ZOOKEEPER_BINARY_PATH=${ZOOKEEPER_BINARY_PATH:-/zookeeper/zookeeper-${ZOOKEEPER_VERSION}/apache-zookeeper-${ZOOKEEPER_VERSION}-bin.tar.gz}
+
+ENV ZOOKEEPER_BASE_DIR=/opt
+
+#ENV ZOOKEEPER_PID_DIR=${ZOOKEEPER_HOME}/run
+#ENV ZOOKEEPER_LOG_DIR=${ZOOKEEPER_HOME}/logs
+
+#  USER nifi
+
+# Download, validate, and expand Apache NiFi binary.
+RUN curl -fSL ${MIRROR_BASE_URL}/${ZOOKEEPER_BINARY_PATH} -o ${ZOOKEEPER_BASE_DIR}/apache-zookeeper-${ZOOKEEPER_VERSION}-bin.tar.gz \
+#    && echo "$(curl ${BASE_URL}/${ZOOKEEPER_BINARY_PATH}.sha512) *${ZOOKEEPER_BASE_DIR}/apache-zookeeper-${ZOOKEEPER_VERSION}-bin.tar.gz" | sha256sum -c - \
+    && tar -xzf ${ZOOKEEPER_BASE_DIR}/apache-zookeeper-${ZOOKEEPER_VERSION}-bin.tar.gz -C ${ZOOKEEPER_BASE_DIR} \
+    && mv ${ZOOKEEPER_BASE_DIR}/apache-zookeeper-${ZOOKEEPER_VERSION}-bin ${ZOOKEEPER_BASE_DIR}/zookeeper \
+    && rm ${ZOOKEEPER_BASE_DIR}/apache-zookeeper-${ZOOKEEPER_VERSION}-bin.tar.gz \
+    && cp ${ZOOKEEPER_BASE_DIR}/zookeeper/conf/zoo_sample.cfg ${ZOOKEEPER_BASE_DIR}/zookeeper/conf/zoo.cfg
+
+# Web HTTP(s) & Socket Site-to-Site Ports
+EXPOSE 2181 2888 3888
+
+WORKDIR ${ZOOKEEPER_BASE_DIR}/zookeeper
+
+ENTRYPOINT ["/opt/zookeeper/bin/zkServer.sh"]
+CMD ["start-foreground"]
+
diff --git a/roles/build/tasks/cassandra.yml b/roles/build/tasks/cassandra.yml
new file mode 100644
index 0000000000000000000000000000000000000000..1c0a2c6930135fe01a0e9e872e036f6c911eccd3
--- /dev/null
+++ b/roles/build/tasks/cassandra.yml
@@ -0,0 +1,11 @@
+---
+
+- name: Configure the cassandra Dockerfile
+  template:
+    src: cassandra/Dockerfile.j2
+    dest: "{{role_path}}/files/cassandraDockerfile"
+
+- name: Build cassandra image
+  command: docker build -t {{repo}}/cassandra:{{version}}{{suffix}} -f {{role_path}}/files/cassandraDockerfile {{role_path}}/files
+
+
diff --git a/roles/build/tasks/centos.yml b/roles/build/tasks/centos.yml
index 62a8fb1fbd84dce5a27660a24f9eab54b59d9b97..c7be287621104cc8eb257bf0734a5c2641b58c33 100644
--- a/roles/build/tasks/centos.yml
+++ b/roles/build/tasks/centos.yml
@@ -5,115 +5,96 @@
     name: "{{repo}}/centos:{{version}}{{suffix}}"
   register: centosimg
 
-- name: Assert CentOS image
-  assert:
-    that: centosimg.images | length == 0
-    fail_msg: "CentOS image already exists"
-
-- name: Create etc tree in build directory
-  file:
-    path: '{{ temp_root}}/{{ item.path }}'
-    state: directory
-    mode: '{{ item.mode }}'
-  with_filetree: templates/etcroot/
-  when: item.state == 'directory'
-
-- name: Populate etc tree in build directory
-  template:
-    src: '{{ item.src }}'
-    dest: '{{ temp_root}}/{{ item.path }}'
-    force: yes
-  with_filetree: templates/etcroot
-  when: item.state == 'file'
-
-- name: Create dev tree in build directory
-  command: mknod -m {{ item.mode }} {{ item.dev }} {{ item.type }} {{ item.major }} {{ item.minor }}
-  args:
-    creates: "{{ item.dev }}"
-  with_items:
-    - { mode: 600, dev: "{{temp_root}}/dev/console", type: c, major: 5, minor: 1 }
-    - { mode: 600, dev: "{{temp_root}}/dev/initctl", type: p, major: '', minor: '' }
-    - { mode: 666, dev: "{{temp_root}}/dev/full",    type: c, major: 1, minor: 7 }
-    - { mode: 666, dev: "{{temp_root}}/dev/null",    type: c, major: 1, minor: 3 }
-    - { mode: 666, dev: "{{temp_root}}/dev/ptmx",    type: c, major: 5, minor: 2 }
-    - { mode: 666, dev: "{{temp_root}}/dev/random",  type: c, major: 1, minor: 8 }
-    - { mode: 666, dev: "{{temp_root}}/dev/tty",     type: c, major: 5, minor: 0 }
-    - { mode: 666, dev: "{{temp_root}}/dev/tty0",    type: c, major: 4, minor: 0 }
-    - { mode: 666, dev: "{{temp_root}}/dev/urandom", type: c, major: 1, minor: 9 }
-    - { mode: 666, dev: "{{temp_root}}/dev/zero",    type: c, major: 1, minor: 5 }
-
-- name: Install centos-release in build directory
-  yum:
-    installroot: "{{ temp_root}}"
-    name: centos-release
-    state: present 
- 
-- name: Install Core CentOS in build directory
-  yum:
-    installroot: "{{ temp_root}}"
-    name:
-      - "@Core"
-      - yum-plugin-ovl.noarch
-      - epel-release
-    state: present
-
-- name: Install extra packages
-  yum:
-    installroot: "{{ temp_root }}"
-    name:
-      - daemonize
-    state: present
-
-- name: Clean yum cache
-  command: 'yum --installroot="{{ temp_root}}" -y clean all'
-
-- name: Remove unneeded directories
-  file:
-    path: "{{temp_root}}/{{item}}"
-    state: absent
-  with_items:
-    - usr/share/cracklib
-    - var/cache/yum
-    - sbin/sln
-    - etc/ld.so.cache
-    - var/cache/ldconfig
-    - usr/share/backgrounds
-
-- name: Create needed directories
-  file:
-    path: "{{temp_root}}/{{item}}"
-    state: directory
-  with_items:
-    - var/cache/yum
-    - var/cache/ldconfig
-
-- name: Download filebeat
-  get_url:
-    url: "https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-{{ FILEBEAT_VERSION }}-linux-x86_64.tar.gz"
-    dest: "{{ temp_root}}/opt/filebeat.tar.gz"
-    mode: '0640'
-
-- name: Unarchive filebeat
-  unarchive:
-    src: "{{ temp_root}}/opt/filebeat.tar.gz"
-    dest: "{{ temp_root}}/opt/"
-    remote_src: yes
-
-- name: Delete filebeat archive
-  file:
-    path: "{{ item }}"
-    state: absent
-  with_items:
-    - "{{ temp_root}}/opt/filebeat.tar.gz"
-
-- name: move filebeat directory to /opt/filebeat
-  command: "mv {{ temp_root}}/opt/filebeat-{{ FILEBEAT_VERSION }}-linux-x86_64 {{ temp_root}}/opt/filebeat"
-
-- name: Import image in docker
-  shell: tar --numeric-owner -c -C {{temp_root }} . | docker import - {{repo}}/centos:{{version}}{{suffix}}
-
-- name: Remove temp directory
-  file:
-    path: "{{temp_root}}"
-    state: absent
-
+#- name: Skip if image exists
+#  meta: end_play
+#  when: centosimg.images | length != 0
+
+#  tags:
+#    - start
+
+#- name: Assert CentOS image
+#  assert:
+#    that: centosimg.images | length == 0
+#    fail_msg: "CentOS image already exists"
+
+- name: Build CentOS image
+  when: centosimg.images | length == 0
+  block:
+  - name: Create etc tree in build directory
+    file:
+      path: '{{ temp_root}}/{{ item.path }}'
+      state: directory
+      mode: '{{ item.mode }}'
+    with_filetree: templates/etcroot/
+    when: item.state == 'directory'
+  
+  - name: Populate etc tree in build directory
+    template:
+      src: '{{ item.src }}'
+      dest: '{{ temp_root}}/{{ item.path }}'
+      force: yes
+    with_filetree: templates/etcroot
+    when: item.state == 'file'
+  
+  - name: Create dev tree in build directory
+    command: mknod -m {{ item.mode }} {{ item.dev }} {{ item.type }} {{ item.major }} {{ item.minor }}
+    args:
+      creates: "{{ item.dev }}"
+    with_items:
+      - { mode: 600, dev: "{{temp_root}}/dev/console", type: c, major: 5, minor: 1 }
+      - { mode: 600, dev: "{{temp_root}}/dev/initctl", type: p, major: '', minor: '' }
+      - { mode: 666, dev: "{{temp_root}}/dev/full",    type: c, major: 1, minor: 7 }
+      - { mode: 666, dev: "{{temp_root}}/dev/null",    type: c, major: 1, minor: 3 }
+      - { mode: 666, dev: "{{temp_root}}/dev/ptmx",    type: c, major: 5, minor: 2 }
+      - { mode: 666, dev: "{{temp_root}}/dev/random",  type: c, major: 1, minor: 8 }
+      - { mode: 666, dev: "{{temp_root}}/dev/tty",     type: c, major: 5, minor: 0 }
+      - { mode: 666, dev: "{{temp_root}}/dev/tty0",    type: c, major: 4, minor: 0 }
+      - { mode: 666, dev: "{{temp_root}}/dev/urandom", type: c, major: 1, minor: 9 }
+      - { mode: 666, dev: "{{temp_root}}/dev/zero",    type: c, major: 1, minor: 5 }
+  
+  - name: Install centos-release in build directory
+    yum:
+      installroot: "{{ temp_root}}"
+      name: centos-release
+      state: present 
+   
+  - name: Install Core CentOS in build directory
+    yum:
+      installroot: "{{ temp_root}}"
+      name:
+        - "@Core"
+        - yum-plugin-ovl.noarch
+        - epel-release
+      state: present
+  
+  - name: Clean yum cache
+    command: 'yum --installroot="{{ temp_root}}" -y clean all'
+  
+  - name: Remove unneeded directories
+    file:
+      path: "{{temp_root}}/{{item}}"
+      state: absent
+    with_items:
+      - usr/share/cracklib
+      - var/cache/yum
+      - sbin/sln
+      - etc/ld.so.cache
+      - var/cache/ldconfig
+      - usr/share/backgrounds
+  
+  - name: Create needed directories
+    file:
+      path: "{{temp_root}}/{{item}}"
+      state: directory
+    with_items:
+      - var/cache/yum
+      - var/cache/ldconfig
+  
+  - name: Import image in docker
+    shell: tar --numeric-owner -c -C {{temp_root }} . | docker import - {{repo}}/centos:{{version}}{{suffix}}
+  
+  - name: Remove temp directory
+    file:
+      path: "{{temp_root}}"
+      state: absent
+  
diff --git a/roles/build/tasks/cortex.yml b/roles/build/tasks/cortex.yml
new file mode 100644
index 0000000000000000000000000000000000000000..9a5adbef67cf1fee1f7eb48f23e4d083a8c6631d
--- /dev/null
+++ b/roles/build/tasks/cortex.yml
@@ -0,0 +1,11 @@
+---
+
+- name: Configure the Cortex Dockerfile
+  template:
+    src: cortex/Dockerfile.j2
+    dest: "{{role_path}}/files/cortexDockerfile"
+
+- name: Build the Cortex image
+  command: docker build -t {{repo}}/cortex:{{version}}{{suffix}} -f {{role_path}}/files/cortexDockerfile {{role_path}}/files
+
+
diff --git a/roles/build/tasks/haproxy.yml b/roles/build/tasks/haproxy.yml
new file mode 100644
index 0000000000000000000000000000000000000000..9cb45f840be6ad255b6420abcabc83fbed79b96a
--- /dev/null
+++ b/roles/build/tasks/haproxy.yml
@@ -0,0 +1,10 @@
+---
+
+- name: Configure the haproxy Dockerfile
+  template:
+    src: haproxy/Dockerfile.j2
+    dest: "{{role_path}}/files/haproxyDockerfile"
+
+- name: Build haproxy image
+  command: docker build -t {{repo}}/haproxy:{{version}}{{suffix}} -f {{role_path}}/files/haproxyDockerfile {{role_path}}/files
+
diff --git a/roles/build/tasks/keycloak.yml b/roles/build/tasks/keycloak.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f7a7c2b1989bf013e7a23a1646e7d7e62500098e
--- /dev/null
+++ b/roles/build/tasks/keycloak.yml
@@ -0,0 +1,18 @@
+---
+
+- name: Configure the keycloak Dockerfile
+  template:
+    src: keycloak/Dockerfile.j2
+    dest: "{{role_path}}/files/keycloakDockerfile"
+
+- name: Copy tools to build path
+  command: "cp -av {{role_path}}/templates/keycloak/keycloak-tools/ {{role_path}}/files/keycloak-tools/"
+
+- name: Build keycloak image
+  command: docker build -t {{repo}}/keycloak:{{version}}{{suffix}} -f {{role_path}}/files/keycloakDockerfile {{role_path}}/files
+
+- name: Remove tools from build path
+  file:
+    path: "{{role_path}}/files/keycloak-tools/"
+    state: absent
+
diff --git a/roles/build/tasks/main.yml b/roles/build/tasks/main.yml
index eee4ba0ee19f8eda382bed26c1e9dacf11706469..223766f87e2d7d1ae88de3d70dd7810a0dbdf091 100644
--- a/roles/build/tasks/main.yml
+++ b/roles/build/tasks/main.yml
@@ -2,45 +2,19 @@
 
 - assert:
     that:
-      - "'CHANGE_ME' not in soctoolsproxy"
+      - "'CHANGE_ME' not in dslproxy"
     fail_msg: "Review *all* settings in group_vars/all/main.yml"
 
 - include: centos.yml
-
-- name: Create main build dir
-  file:
-    path: "{{docker_build_dir}}"
-    state: directory
-
-- name: Create build dir
-  file:
-    path: "{{docker_build_dir}}/{{item}}"
-    state: directory
-  with_items: "{{services}}"
-
-- name: Configure the Dockerfile
-  template:
-    src: "{{item}}/Dockerfile.j2"
-    dest: "{{docker_build_dir}}/{{item}}/Dockerfile"
-  with_items: "{{services}}"
-
-- name: Copy thehive_button to build path
-  copy:
-    src: "{{role_path}}/templates/odfekibana/thehive_button"
-    dest: "{{docker_build_dir}}/odfekibana/"
-
-- name: Copy keycloak-tools to build path
-  copy:
-    src: "{{role_path}}/templates/keycloak/keycloak-tools"
-    dest: "{{docker_build_dir}}/keycloak/"
-
-- name: Copy build files
-  copy:
-    src: "files/{{item}}/"
-    dest: "{{docker_build_dir}}/{{item}}/"
-  with_items: "{{services}}"
-  ignore_errors: yes
-
-- name: Build image
-  command: docker build -t {{repo}}/{{item}}:{{version}}{{suffix}} -f {{docker_build_dir}}/{{item}}/Dockerfile {{docker_build_dir}}/{{item}}
-  with_items: "{{services}}"
+- include: mysql.yml
+- include: haproxy.yml
+- include: openjdk.yml
+- include: zookeeper.yml
+- include: nifi.yml
+- include: odfees.yml
+- include: odfekibana.yml
+- include: keycloak.yml
+- include: misp.yml
+- include: cassandra.yml
+- include: thehive.yml
+- include: cortex.yml
diff --git a/roles/build/tasks/misp.yml b/roles/build/tasks/misp.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d52c39c7d0292a5b6285fbc23220b3cf33be422d
--- /dev/null
+++ b/roles/build/tasks/misp.yml
@@ -0,0 +1,20 @@
+---
+
+- name: Configure the misp Dockerfile
+  template:
+    src: misp/Dockerfile.j2
+    dest: "{{role_path}}/files/mispDockerfile"
+
+- name: Configure the misp supervisor
+  template:
+    src: misp/supervisord.conf.j2
+    dest: "{{role_path}}/files/mispsupervisord.conf"
+
+- name: Configure the misp worker startscript
+  template:
+    src: misp/start.sh.j2
+    dest: "{{role_path}}/files/mispstart.sh"
+
+- name: Build misp image
+  command: docker build -t {{repo}}/misp:{{version}}{{suffix}} -f {{role_path}}/files/mispDockerfile {{role_path}}/files
+
diff --git a/roles/build/tasks/mysql.yml b/roles/build/tasks/mysql.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a0281907e39a5f8aaa59648b8eae0b90ce968f58
--- /dev/null
+++ b/roles/build/tasks/mysql.yml
@@ -0,0 +1,15 @@
+---
+
+- name: Configure the mysql Dockerfile
+  template:
+    src: mysql/Dockerfile.j2
+    dest: "{{role_path}}/files/mysqlDockerfile"
+
+- name: Configure the mysql supervisor
+  template:
+    src: mysql/supervisord.conf.j2
+    dest: "{{role_path}}/files/mysqlsupervisord.conf"
+
+- name: Build mysql image
+  command: docker build -t {{repo}}/mysql:{{version}}{{suffix}} -f {{role_path}}/files/mysqlDockerfile {{role_path}}/files
+
diff --git a/roles/build/tasks/nifi.yml b/roles/build/tasks/nifi.yml
new file mode 100644
index 0000000000000000000000000000000000000000..423978d987b5ced99a995ddc5a3e733cf56504da
--- /dev/null
+++ b/roles/build/tasks/nifi.yml
@@ -0,0 +1,11 @@
+---
+
+- name: Configure the nifi Dockerfile
+  template:
+    src: nifi/Dockerfile.j2
+    dest: "{{role_path}}/files/nifiDockerfile"
+
+- name: Build nifi image
+  command: docker build -t {{repo}}/nifi:{{version}}{{suffix}} -f {{role_path}}/files/nifiDockerfile {{role_path}}/files
+
+
diff --git a/roles/build/tasks/odfees.yml b/roles/build/tasks/odfees.yml
new file mode 100644
index 0000000000000000000000000000000000000000..5741223fdd61d30801eec2fc4c2bdbe1fdb7ed36
--- /dev/null
+++ b/roles/build/tasks/odfees.yml
@@ -0,0 +1,18 @@
+---
+
+- name: Configure elasticsearch Dockerfile
+  template:
+    src: odfees/Dockerfile-elastic.j2
+    dest: "{{role_path}}/files/elasticDockerfile"
+
+- name: Build elasticsearch image
+  command: docker build -t {{repo}}/elasticsearch:{{version}}{{suffix}} -f {{role_path}}/files/elasticDockerfile {{role_path}}/files
+
+- name: Configure odfe elasticsearch Dockerfile
+  template:
+    src: odfees/Dockerfile-odfeelastic.j2
+    dest: "{{role_path}}/files/odfeesDockerfile"
+
+- name: Build odfe elasticsearch image
+  command: docker build -t {{repo}}/odfees:{{version}}{{suffix}} -f {{role_path}}/files/odfeesDockerfile {{role_path}}/files
+
diff --git a/roles/build/tasks/odfekibana.yml b/roles/build/tasks/odfekibana.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8e1980a7680f5f23b7370d61dba057e457430291
--- /dev/null
+++ b/roles/build/tasks/odfekibana.yml
@@ -0,0 +1,22 @@
+---
+
+- name: Configure kibana Dockerfile
+  template:
+    src: odfekibana/Dockerfile-kibana.j2
+    dest: "{{role_path}}/files/kibanaDockerfile"
+
+- name: Copy tools to build path
+  command: "cp -av {{role_path}}/templates/odfekibana/thehive_button/ {{role_path}}/files/thehive_button/"
+
+- name: Build kibana image
+  command: docker build -t {{repo}}/kibana:{{version}}{{suffix}} -f {{role_path}}/files/kibanaDockerfile {{role_path}}/files
+
+- name: Configure odfe kibana Dockerfile
+  template:
+    src: odfekibana/Dockerfile-odfekibana.j2
+    dest: "{{role_path}}/files/odfekibanaDockerfile"
+
+- name: Build odfe kibana image
+  command: docker build -t {{repo}}/odfekibana:{{version}}{{suffix}} -f {{role_path}}/files/odfekibanaDockerfile {{role_path}}/files
+
+
diff --git a/roles/build/tasks/openjdk.yml b/roles/build/tasks/openjdk.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8754ac7fdf7d6147ab522f936b8888a5fd5a7e60
--- /dev/null
+++ b/roles/build/tasks/openjdk.yml
@@ -0,0 +1,11 @@
+---
+
+- name: Configure the openjdk Dockerfile
+  template:
+    src: openjdk/Dockerfile.j2
+    dest: "{{role_path}}/files/openjdkDockerfile"
+
+- name: Build openjdk image
+  command: docker build -t {{repo}}/openjdk:{{version}}{{suffix}} -f {{role_path}}/files/openjdkDockerfile {{role_path}}/files
+
+
diff --git a/roles/build/tasks/thehive.yml b/roles/build/tasks/thehive.yml
new file mode 100644
index 0000000000000000000000000000000000000000..35fe08ebf7d5da456a40f0a0de273d102d5eada2
--- /dev/null
+++ b/roles/build/tasks/thehive.yml
@@ -0,0 +1,11 @@
+---
+
+- name: Configure theHive Dockerfile
+  template:
+    src: thehive/Dockerfile.j2
+    dest: "{{role_path}}/files/thehiveDockerfile"
+
+- name: Build theHive image
+  command: docker build -t {{repo}}/thehive:{{version}}{{suffix}} -f {{role_path}}/files/thehiveDockerfile {{role_path}}/files
+
+
diff --git a/roles/build/tasks/zookeeper.yml b/roles/build/tasks/zookeeper.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a61a6b397f8d1d34559da24f290df8ea93b85f94
--- /dev/null
+++ b/roles/build/tasks/zookeeper.yml
@@ -0,0 +1,11 @@
+---
+
+- name: Configure the zookeeper Dockerfile
+  template:
+    src: zookeeper/Dockerfile.j2
+    dest: "{{role_path}}/files/zookeeperDockerfile"
+
+- name: Build zookeeper image
+  command: docker build -t {{repo}}/zookeeper:{{version}}{{suffix}} -f {{role_path}}/files/zookeeperDockerfile {{role_path}}/files
+
+
diff --git a/roles/build/templates/cassandra/Dockerfile.j2 b/roles/build/templates/cassandra/Dockerfile.j2
index f5d2a601c1526e9cf119c01bea5e36c2edf8223d..94b0ca08c01de7c4b225bdcb81c7a35c2ffb33ff 100644
--- a/roles/build/templates/cassandra/Dockerfile.j2
+++ b/roles/build/templates/cassandra/Dockerfile.j2
@@ -1,20 +1,35 @@
 FROM {{repo}}/openjdk:{{version}}{{suffix}}
 
 USER root
+#COPY cassandra.repo /etc/yum.repos.d/cassandra.repo
+#COPY supervisord.conf /etc/supervisord.conf
+#COPY start.sh /start.sh
 RUN echo "[cassandra]" > /etc/yum.repos.d/cassandra.repo && \
     echo "name=Apache Cassandra" >> /etc/yum.repos.d/cassandra.repo && \
     echo "baseurl=https://downloads.apache.org/cassandra/redhat/311x/" >> /etc/yum.repos.d/cassandra.repo && \
     echo "gpgcheck=1" >> /etc/yum.repos.d/cassandra.repo && \
     echo "repo_gpgcheck=1" >> /etc/yum.repos.d/cassandra.repo && \
     echo "gpgkey=https://downloads.apache.org/cassandra/KEYS" >> /etc/yum.repos.d/cassandra.repo && \
+    echo '#!/bin/bash' > /start.sh && \
+    echo 'export CASSANDRA_HOME=/usr/share/cassandra' >> /start.sh && \
+    echo 'export CASSANDRA_CONF=$CASSANDRA_HOME/conf' >> /start.sh && \
+    echo 'export CASSANDRA_INCLUDE=$CASSANDRA_HOME/cassandra.in.sh' >> /start.sh && \
+    echo 'log_file=/var/log/cassandra/cassandra.log' >> /start.sh && \
+    echo 'pid_file=/var/run/cassandra/cassandra.pid' >> /start.sh && \
+    echo 'lock_file=/var/lock/subsys/cassandra' >> /start.sh && \
+    echo 'CASSANDRA_PROG=/usr/sbin/cassandra' >> /start.sh && \
+    echo '' >> /start.sh && \
+    echo '$CASSANDRA_PROG -p $pid_file > $log_file 2>&1' >> /start.sh && \
     yum install -y epel-release && \
-    yum install -y cassandra supervisor rsync && \
+    yum install -y cassandra supervisor && \
     mkdir /usr/share/cassandra/conf && \
     cp -a /etc/cassandra/conf/* /usr/share/cassandra/conf && \
     chown -R cassandra:cassandra /usr/share/cassandra && \
     chown -R cassandra:cassandra /var/lib/cassandra && \
     sed -i -e 's,/etc/cassandra,/usr/share/cassandra,g' /usr/share/cassandra/cassandra.in.sh && \
+    chmod a+x /start.sh && \
     yum -y clean all
-COPY cassandrasupervisord.conf /etc/supervisord.conf
 EXPOSE 7000 9042
-ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+#ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+USER cassandra
+# ENTRYPOINT ["/start.sh"]
diff --git a/roles/build/templates/cassandra/cassandra.repo.j2 b/roles/build/templates/cassandra/cassandra.repo.j2
new file mode 100644
index 0000000000000000000000000000000000000000..8fdb78c9a4e3868ea6693110941914adc511877e
--- /dev/null
+++ b/roles/build/templates/cassandra/cassandra.repo.j2
@@ -0,0 +1,6 @@
+[cassandra]
+name=Apache Cassandra
+baseurl=https://downloads.apache.org/cassandra/redhat/311x/
+gpgcheck=1
+repo_gpgcheck=1
+gpgkey=https://downloads.apache.org/cassandra/KEYS
diff --git a/roles/build/templates/cassandra/start.sh.j2 b/roles/build/templates/cassandra/start.sh.j2
new file mode 100644
index 0000000000000000000000000000000000000000..fa91e921956d5d2d6fa1be6812a9794071b20965
--- /dev/null
+++ b/roles/build/templates/cassandra/start.sh.j2
@@ -0,0 +1,10 @@
+#!/bin/bash
+export CASSANDRA_HOME=/usr/share/cassandra
+export CASSANDRA_CONF=$CASSANDRA_HOME/conf
+export CASSANDRA_INCLUDE=$CASSANDRA_HOME/cassandra.in.sh
+log_file=/var/log/cassandra/cassandra.log
+pid_file=/var/run/cassandra/cassandra.pid
+lock_file=/var/lock/subsys/cassandra
+CASSANDRA_PROG=/usr/sbin/cassandra
+
+$CASSANDRA_PROG -p $pid_file > $log_file 2>&1
diff --git a/roles/build/templates/cassandra/supervisord.conf.j2 b/roles/build/templates/cassandra/supervisord.conf.j2
new file mode 100644
index 0000000000000000000000000000000000000000..d1f405eb91d5bae99af653dae0d5c246ae723f08
--- /dev/null
+++ b/roles/build/templates/cassandra/supervisord.conf.j2
@@ -0,0 +1,10 @@
+[supervisord]
+loglevel=debug
+nodaemon=true
+[program:cassandra]
+user=cassandra
+directory=/usr/share/cassandra
+stdout_logfile=/var/log/cassandra/cassandra.log
+redirect_stderr=true
+environment=CASSANDRA_HOME="/usr/share/cassandra",CASSANDRA_CONF="/usr/share/cassandra/conf",CASSANDRA_INCLUDE="$CASSANDRA_HOME/cassandra.in.sh"
+command=/usr/sbin/cassandra -p /var/run/cassandra/cassandra.pid
diff --git a/roles/build/templates/cortex/Dockerfile.j2 b/roles/build/templates/cortex/Dockerfile.j2
index ceeb6a59132f30e1ca21978a4ee873b97f05e2d3..d56dbf02c14be1e71860da43814eddc904aa7177 100644
--- a/roles/build/templates/cortex/Dockerfile.j2
+++ b/roles/build/templates/cortex/Dockerfile.j2
@@ -1,6 +1,9 @@
 FROM {{repo}}/openjdk:{{version}}{{suffix}}
 
 USER root
+#COPY thehive.repo /etc/yum.repos.d/thehive.repo
+#COPY supervisord.conf /etc/supervisord.conf
+#COPY start.sh /start.sh
 RUN echo "[thehive-project]" > /etc/yum.repos.d/thehive.repo && \
     echo "enabled=1" >> /etc/yum.repos.d/thehive.repo && \
     echo "priority=1" >> /etc/yum.repos.d/thehive.repo && \
@@ -10,7 +13,7 @@ RUN echo "[thehive-project]" > /etc/yum.repos.d/thehive.repo && \
     yum install -y epel-release && \
     rpm --import https://raw.githubusercontent.com/TheHive-Project/TheHive/master/PGP-PUBLIC-KEY && \
     rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch && \
-    yum install -y cortex supervisor rsync daemonize vim net-tools telnet htop python3-pip.noarch git gcc python3-devel.x86_64 ssdeep-devel.x86_64 python3-wheel.noarch libexif-devel.x86_64 libexif.x86_64 perl-Image-ExifTool.noarch  gcc-c++ whois && \
+    yum install -y cortex supervisor daemonize vim net-tools telnet htop python3-pip.noarch git gcc python3-devel.x86_64 ssdeep-devel.x86_64 python3-wheel.noarch libexif-devel.x86_64 libexif.x86_64 perl-Image-ExifTool.noarch  gcc-c++ whois && \
     rpm -Uvh https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-6.8.13.rpm && \
     chown -R elasticsearch:elasticsearch /etc/elasticsearch && \
     mkdir -p /home/cortex && \
@@ -24,5 +27,6 @@ RUN echo "[thehive-project]" > /etc/yum.repos.d/thehive.repo && \
     for I in responders/*/requirements.txt; do LC_ALL=en_US.UTF-8 pip3 install --no-cache-dir -U -r $I || true; done && \
     yum -y clean all
 EXPOSE 9001
-COPY cortexsupervisord.conf /etc/supervisord.conf
-ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+#ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+USER cortex
+# ENTRYPOINT ["/start.sh"]
diff --git a/roles/build/templates/cortex/application.conf b/roles/build/templates/cortex/application.conf
index afe42a610e0b4865af6e2d382cc88e46d7943882..0e28b4d0d71643d558b0d014be354985a02d19c7 100644
--- a/roles/build/templates/cortex/application.conf
+++ b/roles/build/templates/cortex/application.conf
@@ -17,7 +17,7 @@ search {
   index = cortex3
   # ElasticSearch instance address.
   # For cluster, join address:port with ',': "http://ip1:9200,ip2:9200,ip3:9200"
-  uri = "http://soctools-elastic:9200"
+  uri = "http://dsoclab-elastic:9200"
 
   ## Advanced configuration
   # Scroll keepalive.
diff --git a/roles/build/templates/haproxy/Dockerfile.j2 b/roles/build/templates/haproxy/Dockerfile.j2
index 6c34d74ce038ef6feaa1bde99b2d823a30a830a9..d9f84c4c3ec60e5593ab4a3ccffee1660585260e 100644
--- a/roles/build/templates/haproxy/Dockerfile.j2
+++ b/roles/build/templates/haproxy/Dockerfile.j2
@@ -24,8 +24,6 @@ RUN \
   iptables \
   pcre2-devel \
   daemonize \
-  supervisor \
-  rsync \
   pth-devel && \
   `# Install newest openssl...` \
   wget -O /tmp/openssl.tgz https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz && \
@@ -64,5 +62,10 @@ RUN \
   && cp -R /usr/src/haproxy/examples/errorfiles /usr/local/etc/haproxy/errors \
   && rm -rf /usr/src/haproxy 
 
-COPY haproxysupervisord.conf /etc/supervisord.conf
-ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+ENTRYPOINT ["/bin/bash"]
+
+# https://www.haproxy.org/download/1.8/doc/management.txt
+# "4. Stopping and restarting HAProxy"
+# "when the SIGTERM signal is sent to the haproxy process, it immediately quits and all established connections are closed"
+# "graceful stop is triggered when the SIGUSR1 signal is sent to the haproxy process"
+STOPSIGNAL SIGUSR1
diff --git a/roles/build/templates/keycloak/Dockerfile.j2 b/roles/build/templates/keycloak/Dockerfile.j2
index 561a6466f121ee2462dab388ed99a580f16ba39c..d8c3b6b46b96dac244154889943bb2aad256605c 100644
--- a/roles/build/templates/keycloak/Dockerfile.j2
+++ b/roles/build/templates/keycloak/Dockerfile.j2
@@ -11,7 +11,7 @@ USER root
 #ADD /{{role_path}}/templates/keycloak/keycloak-tools /opt/jboss/tools
 ADD keycloak-tools /opt/jboss/tools
 #ADD ../templates/keycloak/keycloak-tools /opt/jboss/tools
-RUN yum -y install openssl supervisor rsync && yum -y clean all && \
+RUN yum -y install openssl && yum -y clean all && \
     mkdir -p /opt/jboss/ && cd /opt/jboss/ && \
     curl -L $KEYCLOAK_DIST | tar zx && \
     mv /opt/jboss/keycloak-* /opt/jboss/keycloak && \
@@ -27,7 +27,6 @@ RUN yum -y install openssl supervisor rsync && yum -y clean all && \
     adduser -u 1000 -g 0 -d /opt/jboss jboss && \
     chown -R jboss:root /opt/jboss && \
     chmod -R g+rwX /opt/jboss && \
-    chmod a+x /opt/jboss/tools/x509.sh && \ 
     mkdir -p /etc/x509/{https,ca} && chown -R jboss:root /etc/x509/{https,ca}
 
 ENV PATH="/opt/jboss/keycloak/bin:${PATH}"
@@ -37,8 +36,6 @@ WORKDIR /opt/jboss/keycloak
 EXPOSE 8080
 EXPOSE 8443
 
-RUN echo 'jboss ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers
-
-COPY keycloaksupervisord.conf /etc/supervisord.conf
-ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+USER jboss
+ENTRYPOINT ["/bin/bash"]
 
diff --git a/roles/build/templates/misp/Dockerfile.j2 b/roles/build/templates/misp/Dockerfile.j2
index 85c96482f222cafeaf587b157dfda1eb28c84a43..b99d2a84cffc07c99a2622c5bba30c3e479a7425 100644
--- a/roles/build/templates/misp/Dockerfile.j2
+++ b/roles/build/templates/misp/Dockerfile.j2
@@ -2,7 +2,7 @@ FROM {{repo}}/centos:{{version}}{{suffix}}
 
 USER root
 RUN yum install -y epel-release centos-release-scl scl-utils ; \
-    yum install -y gcc git zip openssl supervisor rsync rh-git218 httpd24 mod_ssl mod_auth_openidc rh-redis32 libxslt-devel zlib-devel libcaca-devel ssdeep-devel rh-php72 rh-php72-php-fpm rh-php72-php-devel rh-php72-php-mysqlnd rh-php72-php-mbstring rh-php72-php-xml rh-php72-php-bcmath rh-php72-php-opcache rh-php72-php-gd mariadb devtoolset-7 make cmake3 cppcheck libcxx-devel gpgme-devel openjpeg-devel gcc gcc-c++ poppler-cpp-devel pkgconfig python-devel redhat-rpm-config rubygem-rouge rubygem-asciidoctor zbar-devel opencv-devel wget screen rh-python36-mod_wsgi postfix curl make cmake python3 python3-devel python3-pip python3-yara python3-wheel python3-redis python3-zmq python3-setuptools redis sudo vim zip sqlite moreutils rng-tools libxml2-devel libxslt-devel zlib-devel libpqxx openjpeg2-devel ssdeep-devel ruby asciidoctor tesseract ImageMagick poppler-cpp-devel python36-virtualenv opencv-devel zbar zbar-devel ; \
+    yum install -y gcc git zip openssl supervisor rh-git218 httpd24 mod_ssl mod_auth_openidc rh-redis32 libxslt-devel zlib-devel libcaca-devel ssdeep-devel rh-php72 rh-php72-php-fpm rh-php72-php-devel rh-php72-php-mysqlnd rh-php72-php-mbstring rh-php72-php-xml rh-php72-php-bcmath rh-php72-php-opcache rh-php72-php-gd mariadb devtoolset-7 make cmake3 cppcheck libcxx-devel gpgme-devel openjpeg-devel gcc gcc-c++ poppler-cpp-devel pkgconfig python-devel redhat-rpm-config rubygem-rouge rubygem-asciidoctor zbar-devel opencv-devel wget screen rh-python36-mod_wsgi postfix curl make cmake python3 python3-devel python3-pip python3-yara python3-wheel python3-redis python3-zmq python3-setuptools redis sudo vim zip sqlite moreutils rng-tools libxml2-devel libxslt-devel zlib-devel libpqxx openjpeg2-devel ssdeep-devel ruby asciidoctor tesseract ImageMagick poppler-cpp-devel python36-virtualenv opencv-devel zbar zbar-devel ; \
     yum -y clean all ; \
     sed -i "s/max_execution_time = 30/max_execution_time = 300/" /etc/opt/rh/rh-php72/php.ini ; \
     sed -i "s/memory_limit = 128M/memory_limit = 2048M/" /etc/opt/rh/rh-php72/php.ini ; \
@@ -76,12 +76,9 @@ RUN chown -R apache:apache /var/www/MISP ; \
     chmod -R g+ws /var/www/MISP/app/files ; \
     chmod -R g+ws /var/www/MISP/app/files/scripts/tmp
 
-COPY misp_rh-php72-php-fpm /etc/logrotate.d/rh-php72-php-fpm
-
 # 80/443 - MISP web server, 3306 - mysql, 6379 - redis, 6666 - MISP modules, 50000 - MISP ZeroMQ
 EXPOSE 80 443 6443 6379 6666 50000
 
-ENV PATH "$PATH:/opt/rh/rh-php72/root/bin/"
-
 COPY mispsupervisord.conf /etc/supervisord.conf
-ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+#ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+
diff --git a/roles/build/templates/misp/supervisord.conf.j2 b/roles/build/templates/misp/supervisord.conf.j2
new file mode 100644
index 0000000000000000000000000000000000000000..fbd4dea3bbd292aa2eea51772ecc559dc0b51703
--- /dev/null
+++ b/roles/build/templates/misp/supervisord.conf.j2
@@ -0,0 +1,25 @@
+[supervisord]
+nodaemon=false
+user=root
+
+[program:php-fpm]
+# EnvironmentFile=/etc/opt/rh/rh-php72/sysconfig/php-fpm
+command=/opt/rh/rh-php72/root/usr/sbin/php-fpm --nodaemonize
+
+[program:redis-server]
+process_name = redis-server
+directory = /var/opt/rh/rh-redis32/lib/redis/
+command=/opt/rh/rh-redis32/root/usr/bin/redis-server /etc/opt/rh/rh-redis32/redis.conf
+user=redis
+
+[program:apache2]
+command=/usr/sbin/httpd -DFOREGROUND
+
+[program:misp-modules]
+command=/bin/bash -c "/usr/local/bin/misp-modules -l '0.0.0.0' -s"
+user = apache
+startsecs = 0
+
+[program:workers]
+command=/bin/bash /var/www/MISP/app/Console/worker/start.sh
+user=apache
diff --git a/roles/build/templates/mysql/Dockerfile.j2 b/roles/build/templates/mysql/Dockerfile.j2
index 393eb3f8a06e049cbdb9b180f0cd4f093e7e86ab..c7b7d23bf199b273f76110b320863916cf173c67 100644
--- a/roles/build/templates/mysql/Dockerfile.j2
+++ b/roles/build/templates/mysql/Dockerfile.j2
@@ -2,7 +2,7 @@ FROM {{repo}}/centos:{{version}}{{suffix}}
 
 USER root
 RUN yum -y update && yum install -y epel-release centos-release-scl scl-utils && \
-    yum install -y rh-mariadb103 python36-PyMySQL MySQL-python supervisor rsync && \
+    yum install -y rh-mariadb103 python36-PyMySQL MySQL-python supervisor && \
     /usr/bin/scl enable rh-mariadb103 -- /opt/rh/rh-mariadb103/root/usr/libexec/mysql-prepare-db-dir /var/opt/rh/rh-mariadb103/lib/mysql 
 RUN yum clean all
 
diff --git a/roles/build/templates/mysql/supervisord.conf.j2 b/roles/build/templates/mysql/supervisord.conf.j2
new file mode 100644
index 0000000000000000000000000000000000000000..e44e9fe1189eae3241d8bb1001c3a081a386353c
--- /dev/null
+++ b/roles/build/templates/mysql/supervisord.conf.j2
@@ -0,0 +1,7 @@
+[supervisord]
+loglevel=debug
+nodaemon=true
+[program:mysql]
+user=mysql
+directory=/var/lib/mysql
+command=/opt/rh/rh-mariadb103/root/usr/libexec/mysqld-scl-helper enable rh-mariadb103 -- /opt/rh/rh-mariadb103/root/usr/libexec/mysqld --basedir=/opt/rh/rh-mariadb103/root/usr
diff --git a/roles/build/templates/nifi/Dockerfile.j2 b/roles/build/templates/nifi/Dockerfile.j2
index 63c51747ea349daa1509f556ee4c323043635c3c..d3408b16d5a52ad7cb48463cd1f543d2ab25c327 100644
--- a/roles/build/templates/nifi/Dockerfile.j2
+++ b/roles/build/templates/nifi/Dockerfile.j2
@@ -44,8 +44,6 @@ RUN groupadd -g ${GID} nifi || groupmod -n nifi `getent group ${GID} | cut -d: -
     && chown -R nifi:nifi ${NIFI_BASE_DIR} \
     && yum -y install jq xmlstarlet procps-ng
 
-RUN echo 'nifi ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers
-
 USER nifi
 
 # Download, validate, and expand Apache NiFi Toolkit binary.
@@ -96,8 +94,4 @@ WORKDIR ${NIFI_HOME}
 # Also we need to use relative path, because the exec form does not invoke a command shell,
 # thus normal shell processing does not happen:
 # https://docs.docker.com/engine/reference/builder/#exec-form-entrypoint-example
-USER root
-RUN yum install -y supervisor rsync
-RUN yum clean all
-COPY nifisupervisord.conf /etc/supervisord.conf
-ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+ENTRYPOINT ["/bin/bash"]
diff --git a/roles/build/templates/elasticsearch/Dockerfile.j2 b/roles/build/templates/odfees/Dockerfile-elastic.j2
similarity index 85%
rename from roles/build/templates/elasticsearch/Dockerfile.j2
rename to roles/build/templates/odfees/Dockerfile-elastic.j2
index 6f273d635c0c0135bf99fc07efe06c37134c5379..dd2ad126108e11ad523a8357393f1810de46d650 100644
--- a/roles/build/templates/elasticsearch/Dockerfile.j2
+++ b/roles/build/templates/odfees/Dockerfile-elastic.j2
@@ -15,8 +15,7 @@ RUN rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch && \
     chown -R elasticsearch /usr/share/elasticsearch/data && \
     sed -i -e 's,ES_PATH_CONF=/etc/elasticsearch,ES_PATH_CONF=/usr/share/elasticsearch/config,g' /etc/sysconfig/elasticsearch
 
-RUN echo 'elasticsearch ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers
-
 EXPOSE 9200 9300
-ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+USER elasticsearch
+ENTRYPOINT ["/bin/bash"]
 
diff --git a/roles/build/templates/odfees/Dockerfile.j2 b/roles/build/templates/odfees/Dockerfile-odfeelastic.j2
similarity index 74%
rename from roles/build/templates/odfees/Dockerfile.j2
rename to roles/build/templates/odfees/Dockerfile-odfeelastic.j2
index a4834a5e3caff38bd7f76182455a747638c2f952..0803d0bf517d57ce14364bd35be194f6bdbae0cc 100644
--- a/roles/build/templates/odfees/Dockerfile.j2
+++ b/roles/build/templates/odfees/Dockerfile-odfeelastic.j2
@@ -12,8 +12,5 @@ RUN for PLUGIN in \
     do bin/elasticsearch-plugin install -b ${PLUGIN}; done && \
     chown -R elasticsearch plugins/opendistro_security
 
-RUN echo 'elasticsearch ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers
-RUN yum install -y supervisor rsync
-RUN yum clean all
-COPY odfesupervisord.conf /etc/supervisord.conf
-ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+USER elasticsearch
+
diff --git a/roles/build/templates/odfekibana/Dockerfile-kibana.j2 b/roles/build/templates/odfekibana/Dockerfile-kibana.j2
index 05a1c40b3ac3cb718e524cef5225102e7ece1e55..c443597ddd2a10457ce9163c7b4dd722f2d8790f 100644
--- a/roles/build/templates/odfekibana/Dockerfile-kibana.j2
+++ b/roles/build/templates/odfekibana/Dockerfile-kibana.j2
@@ -1,8 +1,5 @@
 FROM {{repo}}/centos:{{version}}{{suffix}}
 
-RUN yum install -y supervisor rsync
-RUN yum clean all
-
 ENV PATH="/usr/share/kibana/bin:${PATH}"
 
 RUN groupadd -g 1000 kibana && \
@@ -15,9 +12,7 @@ RUN rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch && \
     cp -a /etc/kibana/ /usr/share/kibana/config/ && \
     chown -R kibana /usr/share/kibana/config/
 
-RUN echo 'kibana ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers
-
 EXPOSE 5601
-COPY kibanasupervisord.conf /etc/supervisord.conf
-ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+USER kibana
+ENTRYPOINT ["/bin/bash"]
 
diff --git a/roles/build/templates/odfekibana/Dockerfile.j2 b/roles/build/templates/odfekibana/Dockerfile-odfekibana.j2
similarity index 92%
rename from roles/build/templates/odfekibana/Dockerfile.j2
rename to roles/build/templates/odfekibana/Dockerfile-odfekibana.j2
index 61f325452efcdf5446437b5f391d8011997b5294..ee69568d34d6fe879de100414f8f3b96b2252d7f 100644
--- a/roles/build/templates/odfekibana/Dockerfile.j2
+++ b/roles/build/templates/odfekibana/Dockerfile-odfekibana.j2
@@ -14,4 +14,5 @@ RUN for PLUGIN in \
 ADD thehive_button /usr/share/kibana/plugins/thehive_button
 RUN chown -R kibana:kibana /usr/share/kibana/plugins/thehive_button
 
-ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+USER kibana
+
diff --git a/roles/build/templates/thehive/Dockerfile.j2 b/roles/build/templates/thehive/Dockerfile.j2
index 870e3ac179c6ee643639f63d0b69eff9ed900f95..773c7c2c7846ade845264764c68e22f36a0cf957 100644
--- a/roles/build/templates/thehive/Dockerfile.j2
+++ b/roles/build/templates/thehive/Dockerfile.j2
@@ -1,6 +1,9 @@
 FROM {{repo}}/openjdk:{{version}}{{suffix}}
 
 USER root
+#COPY thehive.repo /etc/yum.repos.d/thehive.repo
+#COPY supervisord.conf /etc/supervisord.conf
+#COPY start.sh /start.sh
 RUN echo "[thehive-project]" > /etc/yum.repos.d/thehive.repo && \
     echo "enabled=1" >> /etc/yum.repos.d/thehive.repo && \
     echo "priority=1" >> /etc/yum.repos.d/thehive.repo && \
@@ -9,12 +12,13 @@ RUN echo "[thehive-project]" > /etc/yum.repos.d/thehive.repo && \
     echo "gpgcheck=1" >> /etc/yum.repos.d/thehive.repo && \
     yum install -y epel-release && \
     rpm --import https://raw.githubusercontent.com/TheHive-Project/TheHive/master/PGP-PUBLIC-KEY && \
-    yum install -y thehive4 supervisor daemonize vim net-tools telnet htop rsync && \
+    yum install -y thehive4 supervisor daemonize vim net-tools telnet htop && \
     mkdir -p /opt/thp_data/files/thehive && \
     chown -R thehive:thehive /opt/thp_data/files/thehive && \
     mkdir -p /home/thehive && \
     chown -R thehive:thehive /home/thehive /etc/thehive && \
     yum -y clean all
 EXPOSE 9000
-COPY thehivesupervisord.conf /etc/supervisord.conf
-ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+#ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+USER thehive
+# ENTRYPOINT ["/start.sh"]
diff --git a/roles/build/templates/thehive/start.sh b/roles/build/templates/thehive/start.sh
new file mode 100644
index 0000000000000000000000000000000000000000..fa91e921956d5d2d6fa1be6812a9794071b20965
--- /dev/null
+++ b/roles/build/templates/thehive/start.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+export CASSANDRA_HOME=/usr/share/cassandra
+export CASSANDRA_CONF=$CASSANDRA_HOME/conf
+export CASSANDRA_INCLUDE=$CASSANDRA_HOME/cassandra.in.sh
+log_file=/var/log/cassandra/cassandra.log
+pid_file=/var/run/cassandra/cassandra.pid
+lock_file=/var/lock/subsys/cassandra
+CASSANDRA_PROG=/usr/sbin/cassandra
+
+$CASSANDRA_PROG -p $pid_file > $log_file 2>&1
diff --git a/roles/build/templates/thehive/supervisord.conf b/roles/build/templates/thehive/supervisord.conf
new file mode 100644
index 0000000000000000000000000000000000000000..d1f405eb91d5bae99af653dae0d5c246ae723f08
--- /dev/null
+++ b/roles/build/templates/thehive/supervisord.conf
@@ -0,0 +1,10 @@
+[supervisord]
+loglevel=debug
+nodaemon=true
+[program:cassandra]
+user=cassandra
+directory=/usr/share/cassandra
+stdout_logfile=/var/log/cassandra/cassandra.log
+redirect_stderr=true
+environment=CASSANDRA_HOME="/usr/share/cassandra",CASSANDRA_CONF="/usr/share/cassandra/conf",CASSANDRA_INCLUDE="$CASSANDRA_HOME/cassandra.in.sh"
+command=/usr/sbin/cassandra -p /var/run/cassandra/cassandra.pid
diff --git a/roles/build/templates/thehive/thehive.repo b/roles/build/templates/thehive/thehive.repo
new file mode 100644
index 0000000000000000000000000000000000000000..ff3806454fc41de2193c94a2a4da095b763d95bf
--- /dev/null
+++ b/roles/build/templates/thehive/thehive.repo
@@ -0,0 +1,7 @@
+[thehive-project]
+enabled=1
+priority=1
+name=TheHive-Project RPM repository
+baseurl=http://rpm.thehive-project.org/stable/noarch
+gpgcheck=1
+
diff --git a/roles/build/templates/zookeeper/Dockerfile.j2 b/roles/build/templates/zookeeper/Dockerfile.j2
index 19ae977882802ec3725ce8f7875b4801786153cf..209069c8137b1ee53bac1fbecda2efc9f388e9e2 100644
--- a/roles/build/templates/zookeeper/Dockerfile.j2
+++ b/roles/build/templates/zookeeper/Dockerfile.j2
@@ -29,8 +29,6 @@ EXPOSE 2181 2888 3888
 
 WORKDIR ${ZOOKEEPER_BASE_DIR}/zookeeper
 
-#ENTRYPOINT ["/opt/zookeeper/bin/zkServer.sh"]
-#CMD ["start-foreground"]
-RUN yum install supervisor rsync -y
-COPY zookeepersupervisord.conf /etc/supervisord.conf
-ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+ENTRYPOINT ["/opt/zookeeper/bin/zkServer.sh"]
+CMD ["start-foreground"]
+
diff --git a/roles/ca/files/CA/.rnd b/roles/ca/files/CA/.rnd
new file mode 100644
index 0000000000000000000000000000000000000000..b7292db0335ef4cf2d62de2a5e033524b2ad01a1
Binary files /dev/null and b/roles/ca/files/CA/.rnd differ
diff --git a/roles/ca/files/CA/ca.crt b/roles/ca/files/CA/ca.crt
new file mode 100644
index 0000000000000000000000000000000000000000..04b1f203d036d2219c23c4ea3630115d68510eb8
--- /dev/null
+++ b/roles/ca/files/CA/ca.crt
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
+BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
+UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
+Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
+M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
+c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
+tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
+ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
+8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
+EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
+JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
+z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
+XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
+CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
+nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
+GPiQTFGknE1U
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/01EC4DAD3E5E47CF4E4B98495932B337.pem b/roles/ca/files/CA/certs_by_serial/01EC4DAD3E5E47CF4E4B98495932B337.pem
new file mode 100644
index 0000000000000000000000000000000000000000..ad6921cea4ea5b8001bf8a8586b1e446dc752e9d
--- /dev/null
+++ b/roles/ca/files/CA/certs_by_serial/01EC4DAD3E5E47CF4E4B98495932B337.pem
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            01:ec:4d:ad:3e:5e:47:cf:4e:4b:98:49:59:32:b3:37
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:25 2020 GMT
+            Not After : Oct 15 10:47:25 2023 GMT
+        Subject: CN=dsoclab-nifi-1
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:c3:af:ef:b7:a1:95:47:5f:55:ea:7e:e8:d6:fd:
+                    d5:e3:19:68:2e:72:1f:90:62:a8:79:76:d8:d2:f6:
+                    51:df:71:80:37:5a:ec:7d:fb:6d:78:6e:37:fe:e5:
+                    1b:c8:d5:73:e4:c9:a5:cb:e8:4a:48:26:c6:e0:a6:
+                    5e:14:2c:90:b1:81:b2:69:31:e2:44:85:97:f5:60:
+                    12:88:06:9d:8d:cf:4a:a2:77:b3:d9:ff:f3:41:40:
+                    4c:21:e1:73:8d:98:82:2f:37:27:0c:24:d8:67:bd:
+                    c7:05:50:40:c5:a9:d0:e4:3f:bb:0c:72:29:7c:be:
+                    06:01:96:03:b8:a0:42:c4:6f:6f:da:aa:17:34:5f:
+                    5e:f3:73:0e:77:b5:7a:9a:59:e3:3c:d1:39:50:17:
+                    2f:53:18:05:82:34:29:1b:19:56:2e:c2:db:24:79:
+                    51:0f:a8:d9:66:3c:72:1e:a0:f7:03:d6:e9:e5:c6:
+                    b9:be:94:e4:84:bd:cd:93:26:eb:3b:17:bb:cd:e5:
+                    58:25:f2:28:35:a4:b1:70:df:32:54:85:f6:3c:20:
+                    9f:88:8b:5d:83:a2:c4:1e:31:d9:a1:76:1d:2e:3c:
+                    f8:78:64:a4:dd:3a:b2:56:65:bf:a8:2a:a8:ed:62:
+                    c9:62:2c:72:bd:9d:7e:6b:1f:80:ea:bc:33:60:47:
+                    d3:0f
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                87:9A:8D:12:3A:69:8D:89:98:F6:95:D0:F2:ED:C3:DC:ED:A0:22:12
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-nifi-1, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         8d:23:38:a7:aa:d0:58:03:f2:98:19:da:62:c6:55:cb:d5:c5:
+         05:dd:55:c5:f9:41:46:ec:75:06:be:0a:0b:7b:0f:ac:10:dd:
+         86:bf:4f:6e:05:c1:7b:c1:1d:1c:ce:c7:f0:a9:0c:6e:79:fe:
+         c2:49:18:d5:5d:4a:ae:c8:d8:ab:ec:45:95:94:c1:8b:30:da:
+         52:1a:42:3c:41:77:65:9e:8a:63:f5:52:c2:71:b7:e2:56:43:
+         bd:89:3a:fa:14:bd:d7:7a:b2:60:43:82:c0:df:4a:e0:a7:02:
+         fd:d7:f6:56:9a:0f:ad:f4:ee:00:06:fb:75:b9:96:63:c8:b3:
+         75:1f:c6:9d:3b:9d:1a:29:cd:09:f0:80:31:5c:4e:97:62:91:
+         73:84:aa:11:cc:4b:00:15:a1:92:62:2a:6b:d4:d6:4c:ed:a5:
+         89:fe:12:c9:d1:0b:48:b8:97:26:e4:5b:ab:da:fe:2d:54:ca:
+         55:23:8b:22:7f:a1:12:4a:21:3e:9e:bb:48:d6:82:b6:a2:cc:
+         83:15:5d:5f:c7:52:a1:01:01:70:60:3f:64:b4:1d:85:4f:56:
+         b7:67:77:b8:ea:59:7a:85:ce:e3:4a:e1:d6:2f:e0:b2:60:44:
+         3a:08:3a:b5:0e:fc:88:ad:e5:a1:f1:a8:79:37:c4:52:02:f0:
+         5b:05:94:0e
+-----BEGIN CERTIFICATE-----
+MIIDljCCAn6gAwIBAgIQAexNrT5eR89OS5hJWTKzNzANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjVaFw0yMzEwMTUx
+MDQ3MjVaMBkxFzAVBgNVBAMMDmRzb2NsYWItbmlmaS0xMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAw6/vt6GVR19V6n7o1v3V4xloLnIfkGKoeXbY0vZR
+33GAN1rsfftteG43/uUbyNVz5Mmly+hKSCbG4KZeFCyQsYGyaTHiRIWX9WASiAad
+jc9Konez2f/zQUBMIeFzjZiCLzcnDCTYZ73HBVBAxanQ5D+7DHIpfL4GAZYDuKBC
+xG9v2qoXNF9e83MOd7V6mlnjPNE5UBcvUxgFgjQpGxlWLsLbJHlRD6jZZjxyHqD3
+A9bp5ca5vpTkhL3NkybrOxe7zeVYJfIoNaSxcN8yVIX2PCCfiItdg6LEHjHZoXYd
+Ljz4eGSk3TqyVmW/qCqo7WLJYixyvZ1+ax+A6rwzYEfTDwIDAQABo4HcMIHZMAkG
+A1UdEwQCMAAwHQYDVR0OBBYEFIeajRI6aY2JmPaV0PLtw9ztoCISMEYGA1UdIwQ/
+MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
+Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
+BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1uaWZpLTGCHmRzb2NsYWIu
+Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAjSM4p6rQ
+WAPymBnaYsZVy9XFBd1VxflBRux1Br4KC3sPrBDdhr9PbgXBe8EdHM7H8KkMbnn+
+wkkY1V1KrsjYq+xFlZTBizDaUhpCPEF3ZZ6KY/VSwnG34lZDvYk6+hS913qyYEOC
+wN9K4KcC/df2VpoPrfTuAAb7dbmWY8izdR/GnTudGinNCfCAMVxOl2KRc4SqEcxL
+ABWhkmIqa9TWTO2lif4SydELSLiXJuRbq9r+LVTKVSOLIn+hEkohPp67SNaCtqLM
+gxVdX8dSoQEBcGA/ZLQdhU9Wt2d3uOpZeoXO40rh1i/gsmBEOgg6tQ78iK3lofGo
+eTfEUgLwWwWUDg==
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/1DD9AF5415359961C578D1B98BFA6E9F.pem b/roles/ca/files/CA/certs_by_serial/1DD9AF5415359961C578D1B98BFA6E9F.pem
new file mode 100644
index 0000000000000000000000000000000000000000..af57c1e1d395c9d3bdbf1f4c5c18458fdcc4e02d
--- /dev/null
+++ b/roles/ca/files/CA/certs_by_serial/1DD9AF5415359961C578D1B98BFA6E9F.pem
@@ -0,0 +1,84 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            1d:d9:af:54:15:35:99:61:c5:78:d1:b9:8b:fa:6e:9f
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:52 2020 GMT
+            Not After : Oct 15 10:47:52 2023 GMT
+        Subject: CN=Bozidar Proevski
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:9a:de:00:fd:f1:e9:b9:29:d9:58:d0:47:21:cf:
+                    4b:67:17:f7:a9:02:93:17:cf:57:5b:6f:db:26:90:
+                    30:09:0b:d9:c5:66:5e:f6:22:66:ab:48:06:aa:6c:
+                    88:b3:fd:93:45:a4:60:c9:5f:2b:6c:af:db:68:5e:
+                    27:e6:85:71:27:b7:20:52:61:df:14:1b:da:06:39:
+                    b2:21:20:4b:22:48:b7:4b:76:44:02:b1:89:5f:0e:
+                    59:22:cb:b9:c9:1e:8d:a0:ac:28:5d:e5:ae:c8:ea:
+                    cc:05:20:a2:60:11:12:8d:6d:88:0a:73:e8:7c:68:
+                    9c:48:2c:c9:a8:c6:9d:c3:3c:c1:e7:f4:07:f7:5b:
+                    6e:42:3d:3d:0f:85:6f:e2:b9:88:a9:d0:02:84:b8:
+                    19:6a:ae:13:a1:97:50:98:16:c8:0c:1b:bd:02:c8:
+                    5f:a3:2f:73:7e:25:f8:8c:e7:92:43:c7:6a:75:bc:
+                    85:ea:1c:47:28:ce:2c:9b:3a:8f:a8:07:e9:8c:8a:
+                    75:3e:c1:97:32:ce:e3:c5:ca:1e:0a:d7:3c:77:0a:
+                    d2:ab:51:c3:e5:dc:37:90:1a:35:bf:a0:4a:aa:bd:
+                    38:ef:9e:6d:f8:81:37:7f:d3:77:23:c6:5b:63:98:
+                    64:07:2f:47:fd:7d:21:2f:57:c2:d8:44:00:c2:29:
+                    22:79
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                A3:9F:29:21:E0:E5:18:E4:CB:4C:2D:7F:84:2F:AF:F2:49:F0:83:3A
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature
+    Signature Algorithm: sha256WithRSAEncryption
+         ad:cb:66:5d:b7:29:e5:19:7b:7c:ae:23:50:58:34:db:c9:79:
+         39:de:57:83:34:03:6d:bc:bf:e2:31:79:9d:2b:a2:7a:e0:c4:
+         c8:19:96:e0:20:f3:05:2a:a6:f4:b8:90:c4:ea:8d:5e:86:e1:
+         13:99:59:0f:da:c8:3d:96:0d:78:04:4f:26:9c:6a:7c:8e:50:
+         5a:30:f1:37:dc:26:99:28:35:f8:25:b9:4b:f8:d2:f0:d3:b5:
+         61:32:c9:9c:43:39:21:43:c1:de:0d:4d:8e:e5:6f:a1:58:e5:
+         01:84:d6:a5:de:88:2a:55:9f:ec:de:be:b1:13:61:33:dd:50:
+         19:89:dd:11:48:5e:c2:14:8d:69:8f:a9:43:73:80:71:8f:54:
+         ba:da:74:b4:26:ec:5b:82:88:84:90:6d:f7:58:3f:78:d3:20:
+         5b:c3:9b:82:85:b7:ef:98:12:4f:ba:e8:38:f3:8c:af:85:91:
+         66:40:fe:a9:b2:fd:d6:76:ad:70:b7:b5:33:88:64:31:97:81:
+         d9:c6:ec:47:9b:af:3f:31:c8:de:0c:cc:88:3d:b7:6f:6f:19:
+         24:f1:ae:ff:de:95:31:3f:38:e5:ed:a1:e1:e4:6b:54:1f:26:
+         b8:53:79:cf:fe:89:ba:bc:35:a1:bc:2f:8a:07:a2:eb:0d:90:
+         72:ad:8a:60
+-----BEGIN CERTIFICATE-----
+MIIDUzCCAjugAwIBAgIQHdmvVBU1mWHFeNG5i/punzANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3NTJaFw0yMzEwMTUx
+MDQ3NTJaMBsxGTAXBgNVBAMMEEJvemlkYXIgUHJvZXZza2kwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQCa3gD98em5KdlY0Echz0tnF/epApMXz1dbb9sm
+kDAJC9nFZl72ImarSAaqbIiz/ZNFpGDJXytsr9toXifmhXEntyBSYd8UG9oGObIh
+IEsiSLdLdkQCsYlfDlkiy7nJHo2grChd5a7I6swFIKJgERKNbYgKc+h8aJxILMmo
+xp3DPMHn9Af3W25CPT0PhW/iuYip0AKEuBlqrhOhl1CYFsgMG70CyF+jL3N+JfiM
+55JDx2p1vIXqHEcoziybOo+oB+mMinU+wZcyzuPFyh4K1zx3CtKrUcPl3DeQGjW/
+oEqqvTjvnm34gTd/03cjxltjmGQHL0f9fSEvV8LYRADCKSJ5AgMBAAGjgZcwgZQw
+CQYDVR0TBAIwADAdBgNVHQ4EFgQUo58pIeDlGOTLTC1/hC+v8knwgzowRgYDVR0j
+BD8wPYAUeQbKQNOfmlSu0zNN8jg+tgvzPc+hGqQYMBYxFDASBgNVBAMMC1NPQ1RP
+T0xTLUNBggkAinSTJoBbQrcwEwYDVR0lBAwwCgYIKwYBBQUHAwIwCwYDVR0PBAQD
+AgeAMA0GCSqGSIb3DQEBCwUAA4IBAQCty2ZdtynlGXt8riNQWDTbyXk53leDNANt
+vL/iMXmdK6J64MTIGZbgIPMFKqb0uJDE6o1ehuETmVkP2sg9lg14BE8mnGp8jlBa
+MPE33CaZKDX4JblL+NLw07VhMsmcQzkhQ8HeDU2O5W+hWOUBhNal3ogqVZ/s3r6x
+E2Ez3VAZid0RSF7CFI1pj6lDc4Bxj1S62nS0JuxbgoiEkG33WD940yBbw5uChbfv
+mBJPuug484yvhZFmQP6psv3Wdq1wt7UziGQxl4HZxuxHm68/McjeDMyIPbdvbxkk
+8a7/3pUxPzjl7aHh5GtUHya4U3nP/om6vDWhvC+KB6LrDZByrYpg
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/560A99C5A03FC4B9FC92FDC62F419BB9.pem b/roles/ca/files/CA/certs_by_serial/560A99C5A03FC4B9FC92FDC62F419BB9.pem
new file mode 100644
index 0000000000000000000000000000000000000000..a648174921d6bb3ffe09aaffedfee1e442fccce6
--- /dev/null
+++ b/roles/ca/files/CA/certs_by_serial/560A99C5A03FC4B9FC92FDC62F419BB9.pem
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            56:0a:99:c5:a0:3f:c4:b9:fc:92:fd:c6:2f:41:9b:b9
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:27 2020 GMT
+            Not After : Oct 15 10:47:27 2023 GMT
+        Subject: CN=dsoclab-odfe-2
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:c7:a5:e1:3f:e0:a3:22:69:f1:b4:15:5e:b9:3c:
+                    db:d7:44:bb:d9:c7:69:94:5b:c1:7d:a3:34:4d:3e:
+                    88:0a:e2:8f:2e:d3:98:94:ae:b4:1f:49:a3:fd:4b:
+                    27:16:70:ab:03:ab:cd:4c:02:2a:7b:ed:3a:ff:49:
+                    49:2e:3b:88:f6:59:85:26:de:37:b4:47:9e:1c:be:
+                    a3:38:8e:b0:22:6b:ca:c5:12:e5:be:40:9c:57:7a:
+                    4d:02:0c:db:13:c5:9d:d2:85:df:99:57:32:90:37:
+                    54:08:16:46:01:54:da:0c:77:31:63:39:46:27:88:
+                    3f:f4:ad:4e:e6:fd:0a:3e:9d:98:9a:53:98:90:be:
+                    9b:ee:e3:b2:91:c7:7f:3f:a1:b9:62:f8:7a:1e:cc:
+                    b4:23:ed:82:a0:5c:ad:86:7b:50:53:c9:ec:57:04:
+                    44:1c:12:f6:33:3f:68:42:f8:b7:2f:25:91:1c:aa:
+                    b0:df:17:6b:ed:6d:cc:6d:a7:d6:b7:07:6b:61:a5:
+                    16:51:9f:02:07:ad:b2:42:42:ca:0b:b1:2e:c1:6e:
+                    94:2d:3e:5e:88:48:8f:b6:8b:15:b0:48:8e:35:58:
+                    ea:b5:90:9c:fb:5a:fa:f5:c7:27:b7:11:30:7a:cb:
+                    36:7c:4f:ea:52:00:47:40:e9:f0:ca:67:63:32:e0:
+                    33:73
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                E6:41:BE:4B:A2:E1:07:EF:2A:FD:16:A7:B6:68:3D:0F:81:F5:15:80
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-odfe-2, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         84:64:d0:92:f6:96:07:be:f1:52:f6:49:15:cd:d0:99:ea:ca:
+         7f:06:a8:d2:68:e3:8e:c3:a3:a9:2d:f2:b7:4a:74:75:9f:02:
+         b4:6f:77:14:ec:89:f9:a3:b5:35:c8:f2:ad:50:df:24:05:d3:
+         0a:a8:49:be:19:de:fc:84:a4:61:af:ff:c0:2c:f7:8b:11:87:
+         34:10:e3:dc:9b:d2:b8:66:0a:f7:3f:05:11:37:41:09:9f:3d:
+         f3:a1:97:b7:62:64:db:5a:46:d9:5a:7a:c8:f7:79:e4:f8:61:
+         2e:5c:e8:82:8d:fc:0e:8d:a4:4f:fd:33:f1:76:0e:8d:21:f4:
+         00:5a:e1:a6:96:21:e0:bb:e4:e6:35:8e:b6:61:49:8a:f2:c1:
+         25:96:cf:c0:f6:e0:0a:0b:75:b5:d5:6c:be:ad:0c:a8:4b:33:
+         44:72:cc:ef:5f:db:09:e7:b9:6e:60:80:7d:02:e9:ab:06:81:
+         24:d3:9d:c3:de:f9:a1:f1:f7:77:ee:6d:49:ab:13:72:c6:62:
+         39:b2:80:32:07:20:51:a3:3e:1a:cf:b9:3a:bc:e3:a1:58:33:
+         22:6f:68:a9:e9:33:0b:8d:24:72:ea:e3:75:68:a3:69:11:a8:
+         2d:86:ed:f2:00:74:d6:d4:ab:fc:30:3f:68:6b:b6:d3:61:30:
+         51:84:09:da
+-----BEGIN CERTIFICATE-----
+MIIDljCCAn6gAwIBAgIQVgqZxaA/xLn8kv3GL0GbuTANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjdaFw0yMzEwMTUx
+MDQ3MjdaMBkxFzAVBgNVBAMMDmRzb2NsYWItb2RmZS0yMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAx6XhP+CjImnxtBVeuTzb10S72cdplFvBfaM0TT6I
+CuKPLtOYlK60H0mj/UsnFnCrA6vNTAIqe+06/0lJLjuI9lmFJt43tEeeHL6jOI6w
+ImvKxRLlvkCcV3pNAgzbE8Wd0oXfmVcykDdUCBZGAVTaDHcxYzlGJ4g/9K1O5v0K
+Pp2YmlOYkL6b7uOykcd/P6G5Yvh6Hsy0I+2CoFythntQU8nsVwREHBL2Mz9oQvi3
+LyWRHKqw3xdr7W3MbafWtwdrYaUWUZ8CB62yQkLKC7EuwW6ULT5eiEiPtosVsEiO
+NVjqtZCc+1r69ccntxEwess2fE/qUgBHQOnwymdjMuAzcwIDAQABo4HcMIHZMAkG
+A1UdEwQCMAAwHQYDVR0OBBYEFOZBvkui4QfvKv0Wp7ZoPQ+B9RWAMEYGA1UdIwQ/
+MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
+Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
+BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1vZGZlLTKCHmRzb2NsYWIu
+Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAhGTQkvaW
+B77xUvZJFc3QmerKfwao0mjjjsOjqS3yt0p0dZ8CtG93FOyJ+aO1NcjyrVDfJAXT
+CqhJvhne/ISkYa//wCz3ixGHNBDj3JvSuGYK9z8FETdBCZ8986GXt2Jk21pG2Vp6
+yPd55PhhLlzogo38Do2kT/0z8XYOjSH0AFrhppYh4Lvk5jWOtmFJivLBJZbPwPbg
+Cgt1tdVsvq0MqEszRHLM71/bCee5bmCAfQLpqwaBJNOdw975ofH3d+5tSasTcsZi
+ObKAMgcgUaM+Gs+5OrzjoVgzIm9oqekzC40kcurjdWijaRGoLYbt8gB01tSr/DA/
+aGu202EwUYQJ2g==
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/5969918F10EF8D2BAE46B26D6D629D8E.pem b/roles/ca/files/CA/certs_by_serial/5969918F10EF8D2BAE46B26D6D629D8E.pem
new file mode 100644
index 0000000000000000000000000000000000000000..796e826426e3266b0a221d1c60110c897892b308
--- /dev/null
+++ b/roles/ca/files/CA/certs_by_serial/5969918F10EF8D2BAE46B26D6D629D8E.pem
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            59:69:91:8f:10:ef:8d:2b:ae:46:b2:6d:6d:62:9d:8e
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:26 2020 GMT
+            Not After : Oct 15 10:47:26 2023 GMT
+        Subject: CN=dsoclab-nifi-3
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:a7:48:a0:d3:ab:1e:8c:49:60:8b:b8:bd:9a:aa:
+                    5c:09:62:01:79:89:c9:e5:5f:30:64:38:ca:f1:95:
+                    2d:48:20:81:ef:60:aa:6f:d1:ef:b4:ac:89:8e:e9:
+                    f5:16:7d:64:07:b0:3b:75:c3:e1:e1:15:71:64:60:
+                    8f:15:8e:16:8b:de:b8:97:79:a7:83:19:77:5b:aa:
+                    36:82:37:b9:51:a7:95:b5:1f:ac:9d:81:c6:ec:fb:
+                    14:3a:84:77:1e:9c:dd:3c:06:30:a1:5e:d0:8f:b0:
+                    c9:5a:13:ad:0e:56:57:bc:1d:3f:be:d7:4c:4b:37:
+                    a2:88:72:4d:1a:62:88:08:a0:57:bb:20:ce:7e:af:
+                    b7:72:f2:ee:86:1a:b1:28:3b:41:f4:d3:ea:14:74:
+                    90:e1:33:41:1a:92:e2:2e:ec:d3:20:60:60:61:d6:
+                    fc:0e:3f:57:43:88:5f:10:29:20:51:40:46:ed:5d:
+                    9f:d1:5a:e7:4b:52:f4:d4:23:60:4a:22:a7:92:6c:
+                    d4:cb:20:01:a6:b9:53:71:7a:71:02:e1:05:72:41:
+                    a5:42:9f:41:47:2c:30:7e:0c:b1:73:cc:f7:63:60:
+                    27:3f:3d:36:93:14:aa:7e:12:ed:1b:f1:cb:4d:e8:
+                    7c:32:20:50:f5:2d:7d:06:0a:93:cf:7a:85:2b:0b:
+                    a6:b1
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                C9:B8:02:23:C4:2E:F5:FE:C9:34:45:77:33:0D:89:CE:D9:A3:30:2A
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-nifi-3, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         32:20:b3:1c:e1:c9:a4:19:75:14:32:1b:cd:c2:83:59:49:07:
+         e3:b8:62:73:ec:4e:69:cb:9b:49:0d:f5:d0:ea:8b:b6:de:3e:
+         76:03:c4:e8:68:0f:01:96:aa:40:b2:1e:99:06:d2:75:f5:31:
+         ec:b7:93:e6:1b:b0:ab:7e:1b:1d:65:46:6d:9f:ac:97:ed:55:
+         53:ca:53:00:5a:ca:c5:83:48:c3:2a:51:db:e7:e7:e1:40:4a:
+         bf:b2:9d:d4:71:d4:54:84:2b:4b:d4:a2:22:73:95:e1:62:51:
+         ce:e3:e2:f6:24:dd:40:08:07:01:6f:ee:27:3e:fc:17:1d:1f:
+         30:da:7f:37:78:7e:b8:af:d8:2c:d9:48:84:92:be:4e:8e:a7:
+         b8:e6:9f:d4:91:5d:44:c9:8b:82:9f:13:eb:d5:2c:00:fa:ef:
+         d6:49:ff:92:0d:83:22:57:45:4a:ac:b6:5e:a2:c6:c1:73:ff:
+         f5:dd:a7:d8:79:9a:a7:96:33:b4:51:17:7f:80:6e:3b:52:a8:
+         61:53:ae:08:1f:02:5a:0c:5b:37:3c:3a:36:ee:74:e2:9e:df:
+         df:01:b5:f6:d0:b8:fa:58:79:53:fd:70:9e:54:c3:6c:68:a7:
+         3f:b0:e4:20:a6:a8:2f:87:5a:8a:08:01:41:de:35:ed:5e:85:
+         ae:dd:e0:3e
+-----BEGIN CERTIFICATE-----
+MIIDljCCAn6gAwIBAgIQWWmRjxDvjSuuRrJtbWKdjjANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjZaFw0yMzEwMTUx
+MDQ3MjZaMBkxFzAVBgNVBAMMDmRzb2NsYWItbmlmaS0zMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAp0ig06sejElgi7i9mqpcCWIBeYnJ5V8wZDjK8ZUt
+SCCB72Cqb9HvtKyJjun1Fn1kB7A7dcPh4RVxZGCPFY4Wi964l3mngxl3W6o2gje5
+UaeVtR+snYHG7PsUOoR3HpzdPAYwoV7Qj7DJWhOtDlZXvB0/vtdMSzeiiHJNGmKI
+CKBXuyDOfq+3cvLuhhqxKDtB9NPqFHSQ4TNBGpLiLuzTIGBgYdb8Dj9XQ4hfECkg
+UUBG7V2f0VrnS1L01CNgSiKnkmzUyyABprlTcXpxAuEFckGlQp9BRywwfgyxc8z3
+Y2AnPz02kxSqfhLtG/HLTeh8MiBQ9S19BgqTz3qFKwumsQIDAQABo4HcMIHZMAkG
+A1UdEwQCMAAwHQYDVR0OBBYEFMm4AiPELvX+yTRFdzMNic7ZozAqMEYGA1UdIwQ/
+MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
+Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
+BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1uaWZpLTOCHmRzb2NsYWIu
+Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAMiCzHOHJ
+pBl1FDIbzcKDWUkH47hic+xOacubSQ310OqLtt4+dgPE6GgPAZaqQLIemQbSdfUx
+7LeT5huwq34bHWVGbZ+sl+1VU8pTAFrKxYNIwypR2+fn4UBKv7Kd1HHUVIQrS9Si
+InOV4WJRzuPi9iTdQAgHAW/uJz78Fx0fMNp/N3h+uK/YLNlIhJK+To6nuOaf1JFd
+RMmLgp8T69UsAPrv1kn/kg2DIldFSqy2XqLGwXP/9d2n2Hmap5YztFEXf4BuO1Ko
+YVOuCB8CWgxbNzw6Nu504p7f3wG19tC4+lh5U/1wnlTDbGinP7DkIKaoL4daiggB
+Qd417V6Frt3gPg==
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/5DC4BC495FA076A813A4C23261640D92.pem b/roles/ca/files/CA/certs_by_serial/5DC4BC495FA076A813A4C23261640D92.pem
new file mode 100644
index 0000000000000000000000000000000000000000..a743bd0055110d9dbad79cdcc70e2ccfe946b100
--- /dev/null
+++ b/roles/ca/files/CA/certs_by_serial/5DC4BC495FA076A813A4C23261640D92.pem
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            5d:c4:bc:49:5f:a0:76:a8:13:a4:c2:32:61:64:0d:92
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:29 2020 GMT
+            Not After : Oct 15 10:47:29 2023 GMT
+        Subject: CN=dsoclab-cortex
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:cd:09:6b:14:33:4a:47:75:5b:d3:d9:67:3b:4d:
+                    ad:1f:a7:1f:33:ab:86:b1:aa:3b:09:ab:1a:a6:fb:
+                    a0:60:04:e3:68:33:0e:85:54:d1:70:61:8a:b9:d5:
+                    d6:b5:6c:c2:b3:36:02:94:b7:1d:18:93:5f:88:81:
+                    ff:2a:f4:99:58:6d:d7:96:e2:d2:64:77:b9:74:44:
+                    3c:f0:fb:5b:0f:43:7d:38:5d:fe:b0:db:05:7a:a9:
+                    c5:10:24:75:13:c8:2d:da:69:be:e3:43:33:f0:28:
+                    30:9a:53:f8:f8:d3:10:32:35:ec:1d:87:ab:1e:2c:
+                    b5:00:7c:9f:8f:61:e0:5d:56:15:8c:46:45:09:78:
+                    02:78:10:c0:af:2f:25:6c:c2:5b:ed:5f:c1:33:0b:
+                    f8:c8:13:dc:df:c3:fc:05:90:ff:06:9e:cb:bc:1d:
+                    2b:c2:57:f2:bd:aa:22:b3:4b:f5:ca:b2:b8:00:18:
+                    f1:14:10:b8:5e:69:9f:ed:fc:04:83:d9:2e:b7:9a:
+                    8a:45:1c:54:71:8f:61:02:6a:8a:84:2f:67:df:92:
+                    3a:0c:5f:e5:b6:e7:6c:27:69:1f:5b:06:d6:7f:e6:
+                    df:ab:2f:31:a5:cd:63:32:60:c0:07:50:6c:0d:39:
+                    cb:68:ae:3c:b2:da:0f:20:06:77:2c:28:ab:3a:30:
+                    92:1b
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                9A:0E:E1:26:13:A7:12:5F:A4:F1:41:C0:09:FC:AD:EB:4E:66:C2:50
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-cortex, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         27:2e:a1:0c:8d:fb:b1:36:ff:4e:ac:00:91:75:81:4b:20:79:
+         3f:da:1c:e1:80:b9:8c:6b:60:47:a5:8c:bf:1f:34:98:61:95:
+         00:bb:79:d4:9e:c8:fb:dc:fb:6a:48:b2:69:d1:1a:04:cc:52:
+         ca:0b:48:01:3e:94:1e:68:0b:e3:4d:fa:12:c4:aa:ff:b6:5b:
+         0c:3c:80:21:fe:50:87:8a:14:3a:7d:e7:a3:5e:b6:dc:22:ba:
+         cc:97:69:00:a8:78:08:dd:66:d1:cb:ca:28:41:b9:cc:8a:6b:
+         7c:40:b7:5e:1d:a1:88:5a:b3:fd:18:77:e9:c4:48:fd:38:8f:
+         06:6e:78:0e:f1:1a:1b:b2:6c:0a:df:38:11:e3:5a:3d:2a:5b:
+         de:41:63:14:ab:25:8e:a6:9f:a8:b7:32:9e:dc:23:45:f3:6b:
+         6d:86:b7:17:b3:53:df:55:bd:cb:41:a1:b7:73:ae:21:1b:68:
+         b3:b1:0a:e5:e6:0c:2a:77:76:23:f3:87:ee:5f:0e:6d:cd:3b:
+         94:9a:6f:f2:fd:4f:2d:72:a3:21:94:55:c0:4a:6c:2b:13:e3:
+         82:13:a5:1f:82:6b:ae:6e:e2:ec:eb:7a:25:6a:f2:9e:45:d7:
+         0a:7d:75:be:9d:f7:94:6f:ce:a5:27:d6:9b:dc:d2:12:54:64:
+         09:c4:f6:a9
+-----BEGIN CERTIFICATE-----
+MIIDljCCAn6gAwIBAgIQXcS8SV+gdqgTpMIyYWQNkjANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjlaFw0yMzEwMTUx
+MDQ3MjlaMBkxFzAVBgNVBAMMDmRzb2NsYWItY29ydGV4MIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAzQlrFDNKR3Vb09lnO02tH6cfM6uGsao7Casapvug
+YATjaDMOhVTRcGGKudXWtWzCszYClLcdGJNfiIH/KvSZWG3XluLSZHe5dEQ88Ptb
+D0N9OF3+sNsFeqnFECR1E8gt2mm+40Mz8CgwmlP4+NMQMjXsHYerHiy1AHyfj2Hg
+XVYVjEZFCXgCeBDAry8lbMJb7V/BMwv4yBPc38P8BZD/Bp7LvB0rwlfyvaois0v1
+yrK4ABjxFBC4Xmmf7fwEg9kut5qKRRxUcY9hAmqKhC9n35I6DF/ltudsJ2kfWwbW
+f+bfqy8xpc1jMmDAB1BsDTnLaK48stoPIAZ3LCirOjCSGwIDAQABo4HcMIHZMAkG
+A1UdEwQCMAAwHQYDVR0OBBYEFJoO4SYTpxJfpPFBwAn8retOZsJQMEYGA1UdIwQ/
+MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
+Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
+BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1jb3J0ZXiCHmRzb2NsYWIu
+Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAJy6hDI37
+sTb/TqwAkXWBSyB5P9oc4YC5jGtgR6WMvx80mGGVALt51J7I+9z7akiyadEaBMxS
+ygtIAT6UHmgL4036EsSq/7ZbDDyAIf5Qh4oUOn3no1623CK6zJdpAKh4CN1m0cvK
+KEG5zIprfEC3Xh2hiFqz/Rh36cRI/TiPBm54DvEaG7JsCt84EeNaPSpb3kFjFKsl
+jqafqLcyntwjRfNrbYa3F7NT31W9y0Ght3OuIRtos7EK5eYMKnd2I/OH7l8Obc07
+lJpv8v1PLXKjIZRVwEpsKxPjghOlH4Jrrm7i7Ot6JWrynkXXCn11vp33lG/OpSfW
+m9zSElRkCcT2qQ==
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/61095C2C8D35EE291C99CEABD42B3CA4.pem b/roles/ca/files/CA/certs_by_serial/61095C2C8D35EE291C99CEABD42B3CA4.pem
new file mode 100644
index 0000000000000000000000000000000000000000..0d474c2a1277de93ba6357ca841a7eac3b1cce44
--- /dev/null
+++ b/roles/ca/files/CA/certs_by_serial/61095C2C8D35EE291C99CEABD42B3CA4.pem
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            61:09:5c:2c:8d:35:ee:29:1c:99:ce:ab:d4:2b:3c:a4
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:29 2020 GMT
+            Not After : Oct 15 10:47:29 2023 GMT
+        Subject: CN=dsoclab-thehive
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:ba:c5:4d:20:a4:60:b7:61:21:ed:16:a1:6f:72:
+                    c4:de:a1:00:c0:ef:fc:5d:a1:89:34:07:15:d2:b4:
+                    3a:14:b8:95:75:8e:81:71:49:46:1d:c8:81:cb:f1:
+                    ec:c7:5a:12:f6:89:60:e4:c8:98:1a:61:c8:2d:12:
+                    8f:73:ee:f8:9d:88:b5:7f:30:70:97:29:b4:ab:43:
+                    2d:dc:db:a7:10:47:c7:b5:26:9b:11:85:fb:d3:27:
+                    8f:3a:55:bc:ea:78:17:b8:89:10:a3:a4:10:60:39:
+                    c3:7f:42:25:a9:fe:84:7f:38:5e:f4:3d:c3:98:3d:
+                    56:b9:ba:81:06:55:8d:65:12:f0:4e:23:88:1d:98:
+                    0c:2f:6e:4f:67:fd:4e:67:39:91:b9:01:52:12:aa:
+                    9e:bb:7a:c8:ea:8f:4a:2d:18:f8:69:9a:3a:a0:c8:
+                    6e:e3:de:c6:db:be:4c:59:e0:cf:bc:34:4f:2c:b0:
+                    ef:3e:82:5a:df:68:be:b8:fb:cc:5f:6a:f2:3e:66:
+                    d4:c6:c5:f6:0b:67:e9:64:85:15:87:60:6f:dc:b4:
+                    5b:13:6f:b0:9b:f8:f3:da:c1:91:9e:81:5f:16:ca:
+                    9e:14:01:c1:1c:ce:2a:d3:c8:3c:0f:be:b1:37:aa:
+                    c9:08:68:2b:de:f9:44:6c:1e:90:a4:12:bc:f5:3c:
+                    46:bd
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                5B:08:8E:F2:1B:8F:12:03:BA:31:02:9C:CE:CC:BC:9F:FC:19:D1:E1
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-thehive, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         7f:b2:fa:33:d6:e3:6c:57:8a:4a:9a:ef:8b:81:2b:df:f3:d6:
+         fb:8c:bc:02:cf:71:54:a0:f2:0d:ae:3b:30:cf:5c:69:d7:d0:
+         aa:cc:16:80:4d:9d:c8:1f:a7:98:9d:26:dc:ae:8e:24:2b:bc:
+         c1:11:a6:8d:4f:ca:13:1f:7f:8f:4c:ef:dd:46:df:d6:97:0a:
+         88:51:4e:f7:46:aa:3d:e3:70:e9:19:e8:9f:7e:22:fa:b6:38:
+         30:00:0a:94:38:09:bf:b8:64:6c:c1:b7:05:6d:4f:f3:27:0c:
+         df:04:ef:a1:4e:e8:2d:4c:06:d0:c0:4f:4f:da:d0:6d:b8:f2:
+         b3:79:18:63:bd:62:83:53:55:38:94:d9:64:ca:e7:4d:71:ce:
+         d1:05:6d:b1:6c:fb:1a:4c:b6:ef:70:2b:3d:9b:1d:66:d8:d9:
+         9f:f0:e5:48:29:50:e8:1b:1a:fb:b4:d2:5e:38:ec:05:45:c2:
+         e7:de:9a:9d:aa:34:67:c5:66:18:e3:86:8b:0c:1a:c4:21:20:
+         7e:b7:ad:e2:0b:d0:0d:d4:76:e6:53:ca:77:bc:ce:d0:9b:7b:
+         7c:fd:42:94:da:63:d8:a7:52:d2:45:f2:d5:55:ef:37:f1:a5:
+         0e:ba:29:c9:b4:ce:99:45:04:21:2b:86:27:bb:c1:f2:86:9a:
+         7c:51:5c:3b
+-----BEGIN CERTIFICATE-----
+MIIDmDCCAoCgAwIBAgIQYQlcLI017ikcmc6r1Cs8pDANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjlaFw0yMzEwMTUx
+MDQ3MjlaMBoxGDAWBgNVBAMMD2Rzb2NsYWItdGhlaGl2ZTCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBALrFTSCkYLdhIe0WoW9yxN6hAMDv/F2hiTQHFdK0
+OhS4lXWOgXFJRh3Igcvx7MdaEvaJYOTImBphyC0Sj3Pu+J2ItX8wcJcptKtDLdzb
+pxBHx7UmmxGF+9MnjzpVvOp4F7iJEKOkEGA5w39CJan+hH84XvQ9w5g9Vrm6gQZV
+jWUS8E4jiB2YDC9uT2f9Tmc5kbkBUhKqnrt6yOqPSi0Y+GmaOqDIbuPextu+TFng
+z7w0Tyyw7z6CWt9ovrj7zF9q8j5m1MbF9gtn6WSFFYdgb9y0WxNvsJv489rBkZ6B
+XxbKnhQBwRzOKtPIPA++sTeqyQhoK975RGwekKQSvPU8Rr0CAwEAAaOB3TCB2jAJ
+BgNVHRMEAjAAMB0GA1UdDgQWBBRbCI7yG48SA7oxApzOzLyf/BnR4TBGBgNVHSME
+PzA9gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9P
+TFMtQ0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
+CwYDVR0PBAQDAgWgMDoGA1UdEQQzMDGCD2Rzb2NsYWItdGhlaGl2ZYIeZHNvY2xh
+Yi5nbjQtMy13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQB/svoz
+1uNsV4pKmu+LgSvf89b7jLwCz3FUoPINrjswz1xp19CqzBaATZ3IH6eYnSbcro4k
+K7zBEaaNT8oTH3+PTO/dRt/WlwqIUU73Rqo943DpGeiffiL6tjgwAAqUOAm/uGRs
+wbcFbU/zJwzfBO+hTugtTAbQwE9P2tBtuPKzeRhjvWKDU1U4lNlkyudNcc7RBW2x
+bPsaTLbvcCs9mx1m2Nmf8OVIKVDoGxr7tNJeOOwFRcLn3pqdqjRnxWYY44aLDBrE
+ISB+t63iC9AN1HbmU8p3vM7Qm3t8/UKU2mPYp1LSRfLVVe838aUOuinJtM6ZRQQh
+K4Ynu8Hyhpp8UVw7
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/7587FCE4CF3EC68117199076B12CD5D2.pem b/roles/ca/files/CA/certs_by_serial/7587FCE4CF3EC68117199076B12CD5D2.pem
new file mode 100644
index 0000000000000000000000000000000000000000..f83010441e252486cc934677a1e0a0de1ebe2328
--- /dev/null
+++ b/roles/ca/files/CA/certs_by_serial/7587FCE4CF3EC68117199076B12CD5D2.pem
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            75:87:fc:e4:cf:3e:c6:81:17:19:90:76:b1:2c:d5:d2
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:28 2020 GMT
+            Not After : Oct 15 10:47:28 2023 GMT
+        Subject: CN=dsoclab-misp
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:cf:b1:1b:e7:a2:ae:70:81:71:a5:57:46:14:2e:
+                    47:64:89:4e:bd:7d:f0:82:2d:03:19:d6:87:44:b3:
+                    42:bf:72:78:03:cc:91:98:5b:36:42:14:55:e2:82:
+                    16:12:58:60:54:44:8f:15:f6:1b:1f:76:36:22:2e:
+                    e8:ac:d3:3c:0a:df:46:c7:f1:04:bc:3a:bf:fe:4b:
+                    8f:2a:53:83:e3:50:82:06:09:fc:2a:fa:fe:94:a0:
+                    7b:7f:c2:3e:0b:3e:dc:72:b8:94:10:0a:0b:90:fd:
+                    45:76:29:85:52:bf:0f:20:43:78:fe:3b:d3:49:20:
+                    8f:9a:a5:0c:89:bb:0e:97:f2:67:b0:2d:f0:17:53:
+                    25:a6:9b:4b:64:0e:72:8a:bf:c9:e3:8e:41:bb:ed:
+                    f3:33:6a:55:5f:8d:52:84:fa:a3:67:1a:7b:71:fb:
+                    90:f1:5f:61:df:44:ea:0b:77:88:f2:e5:c1:83:71:
+                    58:c7:58:8a:9b:39:45:59:4e:e0:db:16:b6:96:72:
+                    90:8c:ee:c2:13:75:ea:15:c6:6b:e2:dc:3a:de:c8:
+                    07:de:18:84:2d:96:b6:c4:4c:e1:4a:4d:13:6f:6c:
+                    9a:1d:e5:f9:6f:cc:7e:1b:4a:3a:75:1a:b9:37:b0:
+                    6d:a0:1b:69:35:f1:b6:e6:c2:a5:d3:56:d3:57:c7:
+                    0e:8b
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                65:C5:56:88:65:AF:77:F1:53:B2:71:5E:16:10:D1:0B:30:FF:28:BE
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-misp, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         5a:57:76:90:fd:a5:0d:ea:b0:22:c9:02:2e:18:91:81:04:d1:
+         f4:64:58:58:19:27:03:9b:5a:dc:de:6c:0e:fb:b7:76:eb:b1:
+         97:36:e2:c7:76:ef:7d:d8:00:c3:20:c0:3d:a7:cf:61:f8:16:
+         4c:96:4c:7c:c8:89:21:d6:d4:eb:3a:c1:3d:98:34:74:6e:39:
+         81:20:6f:9b:4b:8d:b9:35:60:c5:76:19:30:30:06:0f:89:b1:
+         1a:f6:c4:88:52:28:98:41:52:f1:9a:77:82:79:ae:c9:71:ba:
+         d9:e5:e9:b7:ba:08:32:59:eb:5e:7d:11:e0:a8:27:20:91:46:
+         05:56:1e:e6:0b:4d:49:17:52:7f:4b:c4:a3:e0:cd:30:bd:4e:
+         6a:70:2a:f5:77:4d:d1:d6:64:13:8d:4b:1a:d3:0b:0f:8a:49:
+         1e:bf:b4:c0:4f:43:dc:92:e3:c0:f2:2f:4a:c8:30:45:fc:5a:
+         d2:de:92:b2:a1:48:b8:da:ff:f4:0b:04:5d:5d:a7:30:d8:4b:
+         ca:cf:0c:01:6a:50:45:5f:d4:a8:cf:dd:fa:f7:68:0c:4c:45:
+         47:be:3a:c2:39:bb:04:ff:62:a0:bc:91:a0:f2:2b:67:09:89:
+         5a:ff:e6:53:c1:89:18:12:a1:0f:5a:d7:e1:12:8b:88:88:89:
+         ca:b0:30:27
+-----BEGIN CERTIFICATE-----
+MIIDkjCCAnqgAwIBAgIQdYf85M8+xoEXGZB2sSzV0jANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjhaFw0yMzEwMTUx
+MDQ3MjhaMBcxFTATBgNVBAMMDGRzb2NsYWItbWlzcDCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBAM+xG+eirnCBcaVXRhQuR2SJTr198IItAxnWh0SzQr9y
+eAPMkZhbNkIUVeKCFhJYYFREjxX2Gx92NiIu6KzTPArfRsfxBLw6v/5LjypTg+NQ
+ggYJ/Cr6/pSge3/CPgs+3HK4lBAKC5D9RXYphVK/DyBDeP4700kgj5qlDIm7Dpfy
+Z7At8BdTJaabS2QOcoq/yeOOQbvt8zNqVV+NUoT6o2cae3H7kPFfYd9E6gt3iPLl
+wYNxWMdYips5RVlO4NsWtpZykIzuwhN16hXGa+LcOt7IB94YhC2WtsRM4UpNE29s
+mh3l+W/MfhtKOnUauTewbaAbaTXxtubCpdNW01fHDosCAwEAAaOB2jCB1zAJBgNV
+HRMEAjAAMB0GA1UdDgQWBBRlxVaIZa938VOycV4WENELMP8ovjBGBgNVHSMEPzA9
+gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9PTFMt
+Q0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCwYD
+VR0PBAQDAgWgMDcGA1UdEQQwMC6CDGRzb2NsYWItbWlzcIIeZHNvY2xhYi5nbjQt
+My13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQBaV3aQ/aUN6rAi
+yQIuGJGBBNH0ZFhYGScDm1rc3mwO+7d267GXNuLHdu992ADDIMA9p89h+BZMlkx8
+yIkh1tTrOsE9mDR0bjmBIG+bS425NWDFdhkwMAYPibEa9sSIUiiYQVLxmneCea7J
+cbrZ5em3uggyWetefRHgqCcgkUYFVh7mC01JF1J/S8Sj4M0wvU5qcCr1d03R1mQT
+jUsa0wsPikkev7TAT0PckuPA8i9KyDBF/FrS3pKyoUi42v/0CwRdXacw2EvKzwwB
+alBFX9Soz93692gMTEVHvjrCObsE/2KgvJGg8itnCYla/+ZTwYkYEqEPWtfhEouI
+iInKsDAn
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/7DFC33457573E8F16094A74E6B2F23F1.pem b/roles/ca/files/CA/certs_by_serial/7DFC33457573E8F16094A74E6B2F23F1.pem
new file mode 100644
index 0000000000000000000000000000000000000000..f47839f66eda87805afce110cf5d0c2e136e8abe
--- /dev/null
+++ b/roles/ca/files/CA/certs_by_serial/7DFC33457573E8F16094A74E6B2F23F1.pem
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            7d:fc:33:45:75:73:e8:f1:60:94:a7:4e:6b:2f:23:f1
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:27 2020 GMT
+            Not After : Oct 15 10:47:27 2023 GMT
+        Subject: CN=dsoclab-kibana
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:ce:4f:c9:0f:84:4d:4e:7b:dc:11:90:c9:49:a8:
+                    f3:60:44:a8:25:1b:59:83:64:0b:d1:e0:bc:59:50:
+                    22:a5:f5:88:7a:c8:40:65:e4:22:3d:77:d2:8f:9e:
+                    30:17:80:5e:20:85:bc:70:67:61:cb:d8:e2:9f:9a:
+                    7c:7b:a6:e8:4e:79:7b:cd:86:6e:26:52:37:45:b6:
+                    ab:b7:6f:40:8f:7a:55:8b:d1:91:cc:21:6f:55:37:
+                    50:3b:72:1f:2d:3b:bf:75:47:91:88:6a:1c:ea:39:
+                    dd:8b:25:31:55:0e:bc:52:6f:bf:0b:96:ef:e3:12:
+                    5c:da:63:22:54:e5:b3:95:8b:02:9e:57:3e:7b:4f:
+                    a0:f5:6f:07:a8:5b:45:7c:cb:34:83:77:34:a5:b1:
+                    ff:05:12:88:8f:cc:c4:05:5d:e9:e7:7d:2b:12:fa:
+                    bb:4d:25:f4:f7:04:e7:95:06:95:ea:a9:c4:75:4e:
+                    f7:03:67:2d:9c:9a:f4:01:f6:2a:8d:6c:6d:d0:59:
+                    a9:ce:1f:12:b1:76:39:c8:07:d4:20:73:1e:f3:9c:
+                    b9:67:83:3b:a8:7c:6e:fb:86:ea:3f:6a:8e:98:4c:
+                    39:a9:d1:4d:be:9f:0a:43:49:1b:fd:09:67:b6:62:
+                    71:fd:87:9a:63:25:00:aa:c7:a1:4d:23:12:e3:56:
+                    0f:6f
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                50:F3:7D:4F:B2:8C:A5:09:FD:64:CB:C1:97:F1:F8:49:C8:6B:30:4D
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-kibana, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         ae:be:82:6f:6d:e6:c4:cb:c3:2a:d9:d6:ee:11:52:a6:de:89:
+         9e:31:a3:e2:86:07:e9:d1:fe:95:c9:a2:38:90:df:05:ff:e5:
+         99:27:e8:d8:55:00:8a:85:b3:15:a5:e5:5b:ce:4e:4f:01:3b:
+         74:a4:b2:09:fc:6e:95:92:94:2f:76:0d:c7:97:1b:78:c1:08:
+         1e:3a:0e:fa:a6:ab:db:1e:22:26:86:39:f4:bb:89:a1:a1:d1:
+         55:f6:c3:ff:9b:a5:eb:1b:6a:84:8a:1d:3c:5f:7c:03:0d:08:
+         42:6f:d7:14:86:61:38:66:65:f7:c2:86:68:db:81:e9:41:0f:
+         82:cf:bb:be:fd:d7:94:48:cc:f8:cf:4a:40:ce:33:c4:75:51:
+         00:7e:c7:93:f6:3b:92:c1:5e:8a:ce:5f:2c:c2:f4:fe:ec:77:
+         9e:ea:30:d9:53:ee:f9:b9:fd:50:f5:6b:92:1c:57:d2:e0:f3:
+         05:d8:79:a9:63:16:13:09:cf:5f:39:dc:ec:43:e4:65:45:43:
+         65:e4:7c:39:a3:a2:81:47:ab:8f:57:a9:89:9d:56:4b:77:b1:
+         04:c8:9c:54:d2:5c:28:f5:d3:66:ae:9a:9c:a5:91:c7:eb:20:
+         69:fb:58:99:c7:5e:be:ec:4a:7a:62:09:fe:3b:30:f2:4a:d7:
+         1d:f9:0b:c3
+-----BEGIN CERTIFICATE-----
+MIIDljCCAn6gAwIBAgIQffwzRXVz6PFglKdOay8j8TANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjdaFw0yMzEwMTUx
+MDQ3MjdaMBkxFzAVBgNVBAMMDmRzb2NsYWIta2liYW5hMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAzk/JD4RNTnvcEZDJSajzYESoJRtZg2QL0eC8WVAi
+pfWIeshAZeQiPXfSj54wF4BeIIW8cGdhy9jin5p8e6boTnl7zYZuJlI3Rbart29A
+j3pVi9GRzCFvVTdQO3IfLTu/dUeRiGoc6jndiyUxVQ68Um+/C5bv4xJc2mMiVOWz
+lYsCnlc+e0+g9W8HqFtFfMs0g3c0pbH/BRKIj8zEBV3p530rEvq7TSX09wTnlQaV
+6qnEdU73A2ctnJr0AfYqjWxt0Fmpzh8SsXY5yAfUIHMe85y5Z4M7qHxu+4bqP2qO
+mEw5qdFNvp8KQ0kb/QlntmJx/YeaYyUAqsehTSMS41YPbwIDAQABo4HcMIHZMAkG
+A1UdEwQCMAAwHQYDVR0OBBYEFFDzfU+yjKUJ/WTLwZfx+EnIazBNMEYGA1UdIwQ/
+MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
+Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
+BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1raWJhbmGCHmRzb2NsYWIu
+Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEArr6Cb23m
+xMvDKtnW7hFSpt6JnjGj4oYH6dH+lcmiOJDfBf/lmSfo2FUAioWzFaXlW85OTwE7
+dKSyCfxulZKUL3YNx5cbeMEIHjoO+qar2x4iJoY59LuJoaHRVfbD/5ul6xtqhIod
+PF98Aw0IQm/XFIZhOGZl98KGaNuB6UEPgs+7vv3XlEjM+M9KQM4zxHVRAH7Hk/Y7
+ksFeis5fLML0/ux3nuow2VPu+bn9UPVrkhxX0uDzBdh5qWMWEwnPXznc7EPkZUVD
+ZeR8OaOigUerj1epiZ1WS3exBMicVNJcKPXTZq6anKWRx+sgaftYmcdevuxKemIJ
+/jsw8krXHfkLww==
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/8B69055F8586CEDD21660B2493412660.pem b/roles/ca/files/CA/certs_by_serial/8B69055F8586CEDD21660B2493412660.pem
new file mode 100644
index 0000000000000000000000000000000000000000..56a67ac49f381e3f9c9db191d4b79dbbdeb58fc2
--- /dev/null
+++ b/roles/ca/files/CA/certs_by_serial/8B69055F8586CEDD21660B2493412660.pem
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            8b:69:05:5f:85:86:ce:dd:21:66:0b:24:93:41:26:60
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:25 2020 GMT
+            Not After : Oct 15 10:47:25 2023 GMT
+        Subject: CN=dsoclab-nifi-2
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:ac:b7:4b:e2:d5:87:7f:8e:15:9b:cf:c0:17:eb:
+                    db:8c:e3:1b:83:c0:69:b9:06:91:a0:9b:c6:35:dc:
+                    2f:e8:8c:72:28:50:02:82:c5:b1:eb:da:d9:e3:9d:
+                    95:d2:d9:dd:e1:08:35:6d:83:73:95:98:ba:19:fd:
+                    3e:04:67:9a:09:37:45:79:d3:1d:0b:ec:0a:43:cb:
+                    b8:24:cc:68:5c:ce:2e:ae:db:48:d8:6e:5a:f3:31:
+                    be:87:28:86:76:8e:8f:8d:68:95:1f:72:6c:65:4a:
+                    fc:9e:b8:7d:e2:83:e2:3d:b0:30:5d:c1:73:06:ae:
+                    9b:f7:9a:54:b8:02:6b:82:90:11:08:3f:d6:5f:59:
+                    5c:df:aa:25:59:c0:67:7a:fc:e1:f0:c9:4a:8b:e0:
+                    31:b6:53:13:c2:bf:8c:4f:3a:e6:ed:11:30:a6:41:
+                    26:ad:56:8f:03:0b:ad:87:6c:b2:73:c4:2e:41:3e:
+                    99:1a:b6:29:6d:e0:dc:af:8f:45:6e:d5:69:17:0d:
+                    f1:58:a6:7e:8c:80:32:72:24:21:d2:e9:b4:44:23:
+                    f6:10:8f:9f:64:7f:ef:e6:ab:f1:43:94:d0:8a:97:
+                    0e:e4:91:bd:86:b9:1f:42:f4:96:39:85:05:26:ed:
+                    90:01:91:11:a3:1f:04:5b:46:ff:1b:a9:74:77:db:
+                    18:03
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                1F:5E:EF:0E:58:69:FD:21:93:48:19:98:81:48:13:2E:FC:31:61:0C
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-nifi-2, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         21:2d:9b:f7:0c:74:cd:d4:30:b1:42:5b:32:98:d8:ef:9f:a9:
+         9b:1b:f0:54:67:c3:20:5b:f1:87:4d:ff:e4:a5:db:af:eb:34:
+         8a:b3:fa:d6:14:4a:3c:31:11:8f:09:b0:af:25:39:5a:5e:89:
+         32:cf:c7:48:68:f3:14:72:a0:35:15:ec:76:c7:bb:a7:5b:0c:
+         d5:7e:5b:8c:d8:40:a2:5e:fa:f8:f2:cf:dd:56:65:7e:94:ef:
+         b4:99:25:ba:9f:78:94:7d:54:0c:83:b9:cf:b8:b4:9d:78:6d:
+         62:e3:6c:98:1f:40:b9:35:3c:51:b5:9f:82:7b:1e:77:db:25:
+         f2:71:df:3d:e9:56:93:86:fe:61:48:4f:db:76:5b:5f:b1:96:
+         f9:46:72:5e:01:80:87:b5:be:b4:00:3b:37:7f:5e:44:d4:7e:
+         c5:87:ed:40:6b:9e:f4:ca:1b:b0:4b:84:97:1f:07:0f:7c:8b:
+         d2:7b:b1:3d:a7:f8:ae:39:07:34:50:41:70:1f:07:ba:a6:a2:
+         0d:ca:e5:7b:d4:77:2c:95:4d:16:0c:34:e0:a5:59:7f:43:c7:
+         a0:dd:a0:f0:ed:75:5a:0f:61:76:52:34:ef:7c:a7:21:e4:de:
+         3a:24:cd:39:b6:77:3a:c8:f3:1f:09:2b:80:9a:f0:5d:7f:5e:
+         73:9d:73:eb
+-----BEGIN CERTIFICATE-----
+MIIDlzCCAn+gAwIBAgIRAItpBV+Fhs7dIWYLJJNBJmAwDQYJKoZIhvcNAQELBQAw
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzI1WhcNMjMxMDE1
+MTA0NzI1WjAZMRcwFQYDVQQDDA5kc29jbGFiLW5pZmktMjCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBAKy3S+LVh3+OFZvPwBfr24zjG4PAabkGkaCbxjXc
+L+iMcihQAoLFseva2eOdldLZ3eEINW2Dc5WYuhn9PgRnmgk3RXnTHQvsCkPLuCTM
+aFzOLq7bSNhuWvMxvocohnaOj41olR9ybGVK/J64feKD4j2wMF3Bcwaum/eaVLgC
+a4KQEQg/1l9ZXN+qJVnAZ3r84fDJSovgMbZTE8K/jE865u0RMKZBJq1WjwMLrYds
+snPELkE+mRq2KW3g3K+PRW7VaRcN8VimfoyAMnIkIdLptEQj9hCPn2R/7+ar8UOU
+0IqXDuSRvYa5H0L0ljmFBSbtkAGREaMfBFtG/xupdHfbGAMCAwEAAaOB3DCB2TAJ
+BgNVHRMEAjAAMB0GA1UdDgQWBBQfXu8OWGn9IZNIGZiBSBMu/DFhDDBGBgNVHSME
+PzA9gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9P
+TFMtQ0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
+CwYDVR0PBAQDAgWgMDkGA1UdEQQyMDCCDmRzb2NsYWItbmlmaS0ygh5kc29jbGFi
+LmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBACEtm/cM
+dM3UMLFCWzKY2O+fqZsb8FRnwyBb8YdN/+Sl26/rNIqz+tYUSjwxEY8JsK8lOVpe
+iTLPx0ho8xRyoDUV7HbHu6dbDNV+W4zYQKJe+vjyz91WZX6U77SZJbqfeJR9VAyD
+uc+4tJ14bWLjbJgfQLk1PFG1n4J7HnfbJfJx3z3pVpOG/mFIT9t2W1+xlvlGcl4B
+gIe1vrQAOzd/XkTUfsWH7UBrnvTKG7BLhJcfBw98i9J7sT2n+K45BzRQQXAfB7qm
+og3K5XvUdyyVTRYMNOClWX9Dx6DdoPDtdVoPYXZSNO98pyHk3jokzTm2dzrI8x8J
+K4Ca8F1/XnOdc+s=
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/97D2D0CF2300C0A966D103CA89A99212.pem b/roles/ca/files/CA/certs_by_serial/97D2D0CF2300C0A966D103CA89A99212.pem
new file mode 100644
index 0000000000000000000000000000000000000000..71baad05685f6d498afb76ee0ce3c737cb475275
--- /dev/null
+++ b/roles/ca/files/CA/certs_by_serial/97D2D0CF2300C0A966D103CA89A99212.pem
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            97:d2:d0:cf:23:00:c0:a9:66:d1:03:ca:89:a9:92:12
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:26 2020 GMT
+            Not After : Oct 15 10:47:26 2023 GMT
+        Subject: CN=dsoclab-odfe-1
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:e5:46:f6:71:ce:a2:3f:61:5e:9b:f3:c6:61:88:
+                    87:99:0a:ac:b8:e8:9d:3c:5f:8c:60:2b:41:5b:36:
+                    fb:39:0a:6f:a1:16:02:31:ac:0d:bd:0e:ff:95:59:
+                    d8:f1:21:6b:bd:96:d6:7b:79:01:d1:65:1c:ca:09:
+                    22:50:30:01:ea:ed:b4:29:bf:b4:70:25:db:b3:1d:
+                    e9:73:ed:63:93:02:4c:90:22:04:6d:31:74:31:ae:
+                    85:3c:12:8d:b3:f6:92:2f:de:75:75:8f:ca:a5:f2:
+                    a2:12:94:fb:e8:73:30:37:f1:7c:b5:4e:59:ab:71:
+                    73:26:80:9a:46:8d:49:94:b0:09:e5:27:10:34:9d:
+                    c0:53:3b:fa:77:2e:06:c0:73:8e:0f:9a:1e:8c:27:
+                    32:0c:eb:f2:d2:0c:a7:52:48:c6:ee:12:21:15:e3:
+                    45:30:89:81:63:7f:bf:0a:5b:d1:05:c8:1c:fc:5f:
+                    bb:b8:82:2a:92:3b:3a:ae:19:9d:e9:a7:62:7c:0a:
+                    f2:c2:2a:e6:a8:d4:9b:0a:a8:a2:5a:ec:e5:a3:1a:
+                    73:e0:83:3d:d2:e8:74:a9:0b:b0:e4:b0:fd:fe:ad:
+                    1e:57:e8:0d:20:7c:aa:1f:31:69:b5:0d:8c:3f:1c:
+                    8d:dc:d3:71:5b:f1:04:6a:ae:b9:2d:a8:be:28:11:
+                    f5:4b
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                DB:92:49:8B:D9:27:41:85:16:AE:C9:CA:F6:8D:11:53:8B:EE:B0:5E
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-odfe-1, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         0f:83:fb:ba:2a:0d:aa:14:3f:3f:0b:00:be:f9:37:f4:7f:29:
+         1e:21:4e:18:07:e0:ae:e1:84:f7:cf:a1:21:a5:36:ba:77:6c:
+         0c:00:11:d5:7d:d8:31:b3:f5:cc:fd:6b:27:8f:99:5f:99:4c:
+         57:88:d0:1a:e7:66:6b:8a:fd:d1:01:e3:88:37:91:8c:7b:e9:
+         e2:22:dd:80:62:64:9e:22:e7:25:b5:b9:89:45:e4:24:f5:19:
+         c0:5d:10:50:57:80:66:23:0c:b1:8e:bd:b3:f1:fa:95:7e:6f:
+         04:d1:da:c2:e8:a1:b2:55:55:66:3a:bc:5b:71:50:8c:a8:56:
+         86:f4:a9:9c:c7:4b:d6:91:73:8e:a9:93:ef:e0:85:5e:5c:53:
+         ae:b3:a7:a4:31:80:f3:b3:e4:03:ad:da:96:f0:14:7b:25:e4:
+         ff:68:9b:8f:28:cd:fc:94:05:5f:38:80:84:d6:f5:d4:b7:bd:
+         43:79:bd:fb:f2:ce:30:73:01:e8:ee:ad:45:4a:ea:88:3f:d1:
+         a2:ef:22:f5:49:cc:d4:27:22:3c:bc:1f:50:81:58:5a:65:9d:
+         d6:14:3b:3f:b2:8f:90:35:2b:e7:1a:9b:58:db:96:06:9b:cf:
+         44:0b:f5:9f:aa:57:28:3c:ab:70:fa:bc:93:90:d9:94:d7:fe:
+         6f:fe:39:2a
+-----BEGIN CERTIFICATE-----
+MIIDlzCCAn+gAwIBAgIRAJfS0M8jAMCpZtEDyompkhIwDQYJKoZIhvcNAQELBQAw
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzI2WhcNMjMxMDE1
+MTA0NzI2WjAZMRcwFQYDVQQDDA5kc29jbGFiLW9kZmUtMTCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBAOVG9nHOoj9hXpvzxmGIh5kKrLjonTxfjGArQVs2
++zkKb6EWAjGsDb0O/5VZ2PEha72W1nt5AdFlHMoJIlAwAerttCm/tHAl27Md6XPt
+Y5MCTJAiBG0xdDGuhTwSjbP2ki/edXWPyqXyohKU++hzMDfxfLVOWatxcyaAmkaN
+SZSwCeUnEDSdwFM7+ncuBsBzjg+aHownMgzr8tIMp1JIxu4SIRXjRTCJgWN/vwpb
+0QXIHPxfu7iCKpI7Oq4ZnemnYnwK8sIq5qjUmwqoolrs5aMac+CDPdLodKkLsOSw
+/f6tHlfoDSB8qh8xabUNjD8cjdzTcVvxBGquuS2ovigR9UsCAwEAAaOB3DCB2TAJ
+BgNVHRMEAjAAMB0GA1UdDgQWBBTbkkmL2SdBhRauycr2jRFTi+6wXjBGBgNVHSME
+PzA9gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9P
+TFMtQ0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
+CwYDVR0PBAQDAgWgMDkGA1UdEQQyMDCCDmRzb2NsYWItb2RmZS0xgh5kc29jbGFi
+LmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBAA+D+7oq
+DaoUPz8LAL75N/R/KR4hThgH4K7hhPfPoSGlNrp3bAwAEdV92DGz9cz9ayePmV+Z
+TFeI0BrnZmuK/dEB44g3kYx76eIi3YBiZJ4i5yW1uYlF5CT1GcBdEFBXgGYjDLGO
+vbPx+pV+bwTR2sLoobJVVWY6vFtxUIyoVob0qZzHS9aRc46pk+/ghV5cU66zp6Qx
+gPOz5AOt2pbwFHsl5P9om48ozfyUBV84gITW9dS3vUN5vfvyzjBzAejurUVK6og/
+0aLvIvVJzNQnIjy8H1CBWFplndYUOz+yj5A1K+cam1jblgabz0QL9Z+qVyg8q3D6
+vJOQ2ZTX/m/+OSo=
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/A7217943DDD1145BC6F68CBA362CB35B.pem b/roles/ca/files/CA/certs_by_serial/A7217943DDD1145BC6F68CBA362CB35B.pem
new file mode 100644
index 0000000000000000000000000000000000000000..4baf981ca39d7c8e6270b7823a40dd9e1661d9c3
--- /dev/null
+++ b/roles/ca/files/CA/certs_by_serial/A7217943DDD1145BC6F68CBA362CB35B.pem
@@ -0,0 +1,84 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            a7:21:79:43:dd:d1:14:5b:c6:f6:8c:ba:36:2c:b3:5b
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:52 2020 GMT
+            Not After : Oct 15 10:47:52 2023 GMT
+        Subject: CN=Arne Oslebo
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:ce:4c:02:19:21:6e:1c:f2:ed:93:d8:fd:bc:1a:
+                    a4:c2:11:3b:e1:55:73:e5:26:92:d3:d9:e8:a6:dd:
+                    7d:a2:1d:be:6a:7c:64:06:39:60:33:38:7d:6a:ca:
+                    89:9d:e5:11:58:21:69:f3:3a:88:5e:ea:e5:2e:e1:
+                    9d:bb:00:1f:59:19:69:4f:6b:32:3d:2f:1a:da:95:
+                    3d:99:95:53:9f:b2:ea:db:13:48:63:2d:4a:dc:0c:
+                    4b:a6:1c:4c:62:e2:d0:11:25:67:cb:80:52:02:e8:
+                    f8:3b:3c:eb:cb:f4:71:03:5a:be:d9:a0:49:fe:d1:
+                    72:fe:4f:be:e1:ac:a1:ed:a5:15:06:f4:4e:c9:06:
+                    ab:9b:92:c2:3e:b9:58:0c:f4:15:0e:04:c0:91:1b:
+                    85:73:9d:b6:97:a1:6c:70:0a:1a:a0:ce:4c:8d:ac:
+                    29:e4:c5:17:00:26:03:44:32:a8:7b:83:52:49:43:
+                    60:11:53:c8:1e:b8:eb:9f:1f:e3:13:54:81:77:c4:
+                    47:4a:2e:20:8d:48:8c:91:2e:e0:d4:e5:37:0b:5c:
+                    bb:5f:40:37:92:e9:60:3b:a0:f9:98:7f:6d:b3:20:
+                    92:3c:da:8c:f0:79:81:f2:ea:77:ba:b4:7b:06:54:
+                    75:89:77:7e:ad:08:3a:ae:1e:dc:1c:11:63:08:43:
+                    14:97
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                BA:57:27:B7:A6:72:56:05:70:2F:E2:6E:47:CA:0F:2F:C4:26:44:86
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature
+    Signature Algorithm: sha256WithRSAEncryption
+         53:30:05:cf:78:2f:0b:25:a1:64:0a:94:06:11:9b:a8:07:d3:
+         5d:4f:0c:80:78:9c:cb:8e:07:d8:21:29:68:d0:ea:43:55:3f:
+         14:18:dc:40:cc:a4:84:da:11:24:07:71:35:63:49:3e:bc:10:
+         3a:93:cd:b8:61:22:e1:43:a8:d4:c5:2b:13:e4:27:62:00:f1:
+         c8:31:d0:27:05:27:6b:0e:77:df:1b:f0:e5:6e:d9:0b:8a:9a:
+         0b:5f:97:20:2c:dd:e1:37:64:94:1a:9e:f7:a7:63:37:88:71:
+         0e:57:a2:da:10:1f:2c:a3:a9:e1:40:01:48:58:74:2e:b3:11:
+         8f:d1:21:30:49:b9:53:29:c5:92:85:85:6b:51:20:05:b4:c5:
+         af:b9:b2:9b:a3:50:1d:59:ac:fa:bf:33:57:61:f4:f1:c3:ee:
+         a2:9a:99:b2:04:de:8b:fc:d2:3c:58:38:ab:9d:d2:6d:f2:e3:
+         0c:69:a5:76:78:df:ae:c9:67:0a:97:55:3d:f0:8f:5a:5e:de:
+         e6:56:1b:4e:66:c9:34:77:97:54:d4:66:e2:24:3c:f0:43:01:
+         24:05:0c:32:a0:65:38:09:53:6c:0e:38:ea:7c:b1:d6:51:11:
+         60:8f:28:9f:ab:13:d0:75:f3:93:13:f2:1e:a4:bd:18:ae:b0:
+         0f:f6:29:d4
+-----BEGIN CERTIFICATE-----
+MIIDTzCCAjegAwIBAgIRAKcheUPd0RRbxvaMujYss1swDQYJKoZIhvcNAQELBQAw
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzUyWhcNMjMxMDE1
+MTA0NzUyWjAWMRQwEgYDVQQDDAtBcm5lIE9zbGVibzCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBAM5MAhkhbhzy7ZPY/bwapMIRO+FVc+UmktPZ6KbdfaId
+vmp8ZAY5YDM4fWrKiZ3lEVghafM6iF7q5S7hnbsAH1kZaU9rMj0vGtqVPZmVU5+y
+6tsTSGMtStwMS6YcTGLi0BElZ8uAUgLo+Ds868v0cQNavtmgSf7Rcv5PvuGsoe2l
+FQb0TskGq5uSwj65WAz0FQ4EwJEbhXOdtpehbHAKGqDOTI2sKeTFFwAmA0QyqHuD
+UklDYBFTyB64658f4xNUgXfER0ouII1IjJEu4NTlNwtcu19AN5LpYDug+Zh/bbMg
+kjzajPB5gfLqd7q0ewZUdYl3fq0IOq4e3BwRYwhDFJcCAwEAAaOBlzCBlDAJBgNV
+HRMEAjAAMB0GA1UdDgQWBBS6Vye3pnJWBXAv4m5Hyg8vxCZEhjBGBgNVHSMEPzA9
+gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9PTFMt
+Q0GCCQCKdJMmgFtCtzATBgNVHSUEDDAKBggrBgEFBQcDAjALBgNVHQ8EBAMCB4Aw
+DQYJKoZIhvcNAQELBQADggEBAFMwBc94LwsloWQKlAYRm6gH011PDIB4nMuOB9gh
+KWjQ6kNVPxQY3EDMpITaESQHcTVjST68EDqTzbhhIuFDqNTFKxPkJ2IA8cgx0CcF
+J2sOd98b8OVu2QuKmgtflyAs3eE3ZJQanvenYzeIcQ5XotoQHyyjqeFAAUhYdC6z
+EY/RITBJuVMpxZKFhWtRIAW0xa+5spujUB1ZrPq/M1dh9PHD7qKambIE3ov80jxY
+OKud0m3y4wxppXZ4367JZwqXVT3wj1pe3uZWG05myTR3l1TUZuIkPPBDASQFDDKg
+ZTgJU2wOOOp8sdZREWCPKJ+rE9B185MT8h6kvRiusA/2KdQ=
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/D27B43CB9BFB09CFCC86EFD1019A42FC.pem b/roles/ca/files/CA/certs_by_serial/D27B43CB9BFB09CFCC86EFD1019A42FC.pem
new file mode 100644
index 0000000000000000000000000000000000000000..5be39cb377745bb5bc5303c2b7d55d44877f9260
--- /dev/null
+++ b/roles/ca/files/CA/certs_by_serial/D27B43CB9BFB09CFCC86EFD1019A42FC.pem
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            d2:7b:43:cb:9b:fb:09:cf:cc:86:ef:d1:01:9a:42:fc
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:30 2020 GMT
+            Not After : Oct 15 10:47:30 2023 GMT
+        Subject: CN=dsoclab-haproxy
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:c9:c7:22:33:0b:0b:0f:a0:8c:c4:a9:81:37:bd:
+                    51:2f:47:32:fa:1b:88:45:b1:bb:11:43:3d:de:b3:
+                    70:67:d7:8b:39:5a:8f:13:fb:2f:78:08:b1:b1:32:
+                    c6:d1:0e:e4:d3:2e:3a:db:84:db:d2:65:6b:26:24:
+                    6c:d7:16:e5:a5:90:8e:02:46:13:02:0a:96:66:46:
+                    87:b7:b0:ee:56:4c:3c:d8:ae:4c:7d:ef:5b:aa:6e:
+                    01:8e:89:fe:4c:b9:de:6c:ba:e4:3f:8d:f8:d7:3a:
+                    ed:b2:29:9a:5b:ac:5a:86:66:05:f3:19:2f:59:8d:
+                    7c:8b:6a:97:1e:43:8a:36:80:b2:e9:e1:84:f6:94:
+                    bc:13:11:31:b8:d2:5a:72:ed:68:c3:b1:37:e4:5b:
+                    91:82:62:aa:13:f2:b6:e0:3a:aa:85:66:70:0a:a9:
+                    ad:5c:a7:52:ff:dc:f9:99:5e:e5:15:d5:0c:fe:cd:
+                    27:cb:98:9e:5a:69:ca:71:74:31:e6:26:df:ec:d2:
+                    42:43:b9:f3:04:8e:2c:7a:28:a6:f9:8e:ba:64:3c:
+                    69:0e:ac:f5:dc:d5:f3:2a:50:47:50:d4:8c:f5:ee:
+                    31:08:73:69:1f:ae:42:1d:52:84:5d:47:68:dd:a3:
+                    1f:07:57:ec:3e:9e:0d:23:78:16:41:bc:68:f2:4f:
+                    e9:19
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                49:DC:74:02:17:71:C3:D0:A0:64:31:9E:60:2B:B4:38:43:62:DE:98
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-haproxy, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         04:a0:71:31:d2:11:93:09:96:c8:1b:2a:31:b8:b9:34:07:ac:
+         89:cb:b0:6c:b0:f0:17:5f:18:3c:a6:96:ca:b3:fa:c7:af:40:
+         17:e1:7e:e4:dc:ee:fe:5c:dc:86:40:b7:2f:9d:c0:9e:fd:16:
+         6b:85:ab:c2:a8:63:1f:fe:03:2b:89:6a:80:c9:2e:ae:cc:3d:
+         19:75:32:0e:56:57:16:27:02:51:49:1d:b3:78:aa:57:d3:00:
+         9b:93:fe:6d:a3:37:ad:26:35:57:e1:5f:90:bf:ef:30:bc:68:
+         f3:bf:7c:59:69:4f:61:30:2d:48:66:a6:44:2a:51:63:6e:4f:
+         a7:8f:96:7e:91:b2:b2:46:bc:97:1b:01:df:c0:24:5c:b2:aa:
+         8d:20:3a:25:5d:8a:1c:84:53:0d:d4:f6:d5:81:5d:30:de:c4:
+         d7:fa:42:9c:79:68:92:56:b7:76:69:c6:c9:ad:07:47:a6:d2:
+         46:d4:a5:0c:10:a9:03:21:4d:56:40:e5:28:e3:fa:70:1b:23:
+         32:68:07:3d:d6:8a:3a:fb:6d:3b:a6:20:16:1b:09:f3:47:f0:
+         2a:4f:dc:97:86:56:37:96:42:1b:89:b8:76:1a:ab:7a:25:4e:
+         e8:62:d9:a0:3b:ec:62:72:64:64:ca:87:9c:be:0a:08:09:52:
+         ab:03:89:2b
+-----BEGIN CERTIFICATE-----
+MIIDmTCCAoGgAwIBAgIRANJ7Q8ub+wnPzIbv0QGaQvwwDQYJKoZIhvcNAQELBQAw
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzMwWhcNMjMxMDE1
+MTA0NzMwWjAaMRgwFgYDVQQDDA9kc29jbGFiLWhhcHJveHkwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQDJxyIzCwsPoIzEqYE3vVEvRzL6G4hFsbsRQz3e
+s3Bn14s5Wo8T+y94CLGxMsbRDuTTLjrbhNvSZWsmJGzXFuWlkI4CRhMCCpZmRoe3
+sO5WTDzYrkx971uqbgGOif5Mud5suuQ/jfjXOu2yKZpbrFqGZgXzGS9ZjXyLapce
+Q4o2gLLp4YT2lLwTETG40lpy7WjDsTfkW5GCYqoT8rbgOqqFZnAKqa1cp1L/3PmZ
+XuUV1Qz+zSfLmJ5aacpxdDHmJt/s0kJDufMEjix6KKb5jrpkPGkOrPXc1fMqUEdQ
+1Iz17jEIc2kfrkIdUoRdR2jdox8HV+w+ng0jeBZBvGjyT+kZAgMBAAGjgd0wgdow
+CQYDVR0TBAIwADAdBgNVHQ4EFgQUSdx0Ahdxw9CgZDGeYCu0OENi3pgwRgYDVR0j
+BD8wPYAUeQbKQNOfmlSu0zNN8jg+tgvzPc+hGqQYMBYxFDASBgNVBAMMC1NPQ1RP
+T0xTLUNBggkAinSTJoBbQrcwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
+MAsGA1UdDwQEAwIFoDA6BgNVHREEMzAxgg9kc29jbGFiLWhhcHJveHmCHmRzb2Ns
+YWIuZ240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEABKBx
+MdIRkwmWyBsqMbi5NAesicuwbLDwF18YPKaWyrP6x69AF+F+5Nzu/lzchkC3L53A
+nv0Wa4WrwqhjH/4DK4lqgMkursw9GXUyDlZXFicCUUkds3iqV9MAm5P+baM3rSY1
+V+FfkL/vMLxo8798WWlPYTAtSGamRCpRY25Pp4+WfpGyska8lxsB38AkXLKqjSA6
+JV2KHIRTDdT21YFdMN7E1/pCnHlokla3dmnGya0HR6bSRtSlDBCpAyFNVkDlKOP6
+cBsjMmgHPdaKOvttO6YgFhsJ80fwKk/cl4ZWN5ZCG4m4dhqreiVO6GLZoDvsYnJk
+ZMqHnL4KCAlSqwOJKw==
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/FE7583DEF2355A2C2BBA09720BD80948.pem b/roles/ca/files/CA/certs_by_serial/FE7583DEF2355A2C2BBA09720BD80948.pem
new file mode 100644
index 0000000000000000000000000000000000000000..92b6893716cacfa9e7fb863ad4c4379077e7ac1e
--- /dev/null
+++ b/roles/ca/files/CA/certs_by_serial/FE7583DEF2355A2C2BBA09720BD80948.pem
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            fe:75:83:de:f2:35:5a:2c:2b:ba:09:72:0b:d8:09:48
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:28 2020 GMT
+            Not After : Oct 15 10:47:28 2023 GMT
+        Subject: CN=dsoclab-keycloak
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:ea:a9:ea:6b:2f:6c:9c:9f:6d:9c:89:4e:01:ba:
+                    c6:c0:32:df:59:26:2b:95:f4:c2:3d:c8:7e:22:ce:
+                    b6:78:03:e8:22:28:81:9c:9a:a6:a7:ba:fd:05:66:
+                    a3:50:81:85:71:c1:d9:ea:bc:21:e1:5d:0a:87:7b:
+                    be:55:b0:7d:01:57:de:4c:fe:3a:c5:c9:54:77:2e:
+                    15:fc:12:07:f8:ef:9f:7b:f7:09:01:70:75:53:3b:
+                    dc:b1:0c:65:4d:49:c4:fb:1d:42:20:6f:81:45:42:
+                    d3:db:1d:4c:57:1b:1d:3b:81:39:ee:b2:cf:95:4b:
+                    29:d0:a8:39:98:d6:93:36:99:bf:c5:43:26:8d:4d:
+                    db:6d:24:3b:fc:16:76:a1:fd:6f:c6:19:11:c7:12:
+                    0d:80:16:4c:88:da:2c:09:78:3d:1b:7c:6c:ec:db:
+                    9e:01:50:5f:a3:56:7f:d4:3b:a4:26:d2:6d:42:7b:
+                    88:4e:8d:64:ed:1e:1a:0e:05:58:65:58:47:83:60:
+                    9e:b4:ed:15:ce:72:4f:a0:b5:22:dd:9f:a4:da:88:
+                    86:fe:cb:84:6e:72:3d:00:42:da:8b:85:2a:f2:ef:
+                    d7:ee:bb:85:42:ba:b9:fb:d9:9d:d2:2c:58:0f:7c:
+                    02:23:b7:46:d0:69:06:37:40:9d:58:74:89:ca:b7:
+                    12:e5
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                FD:C5:77:F8:79:AD:0A:7E:6A:A0:2E:3B:58:6A:9F:43:51:55:0B:DF
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-keycloak, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         9a:c0:35:a3:68:ec:ec:cc:c3:65:5a:bf:03:d0:ee:8d:a0:41:
+         db:6d:89:3e:97:d4:90:7d:63:8e:73:37:43:ae:9a:e2:d0:2b:
+         a7:5e:b2:88:9b:4d:8f:b6:81:bf:f6:46:a0:87:ca:77:ec:5c:
+         af:cd:6b:d8:e8:60:5a:aa:86:be:64:d5:ad:e9:1e:41:7b:6a:
+         df:01:1d:16:86:94:57:82:51:91:be:6b:d6:ae:f0:b9:8c:3d:
+         11:99:c4:93:eb:f7:fa:9e:a3:e3:f8:97:19:cf:63:55:6a:6e:
+         4f:e9:a2:64:a7:35:0d:7e:68:23:89:e1:c6:06:4b:34:67:38:
+         40:d1:81:b3:73:95:3a:3b:67:d2:5a:e4:8e:49:34:b1:ab:6f:
+         b6:60:87:ac:55:5d:f5:59:c0:d5:d3:d8:de:3b:76:c9:41:28:
+         b4:d7:23:ec:a2:3f:1d:3f:74:2e:f0:45:40:35:38:d1:06:50:
+         b2:93:45:df:de:33:5e:0b:89:86:d8:c9:14:61:1c:d2:94:21:
+         1f:bf:df:32:f0:2f:91:52:b0:08:b7:b9:c2:b7:55:2b:ca:05:
+         e4:eb:91:e1:63:45:5d:1a:6f:e8:76:07:89:e8:42:3e:ec:7b:
+         51:0e:a0:d5:8e:c3:3d:26:e3:45:b0:5b:61:d1:98:3b:c3:d4:
+         37:9f:c1:7c
+-----BEGIN CERTIFICATE-----
+MIIDmzCCAoOgAwIBAgIRAP51g97yNVosK7oJcgvYCUgwDQYJKoZIhvcNAQELBQAw
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzI4WhcNMjMxMDE1
+MTA0NzI4WjAbMRkwFwYDVQQDDBBkc29jbGFiLWtleWNsb2FrMIIBIjANBgkqhkiG
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6qnqay9snJ9tnIlOAbrGwDLfWSYrlfTCPch+
+Is62eAPoIiiBnJqmp7r9BWajUIGFccHZ6rwh4V0Kh3u+VbB9AVfeTP46xclUdy4V
+/BIH+O+fe/cJAXB1UzvcsQxlTUnE+x1CIG+BRULT2x1MVxsdO4E57rLPlUsp0Kg5
+mNaTNpm/xUMmjU3bbSQ7/BZ2of1vxhkRxxINgBZMiNosCXg9G3xs7NueAVBfo1Z/
+1DukJtJtQnuITo1k7R4aDgVYZVhHg2CetO0VznJPoLUi3Z+k2oiG/suEbnI9AELa
+i4Uq8u/X7ruFQrq5+9md0ixYD3wCI7dG0GkGN0CdWHSJyrcS5QIDAQABo4HeMIHb
+MAkGA1UdEwQCMAAwHQYDVR0OBBYEFP3Fd/h5rQp+aqAuO1hqn0NRVQvfMEYGA1Ud
+IwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NU
+T09MUy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD
+AjALBgNVHQ8EBAMCBaAwOwYDVR0RBDQwMoIQZHNvY2xhYi1rZXljbG9ha4IeZHNv
+Y2xhYi5nbjQtMy13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQCa
+wDWjaOzszMNlWr8D0O6NoEHbbYk+l9SQfWOOczdDrpri0CunXrKIm02PtoG/9kag
+h8p37FyvzWvY6GBaqoa+ZNWt6R5Be2rfAR0WhpRXglGRvmvWrvC5jD0RmcST6/f6
+nqPj+JcZz2NVam5P6aJkpzUNfmgjieHGBks0ZzhA0YGzc5U6O2fSWuSOSTSxq2+2
+YIesVV31WcDV09jeO3bJQSi01yPsoj8dP3Qu8EVANTjRBlCyk0Xf3jNeC4mG2MkU
+YRzSlCEfv98y8C+RUrAIt7nCt1UrygXk65HhY0VdGm/odgeJ6EI+7HtRDqDVjsM9
+JuNFsFth0Zg7w9Q3n8F8
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/extensions.temp b/roles/ca/files/CA/extensions.temp
new file mode 100644
index 0000000000000000000000000000000000000000..5680ec98c31b681502f8c828605876ce30e19995
--- /dev/null
+++ b/roles/ca/files/CA/extensions.temp
@@ -0,0 +1,15 @@
+# X509 extensions added to every signed cert
+
+# This file is included for every cert signed, and by default does nothing.
+# It could be used to add values every cert should have, such as a CDP as
+# demonstrated in the following example:
+
+#crlDistributionPoints = URI:http://example.net/pki/my_ca.crl
+# X509 extensions for a client
+
+basicConstraints = CA:FALSE
+subjectKeyIdentifier = hash
+authorityKeyIdentifier = keyid,issuer:always
+extendedKeyUsage = clientAuth
+keyUsage = digitalSignature
+
diff --git a/roles/ca/files/CA/index.txt b/roles/ca/files/CA/index.txt
new file mode 100644
index 0000000000000000000000000000000000000000..221d42dd9a77ccea288c5b3e083e699777e86d7e
--- /dev/null
+++ b/roles/ca/files/CA/index.txt
@@ -0,0 +1,13 @@
+V	231015104725Z		01EC4DAD3E5E47CF4E4B98495932B337	unknown	/CN=dsoclab-nifi-1
+V	231015104725Z		8B69055F8586CEDD21660B2493412660	unknown	/CN=dsoclab-nifi-2
+V	231015104726Z		5969918F10EF8D2BAE46B26D6D629D8E	unknown	/CN=dsoclab-nifi-3
+V	231015104726Z		97D2D0CF2300C0A966D103CA89A99212	unknown	/CN=dsoclab-odfe-1
+V	231015104727Z		560A99C5A03FC4B9FC92FDC62F419BB9	unknown	/CN=dsoclab-odfe-2
+V	231015104727Z		7DFC33457573E8F16094A74E6B2F23F1	unknown	/CN=dsoclab-kibana
+V	231015104728Z		FE7583DEF2355A2C2BBA09720BD80948	unknown	/CN=dsoclab-keycloak
+V	231015104728Z		7587FCE4CF3EC68117199076B12CD5D2	unknown	/CN=dsoclab-misp
+V	231015104729Z		61095C2C8D35EE291C99CEABD42B3CA4	unknown	/CN=dsoclab-thehive
+V	231015104729Z		5DC4BC495FA076A813A4C23261640D92	unknown	/CN=dsoclab-cortex
+V	231015104730Z		D27B43CB9BFB09CFCC86EFD1019A42FC	unknown	/CN=dsoclab-haproxy
+V	231015104752Z		1DD9AF5415359961C578D1B98BFA6E9F	unknown	/CN=Bozidar Proevski
+V	231015104752Z		A7217943DDD1145BC6F68CBA362CB35B	unknown	/CN=Arne Oslebo
diff --git a/roles/ca/files/CA/index.txt.attr b/roles/ca/files/CA/index.txt.attr
new file mode 100644
index 0000000000000000000000000000000000000000..3a7e39e6ee60a25017c2fd64fed55b665faa387c
--- /dev/null
+++ b/roles/ca/files/CA/index.txt.attr
@@ -0,0 +1 @@
+unique_subject = no
diff --git a/roles/ca/files/CA/index.txt.attr.old b/roles/ca/files/CA/index.txt.attr.old
new file mode 100644
index 0000000000000000000000000000000000000000..3a7e39e6ee60a25017c2fd64fed55b665faa387c
--- /dev/null
+++ b/roles/ca/files/CA/index.txt.attr.old
@@ -0,0 +1 @@
+unique_subject = no
diff --git a/roles/ca/files/CA/index.txt.old b/roles/ca/files/CA/index.txt.old
new file mode 100644
index 0000000000000000000000000000000000000000..022f25472252e7019c5dc2c66f9ba279f0e2b11f
--- /dev/null
+++ b/roles/ca/files/CA/index.txt.old
@@ -0,0 +1,12 @@
+V	231015104725Z		01EC4DAD3E5E47CF4E4B98495932B337	unknown	/CN=dsoclab-nifi-1
+V	231015104725Z		8B69055F8586CEDD21660B2493412660	unknown	/CN=dsoclab-nifi-2
+V	231015104726Z		5969918F10EF8D2BAE46B26D6D629D8E	unknown	/CN=dsoclab-nifi-3
+V	231015104726Z		97D2D0CF2300C0A966D103CA89A99212	unknown	/CN=dsoclab-odfe-1
+V	231015104727Z		560A99C5A03FC4B9FC92FDC62F419BB9	unknown	/CN=dsoclab-odfe-2
+V	231015104727Z		7DFC33457573E8F16094A74E6B2F23F1	unknown	/CN=dsoclab-kibana
+V	231015104728Z		FE7583DEF2355A2C2BBA09720BD80948	unknown	/CN=dsoclab-keycloak
+V	231015104728Z		7587FCE4CF3EC68117199076B12CD5D2	unknown	/CN=dsoclab-misp
+V	231015104729Z		61095C2C8D35EE291C99CEABD42B3CA4	unknown	/CN=dsoclab-thehive
+V	231015104729Z		5DC4BC495FA076A813A4C23261640D92	unknown	/CN=dsoclab-cortex
+V	231015104730Z		D27B43CB9BFB09CFCC86EFD1019A42FC	unknown	/CN=dsoclab-haproxy
+V	231015104752Z		1DD9AF5415359961C578D1B98BFA6E9F	unknown	/CN=Bozidar Proevski
diff --git a/roles/ca/files/CA/issued/Arne Oslebo.crt b/roles/ca/files/CA/issued/Arne Oslebo.crt
new file mode 100644
index 0000000000000000000000000000000000000000..4baf981ca39d7c8e6270b7823a40dd9e1661d9c3
--- /dev/null
+++ b/roles/ca/files/CA/issued/Arne Oslebo.crt	
@@ -0,0 +1,84 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            a7:21:79:43:dd:d1:14:5b:c6:f6:8c:ba:36:2c:b3:5b
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:52 2020 GMT
+            Not After : Oct 15 10:47:52 2023 GMT
+        Subject: CN=Arne Oslebo
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:ce:4c:02:19:21:6e:1c:f2:ed:93:d8:fd:bc:1a:
+                    a4:c2:11:3b:e1:55:73:e5:26:92:d3:d9:e8:a6:dd:
+                    7d:a2:1d:be:6a:7c:64:06:39:60:33:38:7d:6a:ca:
+                    89:9d:e5:11:58:21:69:f3:3a:88:5e:ea:e5:2e:e1:
+                    9d:bb:00:1f:59:19:69:4f:6b:32:3d:2f:1a:da:95:
+                    3d:99:95:53:9f:b2:ea:db:13:48:63:2d:4a:dc:0c:
+                    4b:a6:1c:4c:62:e2:d0:11:25:67:cb:80:52:02:e8:
+                    f8:3b:3c:eb:cb:f4:71:03:5a:be:d9:a0:49:fe:d1:
+                    72:fe:4f:be:e1:ac:a1:ed:a5:15:06:f4:4e:c9:06:
+                    ab:9b:92:c2:3e:b9:58:0c:f4:15:0e:04:c0:91:1b:
+                    85:73:9d:b6:97:a1:6c:70:0a:1a:a0:ce:4c:8d:ac:
+                    29:e4:c5:17:00:26:03:44:32:a8:7b:83:52:49:43:
+                    60:11:53:c8:1e:b8:eb:9f:1f:e3:13:54:81:77:c4:
+                    47:4a:2e:20:8d:48:8c:91:2e:e0:d4:e5:37:0b:5c:
+                    bb:5f:40:37:92:e9:60:3b:a0:f9:98:7f:6d:b3:20:
+                    92:3c:da:8c:f0:79:81:f2:ea:77:ba:b4:7b:06:54:
+                    75:89:77:7e:ad:08:3a:ae:1e:dc:1c:11:63:08:43:
+                    14:97
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                BA:57:27:B7:A6:72:56:05:70:2F:E2:6E:47:CA:0F:2F:C4:26:44:86
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature
+    Signature Algorithm: sha256WithRSAEncryption
+         53:30:05:cf:78:2f:0b:25:a1:64:0a:94:06:11:9b:a8:07:d3:
+         5d:4f:0c:80:78:9c:cb:8e:07:d8:21:29:68:d0:ea:43:55:3f:
+         14:18:dc:40:cc:a4:84:da:11:24:07:71:35:63:49:3e:bc:10:
+         3a:93:cd:b8:61:22:e1:43:a8:d4:c5:2b:13:e4:27:62:00:f1:
+         c8:31:d0:27:05:27:6b:0e:77:df:1b:f0:e5:6e:d9:0b:8a:9a:
+         0b:5f:97:20:2c:dd:e1:37:64:94:1a:9e:f7:a7:63:37:88:71:
+         0e:57:a2:da:10:1f:2c:a3:a9:e1:40:01:48:58:74:2e:b3:11:
+         8f:d1:21:30:49:b9:53:29:c5:92:85:85:6b:51:20:05:b4:c5:
+         af:b9:b2:9b:a3:50:1d:59:ac:fa:bf:33:57:61:f4:f1:c3:ee:
+         a2:9a:99:b2:04:de:8b:fc:d2:3c:58:38:ab:9d:d2:6d:f2:e3:
+         0c:69:a5:76:78:df:ae:c9:67:0a:97:55:3d:f0:8f:5a:5e:de:
+         e6:56:1b:4e:66:c9:34:77:97:54:d4:66:e2:24:3c:f0:43:01:
+         24:05:0c:32:a0:65:38:09:53:6c:0e:38:ea:7c:b1:d6:51:11:
+         60:8f:28:9f:ab:13:d0:75:f3:93:13:f2:1e:a4:bd:18:ae:b0:
+         0f:f6:29:d4
+-----BEGIN CERTIFICATE-----
+MIIDTzCCAjegAwIBAgIRAKcheUPd0RRbxvaMujYss1swDQYJKoZIhvcNAQELBQAw
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzUyWhcNMjMxMDE1
+MTA0NzUyWjAWMRQwEgYDVQQDDAtBcm5lIE9zbGVibzCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBAM5MAhkhbhzy7ZPY/bwapMIRO+FVc+UmktPZ6KbdfaId
+vmp8ZAY5YDM4fWrKiZ3lEVghafM6iF7q5S7hnbsAH1kZaU9rMj0vGtqVPZmVU5+y
+6tsTSGMtStwMS6YcTGLi0BElZ8uAUgLo+Ds868v0cQNavtmgSf7Rcv5PvuGsoe2l
+FQb0TskGq5uSwj65WAz0FQ4EwJEbhXOdtpehbHAKGqDOTI2sKeTFFwAmA0QyqHuD
+UklDYBFTyB64658f4xNUgXfER0ouII1IjJEu4NTlNwtcu19AN5LpYDug+Zh/bbMg
+kjzajPB5gfLqd7q0ewZUdYl3fq0IOq4e3BwRYwhDFJcCAwEAAaOBlzCBlDAJBgNV
+HRMEAjAAMB0GA1UdDgQWBBS6Vye3pnJWBXAv4m5Hyg8vxCZEhjBGBgNVHSMEPzA9
+gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9PTFMt
+Q0GCCQCKdJMmgFtCtzATBgNVHSUEDDAKBggrBgEFBQcDAjALBgNVHQ8EBAMCB4Aw
+DQYJKoZIhvcNAQELBQADggEBAFMwBc94LwsloWQKlAYRm6gH011PDIB4nMuOB9gh
+KWjQ6kNVPxQY3EDMpITaESQHcTVjST68EDqTzbhhIuFDqNTFKxPkJ2IA8cgx0CcF
+J2sOd98b8OVu2QuKmgtflyAs3eE3ZJQanvenYzeIcQ5XotoQHyyjqeFAAUhYdC6z
+EY/RITBJuVMpxZKFhWtRIAW0xa+5spujUB1ZrPq/M1dh9PHD7qKambIE3ov80jxY
+OKud0m3y4wxppXZ4367JZwqXVT3wj1pe3uZWG05myTR3l1TUZuIkPPBDASQFDDKg
+ZTgJU2wOOOp8sdZREWCPKJ+rE9B185MT8h6kvRiusA/2KdQ=
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/Bozidar Proevski.crt b/roles/ca/files/CA/issued/Bozidar Proevski.crt
new file mode 100644
index 0000000000000000000000000000000000000000..af57c1e1d395c9d3bdbf1f4c5c18458fdcc4e02d
--- /dev/null
+++ b/roles/ca/files/CA/issued/Bozidar Proevski.crt	
@@ -0,0 +1,84 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            1d:d9:af:54:15:35:99:61:c5:78:d1:b9:8b:fa:6e:9f
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:52 2020 GMT
+            Not After : Oct 15 10:47:52 2023 GMT
+        Subject: CN=Bozidar Proevski
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:9a:de:00:fd:f1:e9:b9:29:d9:58:d0:47:21:cf:
+                    4b:67:17:f7:a9:02:93:17:cf:57:5b:6f:db:26:90:
+                    30:09:0b:d9:c5:66:5e:f6:22:66:ab:48:06:aa:6c:
+                    88:b3:fd:93:45:a4:60:c9:5f:2b:6c:af:db:68:5e:
+                    27:e6:85:71:27:b7:20:52:61:df:14:1b:da:06:39:
+                    b2:21:20:4b:22:48:b7:4b:76:44:02:b1:89:5f:0e:
+                    59:22:cb:b9:c9:1e:8d:a0:ac:28:5d:e5:ae:c8:ea:
+                    cc:05:20:a2:60:11:12:8d:6d:88:0a:73:e8:7c:68:
+                    9c:48:2c:c9:a8:c6:9d:c3:3c:c1:e7:f4:07:f7:5b:
+                    6e:42:3d:3d:0f:85:6f:e2:b9:88:a9:d0:02:84:b8:
+                    19:6a:ae:13:a1:97:50:98:16:c8:0c:1b:bd:02:c8:
+                    5f:a3:2f:73:7e:25:f8:8c:e7:92:43:c7:6a:75:bc:
+                    85:ea:1c:47:28:ce:2c:9b:3a:8f:a8:07:e9:8c:8a:
+                    75:3e:c1:97:32:ce:e3:c5:ca:1e:0a:d7:3c:77:0a:
+                    d2:ab:51:c3:e5:dc:37:90:1a:35:bf:a0:4a:aa:bd:
+                    38:ef:9e:6d:f8:81:37:7f:d3:77:23:c6:5b:63:98:
+                    64:07:2f:47:fd:7d:21:2f:57:c2:d8:44:00:c2:29:
+                    22:79
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                A3:9F:29:21:E0:E5:18:E4:CB:4C:2D:7F:84:2F:AF:F2:49:F0:83:3A
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature
+    Signature Algorithm: sha256WithRSAEncryption
+         ad:cb:66:5d:b7:29:e5:19:7b:7c:ae:23:50:58:34:db:c9:79:
+         39:de:57:83:34:03:6d:bc:bf:e2:31:79:9d:2b:a2:7a:e0:c4:
+         c8:19:96:e0:20:f3:05:2a:a6:f4:b8:90:c4:ea:8d:5e:86:e1:
+         13:99:59:0f:da:c8:3d:96:0d:78:04:4f:26:9c:6a:7c:8e:50:
+         5a:30:f1:37:dc:26:99:28:35:f8:25:b9:4b:f8:d2:f0:d3:b5:
+         61:32:c9:9c:43:39:21:43:c1:de:0d:4d:8e:e5:6f:a1:58:e5:
+         01:84:d6:a5:de:88:2a:55:9f:ec:de:be:b1:13:61:33:dd:50:
+         19:89:dd:11:48:5e:c2:14:8d:69:8f:a9:43:73:80:71:8f:54:
+         ba:da:74:b4:26:ec:5b:82:88:84:90:6d:f7:58:3f:78:d3:20:
+         5b:c3:9b:82:85:b7:ef:98:12:4f:ba:e8:38:f3:8c:af:85:91:
+         66:40:fe:a9:b2:fd:d6:76:ad:70:b7:b5:33:88:64:31:97:81:
+         d9:c6:ec:47:9b:af:3f:31:c8:de:0c:cc:88:3d:b7:6f:6f:19:
+         24:f1:ae:ff:de:95:31:3f:38:e5:ed:a1:e1:e4:6b:54:1f:26:
+         b8:53:79:cf:fe:89:ba:bc:35:a1:bc:2f:8a:07:a2:eb:0d:90:
+         72:ad:8a:60
+-----BEGIN CERTIFICATE-----
+MIIDUzCCAjugAwIBAgIQHdmvVBU1mWHFeNG5i/punzANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3NTJaFw0yMzEwMTUx
+MDQ3NTJaMBsxGTAXBgNVBAMMEEJvemlkYXIgUHJvZXZza2kwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQCa3gD98em5KdlY0Echz0tnF/epApMXz1dbb9sm
+kDAJC9nFZl72ImarSAaqbIiz/ZNFpGDJXytsr9toXifmhXEntyBSYd8UG9oGObIh
+IEsiSLdLdkQCsYlfDlkiy7nJHo2grChd5a7I6swFIKJgERKNbYgKc+h8aJxILMmo
+xp3DPMHn9Af3W25CPT0PhW/iuYip0AKEuBlqrhOhl1CYFsgMG70CyF+jL3N+JfiM
+55JDx2p1vIXqHEcoziybOo+oB+mMinU+wZcyzuPFyh4K1zx3CtKrUcPl3DeQGjW/
+oEqqvTjvnm34gTd/03cjxltjmGQHL0f9fSEvV8LYRADCKSJ5AgMBAAGjgZcwgZQw
+CQYDVR0TBAIwADAdBgNVHQ4EFgQUo58pIeDlGOTLTC1/hC+v8knwgzowRgYDVR0j
+BD8wPYAUeQbKQNOfmlSu0zNN8jg+tgvzPc+hGqQYMBYxFDASBgNVBAMMC1NPQ1RP
+T0xTLUNBggkAinSTJoBbQrcwEwYDVR0lBAwwCgYIKwYBBQUHAwIwCwYDVR0PBAQD
+AgeAMA0GCSqGSIb3DQEBCwUAA4IBAQCty2ZdtynlGXt8riNQWDTbyXk53leDNANt
+vL/iMXmdK6J64MTIGZbgIPMFKqb0uJDE6o1ehuETmVkP2sg9lg14BE8mnGp8jlBa
+MPE33CaZKDX4JblL+NLw07VhMsmcQzkhQ8HeDU2O5W+hWOUBhNal3ogqVZ/s3r6x
+E2Ez3VAZid0RSF7CFI1pj6lDc4Bxj1S62nS0JuxbgoiEkG33WD940yBbw5uChbfv
+mBJPuug484yvhZFmQP6psv3Wdq1wt7UziGQxl4HZxuxHm68/McjeDMyIPbdvbxkk
+8a7/3pUxPzjl7aHh5GtUHya4U3nP/om6vDWhvC+KB6LrDZByrYpg
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-cortex.crt b/roles/ca/files/CA/issued/dsoclab-cortex.crt
new file mode 100644
index 0000000000000000000000000000000000000000..a743bd0055110d9dbad79cdcc70e2ccfe946b100
--- /dev/null
+++ b/roles/ca/files/CA/issued/dsoclab-cortex.crt
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            5d:c4:bc:49:5f:a0:76:a8:13:a4:c2:32:61:64:0d:92
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:29 2020 GMT
+            Not After : Oct 15 10:47:29 2023 GMT
+        Subject: CN=dsoclab-cortex
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:cd:09:6b:14:33:4a:47:75:5b:d3:d9:67:3b:4d:
+                    ad:1f:a7:1f:33:ab:86:b1:aa:3b:09:ab:1a:a6:fb:
+                    a0:60:04:e3:68:33:0e:85:54:d1:70:61:8a:b9:d5:
+                    d6:b5:6c:c2:b3:36:02:94:b7:1d:18:93:5f:88:81:
+                    ff:2a:f4:99:58:6d:d7:96:e2:d2:64:77:b9:74:44:
+                    3c:f0:fb:5b:0f:43:7d:38:5d:fe:b0:db:05:7a:a9:
+                    c5:10:24:75:13:c8:2d:da:69:be:e3:43:33:f0:28:
+                    30:9a:53:f8:f8:d3:10:32:35:ec:1d:87:ab:1e:2c:
+                    b5:00:7c:9f:8f:61:e0:5d:56:15:8c:46:45:09:78:
+                    02:78:10:c0:af:2f:25:6c:c2:5b:ed:5f:c1:33:0b:
+                    f8:c8:13:dc:df:c3:fc:05:90:ff:06:9e:cb:bc:1d:
+                    2b:c2:57:f2:bd:aa:22:b3:4b:f5:ca:b2:b8:00:18:
+                    f1:14:10:b8:5e:69:9f:ed:fc:04:83:d9:2e:b7:9a:
+                    8a:45:1c:54:71:8f:61:02:6a:8a:84:2f:67:df:92:
+                    3a:0c:5f:e5:b6:e7:6c:27:69:1f:5b:06:d6:7f:e6:
+                    df:ab:2f:31:a5:cd:63:32:60:c0:07:50:6c:0d:39:
+                    cb:68:ae:3c:b2:da:0f:20:06:77:2c:28:ab:3a:30:
+                    92:1b
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                9A:0E:E1:26:13:A7:12:5F:A4:F1:41:C0:09:FC:AD:EB:4E:66:C2:50
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-cortex, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         27:2e:a1:0c:8d:fb:b1:36:ff:4e:ac:00:91:75:81:4b:20:79:
+         3f:da:1c:e1:80:b9:8c:6b:60:47:a5:8c:bf:1f:34:98:61:95:
+         00:bb:79:d4:9e:c8:fb:dc:fb:6a:48:b2:69:d1:1a:04:cc:52:
+         ca:0b:48:01:3e:94:1e:68:0b:e3:4d:fa:12:c4:aa:ff:b6:5b:
+         0c:3c:80:21:fe:50:87:8a:14:3a:7d:e7:a3:5e:b6:dc:22:ba:
+         cc:97:69:00:a8:78:08:dd:66:d1:cb:ca:28:41:b9:cc:8a:6b:
+         7c:40:b7:5e:1d:a1:88:5a:b3:fd:18:77:e9:c4:48:fd:38:8f:
+         06:6e:78:0e:f1:1a:1b:b2:6c:0a:df:38:11:e3:5a:3d:2a:5b:
+         de:41:63:14:ab:25:8e:a6:9f:a8:b7:32:9e:dc:23:45:f3:6b:
+         6d:86:b7:17:b3:53:df:55:bd:cb:41:a1:b7:73:ae:21:1b:68:
+         b3:b1:0a:e5:e6:0c:2a:77:76:23:f3:87:ee:5f:0e:6d:cd:3b:
+         94:9a:6f:f2:fd:4f:2d:72:a3:21:94:55:c0:4a:6c:2b:13:e3:
+         82:13:a5:1f:82:6b:ae:6e:e2:ec:eb:7a:25:6a:f2:9e:45:d7:
+         0a:7d:75:be:9d:f7:94:6f:ce:a5:27:d6:9b:dc:d2:12:54:64:
+         09:c4:f6:a9
+-----BEGIN CERTIFICATE-----
+MIIDljCCAn6gAwIBAgIQXcS8SV+gdqgTpMIyYWQNkjANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjlaFw0yMzEwMTUx
+MDQ3MjlaMBkxFzAVBgNVBAMMDmRzb2NsYWItY29ydGV4MIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAzQlrFDNKR3Vb09lnO02tH6cfM6uGsao7Casapvug
+YATjaDMOhVTRcGGKudXWtWzCszYClLcdGJNfiIH/KvSZWG3XluLSZHe5dEQ88Ptb
+D0N9OF3+sNsFeqnFECR1E8gt2mm+40Mz8CgwmlP4+NMQMjXsHYerHiy1AHyfj2Hg
+XVYVjEZFCXgCeBDAry8lbMJb7V/BMwv4yBPc38P8BZD/Bp7LvB0rwlfyvaois0v1
+yrK4ABjxFBC4Xmmf7fwEg9kut5qKRRxUcY9hAmqKhC9n35I6DF/ltudsJ2kfWwbW
+f+bfqy8xpc1jMmDAB1BsDTnLaK48stoPIAZ3LCirOjCSGwIDAQABo4HcMIHZMAkG
+A1UdEwQCMAAwHQYDVR0OBBYEFJoO4SYTpxJfpPFBwAn8retOZsJQMEYGA1UdIwQ/
+MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
+Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
+BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1jb3J0ZXiCHmRzb2NsYWIu
+Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAJy6hDI37
+sTb/TqwAkXWBSyB5P9oc4YC5jGtgR6WMvx80mGGVALt51J7I+9z7akiyadEaBMxS
+ygtIAT6UHmgL4036EsSq/7ZbDDyAIf5Qh4oUOn3no1623CK6zJdpAKh4CN1m0cvK
+KEG5zIprfEC3Xh2hiFqz/Rh36cRI/TiPBm54DvEaG7JsCt84EeNaPSpb3kFjFKsl
+jqafqLcyntwjRfNrbYa3F7NT31W9y0Ght3OuIRtos7EK5eYMKnd2I/OH7l8Obc07
+lJpv8v1PLXKjIZRVwEpsKxPjghOlH4Jrrm7i7Ot6JWrynkXXCn11vp33lG/OpSfW
+m9zSElRkCcT2qQ==
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-haproxy.crt b/roles/ca/files/CA/issued/dsoclab-haproxy.crt
new file mode 100644
index 0000000000000000000000000000000000000000..5be39cb377745bb5bc5303c2b7d55d44877f9260
--- /dev/null
+++ b/roles/ca/files/CA/issued/dsoclab-haproxy.crt
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            d2:7b:43:cb:9b:fb:09:cf:cc:86:ef:d1:01:9a:42:fc
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:30 2020 GMT
+            Not After : Oct 15 10:47:30 2023 GMT
+        Subject: CN=dsoclab-haproxy
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:c9:c7:22:33:0b:0b:0f:a0:8c:c4:a9:81:37:bd:
+                    51:2f:47:32:fa:1b:88:45:b1:bb:11:43:3d:de:b3:
+                    70:67:d7:8b:39:5a:8f:13:fb:2f:78:08:b1:b1:32:
+                    c6:d1:0e:e4:d3:2e:3a:db:84:db:d2:65:6b:26:24:
+                    6c:d7:16:e5:a5:90:8e:02:46:13:02:0a:96:66:46:
+                    87:b7:b0:ee:56:4c:3c:d8:ae:4c:7d:ef:5b:aa:6e:
+                    01:8e:89:fe:4c:b9:de:6c:ba:e4:3f:8d:f8:d7:3a:
+                    ed:b2:29:9a:5b:ac:5a:86:66:05:f3:19:2f:59:8d:
+                    7c:8b:6a:97:1e:43:8a:36:80:b2:e9:e1:84:f6:94:
+                    bc:13:11:31:b8:d2:5a:72:ed:68:c3:b1:37:e4:5b:
+                    91:82:62:aa:13:f2:b6:e0:3a:aa:85:66:70:0a:a9:
+                    ad:5c:a7:52:ff:dc:f9:99:5e:e5:15:d5:0c:fe:cd:
+                    27:cb:98:9e:5a:69:ca:71:74:31:e6:26:df:ec:d2:
+                    42:43:b9:f3:04:8e:2c:7a:28:a6:f9:8e:ba:64:3c:
+                    69:0e:ac:f5:dc:d5:f3:2a:50:47:50:d4:8c:f5:ee:
+                    31:08:73:69:1f:ae:42:1d:52:84:5d:47:68:dd:a3:
+                    1f:07:57:ec:3e:9e:0d:23:78:16:41:bc:68:f2:4f:
+                    e9:19
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                49:DC:74:02:17:71:C3:D0:A0:64:31:9E:60:2B:B4:38:43:62:DE:98
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-haproxy, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         04:a0:71:31:d2:11:93:09:96:c8:1b:2a:31:b8:b9:34:07:ac:
+         89:cb:b0:6c:b0:f0:17:5f:18:3c:a6:96:ca:b3:fa:c7:af:40:
+         17:e1:7e:e4:dc:ee:fe:5c:dc:86:40:b7:2f:9d:c0:9e:fd:16:
+         6b:85:ab:c2:a8:63:1f:fe:03:2b:89:6a:80:c9:2e:ae:cc:3d:
+         19:75:32:0e:56:57:16:27:02:51:49:1d:b3:78:aa:57:d3:00:
+         9b:93:fe:6d:a3:37:ad:26:35:57:e1:5f:90:bf:ef:30:bc:68:
+         f3:bf:7c:59:69:4f:61:30:2d:48:66:a6:44:2a:51:63:6e:4f:
+         a7:8f:96:7e:91:b2:b2:46:bc:97:1b:01:df:c0:24:5c:b2:aa:
+         8d:20:3a:25:5d:8a:1c:84:53:0d:d4:f6:d5:81:5d:30:de:c4:
+         d7:fa:42:9c:79:68:92:56:b7:76:69:c6:c9:ad:07:47:a6:d2:
+         46:d4:a5:0c:10:a9:03:21:4d:56:40:e5:28:e3:fa:70:1b:23:
+         32:68:07:3d:d6:8a:3a:fb:6d:3b:a6:20:16:1b:09:f3:47:f0:
+         2a:4f:dc:97:86:56:37:96:42:1b:89:b8:76:1a:ab:7a:25:4e:
+         e8:62:d9:a0:3b:ec:62:72:64:64:ca:87:9c:be:0a:08:09:52:
+         ab:03:89:2b
+-----BEGIN CERTIFICATE-----
+MIIDmTCCAoGgAwIBAgIRANJ7Q8ub+wnPzIbv0QGaQvwwDQYJKoZIhvcNAQELBQAw
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzMwWhcNMjMxMDE1
+MTA0NzMwWjAaMRgwFgYDVQQDDA9kc29jbGFiLWhhcHJveHkwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQDJxyIzCwsPoIzEqYE3vVEvRzL6G4hFsbsRQz3e
+s3Bn14s5Wo8T+y94CLGxMsbRDuTTLjrbhNvSZWsmJGzXFuWlkI4CRhMCCpZmRoe3
+sO5WTDzYrkx971uqbgGOif5Mud5suuQ/jfjXOu2yKZpbrFqGZgXzGS9ZjXyLapce
+Q4o2gLLp4YT2lLwTETG40lpy7WjDsTfkW5GCYqoT8rbgOqqFZnAKqa1cp1L/3PmZ
+XuUV1Qz+zSfLmJ5aacpxdDHmJt/s0kJDufMEjix6KKb5jrpkPGkOrPXc1fMqUEdQ
+1Iz17jEIc2kfrkIdUoRdR2jdox8HV+w+ng0jeBZBvGjyT+kZAgMBAAGjgd0wgdow
+CQYDVR0TBAIwADAdBgNVHQ4EFgQUSdx0Ahdxw9CgZDGeYCu0OENi3pgwRgYDVR0j
+BD8wPYAUeQbKQNOfmlSu0zNN8jg+tgvzPc+hGqQYMBYxFDASBgNVBAMMC1NPQ1RP
+T0xTLUNBggkAinSTJoBbQrcwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
+MAsGA1UdDwQEAwIFoDA6BgNVHREEMzAxgg9kc29jbGFiLWhhcHJveHmCHmRzb2Ns
+YWIuZ240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEABKBx
+MdIRkwmWyBsqMbi5NAesicuwbLDwF18YPKaWyrP6x69AF+F+5Nzu/lzchkC3L53A
+nv0Wa4WrwqhjH/4DK4lqgMkursw9GXUyDlZXFicCUUkds3iqV9MAm5P+baM3rSY1
+V+FfkL/vMLxo8798WWlPYTAtSGamRCpRY25Pp4+WfpGyska8lxsB38AkXLKqjSA6
+JV2KHIRTDdT21YFdMN7E1/pCnHlokla3dmnGya0HR6bSRtSlDBCpAyFNVkDlKOP6
+cBsjMmgHPdaKOvttO6YgFhsJ80fwKk/cl4ZWN5ZCG4m4dhqreiVO6GLZoDvsYnJk
+ZMqHnL4KCAlSqwOJKw==
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-keycloak.crt b/roles/ca/files/CA/issued/dsoclab-keycloak.crt
new file mode 100644
index 0000000000000000000000000000000000000000..92b6893716cacfa9e7fb863ad4c4379077e7ac1e
--- /dev/null
+++ b/roles/ca/files/CA/issued/dsoclab-keycloak.crt
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            fe:75:83:de:f2:35:5a:2c:2b:ba:09:72:0b:d8:09:48
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:28 2020 GMT
+            Not After : Oct 15 10:47:28 2023 GMT
+        Subject: CN=dsoclab-keycloak
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:ea:a9:ea:6b:2f:6c:9c:9f:6d:9c:89:4e:01:ba:
+                    c6:c0:32:df:59:26:2b:95:f4:c2:3d:c8:7e:22:ce:
+                    b6:78:03:e8:22:28:81:9c:9a:a6:a7:ba:fd:05:66:
+                    a3:50:81:85:71:c1:d9:ea:bc:21:e1:5d:0a:87:7b:
+                    be:55:b0:7d:01:57:de:4c:fe:3a:c5:c9:54:77:2e:
+                    15:fc:12:07:f8:ef:9f:7b:f7:09:01:70:75:53:3b:
+                    dc:b1:0c:65:4d:49:c4:fb:1d:42:20:6f:81:45:42:
+                    d3:db:1d:4c:57:1b:1d:3b:81:39:ee:b2:cf:95:4b:
+                    29:d0:a8:39:98:d6:93:36:99:bf:c5:43:26:8d:4d:
+                    db:6d:24:3b:fc:16:76:a1:fd:6f:c6:19:11:c7:12:
+                    0d:80:16:4c:88:da:2c:09:78:3d:1b:7c:6c:ec:db:
+                    9e:01:50:5f:a3:56:7f:d4:3b:a4:26:d2:6d:42:7b:
+                    88:4e:8d:64:ed:1e:1a:0e:05:58:65:58:47:83:60:
+                    9e:b4:ed:15:ce:72:4f:a0:b5:22:dd:9f:a4:da:88:
+                    86:fe:cb:84:6e:72:3d:00:42:da:8b:85:2a:f2:ef:
+                    d7:ee:bb:85:42:ba:b9:fb:d9:9d:d2:2c:58:0f:7c:
+                    02:23:b7:46:d0:69:06:37:40:9d:58:74:89:ca:b7:
+                    12:e5
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                FD:C5:77:F8:79:AD:0A:7E:6A:A0:2E:3B:58:6A:9F:43:51:55:0B:DF
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-keycloak, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         9a:c0:35:a3:68:ec:ec:cc:c3:65:5a:bf:03:d0:ee:8d:a0:41:
+         db:6d:89:3e:97:d4:90:7d:63:8e:73:37:43:ae:9a:e2:d0:2b:
+         a7:5e:b2:88:9b:4d:8f:b6:81:bf:f6:46:a0:87:ca:77:ec:5c:
+         af:cd:6b:d8:e8:60:5a:aa:86:be:64:d5:ad:e9:1e:41:7b:6a:
+         df:01:1d:16:86:94:57:82:51:91:be:6b:d6:ae:f0:b9:8c:3d:
+         11:99:c4:93:eb:f7:fa:9e:a3:e3:f8:97:19:cf:63:55:6a:6e:
+         4f:e9:a2:64:a7:35:0d:7e:68:23:89:e1:c6:06:4b:34:67:38:
+         40:d1:81:b3:73:95:3a:3b:67:d2:5a:e4:8e:49:34:b1:ab:6f:
+         b6:60:87:ac:55:5d:f5:59:c0:d5:d3:d8:de:3b:76:c9:41:28:
+         b4:d7:23:ec:a2:3f:1d:3f:74:2e:f0:45:40:35:38:d1:06:50:
+         b2:93:45:df:de:33:5e:0b:89:86:d8:c9:14:61:1c:d2:94:21:
+         1f:bf:df:32:f0:2f:91:52:b0:08:b7:b9:c2:b7:55:2b:ca:05:
+         e4:eb:91:e1:63:45:5d:1a:6f:e8:76:07:89:e8:42:3e:ec:7b:
+         51:0e:a0:d5:8e:c3:3d:26:e3:45:b0:5b:61:d1:98:3b:c3:d4:
+         37:9f:c1:7c
+-----BEGIN CERTIFICATE-----
+MIIDmzCCAoOgAwIBAgIRAP51g97yNVosK7oJcgvYCUgwDQYJKoZIhvcNAQELBQAw
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzI4WhcNMjMxMDE1
+MTA0NzI4WjAbMRkwFwYDVQQDDBBkc29jbGFiLWtleWNsb2FrMIIBIjANBgkqhkiG
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6qnqay9snJ9tnIlOAbrGwDLfWSYrlfTCPch+
+Is62eAPoIiiBnJqmp7r9BWajUIGFccHZ6rwh4V0Kh3u+VbB9AVfeTP46xclUdy4V
+/BIH+O+fe/cJAXB1UzvcsQxlTUnE+x1CIG+BRULT2x1MVxsdO4E57rLPlUsp0Kg5
+mNaTNpm/xUMmjU3bbSQ7/BZ2of1vxhkRxxINgBZMiNosCXg9G3xs7NueAVBfo1Z/
+1DukJtJtQnuITo1k7R4aDgVYZVhHg2CetO0VznJPoLUi3Z+k2oiG/suEbnI9AELa
+i4Uq8u/X7ruFQrq5+9md0ixYD3wCI7dG0GkGN0CdWHSJyrcS5QIDAQABo4HeMIHb
+MAkGA1UdEwQCMAAwHQYDVR0OBBYEFP3Fd/h5rQp+aqAuO1hqn0NRVQvfMEYGA1Ud
+IwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NU
+T09MUy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD
+AjALBgNVHQ8EBAMCBaAwOwYDVR0RBDQwMoIQZHNvY2xhYi1rZXljbG9ha4IeZHNv
+Y2xhYi5nbjQtMy13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQCa
+wDWjaOzszMNlWr8D0O6NoEHbbYk+l9SQfWOOczdDrpri0CunXrKIm02PtoG/9kag
+h8p37FyvzWvY6GBaqoa+ZNWt6R5Be2rfAR0WhpRXglGRvmvWrvC5jD0RmcST6/f6
+nqPj+JcZz2NVam5P6aJkpzUNfmgjieHGBks0ZzhA0YGzc5U6O2fSWuSOSTSxq2+2
+YIesVV31WcDV09jeO3bJQSi01yPsoj8dP3Qu8EVANTjRBlCyk0Xf3jNeC4mG2MkU
+YRzSlCEfv98y8C+RUrAIt7nCt1UrygXk65HhY0VdGm/odgeJ6EI+7HtRDqDVjsM9
+JuNFsFth0Zg7w9Q3n8F8
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-kibana.crt b/roles/ca/files/CA/issued/dsoclab-kibana.crt
new file mode 100644
index 0000000000000000000000000000000000000000..f47839f66eda87805afce110cf5d0c2e136e8abe
--- /dev/null
+++ b/roles/ca/files/CA/issued/dsoclab-kibana.crt
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            7d:fc:33:45:75:73:e8:f1:60:94:a7:4e:6b:2f:23:f1
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:27 2020 GMT
+            Not After : Oct 15 10:47:27 2023 GMT
+        Subject: CN=dsoclab-kibana
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:ce:4f:c9:0f:84:4d:4e:7b:dc:11:90:c9:49:a8:
+                    f3:60:44:a8:25:1b:59:83:64:0b:d1:e0:bc:59:50:
+                    22:a5:f5:88:7a:c8:40:65:e4:22:3d:77:d2:8f:9e:
+                    30:17:80:5e:20:85:bc:70:67:61:cb:d8:e2:9f:9a:
+                    7c:7b:a6:e8:4e:79:7b:cd:86:6e:26:52:37:45:b6:
+                    ab:b7:6f:40:8f:7a:55:8b:d1:91:cc:21:6f:55:37:
+                    50:3b:72:1f:2d:3b:bf:75:47:91:88:6a:1c:ea:39:
+                    dd:8b:25:31:55:0e:bc:52:6f:bf:0b:96:ef:e3:12:
+                    5c:da:63:22:54:e5:b3:95:8b:02:9e:57:3e:7b:4f:
+                    a0:f5:6f:07:a8:5b:45:7c:cb:34:83:77:34:a5:b1:
+                    ff:05:12:88:8f:cc:c4:05:5d:e9:e7:7d:2b:12:fa:
+                    bb:4d:25:f4:f7:04:e7:95:06:95:ea:a9:c4:75:4e:
+                    f7:03:67:2d:9c:9a:f4:01:f6:2a:8d:6c:6d:d0:59:
+                    a9:ce:1f:12:b1:76:39:c8:07:d4:20:73:1e:f3:9c:
+                    b9:67:83:3b:a8:7c:6e:fb:86:ea:3f:6a:8e:98:4c:
+                    39:a9:d1:4d:be:9f:0a:43:49:1b:fd:09:67:b6:62:
+                    71:fd:87:9a:63:25:00:aa:c7:a1:4d:23:12:e3:56:
+                    0f:6f
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                50:F3:7D:4F:B2:8C:A5:09:FD:64:CB:C1:97:F1:F8:49:C8:6B:30:4D
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-kibana, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         ae:be:82:6f:6d:e6:c4:cb:c3:2a:d9:d6:ee:11:52:a6:de:89:
+         9e:31:a3:e2:86:07:e9:d1:fe:95:c9:a2:38:90:df:05:ff:e5:
+         99:27:e8:d8:55:00:8a:85:b3:15:a5:e5:5b:ce:4e:4f:01:3b:
+         74:a4:b2:09:fc:6e:95:92:94:2f:76:0d:c7:97:1b:78:c1:08:
+         1e:3a:0e:fa:a6:ab:db:1e:22:26:86:39:f4:bb:89:a1:a1:d1:
+         55:f6:c3:ff:9b:a5:eb:1b:6a:84:8a:1d:3c:5f:7c:03:0d:08:
+         42:6f:d7:14:86:61:38:66:65:f7:c2:86:68:db:81:e9:41:0f:
+         82:cf:bb:be:fd:d7:94:48:cc:f8:cf:4a:40:ce:33:c4:75:51:
+         00:7e:c7:93:f6:3b:92:c1:5e:8a:ce:5f:2c:c2:f4:fe:ec:77:
+         9e:ea:30:d9:53:ee:f9:b9:fd:50:f5:6b:92:1c:57:d2:e0:f3:
+         05:d8:79:a9:63:16:13:09:cf:5f:39:dc:ec:43:e4:65:45:43:
+         65:e4:7c:39:a3:a2:81:47:ab:8f:57:a9:89:9d:56:4b:77:b1:
+         04:c8:9c:54:d2:5c:28:f5:d3:66:ae:9a:9c:a5:91:c7:eb:20:
+         69:fb:58:99:c7:5e:be:ec:4a:7a:62:09:fe:3b:30:f2:4a:d7:
+         1d:f9:0b:c3
+-----BEGIN CERTIFICATE-----
+MIIDljCCAn6gAwIBAgIQffwzRXVz6PFglKdOay8j8TANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjdaFw0yMzEwMTUx
+MDQ3MjdaMBkxFzAVBgNVBAMMDmRzb2NsYWIta2liYW5hMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAzk/JD4RNTnvcEZDJSajzYESoJRtZg2QL0eC8WVAi
+pfWIeshAZeQiPXfSj54wF4BeIIW8cGdhy9jin5p8e6boTnl7zYZuJlI3Rbart29A
+j3pVi9GRzCFvVTdQO3IfLTu/dUeRiGoc6jndiyUxVQ68Um+/C5bv4xJc2mMiVOWz
+lYsCnlc+e0+g9W8HqFtFfMs0g3c0pbH/BRKIj8zEBV3p530rEvq7TSX09wTnlQaV
+6qnEdU73A2ctnJr0AfYqjWxt0Fmpzh8SsXY5yAfUIHMe85y5Z4M7qHxu+4bqP2qO
+mEw5qdFNvp8KQ0kb/QlntmJx/YeaYyUAqsehTSMS41YPbwIDAQABo4HcMIHZMAkG
+A1UdEwQCMAAwHQYDVR0OBBYEFFDzfU+yjKUJ/WTLwZfx+EnIazBNMEYGA1UdIwQ/
+MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
+Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
+BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1raWJhbmGCHmRzb2NsYWIu
+Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEArr6Cb23m
+xMvDKtnW7hFSpt6JnjGj4oYH6dH+lcmiOJDfBf/lmSfo2FUAioWzFaXlW85OTwE7
+dKSyCfxulZKUL3YNx5cbeMEIHjoO+qar2x4iJoY59LuJoaHRVfbD/5ul6xtqhIod
+PF98Aw0IQm/XFIZhOGZl98KGaNuB6UEPgs+7vv3XlEjM+M9KQM4zxHVRAH7Hk/Y7
+ksFeis5fLML0/ux3nuow2VPu+bn9UPVrkhxX0uDzBdh5qWMWEwnPXznc7EPkZUVD
+ZeR8OaOigUerj1epiZ1WS3exBMicVNJcKPXTZq6anKWRx+sgaftYmcdevuxKemIJ
+/jsw8krXHfkLww==
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-misp.crt b/roles/ca/files/CA/issued/dsoclab-misp.crt
new file mode 100644
index 0000000000000000000000000000000000000000..f83010441e252486cc934677a1e0a0de1ebe2328
--- /dev/null
+++ b/roles/ca/files/CA/issued/dsoclab-misp.crt
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            75:87:fc:e4:cf:3e:c6:81:17:19:90:76:b1:2c:d5:d2
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:28 2020 GMT
+            Not After : Oct 15 10:47:28 2023 GMT
+        Subject: CN=dsoclab-misp
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:cf:b1:1b:e7:a2:ae:70:81:71:a5:57:46:14:2e:
+                    47:64:89:4e:bd:7d:f0:82:2d:03:19:d6:87:44:b3:
+                    42:bf:72:78:03:cc:91:98:5b:36:42:14:55:e2:82:
+                    16:12:58:60:54:44:8f:15:f6:1b:1f:76:36:22:2e:
+                    e8:ac:d3:3c:0a:df:46:c7:f1:04:bc:3a:bf:fe:4b:
+                    8f:2a:53:83:e3:50:82:06:09:fc:2a:fa:fe:94:a0:
+                    7b:7f:c2:3e:0b:3e:dc:72:b8:94:10:0a:0b:90:fd:
+                    45:76:29:85:52:bf:0f:20:43:78:fe:3b:d3:49:20:
+                    8f:9a:a5:0c:89:bb:0e:97:f2:67:b0:2d:f0:17:53:
+                    25:a6:9b:4b:64:0e:72:8a:bf:c9:e3:8e:41:bb:ed:
+                    f3:33:6a:55:5f:8d:52:84:fa:a3:67:1a:7b:71:fb:
+                    90:f1:5f:61:df:44:ea:0b:77:88:f2:e5:c1:83:71:
+                    58:c7:58:8a:9b:39:45:59:4e:e0:db:16:b6:96:72:
+                    90:8c:ee:c2:13:75:ea:15:c6:6b:e2:dc:3a:de:c8:
+                    07:de:18:84:2d:96:b6:c4:4c:e1:4a:4d:13:6f:6c:
+                    9a:1d:e5:f9:6f:cc:7e:1b:4a:3a:75:1a:b9:37:b0:
+                    6d:a0:1b:69:35:f1:b6:e6:c2:a5:d3:56:d3:57:c7:
+                    0e:8b
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                65:C5:56:88:65:AF:77:F1:53:B2:71:5E:16:10:D1:0B:30:FF:28:BE
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-misp, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         5a:57:76:90:fd:a5:0d:ea:b0:22:c9:02:2e:18:91:81:04:d1:
+         f4:64:58:58:19:27:03:9b:5a:dc:de:6c:0e:fb:b7:76:eb:b1:
+         97:36:e2:c7:76:ef:7d:d8:00:c3:20:c0:3d:a7:cf:61:f8:16:
+         4c:96:4c:7c:c8:89:21:d6:d4:eb:3a:c1:3d:98:34:74:6e:39:
+         81:20:6f:9b:4b:8d:b9:35:60:c5:76:19:30:30:06:0f:89:b1:
+         1a:f6:c4:88:52:28:98:41:52:f1:9a:77:82:79:ae:c9:71:ba:
+         d9:e5:e9:b7:ba:08:32:59:eb:5e:7d:11:e0:a8:27:20:91:46:
+         05:56:1e:e6:0b:4d:49:17:52:7f:4b:c4:a3:e0:cd:30:bd:4e:
+         6a:70:2a:f5:77:4d:d1:d6:64:13:8d:4b:1a:d3:0b:0f:8a:49:
+         1e:bf:b4:c0:4f:43:dc:92:e3:c0:f2:2f:4a:c8:30:45:fc:5a:
+         d2:de:92:b2:a1:48:b8:da:ff:f4:0b:04:5d:5d:a7:30:d8:4b:
+         ca:cf:0c:01:6a:50:45:5f:d4:a8:cf:dd:fa:f7:68:0c:4c:45:
+         47:be:3a:c2:39:bb:04:ff:62:a0:bc:91:a0:f2:2b:67:09:89:
+         5a:ff:e6:53:c1:89:18:12:a1:0f:5a:d7:e1:12:8b:88:88:89:
+         ca:b0:30:27
+-----BEGIN CERTIFICATE-----
+MIIDkjCCAnqgAwIBAgIQdYf85M8+xoEXGZB2sSzV0jANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjhaFw0yMzEwMTUx
+MDQ3MjhaMBcxFTATBgNVBAMMDGRzb2NsYWItbWlzcDCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBAM+xG+eirnCBcaVXRhQuR2SJTr198IItAxnWh0SzQr9y
+eAPMkZhbNkIUVeKCFhJYYFREjxX2Gx92NiIu6KzTPArfRsfxBLw6v/5LjypTg+NQ
+ggYJ/Cr6/pSge3/CPgs+3HK4lBAKC5D9RXYphVK/DyBDeP4700kgj5qlDIm7Dpfy
+Z7At8BdTJaabS2QOcoq/yeOOQbvt8zNqVV+NUoT6o2cae3H7kPFfYd9E6gt3iPLl
+wYNxWMdYips5RVlO4NsWtpZykIzuwhN16hXGa+LcOt7IB94YhC2WtsRM4UpNE29s
+mh3l+W/MfhtKOnUauTewbaAbaTXxtubCpdNW01fHDosCAwEAAaOB2jCB1zAJBgNV
+HRMEAjAAMB0GA1UdDgQWBBRlxVaIZa938VOycV4WENELMP8ovjBGBgNVHSMEPzA9
+gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9PTFMt
+Q0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCwYD
+VR0PBAQDAgWgMDcGA1UdEQQwMC6CDGRzb2NsYWItbWlzcIIeZHNvY2xhYi5nbjQt
+My13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQBaV3aQ/aUN6rAi
+yQIuGJGBBNH0ZFhYGScDm1rc3mwO+7d267GXNuLHdu992ADDIMA9p89h+BZMlkx8
+yIkh1tTrOsE9mDR0bjmBIG+bS425NWDFdhkwMAYPibEa9sSIUiiYQVLxmneCea7J
+cbrZ5em3uggyWetefRHgqCcgkUYFVh7mC01JF1J/S8Sj4M0wvU5qcCr1d03R1mQT
+jUsa0wsPikkev7TAT0PckuPA8i9KyDBF/FrS3pKyoUi42v/0CwRdXacw2EvKzwwB
+alBFX9Soz93692gMTEVHvjrCObsE/2KgvJGg8itnCYla/+ZTwYkYEqEPWtfhEouI
+iInKsDAn
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-nifi-1.crt b/roles/ca/files/CA/issued/dsoclab-nifi-1.crt
new file mode 100644
index 0000000000000000000000000000000000000000..ad6921cea4ea5b8001bf8a8586b1e446dc752e9d
--- /dev/null
+++ b/roles/ca/files/CA/issued/dsoclab-nifi-1.crt
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            01:ec:4d:ad:3e:5e:47:cf:4e:4b:98:49:59:32:b3:37
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:25 2020 GMT
+            Not After : Oct 15 10:47:25 2023 GMT
+        Subject: CN=dsoclab-nifi-1
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:c3:af:ef:b7:a1:95:47:5f:55:ea:7e:e8:d6:fd:
+                    d5:e3:19:68:2e:72:1f:90:62:a8:79:76:d8:d2:f6:
+                    51:df:71:80:37:5a:ec:7d:fb:6d:78:6e:37:fe:e5:
+                    1b:c8:d5:73:e4:c9:a5:cb:e8:4a:48:26:c6:e0:a6:
+                    5e:14:2c:90:b1:81:b2:69:31:e2:44:85:97:f5:60:
+                    12:88:06:9d:8d:cf:4a:a2:77:b3:d9:ff:f3:41:40:
+                    4c:21:e1:73:8d:98:82:2f:37:27:0c:24:d8:67:bd:
+                    c7:05:50:40:c5:a9:d0:e4:3f:bb:0c:72:29:7c:be:
+                    06:01:96:03:b8:a0:42:c4:6f:6f:da:aa:17:34:5f:
+                    5e:f3:73:0e:77:b5:7a:9a:59:e3:3c:d1:39:50:17:
+                    2f:53:18:05:82:34:29:1b:19:56:2e:c2:db:24:79:
+                    51:0f:a8:d9:66:3c:72:1e:a0:f7:03:d6:e9:e5:c6:
+                    b9:be:94:e4:84:bd:cd:93:26:eb:3b:17:bb:cd:e5:
+                    58:25:f2:28:35:a4:b1:70:df:32:54:85:f6:3c:20:
+                    9f:88:8b:5d:83:a2:c4:1e:31:d9:a1:76:1d:2e:3c:
+                    f8:78:64:a4:dd:3a:b2:56:65:bf:a8:2a:a8:ed:62:
+                    c9:62:2c:72:bd:9d:7e:6b:1f:80:ea:bc:33:60:47:
+                    d3:0f
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                87:9A:8D:12:3A:69:8D:89:98:F6:95:D0:F2:ED:C3:DC:ED:A0:22:12
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-nifi-1, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         8d:23:38:a7:aa:d0:58:03:f2:98:19:da:62:c6:55:cb:d5:c5:
+         05:dd:55:c5:f9:41:46:ec:75:06:be:0a:0b:7b:0f:ac:10:dd:
+         86:bf:4f:6e:05:c1:7b:c1:1d:1c:ce:c7:f0:a9:0c:6e:79:fe:
+         c2:49:18:d5:5d:4a:ae:c8:d8:ab:ec:45:95:94:c1:8b:30:da:
+         52:1a:42:3c:41:77:65:9e:8a:63:f5:52:c2:71:b7:e2:56:43:
+         bd:89:3a:fa:14:bd:d7:7a:b2:60:43:82:c0:df:4a:e0:a7:02:
+         fd:d7:f6:56:9a:0f:ad:f4:ee:00:06:fb:75:b9:96:63:c8:b3:
+         75:1f:c6:9d:3b:9d:1a:29:cd:09:f0:80:31:5c:4e:97:62:91:
+         73:84:aa:11:cc:4b:00:15:a1:92:62:2a:6b:d4:d6:4c:ed:a5:
+         89:fe:12:c9:d1:0b:48:b8:97:26:e4:5b:ab:da:fe:2d:54:ca:
+         55:23:8b:22:7f:a1:12:4a:21:3e:9e:bb:48:d6:82:b6:a2:cc:
+         83:15:5d:5f:c7:52:a1:01:01:70:60:3f:64:b4:1d:85:4f:56:
+         b7:67:77:b8:ea:59:7a:85:ce:e3:4a:e1:d6:2f:e0:b2:60:44:
+         3a:08:3a:b5:0e:fc:88:ad:e5:a1:f1:a8:79:37:c4:52:02:f0:
+         5b:05:94:0e
+-----BEGIN CERTIFICATE-----
+MIIDljCCAn6gAwIBAgIQAexNrT5eR89OS5hJWTKzNzANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjVaFw0yMzEwMTUx
+MDQ3MjVaMBkxFzAVBgNVBAMMDmRzb2NsYWItbmlmaS0xMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAw6/vt6GVR19V6n7o1v3V4xloLnIfkGKoeXbY0vZR
+33GAN1rsfftteG43/uUbyNVz5Mmly+hKSCbG4KZeFCyQsYGyaTHiRIWX9WASiAad
+jc9Konez2f/zQUBMIeFzjZiCLzcnDCTYZ73HBVBAxanQ5D+7DHIpfL4GAZYDuKBC
+xG9v2qoXNF9e83MOd7V6mlnjPNE5UBcvUxgFgjQpGxlWLsLbJHlRD6jZZjxyHqD3
+A9bp5ca5vpTkhL3NkybrOxe7zeVYJfIoNaSxcN8yVIX2PCCfiItdg6LEHjHZoXYd
+Ljz4eGSk3TqyVmW/qCqo7WLJYixyvZ1+ax+A6rwzYEfTDwIDAQABo4HcMIHZMAkG
+A1UdEwQCMAAwHQYDVR0OBBYEFIeajRI6aY2JmPaV0PLtw9ztoCISMEYGA1UdIwQ/
+MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
+Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
+BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1uaWZpLTGCHmRzb2NsYWIu
+Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAjSM4p6rQ
+WAPymBnaYsZVy9XFBd1VxflBRux1Br4KC3sPrBDdhr9PbgXBe8EdHM7H8KkMbnn+
+wkkY1V1KrsjYq+xFlZTBizDaUhpCPEF3ZZ6KY/VSwnG34lZDvYk6+hS913qyYEOC
+wN9K4KcC/df2VpoPrfTuAAb7dbmWY8izdR/GnTudGinNCfCAMVxOl2KRc4SqEcxL
+ABWhkmIqa9TWTO2lif4SydELSLiXJuRbq9r+LVTKVSOLIn+hEkohPp67SNaCtqLM
+gxVdX8dSoQEBcGA/ZLQdhU9Wt2d3uOpZeoXO40rh1i/gsmBEOgg6tQ78iK3lofGo
+eTfEUgLwWwWUDg==
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-nifi-2.crt b/roles/ca/files/CA/issued/dsoclab-nifi-2.crt
new file mode 100644
index 0000000000000000000000000000000000000000..56a67ac49f381e3f9c9db191d4b79dbbdeb58fc2
--- /dev/null
+++ b/roles/ca/files/CA/issued/dsoclab-nifi-2.crt
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            8b:69:05:5f:85:86:ce:dd:21:66:0b:24:93:41:26:60
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:25 2020 GMT
+            Not After : Oct 15 10:47:25 2023 GMT
+        Subject: CN=dsoclab-nifi-2
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:ac:b7:4b:e2:d5:87:7f:8e:15:9b:cf:c0:17:eb:
+                    db:8c:e3:1b:83:c0:69:b9:06:91:a0:9b:c6:35:dc:
+                    2f:e8:8c:72:28:50:02:82:c5:b1:eb:da:d9:e3:9d:
+                    95:d2:d9:dd:e1:08:35:6d:83:73:95:98:ba:19:fd:
+                    3e:04:67:9a:09:37:45:79:d3:1d:0b:ec:0a:43:cb:
+                    b8:24:cc:68:5c:ce:2e:ae:db:48:d8:6e:5a:f3:31:
+                    be:87:28:86:76:8e:8f:8d:68:95:1f:72:6c:65:4a:
+                    fc:9e:b8:7d:e2:83:e2:3d:b0:30:5d:c1:73:06:ae:
+                    9b:f7:9a:54:b8:02:6b:82:90:11:08:3f:d6:5f:59:
+                    5c:df:aa:25:59:c0:67:7a:fc:e1:f0:c9:4a:8b:e0:
+                    31:b6:53:13:c2:bf:8c:4f:3a:e6:ed:11:30:a6:41:
+                    26:ad:56:8f:03:0b:ad:87:6c:b2:73:c4:2e:41:3e:
+                    99:1a:b6:29:6d:e0:dc:af:8f:45:6e:d5:69:17:0d:
+                    f1:58:a6:7e:8c:80:32:72:24:21:d2:e9:b4:44:23:
+                    f6:10:8f:9f:64:7f:ef:e6:ab:f1:43:94:d0:8a:97:
+                    0e:e4:91:bd:86:b9:1f:42:f4:96:39:85:05:26:ed:
+                    90:01:91:11:a3:1f:04:5b:46:ff:1b:a9:74:77:db:
+                    18:03
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                1F:5E:EF:0E:58:69:FD:21:93:48:19:98:81:48:13:2E:FC:31:61:0C
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-nifi-2, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         21:2d:9b:f7:0c:74:cd:d4:30:b1:42:5b:32:98:d8:ef:9f:a9:
+         9b:1b:f0:54:67:c3:20:5b:f1:87:4d:ff:e4:a5:db:af:eb:34:
+         8a:b3:fa:d6:14:4a:3c:31:11:8f:09:b0:af:25:39:5a:5e:89:
+         32:cf:c7:48:68:f3:14:72:a0:35:15:ec:76:c7:bb:a7:5b:0c:
+         d5:7e:5b:8c:d8:40:a2:5e:fa:f8:f2:cf:dd:56:65:7e:94:ef:
+         b4:99:25:ba:9f:78:94:7d:54:0c:83:b9:cf:b8:b4:9d:78:6d:
+         62:e3:6c:98:1f:40:b9:35:3c:51:b5:9f:82:7b:1e:77:db:25:
+         f2:71:df:3d:e9:56:93:86:fe:61:48:4f:db:76:5b:5f:b1:96:
+         f9:46:72:5e:01:80:87:b5:be:b4:00:3b:37:7f:5e:44:d4:7e:
+         c5:87:ed:40:6b:9e:f4:ca:1b:b0:4b:84:97:1f:07:0f:7c:8b:
+         d2:7b:b1:3d:a7:f8:ae:39:07:34:50:41:70:1f:07:ba:a6:a2:
+         0d:ca:e5:7b:d4:77:2c:95:4d:16:0c:34:e0:a5:59:7f:43:c7:
+         a0:dd:a0:f0:ed:75:5a:0f:61:76:52:34:ef:7c:a7:21:e4:de:
+         3a:24:cd:39:b6:77:3a:c8:f3:1f:09:2b:80:9a:f0:5d:7f:5e:
+         73:9d:73:eb
+-----BEGIN CERTIFICATE-----
+MIIDlzCCAn+gAwIBAgIRAItpBV+Fhs7dIWYLJJNBJmAwDQYJKoZIhvcNAQELBQAw
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzI1WhcNMjMxMDE1
+MTA0NzI1WjAZMRcwFQYDVQQDDA5kc29jbGFiLW5pZmktMjCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBAKy3S+LVh3+OFZvPwBfr24zjG4PAabkGkaCbxjXc
+L+iMcihQAoLFseva2eOdldLZ3eEINW2Dc5WYuhn9PgRnmgk3RXnTHQvsCkPLuCTM
+aFzOLq7bSNhuWvMxvocohnaOj41olR9ybGVK/J64feKD4j2wMF3Bcwaum/eaVLgC
+a4KQEQg/1l9ZXN+qJVnAZ3r84fDJSovgMbZTE8K/jE865u0RMKZBJq1WjwMLrYds
+snPELkE+mRq2KW3g3K+PRW7VaRcN8VimfoyAMnIkIdLptEQj9hCPn2R/7+ar8UOU
+0IqXDuSRvYa5H0L0ljmFBSbtkAGREaMfBFtG/xupdHfbGAMCAwEAAaOB3DCB2TAJ
+BgNVHRMEAjAAMB0GA1UdDgQWBBQfXu8OWGn9IZNIGZiBSBMu/DFhDDBGBgNVHSME
+PzA9gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9P
+TFMtQ0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
+CwYDVR0PBAQDAgWgMDkGA1UdEQQyMDCCDmRzb2NsYWItbmlmaS0ygh5kc29jbGFi
+LmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBACEtm/cM
+dM3UMLFCWzKY2O+fqZsb8FRnwyBb8YdN/+Sl26/rNIqz+tYUSjwxEY8JsK8lOVpe
+iTLPx0ho8xRyoDUV7HbHu6dbDNV+W4zYQKJe+vjyz91WZX6U77SZJbqfeJR9VAyD
+uc+4tJ14bWLjbJgfQLk1PFG1n4J7HnfbJfJx3z3pVpOG/mFIT9t2W1+xlvlGcl4B
+gIe1vrQAOzd/XkTUfsWH7UBrnvTKG7BLhJcfBw98i9J7sT2n+K45BzRQQXAfB7qm
+og3K5XvUdyyVTRYMNOClWX9Dx6DdoPDtdVoPYXZSNO98pyHk3jokzTm2dzrI8x8J
+K4Ca8F1/XnOdc+s=
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-nifi-3.crt b/roles/ca/files/CA/issued/dsoclab-nifi-3.crt
new file mode 100644
index 0000000000000000000000000000000000000000..796e826426e3266b0a221d1c60110c897892b308
--- /dev/null
+++ b/roles/ca/files/CA/issued/dsoclab-nifi-3.crt
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            59:69:91:8f:10:ef:8d:2b:ae:46:b2:6d:6d:62:9d:8e
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:26 2020 GMT
+            Not After : Oct 15 10:47:26 2023 GMT
+        Subject: CN=dsoclab-nifi-3
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:a7:48:a0:d3:ab:1e:8c:49:60:8b:b8:bd:9a:aa:
+                    5c:09:62:01:79:89:c9:e5:5f:30:64:38:ca:f1:95:
+                    2d:48:20:81:ef:60:aa:6f:d1:ef:b4:ac:89:8e:e9:
+                    f5:16:7d:64:07:b0:3b:75:c3:e1:e1:15:71:64:60:
+                    8f:15:8e:16:8b:de:b8:97:79:a7:83:19:77:5b:aa:
+                    36:82:37:b9:51:a7:95:b5:1f:ac:9d:81:c6:ec:fb:
+                    14:3a:84:77:1e:9c:dd:3c:06:30:a1:5e:d0:8f:b0:
+                    c9:5a:13:ad:0e:56:57:bc:1d:3f:be:d7:4c:4b:37:
+                    a2:88:72:4d:1a:62:88:08:a0:57:bb:20:ce:7e:af:
+                    b7:72:f2:ee:86:1a:b1:28:3b:41:f4:d3:ea:14:74:
+                    90:e1:33:41:1a:92:e2:2e:ec:d3:20:60:60:61:d6:
+                    fc:0e:3f:57:43:88:5f:10:29:20:51:40:46:ed:5d:
+                    9f:d1:5a:e7:4b:52:f4:d4:23:60:4a:22:a7:92:6c:
+                    d4:cb:20:01:a6:b9:53:71:7a:71:02:e1:05:72:41:
+                    a5:42:9f:41:47:2c:30:7e:0c:b1:73:cc:f7:63:60:
+                    27:3f:3d:36:93:14:aa:7e:12:ed:1b:f1:cb:4d:e8:
+                    7c:32:20:50:f5:2d:7d:06:0a:93:cf:7a:85:2b:0b:
+                    a6:b1
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                C9:B8:02:23:C4:2E:F5:FE:C9:34:45:77:33:0D:89:CE:D9:A3:30:2A
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-nifi-3, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         32:20:b3:1c:e1:c9:a4:19:75:14:32:1b:cd:c2:83:59:49:07:
+         e3:b8:62:73:ec:4e:69:cb:9b:49:0d:f5:d0:ea:8b:b6:de:3e:
+         76:03:c4:e8:68:0f:01:96:aa:40:b2:1e:99:06:d2:75:f5:31:
+         ec:b7:93:e6:1b:b0:ab:7e:1b:1d:65:46:6d:9f:ac:97:ed:55:
+         53:ca:53:00:5a:ca:c5:83:48:c3:2a:51:db:e7:e7:e1:40:4a:
+         bf:b2:9d:d4:71:d4:54:84:2b:4b:d4:a2:22:73:95:e1:62:51:
+         ce:e3:e2:f6:24:dd:40:08:07:01:6f:ee:27:3e:fc:17:1d:1f:
+         30:da:7f:37:78:7e:b8:af:d8:2c:d9:48:84:92:be:4e:8e:a7:
+         b8:e6:9f:d4:91:5d:44:c9:8b:82:9f:13:eb:d5:2c:00:fa:ef:
+         d6:49:ff:92:0d:83:22:57:45:4a:ac:b6:5e:a2:c6:c1:73:ff:
+         f5:dd:a7:d8:79:9a:a7:96:33:b4:51:17:7f:80:6e:3b:52:a8:
+         61:53:ae:08:1f:02:5a:0c:5b:37:3c:3a:36:ee:74:e2:9e:df:
+         df:01:b5:f6:d0:b8:fa:58:79:53:fd:70:9e:54:c3:6c:68:a7:
+         3f:b0:e4:20:a6:a8:2f:87:5a:8a:08:01:41:de:35:ed:5e:85:
+         ae:dd:e0:3e
+-----BEGIN CERTIFICATE-----
+MIIDljCCAn6gAwIBAgIQWWmRjxDvjSuuRrJtbWKdjjANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjZaFw0yMzEwMTUx
+MDQ3MjZaMBkxFzAVBgNVBAMMDmRzb2NsYWItbmlmaS0zMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAp0ig06sejElgi7i9mqpcCWIBeYnJ5V8wZDjK8ZUt
+SCCB72Cqb9HvtKyJjun1Fn1kB7A7dcPh4RVxZGCPFY4Wi964l3mngxl3W6o2gje5
+UaeVtR+snYHG7PsUOoR3HpzdPAYwoV7Qj7DJWhOtDlZXvB0/vtdMSzeiiHJNGmKI
+CKBXuyDOfq+3cvLuhhqxKDtB9NPqFHSQ4TNBGpLiLuzTIGBgYdb8Dj9XQ4hfECkg
+UUBG7V2f0VrnS1L01CNgSiKnkmzUyyABprlTcXpxAuEFckGlQp9BRywwfgyxc8z3
+Y2AnPz02kxSqfhLtG/HLTeh8MiBQ9S19BgqTz3qFKwumsQIDAQABo4HcMIHZMAkG
+A1UdEwQCMAAwHQYDVR0OBBYEFMm4AiPELvX+yTRFdzMNic7ZozAqMEYGA1UdIwQ/
+MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
+Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
+BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1uaWZpLTOCHmRzb2NsYWIu
+Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAMiCzHOHJ
+pBl1FDIbzcKDWUkH47hic+xOacubSQ310OqLtt4+dgPE6GgPAZaqQLIemQbSdfUx
+7LeT5huwq34bHWVGbZ+sl+1VU8pTAFrKxYNIwypR2+fn4UBKv7Kd1HHUVIQrS9Si
+InOV4WJRzuPi9iTdQAgHAW/uJz78Fx0fMNp/N3h+uK/YLNlIhJK+To6nuOaf1JFd
+RMmLgp8T69UsAPrv1kn/kg2DIldFSqy2XqLGwXP/9d2n2Hmap5YztFEXf4BuO1Ko
+YVOuCB8CWgxbNzw6Nu504p7f3wG19tC4+lh5U/1wnlTDbGinP7DkIKaoL4daiggB
+Qd417V6Frt3gPg==
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-odfe-1.crt b/roles/ca/files/CA/issued/dsoclab-odfe-1.crt
new file mode 100644
index 0000000000000000000000000000000000000000..71baad05685f6d498afb76ee0ce3c737cb475275
--- /dev/null
+++ b/roles/ca/files/CA/issued/dsoclab-odfe-1.crt
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            97:d2:d0:cf:23:00:c0:a9:66:d1:03:ca:89:a9:92:12
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:26 2020 GMT
+            Not After : Oct 15 10:47:26 2023 GMT
+        Subject: CN=dsoclab-odfe-1
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:e5:46:f6:71:ce:a2:3f:61:5e:9b:f3:c6:61:88:
+                    87:99:0a:ac:b8:e8:9d:3c:5f:8c:60:2b:41:5b:36:
+                    fb:39:0a:6f:a1:16:02:31:ac:0d:bd:0e:ff:95:59:
+                    d8:f1:21:6b:bd:96:d6:7b:79:01:d1:65:1c:ca:09:
+                    22:50:30:01:ea:ed:b4:29:bf:b4:70:25:db:b3:1d:
+                    e9:73:ed:63:93:02:4c:90:22:04:6d:31:74:31:ae:
+                    85:3c:12:8d:b3:f6:92:2f:de:75:75:8f:ca:a5:f2:
+                    a2:12:94:fb:e8:73:30:37:f1:7c:b5:4e:59:ab:71:
+                    73:26:80:9a:46:8d:49:94:b0:09:e5:27:10:34:9d:
+                    c0:53:3b:fa:77:2e:06:c0:73:8e:0f:9a:1e:8c:27:
+                    32:0c:eb:f2:d2:0c:a7:52:48:c6:ee:12:21:15:e3:
+                    45:30:89:81:63:7f:bf:0a:5b:d1:05:c8:1c:fc:5f:
+                    bb:b8:82:2a:92:3b:3a:ae:19:9d:e9:a7:62:7c:0a:
+                    f2:c2:2a:e6:a8:d4:9b:0a:a8:a2:5a:ec:e5:a3:1a:
+                    73:e0:83:3d:d2:e8:74:a9:0b:b0:e4:b0:fd:fe:ad:
+                    1e:57:e8:0d:20:7c:aa:1f:31:69:b5:0d:8c:3f:1c:
+                    8d:dc:d3:71:5b:f1:04:6a:ae:b9:2d:a8:be:28:11:
+                    f5:4b
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                DB:92:49:8B:D9:27:41:85:16:AE:C9:CA:F6:8D:11:53:8B:EE:B0:5E
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-odfe-1, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         0f:83:fb:ba:2a:0d:aa:14:3f:3f:0b:00:be:f9:37:f4:7f:29:
+         1e:21:4e:18:07:e0:ae:e1:84:f7:cf:a1:21:a5:36:ba:77:6c:
+         0c:00:11:d5:7d:d8:31:b3:f5:cc:fd:6b:27:8f:99:5f:99:4c:
+         57:88:d0:1a:e7:66:6b:8a:fd:d1:01:e3:88:37:91:8c:7b:e9:
+         e2:22:dd:80:62:64:9e:22:e7:25:b5:b9:89:45:e4:24:f5:19:
+         c0:5d:10:50:57:80:66:23:0c:b1:8e:bd:b3:f1:fa:95:7e:6f:
+         04:d1:da:c2:e8:a1:b2:55:55:66:3a:bc:5b:71:50:8c:a8:56:
+         86:f4:a9:9c:c7:4b:d6:91:73:8e:a9:93:ef:e0:85:5e:5c:53:
+         ae:b3:a7:a4:31:80:f3:b3:e4:03:ad:da:96:f0:14:7b:25:e4:
+         ff:68:9b:8f:28:cd:fc:94:05:5f:38:80:84:d6:f5:d4:b7:bd:
+         43:79:bd:fb:f2:ce:30:73:01:e8:ee:ad:45:4a:ea:88:3f:d1:
+         a2:ef:22:f5:49:cc:d4:27:22:3c:bc:1f:50:81:58:5a:65:9d:
+         d6:14:3b:3f:b2:8f:90:35:2b:e7:1a:9b:58:db:96:06:9b:cf:
+         44:0b:f5:9f:aa:57:28:3c:ab:70:fa:bc:93:90:d9:94:d7:fe:
+         6f:fe:39:2a
+-----BEGIN CERTIFICATE-----
+MIIDlzCCAn+gAwIBAgIRAJfS0M8jAMCpZtEDyompkhIwDQYJKoZIhvcNAQELBQAw
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzI2WhcNMjMxMDE1
+MTA0NzI2WjAZMRcwFQYDVQQDDA5kc29jbGFiLW9kZmUtMTCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBAOVG9nHOoj9hXpvzxmGIh5kKrLjonTxfjGArQVs2
++zkKb6EWAjGsDb0O/5VZ2PEha72W1nt5AdFlHMoJIlAwAerttCm/tHAl27Md6XPt
+Y5MCTJAiBG0xdDGuhTwSjbP2ki/edXWPyqXyohKU++hzMDfxfLVOWatxcyaAmkaN
+SZSwCeUnEDSdwFM7+ncuBsBzjg+aHownMgzr8tIMp1JIxu4SIRXjRTCJgWN/vwpb
+0QXIHPxfu7iCKpI7Oq4ZnemnYnwK8sIq5qjUmwqoolrs5aMac+CDPdLodKkLsOSw
+/f6tHlfoDSB8qh8xabUNjD8cjdzTcVvxBGquuS2ovigR9UsCAwEAAaOB3DCB2TAJ
+BgNVHRMEAjAAMB0GA1UdDgQWBBTbkkmL2SdBhRauycr2jRFTi+6wXjBGBgNVHSME
+PzA9gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9P
+TFMtQ0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
+CwYDVR0PBAQDAgWgMDkGA1UdEQQyMDCCDmRzb2NsYWItb2RmZS0xgh5kc29jbGFi
+LmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBAA+D+7oq
+DaoUPz8LAL75N/R/KR4hThgH4K7hhPfPoSGlNrp3bAwAEdV92DGz9cz9ayePmV+Z
+TFeI0BrnZmuK/dEB44g3kYx76eIi3YBiZJ4i5yW1uYlF5CT1GcBdEFBXgGYjDLGO
+vbPx+pV+bwTR2sLoobJVVWY6vFtxUIyoVob0qZzHS9aRc46pk+/ghV5cU66zp6Qx
+gPOz5AOt2pbwFHsl5P9om48ozfyUBV84gITW9dS3vUN5vfvyzjBzAejurUVK6og/
+0aLvIvVJzNQnIjy8H1CBWFplndYUOz+yj5A1K+cam1jblgabz0QL9Z+qVyg8q3D6
+vJOQ2ZTX/m/+OSo=
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-odfe-2.crt b/roles/ca/files/CA/issued/dsoclab-odfe-2.crt
new file mode 100644
index 0000000000000000000000000000000000000000..a648174921d6bb3ffe09aaffedfee1e442fccce6
--- /dev/null
+++ b/roles/ca/files/CA/issued/dsoclab-odfe-2.crt
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            56:0a:99:c5:a0:3f:c4:b9:fc:92:fd:c6:2f:41:9b:b9
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:27 2020 GMT
+            Not After : Oct 15 10:47:27 2023 GMT
+        Subject: CN=dsoclab-odfe-2
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:c7:a5:e1:3f:e0:a3:22:69:f1:b4:15:5e:b9:3c:
+                    db:d7:44:bb:d9:c7:69:94:5b:c1:7d:a3:34:4d:3e:
+                    88:0a:e2:8f:2e:d3:98:94:ae:b4:1f:49:a3:fd:4b:
+                    27:16:70:ab:03:ab:cd:4c:02:2a:7b:ed:3a:ff:49:
+                    49:2e:3b:88:f6:59:85:26:de:37:b4:47:9e:1c:be:
+                    a3:38:8e:b0:22:6b:ca:c5:12:e5:be:40:9c:57:7a:
+                    4d:02:0c:db:13:c5:9d:d2:85:df:99:57:32:90:37:
+                    54:08:16:46:01:54:da:0c:77:31:63:39:46:27:88:
+                    3f:f4:ad:4e:e6:fd:0a:3e:9d:98:9a:53:98:90:be:
+                    9b:ee:e3:b2:91:c7:7f:3f:a1:b9:62:f8:7a:1e:cc:
+                    b4:23:ed:82:a0:5c:ad:86:7b:50:53:c9:ec:57:04:
+                    44:1c:12:f6:33:3f:68:42:f8:b7:2f:25:91:1c:aa:
+                    b0:df:17:6b:ed:6d:cc:6d:a7:d6:b7:07:6b:61:a5:
+                    16:51:9f:02:07:ad:b2:42:42:ca:0b:b1:2e:c1:6e:
+                    94:2d:3e:5e:88:48:8f:b6:8b:15:b0:48:8e:35:58:
+                    ea:b5:90:9c:fb:5a:fa:f5:c7:27:b7:11:30:7a:cb:
+                    36:7c:4f:ea:52:00:47:40:e9:f0:ca:67:63:32:e0:
+                    33:73
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                E6:41:BE:4B:A2:E1:07:EF:2A:FD:16:A7:B6:68:3D:0F:81:F5:15:80
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-odfe-2, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         84:64:d0:92:f6:96:07:be:f1:52:f6:49:15:cd:d0:99:ea:ca:
+         7f:06:a8:d2:68:e3:8e:c3:a3:a9:2d:f2:b7:4a:74:75:9f:02:
+         b4:6f:77:14:ec:89:f9:a3:b5:35:c8:f2:ad:50:df:24:05:d3:
+         0a:a8:49:be:19:de:fc:84:a4:61:af:ff:c0:2c:f7:8b:11:87:
+         34:10:e3:dc:9b:d2:b8:66:0a:f7:3f:05:11:37:41:09:9f:3d:
+         f3:a1:97:b7:62:64:db:5a:46:d9:5a:7a:c8:f7:79:e4:f8:61:
+         2e:5c:e8:82:8d:fc:0e:8d:a4:4f:fd:33:f1:76:0e:8d:21:f4:
+         00:5a:e1:a6:96:21:e0:bb:e4:e6:35:8e:b6:61:49:8a:f2:c1:
+         25:96:cf:c0:f6:e0:0a:0b:75:b5:d5:6c:be:ad:0c:a8:4b:33:
+         44:72:cc:ef:5f:db:09:e7:b9:6e:60:80:7d:02:e9:ab:06:81:
+         24:d3:9d:c3:de:f9:a1:f1:f7:77:ee:6d:49:ab:13:72:c6:62:
+         39:b2:80:32:07:20:51:a3:3e:1a:cf:b9:3a:bc:e3:a1:58:33:
+         22:6f:68:a9:e9:33:0b:8d:24:72:ea:e3:75:68:a3:69:11:a8:
+         2d:86:ed:f2:00:74:d6:d4:ab:fc:30:3f:68:6b:b6:d3:61:30:
+         51:84:09:da
+-----BEGIN CERTIFICATE-----
+MIIDljCCAn6gAwIBAgIQVgqZxaA/xLn8kv3GL0GbuTANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjdaFw0yMzEwMTUx
+MDQ3MjdaMBkxFzAVBgNVBAMMDmRzb2NsYWItb2RmZS0yMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAx6XhP+CjImnxtBVeuTzb10S72cdplFvBfaM0TT6I
+CuKPLtOYlK60H0mj/UsnFnCrA6vNTAIqe+06/0lJLjuI9lmFJt43tEeeHL6jOI6w
+ImvKxRLlvkCcV3pNAgzbE8Wd0oXfmVcykDdUCBZGAVTaDHcxYzlGJ4g/9K1O5v0K
+Pp2YmlOYkL6b7uOykcd/P6G5Yvh6Hsy0I+2CoFythntQU8nsVwREHBL2Mz9oQvi3
+LyWRHKqw3xdr7W3MbafWtwdrYaUWUZ8CB62yQkLKC7EuwW6ULT5eiEiPtosVsEiO
+NVjqtZCc+1r69ccntxEwess2fE/qUgBHQOnwymdjMuAzcwIDAQABo4HcMIHZMAkG
+A1UdEwQCMAAwHQYDVR0OBBYEFOZBvkui4QfvKv0Wp7ZoPQ+B9RWAMEYGA1UdIwQ/
+MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
+Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
+BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1vZGZlLTKCHmRzb2NsYWIu
+Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAhGTQkvaW
+B77xUvZJFc3QmerKfwao0mjjjsOjqS3yt0p0dZ8CtG93FOyJ+aO1NcjyrVDfJAXT
+CqhJvhne/ISkYa//wCz3ixGHNBDj3JvSuGYK9z8FETdBCZ8986GXt2Jk21pG2Vp6
+yPd55PhhLlzogo38Do2kT/0z8XYOjSH0AFrhppYh4Lvk5jWOtmFJivLBJZbPwPbg
+Cgt1tdVsvq0MqEszRHLM71/bCee5bmCAfQLpqwaBJNOdw975ofH3d+5tSasTcsZi
+ObKAMgcgUaM+Gs+5OrzjoVgzIm9oqekzC40kcurjdWijaRGoLYbt8gB01tSr/DA/
+aGu202EwUYQJ2g==
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-thehive.crt b/roles/ca/files/CA/issued/dsoclab-thehive.crt
new file mode 100644
index 0000000000000000000000000000000000000000..0d474c2a1277de93ba6357ca841a7eac3b1cce44
--- /dev/null
+++ b/roles/ca/files/CA/issued/dsoclab-thehive.crt
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            61:09:5c:2c:8d:35:ee:29:1c:99:ce:ab:d4:2b:3c:a4
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:29 2020 GMT
+            Not After : Oct 15 10:47:29 2023 GMT
+        Subject: CN=dsoclab-thehive
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:ba:c5:4d:20:a4:60:b7:61:21:ed:16:a1:6f:72:
+                    c4:de:a1:00:c0:ef:fc:5d:a1:89:34:07:15:d2:b4:
+                    3a:14:b8:95:75:8e:81:71:49:46:1d:c8:81:cb:f1:
+                    ec:c7:5a:12:f6:89:60:e4:c8:98:1a:61:c8:2d:12:
+                    8f:73:ee:f8:9d:88:b5:7f:30:70:97:29:b4:ab:43:
+                    2d:dc:db:a7:10:47:c7:b5:26:9b:11:85:fb:d3:27:
+                    8f:3a:55:bc:ea:78:17:b8:89:10:a3:a4:10:60:39:
+                    c3:7f:42:25:a9:fe:84:7f:38:5e:f4:3d:c3:98:3d:
+                    56:b9:ba:81:06:55:8d:65:12:f0:4e:23:88:1d:98:
+                    0c:2f:6e:4f:67:fd:4e:67:39:91:b9:01:52:12:aa:
+                    9e:bb:7a:c8:ea:8f:4a:2d:18:f8:69:9a:3a:a0:c8:
+                    6e:e3:de:c6:db:be:4c:59:e0:cf:bc:34:4f:2c:b0:
+                    ef:3e:82:5a:df:68:be:b8:fb:cc:5f:6a:f2:3e:66:
+                    d4:c6:c5:f6:0b:67:e9:64:85:15:87:60:6f:dc:b4:
+                    5b:13:6f:b0:9b:f8:f3:da:c1:91:9e:81:5f:16:ca:
+                    9e:14:01:c1:1c:ce:2a:d3:c8:3c:0f:be:b1:37:aa:
+                    c9:08:68:2b:de:f9:44:6c:1e:90:a4:12:bc:f5:3c:
+                    46:bd
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                5B:08:8E:F2:1B:8F:12:03:BA:31:02:9C:CE:CC:BC:9F:FC:19:D1:E1
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-thehive, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         7f:b2:fa:33:d6:e3:6c:57:8a:4a:9a:ef:8b:81:2b:df:f3:d6:
+         fb:8c:bc:02:cf:71:54:a0:f2:0d:ae:3b:30:cf:5c:69:d7:d0:
+         aa:cc:16:80:4d:9d:c8:1f:a7:98:9d:26:dc:ae:8e:24:2b:bc:
+         c1:11:a6:8d:4f:ca:13:1f:7f:8f:4c:ef:dd:46:df:d6:97:0a:
+         88:51:4e:f7:46:aa:3d:e3:70:e9:19:e8:9f:7e:22:fa:b6:38:
+         30:00:0a:94:38:09:bf:b8:64:6c:c1:b7:05:6d:4f:f3:27:0c:
+         df:04:ef:a1:4e:e8:2d:4c:06:d0:c0:4f:4f:da:d0:6d:b8:f2:
+         b3:79:18:63:bd:62:83:53:55:38:94:d9:64:ca:e7:4d:71:ce:
+         d1:05:6d:b1:6c:fb:1a:4c:b6:ef:70:2b:3d:9b:1d:66:d8:d9:
+         9f:f0:e5:48:29:50:e8:1b:1a:fb:b4:d2:5e:38:ec:05:45:c2:
+         e7:de:9a:9d:aa:34:67:c5:66:18:e3:86:8b:0c:1a:c4:21:20:
+         7e:b7:ad:e2:0b:d0:0d:d4:76:e6:53:ca:77:bc:ce:d0:9b:7b:
+         7c:fd:42:94:da:63:d8:a7:52:d2:45:f2:d5:55:ef:37:f1:a5:
+         0e:ba:29:c9:b4:ce:99:45:04:21:2b:86:27:bb:c1:f2:86:9a:
+         7c:51:5c:3b
+-----BEGIN CERTIFICATE-----
+MIIDmDCCAoCgAwIBAgIQYQlcLI017ikcmc6r1Cs8pDANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjlaFw0yMzEwMTUx
+MDQ3MjlaMBoxGDAWBgNVBAMMD2Rzb2NsYWItdGhlaGl2ZTCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBALrFTSCkYLdhIe0WoW9yxN6hAMDv/F2hiTQHFdK0
+OhS4lXWOgXFJRh3Igcvx7MdaEvaJYOTImBphyC0Sj3Pu+J2ItX8wcJcptKtDLdzb
+pxBHx7UmmxGF+9MnjzpVvOp4F7iJEKOkEGA5w39CJan+hH84XvQ9w5g9Vrm6gQZV
+jWUS8E4jiB2YDC9uT2f9Tmc5kbkBUhKqnrt6yOqPSi0Y+GmaOqDIbuPextu+TFng
+z7w0Tyyw7z6CWt9ovrj7zF9q8j5m1MbF9gtn6WSFFYdgb9y0WxNvsJv489rBkZ6B
+XxbKnhQBwRzOKtPIPA++sTeqyQhoK975RGwekKQSvPU8Rr0CAwEAAaOB3TCB2jAJ
+BgNVHRMEAjAAMB0GA1UdDgQWBBRbCI7yG48SA7oxApzOzLyf/BnR4TBGBgNVHSME
+PzA9gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9P
+TFMtQ0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
+CwYDVR0PBAQDAgWgMDoGA1UdEQQzMDGCD2Rzb2NsYWItdGhlaGl2ZYIeZHNvY2xh
+Yi5nbjQtMy13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQB/svoz
+1uNsV4pKmu+LgSvf89b7jLwCz3FUoPINrjswz1xp19CqzBaATZ3IH6eYnSbcro4k
+K7zBEaaNT8oTH3+PTO/dRt/WlwqIUU73Rqo943DpGeiffiL6tjgwAAqUOAm/uGRs
+wbcFbU/zJwzfBO+hTugtTAbQwE9P2tBtuPKzeRhjvWKDU1U4lNlkyudNcc7RBW2x
+bPsaTLbvcCs9mx1m2Nmf8OVIKVDoGxr7tNJeOOwFRcLn3pqdqjRnxWYY44aLDBrE
+ISB+t63iC9AN1HbmU8p3vM7Qm3t8/UKU2mPYp1LSRfLVVe838aUOuinJtM6ZRQQh
+K4Ynu8Hyhpp8UVw7
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/CA/openssl-easyrsa.cnf b/roles/ca/files/CA/openssl-easyrsa.cnf
new file mode 100644
index 0000000000000000000000000000000000000000..11394147697414e4d5fac6329cfdc8210ab98d8a
--- /dev/null
+++ b/roles/ca/files/CA/openssl-easyrsa.cnf
@@ -0,0 +1,140 @@
+# For use with Easy-RSA 3.1 and OpenSSL or LibreSSL
+
+RANDFILE		= $ENV::EASYRSA_PKI/.rnd
+
+####################################################################
+[ ca ]
+default_ca	= CA_default		# The default ca section
+
+####################################################################
+[ CA_default ]
+
+dir		= $ENV::EASYRSA_PKI	# Where everything is kept
+certs		= $dir			# Where the issued certs are kept
+crl_dir		= $dir			# Where the issued crl are kept
+database	= $dir/index.txt	# database index file.
+new_certs_dir	= $dir/certs_by_serial	# default place for new certs.
+
+certificate	= $dir/ca.crt	 	# The CA certificate
+serial		= $dir/serial 		# The current serial number
+crl		= $dir/crl.pem 		# The current CRL
+private_key	= $dir/private/ca.key	# The private key
+RANDFILE	= $dir/.rand		# private random number file
+
+x509_extensions	= basic_exts		# The extentions to add to the cert
+
+# This allows a V2 CRL. Ancient browsers don't like it, but anything Easy-RSA
+# is designed for will. In return, we get the Issuer attached to CRLs.
+crl_extensions	= crl_ext
+
+default_days	= $ENV::EASYRSA_CERT_EXPIRE	# how long to certify for
+default_crl_days= $ENV::EASYRSA_CRL_DAYS	# how long before next CRL
+default_md	= $ENV::EASYRSA_DIGEST		# use public key default MD
+preserve	= no			# keep passed DN ordering
+
+# This allows to renew certificates which have not been revoked
+unique_subject	= no
+
+# A few difference way of specifying how similar the request should look
+# For type CA, the listed attributes must be the same, and the optional
+# and supplied fields are just that :-)
+policy		= policy_anything
+
+# For the 'anything' policy, which defines allowed DN fields
+[ policy_anything ]
+countryName		= optional
+stateOrProvinceName	= optional
+localityName		= optional
+organizationName	= optional
+organizationalUnitName	= optional
+commonName		= supplied
+name			= optional
+emailAddress		= optional
+
+####################################################################
+# Easy-RSA request handling
+# We key off $DN_MODE to determine how to format the DN
+[ req ]
+default_bits		= $ENV::EASYRSA_KEY_SIZE
+default_keyfile 	= privkey.pem
+default_md		= $ENV::EASYRSA_DIGEST
+distinguished_name	= $ENV::EASYRSA_DN
+x509_extensions		= easyrsa_ca	# The extentions to add to the self signed cert
+
+# A placeholder to handle the $EXTRA_EXTS feature:
+#%EXTRA_EXTS%	# Do NOT remove or change this line as $EXTRA_EXTS support requires it
+
+####################################################################
+# Easy-RSA DN (Subject) handling
+
+# Easy-RSA DN for cn_only support:
+[ cn_only ]
+commonName		= Common Name (eg: your user, host, or server name)
+commonName_max		= 64
+commonName_default	= $ENV::EASYRSA_REQ_CN
+
+# Easy-RSA DN for org support:
+[ org ]
+countryName			= Country Name (2 letter code)
+countryName_default		= $ENV::EASYRSA_REQ_COUNTRY
+countryName_min			= 2
+countryName_max			= 2
+
+stateOrProvinceName		= State or Province Name (full name)
+stateOrProvinceName_default	= $ENV::EASYRSA_REQ_PROVINCE
+
+localityName			= Locality Name (eg, city)
+localityName_default		= $ENV::EASYRSA_REQ_CITY
+
+0.organizationName		= Organization Name (eg, company)
+0.organizationName_default	= $ENV::EASYRSA_REQ_ORG
+
+organizationalUnitName		= Organizational Unit Name (eg, section)
+organizationalUnitName_default	= $ENV::EASYRSA_REQ_OU
+
+commonName			= Common Name (eg: your user, host, or server name)
+commonName_max			= 64
+commonName_default		= $ENV::EASYRSA_REQ_CN
+
+emailAddress			= Email Address
+emailAddress_default		= $ENV::EASYRSA_REQ_EMAIL
+emailAddress_max		= 64
+
+####################################################################
+# Easy-RSA cert extension handling
+
+# This section is effectively unused as the main script sets extensions
+# dynamically. This core section is left to support the odd usecase where
+# a user calls openssl directly.
+[ basic_exts ]
+basicConstraints	= CA:FALSE
+subjectKeyIdentifier	= hash
+authorityKeyIdentifier	= keyid,issuer:always
+
+# The Easy-RSA CA extensions
+[ easyrsa_ca ]
+
+# PKIX recommendations:
+
+subjectKeyIdentifier=hash
+authorityKeyIdentifier=keyid:always,issuer:always
+
+# This could be marked critical, but it's nice to support reading by any
+# broken clients who attempt to do so.
+basicConstraints = CA:true
+
+# Limit key usage to CA tasks. If you really want to use the generated pair as
+# a self-signed cert, comment this out.
+keyUsage = cRLSign, keyCertSign
+
+# nsCertType omitted by default. Let's try to let the deprecated stuff die.
+# nsCertType = sslCA
+
+# CRL extensions.
+[ crl_ext ]
+
+# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
+
+# issuerAltName=issuer:copy
+authorityKeyIdentifier=keyid:always,issuer:always
+
diff --git a/roles/ca/files/CA/private/Arne Oslebo.key b/roles/ca/files/CA/private/Arne Oslebo.key
new file mode 100644
index 0000000000000000000000000000000000000000..677703bcfe457628ee511c934138eb469254b706
--- /dev/null
+++ b/roles/ca/files/CA/private/Arne Oslebo.key	
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDOTAIZIW4c8u2T
+2P28GqTCETvhVXPlJpLT2eim3X2iHb5qfGQGOWAzOH1qyomd5RFYIWnzOohe6uUu
+4Z27AB9ZGWlPazI9LxralT2ZlVOfsurbE0hjLUrcDEumHExi4tARJWfLgFIC6Pg7
+POvL9HEDWr7ZoEn+0XL+T77hrKHtpRUG9E7JBqubksI+uVgM9BUOBMCRG4VznbaX
+oWxwChqgzkyNrCnkxRcAJgNEMqh7g1JJQ2ARU8geuOufH+MTVIF3xEdKLiCNSIyR
+LuDU5TcLXLtfQDeS6WA7oPmYf22zIJI82ozweYHy6ne6tHsGVHWJd36tCDquHtwc
+EWMIQxSXAgMBAAECggEAe0rx9hMEvEhztOj6vHEwBsxF/WYU3d8v4W1anl/BtiIQ
+q5OsNAwWcoZQboKdvMAqnYFa0QMqfY/laR9uJVTtZ1LIna5zWB3O7tRC/IdCcy97
+LXNYz+1B0EGI9L306SSlNZolbnpCiXqy4LSIOFzfLiIN7gLeNmz3TQZcDoQeQuhT
+SA42/6EW1GFWWlFjqFy/W9X9VY3AHZAuf4M9Sv5YK6L7w8dwv190F/JXZz/7z0ad
+ElDfUh09xqsfvFhqvAzpWkGglhh6Ns9DGfH4bueoHZ0gF3nbdLxfpPp4eyRv/Ox4
+Ozf0E0snyJPG2N93Pluks5BKnC8yYYAvGo6hE2/wAQKBgQD2nrK2XCvh36uQIhGe
+iGIzRFGeeKB4jt4ZAM45PryrzBqtXMnndV8V4WoZkPRl5D8/HmoeMVbA6Bb1zdLy
+SDLs/U0IquMe8K6QR+F+wjWFLebu+aNaPsKnu8fJOVmDmNGReX7q3thTja+rcSDA
+5h5dEi9viM0OsRl2Xf5zLuzUSQKBgQDWJLDem/cV7vyrB3r60EeVSY9pwj0AD7oZ
+Tbcx2DuibP6ojvsDpUDbh3nuIlu69jRO0kl0rdCVnoWu3eaerDtFKd8EUsoQJv9B
+CV+rD4xoNa/1C+1DggIyAcTrAGxTS+Z/qsgVBy1YGLWtdaqg1TZI47F7m+fVtZRZ
+BMgW8lLh3wKBgQCRltRHxZf+Sw28E/C01yypuT45wFpzcVv6BLi5oKi+/soM6Acl
+heuxPhZlq2YsNJeFyo2470WYsirDx1MtxqORtmNgp4lW/Zz//f9H1pzD13pKP8NI
+hl5hqQBjcWC/yFqHd+MOAqpQgQdgvXMpjXAFX7PzMx5i+vfeIdUR6HTVSQKBgQCR
+fVAljjVrU3mbAXQOX9+ij9297tfe6NB5TJHAbbbmfcLu5mWobmgIPp0aq4FDHu8e
+9kQt38GtRYxx6BU9jKqgLPh2SYE7RCN8HlA/Okscqg0oIbhLe1LegtE1EI6IcTLj
+XjaeAshN6EvW0/DfYLyG/RuibaQvUDS/3j3LSUwCZQKBgGbI4n8JyQx0N5N7seLH
+E874B33QrURfoZqm1Pu03jWzzupzIL3Li+osgS/IAeh2tscCifaWX4eop973NGUe
+FfSGoQal+iQStVoEhKG79k5q3Yut8YFNt0Oy6tYrl7rWm5kSdok97u10lylPJKJY
+jryMaRsmZMcFRwby70+VtnoW
+-----END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/Arne Oslebo.p12 b/roles/ca/files/CA/private/Arne Oslebo.p12
new file mode 100644
index 0000000000000000000000000000000000000000..273c8018b7bed8f691d9e9c24f5fa9d6425a0e79
Binary files /dev/null and b/roles/ca/files/CA/private/Arne Oslebo.p12 differ
diff --git a/roles/ca/files/CA/private/Bozidar Proevski.key b/roles/ca/files/CA/private/Bozidar Proevski.key
new file mode 100644
index 0000000000000000000000000000000000000000..8a141bb9744a155880cb97a7512e228c251611f2
--- /dev/null
+++ b/roles/ca/files/CA/private/Bozidar Proevski.key	
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCa3gD98em5KdlY
+0Echz0tnF/epApMXz1dbb9smkDAJC9nFZl72ImarSAaqbIiz/ZNFpGDJXytsr9to
+XifmhXEntyBSYd8UG9oGObIhIEsiSLdLdkQCsYlfDlkiy7nJHo2grChd5a7I6swF
+IKJgERKNbYgKc+h8aJxILMmoxp3DPMHn9Af3W25CPT0PhW/iuYip0AKEuBlqrhOh
+l1CYFsgMG70CyF+jL3N+JfiM55JDx2p1vIXqHEcoziybOo+oB+mMinU+wZcyzuPF
+yh4K1zx3CtKrUcPl3DeQGjW/oEqqvTjvnm34gTd/03cjxltjmGQHL0f9fSEvV8LY
+RADCKSJ5AgMBAAECggEABfbe2ujiM3tlH4KF+stdAA9wPlYXDCe0GZVpP0b2UqLe
+NDgJGDmi8p3Hg/DCIwx1C42VHKxJo9nx/UcDCmHBReJLoGCcks2vy+WU8qmnux5J
+0OIxJFlqDPske66U7SX8FmAK/fLGlH5WdSwYlNKTgFbjkmN8ZK4ytqTi71kW4ln5
+VUlXPd9FYlHc29u4qXJeaRLj9PIz/6FxYl0Ub13dXV8hfVEG8JaeosFjOhZqpgLg
+t1oNaPrKBywYvJ1P+PKfX7lsFV6dllpaosP1j0OEjAVZ3USOAyVgMHmKqqvCynlg
+IuKKF169bsJAb02KKtz1RMY3/Tao3VboHIGSNFSM8QKBgQDOALdl8uRaLSFHjJ6x
+UQWks+Hzs8eCC4qJ39Yj7Eqznat3GmZwc6S5/1s414VAOz8lX1S+xKLEiuxRH1kL
+etFRpGGA7XBHGI7EpRiHc4jyuzt/vMDZyA1Hh8iSsr03uDA5okVi6YWM647b/byU
+Xl9aWZzqX72RDerikpRPMvERgwKBgQDAdCar1Y3flctOl4iRatpya3PWCLVDNGTA
+88/m2DEGtwJxRdhfztNsrXIao8WkwPkvW+fnS5c6M8cXDOph3j5E56xsH4w+9vXG
++eN0/w6ci1ajZtCu6fCttwCVPBu5dzMSWAfNmnYbnnFQvzHLCV5ZbR3Z0dDMLM7o
+2gD3JdynUwKBgD+aBQWa6lnVGTNH/S7tvvpM93QQi4ZhHdLXovvQVngCNBA/vGT3
+r2IlrvprwB5GrIZTWozTlRVtduzM6ucacknsoJX3uPSaZmncNyiKyTt4BzS3CCu1
+EjSFfa2dNcJgQbNpoFablrodeCv/uRttz67LgCD0kkiYrW5qpxOUvM0VAoGBAKbx
+msIgg+tZs3y/clZCjLAIifk2oJZlkqjWVph3HUAn7NR5tBKYBUsWwg5d1oruYro0
+TVyUc+CnHaLfL0oqUXXQSf+Y9j2AWP97sVXCEti0/jjMbWXtxTvLrZPHCn296u2U
+s2AlByM6NC3JTNZFkDSetPBIU4lprSrMQV4i19/FAoGAe7iRaTkcmMZaE1cvZs2j
+Uv2TzZrXtj9MWtjxV7Tu1NrAcMV2WG4FJHxt+2V30beUrWFlg647Wo62ww2ylrze
+kyQoE0/eccfGI6z7qh8D8026xAoh7oeoLubhzFszz/dqOfJPiUv1GyzyD2m2kSvZ
+DlY3mCb9rL+6jbbXcS+7Iuw=
+-----END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/Bozidar Proevski.p12 b/roles/ca/files/CA/private/Bozidar Proevski.p12
new file mode 100644
index 0000000000000000000000000000000000000000..24010a64063a960d554cd4e895e17b9e2e62362a
Binary files /dev/null and b/roles/ca/files/CA/private/Bozidar Proevski.p12 differ
diff --git a/roles/ca/files/CA/private/ca.key b/roles/ca/files/CA/private/ca.key
new file mode 100644
index 0000000000000000000000000000000000000000..3c45faa018da0516d63a00a2604f9792344c3913
--- /dev/null
+++ b/roles/ca/files/CA/private/ca.key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEogIBAAKCAQEAtRmQxWST0ewGJIRLAfVOqrSvuNHYtyjnk8EaLCe4bz9RUI8J
+yAt+wVJVateShIEUwnF4Cx9AnbcwtUZM/gFAi8ikzhpjQqpr8jHBEnabqCNTVC5L
+9EHmFzI+ENS4dEZXamaRK99lH7FaMATz4YowFJVQB3iS744v7Z1LyPvvZ6NocdN1
+AIY0zDOfQL4mLEU9w1JHIjUpZacFfuwdqYJ6UYM7G1Rj9nIXmmkWBvQwG0Uy6wLV
+cTtFiXP8zRkqb17jsgSt9P6cBjL4TRj3nJBJUqQ32nqbgPGQ3H2ijZNJBAb8yJVK
+6WQZr7QXOQ5qXxAZUpOVCv9F0m5ShOXTqpVnNQIDAQABAoIBAFg1QJd0mq9Hx+In
+caVdh1iMM37Q7z6fNNR53LafDi1ZaNDVKs1+E9ozsRkeMOZLPQJMZEz+humK3bWd
+rUiW8YpkSyl8HtbMzVElPMYycTSfKCo7dpFdO6YWubZW9hTkYhWYKaN15vpd1vDG
+qMc1GKAd7eIFr4Pw/JU+5TfaxkvysCuih6Q6/MZwddM61eCZO6VBYMf0k94RHn0I
+gIY4hCeyJQ3RoIpzZr4XqUAGdLOvTmzPSTlqT4g7RVgsGQT1p6yG3o42kev0l+Y4
+L92dA25xWeHirWkaQLRj46tX4un67SWA8OkxwA1D49i3keIfhRjsa0d3YELmV8tG
+60l6RcECgYEA6alfHn3zGMw7npN4V/iGEwv7Y4xDcDPdlWTCQ8Btc8XanHuVxcTu
+bENrMouddeM6GI6sz7GVg4vXVyPXa0ZCBPIK61ArS8aNlmggqRd86pgQRWkgCVi2
+gXANwrV6NZNXYZ3X+glIljlRoqlNm7rH9hMQ2KwUW02Q9AdclgvpfQUCgYEAxmnM
+leiSy+s0H/0Wo+LdvpC1NaZPTML6N8cmjwH9xe2mcsGI2a8EQdfqMHE6aWTuHErj
+I3juwSDSBbPlQsf0nRku+qMuLTzsVbCVfG9NiYr5YPxdT7LnW/F/Kuxyn3mW1wgD
+WXi4DM0muRPskw6c8f604crFShSpszLTcYE12HECgYA/exlxgkxiR1JHQc9nLwjV
+8eJpaDkGKcEgjlBM8eGKm41KCDVnlpoj5akhAVdVKNemxlRi1N9G7t4hOYaUCXF0
+QIIA7jXlD1t2KnH9Hnl8jrWU9fuTLnve7J+Ab6d1GMObrLN5pb4HuijYpWCFV5ht
+3T4tb4rUR12DPuDDjxbvNQKBgGEzb4B5IYE4xp5tNGwxNgSni76urOakFkTBEYi5
+pwMR+5r4aPyLmwBOsHHu5ni/c070+PVlx0FhvMICcWwX3SQhNDyhOHv8/qK0EWeW
+d1vMc4Mp3uSudl06n9v9XeH2hQju6gUo+LF8x12f/yPD4utCpoZ++cvi94fMfH18
+mU5hAoGADsoT85//n1VPQLysZpW6FjYIp8quuGS94FAdkiQVKa7u6vO/Vy19ZxFI
+7Cub8sg+e80wGakCCEi22AN6RwJyV9R8ec8ct+K/HeNqujKoDZN6ZDQzXo0a/vgj
+BibssPr6+b3DVE+/e2qlfzjwQA+GqcSmP70fmg8tGlKbZwwBJxk=
+-----END RSA PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-cortex.key b/roles/ca/files/CA/private/dsoclab-cortex.key
new file mode 100644
index 0000000000000000000000000000000000000000..827da545bbbd7bdc9b8c8527f8dfb4b086ba5221
--- /dev/null
+++ b/roles/ca/files/CA/private/dsoclab-cortex.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDNCWsUM0pHdVvT
+2Wc7Ta0fpx8zq4axqjsJqxqm+6BgBONoMw6FVNFwYYq51da1bMKzNgKUtx0Yk1+I
+gf8q9JlYbdeW4tJkd7l0RDzw+1sPQ304Xf6w2wV6qcUQJHUTyC3aab7jQzPwKDCa
+U/j40xAyNewdh6seLLUAfJ+PYeBdVhWMRkUJeAJ4EMCvLyVswlvtX8EzC/jIE9zf
+w/wFkP8Gnsu8HSvCV/K9qiKzS/XKsrgAGPEUELheaZ/t/ASD2S63mopFHFRxj2EC
+aoqEL2ffkjoMX+W252wnaR9bBtZ/5t+rLzGlzWMyYMAHUGwNOctorjyy2g8gBncs
+KKs6MJIbAgMBAAECggEAIdhGJqV4w2bp64Rdd/qQc0Mg8WSE7VrOOABYe+vZQ0BL
+UW3sHbIsiEJxpc9Yi8YSNYba0jWPxfi9skjTGAIcNe6bwbpbRF5G7Jw++wBivZhE
+WUOawRLGSsMvVkTOVp+agg0mh1kWf7QCodbuqBQe/krMWOuGIYr7rcLki8R6Rq2d
+WuW8Kf697ciklh/6cyy1J6axe1LNT906lYvyRock246KbN517wWw7/fu47Mb2fdC
+U6beFxbmbc5vk4lrViE7gSNkY97Vr/uXW9xlyRzvpNJuzZrm00CgNF1MnOnwf3l1
+k8kc63RMkUJGVWcxo5ubzLXpv4CnnmUNPfaSx+CeUQKBgQDuUT8JOu2vfzAC2VOQ
+OfKR4NgMQ8fnK6T67zpLDeNUAGW+hBi62ewD8xxRse0j/rWXgvADBE1GplPXicZI
+Q0o0VgIiL3NFQgCP7rvtPGE9VQXHYgd+ULKCHcPEBwonlbAhiHSwVnBqSFoqWdj+
+SHiBn4AD1ARoD6WSEVi3X6UU/QKBgQDcQATvzbbcr41vQHm9u1O7v0slk306A4yY
+ItXk+GbtLEoLAiLy7n0REKybZAzniuLCDAQ1h1bWLkqRle26XqVfg3YaxGpoJODy
+gPgr2Hi4Y/lcFrwRThUHEu8eaUWVRtY3B9Rgi5VjLVqydgI3/AFWdlzIVkhBeN0w
+MOtKdEg69wKBgG+wD/TJcz8+QkfzhiAfqDkJwPbuhS8n2yfnGdC274UcspI44kYf
+f2bSdsEqu9KUupIJQWaIi5bCuKRY415Wet5QOKvAxSr+JblOzy/9jizqPc0VeiGO
+vDoSrP6ftfibRHJSuy0xNXn58pfKh9GUMTW+hIZGxNHoE1aDXqqB3qIZAoGBAIIc
+A46SDLNDtZ6CDSjrD6T6dW8GONTboeOBuK+hmlQDdN4Z7gFqp1E8c2r8aK8jmZ8e
+MCJbCA5QnFZyplQRc0oAQ/W+EEnjd0tqqrBkGbR7wqQG/iSO5tcd9UoW0DdF+Gfb
+5Tb/XkmPUmPYWKkv4q5sD5V9ewPKXYgJbgW2ubCzAoGACfaFTBM3zZ2rqjJUk8+F
+fGcuDeh/ZFk4MgcN5nbdKHwyXDhBlUY1FzLZlKi5J1lRyTInZUP8KYnXogw757Md
+oa5wPlnw0a6VSHX1ZZUwa0yz1Rrv5M5CA4vyNBENCaHELKLoRWwbAook1gFie6cV
+nrCXNbsWttgWkzqLDWkPT5M=
+-----END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-cortex.p12 b/roles/ca/files/CA/private/dsoclab-cortex.p12
new file mode 100644
index 0000000000000000000000000000000000000000..252b3e7ef466cf7a4090ab3d5c551bd8dcaf5e5f
Binary files /dev/null and b/roles/ca/files/CA/private/dsoclab-cortex.p12 differ
diff --git a/roles/ca/files/CA/private/dsoclab-haproxy.key b/roles/ca/files/CA/private/dsoclab-haproxy.key
new file mode 100644
index 0000000000000000000000000000000000000000..abcca5eaafc03ebe472bc28a09ae04de65e2fa7f
--- /dev/null
+++ b/roles/ca/files/CA/private/dsoclab-haproxy.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJxyIzCwsPoIzE
+qYE3vVEvRzL6G4hFsbsRQz3es3Bn14s5Wo8T+y94CLGxMsbRDuTTLjrbhNvSZWsm
+JGzXFuWlkI4CRhMCCpZmRoe3sO5WTDzYrkx971uqbgGOif5Mud5suuQ/jfjXOu2y
+KZpbrFqGZgXzGS9ZjXyLapceQ4o2gLLp4YT2lLwTETG40lpy7WjDsTfkW5GCYqoT
+8rbgOqqFZnAKqa1cp1L/3PmZXuUV1Qz+zSfLmJ5aacpxdDHmJt/s0kJDufMEjix6
+KKb5jrpkPGkOrPXc1fMqUEdQ1Iz17jEIc2kfrkIdUoRdR2jdox8HV+w+ng0jeBZB
+vGjyT+kZAgMBAAECggEAUcxwiNDJQySK7I7q23XcG5Z5i/rtW5OZin3/7vA/eVlg
+D3gu2KLTs42Su4siHk4zZYkwQx2xH7INpgDOPsQBhQT9DN7rhcBVCFE/Y7BObp2p
+bQ375HHMb2L5Lpeyh9gx21JIhZtAbcBt6/QBp3hPmnxxnQNwtpUtEDe923714PHD
+SfJ1Nd+mgeJ3ShPrk2jhcDdU82/mQrk5eH8M5QJqlTEWCvBgJaKhBf89T2XrX8jf
+oPzeVijOqgLg49QEtAPmI98GlE1OAp3boFx4/QA/s76pgWZhYIm1hcm1AguYhQvJ
+bi96IgdgVQQp/y7L+ix8zsq+YRxwPuCSBl+9BotYoQKBgQDm4neNC87XV4RhGuHG
+w8WpFXFe1uOucPfyfTMmjifh61GZa4aWgBQByBQxBs729MOr9TFrNApTGWPO8Lag
+ANnREyNndaUAUFgtCdY7Gc99deWyIx861aAVU7GGIFVkCo3OK0twbbyzqOj+B+H8
+c/P1tXXMayt/gPVuRDj7sq90VwKBgQDfuh6Clxa2sq0GdKsRkiDXaY8eZxJZchYw
++0MsYQjX8hPOGn0YWGy14ppE7JEPTEWSRuzCf5cwem/em8AIESgdCUWcGkgcQO5n
+DvZeXrHHpVrTmGE5xEVNYrD/NPY7VizUsyLNvn5yC4hyByWkwLV+AUGpACE3HP2s
+7xTakmmoDwKBgHKEfXuuEafptrVbWgT2cYHOKu85crDBQ5o40zgaZlm+GDkahiT7
+3fCMRseScvE2sh8GfL6Jj11sSH8KEesGwQLclUDpry+aqkGckW+6+5lk8ssKdKD/
++GjbnD/EpdX7Dh7mhoJ7S49pBjeJvWM0OBr1KDp+JZMWaaWJnSHqnO/9AoGAXvM4
+m6fP5f3y3PiK2cwwz/tm2DpaWUfID0Wz/pO4Ex4UNbacPMbabF8dpf7Ymat/I1Oi
+i/FmkxaDf/COEV5mrdwPhO7Kh+MuyuJYwThjLx4IbCERsliQKQWnpMgvcINkR2k3
+biZYt8IZSHusCD4ZSL7zxOvfLOrK5qgZK6JT4RUCgYEAk94TNC+rYRZOfOIaYA7+
+K1qTQAe8tawTBlKauXptWCzMFtMSEwozuHuxgnyAS/uRUKFMgRk00KrSvnuyGEBX
+5QxqqhBOMvGDs672q/kVZ5C9M06+y5+Zpg0Mf3r+zOBqB5tCASnl2KfOCZkAt8rV
+kyb4KyOsi81/fpVM/WeOL7w=
+-----END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-keycloak.key b/roles/ca/files/CA/private/dsoclab-keycloak.key
new file mode 100644
index 0000000000000000000000000000000000000000..8c5ebed5a514facf489a59ce2a2e487c6a0da78f
--- /dev/null
+++ b/roles/ca/files/CA/private/dsoclab-keycloak.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDqqeprL2ycn22c
+iU4BusbAMt9ZJiuV9MI9yH4izrZ4A+giKIGcmqanuv0FZqNQgYVxwdnqvCHhXQqH
+e75VsH0BV95M/jrFyVR3LhX8Egf475979wkBcHVTO9yxDGVNScT7HUIgb4FFQtPb
+HUxXGx07gTnuss+VSynQqDmY1pM2mb/FQyaNTdttJDv8Fnah/W/GGRHHEg2AFkyI
+2iwJeD0bfGzs254BUF+jVn/UO6Qm0m1Ce4hOjWTtHhoOBVhlWEeDYJ607RXOck+g
+tSLdn6TaiIb+y4Rucj0AQtqLhSry79fuu4VCurn72Z3SLFgPfAIjt0bQaQY3QJ1Y
+dInKtxLlAgMBAAECggEBAIj6HCLq8NxP15zLLSSnUQK571PLix+iWovT74UD4tEV
+frgJqvat81/vL2iqq+P/ZtSrUjfKD4DMXawOGGFOfvl8v/9zWv0+8zYKSbz1DYBK
+525mGfSkH2gxhjY2xR8jU389ae8jB3NVefLqHDiwVBT67sUdzTwZPtRUjiJgBliU
+soJCsCutHAy7GW68N79F0BQItHhjMt02fYybnFxNvBntD4lodZDn7K9iqBoZPduX
+TBsH1FcwZQyvQuiUlJgjUFM//5zrZUMjErv+3ev5c/WdpY4ycbo6VVBGZouVbyeX
+RAWeDUE1nrsEsLBSnTkXVInFjPS6mBxsIi/+hlf6XCECgYEA+bWYDKPgelSe8ii5
+mK94wcLr6MybO+GrBHT4lIP1UggGsvPtXTifNvgGrYx90gmmL6F9QWHE+4lxyh5L
+yEXCTHXl4QopgZCxWnnKekz0ma0lFlGYGr4KA0Z3Ntp+sCb/hcqVW/n24wVhNnmo
+z3ztlSI/GY3B598R7dO9sR/RoYkCgYEA8JNKbTegmeeaAyBehEPy3eajAiT6759p
+7m6Ml1P6IC3Ff3fllJrNWRi+JDKnJF9SUePOVWLWSgYSJyFLoiWK1CzoyLPdbcW9
+Ap9XNzD/aoDi6DBbKCFhRpBCsmTPnT8eFvA9PhuYY60w2UoM7byH+i2aJ1Do3izl
+tLsHJbcT230CgYEA5S4Sl/9MBlpl6xEPjh/2L7drdyVaj/IFWLjWcNBPtnMhWtrf
+joBqODQZRO09iSlL+kk3wWsvNEEoS33UxcGomy5Vxl3iTET1UXmYKPk6QVUVRc+r
+T1f9rpXc0l5kid2xBSUyQdFAE4obd7jfA1fAYfClgxmEzv//34xHfCoc5ykCgYEA
+01sD00pA3ZXc+AwzHY64y3z6D0M/9s+d+GzFNZoAsM6lqaRDXbhW2oTjX9fkgg8A
+upMiTl/kFeqZfilBUnYbLuc5qEJlMjC8KpakwAdbDk2njAgXvfz9gknxXts0j1jJ
+bauokm0aB9A7j1sAWsj8ya3QtePegnr9YDfEQr1CQ90CgYBfAQaYG9ldXcxTlERG
+jOGu0bh9DtnmwsenwTZQD4mNHpvL0MkmIQxR5FAL8XXbNBq50zCiOapLLrhdqbh0
+ih3WoOdqxLIDQtAJYs3ANhOmEAxvQPxpPKhRHRKPGXxyzgW9zeQ08GpYoR/M7VRF
+TypqufvopzWOpbxpgbfiJQmd8g==
+-----END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-keycloak.p12 b/roles/ca/files/CA/private/dsoclab-keycloak.p12
new file mode 100644
index 0000000000000000000000000000000000000000..41e7ba3a2fe1ed26a9e29ffe24a723a5812760d3
Binary files /dev/null and b/roles/ca/files/CA/private/dsoclab-keycloak.p12 differ
diff --git a/roles/ca/files/CA/private/dsoclab-kibana.key b/roles/ca/files/CA/private/dsoclab-kibana.key
new file mode 100644
index 0000000000000000000000000000000000000000..9eec2e4fa77aee5162699b82640aad24869304a8
--- /dev/null
+++ b/roles/ca/files/CA/private/dsoclab-kibana.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDOT8kPhE1Oe9wR
+kMlJqPNgRKglG1mDZAvR4LxZUCKl9Yh6yEBl5CI9d9KPnjAXgF4ghbxwZ2HL2OKf
+mnx7puhOeXvNhm4mUjdFtqu3b0CPelWL0ZHMIW9VN1A7ch8tO791R5GIahzqOd2L
+JTFVDrxSb78Llu/jElzaYyJU5bOViwKeVz57T6D1bweoW0V8yzSDdzSlsf8FEoiP
+zMQFXennfSsS+rtNJfT3BOeVBpXqqcR1TvcDZy2cmvQB9iqNbG3QWanOHxKxdjnI
+B9Qgcx7znLlngzuofG77huo/ao6YTDmp0U2+nwpDSRv9CWe2YnH9h5pjJQCqx6FN
+IxLjVg9vAgMBAAECggEBAKJC7gdeLs8Da1oFXcqpLoEQfo5wrD5CeWlgL8Ku3BFa
+wzSOOtfoTWW6z8hUyc4yD9XUWRiutqP0uIh+oFlANIVD1rMWf5t0HjSeLv/eaBBw
+Tsfg06KQyVdkYZ3fa9XPoA1FdJitnIA7cpr1bY9QP502djNPSux0jMLWJTJQVqXN
+fXykLoIvB8xIPWbJAJMgF75turJMFT3wGN+qjCzbsZqIHmqp4eaKoH4Mz+Y6SJcA
+uSzCdGKVPxHUVZbtkXn5GZXFx5YQ0wwRHJRWQ6Fn49HtKc5vBc7PN8fG18+s3DA2
+BR7MLgIaHGBKsnJgcOOZQiRCQP/uBBEIxIF0qU3h5UECgYEA6aiUvvBNcShCRaaH
+Wf5GpYTT1ANNv5+3sCTy4KKt3yCxyyn5ENEFL1i8w6/LffGIAsoLnoEcxWV/fhLy
+ZH5FzIYxlR/w2rddUyOXENx/9CWw/IhL91U9525JCJ0B0TBkZ9842ORX7kcI8+0g
+4oaC5bDYTZotAto4ftNIzmfznesCgYEA4gnREIl4nv9v28x5aUS+HhSpsH9kkVrr
+FQ0amCJSHu4U9J39MXS3Fju3rlmZG59J9ymEQ4tr0Hq3S+tsTy4hP5d67/KtoxKr
+3smyKduX6gfOmEy3TjCSc+OMebM7lX0crX2+0JCm355yDC8fxdAGxpmqYvwmVw9Q
+NbIb2mHR/40CgYEAjshlnQhbSnq/hLBupZ+srBivGS+rox2Gsizh/kNq3J6uBuhv
+Osd/0572Ot6CC0Q9SPcOgp2DZ1zOu8v4M1C2dnTKd8Y8+Gp0rQlilvsndZpSvP7M
+7Sc53OKX3puTMLHRqWfO5TskQIdIAUc2gTaRZqragxFj0App25ZhN0BurmECgYEA
+uM8L5vhu7ZitjUk17zKsOo3sW4kc4ZczY4fOOZq+B9niukm+LMRfuUbkHCHXg/UN
+lY6VPGBuqwraeLEoYei2eHbSpgKFozHt4f6Is55+K3Nsn6sBqGUgKK5gOVSon8Wm
+P9byvzW1qlmyp3GUCbjXAWO8IqhEdKPpka1pBnk6KDUCgYAhGqRGJ7NG4+Wz/0/5
+Z/IQeEsLO4lB7EuIADn9udmrYgYqv7sHDzhIUOviJPRgf2ag68LEXXZsC029famu
+/wbhD6pw1yq0QKGDcgH/LzHL9+74TqRlT7drPyOFPqOGPKtc88wL/aXRC90n7dsT
+jFEbunnLOfUUjgxXiJpNU0FtjQ==
+-----END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-kibana.p12 b/roles/ca/files/CA/private/dsoclab-kibana.p12
new file mode 100644
index 0000000000000000000000000000000000000000..f9e8737d615ab77c25857cf3b3c8eb2d77f03104
Binary files /dev/null and b/roles/ca/files/CA/private/dsoclab-kibana.p12 differ
diff --git a/roles/ca/files/CA/private/dsoclab-misp.key b/roles/ca/files/CA/private/dsoclab-misp.key
new file mode 100644
index 0000000000000000000000000000000000000000..9b8a5d677ac4cfa58bdee7fe6fec0d74c30240ab
--- /dev/null
+++ b/roles/ca/files/CA/private/dsoclab-misp.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDPsRvnoq5wgXGl
+V0YULkdkiU69ffCCLQMZ1odEs0K/cngDzJGYWzZCFFXighYSWGBURI8V9hsfdjYi
+Luis0zwK30bH8QS8Or/+S48qU4PjUIIGCfwq+v6UoHt/wj4LPtxyuJQQCguQ/UV2
+KYVSvw8gQ3j+O9NJII+apQyJuw6X8mewLfAXUyWmm0tkDnKKv8njjkG77fMzalVf
+jVKE+qNnGntx+5DxX2HfROoLd4jy5cGDcVjHWIqbOUVZTuDbFraWcpCM7sITdeoV
+xmvi3DreyAfeGIQtlrbETOFKTRNvbJod5flvzH4bSjp1Grk3sG2gG2k18bbmwqXT
+VtNXxw6LAgMBAAECggEBAIb/4VqMVQTOLvfBJc0iU8eWtLbZMMb8ySI3Xs+aEc3t
+cvNNOmolB7ymCTllQ0GDboH32mX1BaZKqV9IzHbiCwoqHZEDKgfLzFZX+OQTSwwr
+nYidXur1IRuswPnHYZrfrl1net5+GQyShF8NGBs0E3nuQaxHaMwEvTNRCzhPfWnn
+u/g3IExtSdE/XSxRnTGRQqSnMAf9OXs9bw/iTSR5cQO2mW/dRLr4aUCQOJ5Hx4mO
+ub172vkNeNwOSUzc9FjtZyQZOtn25WoS7SusK7y9ToDqqR5OcI5M+kxq+fQo8Wvu
+XlIeOvTKTHOBaih6QYEzHo9zq893I/c0xiOmfOr0v7kCgYEA7WQ7g5z+2Lyt35Sq
+XmzyQyAEbx+PMPc7yTQC62YuvpEAaDFDHMphDw1zM2mraLO+2IuBuDz7CTlsf1zl
+xwEJoEZa3odRi2McpqiUVQgJYD+bCUv35J8X93K4/7tLHvXDJQ3BKBNNoLHxjD5P
+SlR5xBCFwZiiXAkquWpZaaWAbg0CgYEA3/jjf723dlWRrVcG/m7VJrhTWq10Jltp
+8y786INKU1IUrwqFt7ph4c9/Jbop40QVkJKzsPojzWreDf3EZYGnBVhOLA5p4MC0
+X1ZTzN86dn1Y3SDCopGnJVP8X2EdDGfsTkfXxOjRCzSPOyZzxzseACw9WWAmullU
+zQs4K6/4YPcCgYB117znb8bepoMVqwILz79PbRRmaV82qnRGRAhy/I2V0ftGvbWY
+FCqsQzv9uKX7WscRTed+It9nS9c9PkteR3iU1HgFYV0seW3emW7Q6yVkXw7CRbDw
+D73g+1U0ta/r1Yoi2boZ/8MYU10aBlBsEJVFrAIKAZAPagmIc2+hTyP6/QKBgQDX
+FHSr3C0NJzkhA7zEovxwFXx+TKmImCqTjKD0S/gZMW6JdYpZmFOc/Jz2RuMoyt4G
+msqSfnPZNPIO744liC8zM8zGBAVq/sN39je9OvUyikbG+0nNwh+H+jIWCfVST44e
+0mEDSCxPHWcaf1+ZiEzUD6fOZ0Zpl5WW3lpPocncmwKBgQDIR7uJctv3UZkEO+oq
+g1Q4jLUYJFUb/3fk1mEmpq+b90e/xQMqZHlu/KHiHcKrukdWj67d/LY4mrw4DebR
+PTgdj9e0O8V9M7BYxDN+zEYrvmmY4A+tg07zm8aqmhCNKpOMsW0MkKFFuRiMkiCh
+bopZVfjdd+d/56vLZW+GSBaCew==
+-----END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-misp.p12 b/roles/ca/files/CA/private/dsoclab-misp.p12
new file mode 100644
index 0000000000000000000000000000000000000000..34e63cf61702da91592e85b97cc2c41066f4089a
Binary files /dev/null and b/roles/ca/files/CA/private/dsoclab-misp.p12 differ
diff --git a/roles/ca/files/CA/private/dsoclab-nifi-1.key b/roles/ca/files/CA/private/dsoclab-nifi-1.key
new file mode 100644
index 0000000000000000000000000000000000000000..2d054afbf080153a8869b097e3385dcc2fc0e709
--- /dev/null
+++ b/roles/ca/files/CA/private/dsoclab-nifi-1.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDDr++3oZVHX1Xq
+fujW/dXjGWguch+QYqh5dtjS9lHfcYA3Wux9+214bjf+5RvI1XPkyaXL6EpIJsbg
+pl4ULJCxgbJpMeJEhZf1YBKIBp2Nz0qid7PZ//NBQEwh4XONmIIvNycMJNhnvccF
+UEDFqdDkP7sMcil8vgYBlgO4oELEb2/aqhc0X17zcw53tXqaWeM80TlQFy9TGAWC
+NCkbGVYuwtskeVEPqNlmPHIeoPcD1unlxrm+lOSEvc2TJus7F7vN5Vgl8ig1pLFw
+3zJUhfY8IJ+Ii12DosQeMdmhdh0uPPh4ZKTdOrJWZb+oKqjtYsliLHK9nX5rH4Dq
+vDNgR9MPAgMBAAECggEAJ4fH/il3FXbtzTQb5ypZ5cmBITjOpYU4kWjvvhYiTegI
+xaXpdj2vTI+/Yg94QGbWRZZylrFzKAYlUMZq5Npn1GPl3ZhFJCB0pQ3mUHI9q6L/
+abiSrWwmAL1zY7i+dhEj41PZ4Hsk+Df/F1Sx8PwwBZvWNlpthRSB9BoQ4GAHfNTH
+qkJPz7IZ8ZCWZRRve71+h7rBSJVnrz3iWUmKgGigFWErD/vW0PpD4apGkwe9egkR
+2MDvf+x/QQ1vudzYHJEkKg2OMdsKokLmoJGmSh3Cq1dswAjnBqM+MPXUklHK6gZm
+L3x3GwBowQSVI/EHJT6MeMyZSGAwJlouX0oN/Prg2QKBgQDkY2ZTbV7ih1wgIJDS
+hKYqo7swHOo84JaMtz2FZBfv7KdYYUwAQObPD7jnrvV6EqI6yIOfo0WN28obz6fw
+rgugYeAlFka5g1Gg5fTGCgWIy8yTm5RvOrNn7lOsE8xx1dPuSqniCtTHjGVqc0EJ
+6yL+uZSKfL3Mgfli/RHTXmcv1QKBgQDbWHE5ZyudNF61xHAn6sFjESSOwLA4LsIG
+qeZN0l1WIZjwq33HrK9YK4F3k7AySYGlla03rOWVArM13fAPlNq+1WRZ4a6iArdx
+s3Wri9b7spzxz+OD9e+sPMjR3+odSAamZyWzk0++F+wQlu13rCX2kNO71laWOrSE
+u6vvmg+NUwKBgQClMYxy7ZoDCdtF1ahKzO2Py+v6Sf/XVq8uSt/x2stBnBAS6hVZ
+3ZfUz090LOWbjVzQXfZugl8t03slkJatjIYWVJUW3jz7tBNX6NyaXedQ4fAwGAlO
+Rsw7cXQN9CgdcoefRVwJhsIPL+qvC3xQm0YtrrfVT5LNGHn08o1xMEg8nQKBgBDy
+3Iza8/vJuCfDbgcnlJnbEUAWk4dD1ao+JpWM07l8Dx1JowZyyXm+otpihxLbqzDo
+R+Itce/5rW9UHuCVV/G2+3IWhi/ulc4rV8RRoeMBAi+NKL9hmYtthvbwnl502k6x
+WbBuiZLetlbx0peUrbpHppS1Eyu4jYpUFg0Fkn4RAoGAZsuipVjJpM/nj+aS6aUJ
++FNYaqZRsSpad/IY509ZD9G8lf/ANNxjwZuX4P3Im/m3772LcCe2LEv4f8sOfaF6
+wz/noWgJxaTqSaNmugNDhPJpXTgdgsTeqnq20MtHrpi4ZXUs21CDsJph5dlS/gWl
+AQQhj15wJkiYTHv093f2vaY=
+-----END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-nifi-1.p12 b/roles/ca/files/CA/private/dsoclab-nifi-1.p12
new file mode 100644
index 0000000000000000000000000000000000000000..0076ad1207c243f877de929e2424ed953f60469c
Binary files /dev/null and b/roles/ca/files/CA/private/dsoclab-nifi-1.p12 differ
diff --git a/roles/ca/files/CA/private/dsoclab-nifi-2.key b/roles/ca/files/CA/private/dsoclab-nifi-2.key
new file mode 100644
index 0000000000000000000000000000000000000000..a6d173357217a1ecec773826d1b017655a4f3b7f
--- /dev/null
+++ b/roles/ca/files/CA/private/dsoclab-nifi-2.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCst0vi1Yd/jhWb
+z8AX69uM4xuDwGm5BpGgm8Y13C/ojHIoUAKCxbHr2tnjnZXS2d3hCDVtg3OVmLoZ
+/T4EZ5oJN0V50x0L7ApDy7gkzGhczi6u20jYblrzMb6HKIZ2jo+NaJUfcmxlSvye
+uH3ig+I9sDBdwXMGrpv3mlS4AmuCkBEIP9ZfWVzfqiVZwGd6/OHwyUqL4DG2UxPC
+v4xPOubtETCmQSatVo8DC62HbLJzxC5BPpkatilt4Nyvj0Vu1WkXDfFYpn6MgDJy
+JCHS6bREI/YQj59kf+/mq/FDlNCKlw7kkb2GuR9C9JY5hQUm7ZABkRGjHwRbRv8b
+qXR32xgDAgMBAAECggEAIutEGm5VYMKXN9M+4Rc8YjWgYHjMZy4ezzvvTQBhZ0DN
+67yRZWMW37p1hwFbQy/tHgwM0UFcYwhnx81ddoKDsA1OrJy0KK7mPGK5ribtiqXc
+5llLVwaouLZ78NOOq/WSrGJSk/MMW0ZX4LcoLF3BpfszLCFqYhV3Tw4Sxskmd1TY
+DAIJ8P0mcAuiEw1G2VuVEsy8c6Ojkp/cJZudlhUk4J/Dqzhq3XcdRu+IoTOg1FTY
+Tw6aW0dwW9niZWaTCzksjnsY6ydIoe6v2GMiCOzCnfmogAgfuTH8Hg2oDvJDqFel
+zXNwxn52Q7HMvySnDn5j2BAYOyfybNkUDvjq170BkQKBgQDfwI+q22h24zg6ZLiC
+0AlqdKNliU1qdtaXu1bU1Mm0/9/o70+TP6GUDeZ0xJVPDpgf/qULaY8k2H4Ucb7i
+PNCPVYNF21qd591qaZA3i/YDNbXmzYNgy+hCPjY9+jW+DBEKOMDSCbUgUP9RJpNj
+CgEadH2xvumPeuLLhFwnmDn3XQKBgQDFm7tWnpUiyOVWcdEZ+xXPiqRr3JZFcjHk
+N3vSOVsS0xjaYPbyBnUNiw8Mxdm0xmaCCDHjv7lmIOCEUtD1YU/bp/e6UqvAULg7
+UasrT0h63eQPxS4tLpDaIjk5Zk7A/NFAHoTKrtbZEs1YONL8ltkrqOYUv4jaX1ae
+76f+1/s23wKBgAUDDzTIjWJ8XHoSX3+uoUddLXvMw4sq9kuXyq4hxhLj2GQjWCj4
+N+pVFWBwNtf6f7XXwmKrDqXIo6pZkekHa7SKOdKKw1DeLLuBedWEsRIJVfXBjLvS
+VXWGZzikLif/pTIRa2BJD2GV7uImdw603ql1Cou8twabvhDI+jd41XORAoGAW8b2
+fUZt8Zfom/uEqFJrUNcNgmMTD/H3pgz23y5wVA/jDRnX15SULNQXC1GgyUsUNPRl
+Z2eWTg6a+BoWnsCxfE1Iyyq2Rj23MyW9IAJUoWwJDiIATk/ASu92MGiJzywca3FB
+L3mAo5UN9hl+NH5DIvnw0lYa04FQE8Uu+zeIn3UCgYAgWQECDVgkUgoTtUZBmUAT
+wL5cXXfmDnMNLVn2TJNQRDvLMkdI0naQ94Dxvky6BIbSqaKx67PA3I7yRIDUYhGZ
+RM4RC0WpGtjxYmWyHkdClGLAJjSp4RPDUcCNAqmQhTySGCL4gBMalERbDzo16SSM
+lyWQP3MOrilDi/GjbUi3JA==
+-----END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-nifi-2.p12 b/roles/ca/files/CA/private/dsoclab-nifi-2.p12
new file mode 100644
index 0000000000000000000000000000000000000000..fdbd25a1e50851b8ea865781bc903dcc78a1cc8f
Binary files /dev/null and b/roles/ca/files/CA/private/dsoclab-nifi-2.p12 differ
diff --git a/roles/ca/files/CA/private/dsoclab-nifi-3.key b/roles/ca/files/CA/private/dsoclab-nifi-3.key
new file mode 100644
index 0000000000000000000000000000000000000000..4c508b05ddb691868f07f9952a5352a9a9a247a7
--- /dev/null
+++ b/roles/ca/files/CA/private/dsoclab-nifi-3.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCnSKDTqx6MSWCL
+uL2aqlwJYgF5icnlXzBkOMrxlS1IIIHvYKpv0e+0rImO6fUWfWQHsDt1w+HhFXFk
+YI8VjhaL3riXeaeDGXdbqjaCN7lRp5W1H6ydgcbs+xQ6hHcenN08BjChXtCPsMla
+E60OVle8HT++10xLN6KIck0aYogIoFe7IM5+r7dy8u6GGrEoO0H00+oUdJDhM0Ea
+kuIu7NMgYGBh1vwOP1dDiF8QKSBRQEbtXZ/RWudLUvTUI2BKIqeSbNTLIAGmuVNx
+enEC4QVyQaVCn0FHLDB+DLFzzPdjYCc/PTaTFKp+Eu0b8ctN6HwyIFD1LX0GCpPP
+eoUrC6axAgMBAAECggEAIwh9zfZvTlfrpTdKVgLJhZmFz4tAwg2eV87hCZkBQ7Kz
+I4uuBf8EYWUk5c4vasdV1JpeyXn9ayMPfUMPlCcOp7o8FFUA9N63dXX/NmQvJl+f
+ZbA9eTr9ixHGGb82Jy4Y0wJE2va9XOpcMMYgHvmMJDRH7lKugq4jFspBRX5PGOcM
+6MxlzOSEcPZFrccDFcVJIU57rJ3HO85mF8OUmQoReA7SH9qNLFFtERrsgCSkWlwq
++Pdz+FwkK2tmSBU6+4J2YTyJ0AvF5DUex8tf6rAD7H1AGz70VEFumlbjyz+OZgsS
+oeoAFRm6Uzoo2kU7mB3fPpA2oCGVWVIY6fgHbyZHsQKBgQDR0L/WuzeTpYB3oXbX
+2rPcbZVa/wK0Evl1dfj1UZUBqazkVntMVko02Xt5RHt8FTaorTqi2ieEGfcbOonn
+cSZzChPNCvyr6MJJHRcqNP4pgxd4b1LfP8sCLZTvi7HdBA1DPamgWuiKOkqGghHs
+38BX7SPz3/gTxEjwCE7g9970FQKBgQDMGy+CjGI8btlbKBK4LkebuGGWgWUIXa+V
+2OhoEZzIwDQf6LotauA8pdljTeeQ0VG4kO365hN2v5bL02SOCo3ciaLkQ2tQhRNt
+1xSDoKf2ipbjFZr9o6uDHGtVKZF1B20j48vEWBu5EEZ8yf7L68BWBm/RCVeN32oL
+jpmIMySDLQKBgQCwbv/CzDASAkwjTS2omgpBRA0iNerKDmKjeY7ei7nnag0u/eI0
+8SL5iiCgewvz7crG0NTL+PLdzQ/UX8dzTdztQ/4eoCyVSueFn+bI4UMRGWF1Lvfb
+L8PAkx/4x9nLZwrYDlRDue5tvlLJBTuZmxYdWhavjxkHVjmXTwU1fHqJeQKBgQCO
+Rgj5FEhJ3e8PFsDtt/zcdEs6MVou2bdSWc+u80/5s9jhwUU98Xj7bZQ6H4ziKrav
+U/8/XG+G4AgKboFybbLzXtG4EbLVft3LPBilpDBQr8x74IyYbyVYEFBVHdOx4wpV
+8S0R4WT5vHmV9OvyU5RPos8AxGVOlMSD59Pn19aExQKBgFTfUARZ/liWznEU8X5Q
+krL97ge1+oaqQBI0iS3jmi8cfRNpwWFxc+uRgHW5WybGC9PxV/n3yu1i4wIyrwfC
+g4f0HH19x+VTFs9+H09wudytJh0K8LLTns5G3Nu3WW+o0gtJDQDcAxijvEr2jn08
+qnSQ95GLsDqLTauqOMzEyhM8
+-----END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-nifi-3.p12 b/roles/ca/files/CA/private/dsoclab-nifi-3.p12
new file mode 100644
index 0000000000000000000000000000000000000000..4d4b23daaa41114bb1ab95eea974f0c2618dbbeb
Binary files /dev/null and b/roles/ca/files/CA/private/dsoclab-nifi-3.p12 differ
diff --git a/roles/ca/files/CA/private/dsoclab-odfe-1.key b/roles/ca/files/CA/private/dsoclab-odfe-1.key
new file mode 100644
index 0000000000000000000000000000000000000000..f10604dac97618a3da392c9eb505dae7ce87a0da
--- /dev/null
+++ b/roles/ca/files/CA/private/dsoclab-odfe-1.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDlRvZxzqI/YV6b
+88ZhiIeZCqy46J08X4xgK0FbNvs5Cm+hFgIxrA29Dv+VWdjxIWu9ltZ7eQHRZRzK
+CSJQMAHq7bQpv7RwJduzHelz7WOTAkyQIgRtMXQxroU8Eo2z9pIv3nV1j8ql8qIS
+lPvoczA38Xy1TlmrcXMmgJpGjUmUsAnlJxA0ncBTO/p3LgbAc44Pmh6MJzIM6/LS
+DKdSSMbuEiEV40UwiYFjf78KW9EFyBz8X7u4giqSOzquGZ3pp2J8CvLCKuao1JsK
+qKJa7OWjGnPggz3S6HSpC7DksP3+rR5X6A0gfKofMWm1DYw/HI3c03Fb8QRqrrkt
+qL4oEfVLAgMBAAECggEAGkUQNaf8VRC9+1ZqE4DGMJXVhnY4ldNIzTgHjAD3tehp
+M+bGp5RUGqZeSGl7/tzacGWY+5q4x5ozOz7irJdjkNxdeS8a6IKd8p7pwbugXha0
+WQtcwHobGxoo7+IcVFNbGpr9kFPCX1M2mLRzTIXuL2q+5DMu+QLNs8qmYpELrjpp
+wiY3yQ6zcv4ndWJloMWo+CzTXq+Gh0L7cWB8dk9NOGu0dAF1HIVokvud+xUejyIB
+2bBN/J9ErGBX366C5yqzMei1JhDXBT7N3XATs/i5tx5jHxO9/G7Psz6Ka7wQ2XlF
+9gY9AndkXGFNt/YnKpvN+h39caH7lRvC/AADwidsYQKBgQD+dHoAUKrCKfrHDazQ
+gQRPGNOY/J9anHhKvPKUwkoY8VZ2MDqB1uwSWioambx2CVc81eeHWmRQUAp7Qw94
+p9DWhqcPdhqGZDRQGSolw8uXnSLKLkJ0f1VxRv7B16wwLyaMgdcwn0JaZ0iaQqwk
+VX7V3OnRpbaji+7pkoJUetbyOwKBgQDmq1mSa8G+/5K8CURJz6K7/ItI29VCFm4t
+ggeQ2QdjpCEhg7b5wyW7Y+CjbWoUx/zKnT4FFX213Ca3TaOKn/sU2lu0J7AP4A85
+yV6JizecpU/aDsAelezO4PfpAdHiUN49lWt6VCTWzOM/+hKdLE1GVpOfqBCtEEYZ
+DJwS8JdIMQKBgHm9Sl16OqhYo1W20jaTc3dQXnQ0cR1N/TNswPaxGfhjBsXW/zb9
+l8aUAs7lPMiQYX+Gq5YThijykoE0rWNBjuYEWEtKaxhfOrQTxhl5Wp+4G1v10++e
+uEdQ+zPMtuH6vQu+VzE5EOrlvVOokGl1yhAR+IBIM2B945k2ckpu1wXfAoGAEGtY
+B+UluGvGzR23v61I/yqd24TSbE7ebtzXnwbj0MLpHNKcXrD2aZ1VayyppWsK4n1I
+4eHCvgQ6uUeMgZybqcNVTcCZdrfTPaDI2u+O+NaHlZUBNewkHCHFY8+eWga5mxac
+vOtqZ+PTtUUeuBNkOMKG5ZF4BmmnI7dTEMIRcrECgYEA0LJjKYwHmqHXe7Yel/f5
+6U3fQka70cpS0hg9T1qHlC2A8Goj4p2uchJmRkH3uYd0FTtImkoiAqksnWu949pI
+YFdI65eKm/7a7Pmoy0C7TMM6pN2ibbN7XBoZ7bZ6Fj6FI74MLgUBUIwMyKXWRhTX
+RWpegcD8h8CCEagLjZ6PN3I=
+-----END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-odfe-1.p12 b/roles/ca/files/CA/private/dsoclab-odfe-1.p12
new file mode 100644
index 0000000000000000000000000000000000000000..ed4bd60a1d96595774f510ecfd8c864a09e8d338
Binary files /dev/null and b/roles/ca/files/CA/private/dsoclab-odfe-1.p12 differ
diff --git a/roles/ca/files/CA/private/dsoclab-odfe-2.key b/roles/ca/files/CA/private/dsoclab-odfe-2.key
new file mode 100644
index 0000000000000000000000000000000000000000..6b56b08c72d66f58917d079dadd02f0bac21718e
--- /dev/null
+++ b/roles/ca/files/CA/private/dsoclab-odfe-2.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDHpeE/4KMiafG0
+FV65PNvXRLvZx2mUW8F9ozRNPogK4o8u05iUrrQfSaP9SycWcKsDq81MAip77Tr/
+SUkuO4j2WYUm3je0R54cvqM4jrAia8rFEuW+QJxXek0CDNsTxZ3Shd+ZVzKQN1QI
+FkYBVNoMdzFjOUYniD/0rU7m/Qo+nZiaU5iQvpvu47KRx38/obli+HoezLQj7YKg
+XK2Ge1BTyexXBEQcEvYzP2hC+LcvJZEcqrDfF2vtbcxtp9a3B2thpRZRnwIHrbJC
+QsoLsS7BbpQtPl6ISI+2ixWwSI41WOq1kJz7Wvr1xye3ETB6yzZ8T+pSAEdA6fDK
+Z2My4DNzAgMBAAECggEBAJlsPTQ0cckRd1/3iCp7vUmplV5fYyBSftgI4jl2E1+i
+CXxnuPqRYvQkSDRvW2NgQ9t3XDXL+E/x14O1EtrHf5Io6y0aWd5dpwDZ816UMIDT
+KyjVQ943kq2a27D2piiElarhnBofq0iubBIm47dEOKiZtEdXDTV1/AgQYvEZhZTl
+dZWsX21gP6YbMgGE/ZFz2tMjFlaK/f0XygJd64gGwwt0wzhBnJsb5Nf1nyrqfuNk
+XIKXQCBx3IbFxxHSd0LxeokYR1+nWcdw2i2T396UjlFJn4n58oPJEQSQAuq5RXHe
+aJDCiPLx16Hx0sqSgwXfjptXwdxYt7DQKYZkYHdUZtkCgYEA44g/xK6aUJWfhc5n
+QeOAB/maCa6GmSaGhvjIjOVu2nimmHl4jBF3Fi6FyWG8Tqj7XBgDaByuLBy5NIAQ
++/cQ3IGMHlI7SboQRllmsUMrCApOFyENBn5V+2dyCIRIqzstYHWGefv9ElrCroZa
+a/XZrDGO2zj3psoaKwat+b9i710CgYEA4KCC2NnP7henjH/rDbQfebIg+NSBeSn4
+1PDh37p3vm0gIclhygWS9vL1ERlvt9N3o272ago9jM+PaVK9fFBiqGuMU8X0/2qx
+LnPppWUKY3WKPkDKSBgz5J5jkTTneL6wPLY0saHB8Ob4zIKpfh8dsIXBwmiYsmO1
+x+q+HAL7EQ8CgYAjKZsxOgp/CaBtfUhX1mCi2uADPwVuBZYkpa3YmFxZRuv4BE2s
+18Yfl3D1fjUrstGlmdBs9oG0L3wvsNrvFW91pE+TIAIpkqeRN5+3JToxM+Z9jI4G
+wt9mysXEqyzPyYVpsr/lehvSClSrw/eVV5kcE0yQdG1RSUph+9ZHElynwQKBgEcy
++WaM27iHLOd+4F1um49yY7sbeJKUODgeximpLC1i3412DJYBYE0AQ6eQ3XVyBPj7
+wgVoi4vneniS7lbKEAt8U3V2SKrxAYpM2WFAfqN57UDAPp3Ndh1gCwVKtJf0MV59
+DoTDVfrq6y+/tsOwTzPVoc3iY4wfyM2+XVX5p+UHAoGABD84C3yYWYZ9gBkEkXHH
+jjKUcDCWUTcbErUtaloI9AU+Fw3XP+H21b1ahblQ8JtGcGIosYLOGreZyjN/gVJO
+Us14LTFkYwnSQMJ0KLmfZ2qEL89xl8fIFbjmccJUmW01F1y2M9yZVTVeNiAiq/VL
+j+8aCEyjHb06KrRCjseb1u4=
+-----END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-odfe-2.p12 b/roles/ca/files/CA/private/dsoclab-odfe-2.p12
new file mode 100644
index 0000000000000000000000000000000000000000..106170ff7a325bccade7cfecf2f60642e866a4a0
Binary files /dev/null and b/roles/ca/files/CA/private/dsoclab-odfe-2.p12 differ
diff --git a/roles/ca/files/CA/private/dsoclab-thehive.key b/roles/ca/files/CA/private/dsoclab-thehive.key
new file mode 100644
index 0000000000000000000000000000000000000000..6d4d8bb01b413adbe679481a68241bfe71a1c9dc
--- /dev/null
+++ b/roles/ca/files/CA/private/dsoclab-thehive.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC6xU0gpGC3YSHt
+FqFvcsTeoQDA7/xdoYk0BxXStDoUuJV1joFxSUYdyIHL8ezHWhL2iWDkyJgaYcgt
+Eo9z7vidiLV/MHCXKbSrQy3c26cQR8e1JpsRhfvTJ486VbzqeBe4iRCjpBBgOcN/
+QiWp/oR/OF70PcOYPVa5uoEGVY1lEvBOI4gdmAwvbk9n/U5nOZG5AVISqp67esjq
+j0otGPhpmjqgyG7j3sbbvkxZ4M+8NE8ssO8+glrfaL64+8xfavI+ZtTGxfYLZ+lk
+hRWHYG/ctFsTb7Cb+PPawZGegV8Wyp4UAcEczirTyDwPvrE3qskIaCve+URsHpCk
+Erz1PEa9AgMBAAECggEARJH9cBeJfqoFp6LgYCd1yfq4aR1yvPl6gwR66aHLlSHz
+lXZdZbcuK+8aYEMQ2FvkjGkBjt1qonz13j5rNngtBMFVST4CiC0CrMH8S5LFMj/4
+PTTQR822F971QciKlFbE9rYzyrCIZpuuf8FMTK4p/P84NVmbvv/+IDAuAKJWSB3b
+TXVeYzqET/cENXrNZNsTMHVoPAudtsHXXa5w3yXJXhTlRQrjMtMHgV+H1O2iOvi5
+IAJUm2HVmGON9aqQKZlzYvx9txSBRczEwQK+fLPoXGEG/KhskiBPMU0y9a60SV5F
+Oi94zzBCOSf/k+C4+EhkvfSq727ZFs60zGcoEW7rzQKBgQD08umyOtqJEB6dk5hg
+RA1mc3qx332Li0Ep9ciPD0oOyt9H/pQBMYHlV4Vf26dmjxg7XMPqB38topjbnVcY
+r1QigQ8tnHXktcO1tUpx6MhTkN4sBH9dvZE4TdBiarlcThgnuCfZUhjyfyr715tR
+BIC8TA9bd/6oUaf/zd0S4aGcEwKBgQDDMnKe7PoDlHtjxaiDs8VLRRgNKocT/jaD
+SZ5j5a1e+fvIK+lqpW7pXT/AlBVvxC6ke2Zb1csgndgF0p45ZO9WsB5fV3x8AREM
+zIvrqpH4hdRBEF7o1syVDMXmTQLsPOLzj6B2UC5mpqoo2GkI9yyXpJhNR0kqzkDy
+Pclu3xZL7wKBgQCZsFAxI/w6Q4LyG8lfnVNLFOnG8RM0mwsn6K8OE+nDnka6RWFX
+3lhCLcfhfVBraR0rIelKzaleWMbQBMjBFEEV5SRA2gqele1V9YngLs6CoELGG4xO
+pMKZMTmuhogHAnjlcwaNtJUykdfGbGFnVAvyGUcJfSCrO5DNT72GO0vLQQKBgQCF
+WyPf2/r7Eygxg8qbH+h8ghnqdNGQIS9RBqzFhxapOpR/rzBrAdcCbAiwIvt6Pke3
+a+8Ecs2x3OTHJZufjovNZ8l4TaboeToSynQVb5UGezgFs4+D96wRcIaLzrVefEJ5
+L/jqm+D3lInQGfm4fFXkzDiZI0ijjAHm/btumc771QKBgBTu4KvY6rzgmHbymux1
++tr+xl3/Nb29XQJHpZV+hgFGg1+aWaR9c0WXz9mKovBanEUHJb5khqFQDFZuWMNG
+tNQ1JbwTXwxmAfVJbLYbSHnuePkh+qtpmTVa3H5NdRBI/062/Km6Rxcf5JljB8/J
+k+SqVxdKSTfaWxGqyyAZgVis
+-----END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-thehive.p12 b/roles/ca/files/CA/private/dsoclab-thehive.p12
new file mode 100644
index 0000000000000000000000000000000000000000..4651a2126460e39b52b3c9404b73b982758cf006
Binary files /dev/null and b/roles/ca/files/CA/private/dsoclab-thehive.p12 differ
diff --git a/roles/ca/files/CA/reqs/Arne Oslebo.req b/roles/ca/files/CA/reqs/Arne Oslebo.req
new file mode 100644
index 0000000000000000000000000000000000000000..dcf639293b92b30d5786fe09e9e1b6306274e43d
--- /dev/null
+++ b/roles/ca/files/CA/reqs/Arne Oslebo.req	
@@ -0,0 +1,15 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICWzCCAUMCAQAwFjEUMBIGA1UEAwwLQXJuZSBPc2xlYm8wggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQDOTAIZIW4c8u2T2P28GqTCETvhVXPlJpLT2eim
+3X2iHb5qfGQGOWAzOH1qyomd5RFYIWnzOohe6uUu4Z27AB9ZGWlPazI9LxralT2Z
+lVOfsurbE0hjLUrcDEumHExi4tARJWfLgFIC6Pg7POvL9HEDWr7ZoEn+0XL+T77h
+rKHtpRUG9E7JBqubksI+uVgM9BUOBMCRG4VznbaXoWxwChqgzkyNrCnkxRcAJgNE
+Mqh7g1JJQ2ARU8geuOufH+MTVIF3xEdKLiCNSIyRLuDU5TcLXLtfQDeS6WA7oPmY
+f22zIJI82ozweYHy6ne6tHsGVHWJd36tCDquHtwcEWMIQxSXAgMBAAGgADANBgkq
+hkiG9w0BAQsFAAOCAQEAg1Qb6ZHRANNpMip4Swkowrq8EqkMwnaei5l9ODVzlYa9
+Wo5f+kiGVMnza76E40/OOTRT8624hZEbaOzh2bLRd/9MCxE3oGWeSVtu/MOkN0f4
+vERTql3zlcIzOmQHXp2obtJXdpSt+8jlYbFQm9HV9k6qCnv+k9zjkIEkNaZ26NIa
+CzsR4d6J5l9B9eEnpZHEcbtD5SyB8pde3d5lGDkJ7tdwVc874cbxSA/402lOf6Gh
+5huX7ID1xN92VHEdtiwtOkcWjtzp87Dr0GxlFd9u48ctOmvfvxL/wBPXAYDnwLrB
+d89p+JzRZzr8eRj5KCEW2W7AbOVpaL05IBAR6a/4GQ==
+-----END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/Bozidar Proevski.req b/roles/ca/files/CA/reqs/Bozidar Proevski.req
new file mode 100644
index 0000000000000000000000000000000000000000..cde307a9f149d38650af558e1c9ac2150c93a326
--- /dev/null
+++ b/roles/ca/files/CA/reqs/Bozidar Proevski.req	
@@ -0,0 +1,15 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICYDCCAUgCAQAwGzEZMBcGA1UEAwwQQm96aWRhciBQcm9ldnNraTCCASIwDQYJ
+KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJreAP3x6bkp2VjQRyHPS2cX96kCkxfP
+V1tv2yaQMAkL2cVmXvYiZqtIBqpsiLP9k0WkYMlfK2yv22heJ+aFcSe3IFJh3xQb
+2gY5siEgSyJIt0t2RAKxiV8OWSLLuckejaCsKF3lrsjqzAUgomAREo1tiApz6Hxo
+nEgsyajGncM8wef0B/dbbkI9PQ+Fb+K5iKnQAoS4GWquE6GXUJgWyAwbvQLIX6Mv
+c34l+IznkkPHanW8heocRyjOLJs6j6gH6YyKdT7BlzLO48XKHgrXPHcK0qtRw+Xc
+N5AaNb+gSqq9OO+ebfiBN3/TdyPGW2OYZAcvR/19IS9XwthEAMIpInkCAwEAAaAA
+MA0GCSqGSIb3DQEBCwUAA4IBAQBI2j+FMBWk7pwuvK10IHSgJl+MW/PS4LALPy00
+QCo6DUrkN3EsIY+wsY+jCUS2VGTlOehilOywH/RpmhFBxT3N+NmSyRHPhCBAJAHF
+lmziZfPU25xOt/q5TAbBgEgWJuZuMVUEXY0EV/BxHyaZLPOFogXMijP6jhLxx3yg
+8XU3aWYyFu3Dl5wwvhgtgXN4Bt5jHK7y4Cy+ChrybXabU6x380XlBDnlBLCmLmPP
+ASQ+xzmacFGIY3SVqI1sHBgSMGueVQLWmGEgT3uD7mX0sD1teFR4MA6pySrkhJeg
+7kZiw1lMNnFziruBsrk0wfVK5X4fy13lfOBZEc0YgVykUklo
+-----END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-cortex.req b/roles/ca/files/CA/reqs/dsoclab-cortex.req
new file mode 100644
index 0000000000000000000000000000000000000000..1959ae3968783dc47efbfd43251a6fa40b20d33e
--- /dev/null
+++ b/roles/ca/files/CA/reqs/dsoclab-cortex.req
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICqjCCAZICAQAwGTEXMBUGA1UEAwwOZHNvY2xhYi1jb3J0ZXgwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDNCWsUM0pHdVvT2Wc7Ta0fpx8zq4axqjsJ
+qxqm+6BgBONoMw6FVNFwYYq51da1bMKzNgKUtx0Yk1+Igf8q9JlYbdeW4tJkd7l0
+RDzw+1sPQ304Xf6w2wV6qcUQJHUTyC3aab7jQzPwKDCaU/j40xAyNewdh6seLLUA
+fJ+PYeBdVhWMRkUJeAJ4EMCvLyVswlvtX8EzC/jIE9zfw/wFkP8Gnsu8HSvCV/K9
+qiKzS/XKsrgAGPEUELheaZ/t/ASD2S63mopFHFRxj2ECaoqEL2ffkjoMX+W252wn
+aR9bBtZ/5t+rLzGlzWMyYMAHUGwNOctorjyy2g8gBncsKKs6MJIbAgMBAAGgTDBK
+BgkqhkiG9w0BCQ4xPTA7MDkGA1UdEQQyMDCCDmRzb2NsYWItY29ydGV4gh5kc29j
+bGFiLmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBABmN
+TbZUl+mAgRYgyBhG8QxYAD8sLcKqPDrldqy/5qsGuLQSA4txQ7uEMFb9mr5RsjvA
+rsKljltvjmEMyLjOio00NanddY/qTAwqfk8VoPK49g0Sf1c73E/84JwhzjzTqR5v
+4Evckh4r2lrgtqos0sZHr5SUdYiMpAJ18WUAp+PCa6RydUt5+Upwu391lgjQpSr+
+M7DCM+KDSZ4X0eaSf6oFrfNA035FlDaHdRHGMIW5aE+fBXSXEU7EwgjCEMuy6iLR
+Arpjo8t2Kj5P+zJVXo5021VhWtTR221GI1v+JJxSkolHAziTohsj45m0jA1cCKbL
+bzpzNH/WwlpNEH7tWGs=
+-----END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-haproxy.req b/roles/ca/files/CA/reqs/dsoclab-haproxy.req
new file mode 100644
index 0000000000000000000000000000000000000000..7377346b4e1b94227e731ebe0c462eada026a77e
--- /dev/null
+++ b/roles/ca/files/CA/reqs/dsoclab-haproxy.req
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICrDCCAZQCAQAwGjEYMBYGA1UEAwwPZHNvY2xhYi1oYXByb3h5MIIBIjANBgkq
+hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAycciMwsLD6CMxKmBN71RL0cy+huIRbG7
+EUM93rNwZ9eLOVqPE/sveAixsTLG0Q7k0y4624Tb0mVrJiRs1xblpZCOAkYTAgqW
+ZkaHt7DuVkw82K5Mfe9bqm4Bjon+TLnebLrkP4341zrtsimaW6xahmYF8xkvWY18
+i2qXHkOKNoCy6eGE9pS8ExExuNJacu1ow7E35FuRgmKqE/K24DqqhWZwCqmtXKdS
+/9z5mV7lFdUM/s0ny5ieWmnKcXQx5ibf7NJCQ7nzBI4seiim+Y66ZDxpDqz13NXz
+KlBHUNSM9e4xCHNpH65CHVKEXUdo3aMfB1fsPp4NI3gWQbxo8k/pGQIDAQABoE0w
+SwYJKoZIhvcNAQkOMT4wPDA6BgNVHREEMzAxgg9kc29jbGFiLWhhcHJveHmCHmRz
+b2NsYWIuZ240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEA
+afvEI0PRtJHdn9wjijMSmeFqcKb7LrV3cXKgMNlps/7+D9S3E2id457QpHLteOLn
+G7YOlL+xddxa/rn95ovL/p+qU4i4bPfE3tG/Yj6GclQTNb4JWocZq6ukgDzPaLPu
+7XyS42sreCN8QlDuHDM+lNpb4wyzyLVKV8pUGLn9QjskKvAFmwXNOV9X20RLSlAo
+NhOYFxCoiwcCT/wyOh83uh5FcGOzZOPrG/J95rV+RyYOQGttu2l00nDVTD7Gbjza
+tv30d2Gj6tJAxTqXZm99qJ8zi7wBgymX7uQoaw+D4uZqRCzUqgEe9j72N0Jh+yF0
+/wo9Lx4oVJj6GR0I7jY24Q==
+-----END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-keycloak.req b/roles/ca/files/CA/reqs/dsoclab-keycloak.req
new file mode 100644
index 0000000000000000000000000000000000000000..c9316cf972da90037dbf93717ca8dc9414257150
--- /dev/null
+++ b/roles/ca/files/CA/reqs/dsoclab-keycloak.req
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICrjCCAZYCAQAwGzEZMBcGA1UEAwwQZHNvY2xhYi1rZXljbG9hazCCASIwDQYJ
+KoZIhvcNAQEBBQADggEPADCCAQoCggEBAOqp6msvbJyfbZyJTgG6xsAy31kmK5X0
+wj3IfiLOtngD6CIogZyapqe6/QVmo1CBhXHB2eq8IeFdCod7vlWwfQFX3kz+OsXJ
+VHcuFfwSB/jvn3v3CQFwdVM73LEMZU1JxPsdQiBvgUVC09sdTFcbHTuBOe6yz5VL
+KdCoOZjWkzaZv8VDJo1N220kO/wWdqH9b8YZEccSDYAWTIjaLAl4PRt8bOzbngFQ
+X6NWf9Q7pCbSbUJ7iE6NZO0eGg4FWGVYR4NgnrTtFc5yT6C1It2fpNqIhv7LhG5y
+PQBC2ouFKvLv1+67hUK6ufvZndIsWA98AiO3RtBpBjdAnVh0icq3EuUCAwEAAaBO
+MEwGCSqGSIb3DQEJDjE/MD0wOwYDVR0RBDQwMoIQZHNvY2xhYi1rZXljbG9ha4Ie
+ZHNvY2xhYi5nbjQtMy13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IB
+AQAFuWENWuE+yIOLn3KkTz1HoJrOwzn6g/XkrhMcmQtRucKd9T1CMr384yWXkGcP
+f+BrrW/m2WSpPGikR6i+gW5aW1zKOtu+IABFpjsOcHTuKZGjsAgzSWXIffuNzrMt
+TvmOdtlez0sBmxPQ+JmpmNkGzSzEr/qnMxdxHonn17/pLV5P5Z4Dy5vMhTKlw32I
+1C6gD1yfjoF1nI0BWmu6vSih1IBApR2tdexa/gGZT68z1XncTD7zzUnPBoqWJjJf
+7NZ/HUxmQBcM4/sYNFnfx+XHY83Hm4+i2PS18SgC7WN+GTaGnOYdgLPbUGwCEv0t
+TnDRqK0EfRbr8E/6wCgkyhz6
+-----END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-kibana.req b/roles/ca/files/CA/reqs/dsoclab-kibana.req
new file mode 100644
index 0000000000000000000000000000000000000000..c7425201deb9b14a657ea917f997e047b37d6669
--- /dev/null
+++ b/roles/ca/files/CA/reqs/dsoclab-kibana.req
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICqjCCAZICAQAwGTEXMBUGA1UEAwwOZHNvY2xhYi1raWJhbmEwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDOT8kPhE1Oe9wRkMlJqPNgRKglG1mDZAvR
+4LxZUCKl9Yh6yEBl5CI9d9KPnjAXgF4ghbxwZ2HL2OKfmnx7puhOeXvNhm4mUjdF
+tqu3b0CPelWL0ZHMIW9VN1A7ch8tO791R5GIahzqOd2LJTFVDrxSb78Llu/jElza
+YyJU5bOViwKeVz57T6D1bweoW0V8yzSDdzSlsf8FEoiPzMQFXennfSsS+rtNJfT3
+BOeVBpXqqcR1TvcDZy2cmvQB9iqNbG3QWanOHxKxdjnIB9Qgcx7znLlngzuofG77
+huo/ao6YTDmp0U2+nwpDSRv9CWe2YnH9h5pjJQCqx6FNIxLjVg9vAgMBAAGgTDBK
+BgkqhkiG9w0BCQ4xPTA7MDkGA1UdEQQyMDCCDmRzb2NsYWIta2liYW5hgh5kc29j
+bGFiLmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBAD3L
+9U2PcNoNGQu7wDkVblw29QoEkbm7yXvcXt5fFlcd85Tw3+Wig4fXC2AVLBxTvK7C
+1wLGTMVtQfzH7+H+xQvhiQG+Rz2dLD6K10sPK+Uj5iXZyyeb82cqw7QwaH40jCot
+uLgvSIIrChFWGijW0tHy2UmHjTh6+cPzwGe58yYXTK/OBJwbEKKox3IL9XtF3QJJ
+wNhuCYPNbNmy1qZQ7Fny9cCU+syHDRkJwIYBAcfKVvq4/L7txkYZasnoQqE8H2Tq
+UnCOD97mt85wXID6vhi8gqUvujr/NHqCIJqd4yZ3fi8/uxbK2Igw6sr4d1y90Dj5
+iUsJ9h+hlzojGLzqB98=
+-----END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-misp.req b/roles/ca/files/CA/reqs/dsoclab-misp.req
new file mode 100644
index 0000000000000000000000000000000000000000..051c713561519155d72428452581bd9dc4b891e0
--- /dev/null
+++ b/roles/ca/files/CA/reqs/dsoclab-misp.req
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICpjCCAY4CAQAwFzEVMBMGA1UEAwwMZHNvY2xhYi1taXNwMIIBIjANBgkqhkiG
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz7Eb56KucIFxpVdGFC5HZIlOvX3wgi0DGdaH
+RLNCv3J4A8yRmFs2QhRV4oIWElhgVESPFfYbH3Y2Ii7orNM8Ct9Gx/EEvDq//kuP
+KlOD41CCBgn8Kvr+lKB7f8I+Cz7ccriUEAoLkP1FdimFUr8PIEN4/jvTSSCPmqUM
+ibsOl/JnsC3wF1MlpptLZA5yir/J445Bu+3zM2pVX41ShPqjZxp7cfuQ8V9h30Tq
+C3eI8uXBg3FYx1iKmzlFWU7g2xa2lnKQjO7CE3XqFcZr4tw63sgH3hiELZa2xEzh
+Sk0Tb2yaHeX5b8x+G0o6dRq5N7BtoBtpNfG25sKl01bTV8cOiwIDAQABoEowSAYJ
+KoZIhvcNAQkOMTswOTA3BgNVHREEMDAuggxkc29jbGFiLW1pc3CCHmRzb2NsYWIu
+Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAdn/gw4DW
+EuPNCWcDYqlXVmwo0a0Enf5awha/1A9IxU22Tl4jv7KOb+SFRRy6d2UURGP+12EB
+iUq7e27L9byhs2gR9xXrw4CQlLjZ7egRg4a6fW1YeL2gKU68PvppOyMGxxH0saCL
+LmAM5N8ClvujX8wvLudCXu/NNrsBwQGaQ5CXtysYXrV7FyHwkO7FP2CTbvGbyYj/
+WJT8g3P4RM3PKd7+7+mmNoqKCOySj1gnB6xEn0iPoBWRRcC/2SlyUXi6idG45C0p
+G04CKFxHJHn2x2nV+3Ym/1ctCTaxg5tGTrZ7Mw3Fkp2QGsmlQuq8ukeO0wTMJlyt
+41DA9acx/R0vAg==
+-----END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-nifi-1.req b/roles/ca/files/CA/reqs/dsoclab-nifi-1.req
new file mode 100644
index 0000000000000000000000000000000000000000..6984cbb76e1391cc8e76c34ffbcf3407d5459cd3
--- /dev/null
+++ b/roles/ca/files/CA/reqs/dsoclab-nifi-1.req
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICqjCCAZICAQAwGTEXMBUGA1UEAwwOZHNvY2xhYi1uaWZpLTEwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDr++3oZVHX1XqfujW/dXjGWguch+QYqh5
+dtjS9lHfcYA3Wux9+214bjf+5RvI1XPkyaXL6EpIJsbgpl4ULJCxgbJpMeJEhZf1
+YBKIBp2Nz0qid7PZ//NBQEwh4XONmIIvNycMJNhnvccFUEDFqdDkP7sMcil8vgYB
+lgO4oELEb2/aqhc0X17zcw53tXqaWeM80TlQFy9TGAWCNCkbGVYuwtskeVEPqNlm
+PHIeoPcD1unlxrm+lOSEvc2TJus7F7vN5Vgl8ig1pLFw3zJUhfY8IJ+Ii12DosQe
+Mdmhdh0uPPh4ZKTdOrJWZb+oKqjtYsliLHK9nX5rH4DqvDNgR9MPAgMBAAGgTDBK
+BgkqhkiG9w0BCQ4xPTA7MDkGA1UdEQQyMDCCDmRzb2NsYWItbmlmaS0xgh5kc29j
+bGFiLmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBAHM0
+gTZ4mCfbnMSSETTVJM90A9LvYRYegrDd9iiyrHnA1ybJh4wfvmKYq1UfD04Q/wT5
+MT5ebLiCOtnicU1XtZIOdqVjrdHgYh5AiNuqGfWPTJ5714XtUfuV0U47iGgs8OtV
+W0C+DvWOm2v5xMs66QIMZRJObXiNjz/5NnigHAf0eyKj+fkmfB7oW3O28vD9drPk
+WCZYRFOTxEviwWAgapI5JCmlpvAu61gljYEDJhk7x+l2obOxEt1ibTJoobQCSt5U
+BF2ZBNI/nAKz6pQhj1bW25Gc5o2QM5bkv7uIzjHMprgGMKnJnbBZjEBdHKRxv7n7
+Pa0EZRioaWxc7VVDYbM=
+-----END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-nifi-2.req b/roles/ca/files/CA/reqs/dsoclab-nifi-2.req
new file mode 100644
index 0000000000000000000000000000000000000000..31f0180a40f7d46e29d16f18b3226e56269f5506
--- /dev/null
+++ b/roles/ca/files/CA/reqs/dsoclab-nifi-2.req
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICqjCCAZICAQAwGTEXMBUGA1UEAwwOZHNvY2xhYi1uaWZpLTIwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCst0vi1Yd/jhWbz8AX69uM4xuDwGm5BpGg
+m8Y13C/ojHIoUAKCxbHr2tnjnZXS2d3hCDVtg3OVmLoZ/T4EZ5oJN0V50x0L7ApD
+y7gkzGhczi6u20jYblrzMb6HKIZ2jo+NaJUfcmxlSvyeuH3ig+I9sDBdwXMGrpv3
+mlS4AmuCkBEIP9ZfWVzfqiVZwGd6/OHwyUqL4DG2UxPCv4xPOubtETCmQSatVo8D
+C62HbLJzxC5BPpkatilt4Nyvj0Vu1WkXDfFYpn6MgDJyJCHS6bREI/YQj59kf+/m
+q/FDlNCKlw7kkb2GuR9C9JY5hQUm7ZABkRGjHwRbRv8bqXR32xgDAgMBAAGgTDBK
+BgkqhkiG9w0BCQ4xPTA7MDkGA1UdEQQyMDCCDmRzb2NsYWItbmlmaS0ygh5kc29j
+bGFiLmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBAG7p
+jsz6CmL0Am6fDwlnBWML8EMgYcBhhFyiemX+6hrGxZLeTXCfFn/rSKpA8oDTfNyf
+OK2BceBxePb4JJDzqkH3lAdqsuEqByJMnUQfEpLHEorXl1CN2iMaQ4F/1aX7H2g4
+dwtdYcHD/vsBu9bP3q4FM+SKE6GHcpgM+R6gyJ/yRhSWO2pmdbxSGM7MWRHc9XBz
++8kJNwhraGqNRYlwruCFxtqL3iMyMzz0x9QS4To1T/klybmCxZ+JJaFTdZtD5fFa
+aL1/PoTJUl01ycxiL8nS0vVwh/UyFe/9c2z2OnUdJo2rsKp8NHRnHpkm8SfxYy/D
+J2jaavn1ViQDB7T8OUc=
+-----END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-nifi-3.req b/roles/ca/files/CA/reqs/dsoclab-nifi-3.req
new file mode 100644
index 0000000000000000000000000000000000000000..be09de63a31ae4519ae390fd681f8b97d05275d9
--- /dev/null
+++ b/roles/ca/files/CA/reqs/dsoclab-nifi-3.req
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICqjCCAZICAQAwGTEXMBUGA1UEAwwOZHNvY2xhYi1uaWZpLTMwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCnSKDTqx6MSWCLuL2aqlwJYgF5icnlXzBk
+OMrxlS1IIIHvYKpv0e+0rImO6fUWfWQHsDt1w+HhFXFkYI8VjhaL3riXeaeDGXdb
+qjaCN7lRp5W1H6ydgcbs+xQ6hHcenN08BjChXtCPsMlaE60OVle8HT++10xLN6KI
+ck0aYogIoFe7IM5+r7dy8u6GGrEoO0H00+oUdJDhM0EakuIu7NMgYGBh1vwOP1dD
+iF8QKSBRQEbtXZ/RWudLUvTUI2BKIqeSbNTLIAGmuVNxenEC4QVyQaVCn0FHLDB+
+DLFzzPdjYCc/PTaTFKp+Eu0b8ctN6HwyIFD1LX0GCpPPeoUrC6axAgMBAAGgTDBK
+BgkqhkiG9w0BCQ4xPTA7MDkGA1UdEQQyMDCCDmRzb2NsYWItbmlmaS0zgh5kc29j
+bGFiLmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBAKKZ
+4Wy4xgX3E+O7mrt791MpRJTTl4qE0bgn54Y7Pzz2Do3SNeC7OpCtFHAVVfGDjpKY
+vac+9+rtdn21ttT7IjwOIao2vKUdxzbLhqM5onUDQmattCqvh5ewMtH4rVfbKg4C
+S7MlCb9tezg8zBx6T9ZO7eoTcIZwnS6jEoRhNABb1D46AAfEkW/4psXUpJ/e1Vv8
+UFt+mGqLIzZ2MLwINv7RM5koCEw/9WU4haEjJWvvTLmXVedV3eDidJCFQrNwRF68
+/VHLs21e+lZK7t0wAWGf/tzQOTzgy1AydtMI1cpRVFV1OcjEvSwjZProAVNjqBoq
+CHJSL39w3B0+e51cKUo=
+-----END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-odfe-1.req b/roles/ca/files/CA/reqs/dsoclab-odfe-1.req
new file mode 100644
index 0000000000000000000000000000000000000000..c680ab26ebc91c7b59863531443390ac7f630772
--- /dev/null
+++ b/roles/ca/files/CA/reqs/dsoclab-odfe-1.req
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICqjCCAZICAQAwGTEXMBUGA1UEAwwOZHNvY2xhYi1vZGZlLTEwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDlRvZxzqI/YV6b88ZhiIeZCqy46J08X4xg
+K0FbNvs5Cm+hFgIxrA29Dv+VWdjxIWu9ltZ7eQHRZRzKCSJQMAHq7bQpv7RwJduz
+Helz7WOTAkyQIgRtMXQxroU8Eo2z9pIv3nV1j8ql8qISlPvoczA38Xy1TlmrcXMm
+gJpGjUmUsAnlJxA0ncBTO/p3LgbAc44Pmh6MJzIM6/LSDKdSSMbuEiEV40UwiYFj
+f78KW9EFyBz8X7u4giqSOzquGZ3pp2J8CvLCKuao1JsKqKJa7OWjGnPggz3S6HSp
+C7DksP3+rR5X6A0gfKofMWm1DYw/HI3c03Fb8QRqrrktqL4oEfVLAgMBAAGgTDBK
+BgkqhkiG9w0BCQ4xPTA7MDkGA1UdEQQyMDCCDmRzb2NsYWItb2RmZS0xgh5kc29j
+bGFiLmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBAKzr
+ygHDc8j5mTfhtfsRGfnEGfZiLYCV6YGBDazc+JaQiKzRXb5FWWTPbWZ0EtiQyVJA
+J/yfkRQug6qQKLaNa22br7iP1LrPu0xQD6uTH9FgYu6J9YyfibBb0aav8em10JGQ
+fdW7AmpLRwdLVii+DwJURcd5GEBBYyRPJzwloQmktPoBsnQ1EATqcStasE6AVoGu
+1h2jlb6amEGJzUIe22CDuYs0SO5wHrn/t32EC4sub1I+jjmbiLo0r7uku1JAHT/C
+wL19wSfauW079sNjgBPgJkFbjIW8lC4VQe8X0YmCXT/d6dqsPc3mJPK3AojYZGaM
+Df8uQI9AQthiaGo1Yr8=
+-----END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-odfe-2.req b/roles/ca/files/CA/reqs/dsoclab-odfe-2.req
new file mode 100644
index 0000000000000000000000000000000000000000..e97a63925ee9173215adae268769715699bb0dda
--- /dev/null
+++ b/roles/ca/files/CA/reqs/dsoclab-odfe-2.req
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICqjCCAZICAQAwGTEXMBUGA1UEAwwOZHNvY2xhYi1vZGZlLTIwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHpeE/4KMiafG0FV65PNvXRLvZx2mUW8F9
+ozRNPogK4o8u05iUrrQfSaP9SycWcKsDq81MAip77Tr/SUkuO4j2WYUm3je0R54c
+vqM4jrAia8rFEuW+QJxXek0CDNsTxZ3Shd+ZVzKQN1QIFkYBVNoMdzFjOUYniD/0
+rU7m/Qo+nZiaU5iQvpvu47KRx38/obli+HoezLQj7YKgXK2Ge1BTyexXBEQcEvYz
+P2hC+LcvJZEcqrDfF2vtbcxtp9a3B2thpRZRnwIHrbJCQsoLsS7BbpQtPl6ISI+2
+ixWwSI41WOq1kJz7Wvr1xye3ETB6yzZ8T+pSAEdA6fDKZ2My4DNzAgMBAAGgTDBK
+BgkqhkiG9w0BCQ4xPTA7MDkGA1UdEQQyMDCCDmRzb2NsYWItb2RmZS0ygh5kc29j
+bGFiLmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBAA0a
+Y6OxjtMpOkPMMTCOeMniiS4yzTxgfWe4ky6wOGE0E7ZXuQgb58CypGd7vJuUJvv2
+scIov+MH65NqswlHXoENSi1j042gc9+ce/Jr1MsLMwVW0JaY2fb5uxj8oi2GTcyF
+ldcLvD6Ga/zCcyttkMy3zidOlWUd0VsMJFyQl+N9BaiUOoNP3M0ux22FQ0a6OcG4
+GlsD0w59dx/jYKlmp0eKFQ7ogaYWu3O2X+BFMigGFq2rISd57WdEZk+K8ZGazNW8
+li3076e1DflticRO/uy7q9xzvuLFlfSFLoQgem8Zp9CgNJYfa/QVnfVQH7iZLm2K
+8AHzPPLphDavqr2iy5o=
+-----END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-thehive.req b/roles/ca/files/CA/reqs/dsoclab-thehive.req
new file mode 100644
index 0000000000000000000000000000000000000000..1bcb0467ac08e107f3e7c80da3257c8335d48d0e
--- /dev/null
+++ b/roles/ca/files/CA/reqs/dsoclab-thehive.req
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICrDCCAZQCAQAwGjEYMBYGA1UEAwwPZHNvY2xhYi10aGVoaXZlMIIBIjANBgkq
+hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAusVNIKRgt2Eh7Rahb3LE3qEAwO/8XaGJ
+NAcV0rQ6FLiVdY6BcUlGHciBy/Hsx1oS9olg5MiYGmHILRKPc+74nYi1fzBwlym0
+q0Mt3NunEEfHtSabEYX70yePOlW86ngXuIkQo6QQYDnDf0Ilqf6Efzhe9D3DmD1W
+ubqBBlWNZRLwTiOIHZgML25PZ/1OZzmRuQFSEqqeu3rI6o9KLRj4aZo6oMhu497G
+275MWeDPvDRPLLDvPoJa32i+uPvMX2ryPmbUxsX2C2fpZIUVh2Bv3LRbE2+wm/jz
+2sGRnoFfFsqeFAHBHM4q08g8D76xN6rJCGgr3vlEbB6QpBK89TxGvQIDAQABoE0w
+SwYJKoZIhvcNAQkOMT4wPDA6BgNVHREEMzAxgg9kc29jbGFiLXRoZWhpdmWCHmRz
+b2NsYWIuZ240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEA
+SrEnsOQ1zqalbv8SBBMBhRXlrKH74UUc8uhwqS9peQv0ILmJQqZ2FZx3HRyRcM2X
+30qhiND97sMs0H1D4ViDAk5lScX4LNCgPx7YhAVtxXAR8Y1An47GQHF2ln1veRGo
+UJ6kZO0VTnf0TSWAbEv2EwHIT6GsRiWv9xDebrtRByZXWEJF2z/PkAMfXOaYHu+9
+ZHc7oyHm06/iN9bC7n6dfPSq+odfuYKYc90Bc5pS/bOLZuUCNuWS8fZ1QdtaTAdK
+FGms4qBL3IIWWrKzxGBtCa0B/fvCrqrNENaE0J5In2nYiobU2A8wdAb3qCrMHsDW
+sXrXrXiWYjb0jUyMIOsKhg==
+-----END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/safessl-easyrsa.cnf b/roles/ca/files/CA/safessl-easyrsa.cnf
new file mode 100644
index 0000000000000000000000000000000000000000..936ba8b4a76789eb9c7d2d01446cae2905c65965
--- /dev/null
+++ b/roles/ca/files/CA/safessl-easyrsa.cnf
@@ -0,0 +1,140 @@
+# For use with Easy-RSA 3.1 and OpenSSL or LibreSSL
+
+RANDFILE		= roles/ca/files/CA/.rnd
+
+####################################################################
+[ ca ]
+default_ca	= CA_default		# The default ca section
+
+####################################################################
+[ CA_default ]
+
+dir		= roles/ca/files/CA	# Where everything is kept
+certs		= roles/ca/files/CA			# Where the issued certs are kept
+crl_dir		= roles/ca/files/CA			# Where the issued crl are kept
+database	= roles/ca/files/CA/index.txt	# database index file.
+new_certs_dir	= roles/ca/files/CA/certs_by_serial	# default place for new certs.
+
+certificate	= roles/ca/files/CA/ca.crt	 	# The CA certificate
+serial		= roles/ca/files/CA/serial 		# The current serial number
+crl		= roles/ca/files/CA/crl.pem 		# The current CRL
+private_key	= roles/ca/files/CA/private/ca.key	# The private key
+RANDFILE	= roles/ca/files/CA/.rand		# private random number file
+
+x509_extensions	= basic_exts		# The extentions to add to the cert
+
+# This allows a V2 CRL. Ancient browsers don't like it, but anything Easy-RSA
+# is designed for will. In return, we get the Issuer attached to CRLs.
+crl_extensions	= crl_ext
+
+default_days	= 1080	# how long to certify for
+default_crl_days= 180	# how long before next CRL
+default_md	= sha256		# use public key default MD
+preserve	= no			# keep passed DN ordering
+
+# This allows to renew certificates which have not been revoked
+unique_subject	= no
+
+# A few difference way of specifying how similar the request should look
+# For type CA, the listed attributes must be the same, and the optional
+# and supplied fields are just that :-)
+policy		= policy_anything
+
+# For the 'anything' policy, which defines allowed DN fields
+[ policy_anything ]
+countryName		= optional
+stateOrProvinceName	= optional
+localityName		= optional
+organizationName	= optional
+organizationalUnitName	= optional
+commonName		= supplied
+name			= optional
+emailAddress		= optional
+
+####################################################################
+# Easy-RSA request handling
+# We key off $DN_MODE to determine how to format the DN
+[ req ]
+default_bits		= 2048
+default_keyfile 	= privkey.pem
+default_md		= sha256
+distinguished_name	= cn_only
+x509_extensions		= easyrsa_ca	# The extentions to add to the self signed cert
+
+# A placeholder to handle the $EXTRA_EXTS feature:
+#%EXTRA_EXTS%	# Do NOT remove or change this line as $EXTRA_EXTS support requires it
+
+####################################################################
+# Easy-RSA DN (Subject) handling
+
+# Easy-RSA DN for cn_only support:
+[ cn_only ]
+commonName		= Common Name (eg: your user, host, or server name)
+commonName_max		= 64
+commonName_default	= ChangeMe
+
+# Easy-RSA DN for org support:
+[ org ]
+countryName			= Country Name (2 letter code)
+countryName_default		= US
+countryName_min			= 2
+countryName_max			= 2
+
+stateOrProvinceName		= State or Province Name (full name)
+stateOrProvinceName_default	= California
+
+localityName			= Locality Name (eg, city)
+localityName_default		= San Francisco
+
+0.organizationName		= Organization Name (eg, company)
+0.organizationName_default	= Copyleft Certificate Co
+
+organizationalUnitName		= Organizational Unit Name (eg, section)
+organizationalUnitName_default	= My Organizational Unit
+
+commonName			= Common Name (eg: your user, host, or server name)
+commonName_max			= 64
+commonName_default		= ChangeMe
+
+emailAddress			= Email Address
+emailAddress_default		= me@example.net
+emailAddress_max		= 64
+
+####################################################################
+# Easy-RSA cert extension handling
+
+# This section is effectively unused as the main script sets extensions
+# dynamically. This core section is left to support the odd usecase where
+# a user calls openssl directly.
+[ basic_exts ]
+basicConstraints	= CA:FALSE
+subjectKeyIdentifier	= hash
+authorityKeyIdentifier	= keyid,issuer:always
+
+# The Easy-RSA CA extensions
+[ easyrsa_ca ]
+
+# PKIX recommendations:
+
+subjectKeyIdentifier=hash
+authorityKeyIdentifier=keyid:always,issuer:always
+
+# This could be marked critical, but it's nice to support reading by any
+# broken clients who attempt to do so.
+basicConstraints = CA:true
+
+# Limit key usage to CA tasks. If you really want to use the generated pair as
+# a self-signed cert, comment this out.
+keyUsage = cRLSign, keyCertSign
+
+# nsCertType omitted by default. Let's try to let the deprecated stuff die.
+# nsCertType = sslCA
+
+# CRL extensions.
+[ crl_ext ]
+
+# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
+
+# issuerAltName=issuer:copy
+authorityKeyIdentifier=keyid:always,issuer:always
+
diff --git a/roles/ca/files/CA/serial b/roles/ca/files/CA/serial
new file mode 100644
index 0000000000000000000000000000000000000000..a09a0c3783cdf79ac1c2fc8708b6d123c22e0f2b
--- /dev/null
+++ b/roles/ca/files/CA/serial
@@ -0,0 +1 @@
+A7217943DDD1145BC6F68CBA362CB35C
diff --git a/roles/ca/files/CA/serial.old b/roles/ca/files/CA/serial.old
new file mode 100644
index 0000000000000000000000000000000000000000..576257103e125420328f8dea4368ca88ed4e365f
--- /dev/null
+++ b/roles/ca/files/CA/serial.old
@@ -0,0 +1 @@
+a7217943ddd1145bc6f68cba362cb35b
diff --git a/roles/ca/files/truststore/SOCTOOLS-CA.crt b/roles/ca/files/truststore/SOCTOOLS-CA.crt
new file mode 100644
index 0000000000000000000000000000000000000000..04b1f203d036d2219c23c4ea3630115d68510eb8
--- /dev/null
+++ b/roles/ca/files/truststore/SOCTOOLS-CA.crt
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
+BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
+UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
+Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
+M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
+c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
+tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
+ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
+8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
+EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
+JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
+z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
+XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
+CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
+nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
+GPiQTFGknE1U
+-----END CERTIFICATE-----
diff --git a/roles/ca/files/truststore/cacerts.jks b/roles/ca/files/truststore/cacerts.jks
new file mode 100644
index 0000000000000000000000000000000000000000..9d4001b7d9a466941cda896b6bf145bf2f02020c
Binary files /dev/null and b/roles/ca/files/truststore/cacerts.jks differ
diff --git a/roles/ca/tasks/main.yml b/roles/ca/tasks/main.yml
index e851761376265268c0ea7af70ae65d47d789a43f..6ca350a28574cb3e5fb0accbe8244420c8303614 100644
--- a/roles/ca/tasks/main.yml
+++ b/roles/ca/tasks/main.yml
@@ -1,18 +1,8 @@
 ---
 
-- name: Create secret directory   
-  file:
-   path: "{{playbook_dir}}/{{item}}"
-   state: directory
-  loop:
-   - secrets
-   - secrets/certificates
-   - secrets/tokens
-   - secrets/passwords
-
 - name: Check for existing CA folder
   stat:
-    path: "{{playbook_dir}}/secrets/CA"
+    path: roles/ca/files/CA
   register: capath
 
 - name: build ca root key and cert
@@ -24,19 +14,27 @@
   environment:
     EASYRSA_BATCH: 1
     EASYRSA_REQ_CN: "{{ ca_cn }}"
-    EASYRSA_PKI: "{{playbook_dir}}/secrets/CA"
+    EASYRSA_PKI: roles/ca/files/CA
   when: not capath.stat.exists
 
+- name: Copy cert to truststore
+  copy:
+    src: roles/ca/files/CA/ca.crt
+    dest: "roles/ca/files/truststore/{{ ca_cn }}.crt"
+
 - name: Remove previous truststore
   file:
-    path: '{{playbook_dir}}/secrets/CA/cacerts.jks'
+    path: roles/ca/files/truststore/cacerts.jks
     state: absent
 
 - name: Generate truststore
   command: >
-    docker run --rm -v {{playbook_dir}}/secrets/CA/:/opt/cafiles/:z 
+    docker run --rm -v {{role_path}}/files/truststore/:/opt/cafiles/:z 
     "{{repo}}/openjdk:{{version}}{{suffix}}" keytool -import -noprompt -trustcacerts 
-    -alias "{{ ca_cn }}" -file "/opt/cafiles/ca.crt" -keystore /opt/cafiles/cacerts.jks -storepass "{{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}}"
+    -alias "{{item}}" -file "/opt/cafiles/{{item}}.crt" -keystore /opt/cafiles/cacerts.jks -storepass "{{tspass}}"
+  with_items:
+    - "{{ ca_cn }}"
+    #- GN43WP8T31_CA
 
 - name: Check for existing host certificates
   command: roles/ca/files/easyrsa/easyrsa show-cert {{item}}
@@ -49,17 +47,16 @@
     - "{{ groups['thehive'] }}"
     - "{{ groups['cortex'] }}"
     - "{{ groups['haproxy'] }}"
-    - "filebeat"
   environment:
     EASYRSA_BATCH: 1
-    EASYRSA_PKI: "{{playbook_dir}}/secrets/CA"
+    EASYRSA_PKI: roles/ca/files/CA
   register: hostcerts
   ignore_errors: true
 
 - name: Generate host certificates
   command: > 
     roles/ca/files/easyrsa/easyrsa 
-    --subject-alt-name="DNS:{{item}},DNS:{{soctoolsproxy}}"
+    --subject-alt-name="DNS:{{item}},DNS:{{dslproxy}}"
     build-serverClient-full {{item}} nopass
   with_items:
     - "{{ groups['nificontainers'] }}"
@@ -70,10 +67,9 @@
     - "{{ groups['thehive'] }}"
     - "{{ groups['cortex'] }}"
     - "{{ groups['haproxy'] }}"
-    - "filebeat"
   environment:
     EASYRSA_BATCH: 1
-    EASYRSA_PKI: "{{playbook_dir}}/secrets/CA"
+    EASYRSA_PKI: roles/ca/files/CA
   ignore_errors: true 
   loop_control:
     index_var: my_idx
@@ -97,7 +93,7 @@
   expect:
     command: roles/ca/files/easyrsa/easyrsa export-p12 {{item}}
     responses:
-      Enter Export Password: "{{lookup('password', '{{playbook_dir}}/secrets/passwords/keystore')}}"
+      Enter Export Password: "{{kspass}}"
   with_items:
     - "{{ groups['nificontainers'] }}"
     - "{{ groups['odfeescontainers'] }}"
@@ -108,7 +104,145 @@
     - "{{ groups['mispcontainers'] }}"
   environment:
     EASYRSA_BATCH: 1
-    EASYRSA_PKI: "{{playbook_dir}}/secrets/CA"
+    EASYRSA_PKI: roles/ca/files/CA
+
+- name: Copy nifi host certs to nifi role
+  copy:
+    src: roles/ca/files/CA/private/{{item}}.p12
+    dest: roles/nifi/files/{{item}}.p12
+  with_items:
+    - "{{ groups['nificontainers'] }}"
+
+- name: Copy odfees host certs to odfees role
+  copy:
+    src: roles/ca/files/CA/private/{{item}}.p12
+    dest: roles/odfees/files/{{item}}.p12
+  with_items:
+    - "{{ groups['odfeescontainers'] }}"
+
+- name: Copy odfekibana host p12 certs to odfekibana role
+  copy:
+    src: roles/ca/files/CA/private/{{item}}.p12
+    dest: roles/odfekibana/files/{{item}}.p12
+  with_items:
+    - "{{ groups['odfekibanacontainers'] }}"
+
+- name: Copy cortex host p12 certs to cortex role
+  copy:
+    src: roles/ca/files/CA/private/{{item}}.p12
+    dest: roles/cortex/files/{{item}}.p12
+  with_items:
+    - "{{ groups['cortex'] }}"
+
+- name: Copy odfekibana host certs to odfekibana role
+  copy:
+    src: roles/ca/files/CA/issued/{{item}}.crt
+    dest: roles/odfekibana/files/{{item}}.crt
+  with_items:
+    - "{{ groups['odfekibanacontainers'] }}"
+
+- name: Copy odfekibana host keys to odfekibana role
+  copy:
+    src: roles/ca/files/CA/private/{{item}}.key
+    dest: roles/odfekibana/files/{{item}}.key
+  with_items:
+    - "{{ groups['odfekibanacontainers'] }}"
+
+- name: Copy haproxy host cert to haproxy role
+  copy:
+    src: roles/ca/files/CA/issued/{{item}}.crt
+    dest: roles/haproxy/files/{{item}}.crt
+  with_items:
+    - "{{ groups['haproxy'] }}"
+
+- name: Copy haproxy host key to haproxy role
+  copy:
+    src: roles/ca/files/CA/private/{{item}}.key
+    dest: roles/haproxy/files/{{item}}.key
+  with_items:
+    - "{{ groups['haproxy'] }}"
+
+- name: Copy keycloak host certs to keycloak role
+  copy:
+    src: roles/ca/files/CA/issued/{{item}}.crt
+    dest: roles/keycloak/files/{{item}}.crt
+  with_items:
+    - "{{ groups['keycloakcontainers'] }}"
+
+- name: Copy keycloak host keys to keycloak role
+  copy:
+    src: roles/ca/files/CA/private/{{item}}.key
+    dest: roles/keycloak/files/{{item}}.key
+  with_items:
+    - "{{ groups['keycloakcontainers'] }}"
+
+- name: Copy misp host certs to misp role
+  copy:
+    src: roles/ca/files/CA/issued/{{item}}.crt
+    dest: roles/misp/files/{{item}}.crt
+  with_items:
+    - "{{ groups['mispcontainers'] }}"
+
+- name: Copy misp host keys to misp role
+  copy:
+    src: roles/ca/files/CA/private/{{item}}.key
+    dest: roles/misp/files/{{item}}.key
+  with_items:
+    - "{{ groups['mispcontainers'] }}"
+
+- name: Copy thehive host cert to thehive role
+  copy:
+    src: roles/ca/files/CA/issued/{{item}}.crt
+    dest: roles/thehive/files/{{item}}.crt
+  with_items:
+    - "{{ groups['thehive'] }}"
+
+- name: Copy thehive host key to thehive role
+  copy:
+    src: roles/ca/files/CA/private/{{item}}.key
+    dest: roles/thehive/files/{{item}}.key
+  with_items:
+    - "{{ groups['thehive'] }}"
+
+- name: Copy cortex host cert to cortex role
+  copy:
+    src: roles/ca/files/CA/issued/{{item}}.crt
+    dest: roles/cortex/files/{{item}}.crt
+  with_items:
+    - "{{ groups['cortex'] }}"
+
+- name: Copy cortex host key to cortex role
+  copy:
+    src: roles/ca/files/CA/private/{{item}}.key
+    dest: roles/cortex/files/{{item}}.key
+  with_items:
+    - "{{ groups['cortex'] }}"
+
+- name: Copy truststore to roles
+  copy:
+    src: roles/ca/files/truststore/cacerts.jks
+    dest: "roles/{{item}}/files/cacerts.jks"
+  with_items:
+    - nifi
+    - odfees
+    - odfekibana
+    - keycloak
+    - misp
+    - cortex
+    - thehive
+
+- name: Copy ca cert to roles
+  copy:
+    src: "roles/ca/files/truststore/{{ ca_cn }}.crt"
+    dest: "roles/{{item}}/files/{{ ca_cn }}.crt"
+  with_items:
+    - nifi
+    - odfees
+    - odfekibana
+    - keycloak
+    - misp
+    - thehive
+    - cortex
 
 - name: Check for existing user certificates
   command: roles/ca/files/easyrsa/easyrsa show-cert {{item.CN | regex_escape()}}
@@ -116,7 +250,7 @@
     - "{{soctools_users}}"
   environment:
     EASYRSA_BATCH: 1
-    EASYRSA_PKI: "{{playbook_dir}}/secrets/CA"
+    EASYRSA_PKI: roles/ca/files/CA
   register: usercerts
   ignore_errors: true
 
@@ -126,7 +260,7 @@
     - "{{soctools_users}}"
   environment:
     EASYRSA_BATCH: 1
-    EASYRSA_PKI: "{{playbook_dir}}/secrets/CA"
+    EASYRSA_PKI: roles/ca/files/CA
   ignore_errors: true
   loop_control:
     index_var: my_idx
@@ -136,17 +270,24 @@
   expect:
     command: roles/ca/files/easyrsa/easyrsa export-p12 "{{item.CN}}"
     responses:
-      Enter Export Password: "{{lookup('password', '{{playbook_dir}}/secrets/passwords/{{item.CN}}')}}"
+      Enter Export Password: "{{item.password}}"
   with_items:
     - "{{soctools_users}}"
   environment:
     EASYRSA_BATCH: 1
-    EASYRSA_PKI: "{{playbook_dir}}/secrets/CA"
+    EASYRSA_PKI: roles/ca/files/CA
+
+- name: Copy user certs to odfees
+  copy:
+    src: "roles/ca/files/CA/private/{{ item.CN }}.p12"
+    dest: "roles/odfees/files/{{ item.CN }}.p12"
+  with_items:
+    - "{{soctools_users}}"
 
-- name: Copy user certs to certificates
+- name: Copy user certs to odfekibana
   copy:
-    src: "{{playbook_dir}}/secrets/CA/private/{{ item.CN }}.p12"
-    dest: "{{playbook_dir}}/secrets/certificates/{{ item.CN }}.p12"
+    src: "roles/ca/files/CA/private/{{ item.CN }}.p12"
+    dest: "roles/odfekibana/files/{{ item.CN }}.p12"
   with_items:
     - "{{soctools_users}}"
 
diff --git a/roles/cassandra/tasks/main.yml b/roles/cassandra/tasks/main.yml
index f26e13b0d2279484dea86aa46ee76cb1b8088865..7912910a2ebcd07a79d6649b7529fae5bde3a0cf 100644
--- a/roles/cassandra/tasks/main.yml
+++ b/roles/cassandra/tasks/main.yml
@@ -1,17 +1,28 @@
 ---
 
-- include: start.yml
+- name: Configure Cassandra
+  template:
+    src: cassandra.yaml.j2
+    dest: /usr/share/cassandra/conf/cassandra.yaml
   tags:
-   - start
-- include: stop.yml
+    - start
+
+- name: Start Cassandra
+  command: "/start.sh"
   tags:
-   - stop
-   - stop-cassandra
-- include: update-config.yml
+    - start
+
+- name: Wait for Cassandra
+  wait_for:
+    host: "{{groups['cassandra'][0]}}"
+    port: 9042
+    state: started
+    delay: 5
   tags:
-   - update-config
-   - update-cassandra-config
-- include: restart.yml
+    - start
+
+- name: Stop Cassandra
+  command: "pkill -SIGTERM -F /var/run/cassandra/cassandra.pid"
   tags:
-   - restart
-   - restart-cassandra
+    - stop
+
diff --git a/roles/cassandra/tasks/restart.yml b/roles/cassandra/tasks/restart.yml
deleted file mode 100644
index b6e575bc1e4e2e1ebd6469bf05165ef0ba84a376..0000000000000000000000000000000000000000
--- a/roles/cassandra/tasks/restart.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-
-- name: Restart Cassandra
-  remote_user: root
-  command: "supervisorctl restart cassandra"
-
diff --git a/roles/cassandra/tasks/start.yml b/roles/cassandra/tasks/start.yml
deleted file mode 100644
index 1018944237cac5bfa616169d058ad0db794ea9f4..0000000000000000000000000000000000000000
--- a/roles/cassandra/tasks/start.yml
+++ /dev/null
@@ -1,27 +0,0 @@
----
-
-- name: Configure Cassandra
-  remote_user: cassandra
-  template:
-    src: cassandra.yaml.j2
-    dest: /usr/share/cassandra/conf/cassandra.yaml
-
-- name: Start Cassandra
-  remote_user: root
-  command: "supervisorctl start cassandra"
-
-- name: Wait for Cassandra
-  remote_user: root
-  wait_for:
-    host: "{{groups['cassandra'][0]}}"
-    port: 9042
-    state: started
-    delay: 5
-
-- name: Set Autostart for supervisord's services
-  replace:
-    path: /etc/supervisord.conf
-    regexp: '^autostart=false$'
-    replace: 'autostart=true'
-
-
diff --git a/roles/cassandra/tasks/stop.yml b/roles/cassandra/tasks/stop.yml
deleted file mode 100644
index 29742c7021fa80cda54b419cde925309cb4cf8a5..0000000000000000000000000000000000000000
--- a/roles/cassandra/tasks/stop.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-
-- name: Stop Cassandra
-  remote_user: root
-  command: "supervisorctl stop cassandra"
-
diff --git a/roles/cassandra/tasks/update-config.yml b/roles/cassandra/tasks/update-config.yml
deleted file mode 100644
index ceb0b6003da6268a734cc15461ed264fb5e38485..0000000000000000000000000000000000000000
--- a/roles/cassandra/tasks/update-config.yml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-
-- name: Configure Cassandra
-  remote_user: cassandra
-  template:
-    src: cassandra.yaml.j2
-    dest: /usr/share/cassandra/conf/cassandra.yaml
-
-- name: Wait for Cassandra
-  remote_user: root
-  wait_for:
-    host: "{{groups['cassandra'][0]}}"
-    port: 9042
-    state: started
-    delay: 5
diff --git a/roles/cortex/files/SOCTOOLS-CA.crt b/roles/cortex/files/SOCTOOLS-CA.crt
new file mode 100644
index 0000000000000000000000000000000000000000..04b1f203d036d2219c23c4ea3630115d68510eb8
--- /dev/null
+++ b/roles/cortex/files/SOCTOOLS-CA.crt
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
+BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
+UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
+Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
+M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
+c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
+tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
+ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
+8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
+EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
+JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
+z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
+XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
+CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
+nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
+GPiQTFGknE1U
+-----END CERTIFICATE-----
diff --git a/roles/cortex/files/cacerts.jks b/roles/cortex/files/cacerts.jks
new file mode 100644
index 0000000000000000000000000000000000000000..9d4001b7d9a466941cda896b6bf145bf2f02020c
Binary files /dev/null and b/roles/cortex/files/cacerts.jks differ
diff --git a/roles/cortex/files/cortexsecret b/roles/cortex/files/cortexsecret
new file mode 100644
index 0000000000000000000000000000000000000000..3119d1268684d95f0882fb9be3d331e62b0e26bc
--- /dev/null
+++ b/roles/cortex/files/cortexsecret
@@ -0,0 +1,3 @@
+{
+  "value" : "06ca9734-9621-4c6d-bb04-8ee68e028dd9"
+}
\ No newline at end of file
diff --git a/roles/cortex/files/dsoclab-cortex.crt b/roles/cortex/files/dsoclab-cortex.crt
new file mode 100644
index 0000000000000000000000000000000000000000..a743bd0055110d9dbad79cdcc70e2ccfe946b100
--- /dev/null
+++ b/roles/cortex/files/dsoclab-cortex.crt
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            5d:c4:bc:49:5f:a0:76:a8:13:a4:c2:32:61:64:0d:92
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:29 2020 GMT
+            Not After : Oct 15 10:47:29 2023 GMT
+        Subject: CN=dsoclab-cortex
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:cd:09:6b:14:33:4a:47:75:5b:d3:d9:67:3b:4d:
+                    ad:1f:a7:1f:33:ab:86:b1:aa:3b:09:ab:1a:a6:fb:
+                    a0:60:04:e3:68:33:0e:85:54:d1:70:61:8a:b9:d5:
+                    d6:b5:6c:c2:b3:36:02:94:b7:1d:18:93:5f:88:81:
+                    ff:2a:f4:99:58:6d:d7:96:e2:d2:64:77:b9:74:44:
+                    3c:f0:fb:5b:0f:43:7d:38:5d:fe:b0:db:05:7a:a9:
+                    c5:10:24:75:13:c8:2d:da:69:be:e3:43:33:f0:28:
+                    30:9a:53:f8:f8:d3:10:32:35:ec:1d:87:ab:1e:2c:
+                    b5:00:7c:9f:8f:61:e0:5d:56:15:8c:46:45:09:78:
+                    02:78:10:c0:af:2f:25:6c:c2:5b:ed:5f:c1:33:0b:
+                    f8:c8:13:dc:df:c3:fc:05:90:ff:06:9e:cb:bc:1d:
+                    2b:c2:57:f2:bd:aa:22:b3:4b:f5:ca:b2:b8:00:18:
+                    f1:14:10:b8:5e:69:9f:ed:fc:04:83:d9:2e:b7:9a:
+                    8a:45:1c:54:71:8f:61:02:6a:8a:84:2f:67:df:92:
+                    3a:0c:5f:e5:b6:e7:6c:27:69:1f:5b:06:d6:7f:e6:
+                    df:ab:2f:31:a5:cd:63:32:60:c0:07:50:6c:0d:39:
+                    cb:68:ae:3c:b2:da:0f:20:06:77:2c:28:ab:3a:30:
+                    92:1b
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                9A:0E:E1:26:13:A7:12:5F:A4:F1:41:C0:09:FC:AD:EB:4E:66:C2:50
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-cortex, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         27:2e:a1:0c:8d:fb:b1:36:ff:4e:ac:00:91:75:81:4b:20:79:
+         3f:da:1c:e1:80:b9:8c:6b:60:47:a5:8c:bf:1f:34:98:61:95:
+         00:bb:79:d4:9e:c8:fb:dc:fb:6a:48:b2:69:d1:1a:04:cc:52:
+         ca:0b:48:01:3e:94:1e:68:0b:e3:4d:fa:12:c4:aa:ff:b6:5b:
+         0c:3c:80:21:fe:50:87:8a:14:3a:7d:e7:a3:5e:b6:dc:22:ba:
+         cc:97:69:00:a8:78:08:dd:66:d1:cb:ca:28:41:b9:cc:8a:6b:
+         7c:40:b7:5e:1d:a1:88:5a:b3:fd:18:77:e9:c4:48:fd:38:8f:
+         06:6e:78:0e:f1:1a:1b:b2:6c:0a:df:38:11:e3:5a:3d:2a:5b:
+         de:41:63:14:ab:25:8e:a6:9f:a8:b7:32:9e:dc:23:45:f3:6b:
+         6d:86:b7:17:b3:53:df:55:bd:cb:41:a1:b7:73:ae:21:1b:68:
+         b3:b1:0a:e5:e6:0c:2a:77:76:23:f3:87:ee:5f:0e:6d:cd:3b:
+         94:9a:6f:f2:fd:4f:2d:72:a3:21:94:55:c0:4a:6c:2b:13:e3:
+         82:13:a5:1f:82:6b:ae:6e:e2:ec:eb:7a:25:6a:f2:9e:45:d7:
+         0a:7d:75:be:9d:f7:94:6f:ce:a5:27:d6:9b:dc:d2:12:54:64:
+         09:c4:f6:a9
+-----BEGIN CERTIFICATE-----
+MIIDljCCAn6gAwIBAgIQXcS8SV+gdqgTpMIyYWQNkjANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjlaFw0yMzEwMTUx
+MDQ3MjlaMBkxFzAVBgNVBAMMDmRzb2NsYWItY29ydGV4MIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAzQlrFDNKR3Vb09lnO02tH6cfM6uGsao7Casapvug
+YATjaDMOhVTRcGGKudXWtWzCszYClLcdGJNfiIH/KvSZWG3XluLSZHe5dEQ88Ptb
+D0N9OF3+sNsFeqnFECR1E8gt2mm+40Mz8CgwmlP4+NMQMjXsHYerHiy1AHyfj2Hg
+XVYVjEZFCXgCeBDAry8lbMJb7V/BMwv4yBPc38P8BZD/Bp7LvB0rwlfyvaois0v1
+yrK4ABjxFBC4Xmmf7fwEg9kut5qKRRxUcY9hAmqKhC9n35I6DF/ltudsJ2kfWwbW
+f+bfqy8xpc1jMmDAB1BsDTnLaK48stoPIAZ3LCirOjCSGwIDAQABo4HcMIHZMAkG
+A1UdEwQCMAAwHQYDVR0OBBYEFJoO4SYTpxJfpPFBwAn8retOZsJQMEYGA1UdIwQ/
+MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
+Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
+BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1jb3J0ZXiCHmRzb2NsYWIu
+Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAJy6hDI37
+sTb/TqwAkXWBSyB5P9oc4YC5jGtgR6WMvx80mGGVALt51J7I+9z7akiyadEaBMxS
+ygtIAT6UHmgL4036EsSq/7ZbDDyAIf5Qh4oUOn3no1623CK6zJdpAKh4CN1m0cvK
+KEG5zIprfEC3Xh2hiFqz/Rh36cRI/TiPBm54DvEaG7JsCt84EeNaPSpb3kFjFKsl
+jqafqLcyntwjRfNrbYa3F7NT31W9y0Ght3OuIRtos7EK5eYMKnd2I/OH7l8Obc07
+lJpv8v1PLXKjIZRVwEpsKxPjghOlH4Jrrm7i7Ot6JWrynkXXCn11vp33lG/OpSfW
+m9zSElRkCcT2qQ==
+-----END CERTIFICATE-----
diff --git a/roles/cortex/files/dsoclab-cortex.key b/roles/cortex/files/dsoclab-cortex.key
new file mode 100644
index 0000000000000000000000000000000000000000..827da545bbbd7bdc9b8c8527f8dfb4b086ba5221
--- /dev/null
+++ b/roles/cortex/files/dsoclab-cortex.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDNCWsUM0pHdVvT
+2Wc7Ta0fpx8zq4axqjsJqxqm+6BgBONoMw6FVNFwYYq51da1bMKzNgKUtx0Yk1+I
+gf8q9JlYbdeW4tJkd7l0RDzw+1sPQ304Xf6w2wV6qcUQJHUTyC3aab7jQzPwKDCa
+U/j40xAyNewdh6seLLUAfJ+PYeBdVhWMRkUJeAJ4EMCvLyVswlvtX8EzC/jIE9zf
+w/wFkP8Gnsu8HSvCV/K9qiKzS/XKsrgAGPEUELheaZ/t/ASD2S63mopFHFRxj2EC
+aoqEL2ffkjoMX+W252wnaR9bBtZ/5t+rLzGlzWMyYMAHUGwNOctorjyy2g8gBncs
+KKs6MJIbAgMBAAECggEAIdhGJqV4w2bp64Rdd/qQc0Mg8WSE7VrOOABYe+vZQ0BL
+UW3sHbIsiEJxpc9Yi8YSNYba0jWPxfi9skjTGAIcNe6bwbpbRF5G7Jw++wBivZhE
+WUOawRLGSsMvVkTOVp+agg0mh1kWf7QCodbuqBQe/krMWOuGIYr7rcLki8R6Rq2d
+WuW8Kf697ciklh/6cyy1J6axe1LNT906lYvyRock246KbN517wWw7/fu47Mb2fdC
+U6beFxbmbc5vk4lrViE7gSNkY97Vr/uXW9xlyRzvpNJuzZrm00CgNF1MnOnwf3l1
+k8kc63RMkUJGVWcxo5ubzLXpv4CnnmUNPfaSx+CeUQKBgQDuUT8JOu2vfzAC2VOQ
+OfKR4NgMQ8fnK6T67zpLDeNUAGW+hBi62ewD8xxRse0j/rWXgvADBE1GplPXicZI
+Q0o0VgIiL3NFQgCP7rvtPGE9VQXHYgd+ULKCHcPEBwonlbAhiHSwVnBqSFoqWdj+
+SHiBn4AD1ARoD6WSEVi3X6UU/QKBgQDcQATvzbbcr41vQHm9u1O7v0slk306A4yY
+ItXk+GbtLEoLAiLy7n0REKybZAzniuLCDAQ1h1bWLkqRle26XqVfg3YaxGpoJODy
+gPgr2Hi4Y/lcFrwRThUHEu8eaUWVRtY3B9Rgi5VjLVqydgI3/AFWdlzIVkhBeN0w
+MOtKdEg69wKBgG+wD/TJcz8+QkfzhiAfqDkJwPbuhS8n2yfnGdC274UcspI44kYf
+f2bSdsEqu9KUupIJQWaIi5bCuKRY415Wet5QOKvAxSr+JblOzy/9jizqPc0VeiGO
+vDoSrP6ftfibRHJSuy0xNXn58pfKh9GUMTW+hIZGxNHoE1aDXqqB3qIZAoGBAIIc
+A46SDLNDtZ6CDSjrD6T6dW8GONTboeOBuK+hmlQDdN4Z7gFqp1E8c2r8aK8jmZ8e
+MCJbCA5QnFZyplQRc0oAQ/W+EEnjd0tqqrBkGbR7wqQG/iSO5tcd9UoW0DdF+Gfb
+5Tb/XkmPUmPYWKkv4q5sD5V9ewPKXYgJbgW2ubCzAoGACfaFTBM3zZ2rqjJUk8+F
+fGcuDeh/ZFk4MgcN5nbdKHwyXDhBlUY1FzLZlKi5J1lRyTInZUP8KYnXogw757Md
+oa5wPlnw0a6VSHX1ZZUwa0yz1Rrv5M5CA4vyNBENCaHELKLoRWwbAook1gFie6cV
+nrCXNbsWttgWkzqLDWkPT5M=
+-----END PRIVATE KEY-----
diff --git a/roles/cortex/files/dsoclab-cortex.p12 b/roles/cortex/files/dsoclab-cortex.p12
new file mode 100644
index 0000000000000000000000000000000000000000..252b3e7ef466cf7a4090ab3d5c551bd8dcaf5e5f
Binary files /dev/null and b/roles/cortex/files/dsoclab-cortex.p12 differ
diff --git a/roles/cortex/files/logback.xml b/roles/cortex/files/logback.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2dfba2682f91f345376aa4266794eacff13623d3
--- /dev/null
+++ b/roles/cortex/files/logback.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false">
+
+    <conversionRule conversionWord="coloredLevel"
+                    converterClass="play.api.libs.logback.ColoredLevel"/>
+
+    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>/var/log/cortex/application.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+            <fileNamePattern>/var/log/cortex/application.%i.log.zip</fileNamePattern>
+            <minIndex>1</minIndex>
+            <maxIndex>10</maxIndex>
+        </rollingPolicy>
+        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+            <maxFileSize>10MB</maxFileSize>
+        </triggeringPolicy>
+        <encoder>
+            <pattern>%date [%level] from %logger in %thread - %message%n%xException</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%coloredLevel %logger{15} - %message%n%xException{10}
+            </pattern>
+        </encoder>
+    </appender>
+
+    <appender name="ASYNCFILE" class="ch.qos.logback.classic.AsyncAppender">
+        <appender-ref ref="FILE"/>
+    </appender>
+
+    <appender name="ASYNCSTDOUT" class="ch.qos.logback.classic.AsyncAppender">
+        <appender-ref ref="STDOUT"/>
+    </appender>
+
+    <logger name="play" level="DEBUG"/>
+    <logger name="application" level="DEBUG"/>
+
+    <logger name="com.gargoylesoftware.htmlunit.javascript" level="OFF"/>
+
+    <root level="INFO">
+        <appender-ref ref="ASYNCFILE"/>
+        <appender-ref ref="ASYNCSTDOUT"/>
+    </root>
+
+</configuration>
diff --git a/roles/cortex/tasks/main.yml b/roles/cortex/tasks/main.yml
index 5216d2c717a180540106714d58ae7d21241e4554..06b263933c3516e73f091c9e27ed4503869807f3 100644
--- a/roles/cortex/tasks/main.yml
+++ b/roles/cortex/tasks/main.yml
@@ -1,17 +1,108 @@
 ---
 
-- include: start.yml
+- name: Copy cacert to ca-trust dir
+  remote_user: root
+  copy:
+    src: "files/{{ca_cn}}.crt"
+    dest: /etc/pki/ca-trust/source/anchors/ca.crt
   tags:
-   - start
-- include: stop.yml
+    - start
+    - startcortex
+
+- name: Install cacert to root truststore
+  remote_user: root
+  command: "update-ca-trust"
+  tags:
+    - start
+    - startcortex
+
+- name: Copy certificates in cortex conf dir
+  copy:
+    src:  "{{ item }}"
+    dest: "/etc/cortex/{{ item }}"
+    mode: 0600
+  with_items:
+    - "{{ inventory_hostname }}.p12"
+    - "{{ inventory_hostname }}.crt"
+    - "{{ inventory_hostname }}.key"
+    - cacerts.jks
+    - "{{ca_cn}}.crt"
+  tags:
+    - start
+    - startcortex
+
+- name: Get openid authkey
+  set_fact:
+    cortexsecret: "{{lookup('file', 'files/cortexsecret',convert_data=False) | from_json }}"
+  tags:
+    - start
+
+- name: Configure embedded Elasticsearch 6
+  remote_user: root
+  template:
+    src: jvm.options.j2
+    dest: /etc/elasticsearch/jvm.options
+  tags:
+    - start
+    - startcortex
+
+- name: Start embedded Elasticsearch 6
+  remote_user: root
+  command: >
+    daemonize
+    -u elasticsearch
+    -c /usr/share/elasticsearch
+    -p /tmp/elasticsearch.pid
+    -o /tmp/elasticsearch-stdout.log
+    /usr/share/elasticsearch/bin/elasticsearch
   tags:
-   - stop
-   - stop-cortex
-- include: update-config.yml
+    - start
+    - startcortex
+
+- name: Configure Cortex
+  template:
+    src: application.conf.j2
+    dest: /etc/cortex/application.conf
   tags:
-   - update-config
-   - update-cortex-config
-- include: restart.yml
+    - start
+    - startcortex
+
+- name: Configure Cortex logging
+  copy:
+    src: logback.xml
+    dest: /etc/cortex/logback.xml
   tags:
-   - restart
-   - restart-cortex
+    - start
+
+- name: Start Cortex
+  command: >
+    daemonize 
+    -c /opt/cortex
+    -p /tmp/cortex.pid
+    -o /tmp/cortex-stdout.log 
+    /opt/cortex/bin/cortex
+    -Dconfig.file=/etc/cortex/application.conf 
+    -Dlogger.file=/etc/cortex/logback.xml 
+    -J-Xms1g
+    -J-Xmx1g
+    -Dpidfile.path=/dev/null
+  tags:
+    - start
+    - startcortex
+
+- name: Wait for Cortex
+  wait_for:
+    host: "{{groups['cortex'][0]}}"
+    port: 9001
+    state: started
+    delay: 5
+  tags:
+    - start
+    - startcortex
+
+- name: Stop Cortex
+  command: "pkill -SIGTERM -F /tmp/cortex.pid"
+  tags:
+    - stop
+    - stopcortex
+
diff --git a/roles/cortex/tasks/restart.yml b/roles/cortex/tasks/restart.yml
deleted file mode 100644
index d7b6e6a1adafb6aee4a590444b8d7cd3e67cd22d..0000000000000000000000000000000000000000
--- a/roles/cortex/tasks/restart.yml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-
-- name: Restart Elasticsearch
-  remote_user: root
-  command: "supervisorctl restart elasticsearch"
-
-- name: Restart Cortex
-  remote_user: root
-  command: "supervisorctl restart cortex"
-
-- name: Wait for Cortex
-  remote_user: root
-  wait_for:
-    host: "{{groups['cortex'][0]}}"
-    port: 9001
-    state: started
-    delay: 5
-
diff --git a/roles/cortex/tasks/start.yml b/roles/cortex/tasks/start.yml
deleted file mode 100644
index ddb37bc3f01c9a37165ecc98232d091d5ceb34d0..0000000000000000000000000000000000000000
--- a/roles/cortex/tasks/start.yml
+++ /dev/null
@@ -1,59 +0,0 @@
----
-
-- name: Copy cacert to ca-trust dir
-  remote_user: root
-  copy:
-    src: "{{playbook_dir}}/secrets/CA/ca.crt"
-    dest: /etc/pki/ca-trust/source/anchors/ca.crt
-
-- name: Install cacert to root truststore
-  remote_user: root
-  command: "update-ca-trust"
-
-- name: Copy certificates in cortex conf dir
-  remote_user: cortex
-  copy:
-    src:  "{{ item }}"
-    dest: "/etc/cortex/"
-    mode: 0600
-  with_items:
-    - "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.p12"
-    - "{{playbook_dir}}/secrets/CA/issued/{{ inventory_hostname }}.crt"
-    - "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.key"
-    - "{{playbook_dir}}/secrets/CA/cacerts.jks"
-    - "{{playbook_dir}}/secrets/CA/ca.crt"
-
-- name: Configure embedded Elasticsearch 6
-  remote_user: root
-  template:
-    src: jvm.options.j2
-    dest: /etc/elasticsearch/jvm.options
-
-- name: Start embedded Elasticsearch 6
-  remote_user: root
-  command: "supervisorctl start elasticsearch"
-
-- name: Configure Cortex
-  remote_user: cortex
-  template:
-    src: application.conf.j2
-    dest: /etc/cortex/application.conf
-
-- name: Start Cortex
-  remote_user: root
-  command: "supervisorctl start cortex"
-
-- name: Wait for Cortex
-  remote_user: root
-  wait_for:
-    host: "{{groups['cortex'][0]}}"
-    port: 9001
-    state: started
-    delay: 5
-
-- name: Set Autostart for supervisord's services
-  replace:
-    path: /etc/supervisord.conf
-    regexp: '^autostart=false$'
-    replace: 'autostart=true'
-
diff --git a/roles/cortex/tasks/stop.yml b/roles/cortex/tasks/stop.yml
deleted file mode 100644
index ee4516b0631564e891ac80bc1d37d4d514090ed9..0000000000000000000000000000000000000000
--- a/roles/cortex/tasks/stop.yml
+++ /dev/null
@@ -1,10 +0,0 @@
----
-
-- name: Stop Elasticsearch
-  remote_user: root
-  command: "supervisorctl stop elasticsearch"
-
-- name: Stop Cortex
-  remote_user: root
-  command: "supervisorctl stop cortex"
-
diff --git a/roles/cortex/tasks/update-config.yml b/roles/cortex/tasks/update-config.yml
deleted file mode 100644
index a49f24fe5e51ea8b1ab38ba4da00d4e6d8f9d853..0000000000000000000000000000000000000000
--- a/roles/cortex/tasks/update-config.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-
-- name: Configure embedded Elasticsearch 6
-  remote_user: root
-  template:
-    src: jvm.options.j2
-    dest: /etc/elasticsearch/jvm.options
-
-- name: Configure Cortex
-  remote_user: cortex
-  template:
-    src: application.conf.j2
-    dest: /etc/cortex/application.conf
-
diff --git a/roles/cortex/templates/application.conf.j2 b/roles/cortex/templates/application.conf.j2
index e45e446edc48c43d6c4e2a6ae7f9aa3f9b00f879..6d6d09c6808a308f791e19af61928cff430c3bdb 100644
--- a/roles/cortex/templates/application.conf.j2
+++ b/roles/cortex/templates/application.conf.j2
@@ -6,7 +6,7 @@
 #
 # IMPORTANT: If you deploy your application to several  instances,  make
 # sure to use the same key.
-play.http.secret.key="{{lookup('password', '{{playbook_dir}}/secrets/passwords/cortex_secret_key')}}"
+play.http.secret.key="{{cortex_secret_key}}"
 
 ## ElasticSearch
 search {
@@ -34,18 +34,18 @@ search {
 
 ##   ## Authentication configuration
 ##   search.username = "cortex"
-##   search.password = "{{lookup('password', '{{playbook_dir}}/secrets/passwords/cortex_odfe')}}"
+##   search.password = "{{cortex_odfe_pass}}"
 ## 
 ##   ## SSL configuration
 ##   search.keyStore {
-##     path = "/etc/cortex/soctools-cortex.p12"
+##     path = "/etc/cortex/dsoclab-cortex.p12"
 ##     type = "PKCS12" # or PKCS12
-##     password = "{{lookup('password', '{{playbook_dir}}/secrets/passwords/keystore')}}"
+##     password = "{{kspass}}"
 ##   }
 ##   search.trustStore {
 ##     path = "/etc/cortex/cacerts.jks"
 ##     type = "JKS" # or PKCS12
-##     password = "{{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}}"
+##     password = "{{tspass}}"
 ##   }
 }
 
@@ -66,7 +66,7 @@ auth {
 	#   the "ad" section below.
 	# - ldap : use LDAP to authenticate users. The associated configuration shall be done in the
 	#   "ldap" section below.
-	provider = [local]
+	provider = [local,oauth2]
 
 	ad {
 		# The Windows domain name in DNS format. This parameter is required if you do not use
@@ -108,6 +108,84 @@ auth {
 		# If 'true', use SSL to connect to the LDAP directory server.
 		#useSSL = true
 	}
+  oauth2 {
+    # URL of the authorization server
+    clientId = "dsoclab-cortex"
+    clientSecret = {{cortexsecret.value}}
+    redirectUri = "https://{{dslproxy}}:9001/api/ssoLogin"
+    responseType = "code"
+    grantType = "authorization_code"
+
+    # URL from where to get the access token
+    authorizationUrl = "https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/protocol/openid-connect/auth"
+    authorizationHeader = "Bearer"
+    tokenUrl = "https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/protocol/openid-connect/token"
+    
+
+    # The endpoint from which to obtain user details using the OAuth token, after successful login
+    userUrl = "https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/protocol/openid-connect/userinfo"
+    scope = "profile"
+    userIdField = "email"
+    #userUrl = "https://auth-site.com/api/User"
+    #scope = ["openid profile"]
+  }
+
+  ws.ssl.trustManager {
+    stores = [
+      {
+        type = "JKS" // JKS or PEM
+        path = "cacerts.jks"
+        password = "{{tspass}}"
+      }
+    ]
+  }
+
+
+  # Single-Sign On
+  sso {
+    # Autocreate user in database?
+    autocreate = true
+
+    # Autoupdate its profile and roles?
+    autoupdate = true
+
+    # Autologin user using SSO?
+    autologin = true
+
+    # Name of mapping class from user resource to backend user ('simple' or 'group')
+    #mapper = group
+    #mapper = simple
+    #attributes {
+    #  login = "user"
+    #  name = "name"
+    #  groups = "groups"
+    #  organization = "org"
+    #}
+#    defaultRoles = ["read", "write", "admin"]
+#    defaultOrganization = "uninett.no"
+    #defaultRoles = ["read"]
+    #defaultOrganization = "csirt"
+    #groups {
+    #  # URL to retreive groups (leave empty if you are using OIDC)
+    #  #url = "https://auth-site.com/api/Groups"
+    #  # Group mappings, you can have multiple roles for each group: they are merged
+    #  mappings {
+    #    admin-profile-name = ["admin"]
+    #    editor-profile-name = ["write"]
+    #    reader-profile-name = ["read"]
+    #  }
+    #}
+
+    mapper = simple
+    attributes {
+      login = "user"
+      name = "name"
+      roles = "roles"
+      organization = "org"
+    }
+    defaultRoles = ["read", "analyze"]
+    defaultOrganization = "uninett.no"
+  }
 }
 
 ## ANALYZERS
diff --git a/roles/docker/tasks/cassandra.yml b/roles/docker/tasks/cassandra.yml
index b913425d7171f5bb30f9b5a2434b521a09879ae6..a26bd28c104bc70cc17916496a1da8b68d978cd9 100644
--- a/roles/docker/tasks/cassandra.yml
+++ b/roles/docker/tasks/cassandra.yml
@@ -10,6 +10,7 @@
     networks_cli_compatible: yes
     volumes:
       - "{{cassandra_name}}:/var/lib/cassandra"
+    entrypoint: "/bin/bash"
     interactive: "yes"
   with_items: "{{ groups['cassandra'] }}"
   tags:
diff --git a/roles/docker/tasks/cortex.yml b/roles/docker/tasks/cortex.yml
index 15a0732d1d90e4403f020e1edf868c34ab0d5dfc..c8d7b1ea2fd7564d5e4829620e994773168d11c7 100644
--- a/roles/docker/tasks/cortex.yml
+++ b/roles/docker/tasks/cortex.yml
@@ -12,6 +12,7 @@
 #      - "9001:9001"
     volumes: 
       - "{{item}}:/var/lib/elasticsearch/"
+    entrypoint: "/bin/bash"
     interactive: "yes"
   with_items: "{{ groups['cortex'] }}"
   tags:
diff --git a/roles/docker/tasks/haproxy.yml b/roles/docker/tasks/haproxy.yml
index b0180761f4f3c18982f21d9f5b8307066146daed..10dc08e09d929ab86254e4bb37b962da8880338c 100644
--- a/roles/docker/tasks/haproxy.yml
+++ b/roles/docker/tasks/haproxy.yml
@@ -15,10 +15,9 @@
       - "9443:9443"
       - "9200:9200"
       - "7750:7750"
-      - "5000-5099:5000-5099"
-      - "6000-6099:6000-6099"
       - "9000:9000"
       - "9001:9001"
+    entrypoint: "/bin/bash"
     interactive: "yes"
   tags:
     - start
diff --git a/roles/docker/tasks/keycloak.yml b/roles/docker/tasks/keycloak.yml
index 1fddf2a13aa6086a09ef7ad9c0f8ea1c7aa7b3b9..c910408f048a5fa76ace4a47ec1c2d32a314c21f 100644
--- a/roles/docker/tasks/keycloak.yml
+++ b/roles/docker/tasks/keycloak.yml
@@ -10,6 +10,7 @@
     networks_cli_compatible: yes
     published_ports:
       - "12443:8443"
+    entrypoint: "/bin/bash"
     interactive: "yes"
   with_items: "{{ groups['keycloakcontainers'] }}"
   tags:
diff --git a/roles/docker/tasks/misp.yml b/roles/docker/tasks/misp.yml
index f32e440eeff7e9d8c1406cf76bafde97aaba19d0..34a42ad3c033abf3c58a1664a92205b9cb76f69e 100644
--- a/roles/docker/tasks/misp.yml
+++ b/roles/docker/tasks/misp.yml
@@ -7,8 +7,9 @@
     image: "{{ misp_img }}"
     networks:
       - name: "{{ soctools_netname}}"
-    interactive: "yes"
     networks_cli_compatible: yes
+    entrypoint: "/bin/bash"
+    interactive: "yes"
     published_ports:
       - "6443:6443"
   tags:
diff --git a/roles/docker/tasks/nifi.yml b/roles/docker/tasks/nifi.yml
index e85fb61a10993c070180291d6c1ff8d06c74dece..7023444e9c0181dcde646dd0f1b4e55dc1f2b031 100644
--- a/roles/docker/tasks/nifi.yml
+++ b/roles/docker/tasks/nifi.yml
@@ -10,6 +10,7 @@
     networks_cli_compatible: yes
     volumes:
       - "{{item}}:/opt/nifi/nifi-current/conf"
+    entrypoint: "/bin/bash"
     interactive: "yes"
   with_items: "{{ groups['nificontainers'] }}"
   tags:
diff --git a/roles/docker/tasks/odfees.yml b/roles/docker/tasks/odfees.yml
index fa35ddd58f54e597b24c030636c34fb650f732b8..d54ebd59216d12b7c42e15005b3f6b15fb9affa9 100644
--- a/roles/docker/tasks/odfees.yml
+++ b/roles/docker/tasks/odfees.yml
@@ -10,6 +10,7 @@
     networks_cli_compatible: yes
     volumes:
       - "{{item}}:/usr/share/elasticsearch/data"
+    entrypoint: "/bin/bash"
     interactive: "yes"
   with_items: "{{ groups['odfeescontainers'] }}"
   tags:
diff --git a/roles/docker/tasks/odfekibana.yml b/roles/docker/tasks/odfekibana.yml
index a1c88a2932cd76350e3fedadbec1e2f5511d0748..c24611b8869d7b1163065721d600ae7318356ddc 100644
--- a/roles/docker/tasks/odfekibana.yml
+++ b/roles/docker/tasks/odfekibana.yml
@@ -10,6 +10,7 @@
     networks_cli_compatible: yes
     published_ports:
       - "5601:5601"
+    entrypoint: "/bin/bash"
     interactive: "yes"
   with_items: "{{ groups['odfekibanacontainers'] }}"
   tags:
diff --git a/roles/docker/tasks/thehive.yml b/roles/docker/tasks/thehive.yml
index 68fdd3c3f21e711ee957feee298b24544e9bbc66..30b11c82ba446fffadd57d3f4e102322e49bb0b8 100644
--- a/roles/docker/tasks/thehive.yml
+++ b/roles/docker/tasks/thehive.yml
@@ -10,10 +10,12 @@
     networks_cli_compatible: yes
 #    published_ports:
 #      - "9000:9000"
+    entrypoint: "/bin/bash"
     interactive: "yes"
   with_items: "{{ groups['thehive'] }}"
   tags:
     - start
+    - thehivestart
 
 - name: Disconnect thehive containers from network and remove
   docker_container:
@@ -22,4 +24,4 @@
   with_items: "{{ groups['thehive'] }}"
   tags:
     - stop
-
+    - thehivestop
diff --git a/roles/filebeat/README.md b/roles/filebeat/README.md
deleted file mode 100644
index 225dd44b9fc5b3abff7e9c68ff9e91d505cdd5f0..0000000000000000000000000000000000000000
--- a/roles/filebeat/README.md
+++ /dev/null
@@ -1,38 +0,0 @@
-Role Name
-=========
-
-A brief description of the role goes here.
-
-Requirements
-------------
-
-Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
-
-Role Variables
---------------
-
-A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
-
-Dependencies
-------------
-
-A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
-
-Example Playbook
-----------------
-
-Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
-
-    - hosts: servers
-      roles:
-         - { role: username.rolename, x: 42 }
-
-License
--------
-
-BSD
-
-Author Information
-------------------
-
-An optional section for the role authors to include contact information, or a website (HTML is not allowed).
diff --git a/roles/filebeat/defaults/main.yml b/roles/filebeat/defaults/main.yml
deleted file mode 100644
index 4a9a7a62e52d04774a78e3177a0df325d2949e66..0000000000000000000000000000000000000000
--- a/roles/filebeat/defaults/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-# defaults file for filebeat
diff --git a/roles/filebeat/files/.gitkeep b/roles/filebeat/files/.gitkeep
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/roles/filebeat/handlers/main.yml b/roles/filebeat/handlers/main.yml
deleted file mode 100644
index 40c1d20b192d1b9993f0859ad4f07df6220f0efa..0000000000000000000000000000000000000000
--- a/roles/filebeat/handlers/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-# handlers file for filebeat
diff --git a/roles/filebeat/meta/main.yml b/roles/filebeat/meta/main.yml
deleted file mode 100644
index 3a212a9364cdcb2e9f1f2841cd12b091e3f6e3a0..0000000000000000000000000000000000000000
--- a/roles/filebeat/meta/main.yml
+++ /dev/null
@@ -1,53 +0,0 @@
-galaxy_info:
-  author: your name
-  description: your description
-  company: your company (optional)
-
-  # If the issue tracker for your role is not on github, uncomment the
-  # next line and provide a value
-  # issue_tracker_url: http://example.com/issue/tracker
-
-  # Choose a valid license ID from https://spdx.org - some suggested licenses:
-  # - BSD-3-Clause (default)
-  # - MIT
-  # - GPL-2.0-or-later
-  # - GPL-3.0-only
-  # - Apache-2.0
-  # - CC-BY-4.0
-  license: license (GPL-2.0-or-later, MIT, etc)
-
-  min_ansible_version: 2.4
-
-  # If this a Container Enabled role, provide the minimum Ansible Container version.
-  # min_ansible_container_version:
-
-  #
-  # Provide a list of supported platforms, and for each platform a list of versions.
-  # If you don't wish to enumerate all versions for a particular platform, use 'all'.
-  # To view available platforms and versions (or releases), visit:
-  # https://galaxy.ansible.com/api/v1/platforms/
-  #
-  # platforms:
-  # - name: Fedora
-  #   versions:
-  #   - all
-  #   - 25
-  # - name: SomePlatform
-  #   versions:
-  #   - all
-  #   - 1.0
-  #   - 7
-  #   - 99.99
-
-  galaxy_tags: []
-    # List tags for your role here, one per line. A tag is a keyword that describes
-    # and categorizes the role. Users find roles by searching for tags. Be sure to
-    # remove the '[]' above, if you add tags to this list.
-    #
-    # NOTE: A tag is limited to a single word comprised of alphanumeric characters.
-    #       Maximum 20 tags per role.
-
-dependencies: []
-  # List your role dependencies here, one per line. Be sure to remove the '[]' above,
-  # if you add dependencies to this list.
-  
\ No newline at end of file
diff --git a/roles/filebeat/tasks/main.yml b/roles/filebeat/tasks/main.yml
deleted file mode 100644
index 02ac9c7ed8c8f4eba2c4a99295202d1acbd72090..0000000000000000000000000000000000000000
--- a/roles/filebeat/tasks/main.yml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-
-- include: start.yml
-  tags:
-   - start
-- include: stop.yml
-  tags:
-   - stop
-   - stop-filebeat
-- include: update-config.yml
-  tags:
-   - update-config
-   - update-filebeat-config
-- include: restart.yml
-  tags:
-   - restart
-   - restart-filebeat
diff --git a/roles/filebeat/tasks/restart.yml b/roles/filebeat/tasks/restart.yml
deleted file mode 100644
index cf2c893fe05c07d269572def4184a8d920ce33fe..0000000000000000000000000000000000000000
--- a/roles/filebeat/tasks/restart.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-# tasks file for filebeat
-
-- name: Restart filebeat
-  remote_user: root
-  shell: "supervisorctl restart filebeat"
-  ignore_errors: yes
-  
diff --git a/roles/filebeat/tasks/start.yml b/roles/filebeat/tasks/start.yml
deleted file mode 100644
index 1944c1f0ec815b4c1075035fc4dc77c2b948f926..0000000000000000000000000000000000000000
--- a/roles/filebeat/tasks/start.yml
+++ /dev/null
@@ -1,23 +0,0 @@
----
-# tasks file for filebeat
-
-- name: Copy filebeat certificates
-  copy:
-    src:  "{{ item }}"
-    dest: "/opt/filebeat/"
-    mode: 0600
-  with_items:
-    - "{{playbook_dir}}/secrets/CA/issued/filebeat.crt"
-    - "{{playbook_dir}}/secrets/CA/private/filebeat.key"
-  become: true
-
-- name: Copy filebeat configuration file
-  template:
-    src: filebeat.yml.j2
-    dest: /opt/filebeat/filebeat.yml
-  become: true
-
-- name: Restart filebeat
-  remote_user: root
-  shell: "supervisorctl restart filebeat"
-  ignore_errors: yes
diff --git a/roles/filebeat/tasks/stop.yml b/roles/filebeat/tasks/stop.yml
deleted file mode 100644
index c5d5dd69d19ba5d40666fe28af612d1363f45f41..0000000000000000000000000000000000000000
--- a/roles/filebeat/tasks/stop.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-# tasks file for filebeat
-
-- name: Stop filebeat
-  remote_user: root
-  shell: "supervisorctl stop filebeat"
-  ignore_errors: yes
-
diff --git a/roles/filebeat/tasks/update-config.yml b/roles/filebeat/tasks/update-config.yml
deleted file mode 100644
index a4c4e304854c954ebb6129b08077d5aef10ced0b..0000000000000000000000000000000000000000
--- a/roles/filebeat/tasks/update-config.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-# tasks file for filebeat
-
-- name: Copy filebeat configuration file
-  template:
-    src: filebeat.yml.j2
-    dest: /opt/filebeat/filebeat.yml
-  become: true
-
diff --git a/roles/filebeat/templates/filebeat.yml.j2 b/roles/filebeat/templates/filebeat.yml.j2
deleted file mode 100644
index 78af99c2330bbe35e9500bb98c231c6d6be2bde8..0000000000000000000000000000000000000000
--- a/roles/filebeat/templates/filebeat.yml.j2
+++ /dev/null
@@ -1,35 +0,0 @@
-filebeat.inputs:
-{% if FILEBEAT_FILES is defined %}
-- type: log
-  paths:
-{% for file in FILEBEAT_FILES %}
-      - {{ file }}
-{% endfor %}
-{% if FILEBEAT_LOG_FORMAT == 'json' %}
-  json.keys_under_root: true
-  json.overwrite_keys: true
-  json.add_error_key: true
-  json.message_key: log
-  multiline.pattern: '^{'
-  multiline.negate: true 
-  multiline.match: after
-{% endif %}
-{% else %}
-- type: syslog
-  protocol.udp:
-    host: "localhost:{{ FILEBEAT_SYSLOG_PORT }}"
-{% endif %}
-  fields:
-    log_type: {{ FILEBEAT_LOG_TYPE }}
-
-filebeat.config.modules:
-  path: ${path.config}/modules.d/*.yml
-  reload.enabled: false
-
-output.logstash:
-  hosts: ["{{ FILEBEAT_OUTPUT_HOST }}:{{ FILEBEAT_OUTPUT_PORT }}"]
-  workers: 3
-  loadbalance: true
-  #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
-  #ssl.certificate: "{{ FILEBEAT_CERT }}""
-  #ssl.key: "{{ FILEBEAT_KEY }}"
diff --git a/roles/filebeat/tests/inventory b/roles/filebeat/tests/inventory
deleted file mode 100644
index 878877b0776c44f55fc4e458f70840f31da5bb01..0000000000000000000000000000000000000000
--- a/roles/filebeat/tests/inventory
+++ /dev/null
@@ -1,2 +0,0 @@
-localhost
-
diff --git a/roles/filebeat/tests/test.yml b/roles/filebeat/tests/test.yml
deleted file mode 100644
index 12223ca87b8282eda378547b93ef39c83f837974..0000000000000000000000000000000000000000
--- a/roles/filebeat/tests/test.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-- hosts: localhost
-  remote_user: root
-  roles:
-    - filebeat
diff --git a/roles/filebeat/vars/main.yml b/roles/filebeat/vars/main.yml
deleted file mode 100644
index 137cdf365d907cc2f19027375f80730756bd9e37..0000000000000000000000000000000000000000
--- a/roles/filebeat/vars/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-# vars file for filebeat
diff --git a/roles/haproxy/files/.empty b/roles/haproxy/files/.empty
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/roles/haproxy/files/dsoclab-haproxy.crt b/roles/haproxy/files/dsoclab-haproxy.crt
new file mode 100644
index 0000000000000000000000000000000000000000..5be39cb377745bb5bc5303c2b7d55d44877f9260
--- /dev/null
+++ b/roles/haproxy/files/dsoclab-haproxy.crt
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            d2:7b:43:cb:9b:fb:09:cf:cc:86:ef:d1:01:9a:42:fc
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:30 2020 GMT
+            Not After : Oct 15 10:47:30 2023 GMT
+        Subject: CN=dsoclab-haproxy
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:c9:c7:22:33:0b:0b:0f:a0:8c:c4:a9:81:37:bd:
+                    51:2f:47:32:fa:1b:88:45:b1:bb:11:43:3d:de:b3:
+                    70:67:d7:8b:39:5a:8f:13:fb:2f:78:08:b1:b1:32:
+                    c6:d1:0e:e4:d3:2e:3a:db:84:db:d2:65:6b:26:24:
+                    6c:d7:16:e5:a5:90:8e:02:46:13:02:0a:96:66:46:
+                    87:b7:b0:ee:56:4c:3c:d8:ae:4c:7d:ef:5b:aa:6e:
+                    01:8e:89:fe:4c:b9:de:6c:ba:e4:3f:8d:f8:d7:3a:
+                    ed:b2:29:9a:5b:ac:5a:86:66:05:f3:19:2f:59:8d:
+                    7c:8b:6a:97:1e:43:8a:36:80:b2:e9:e1:84:f6:94:
+                    bc:13:11:31:b8:d2:5a:72:ed:68:c3:b1:37:e4:5b:
+                    91:82:62:aa:13:f2:b6:e0:3a:aa:85:66:70:0a:a9:
+                    ad:5c:a7:52:ff:dc:f9:99:5e:e5:15:d5:0c:fe:cd:
+                    27:cb:98:9e:5a:69:ca:71:74:31:e6:26:df:ec:d2:
+                    42:43:b9:f3:04:8e:2c:7a:28:a6:f9:8e:ba:64:3c:
+                    69:0e:ac:f5:dc:d5:f3:2a:50:47:50:d4:8c:f5:ee:
+                    31:08:73:69:1f:ae:42:1d:52:84:5d:47:68:dd:a3:
+                    1f:07:57:ec:3e:9e:0d:23:78:16:41:bc:68:f2:4f:
+                    e9:19
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                49:DC:74:02:17:71:C3:D0:A0:64:31:9E:60:2B:B4:38:43:62:DE:98
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-haproxy, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         04:a0:71:31:d2:11:93:09:96:c8:1b:2a:31:b8:b9:34:07:ac:
+         89:cb:b0:6c:b0:f0:17:5f:18:3c:a6:96:ca:b3:fa:c7:af:40:
+         17:e1:7e:e4:dc:ee:fe:5c:dc:86:40:b7:2f:9d:c0:9e:fd:16:
+         6b:85:ab:c2:a8:63:1f:fe:03:2b:89:6a:80:c9:2e:ae:cc:3d:
+         19:75:32:0e:56:57:16:27:02:51:49:1d:b3:78:aa:57:d3:00:
+         9b:93:fe:6d:a3:37:ad:26:35:57:e1:5f:90:bf:ef:30:bc:68:
+         f3:bf:7c:59:69:4f:61:30:2d:48:66:a6:44:2a:51:63:6e:4f:
+         a7:8f:96:7e:91:b2:b2:46:bc:97:1b:01:df:c0:24:5c:b2:aa:
+         8d:20:3a:25:5d:8a:1c:84:53:0d:d4:f6:d5:81:5d:30:de:c4:
+         d7:fa:42:9c:79:68:92:56:b7:76:69:c6:c9:ad:07:47:a6:d2:
+         46:d4:a5:0c:10:a9:03:21:4d:56:40:e5:28:e3:fa:70:1b:23:
+         32:68:07:3d:d6:8a:3a:fb:6d:3b:a6:20:16:1b:09:f3:47:f0:
+         2a:4f:dc:97:86:56:37:96:42:1b:89:b8:76:1a:ab:7a:25:4e:
+         e8:62:d9:a0:3b:ec:62:72:64:64:ca:87:9c:be:0a:08:09:52:
+         ab:03:89:2b
+-----BEGIN CERTIFICATE-----
+MIIDmTCCAoGgAwIBAgIRANJ7Q8ub+wnPzIbv0QGaQvwwDQYJKoZIhvcNAQELBQAw
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzMwWhcNMjMxMDE1
+MTA0NzMwWjAaMRgwFgYDVQQDDA9kc29jbGFiLWhhcHJveHkwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQDJxyIzCwsPoIzEqYE3vVEvRzL6G4hFsbsRQz3e
+s3Bn14s5Wo8T+y94CLGxMsbRDuTTLjrbhNvSZWsmJGzXFuWlkI4CRhMCCpZmRoe3
+sO5WTDzYrkx971uqbgGOif5Mud5suuQ/jfjXOu2yKZpbrFqGZgXzGS9ZjXyLapce
+Q4o2gLLp4YT2lLwTETG40lpy7WjDsTfkW5GCYqoT8rbgOqqFZnAKqa1cp1L/3PmZ
+XuUV1Qz+zSfLmJ5aacpxdDHmJt/s0kJDufMEjix6KKb5jrpkPGkOrPXc1fMqUEdQ
+1Iz17jEIc2kfrkIdUoRdR2jdox8HV+w+ng0jeBZBvGjyT+kZAgMBAAGjgd0wgdow
+CQYDVR0TBAIwADAdBgNVHQ4EFgQUSdx0Ahdxw9CgZDGeYCu0OENi3pgwRgYDVR0j
+BD8wPYAUeQbKQNOfmlSu0zNN8jg+tgvzPc+hGqQYMBYxFDASBgNVBAMMC1NPQ1RP
+T0xTLUNBggkAinSTJoBbQrcwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
+MAsGA1UdDwQEAwIFoDA6BgNVHREEMzAxgg9kc29jbGFiLWhhcHJveHmCHmRzb2Ns
+YWIuZ240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEABKBx
+MdIRkwmWyBsqMbi5NAesicuwbLDwF18YPKaWyrP6x69AF+F+5Nzu/lzchkC3L53A
+nv0Wa4WrwqhjH/4DK4lqgMkursw9GXUyDlZXFicCUUkds3iqV9MAm5P+baM3rSY1
+V+FfkL/vMLxo8798WWlPYTAtSGamRCpRY25Pp4+WfpGyska8lxsB38AkXLKqjSA6
+JV2KHIRTDdT21YFdMN7E1/pCnHlokla3dmnGya0HR6bSRtSlDBCpAyFNVkDlKOP6
+cBsjMmgHPdaKOvttO6YgFhsJ80fwKk/cl4ZWN5ZCG4m4dhqreiVO6GLZoDvsYnJk
+ZMqHnL4KCAlSqwOJKw==
+-----END CERTIFICATE-----
diff --git a/roles/haproxy/files/dsoclab-haproxy.key b/roles/haproxy/files/dsoclab-haproxy.key
new file mode 100644
index 0000000000000000000000000000000000000000..abcca5eaafc03ebe472bc28a09ae04de65e2fa7f
--- /dev/null
+++ b/roles/haproxy/files/dsoclab-haproxy.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJxyIzCwsPoIzE
+qYE3vVEvRzL6G4hFsbsRQz3es3Bn14s5Wo8T+y94CLGxMsbRDuTTLjrbhNvSZWsm
+JGzXFuWlkI4CRhMCCpZmRoe3sO5WTDzYrkx971uqbgGOif5Mud5suuQ/jfjXOu2y
+KZpbrFqGZgXzGS9ZjXyLapceQ4o2gLLp4YT2lLwTETG40lpy7WjDsTfkW5GCYqoT
+8rbgOqqFZnAKqa1cp1L/3PmZXuUV1Qz+zSfLmJ5aacpxdDHmJt/s0kJDufMEjix6
+KKb5jrpkPGkOrPXc1fMqUEdQ1Iz17jEIc2kfrkIdUoRdR2jdox8HV+w+ng0jeBZB
+vGjyT+kZAgMBAAECggEAUcxwiNDJQySK7I7q23XcG5Z5i/rtW5OZin3/7vA/eVlg
+D3gu2KLTs42Su4siHk4zZYkwQx2xH7INpgDOPsQBhQT9DN7rhcBVCFE/Y7BObp2p
+bQ375HHMb2L5Lpeyh9gx21JIhZtAbcBt6/QBp3hPmnxxnQNwtpUtEDe923714PHD
+SfJ1Nd+mgeJ3ShPrk2jhcDdU82/mQrk5eH8M5QJqlTEWCvBgJaKhBf89T2XrX8jf
+oPzeVijOqgLg49QEtAPmI98GlE1OAp3boFx4/QA/s76pgWZhYIm1hcm1AguYhQvJ
+bi96IgdgVQQp/y7L+ix8zsq+YRxwPuCSBl+9BotYoQKBgQDm4neNC87XV4RhGuHG
+w8WpFXFe1uOucPfyfTMmjifh61GZa4aWgBQByBQxBs729MOr9TFrNApTGWPO8Lag
+ANnREyNndaUAUFgtCdY7Gc99deWyIx861aAVU7GGIFVkCo3OK0twbbyzqOj+B+H8
+c/P1tXXMayt/gPVuRDj7sq90VwKBgQDfuh6Clxa2sq0GdKsRkiDXaY8eZxJZchYw
++0MsYQjX8hPOGn0YWGy14ppE7JEPTEWSRuzCf5cwem/em8AIESgdCUWcGkgcQO5n
+DvZeXrHHpVrTmGE5xEVNYrD/NPY7VizUsyLNvn5yC4hyByWkwLV+AUGpACE3HP2s
+7xTakmmoDwKBgHKEfXuuEafptrVbWgT2cYHOKu85crDBQ5o40zgaZlm+GDkahiT7
+3fCMRseScvE2sh8GfL6Jj11sSH8KEesGwQLclUDpry+aqkGckW+6+5lk8ssKdKD/
++GjbnD/EpdX7Dh7mhoJ7S49pBjeJvWM0OBr1KDp+JZMWaaWJnSHqnO/9AoGAXvM4
+m6fP5f3y3PiK2cwwz/tm2DpaWUfID0Wz/pO4Ex4UNbacPMbabF8dpf7Ymat/I1Oi
+i/FmkxaDf/COEV5mrdwPhO7Kh+MuyuJYwThjLx4IbCERsliQKQWnpMgvcINkR2k3
+biZYt8IZSHusCD4ZSL7zxOvfLOrK5qgZK6JT4RUCgYEAk94TNC+rYRZOfOIaYA7+
+K1qTQAe8tawTBlKauXptWCzMFtMSEwozuHuxgnyAS/uRUKFMgRk00KrSvnuyGEBX
+5QxqqhBOMvGDs672q/kVZ5C9M06+y5+Zpg0Mf3r+zOBqB5tCASnl2KfOCZkAt8rV
+kyb4KyOsi81/fpVM/WeOL7w=
+-----END PRIVATE KEY-----
diff --git a/roles/haproxy/files/haproxy.cfg b/roles/haproxy/files/haproxy.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e102cf4d928a0f73102c86fa3e8372c1613bb9ac
--- /dev/null
+++ b/roles/haproxy/files/haproxy.cfg
@@ -0,0 +1,17 @@
+global
+  quiet
+
+defaults
+  mode http
+  maxconn 5000
+
+  timeout connect 5s
+  timeout client  20s
+  timeout server  20s
+
+frontend public
+    bind *:80
+    default_backend apps
+
+backend apps
+    server nifi_1 nifi_1:8080 check
diff --git a/roles/haproxy/tasks/main.yml b/roles/haproxy/tasks/main.yml
index 00ff3573b0523cbc4c0f71d1514bc862117d7e6e..d8bcefb127b59568b20742ec123ca25130438ee6 100644
--- a/roles/haproxy/tasks/main.yml
+++ b/roles/haproxy/tasks/main.yml
@@ -1,17 +1,68 @@
 ---
+# tasks file for haproxy
 
-- include: start.yml
+- name: Copy haproxy configuration file
+  template:
+    src: haproxy.cfg.j2
+    dest: /usr/local/etc/haproxy/haproxy.cfg
   tags:
-   - start
-- include: stop.yml
+    - start
+
+- name: Create required directories
+  file:
+   path: "{{ item }}"
+   state: directory
+   mode: 0755
+   owner: root
+   group: root
+  with_items:
+  - /opt/haproxy
+  - /etc/ssl/haproxy
+  tags:
+    - start
+
+- name: Generate dhparam file for haproxy
+  shell: "openssl dhparam -out /usr/local/etc/haproxy/dhparam.pem 2048"
   tags:
-   - stop
-   - stop-haproxy
-- include: update-config.yml
+    - start
+
+- name: Copy haproxy certificates
+  copy:
+    src:  "{{ item }}"
+    dest: "/opt/haproxy/{{ item }}"
+    mode: 0600
+  with_items:
+    - "{{ inventory_hostname }}.crt"
+    - "{{ inventory_hostname }}.key"
   tags:
-   - update-config
-   - update-haproxy-config
-- include: restart.yml
+    - start
+
+- name: Combine crt and key for haproxy
+  assemble:
+    src: /opt/haproxy
+    dest: /etc/ssl/haproxy/{{ inventory_hostname }}.crt
+    owner: root
+    mode: 0600
   tags:
-   - restart
-   - restart-haproxy
+    - start
+
+- name: Delete temporary files and directory
+  file:
+    path: "{{ item }}"
+    state: absent
+  with_items:
+    - /opt/haproxy/{{ inventory_hostname }}.crt
+    - /opt/haproxy/{{ inventory_hostname }}.key
+    - /opt/haproxy
+  tags:
+    - start
+
+- name: Start haproxy
+  shell: "daemonize -c / -p /haproxy.pid /usr/local/sbin/haproxy -f /usr/local/etc/haproxy/haproxy.cfg"
+  tags:
+    - start
+
+#- name: Stop haproxy
+#  tags:
+#    - stop
+
diff --git a/roles/haproxy/tasks/restart.yml b/roles/haproxy/tasks/restart.yml
deleted file mode 100644
index 30c56b2caf98df9471bf019b08a636043290d946..0000000000000000000000000000000000000000
--- a/roles/haproxy/tasks/restart.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-# tasks file for haproxy
-
-- name: Restart haproxy
-  shell: "supervisorctl restart haproxy"
-
diff --git a/roles/haproxy/tasks/start.yml b/roles/haproxy/tasks/start.yml
deleted file mode 100644
index f33f0eab5622bbca1e9f73dfbe575322aebc9f1b..0000000000000000000000000000000000000000
--- a/roles/haproxy/tasks/start.yml
+++ /dev/null
@@ -1,55 +0,0 @@
----
-# tasks file for haproxy
-
-- name: Copy haproxy configuration file
-  template:
-    src: haproxy.cfg.j2
-    dest: /usr/local/etc/haproxy/haproxy.cfg
-
-- name: Create required directories
-  file:
-   path: "{{ item }}"
-   state: directory
-   mode: 0755
-   owner: root
-   group: root
-  with_items:
-  - /opt/haproxy
-  - /etc/ssl/haproxy
-
-- name: Generate dhparam file for haproxy
-  shell: "openssl dhparam -out /usr/local/etc/haproxy/dhparam.pem 2048"
-
-- name: Copy haproxy certificates
-  copy:
-    src:  "{{ item }}"
-    dest: "/opt/haproxy/"
-    mode: 0600
-  with_items:
-    - "{{playbook_dir}}/secrets/CA/issued/{{ inventory_hostname }}.crt"
-    - "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.key"
-
-- name: Combine crt and key for haproxy
-  assemble:
-    src: /opt/haproxy
-    dest: /etc/ssl/haproxy/{{ inventory_hostname }}.crt
-    owner: root
-    mode: 0600
-
-- name: Delete temporary files and directory
-  file:
-    path: "{{ item }}"
-    state: absent
-  with_items:
-    - /opt/haproxy/{{ inventory_hostname }}.crt
-    - /opt/haproxy/{{ inventory_hostname }}.key
-    - /opt/haproxy
-
-- name: Start haproxy
-  shell: "supervisorctl start haproxy"
-
-- name: Set Autostart for supervisord's services
-  replace:
-    path: /etc/supervisord.conf
-    regexp: '^autostart=false$'
-    replace: 'autostart=true'
diff --git a/roles/haproxy/tasks/stop.yml b/roles/haproxy/tasks/stop.yml
deleted file mode 100644
index 60f875fa3abae9f31a38e3e70b303ceb81ccd4b6..0000000000000000000000000000000000000000
--- a/roles/haproxy/tasks/stop.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-# tasks file for haproxy
-
-- name: Stop haproxy
-  command: "supervisorctl stop haproxy"
-
diff --git a/roles/haproxy/tasks/update-config.yml b/roles/haproxy/tasks/update-config.yml
deleted file mode 100644
index dc5cb8b945b946e99703bae873010e836317fa33..0000000000000000000000000000000000000000
--- a/roles/haproxy/tasks/update-config.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-# tasks file for haproxy
-
-- name: Copy haproxy configuration file
-  template:
-    src: haproxy.cfg.j2
-    dest: /usr/local/etc/haproxy/haproxy.cfg
-
diff --git a/roles/haproxy/templates/haproxy.cfg.j2 b/roles/haproxy/templates/haproxy.cfg.j2
index d566981a6c63627dddb93a94d562a497856c349e..e62740e78b24395594aeef2789b464eed20ecc7b 100644
--- a/roles/haproxy/templates/haproxy.cfg.j2
+++ b/roles/haproxy/templates/haproxy.cfg.j2
@@ -1,6 +1,6 @@
 global
   #quiet
-  log 127.0.0.1:9000  local0
+  log stdout format raw local0
   nbproc {{ HAPROXY_PROCESSES }}
   ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
   ssl-default-bind-options prefer-client-ciphers no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets
@@ -22,7 +22,7 @@ listen stats
         stats hide-version
         stats uri     /
         stats realm   HAProxy Statistics
-        stats auth    haproxy:{{lookup('password', '{{playbook_dir}}/secrets/passwords/haproxy_stats')}}
+        stats auth    haproxy:{{ HAPROXY_STATS_PASS }}
 
 listen nifiserv
 	bind *:9443 ssl crt /etc/ssl/haproxy alpn h2,http/1.1
@@ -31,7 +31,6 @@ listen nifiserv
 	fullconn 5000
 	balance source
 	option tcpka
-        option httplog
 {% for nifihost in groups['nificontainers'] %}
 	server {{nifihost}} {{nifihost}}:9443 ssl check verify none
 {% endfor %}
@@ -43,7 +42,6 @@ listen odfeserv
         fullconn 5000
         balance source
         option tcpka
-        option httplog
 {% for odfehost in groups['odfeescontainers'] %}
      	server {{odfehost}} {{odfehost}}:9200 ssl check verify none
 {% endfor %}
@@ -55,7 +53,6 @@ listen keycloakserv
         fullconn 5000
         balance source
         option tcpka
-        option httplog
 {% for keycloakhost in groups['keycloakcontainers'] %}
 	server {{keycloakhost}} {{keycloakhost}}:8443 ssl check verify none
 {% endfor %}
@@ -68,7 +65,6 @@ listen thehiveserv
         balance source
         option tcpka
         option forwardfor
-        option httplog
 {% for thehivehost in groups['thehive'] %}
 	server {{thehivehost}} {{thehivehost}}:9000 check verify none
 {% endfor %}
@@ -81,7 +77,6 @@ listen cortexserv
         balance source
         option tcpka
         option forwardfor
-        option httplog
 {% for cortexhost in groups['cortex'] %}
 	server {{cortexhost}} {{cortexhost}}:9001 check verify none
 {% endfor %}
@@ -95,7 +90,6 @@ listen nifiservtcp77{{port}}
         balance source
         option tcpka
 	option tcp-check
-        option tcplog
 	tcp-check connect port 77{{port}}
 {% for nifihost in groups['nificontainers'] %}
    	server {{nifihost}} {{nifihost}}:77{{port}} check
@@ -112,7 +106,6 @@ listen nifiservtcp7771
         balance source
         option tcpka
 	option tcp-check
-        option tcplog
 	tcp-check connect port 7771
 {% for nifihost in groups['nificontainers'] %}
    	server {{nifihost}} {{nifihost}}:7771 check
@@ -127,7 +120,6 @@ listen nifiservhttp{{port}}
         fullconn 5000
         balance source
         option tcpka
-        option httplog
 {% for nifihost in groups['nificontainers'] %}
         server {{nifihost}} {{nifihost}}:{{port}} check
 {% endfor %}
@@ -144,7 +136,6 @@ listen nifiservtcp{{port}}
         balance source
         option tcpka
         option tcp-check
-        option tcplog
         tcp-check connect port {{port}}
 {% for nifihost in groups['nificontainers'] %}
         server {{nifihost}} {{nifihost}}:{{port}} check
diff --git a/roles/keycloak/files/SOCTOOLS-CA.crt b/roles/keycloak/files/SOCTOOLS-CA.crt
new file mode 100644
index 0000000000000000000000000000000000000000..04b1f203d036d2219c23c4ea3630115d68510eb8
--- /dev/null
+++ b/roles/keycloak/files/SOCTOOLS-CA.crt
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
+BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
+UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
+Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
+M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
+c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
+tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
+ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
+8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
+EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
+JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
+z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
+XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
+CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
+nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
+GPiQTFGknE1U
+-----END CERTIFICATE-----
diff --git a/roles/keycloak/files/cacerts.jks b/roles/keycloak/files/cacerts.jks
new file mode 100644
index 0000000000000000000000000000000000000000..9d4001b7d9a466941cda896b6bf145bf2f02020c
Binary files /dev/null and b/roles/keycloak/files/cacerts.jks differ
diff --git a/roles/keycloak/files/dsoclab-keycloak.crt b/roles/keycloak/files/dsoclab-keycloak.crt
new file mode 100644
index 0000000000000000000000000000000000000000..92b6893716cacfa9e7fb863ad4c4379077e7ac1e
--- /dev/null
+++ b/roles/keycloak/files/dsoclab-keycloak.crt
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            fe:75:83:de:f2:35:5a:2c:2b:ba:09:72:0b:d8:09:48
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:28 2020 GMT
+            Not After : Oct 15 10:47:28 2023 GMT
+        Subject: CN=dsoclab-keycloak
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:ea:a9:ea:6b:2f:6c:9c:9f:6d:9c:89:4e:01:ba:
+                    c6:c0:32:df:59:26:2b:95:f4:c2:3d:c8:7e:22:ce:
+                    b6:78:03:e8:22:28:81:9c:9a:a6:a7:ba:fd:05:66:
+                    a3:50:81:85:71:c1:d9:ea:bc:21:e1:5d:0a:87:7b:
+                    be:55:b0:7d:01:57:de:4c:fe:3a:c5:c9:54:77:2e:
+                    15:fc:12:07:f8:ef:9f:7b:f7:09:01:70:75:53:3b:
+                    dc:b1:0c:65:4d:49:c4:fb:1d:42:20:6f:81:45:42:
+                    d3:db:1d:4c:57:1b:1d:3b:81:39:ee:b2:cf:95:4b:
+                    29:d0:a8:39:98:d6:93:36:99:bf:c5:43:26:8d:4d:
+                    db:6d:24:3b:fc:16:76:a1:fd:6f:c6:19:11:c7:12:
+                    0d:80:16:4c:88:da:2c:09:78:3d:1b:7c:6c:ec:db:
+                    9e:01:50:5f:a3:56:7f:d4:3b:a4:26:d2:6d:42:7b:
+                    88:4e:8d:64:ed:1e:1a:0e:05:58:65:58:47:83:60:
+                    9e:b4:ed:15:ce:72:4f:a0:b5:22:dd:9f:a4:da:88:
+                    86:fe:cb:84:6e:72:3d:00:42:da:8b:85:2a:f2:ef:
+                    d7:ee:bb:85:42:ba:b9:fb:d9:9d:d2:2c:58:0f:7c:
+                    02:23:b7:46:d0:69:06:37:40:9d:58:74:89:ca:b7:
+                    12:e5
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                FD:C5:77:F8:79:AD:0A:7E:6A:A0:2E:3B:58:6A:9F:43:51:55:0B:DF
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-keycloak, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         9a:c0:35:a3:68:ec:ec:cc:c3:65:5a:bf:03:d0:ee:8d:a0:41:
+         db:6d:89:3e:97:d4:90:7d:63:8e:73:37:43:ae:9a:e2:d0:2b:
+         a7:5e:b2:88:9b:4d:8f:b6:81:bf:f6:46:a0:87:ca:77:ec:5c:
+         af:cd:6b:d8:e8:60:5a:aa:86:be:64:d5:ad:e9:1e:41:7b:6a:
+         df:01:1d:16:86:94:57:82:51:91:be:6b:d6:ae:f0:b9:8c:3d:
+         11:99:c4:93:eb:f7:fa:9e:a3:e3:f8:97:19:cf:63:55:6a:6e:
+         4f:e9:a2:64:a7:35:0d:7e:68:23:89:e1:c6:06:4b:34:67:38:
+         40:d1:81:b3:73:95:3a:3b:67:d2:5a:e4:8e:49:34:b1:ab:6f:
+         b6:60:87:ac:55:5d:f5:59:c0:d5:d3:d8:de:3b:76:c9:41:28:
+         b4:d7:23:ec:a2:3f:1d:3f:74:2e:f0:45:40:35:38:d1:06:50:
+         b2:93:45:df:de:33:5e:0b:89:86:d8:c9:14:61:1c:d2:94:21:
+         1f:bf:df:32:f0:2f:91:52:b0:08:b7:b9:c2:b7:55:2b:ca:05:
+         e4:eb:91:e1:63:45:5d:1a:6f:e8:76:07:89:e8:42:3e:ec:7b:
+         51:0e:a0:d5:8e:c3:3d:26:e3:45:b0:5b:61:d1:98:3b:c3:d4:
+         37:9f:c1:7c
+-----BEGIN CERTIFICATE-----
+MIIDmzCCAoOgAwIBAgIRAP51g97yNVosK7oJcgvYCUgwDQYJKoZIhvcNAQELBQAw
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzI4WhcNMjMxMDE1
+MTA0NzI4WjAbMRkwFwYDVQQDDBBkc29jbGFiLWtleWNsb2FrMIIBIjANBgkqhkiG
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6qnqay9snJ9tnIlOAbrGwDLfWSYrlfTCPch+
+Is62eAPoIiiBnJqmp7r9BWajUIGFccHZ6rwh4V0Kh3u+VbB9AVfeTP46xclUdy4V
+/BIH+O+fe/cJAXB1UzvcsQxlTUnE+x1CIG+BRULT2x1MVxsdO4E57rLPlUsp0Kg5
+mNaTNpm/xUMmjU3bbSQ7/BZ2of1vxhkRxxINgBZMiNosCXg9G3xs7NueAVBfo1Z/
+1DukJtJtQnuITo1k7R4aDgVYZVhHg2CetO0VznJPoLUi3Z+k2oiG/suEbnI9AELa
+i4Uq8u/X7ruFQrq5+9md0ixYD3wCI7dG0GkGN0CdWHSJyrcS5QIDAQABo4HeMIHb
+MAkGA1UdEwQCMAAwHQYDVR0OBBYEFP3Fd/h5rQp+aqAuO1hqn0NRVQvfMEYGA1Ud
+IwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NU
+T09MUy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD
+AjALBgNVHQ8EBAMCBaAwOwYDVR0RBDQwMoIQZHNvY2xhYi1rZXljbG9ha4IeZHNv
+Y2xhYi5nbjQtMy13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQCa
+wDWjaOzszMNlWr8D0O6NoEHbbYk+l9SQfWOOczdDrpri0CunXrKIm02PtoG/9kag
+h8p37FyvzWvY6GBaqoa+ZNWt6R5Be2rfAR0WhpRXglGRvmvWrvC5jD0RmcST6/f6
+nqPj+JcZz2NVam5P6aJkpzUNfmgjieHGBks0ZzhA0YGzc5U6O2fSWuSOSTSxq2+2
+YIesVV31WcDV09jeO3bJQSi01yPsoj8dP3Qu8EVANTjRBlCyk0Xf3jNeC4mG2MkU
+YRzSlCEfv98y8C+RUrAIt7nCt1UrygXk65HhY0VdGm/odgeJ6EI+7HtRDqDVjsM9
+JuNFsFth0Zg7w9Q3n8F8
+-----END CERTIFICATE-----
diff --git a/roles/keycloak/files/dsoclab-keycloak.key b/roles/keycloak/files/dsoclab-keycloak.key
new file mode 100644
index 0000000000000000000000000000000000000000..8c5ebed5a514facf489a59ce2a2e487c6a0da78f
--- /dev/null
+++ b/roles/keycloak/files/dsoclab-keycloak.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDqqeprL2ycn22c
+iU4BusbAMt9ZJiuV9MI9yH4izrZ4A+giKIGcmqanuv0FZqNQgYVxwdnqvCHhXQqH
+e75VsH0BV95M/jrFyVR3LhX8Egf475979wkBcHVTO9yxDGVNScT7HUIgb4FFQtPb
+HUxXGx07gTnuss+VSynQqDmY1pM2mb/FQyaNTdttJDv8Fnah/W/GGRHHEg2AFkyI
+2iwJeD0bfGzs254BUF+jVn/UO6Qm0m1Ce4hOjWTtHhoOBVhlWEeDYJ607RXOck+g
+tSLdn6TaiIb+y4Rucj0AQtqLhSry79fuu4VCurn72Z3SLFgPfAIjt0bQaQY3QJ1Y
+dInKtxLlAgMBAAECggEBAIj6HCLq8NxP15zLLSSnUQK571PLix+iWovT74UD4tEV
+frgJqvat81/vL2iqq+P/ZtSrUjfKD4DMXawOGGFOfvl8v/9zWv0+8zYKSbz1DYBK
+525mGfSkH2gxhjY2xR8jU389ae8jB3NVefLqHDiwVBT67sUdzTwZPtRUjiJgBliU
+soJCsCutHAy7GW68N79F0BQItHhjMt02fYybnFxNvBntD4lodZDn7K9iqBoZPduX
+TBsH1FcwZQyvQuiUlJgjUFM//5zrZUMjErv+3ev5c/WdpY4ycbo6VVBGZouVbyeX
+RAWeDUE1nrsEsLBSnTkXVInFjPS6mBxsIi/+hlf6XCECgYEA+bWYDKPgelSe8ii5
+mK94wcLr6MybO+GrBHT4lIP1UggGsvPtXTifNvgGrYx90gmmL6F9QWHE+4lxyh5L
+yEXCTHXl4QopgZCxWnnKekz0ma0lFlGYGr4KA0Z3Ntp+sCb/hcqVW/n24wVhNnmo
+z3ztlSI/GY3B598R7dO9sR/RoYkCgYEA8JNKbTegmeeaAyBehEPy3eajAiT6759p
+7m6Ml1P6IC3Ff3fllJrNWRi+JDKnJF9SUePOVWLWSgYSJyFLoiWK1CzoyLPdbcW9
+Ap9XNzD/aoDi6DBbKCFhRpBCsmTPnT8eFvA9PhuYY60w2UoM7byH+i2aJ1Do3izl
+tLsHJbcT230CgYEA5S4Sl/9MBlpl6xEPjh/2L7drdyVaj/IFWLjWcNBPtnMhWtrf
+joBqODQZRO09iSlL+kk3wWsvNEEoS33UxcGomy5Vxl3iTET1UXmYKPk6QVUVRc+r
+T1f9rpXc0l5kid2xBSUyQdFAE4obd7jfA1fAYfClgxmEzv//34xHfCoc5ykCgYEA
+01sD00pA3ZXc+AwzHY64y3z6D0M/9s+d+GzFNZoAsM6lqaRDXbhW2oTjX9fkgg8A
+upMiTl/kFeqZfilBUnYbLuc5qEJlMjC8KpakwAdbDk2njAgXvfz9gknxXts0j1jJ
+bauokm0aB9A7j1sAWsj8ya3QtePegnr9YDfEQr1CQ90CgYBfAQaYG9ldXcxTlERG
+jOGu0bh9DtnmwsenwTZQD4mNHpvL0MkmIQxR5FAL8XXbNBq50zCiOapLLrhdqbh0
+ih3WoOdqxLIDQtAJYs3ANhOmEAxvQPxpPKhRHRKPGXxyzgW9zeQ08GpYoR/M7VRF
+TypqufvopzWOpbxpgbfiJQmd8g==
+-----END PRIVATE KEY-----
diff --git a/roles/keycloak/tasks/main.yml b/roles/keycloak/tasks/main.yml
index d7668ba48273ed7f841c5e4e868aaa4415817194..2bb6a62470c5e10d59be3a56109969f5fe802025 100644
--- a/roles/keycloak/tasks/main.yml
+++ b/roles/keycloak/tasks/main.yml
@@ -1,17 +1,97 @@
 ---
 
-- include: start.yml
-  tags:
-   - start
-- include: stop.yml
-  tags: 
-   - stop
-   - stop-keycloak
-- include: update-config.yml
-  tags: 
-   - update-config
-   - update-keycloak-config
-- include: restart.yml
-  tags: 
-   - restart
-   - restart-keycloak
+- name: Copy certificates in keycloak x509 conf dir
+  copy:
+    src:  "{{ item.local }}"
+    dest: "{{ item.remote }}"
+    mode: "{{ item.mode }}"
+  with_items:
+    - local: "files/{{ inventory_hostname }}.crt"
+      remote: /etc/x509/https/tls.crt
+      mode: '0644'
+    - local: "files/{{ inventory_hostname }}.key"
+      remote: /etc/x509/https/tls.key
+      mode: '0600'
+    - local: "files/{{ ca_cn }}.crt"
+      remote: /etc/x509/ca/ca.crt
+      mode: '0644'
+    - local: "files/cacerts.jks"
+      remote: /opt/jboss/keycloak/cacerts.jks
+      mode: '0644'
+  tags:
+    - start
+    - startkeycloak
+
+- name: Generate Keycloak secure config
+  command: "/opt/jboss/tools/x509.sh"
+  environment:
+    X509_CA_BUNDLE: "/etc/x509/ca/ca.crt"
+  tags:
+    - start
+    - startkeycloak
+
+- name: Set admin password
+  command: /opt/jboss/keycloak/bin/add-user-keycloak.sh --user "admin" --password "{{keycloak_adminpass}}"
+  ignore_errors: yes
+  tags:
+    - start
+    - startkeycloak
+
+- name: Configure Keycloak start script
+  template:
+    src: "{{item}}.j2"
+    dest: "/opt/jboss/tools/{{item}}"
+    mode: 0750
+  with_items:
+    - startkeycloak.sh
+    - initkeycloakrealm.sh
+  tags:
+    - start
+    - startkeycloak
+
+
+- name: Start Keycloak IdP
+  command: /opt/jboss/tools/startkeycloak.sh
+  tags:
+    - start
+    - startkeycloak
+
+- name: Wait for Keycloak
+  wait_for:
+    host: "{{groups['keycloakcontainers'][0]}}"
+    port: 8443
+    state: started
+    delay: 5
+  tags:
+    - start
+    - startkeycloak
+
+- name: Initialize Keycloak realm
+  command: /opt/jboss/tools/initkeycloakrealm.sh
+  tags:
+    - start
+    - startkeycloak
+
+- name: Copy secrets from Keycloak
+  fetch:
+    src:  "{{ item.remote }}"
+    dest: "{{ item.local }}"
+    flat: yes
+  with_items:
+    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/nifisecret"
+      local:  "roles/nifi/files/nifisecret"
+    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/kibanasecret"
+      local:  "roles/odfekibana/files/kibanasecret"
+    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/thehivesecret"
+      local:  "roles/thehive/files/thehivesecret"
+    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/cortexsecret"
+      local:  "roles/cortex/files/cortexsecret"
+  tags:
+    - start
+    - startkeycloak
+
+- name: Stop Keycloak
+  command: "pkill -SIGTERM -F {{inventory_hostname}}.pid"
+  tags:
+    - stop
+    - stopkeycloak
diff --git a/roles/keycloak/tasks/restart.yml b/roles/keycloak/tasks/restart.yml
deleted file mode 100644
index 4ea5519d0060b1f287c908e54b021b53c104e588..0000000000000000000000000000000000000000
--- a/roles/keycloak/tasks/restart.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-
-- name: Restart Keycloak
-  remote_user: root
-  command: "supervisorctl restart keycloak"
-
-- name: Wait for Keycloak
-  remote_user: jboss
-  wait_for:
-    host: "{{groups['keycloakcontainers'][0]}}"
-    port: 8443
-    state: started
-    delay: 5
diff --git a/roles/keycloak/tasks/start.yml b/roles/keycloak/tasks/start.yml
deleted file mode 100644
index 468cb2559c151b0b146a9f17cfa3980bc70b24a0..0000000000000000000000000000000000000000
--- a/roles/keycloak/tasks/start.yml
+++ /dev/null
@@ -1,96 +0,0 @@
----
-
-- name: Copy certificates in keycloak x509 conf dir
-  remote_user: jboss
-  copy:
-    src:  "{{ item.local }}"
-    dest: "{{ item.remote }}"
-    mode: "{{ item.mode}}"
-  with_items:
-    - local: "{{playbook_dir}}/secrets/CA/issued/{{ inventory_hostname }}.crt"
-      remote: /etc/x509/https/tls.crt
-      mode: '0644'
-    - local: "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.key"
-      remote: /etc/x509/https/tls.key
-      mode: '0600'
-    - local: "{{playbook_dir}}/secrets/CA/ca.crt"
-      remote: /etc/x509/ca/ca.crt
-      mode: '0644'
-    - local: "{{playbook_dir}}/secrets/CA/cacerts.jks"
-      remote: /opt/jboss/keycloak/cacerts.jks
-      mode: '0644'
-
-- name: Generate Keycloak secure config
-  remote_user: jboss
-  command: "/opt/jboss/tools/x509.sh"
-  environment:
-    X509_CA_BUNDLE: "/etc/x509/ca/ca.crt"
-
-- name: Set admin password
-  remote_user: jboss
-  command: /opt/jboss/keycloak/bin/add-user-keycloak.sh --user "admin" --password "{{lookup('password', '{{playbook_dir}}/secrets/passwords/keykloak_admin')}}"
-  ignore_errors: True
-
-- name: Configure logging format
-  remote_user: jboss
-  lineinfile: #TODO: Change to community.general.xml
-   path: /opt/jboss/keycloak/standalone/configuration/standalone.xml
-   regexp: '.*<formatter name="PATTERN">.*'
-   line: "<formatter name=\"JSON\"><json-formatter date-format=\"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\" pretty-print=\"false\" print-details=\"true\" zone-id=\"UTC\"/></formatter><formatter name=\"PATTERN\">"
-
-- name: Enable event logging
-  remote_user: jboss
-  lineinfile:
-   path: /opt/jboss/keycloak/standalone/configuration/standalone.xml
-   regexp: '.*<spi name="eventsStore">.*'
-   line: '<spi name="eventsListener"><provider name="jboss-logging" enabled="true"><properties><property name="success-level" value="INFO"/><property name="error-level" value="WARN"/></properties></provider></spi><spi name="eventsStore">'
-
-- name: Specify logging format
-  remote_user: jboss
-  lineinfile:
-   path: /opt/jboss/keycloak/standalone/configuration/standalone.xml
-   regexp: ".*<named-formatter name=.*"
-   line: '<named-formatter name="JSON"/>'
-
-- name: Configure Keycloak start script
-  remote_user: jboss
-  template:
-    src: "{{item}}.j2"
-    dest: "/opt/jboss/tools/{{item}}"
-    mode: 0750
-  with_items:
-    - startkeycloak.sh
-    - initkeycloakrealm.sh
-
-- name: Start Keycloak IdP
-  remote_user: root
-  command: "supervisorctl start keycloak"
-
-- name: Wait for Keycloak
-  remote_user: jboss
-  wait_for:
-    host: "{{groups['keycloakcontainers'][0]}}"
-    port: 8443
-    state: started
-    delay: 5
-
-- name: Initialize Keycloak realm
-  remote_user: jboss
-  command: /opt/jboss/tools/initkeycloakrealm.sh
-
-- name: Copy secrets from Keycloak
-  remote_user: jboss
-  fetch:
-    src:  "{{ item.remote }}"
-    dest: "{{ item.local }}"
-    flat: yes
-  with_items:
-    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/nifisecret"
-      local:  "{{playbook_dir}}/secrets/tokens/nifisecret"
-    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/kibanasecret"
-      local:  "{{playbook_dir}}/secrets/tokens/kibanasecret"
-    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/mispsecret"
-      local:  "{{playbook_dir}}/secrets/tokens/mispsecret"
-
-- name: Set Autostart for supervisord's services
-  shell: "sed -i 's/autostart=false/autostart=true/g' /etc/supervisord.conf"
diff --git a/roles/keycloak/tasks/stop.yml b/roles/keycloak/tasks/stop.yml
deleted file mode 100644
index 0f9c490c2263352235441f32f3674282d06e7fe0..0000000000000000000000000000000000000000
--- a/roles/keycloak/tasks/stop.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-
-- name: Stop Keycloak
-  remote_user: root
-  command: "supervisorctl stop keycloak"
diff --git a/roles/keycloak/tasks/update-config.yml b/roles/keycloak/tasks/update-config.yml
deleted file mode 100644
index c64229a7f6a580c619e2d87f30cb1d3304d3d008..0000000000000000000000000000000000000000
--- a/roles/keycloak/tasks/update-config.yml
+++ /dev/null
@@ -1,32 +0,0 @@
----
-
-- name: Configure Keycloak start script
-  remote_user: jboss
-  template:
-    src: "{{item}}.j2"
-    dest: "/opt/jboss/tools/{{item}}"
-    mode: 0750
-  with_items:
-    - startkeycloak.sh
-    - initkeycloakrealm.sh
-
-- name: Copy keycloak-tools
-  remote_user: jboss
-  synchronize:
-    src: roles/build/templates/keycloak/keycloak-tools/
-    dest: /opt/jboss/tools/
-
-- name: Copy secrets from Keycloak
-  remote_user: jboss
-  fetch:
-    src:  "{{ item.remote }}"
-    dest: "{{ item.local }}"
-    flat: yes
-  with_items:
-    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/nifisecret"
-      local:  "{{playbook_dir}}/secrets/tokens/nifisecret"
-    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/kibanasecret"
-      local:  "{{playbook_dir}}/secrets/tokens/kibanasecret"
-    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/mispsecret"
-      local:  "{{playbook_dir}}/secrets/tokens/mispsecret"
-
diff --git a/roles/keycloak/templates/initkeycloakrealm.sh.j2 b/roles/keycloak/templates/initkeycloakrealm.sh.j2
index 3d790f2eb02af9dbb6644d50795d77788f8c0ba4..d6fc9463d0bddd7f8f31587b6ecf7019d3f69428 100644
--- a/roles/keycloak/templates/initkeycloakrealm.sh.j2
+++ b/roles/keycloak/templates/initkeycloakrealm.sh.j2
@@ -5,8 +5,8 @@ exec 7>&2
 exec > /opt/jboss/keycloak/initkeycloak.log 2>&1
 
 
-kcadm.sh config truststore --trustpass {{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}} /opt/jboss/keycloak/cacerts.jks
-kcadm.sh config credentials --server https://{{groups['keycloakcontainers'][0]}}:8443/auth --realm master --user admin --password "{{lookup('password', '{{playbook_dir}}/secrets/passwords/keykloak_admin')}}"
+kcadm.sh config truststore --trustpass {{tspass}} /opt/jboss/keycloak/cacerts.jks
+kcadm.sh config credentials --server https://{{groups['keycloakcontainers'][0]}}:8443/auth --realm master --user admin --password {{keycloak_adminpass}}
 kcadm.sh create realms -b '{ "enabled": "true", "id": "{{openid_realm}}", "realm": "{{openid_realm}}"}'
 kcadm.sh create realms/{{openid_realm}}/authentication/flows/browser/copy -b '{ "id": "browser-x509", "newName": "X.509 Browser" }'
 BROWSERFORM=$(kcadm.sh create realms/{{openid_realm}}/authentication/flows/X.509%20Browser/executions/execution -i -b '{ "provider": "auth-x509-client-username-form" }')
@@ -18,18 +18,22 @@ kcadm.sh create realms/{{openid_realm}}/groups -b '{"name":"GN43WP8T31"}'
 
 {% for user in soctools_users %}
 kcadm.sh create realms/{{openid_realm}}/users -b '{"enabled":true,"attributes":{"DN": ["{{user.DN}}"],"CN": ["{{user.CN}}"]},"username":"{{user.username}}","emailVerified":"","email":"{{user.email}}","firstName":"{{user.firstname}}","lastName":"{{user.lastname}}","groups": ["/GN43WP8T31"] }'
-kcadm.sh set-password -r {{openid_realm}} --username {{user.username}} --new-password {{lookup('password', '{{playbook_dir}}/secrets/passwords/'+user.CN)}}
+kcadm.sh set-password -r {{openid_realm}} --username {{user.username}} --new-password {{user.password}}
 {% endfor %}
 
-NIFICLIENT=$(kcadm.sh create realms/{{openid_realm}}/clients -i -b '{"enabled":true, "clientId":"soctools-nifi","protocol":"openid-connect","clientAuthenticatorType": "client-secret","redirectUris": ["https://{{soctoolsproxy}}:9443/*" ],"webOrigins": [], "publicClient": false }')
+NIFICLIENT=$(kcadm.sh create realms/{{openid_realm}}/clients -i -b '{"enabled":true, "clientId":"dsoclab-nifi","protocol":"openid-connect","clientAuthenticatorType": "client-secret","redirectUris": ["https://{{dslproxy}}:9443/*" ],"webOrigins": [], "publicClient": false }')
 kcadm.sh create realms/{{openid_realm}}/clients/${NIFICLIENT}/protocol-mappers/models -b '{"protocol":"openid-connect","config":{"id.token.claim":"true","access.token.claim":"true","userinfo.token.claim":"true","multivalued":"","aggregate.attrs":"","user.attribute":"DN","claim.name":"DN","jsonType.label":"String"},"name":"SendDN","protocolMapper":"oidc-usermodel-attribute-mapper"}'
 kcadm.sh get realms/{{openid_realm}}/clients/${NIFICLIENT}/client-secret --fields value > /opt/jboss/keycloak/nifisecret
 
-KIBANACLIENT=$(kcadm.sh create realms/{{openid_realm}}/clients -i -b '{"enabled":true, "clientId":"soctools-kibana","protocol":"openid-connect","clientAuthenticatorType": "client-secret","rootUrl": "https://{{soctoolsproxy}}:5601","adminUrl": "","redirectUris": ["https://{{soctoolsproxy}}:5601", "https://{{soctoolsproxy}}:5601/auth/openid/login", "https://{{soctoolsproxy}}:5601/app/kibana" ],"webOrigins": [], "publicClient": false }')
+KIBANACLIENT=$(kcadm.sh create realms/{{openid_realm}}/clients -i -b '{"enabled":true, "clientId":"dsoclab-kibana","protocol":"openid-connect","clientAuthenticatorType": "client-secret","rootUrl": "https://{{dslproxy}}:5601","adminUrl": "","redirectUris": ["https://{{dslproxy}}:5601", "https://{{dslproxy}}:5601/auth/openid/login", "https://{{dslproxy}}:5601/app/kibana" ],"webOrigins": [], "publicClient": false }')
 kcadm.sh get realms/{{openid_realm}}/clients/${KIBANACLIENT}/client-secret --fields value > /opt/jboss/keycloak/kibanasecret
 
-MISPCLIENT=$(kcadm.sh create realms/{{openid_realm}}/clients -i -b '{"enabled":true, "clientId":"soctools-misp","protocol":"openid-connect","clientAuthenticatorType": "client-secret","rootUrl": "https://{{soctoolsproxy}}:6443","adminUrl": "","redirectUris": ["https://{{soctoolsproxy}}:6443/users/login/keycloak"],"webOrigins": [], "publicClient": false }')
-kcadm.sh get realms/{{openid_realm}}/clients/${MISPCLIENT}/client-secret --fields value > /opt/jboss/keycloak/mispsecret
+THEHIVECLIENT=$(kcadm.sh create realms/{{openid_realm}}/clients -i -b '{"enabled":true, "clientId":"dsoclab-thehive","protocol":"openid-connect","clientAuthenticatorType": "client-secret","adminUrl": "","redirectUris": ["https://{{dslproxy}}:9000/api/ssoLogin"],"webOrigins": [], "publicClient": false }')
+kcadm.sh get realms/{{openid_realm}}/clients/${THEHIVECLIENT}/client-secret --fields value > /opt/jboss/keycloak/thehivesecret
+
+CORTEXCLIENT=$(kcadm.sh create realms/{{openid_realm}}/clients -i -b '{"enabled":true, "clientId":"dsoclab-cortex","protocol":"openid-connect","clientAuthenticatorType": "client-secret","adminUrl": "","redirectUris": ["https://{{dslproxy}}:9001/api/ssoLogin"],"webOrigins": [], "publicClient": false }')
+kcadm.sh get realms/{{openid_realm}}/clients/${CORTEXCLIENT}/client-secret --fields value > /opt/jboss/keycloak/cortexsecret
+
 
 kcadm.sh config truststore --delete
 
diff --git a/roles/misp/files/SOCTOOLS-CA.crt b/roles/misp/files/SOCTOOLS-CA.crt
new file mode 100644
index 0000000000000000000000000000000000000000..04b1f203d036d2219c23c4ea3630115d68510eb8
--- /dev/null
+++ b/roles/misp/files/SOCTOOLS-CA.crt
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
+BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
+UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
+Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
+M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
+c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
+tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
+ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
+8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
+EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
+JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
+z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
+XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
+CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
+nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
+GPiQTFGknE1U
+-----END CERTIFICATE-----
diff --git a/roles/misp/files/cacerts.jks b/roles/misp/files/cacerts.jks
new file mode 100644
index 0000000000000000000000000000000000000000..9d4001b7d9a466941cda896b6bf145bf2f02020c
Binary files /dev/null and b/roles/misp/files/cacerts.jks differ
diff --git a/roles/misp/files/dsoclab-misp.crt b/roles/misp/files/dsoclab-misp.crt
new file mode 100644
index 0000000000000000000000000000000000000000..f83010441e252486cc934677a1e0a0de1ebe2328
--- /dev/null
+++ b/roles/misp/files/dsoclab-misp.crt
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            75:87:fc:e4:cf:3e:c6:81:17:19:90:76:b1:2c:d5:d2
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:28 2020 GMT
+            Not After : Oct 15 10:47:28 2023 GMT
+        Subject: CN=dsoclab-misp
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:cf:b1:1b:e7:a2:ae:70:81:71:a5:57:46:14:2e:
+                    47:64:89:4e:bd:7d:f0:82:2d:03:19:d6:87:44:b3:
+                    42:bf:72:78:03:cc:91:98:5b:36:42:14:55:e2:82:
+                    16:12:58:60:54:44:8f:15:f6:1b:1f:76:36:22:2e:
+                    e8:ac:d3:3c:0a:df:46:c7:f1:04:bc:3a:bf:fe:4b:
+                    8f:2a:53:83:e3:50:82:06:09:fc:2a:fa:fe:94:a0:
+                    7b:7f:c2:3e:0b:3e:dc:72:b8:94:10:0a:0b:90:fd:
+                    45:76:29:85:52:bf:0f:20:43:78:fe:3b:d3:49:20:
+                    8f:9a:a5:0c:89:bb:0e:97:f2:67:b0:2d:f0:17:53:
+                    25:a6:9b:4b:64:0e:72:8a:bf:c9:e3:8e:41:bb:ed:
+                    f3:33:6a:55:5f:8d:52:84:fa:a3:67:1a:7b:71:fb:
+                    90:f1:5f:61:df:44:ea:0b:77:88:f2:e5:c1:83:71:
+                    58:c7:58:8a:9b:39:45:59:4e:e0:db:16:b6:96:72:
+                    90:8c:ee:c2:13:75:ea:15:c6:6b:e2:dc:3a:de:c8:
+                    07:de:18:84:2d:96:b6:c4:4c:e1:4a:4d:13:6f:6c:
+                    9a:1d:e5:f9:6f:cc:7e:1b:4a:3a:75:1a:b9:37:b0:
+                    6d:a0:1b:69:35:f1:b6:e6:c2:a5:d3:56:d3:57:c7:
+                    0e:8b
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                65:C5:56:88:65:AF:77:F1:53:B2:71:5E:16:10:D1:0B:30:FF:28:BE
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-misp, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         5a:57:76:90:fd:a5:0d:ea:b0:22:c9:02:2e:18:91:81:04:d1:
+         f4:64:58:58:19:27:03:9b:5a:dc:de:6c:0e:fb:b7:76:eb:b1:
+         97:36:e2:c7:76:ef:7d:d8:00:c3:20:c0:3d:a7:cf:61:f8:16:
+         4c:96:4c:7c:c8:89:21:d6:d4:eb:3a:c1:3d:98:34:74:6e:39:
+         81:20:6f:9b:4b:8d:b9:35:60:c5:76:19:30:30:06:0f:89:b1:
+         1a:f6:c4:88:52:28:98:41:52:f1:9a:77:82:79:ae:c9:71:ba:
+         d9:e5:e9:b7:ba:08:32:59:eb:5e:7d:11:e0:a8:27:20:91:46:
+         05:56:1e:e6:0b:4d:49:17:52:7f:4b:c4:a3:e0:cd:30:bd:4e:
+         6a:70:2a:f5:77:4d:d1:d6:64:13:8d:4b:1a:d3:0b:0f:8a:49:
+         1e:bf:b4:c0:4f:43:dc:92:e3:c0:f2:2f:4a:c8:30:45:fc:5a:
+         d2:de:92:b2:a1:48:b8:da:ff:f4:0b:04:5d:5d:a7:30:d8:4b:
+         ca:cf:0c:01:6a:50:45:5f:d4:a8:cf:dd:fa:f7:68:0c:4c:45:
+         47:be:3a:c2:39:bb:04:ff:62:a0:bc:91:a0:f2:2b:67:09:89:
+         5a:ff:e6:53:c1:89:18:12:a1:0f:5a:d7:e1:12:8b:88:88:89:
+         ca:b0:30:27
+-----BEGIN CERTIFICATE-----
+MIIDkjCCAnqgAwIBAgIQdYf85M8+xoEXGZB2sSzV0jANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjhaFw0yMzEwMTUx
+MDQ3MjhaMBcxFTATBgNVBAMMDGRzb2NsYWItbWlzcDCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBAM+xG+eirnCBcaVXRhQuR2SJTr198IItAxnWh0SzQr9y
+eAPMkZhbNkIUVeKCFhJYYFREjxX2Gx92NiIu6KzTPArfRsfxBLw6v/5LjypTg+NQ
+ggYJ/Cr6/pSge3/CPgs+3HK4lBAKC5D9RXYphVK/DyBDeP4700kgj5qlDIm7Dpfy
+Z7At8BdTJaabS2QOcoq/yeOOQbvt8zNqVV+NUoT6o2cae3H7kPFfYd9E6gt3iPLl
+wYNxWMdYips5RVlO4NsWtpZykIzuwhN16hXGa+LcOt7IB94YhC2WtsRM4UpNE29s
+mh3l+W/MfhtKOnUauTewbaAbaTXxtubCpdNW01fHDosCAwEAAaOB2jCB1zAJBgNV
+HRMEAjAAMB0GA1UdDgQWBBRlxVaIZa938VOycV4WENELMP8ovjBGBgNVHSMEPzA9
+gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9PTFMt
+Q0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCwYD
+VR0PBAQDAgWgMDcGA1UdEQQwMC6CDGRzb2NsYWItbWlzcIIeZHNvY2xhYi5nbjQt
+My13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQBaV3aQ/aUN6rAi
+yQIuGJGBBNH0ZFhYGScDm1rc3mwO+7d267GXNuLHdu992ADDIMA9p89h+BZMlkx8
+yIkh1tTrOsE9mDR0bjmBIG+bS425NWDFdhkwMAYPibEa9sSIUiiYQVLxmneCea7J
+cbrZ5em3uggyWetefRHgqCcgkUYFVh7mC01JF1J/S8Sj4M0wvU5qcCr1d03R1mQT
+jUsa0wsPikkev7TAT0PckuPA8i9KyDBF/FrS3pKyoUi42v/0CwRdXacw2EvKzwwB
+alBFX9Soz93692gMTEVHvjrCObsE/2KgvJGg8itnCYla/+ZTwYkYEqEPWtfhEouI
+iInKsDAn
+-----END CERTIFICATE-----
diff --git a/roles/misp/files/dsoclab-misp.key b/roles/misp/files/dsoclab-misp.key
new file mode 100644
index 0000000000000000000000000000000000000000..9b8a5d677ac4cfa58bdee7fe6fec0d74c30240ab
--- /dev/null
+++ b/roles/misp/files/dsoclab-misp.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDPsRvnoq5wgXGl
+V0YULkdkiU69ffCCLQMZ1odEs0K/cngDzJGYWzZCFFXighYSWGBURI8V9hsfdjYi
+Luis0zwK30bH8QS8Or/+S48qU4PjUIIGCfwq+v6UoHt/wj4LPtxyuJQQCguQ/UV2
+KYVSvw8gQ3j+O9NJII+apQyJuw6X8mewLfAXUyWmm0tkDnKKv8njjkG77fMzalVf
+jVKE+qNnGntx+5DxX2HfROoLd4jy5cGDcVjHWIqbOUVZTuDbFraWcpCM7sITdeoV
+xmvi3DreyAfeGIQtlrbETOFKTRNvbJod5flvzH4bSjp1Grk3sG2gG2k18bbmwqXT
+VtNXxw6LAgMBAAECggEBAIb/4VqMVQTOLvfBJc0iU8eWtLbZMMb8ySI3Xs+aEc3t
+cvNNOmolB7ymCTllQ0GDboH32mX1BaZKqV9IzHbiCwoqHZEDKgfLzFZX+OQTSwwr
+nYidXur1IRuswPnHYZrfrl1net5+GQyShF8NGBs0E3nuQaxHaMwEvTNRCzhPfWnn
+u/g3IExtSdE/XSxRnTGRQqSnMAf9OXs9bw/iTSR5cQO2mW/dRLr4aUCQOJ5Hx4mO
+ub172vkNeNwOSUzc9FjtZyQZOtn25WoS7SusK7y9ToDqqR5OcI5M+kxq+fQo8Wvu
+XlIeOvTKTHOBaih6QYEzHo9zq893I/c0xiOmfOr0v7kCgYEA7WQ7g5z+2Lyt35Sq
+XmzyQyAEbx+PMPc7yTQC62YuvpEAaDFDHMphDw1zM2mraLO+2IuBuDz7CTlsf1zl
+xwEJoEZa3odRi2McpqiUVQgJYD+bCUv35J8X93K4/7tLHvXDJQ3BKBNNoLHxjD5P
+SlR5xBCFwZiiXAkquWpZaaWAbg0CgYEA3/jjf723dlWRrVcG/m7VJrhTWq10Jltp
+8y786INKU1IUrwqFt7ph4c9/Jbop40QVkJKzsPojzWreDf3EZYGnBVhOLA5p4MC0
+X1ZTzN86dn1Y3SDCopGnJVP8X2EdDGfsTkfXxOjRCzSPOyZzxzseACw9WWAmullU
+zQs4K6/4YPcCgYB117znb8bepoMVqwILz79PbRRmaV82qnRGRAhy/I2V0ftGvbWY
+FCqsQzv9uKX7WscRTed+It9nS9c9PkteR3iU1HgFYV0seW3emW7Q6yVkXw7CRbDw
+D73g+1U0ta/r1Yoi2boZ/8MYU10aBlBsEJVFrAIKAZAPagmIc2+hTyP6/QKBgQDX
+FHSr3C0NJzkhA7zEovxwFXx+TKmImCqTjKD0S/gZMW6JdYpZmFOc/Jz2RuMoyt4G
+msqSfnPZNPIO744liC8zM8zGBAVq/sN39je9OvUyikbG+0nNwh+H+jIWCfVST44e
+0mEDSCxPHWcaf1+ZiEzUD6fOZ0Zpl5WW3lpPocncmwKBgQDIR7uJctv3UZkEO+oq
+g1Q4jLUYJFUb/3fk1mEmpq+b90e/xQMqZHlu/KHiHcKrukdWj67d/LY4mrw4DebR
+PTgdj9e0O8V9M7BYxDN+zEYrvmmY4A+tg07zm8aqmhCNKpOMsW0MkKFFuRiMkiCh
+bopZVfjdd+d/56vLZW+GSBaCew==
+-----END PRIVATE KEY-----
diff --git a/roles/misp/tasks/config.yml b/roles/misp/tasks/config.yml
deleted file mode 100644
index 864c61dcf473417a13a27ff5debeaf4c5e3c900b..0000000000000000000000000000000000000000
--- a/roles/misp/tasks/config.yml
+++ /dev/null
@@ -1,93 +0,0 @@
----
-
-- name: Change password of default user
-  shell: "/var/www/MISP/app/Console/cake Password admin@admin.test {{ lookup('password', '{{playbook_dir}}/secrets/passwords/misp_admin') }}"
-
-- name: Configure MISP
-  shell: '/var/www/MISP/app/Console/cake Admin setSetting {{item.var}} {{item.value}}'
-  with_items:
-    - {"var":"Plugin.CustomAuth_enable","value":"true"}
-    - {"var":"Plugin.CustomAuth_header","value":"X_REMOTE_USER"}
-    - {"var":"Plugin.CustomAuth_disable_logout","value":"true"}
-    - {"var":"MISP.external_baseurl","value":"https://{{soctoolsproxy}}:6443"}
-    - {"var":"MISP.live","value":"true"}
-
-- name: Init default user
-  shell: '/var/www/MISP/app/Console/cake user_init | /usr/bin/tail -n1'
-  register: init_output
-  ignore_errors: True
-
-- name: Set API key fact
-  set_fact:
-   misp_api_key: "{{ init_output.stdout }}"
-  when: '"initialised" not in init_output.stdout'
-
-- name: Get API key
-  shell: '/var/www/MISP/app/Console/cake Admin getAuthkey admin@admin.test | /usr/bin/tail -n1'
-  register: get_output
-  ignore_errors: True
-  when: '"initialised" in init_output.stdout'
-
-- name: Set API key fact
-  set_fact:
-   misp_api_key: "{{ get_output.stdout }}"
-  when: '"initialised" in init_output.stdout'   
-
-- name: add users
-  uri:
-   url: "https://{{soctoolsproxy}}:6443/admin/users/add/1"
-   method: POST
-   body_format: json
-   headers:
-    Authorization: "{{misp_api_key}}"
-    Accept: "application/json"
-    Content-type: "application/json"
-   body: '{"email": "{{item.email}}","org_id": "1","role_id": "1","external_auth_key":"{{item.email}}","external_auth_required":"1","change_pw": "0","external_auth_key":"{{item.email}}"}'    
-  ignore_errors: yes #Ignore error when user already exists
-  with_items:
-    - "{{soctools_users}}"
-
-- name: Get user API key
-  shell: '/var/www/MISP/app/Console/cake Admin getAuthkey {{soctools_users[0].email}} | /usr/bin/tail -n1'
-  register: user_key
-
-- name: Store user API key
-  copy:
-    content: "{{ user_key.stdout }}"
-    dest: "{{playbook_dir}}/secrets/tokens/misp"
-  delegate_to: 127.0.0.1
-
-- name: Enable feed
-  uri:
-   url: "https://{{soctoolsproxy}}:6443/feeds/edit/1"
-   method: POST
-   body_format: json
-   headers:
-    Authorization: "{{misp_api_key}}"
-    Accept: "application/json"
-    Content-type: "application/json"
-   body: '{"enabled": true, "caching_enabled": true, "distribution": "1","publish": true}'
-
-- name: Fetch feed
-  shell: '/var/www/MISP/app/Console/cake Server {{item}} 1 all&'
-  with_items:
-    - fetchFeed
-    - cacheFeed
-
-- name: Add example event
-  uri:
-   url:
-   url: "https://{{soctoolsproxy}}:6443/events"
-   method: POST
-   body_format: json
-   headers:
-    Authorization: "{{misp_api_key}}"
-    Accept: "application/json"
-    Content-type: "application/json"
-   body: '{"Event":{"date":"{{ansible_date_time.date}}","threat_level_id":"1","info":"testevent","published":true,"analysis":"0","distribution":"0","Attribute":[{"type":"domain","category":"Network activity","to_ids":false,"distribution":"0","comment":"","value":"example.evil"},{"type":"ip-dst","category":"Network activity","to_ids":false,"distribution":"0","comment":"","value":"10.10.10.10"}]}}'
-
-- name: Set Autostart for supervisord services
-  replace:
-    path: /etc/supervisord.conf
-    regexp: '^autostart=false$'
-    replace: 'autostart=true'
diff --git a/roles/misp/tasks/main.yml b/roles/misp/tasks/main.yml
index 9b53c6c2b6dd1a2bc3207018e2524abfc390af9f..826e9dce14466e41450089a3720f28d4a4e54573 100644
--- a/roles/misp/tasks/main.yml
+++ b/roles/misp/tasks/main.yml
@@ -1,19 +1,59 @@
 ---
 
-- include: start.yml
+- name: Copy certificates in apache cert dir
+  copy:
+    src:  "{{ item.local }}"
+    dest: "{{ item.remote }}"
+    mode: "{{ item.mode}}"
+  with_items:
+    - local: "files/{{ inventory_hostname }}.crt"
+      remote: /etc/ssl/certs/misp.crt
+      mode: '0644'
+    - local: "files/{{ inventory_hostname }}.key"
+      remote: /etc/ssl/certs/misp.key
+      mode: '0600'
+    - local: "files/{{ ca_cn }}.crt"
+      remote: /etc/ssl/certs/ca.crt
+      mode: '0644'
   tags:
-   - start
-- include: config.yml
+    - start
+
+- name: Configure Apache web server for misp
+  template:
+    src: misp.conf.j2
+    dest: /etc/httpd/conf.d/misp.conf
+  tags:
+    - start
+
+- name: Configure MISP database access
+  template:
+    src: database.php.j2
+    dest: /var/www/MISP/app/Config/database.php
+  tags:
+    - start
+
+- name: Configure MISP app
+  template:
+    src: config.php.j2
+    dest: /var/www/MISP/app/Config/config.php
   tags:
-   - start
-   - config
-- include: stop.yml
-  tags: stop
-- include: update-config.yml
+    - start
+
+- name: Configure MISP database initialization script
+  template:
+    src: checkdb.sh.j2
+    dest: /var/www/MISP/checkdb.sh
+    mode: '0700'
   tags:
-   - update-config
-   - update-misp-config
-- include: restart.yml
+    - start
+
+- name: Check if database is initialized
+  command: /var/www/MISP/checkdb.sh
   tags:
-   - restart
-   - restart-misp
+    - start
+
+- name: Start MISP
+  command: "/usr/bin/supervisord -c /etc/supervisord.conf"
+  tags:
+    - start
+
diff --git a/roles/misp/tasks/restart.yml b/roles/misp/tasks/restart.yml
deleted file mode 100644
index 5878940540110fed2900248484f1fb6c0dc6b807..0000000000000000000000000000000000000000
--- a/roles/misp/tasks/restart.yml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-
-- name: Restart php-fpm
-  command: "supervisorctl restart php-fpm"
-
-- name: Restart redis-server
-  command: "supervisorctl restart redis-server"
-
-- name: Restart apache2
-  command: "supervisorctl restart apache2"
-
-- name: Restart misp-modules
-  command: "supervisorctl restart misp-modules"
-
-- name: Restart workers
-  command: "supervisorctl restart workers"
diff --git a/roles/misp/tasks/start.yml b/roles/misp/tasks/start.yml
deleted file mode 100644
index c07917fd83fe41509adf423109b20bfc9e781744..0000000000000000000000000000000000000000
--- a/roles/misp/tasks/start.yml
+++ /dev/null
@@ -1,73 +0,0 @@
----
-
-- name: Set PHP symbolic link
-  file:
-   src: /opt/rh/rh-php72/root/bin/php  
-   dest: /usr/bin/php
-   state: link
-
-- name: Copy certificates
-  copy:
-    src:  "{{ item.local }}"
-    dest: "{{ item.remote }}"
-    mode: "{{ item.mode}}"
-  with_items:
-    - local: "{{playbook_dir}}/secrets/CA/issued/{{ inventory_hostname }}.crt"
-      remote: /etc/ssl/certs/misp.crt
-      mode: '0644'
-    - local: "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.key"
-      remote: /etc/ssl/certs/misp.key
-      mode: '0600'
-    - local: "{{playbook_dir}}/secrets/CA/ca.crt"
-      remote: /etc/ssl/certs/ca.crt
-      mode: '0644'
-    - local: "{{playbook_dir}}/secrets/CA/ca.crt"
-      remote: /etc/pki/ca-trust/source/anchors/ca.crt
-      mode: '0644'
-
-- name: Update CA trust
-  command: update-ca-trust
-
-- name: Get openid authkey
-  set_fact:
-    mispsecret: "{{lookup('file', '{{playbook_dir}}/secrets/tokens/mispsecret',convert_data=False) | from_json }}"
-
-- name: Configure Apache web server for misp
-  template:
-    src: misp.conf.j2
-    dest: /etc/httpd/conf.d/misp.conf
-
-- name: Configure MISP database access
-  template:
-    src: database.php.j2
-    dest: /var/www/MISP/app/Config/database.php
-
-- name: Configure salt
-  lineinfile:
-    path: /var/www/MISP/app/Config/config.php
-    regexp: "'salt'.*=>"
-    line: "'salt' => '{{lookup('password', '{{playbook_dir}}/secrets/misp_salt')}}',"
-
-- name: Configure MISP database initialization script
-  template:
-    src: checkdb.sh.j2
-    dest: /var/www/MISP/checkdb.sh
-    mode: '0700'
-
-- name: Check if database is initialized
-  command: /var/www/MISP/checkdb.sh
-
-- name: Start php-fpm
-  command: "supervisorctl start php-fpm"
-
-- name: Start redis-server
-  command: "supervisorctl start redis-server"
-
-- name: Start apache2
-  command: "supervisorctl start apache2"
-
-- name: Start misp-modules
-  command: "supervisorctl start misp-modules"
-
-- name: Start workers
-  command: "supervisorctl start workers"
diff --git a/roles/misp/tasks/stop.yml b/roles/misp/tasks/stop.yml
deleted file mode 100644
index 6a56d87d74255095f17ca8ac2db562596446f586..0000000000000000000000000000000000000000
--- a/roles/misp/tasks/stop.yml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-- name: Stop php-fpm
-  command: "supervisorctl stop php-fpm"
-
-- name: Stop redis-server
-  command: "supervisorctl stop redis-server"
-
-- name: Stop apache2
-  command: "supervisorctl stop apache2"
-
-- name: Stop misp-modules
-  command: "supervisorctl stop misp-modules"
-
-- name: Stop workers
-  #command: "supervisorctl start workers"
-  command: 'su - -s /bin/bash -c "/var/www/MISP/app/Console/worker/stop.sh" apache'
-
diff --git a/roles/misp/tasks/update-config.yml b/roles/misp/tasks/update-config.yml
deleted file mode 100644
index cd21505a47e530a967e3c44bd2a772d1b8d08bd7..0000000000000000000000000000000000000000
--- a/roles/misp/tasks/update-config.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-
diff --git a/roles/misp/templates/checkdb.sh.j2 b/roles/misp/templates/checkdb.sh.j2
index c8eb4abac0fefe53b36d5ac6fb5e588e96a03054..5aba69f866bb0343a8abbbadd3e6606213574123 100644
--- a/roles/misp/templates/checkdb.sh.j2
+++ b/roles/misp/templates/checkdb.sh.j2
@@ -1,5 +1,5 @@
 #!/bin/bash -x
-MISPINIT=$(echo "SELECT COUNT(DISTINCT 'table_name') FROM information_schema.columns WHERE table_schema = '{{misp_dbname}}';" | mysql -s -h {{mysql_name}} -u {{misp_dbuser}} -p{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}} {{misp_dbname}})
+MISPINIT=$(echo "SELECT COUNT(DISTINCT 'table_name') FROM information_schema.columns WHERE table_schema = '{{misp_dbname}}';" | mysql -s -h {{groups['mysql'][0]}} -u {{misp_dbuser}} -p{{misp_dbpass}} {{misp_dbname}})
 if [ ${MISPINIT} == "0" ]; then
-  cat /var/www/MISP/INSTALL/MYSQL.sql | mysql -s -h {{mysql_name}} -u {{misp_dbuser}} -p{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}} {{misp_dbname}}
+  cat /var/www/MISP/INSTALL/MYSQL.sql | mysql -s -h {{groups['mysql'][0]}} -u {{misp_dbuser}} -p{{misp_dbpass}} {{misp_dbname}}
 fi
diff --git a/roles/misp/templates/config.php.j2 b/roles/misp/templates/config.php.j2
new file mode 100644
index 0000000000000000000000000000000000000000..46ca1ca0aadfb26b91e4c4469afcf8c967333288
--- /dev/null
+++ b/roles/misp/templates/config.php.j2
@@ -0,0 +1,84 @@
+<?php
+$config = array (
+  'debug' => 0,
+  'MISP' => 
+  array (
+    'baseurl' => 'https://{{dslproxy}}:6443',
+    'footermidleft' => '',
+    'footermidright' => '',
+    'org' => 'ORGNAME',
+    'showorg' => true,
+    'threatlevel_in_email_subject' => true,
+    'email_subject_TLP_string' => 'tlp:amber',
+    'email_subject_tag' => 'tlp',
+    'email_subject_include_tag_name' => true,
+    'background_jobs' => true,
+    'cached_attachments' => true,
+    'email' => 'email@address.com',
+    'contact' => 'email@address.com',
+    'cveurl' => 'https://cve.circl.lu/cve/',
+    'cweurl' => 'https://cve.circl.lu/cwe/',
+    'disablerestalert' => false,
+    'default_event_distribution' => '1',
+    'default_attribute_distribution' => 'event',
+    'tagging' => true,
+    'full_tags_on_event_index' => true,
+    'attribute_tagging' => true,
+    'full_tags_on_attribute_index' => true,
+    'footer_logo' => '',
+    'take_ownership_xml_import' => false,
+    'unpublishedprivate' => false,
+    'disable_emailing' => false,
+    'manage_workers' => true,
+    'Attributes_Values_Filter_In_Event' => 'id, uuid, value, comment, type, category, Tag.name',
+    'uuid' => '6ec3e533-99f9-42ac-952d-002664d1500f',
+    'live' => true,
+  ),
+  'GnuPG' => 
+  array (
+    'onlyencrypted' => false,
+    'email' => '',
+    'homedir' => '',
+    'password' => '',
+    'bodyonlyencrypted' => false,
+    'sign' => true,
+    'obscure_subject' => false,
+  ),
+  'SMIME' => 
+  array (
+    'enabled' => false,
+    'email' => '',
+    'cert_public_sign' => '',
+    'key_sign' => '',
+    'password' => '',
+  ),
+  'Proxy' => 
+  array (
+    'host' => '',
+    'port' => '',
+    'method' => '',
+    'user' => '',
+    'password' => '',
+  ),
+  'SecureAuth' => 
+  array (
+    'amount' => 5,
+    'expire' => 300,
+  ),
+  'Security' => 
+  array (
+    'level' => 'medium',
+    'salt' => '{{misp_salt}}',
+    'cipherSeed' => '',
+  ),
+  'Session.defaults' => 'php',
+  'Session.timeout' => 60,
+  'Session.cookieTimeout' => 60,
+  'Session.autoRegenerate' => false,
+  'Session.checkAgent' => false,
+  'site_admin_debug' => NULL,
+  'Plugin' => NULL,
+  'CertAuth' => NULL,
+  'ApacheShibbAuth' => NULL,
+  'ApacheSecureAuth' => NULL,
+);
diff --git a/roles/misp/templates/database.php.j2 b/roles/misp/templates/database.php.j2
index 867e5fb9e876d23e8d6552eab177a1e5121c8eff..0cf1934f76488c257a3f68c2a4cf97ae58a8dead 100755
--- a/roles/misp/templates/database.php.j2
+++ b/roles/misp/templates/database.php.j2
@@ -63,11 +63,11 @@ class DATABASE_CONFIG {
 		'datasource' => 'Database/Mysql',
 		//'datasource' => 'Database/Postgres',
 		'persistent' => false,
-		'host' => '{{mysql_name}}',
+		'host' => '{{groups['mysql'][0]}}',
 		'login' => '{{misp_dbuser}}',
 		'port' => 3306, // MySQL & MariaDB
 		//'port' => 5432, // PostgreSQL
-		'password' => '{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}}',
+		'password' => '{{misp_dbpass}}',
 		'database' => '{{misp_dbname}}',
 		'prefix' => '',
 		'encoding' => 'utf8',
diff --git a/roles/misp/templates/misp.conf.j2 b/roles/misp/templates/misp.conf.j2
index 2ca05216dba90d63323d1362325837dd83824fbd..3a9cb85aa753ba49e5cdeec63daf64a76f46e340 100644
--- a/roles/misp/templates/misp.conf.j2
+++ b/roles/misp/templates/misp.conf.j2
@@ -1,7 +1,7 @@
 Listen 6443 https
 <VirtualHost *:6443>
-ServerAdmin admin@{{soctoolsproxy}}
-ServerName {{soctoolsproxy}}
+ServerAdmin admin@{{dslproxy}}
+ServerName {{dslproxy}}
 DocumentRoot /var/www/MISP/app/webroot
 <Directory /var/www/MISP/app/webroot>
 Options -Indexes
@@ -10,25 +10,15 @@ AllowOverride all
 
 DirectoryIndex index.php
 
+# ProxyPassMatch ^/info$ fcgi://127.0.0.1:9000/var/www/MISP/app/webroot/info.php
 ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/MISP/app/webroot/$1
 
-SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
-
-OIDCCryptoPassphrase {{lookup('password', '{{playbook_dir}}/secrets/passwords/misp_crypto')}}
-OIDCProviderMetadataURL https://{{soctoolsproxy}}:12443/auth/realms/{{openid_realm}}/.well-known/openid-configuration
-OIDCRedirectURI https://{{soctoolsproxy}}:6443/users/login/keycloak
-OIDCClientID soctools-misp
-OIDCScope "openid profile"
-OIDCClientSecret {{mispsecret.value}}
-OIDCRemoteUserClaim email
-OIDCProviderTokenEndpointAuth client_secret_basic
-
-<Location /users/login>
-  AuthType openid-connect
-  Require valid-user
-  RequestHeader set X-Remote-User %{OIDC_CLAIM_email}e
-</Location>
-
+#<FilesMatch "\.php$">
+#     SetHandler "proxy:fcgi://127.0.0.1:9000"
+#     ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
+#     AddHandler php72-fcgi .php
+#     Action php72-fcgi /cgi-bin/php72.fcgi
+#</FilesMatch>
 
 SSLEngine On
 SSLCertificateFile /etc/ssl/certs/misp.crt
diff --git a/roles/misp/templates/mysql_secure.sql.j2 b/roles/misp/templates/mysql_secure.sql.j2
index dd8ffd5d96d8dcdc08ca9efca5b2f66f3fa82dc9..7b8dd283a33da8aab7f443985ea9f5f97fb6f5d6 100644
--- a/roles/misp/templates/mysql_secure.sql.j2
+++ b/roles/misp/templates/mysql_secure.sql.j2
@@ -1,4 +1,4 @@
-UPDATE mysql.user SET Password=PASSWORD('{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_root')}}') WHERE User='root';
+UPDATE mysql.user SET Password=PASSWORD('{{mysql_dbrootpass}}') WHERE User='root';
 DELETE FROM mysql.user WHERE User='';
 DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
 DROP DATABASE IF EXISTS test;
@@ -6,7 +6,7 @@ DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
 
 CREATE DATABASE {{misp_dbname}};
 {% for misp_host in groups['mispcontainers'] %}
-GRANT USAGE on *.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}' IDENTIFIED by '{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}}';
+GRANT USAGE on *.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}' IDENTIFIED by '{{misp_dbpass}}';
 GRANT ALL PRIVILEGES on {{misp_dbname}}.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}';
 {% endfor %}
 
diff --git a/roles/mysql/tasks/main.yml b/roles/mysql/tasks/main.yml
index 69395fe3e0562adca1f273db7d17f8e3b1451ee6..f915611043cb4f4d1aa7aa9b2d9c4b87539ad4c5 100644
--- a/roles/mysql/tasks/main.yml
+++ b/roles/mysql/tasks/main.yml
@@ -1,20 +1,4 @@
 ---
 
 - include: secure.yml
-  tags:
-   - start
 - include: misp.yml
-  tags:
-   - start
-- include: stop.yml
-  tags:
-   - stop
-   - stop-mysql
-- include: update-config.yml
-  tags:
-   - update-config
-   - update-mysql-config
-- include: restart.yml
-  tags:
-   - restart
-   - restart-mysql
diff --git a/roles/mysql/tasks/misp.yml b/roles/mysql/tasks/misp.yml
index c541e99243876ad9739ec4b52bc946b481ef6274..60e1d0a082f9036afb9295a5b9f8ad2e3713f843 100644
--- a/roles/mysql/tasks/misp.yml
+++ b/roles/mysql/tasks/misp.yml
@@ -4,26 +4,23 @@
   mysql_db:
     name: "{{misp_dbname}}"
     state: present
+  tags:
+    - start
 
 - name: Create misp user
   mysql_user:
     name: "{{misp_dbuser}}"
-    #host: "{{item}}.{{soctools_netname}}"
-    host: "%"
-    password: "{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}}"
+    host: "{{item}}.{{soctools_netname}}"
+    password: "{{misp_dbpass}}"
     priv: "{{misp_dbname}}.*:ALL"
   with_items: "{{groups['mispcontainers']}}"
-
-- name: Set Autostart for supervisord's services
-  replace:
-    path: /etc/supervisord.conf
-    regexp: '^autostart=false$'
-    replace: 'autostart=true'
+  tags:
+    - start
 
 
 #  CREATE DATABASE IF NOT EXISTS {{misp_dbname}};
 #  {% for misp_host in groups['mispcontainers'] %}
-#  GRANT USAGE on *.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}' IDENTIFIED by '{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}}';
+#  GRANT USAGE on *.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}' IDENTIFIED by '{{misp_dbpass}}';
 #  GRANT ALL PRIVILEGES on {{misp_dbname}}.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}';
 #  {% endfor %}
 #  
diff --git a/roles/mysql/tasks/restart.yml b/roles/mysql/tasks/restart.yml
deleted file mode 100644
index 79a5ef40478116ae27a4d01452ff77d6495cbd59..0000000000000000000000000000000000000000
--- a/roles/mysql/tasks/restart.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-
-- name: Restart MySQL
-  shell: "supervisorctl restart mysql"
diff --git a/roles/mysql/tasks/secure.yml b/roles/mysql/tasks/secure.yml
index 80db96cf207efd2ba5b4ec0c5aa4828041a6e980..18f098e0bf61973914ca8e52e4de00a7e8a10652 100644
--- a/roles/mysql/tasks/secure.yml
+++ b/roles/mysql/tasks/secure.yml
@@ -4,7 +4,7 @@
   mysql_user:
     name: root
     host_all: yes
-    password: "{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_root')}}"
+    password: "{{mysql_dbrootpass}}"
   tags:
     - start
   ignore_errors: true
@@ -54,7 +54,7 @@
 # 
 # 
 # 
-# UPDATE mysql.user SET Password=PASSWORD('{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_root')}}') WHERE User='root';
+# UPDATE mysql.user SET Password=PASSWORD('{{mysql_dbrootpass}}') WHERE User='root';
 # DELETE FROM mysql.user WHERE User='';
 # DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
 # DROP DATABASE IF EXISTS test;
@@ -64,9 +64,9 @@
 # 
 # 
 # #!/bin/bash -x
-# MISPINIT=$(echo "SELECT COUNT(DISTINCT 'table_name') FROM information_schema.columns WHERE table_schema = '{{misp_dbname}}';" | mysql -s -h {{groups['mysql'][0]}} -u {{misp_dbuser}} -p{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}} {{misp_dbname}})
-# #MISPINIT=$(echo "select count(id) from users;" | mysql -s -h {{groups['mysql'][0]}} -u {{misp_dbuser}} -p{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}} {{misp_dbname}})
+# MISPINIT=$(echo "SELECT COUNT(DISTINCT 'table_name') FROM information_schema.columns WHERE table_schema = '{{misp_dbname}}';" | mysql -s -h {{groups['mysql'][0]}} -u {{misp_dbuser}} -p{{misp_dbpass}} {{misp_dbname}})
+# #MISPINIT=$(echo "select count(id) from users;" | mysql -s -h {{groups['mysql'][0]}} -u {{misp_dbuser}} -p{{misp_dbpass}} {{misp_dbname}})
 # if [ ${MISPINIT} == "0" ]; then
-#   cat /var/www/MISP/INSTALL/MYSQL.sql | mysql -s -h {{groups['mysql'][0]}} -u {{misp_dbuser}} -p{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}} {{misp_dbname}}
+#   cat /var/www/MISP/INSTALL/MYSQL.sql | mysql -s -h {{groups['mysql'][0]}} -u {{misp_dbuser}} -p{{misp_dbpass}} {{misp_dbname}}
 #   touch /var/www/MISP/dbchecked-$(date +%Y%m%d_%H%M%S)
 # fi
diff --git a/roles/mysql/tasks/stop.yml b/roles/mysql/tasks/stop.yml
deleted file mode 100644
index dcfc34a99ec56f67b192a0ab40ae019c3db96bcf..0000000000000000000000000000000000000000
--- a/roles/mysql/tasks/stop.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-
-- name: Stop MySQL
-  shell: "supervisorctl stop mysql"
diff --git a/roles/mysql/tasks/update-config.yml b/roles/mysql/tasks/update-config.yml
deleted file mode 100644
index cd21505a47e530a967e3c44bd2a772d1b8d08bd7..0000000000000000000000000000000000000000
--- a/roles/mysql/tasks/update-config.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-
diff --git a/roles/mysql/templates/dotmy.cnf.j2 b/roles/mysql/templates/dotmy.cnf.j2
index 79fe59e355fa1a7d55872cdd80e0025bfc246f25..56feaea61621677a51089d18f6fea96fc3a30a4b 100644
--- a/roles/mysql/templates/dotmy.cnf.j2
+++ b/roles/mysql/templates/dotmy.cnf.j2
@@ -1,3 +1,3 @@
 [client]
 user=root
-password='{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_root')}}'
+password='{{mysql_dbrootpass}}'
diff --git a/roles/mysql/templates/mysql_secure.sql.j2 b/roles/mysql/templates/mysql_secure.sql.j2
index 5b8474e9b0dc5dbcc27f013a771f2187fdc68b6a..c1f602d390f8e986c6b8cf73664a2bde3a87fbbb 100644
--- a/roles/mysql/templates/mysql_secure.sql.j2
+++ b/roles/mysql/templates/mysql_secure.sql.j2
@@ -1,4 +1,4 @@
-UPDATE mysql.user SET Password=PASSWORD('{{playbook_dir}}/secrets/passwords/mysql_root')}}') WHERE User='root';
+UPDATE mysql.user SET Password=PASSWORD('{{mysql_dbrootpass}}') WHERE User='root';
 DELETE FROM mysql.user WHERE User='';
 DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
 DROP DATABASE IF EXISTS test;
@@ -6,14 +6,9 @@ DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
 
 CREATE DATABASE IF NOT EXISTS {{misp_dbname}};
 {% for misp_host in groups['mispcontainers'] %}
-GRANT USAGE on *.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}' IDENTIFIED by '{{playbook_dir}}/secrets/passwords/mysql_misp')}}';
+GRANT USAGE on *.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}' IDENTIFIED by '{{misp_dbpass}}';
 GRANT ALL PRIVILEGES on {{misp_dbname}}.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}';
 {% endfor %}
 
-INSTALL SONAME 'server_audit';
-SET GLOBAL server_audit_logging=ON;
-SET GLOBAL server_audit_file_rotate_now = ON;
-SET GLOBAl server_audit_file_rotations = 2;
-SET GLOABL audit_log_format = JSON;
 
 FLUSH PRIVILEGES;
diff --git a/roles/nifi/files/CountriesWithRegionalCodes.csv b/roles/nifi/files/CountriesWithRegionalCodes.csv
deleted file mode 100644
index f9b67f9dfe618e9151c718c23ed568960b5e69cb..0000000000000000000000000000000000000000
--- a/roles/nifi/files/CountriesWithRegionalCodes.csv
+++ /dev/null
@@ -1,250 +0,0 @@
-name,alpha-2,alpha-3,country-code,iso_3166-2,region,sub-region,intermediate-region,region-code,sub-region-code,intermediate-region-code
-Afghanistan,AF,AFG,004,ISO 3166-2:AF,Asia,Southern Asia,"",142,034,""
-Åland Islands,AX,ALA,248,ISO 3166-2:AX,Europe,Northern Europe,"",150,154,""
-Albania,AL,ALB,008,ISO 3166-2:AL,Europe,Southern Europe,"",150,039,""
-Algeria,DZ,DZA,012,ISO 3166-2:DZ,Africa,Northern Africa,"",002,015,""
-American Samoa,AS,ASM,016,ISO 3166-2:AS,Oceania,Polynesia,"",009,061,""
-Andorra,AD,AND,020,ISO 3166-2:AD,Europe,Southern Europe,"",150,039,""
-Angola,AO,AGO,024,ISO 3166-2:AO,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
-Anguilla,AI,AIA,660,ISO 3166-2:AI,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Antarctica,AQ,ATA,010,ISO 3166-2:AQ,"","","","","",""
-Antigua and Barbuda,AG,ATG,028,ISO 3166-2:AG,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Argentina,AR,ARG,032,ISO 3166-2:AR,Americas,Latin America and the Caribbean,South America,019,419,005
-Armenia,AM,ARM,051,ISO 3166-2:AM,Asia,Western Asia,"",142,145,""
-Aruba,AW,ABW,533,ISO 3166-2:AW,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Australia,AU,AUS,036,ISO 3166-2:AU,Oceania,Australia and New Zealand,"",009,053,""
-Austria,AT,AUT,040,ISO 3166-2:AT,Europe,Western Europe,"",150,155,""
-Azerbaijan,AZ,AZE,031,ISO 3166-2:AZ,Asia,Western Asia,"",142,145,""
-Bahamas,BS,BHS,044,ISO 3166-2:BS,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Bahrain,BH,BHR,048,ISO 3166-2:BH,Asia,Western Asia,"",142,145,""
-Bangladesh,BD,BGD,050,ISO 3166-2:BD,Asia,Southern Asia,"",142,034,""
-Barbados,BB,BRB,052,ISO 3166-2:BB,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Belarus,BY,BLR,112,ISO 3166-2:BY,Europe,Eastern Europe,"",150,151,""
-Belgium,BE,BEL,056,ISO 3166-2:BE,Europe,Western Europe,"",150,155,""
-Belize,BZ,BLZ,084,ISO 3166-2:BZ,Americas,Latin America and the Caribbean,Central America,019,419,013
-Benin,BJ,BEN,204,ISO 3166-2:BJ,Africa,Sub-Saharan Africa,Western Africa,002,202,011
-Bermuda,BM,BMU,060,ISO 3166-2:BM,Americas,Northern America,"",019,021,""
-Bhutan,BT,BTN,064,ISO 3166-2:BT,Asia,Southern Asia,"",142,034,""
-Bolivia (Plurinational State of),BO,BOL,068,ISO 3166-2:BO,Americas,Latin America and the Caribbean,South America,019,419,005
-"Bonaire, Sint Eustatius and Saba",BQ,BES,535,ISO 3166-2:BQ,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Bosnia and Herzegovina,BA,BIH,070,ISO 3166-2:BA,Europe,Southern Europe,"",150,039,""
-Botswana,BW,BWA,072,ISO 3166-2:BW,Africa,Sub-Saharan Africa,Southern Africa,002,202,018
-Bouvet Island,BV,BVT,074,ISO 3166-2:BV,Americas,Latin America and the Caribbean,South America,019,419,005
-Brazil,BR,BRA,076,ISO 3166-2:BR,Americas,Latin America and the Caribbean,South America,019,419,005
-British Indian Ocean Territory,IO,IOT,086,ISO 3166-2:IO,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Brunei Darussalam,BN,BRN,096,ISO 3166-2:BN,Asia,South-eastern Asia,"",142,035,""
-Bulgaria,BG,BGR,100,ISO 3166-2:BG,Europe,Eastern Europe,"",150,151,""
-Burkina Faso,BF,BFA,854,ISO 3166-2:BF,Africa,Sub-Saharan Africa,Western Africa,002,202,011
-Burundi,BI,BDI,108,ISO 3166-2:BI,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Cabo Verde,CV,CPV,132,ISO 3166-2:CV,Africa,Sub-Saharan Africa,Western Africa,002,202,011
-Cambodia,KH,KHM,116,ISO 3166-2:KH,Asia,South-eastern Asia,"",142,035,""
-Cameroon,CM,CMR,120,ISO 3166-2:CM,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
-Canada,CA,CAN,124,ISO 3166-2:CA,Americas,Northern America,"",019,021,""
-Cayman Islands,KY,CYM,136,ISO 3166-2:KY,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Central African Republic,CF,CAF,140,ISO 3166-2:CF,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
-Chad,TD,TCD,148,ISO 3166-2:TD,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
-Chile,CL,CHL,152,ISO 3166-2:CL,Americas,Latin America and the Caribbean,South America,019,419,005
-China,CN,CHN,156,ISO 3166-2:CN,Asia,Eastern Asia,"",142,030,""
-Christmas Island,CX,CXR,162,ISO 3166-2:CX,Oceania,Australia and New Zealand,"",009,053,""
-Cocos (Keeling) Islands,CC,CCK,166,ISO 3166-2:CC,Oceania,Australia and New Zealand,"",009,053,""
-Colombia,CO,COL,170,ISO 3166-2:CO,Americas,Latin America and the Caribbean,South America,019,419,005
-Comoros,KM,COM,174,ISO 3166-2:KM,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Congo,CG,COG,178,ISO 3166-2:CG,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
-"Congo, Democratic Republic of the",CD,COD,180,ISO 3166-2:CD,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
-Cook Islands,CK,COK,184,ISO 3166-2:CK,Oceania,Polynesia,"",009,061,""
-Costa Rica,CR,CRI,188,ISO 3166-2:CR,Americas,Latin America and the Caribbean,Central America,019,419,013
-Côte d'Ivoire,CI,CIV,384,ISO 3166-2:CI,Africa,Sub-Saharan Africa,Western Africa,002,202,011
-Croatia,HR,HRV,191,ISO 3166-2:HR,Europe,Southern Europe,"",150,039,""
-Cuba,CU,CUB,192,ISO 3166-2:CU,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Curaçao,CW,CUW,531,ISO 3166-2:CW,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Cyprus,CY,CYP,196,ISO 3166-2:CY,Asia,Western Asia,"",142,145,""
-Czechia,CZ,CZE,203,ISO 3166-2:CZ,Europe,Eastern Europe,"",150,151,""
-Denmark,DK,DNK,208,ISO 3166-2:DK,Europe,Northern Europe,"",150,154,""
-Djibouti,DJ,DJI,262,ISO 3166-2:DJ,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Dominica,DM,DMA,212,ISO 3166-2:DM,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Dominican Republic,DO,DOM,214,ISO 3166-2:DO,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Ecuador,EC,ECU,218,ISO 3166-2:EC,Americas,Latin America and the Caribbean,South America,019,419,005
-Egypt,EG,EGY,818,ISO 3166-2:EG,Africa,Northern Africa,"",002,015,""
-El Salvador,SV,SLV,222,ISO 3166-2:SV,Americas,Latin America and the Caribbean,Central America,019,419,013
-Equatorial Guinea,GQ,GNQ,226,ISO 3166-2:GQ,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
-Eritrea,ER,ERI,232,ISO 3166-2:ER,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Estonia,EE,EST,233,ISO 3166-2:EE,Europe,Northern Europe,"",150,154,""
-Eswatini,SZ,SWZ,748,ISO 3166-2:SZ,Africa,Sub-Saharan Africa,Southern Africa,002,202,018
-Ethiopia,ET,ETH,231,ISO 3166-2:ET,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Falkland Islands (Malvinas),FK,FLK,238,ISO 3166-2:FK,Americas,Latin America and the Caribbean,South America,019,419,005
-Faroe Islands,FO,FRO,234,ISO 3166-2:FO,Europe,Northern Europe,"",150,154,""
-Fiji,FJ,FJI,242,ISO 3166-2:FJ,Oceania,Melanesia,"",009,054,""
-Finland,FI,FIN,246,ISO 3166-2:FI,Europe,Northern Europe,"",150,154,""
-France,FR,FRA,250,ISO 3166-2:FR,Europe,Western Europe,"",150,155,""
-French Guiana,GF,GUF,254,ISO 3166-2:GF,Americas,Latin America and the Caribbean,South America,019,419,005
-French Polynesia,PF,PYF,258,ISO 3166-2:PF,Oceania,Polynesia,"",009,061,""
-French Southern Territories,TF,ATF,260,ISO 3166-2:TF,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Gabon,GA,GAB,266,ISO 3166-2:GA,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
-Gambia,GM,GMB,270,ISO 3166-2:GM,Africa,Sub-Saharan Africa,Western Africa,002,202,011
-Georgia,GE,GEO,268,ISO 3166-2:GE,Asia,Western Asia,"",142,145,""
-Germany,DE,DEU,276,ISO 3166-2:DE,Europe,Western Europe,"",150,155,""
-Ghana,GH,GHA,288,ISO 3166-2:GH,Africa,Sub-Saharan Africa,Western Africa,002,202,011
-Gibraltar,GI,GIB,292,ISO 3166-2:GI,Europe,Southern Europe,"",150,039,""
-Greece,GR,GRC,300,ISO 3166-2:GR,Europe,Southern Europe,"",150,039,""
-Greenland,GL,GRL,304,ISO 3166-2:GL,Americas,Northern America,"",019,021,""
-Grenada,GD,GRD,308,ISO 3166-2:GD,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Guadeloupe,GP,GLP,312,ISO 3166-2:GP,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Guam,GU,GUM,316,ISO 3166-2:GU,Oceania,Micronesia,"",009,057,""
-Guatemala,GT,GTM,320,ISO 3166-2:GT,Americas,Latin America and the Caribbean,Central America,019,419,013
-Guernsey,GG,GGY,831,ISO 3166-2:GG,Europe,Northern Europe,Channel Islands,150,154,830
-Guinea,GN,GIN,324,ISO 3166-2:GN,Africa,Sub-Saharan Africa,Western Africa,002,202,011
-Guinea-Bissau,GW,GNB,624,ISO 3166-2:GW,Africa,Sub-Saharan Africa,Western Africa,002,202,011
-Guyana,GY,GUY,328,ISO 3166-2:GY,Americas,Latin America and the Caribbean,South America,019,419,005
-Haiti,HT,HTI,332,ISO 3166-2:HT,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Heard Island and McDonald Islands,HM,HMD,334,ISO 3166-2:HM,Oceania,Australia and New Zealand,"",009,053,""
-Holy See,VA,VAT,336,ISO 3166-2:VA,Europe,Southern Europe,"",150,039,""
-Honduras,HN,HND,340,ISO 3166-2:HN,Americas,Latin America and the Caribbean,Central America,019,419,013
-Hong Kong,HK,HKG,344,ISO 3166-2:HK,Asia,Eastern Asia,"",142,030,""
-Hungary,HU,HUN,348,ISO 3166-2:HU,Europe,Eastern Europe,"",150,151,""
-Iceland,IS,ISL,352,ISO 3166-2:IS,Europe,Northern Europe,"",150,154,""
-India,IN,IND,356,ISO 3166-2:IN,Asia,Southern Asia,"",142,034,""
-Indonesia,ID,IDN,360,ISO 3166-2:ID,Asia,South-eastern Asia,"",142,035,""
-Iran (Islamic Republic of),IR,IRN,364,ISO 3166-2:IR,Asia,Southern Asia,"",142,034,""
-Iraq,IQ,IRQ,368,ISO 3166-2:IQ,Asia,Western Asia,"",142,145,""
-Ireland,IE,IRL,372,ISO 3166-2:IE,Europe,Northern Europe,"",150,154,""
-Isle of Man,IM,IMN,833,ISO 3166-2:IM,Europe,Northern Europe,"",150,154,""
-Israel,IL,ISR,376,ISO 3166-2:IL,Asia,Western Asia,"",142,145,""
-Italy,IT,ITA,380,ISO 3166-2:IT,Europe,Southern Europe,"",150,039,""
-Jamaica,JM,JAM,388,ISO 3166-2:JM,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Japan,JP,JPN,392,ISO 3166-2:JP,Asia,Eastern Asia,"",142,030,""
-Jersey,JE,JEY,832,ISO 3166-2:JE,Europe,Northern Europe,Channel Islands,150,154,830
-Jordan,JO,JOR,400,ISO 3166-2:JO,Asia,Western Asia,"",142,145,""
-Kazakhstan,KZ,KAZ,398,ISO 3166-2:KZ,Asia,Central Asia,"",142,143,""
-Kenya,KE,KEN,404,ISO 3166-2:KE,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Kiribati,KI,KIR,296,ISO 3166-2:KI,Oceania,Micronesia,"",009,057,""
-Korea (Democratic People's Republic of),KP,PRK,408,ISO 3166-2:KP,Asia,Eastern Asia,"",142,030,""
-"Korea, Republic of",KR,KOR,410,ISO 3166-2:KR,Asia,Eastern Asia,"",142,030,""
-Kuwait,KW,KWT,414,ISO 3166-2:KW,Asia,Western Asia,"",142,145,""
-Kyrgyzstan,KG,KGZ,417,ISO 3166-2:KG,Asia,Central Asia,"",142,143,""
-Lao People's Democratic Republic,LA,LAO,418,ISO 3166-2:LA,Asia,South-eastern Asia,"",142,035,""
-Latvia,LV,LVA,428,ISO 3166-2:LV,Europe,Northern Europe,"",150,154,""
-Lebanon,LB,LBN,422,ISO 3166-2:LB,Asia,Western Asia,"",142,145,""
-Lesotho,LS,LSO,426,ISO 3166-2:LS,Africa,Sub-Saharan Africa,Southern Africa,002,202,018
-Liberia,LR,LBR,430,ISO 3166-2:LR,Africa,Sub-Saharan Africa,Western Africa,002,202,011
-Libya,LY,LBY,434,ISO 3166-2:LY,Africa,Northern Africa,"",002,015,""
-Liechtenstein,LI,LIE,438,ISO 3166-2:LI,Europe,Western Europe,"",150,155,""
-Lithuania,LT,LTU,440,ISO 3166-2:LT,Europe,Northern Europe,"",150,154,""
-Luxembourg,LU,LUX,442,ISO 3166-2:LU,Europe,Western Europe,"",150,155,""
-Macao,MO,MAC,446,ISO 3166-2:MO,Asia,Eastern Asia,"",142,030,""
-Madagascar,MG,MDG,450,ISO 3166-2:MG,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Malawi,MW,MWI,454,ISO 3166-2:MW,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Malaysia,MY,MYS,458,ISO 3166-2:MY,Asia,South-eastern Asia,"",142,035,""
-Maldives,MV,MDV,462,ISO 3166-2:MV,Asia,Southern Asia,"",142,034,""
-Mali,ML,MLI,466,ISO 3166-2:ML,Africa,Sub-Saharan Africa,Western Africa,002,202,011
-Malta,MT,MLT,470,ISO 3166-2:MT,Europe,Southern Europe,"",150,039,""
-Marshall Islands,MH,MHL,584,ISO 3166-2:MH,Oceania,Micronesia,"",009,057,""
-Martinique,MQ,MTQ,474,ISO 3166-2:MQ,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Mauritania,MR,MRT,478,ISO 3166-2:MR,Africa,Sub-Saharan Africa,Western Africa,002,202,011
-Mauritius,MU,MUS,480,ISO 3166-2:MU,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Mayotte,YT,MYT,175,ISO 3166-2:YT,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Mexico,MX,MEX,484,ISO 3166-2:MX,Americas,Latin America and the Caribbean,Central America,019,419,013
-Micronesia (Federated States of),FM,FSM,583,ISO 3166-2:FM,Oceania,Micronesia,"",009,057,""
-"Moldova, Republic of",MD,MDA,498,ISO 3166-2:MD,Europe,Eastern Europe,"",150,151,""
-Monaco,MC,MCO,492,ISO 3166-2:MC,Europe,Western Europe,"",150,155,""
-Mongolia,MN,MNG,496,ISO 3166-2:MN,Asia,Eastern Asia,"",142,030,""
-Montenegro,ME,MNE,499,ISO 3166-2:ME,Europe,Southern Europe,"",150,039,""
-Montserrat,MS,MSR,500,ISO 3166-2:MS,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Morocco,MA,MAR,504,ISO 3166-2:MA,Africa,Northern Africa,"",002,015,""
-Mozambique,MZ,MOZ,508,ISO 3166-2:MZ,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Myanmar,MM,MMR,104,ISO 3166-2:MM,Asia,South-eastern Asia,"",142,035,""
-Namibia,NA,NAM,516,ISO 3166-2:NA,Africa,Sub-Saharan Africa,Southern Africa,002,202,018
-Nauru,NR,NRU,520,ISO 3166-2:NR,Oceania,Micronesia,"",009,057,""
-Nepal,NP,NPL,524,ISO 3166-2:NP,Asia,Southern Asia,"",142,034,""
-Netherlands,NL,NLD,528,ISO 3166-2:NL,Europe,Western Europe,"",150,155,""
-New Caledonia,NC,NCL,540,ISO 3166-2:NC,Oceania,Melanesia,"",009,054,""
-New Zealand,NZ,NZL,554,ISO 3166-2:NZ,Oceania,Australia and New Zealand,"",009,053,""
-Nicaragua,NI,NIC,558,ISO 3166-2:NI,Americas,Latin America and the Caribbean,Central America,019,419,013
-Niger,NE,NER,562,ISO 3166-2:NE,Africa,Sub-Saharan Africa,Western Africa,002,202,011
-Nigeria,NG,NGA,566,ISO 3166-2:NG,Africa,Sub-Saharan Africa,Western Africa,002,202,011
-Niue,NU,NIU,570,ISO 3166-2:NU,Oceania,Polynesia,"",009,061,""
-Norfolk Island,NF,NFK,574,ISO 3166-2:NF,Oceania,Australia and New Zealand,"",009,053,""
-North Macedonia,MK,MKD,807,ISO 3166-2:MK,Europe,Southern Europe,"",150,039,""
-Northern Mariana Islands,MP,MNP,580,ISO 3166-2:MP,Oceania,Micronesia,"",009,057,""
-Norway,NO,NOR,578,ISO 3166-2:NO,Europe,Northern Europe,"",150,154,""
-Oman,OM,OMN,512,ISO 3166-2:OM,Asia,Western Asia,"",142,145,""
-Pakistan,PK,PAK,586,ISO 3166-2:PK,Asia,Southern Asia,"",142,034,""
-Palau,PW,PLW,585,ISO 3166-2:PW,Oceania,Micronesia,"",009,057,""
-"Palestine, State of",PS,PSE,275,ISO 3166-2:PS,Asia,Western Asia,"",142,145,""
-Panama,PA,PAN,591,ISO 3166-2:PA,Americas,Latin America and the Caribbean,Central America,019,419,013
-Papua New Guinea,PG,PNG,598,ISO 3166-2:PG,Oceania,Melanesia,"",009,054,""
-Paraguay,PY,PRY,600,ISO 3166-2:PY,Americas,Latin America and the Caribbean,South America,019,419,005
-Peru,PE,PER,604,ISO 3166-2:PE,Americas,Latin America and the Caribbean,South America,019,419,005
-Philippines,PH,PHL,608,ISO 3166-2:PH,Asia,South-eastern Asia,"",142,035,""
-Pitcairn,PN,PCN,612,ISO 3166-2:PN,Oceania,Polynesia,"",009,061,""
-Poland,PL,POL,616,ISO 3166-2:PL,Europe,Eastern Europe,"",150,151,""
-Portugal,PT,PRT,620,ISO 3166-2:PT,Europe,Southern Europe,"",150,039,""
-Puerto Rico,PR,PRI,630,ISO 3166-2:PR,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Qatar,QA,QAT,634,ISO 3166-2:QA,Asia,Western Asia,"",142,145,""
-Réunion,RE,REU,638,ISO 3166-2:RE,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Romania,RO,ROU,642,ISO 3166-2:RO,Europe,Eastern Europe,"",150,151,""
-Russian Federation,RU,RUS,643,ISO 3166-2:RU,Europe,Eastern Europe,"",150,151,""
-Rwanda,RW,RWA,646,ISO 3166-2:RW,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Saint Barthélemy,BL,BLM,652,ISO 3166-2:BL,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-"Saint Helena, Ascension and Tristan da Cunha",SH,SHN,654,ISO 3166-2:SH,Africa,Sub-Saharan Africa,Western Africa,002,202,011
-Saint Kitts and Nevis,KN,KNA,659,ISO 3166-2:KN,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Saint Lucia,LC,LCA,662,ISO 3166-2:LC,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Saint Martin (French part),MF,MAF,663,ISO 3166-2:MF,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Saint Pierre and Miquelon,PM,SPM,666,ISO 3166-2:PM,Americas,Northern America,"",019,021,""
-Saint Vincent and the Grenadines,VC,VCT,670,ISO 3166-2:VC,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Samoa,WS,WSM,882,ISO 3166-2:WS,Oceania,Polynesia,"",009,061,""
-San Marino,SM,SMR,674,ISO 3166-2:SM,Europe,Southern Europe,"",150,039,""
-Sao Tome and Principe,ST,STP,678,ISO 3166-2:ST,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
-Saudi Arabia,SA,SAU,682,ISO 3166-2:SA,Asia,Western Asia,"",142,145,""
-Senegal,SN,SEN,686,ISO 3166-2:SN,Africa,Sub-Saharan Africa,Western Africa,002,202,011
-Serbia,RS,SRB,688,ISO 3166-2:RS,Europe,Southern Europe,"",150,039,""
-Seychelles,SC,SYC,690,ISO 3166-2:SC,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Sierra Leone,SL,SLE,694,ISO 3166-2:SL,Africa,Sub-Saharan Africa,Western Africa,002,202,011
-Singapore,SG,SGP,702,ISO 3166-2:SG,Asia,South-eastern Asia,"",142,035,""
-Sint Maarten (Dutch part),SX,SXM,534,ISO 3166-2:SX,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Slovakia,SK,SVK,703,ISO 3166-2:SK,Europe,Eastern Europe,"",150,151,""
-Slovenia,SI,SVN,705,ISO 3166-2:SI,Europe,Southern Europe,"",150,039,""
-Solomon Islands,SB,SLB,090,ISO 3166-2:SB,Oceania,Melanesia,"",009,054,""
-Somalia,SO,SOM,706,ISO 3166-2:SO,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-South Africa,ZA,ZAF,710,ISO 3166-2:ZA,Africa,Sub-Saharan Africa,Southern Africa,002,202,018
-South Georgia and the South Sandwich Islands,GS,SGS,239,ISO 3166-2:GS,Americas,Latin America and the Caribbean,South America,019,419,005
-South Sudan,SS,SSD,728,ISO 3166-2:SS,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Spain,ES,ESP,724,ISO 3166-2:ES,Europe,Southern Europe,"",150,039,""
-Sri Lanka,LK,LKA,144,ISO 3166-2:LK,Asia,Southern Asia,"",142,034,""
-Sudan,SD,SDN,729,ISO 3166-2:SD,Africa,Northern Africa,"",002,015,""
-Suriname,SR,SUR,740,ISO 3166-2:SR,Americas,Latin America and the Caribbean,South America,019,419,005
-Svalbard and Jan Mayen,SJ,SJM,744,ISO 3166-2:SJ,Europe,Northern Europe,"",150,154,""
-Sweden,SE,SWE,752,ISO 3166-2:SE,Europe,Northern Europe,"",150,154,""
-Switzerland,CH,CHE,756,ISO 3166-2:CH,Europe,Western Europe,"",150,155,""
-Syrian Arab Republic,SY,SYR,760,ISO 3166-2:SY,Asia,Western Asia,"",142,145,""
-"Taiwan, Province of China",TW,TWN,158,ISO 3166-2:TW,Asia,Eastern Asia,"",142,030,""
-Tajikistan,TJ,TJK,762,ISO 3166-2:TJ,Asia,Central Asia,"",142,143,""
-"Tanzania, United Republic of",TZ,TZA,834,ISO 3166-2:TZ,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Thailand,TH,THA,764,ISO 3166-2:TH,Asia,South-eastern Asia,"",142,035,""
-Timor-Leste,TL,TLS,626,ISO 3166-2:TL,Asia,South-eastern Asia,"",142,035,""
-Togo,TG,TGO,768,ISO 3166-2:TG,Africa,Sub-Saharan Africa,Western Africa,002,202,011
-Tokelau,TK,TKL,772,ISO 3166-2:TK,Oceania,Polynesia,"",009,061,""
-Tonga,TO,TON,776,ISO 3166-2:TO,Oceania,Polynesia,"",009,061,""
-Trinidad and Tobago,TT,TTO,780,ISO 3166-2:TT,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Tunisia,TN,TUN,788,ISO 3166-2:TN,Africa,Northern Africa,"",002,015,""
-Turkey,TR,TUR,792,ISO 3166-2:TR,Asia,Western Asia,"",142,145,""
-Turkmenistan,TM,TKM,795,ISO 3166-2:TM,Asia,Central Asia,"",142,143,""
-Turks and Caicos Islands,TC,TCA,796,ISO 3166-2:TC,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Tuvalu,TV,TUV,798,ISO 3166-2:TV,Oceania,Polynesia,"",009,061,""
-Uganda,UG,UGA,800,ISO 3166-2:UG,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Ukraine,UA,UKR,804,ISO 3166-2:UA,Europe,Eastern Europe,"",150,151,""
-United Arab Emirates,AE,ARE,784,ISO 3166-2:AE,Asia,Western Asia,"",142,145,""
-United Kingdom of Great Britain and Northern Ireland,GB,GBR,826,ISO 3166-2:GB,Europe,Northern Europe,"",150,154,""
-United States of America,US,USA,840,ISO 3166-2:US,Americas,Northern America,"",019,021,""
-United States Minor Outlying Islands,UM,UMI,581,ISO 3166-2:UM,Oceania,Micronesia,"",009,057,""
-Uruguay,UY,URY,858,ISO 3166-2:UY,Americas,Latin America and the Caribbean,South America,019,419,005
-Uzbekistan,UZ,UZB,860,ISO 3166-2:UZ,Asia,Central Asia,"",142,143,""
-Vanuatu,VU,VUT,548,ISO 3166-2:VU,Oceania,Melanesia,"",009,054,""
-Venezuela (Bolivarian Republic of),VE,VEN,862,ISO 3166-2:VE,Americas,Latin America and the Caribbean,South America,019,419,005
-Viet Nam,VN,VNM,704,ISO 3166-2:VN,Asia,South-eastern Asia,"",142,035,""
-Virgin Islands (British),VG,VGB,092,ISO 3166-2:VG,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Virgin Islands (U.S.),VI,VIR,850,ISO 3166-2:VI,Americas,Latin America and the Caribbean,Caribbean,019,419,029
-Wallis and Futuna,WF,WLF,876,ISO 3166-2:WF,Oceania,Polynesia,"",009,061,""
-Western Sahara,EH,ESH,732,ISO 3166-2:EH,Africa,Northern Africa,"",002,015,""
-Yemen,YE,YEM,887,ISO 3166-2:YE,Asia,Western Asia,"",142,145,""
-Zambia,ZM,ZMB,894,ISO 3166-2:ZM,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
-Zimbabwe,ZW,ZWE,716,ISO 3166-2:ZW,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
diff --git a/roles/nifi/files/SOCTOOLS-CA.crt b/roles/nifi/files/SOCTOOLS-CA.crt
new file mode 100644
index 0000000000000000000000000000000000000000..04b1f203d036d2219c23c4ea3630115d68510eb8
--- /dev/null
+++ b/roles/nifi/files/SOCTOOLS-CA.crt
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
+BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
+UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
+Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
+M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
+c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
+tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
+ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
+8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
+EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
+JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
+z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
+XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
+CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
+nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
+GPiQTFGknE1U
+-----END CERTIFICATE-----
diff --git a/roles/nifi/files/cacerts.jks b/roles/nifi/files/cacerts.jks
new file mode 100644
index 0000000000000000000000000000000000000000..9d4001b7d9a466941cda896b6bf145bf2f02020c
Binary files /dev/null and b/roles/nifi/files/cacerts.jks differ
diff --git a/roles/nifi/files/common-cacerts.jks b/roles/nifi/files/common-cacerts.jks
deleted file mode 100644
index 200a005f89ab6e2ba316460b071979aa9f5b8c58..0000000000000000000000000000000000000000
Binary files a/roles/nifi/files/common-cacerts.jks and /dev/null differ
diff --git a/roles/nifi/files/dsoclab-nifi-1.p12 b/roles/nifi/files/dsoclab-nifi-1.p12
new file mode 100644
index 0000000000000000000000000000000000000000..0076ad1207c243f877de929e2424ed953f60469c
Binary files /dev/null and b/roles/nifi/files/dsoclab-nifi-1.p12 differ
diff --git a/roles/nifi/files/dsoclab-nifi-2.p12 b/roles/nifi/files/dsoclab-nifi-2.p12
new file mode 100644
index 0000000000000000000000000000000000000000..fdbd25a1e50851b8ea865781bc903dcc78a1cc8f
Binary files /dev/null and b/roles/nifi/files/dsoclab-nifi-2.p12 differ
diff --git a/roles/nifi/files/dsoclab-nifi-3.p12 b/roles/nifi/files/dsoclab-nifi-3.p12
new file mode 100644
index 0000000000000000000000000000000000000000..4d4b23daaa41114bb1ab95eea974f0c2618dbbeb
Binary files /dev/null and b/roles/nifi/files/dsoclab-nifi-3.p12 differ
diff --git a/roles/nifi/files/haproxy.groklib b/roles/nifi/files/haproxy.groklib
deleted file mode 100644
index 37517af78809e9cf66aa4f1e95817457aec306ee..0000000000000000000000000000000000000000
--- a/roles/nifi/files/haproxy.groklib
+++ /dev/null
@@ -1,39 +0,0 @@
-## These patterns were tested w/ haproxy-1.4.15
-
-## Documentation of the haproxy log formats can be found at the following links:
-## http://code.google.com/p/haproxy-docs/wiki/HTTPLogFormat
-## http://code.google.com/p/haproxy-docs/wiki/TCPLogFormat
-
-HAPROXYTIME (?!<[0-9])%{HOUR:haproxy_hour}:%{MINUTE:haproxy_minute}(?::%{SECOND:haproxy_second})(?![0-9])
-HAPROXYDATE %{MONTHDAY:haproxy_monthday}/%{MONTH:haproxy_month}/%{YEAR:haproxy_year}:%{HAPROXYTIME:haproxy_time}.%{INT:haproxy_milliseconds}
-
-# Override these default patterns to parse out what is captured in your haproxy.cfg
-HAPROXYCAPTUREDREQUESTHEADERS %{DATA:captured_request_headers}
-HAPROXYCAPTUREDRESPONSEHEADERS %{DATA:captured_response_headers}
-
-# Example:
-#  These haproxy config lines will add data to the logs that are captured
-#  by the patterns below. Place them in your custom patterns directory to
-#  override the defaults.
-#
-#  capture request header Host len 40
-#  capture request header X-Forwarded-For len 50
-#  capture request header Accept-Language len 50
-#  capture request header Referer len 200
-#  capture request header User-Agent len 200
-#
-#  capture response header Content-Type len 30
-#  capture response header Content-Encoding len 10
-#  capture response header Cache-Control len 200
-#  capture response header Last-Modified len 200
-#
-# HAPROXYCAPTUREDREQUESTHEADERS %{DATA:request_header_host}\|%{DATA:request_header_x_forwarded_for}\|%{DATA:request_header_accept_language}\|%{DATA:request_header_referer}\|%{DATA:request_header_user_agent}
-# HAPROXYCAPTUREDRESPONSEHEADERS %{DATA:response_header_content_type}\|%{DATA:response_header_content_encoding}\|%{DATA:response_header_cache_control}\|%{DATA:response_header_last_modified}
-
-# parse a haproxy 'httplog' line
-HAPROXYHTTPBASE %{IP:client.ip}:%{INT:client.port} \[%{HAPROXYDATE:timestamp}\] %{NOTSPACE:frontend_name} %{NOTSPACE:backend_name}/%{NOTSPACE:server.domain} %{INT:time_request}/%{INT:time_queue}/%{INT:time_backend_connect}/%{INT:time_backend_response}/%{NOTSPACE:time_duration} %{INT:http_status_code} %{NOTSPACE:bytes_read} %{DATA:captured_request_cookie} %{DATA:captured_response_cookie} %{NOTSPACE:termination_state} %{INT:actconn}/%{INT:feconn}/%{INT:beconn}/%{INT:srvconn}/%{NOTSPACE:retries} %{INT:srv_queue}/%{INT:backend_queue} (\{%{HAPROXYCAPTUREDREQUESTHEADERS}\})?( )?(\{%{HAPROXYCAPTUREDRESPONSEHEADERS}\})?( )?"(<BADREQ>|(%{WORD:http_verb} (%{URIPROTO:http_proto}://)?(?:%{USER:http_user}(?::[^@]*)?@)?(?:%{URIHOST:http_host})?(?:%{URIPATHPARAM:http_request})?( HTTP/%{NUMBER:http_version})?))?"
-
-HAPROXYHTTP (?:%{SYSLOGTIMESTAMP:syslog_timestamp}|%{TIMESTAMP_ISO8601:timestamp8601}) %{IPORHOST:syslog_server} %{SYSLOGPROG}: %{HAPROXYHTTPBASE}
-
-# parse a haproxy 'tcplog' line
-HAPROXYTCP (?:%{SYSLOGTIMESTAMP:syslog_timestamp}|%{TIMESTAMP_ISO8601:timestamp8601}) %{IPORHOST:syslog_server} %{SYSLOGPROG}: %{IP:client.ip}:%{INT:client.port} \[%{HAPROXYDATE:timestamp}\] %{NOTSPACE:frontend_name} %{NOTSPACE:backend_name}/%{NOTSPACE:server_name} %{INT:time_queue}/%{INT:time_backend_connect}/%{NOTSPACE:time_duration} %{NOTSPACE:bytes_read} %{NOTSPACE:termination_state} %{INT:actconn}/%{INT:feconn}/%{INT:beconn}/%{INT:srvconn}/%{NOTSPACE:retries} %{INT:srv_queue}/%{INT:backend_queue}
\ No newline at end of file
diff --git a/roles/nifi/files/nifisecret b/roles/nifi/files/nifisecret
new file mode 100644
index 0000000000000000000000000000000000000000..cbbcd4a597c58e86283a43a3b7acc6397c3a95ca
--- /dev/null
+++ b/roles/nifi/files/nifisecret
@@ -0,0 +1,3 @@
+{
+  "value" : "ccfda830-defc-4fec-85fc-9b2b7c98e8ba"
+}
\ No newline at end of file
diff --git a/roles/nifi/tasks/main.yml b/roles/nifi/tasks/main.yml
index d4ab3ad3a89413bf3d6a848822562a5ccb6d92ca..ec0249ccf785f4a8e9c55e3330d63787735ac4f0 100644
--- a/roles/nifi/tasks/main.yml
+++ b/roles/nifi/tasks/main.yml
@@ -1,17 +1,151 @@
 ---
 
-- include: start.yml
+- name: Copy cacert to ca-trust dir
+  remote_user: root
+  copy:
+    src: "files/{{ca_cn}}.crt"
+    dest: /etc/pki/ca-trust/source/anchors/ca.crt
+  tags:
+    - start
+
+- name: Install cacert to root truststore
+  remote_user: root
+  command: "update-ca-trust"
+  tags:
+    - start
+
+- name: Copy certificates in NiFi conf dir
+  copy:
+    src:  "{{ item }}"
+    dest: "conf/{{ item }}"
+  with_items:
+    - "{{ inventory_hostname }}.p12"
+    - cacerts.jks
+  tags:
+    - start
+
+- name: Configure flow.xml
+  template:
+    src:  "flow.xml.j2"
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml"
+  tags:
+    - start
+
+- name: Gzip flow.xml
+  archive:
+    path: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml"
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml.gz"
+    format: gz
+  tags:
+    - start
+
+- name: Get openid authkey
+  set_fact:
+    nifisecret: "{{lookup('file', 'files/nifisecret',convert_data=False) | from_json }}"
+  tags:
+    - start
+
+- name: Configure NiFi boostrap properties
+  template:
+    src: bootstrap.conf.j2
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/bootstrap.conf"
+  tags:
+    - start
+
+- name: Configure NiFi properties for secure servers
+  template:
+    src: nifi.properties.j2
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/nifi.properties"
+  tags:
+    - start
+
+- name: Copy authorizations.xml
+  copy:
+    src: "authorizations.xml"
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/authorizations.xml"
+  tags:
+    - start
+
+- name: Configure users
+  template:
+    src: users.xml.j2
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/users.xml"
+  tags:
+    - start
+
+- name: Configure NiFi authorizers for secure servers
+  template:
+    src: authorizers.xml.j2
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/authorizers.xml"
+  tags:
+    - start
+
+- name: Create conf/enrich dir
+  file: path={{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich state=directory
+  tags:
+   - start
+
+- name: Copy empty GeoLite2-City database
+  copy:
+    src: GeoLite2-City.mmdb
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/GeoLite2-City.mmdb"
+  tags:
+    - start
+
+- name: Download list of Tor exist nodes
+  get_url:
+    url: https://check.torproject.org/torbulkexitlist
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/tornodes.csv"
+  tags:
+   - start
+
+- name: Add header to tornodes.csv
+  lineinfile:
+    path: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/tornodes.csv"
+    line: 'ip_addr'
+    insertbefore: BOF
   tags:
    - start
-- include: stop.yml
+
+- name: Download umbrella-top-1m.csv
+  get_url:
+    url: http://s3-us-west-1.amazonaws.com/umbrella-static/top-1m.csv.zip
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/umbrella-top-1m.csv"
   tags:
-   - stop
-   - stop-nifi
-- include: update-config.yml
+   - start
+
+- name: Download alexa-top-1m.csv
+  get_url:
+    url: http://s3.amazonaws.com/alexa-static/top-1m.csv.zip
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/alexa-top-1m.csv"
+  tags:
+   - start
+
+- name: Start NiFi
+  command: "{{ ansible_facts.env['NIFI_HOME'] }}/bin/nifi.sh start"
   tags:
-   - update-config
-   - update-nifi-config
-- include: restart.yml
+    - start
+
+#- name: check reachable hosts
+#  gather_facts: no
+#  tasks:
+#    - command: ping -c1 {{ inventory_hostname }}
+#      delegate_to: localhost
+#      register: ping_result
+#      ignore_errors: yes
+#    - group_by: key=reachable
+#      when: ping_result|success
+
+- name: Stop NiFi
+  command: "{{ ansible_facts.env['NIFI_HOME'] }}/bin/nifi.sh stop"
   tags:
-   - restart
-   - restart-nifi
+    - stop
+
+#- name: Copy flow from NiFi
+#  fetch:
+#    src: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml.gz"
+#    dest: "{{ role_path }}/files/flow-{{ inventory_hostname }}.xml.gz"
+#    flat: yes
+#  tags:
+#    - stop
+
diff --git a/roles/nifi/tasks/restart.yml b/roles/nifi/tasks/restart.yml
deleted file mode 100644
index d5434f2a368c8bfa115e96c39708d4c6764438b3..0000000000000000000000000000000000000000
--- a/roles/nifi/tasks/restart.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-
-- name: Restart NiFi
-  remote_user: root
-  command: "supervisorctl restart nifi"
-
diff --git a/roles/nifi/tasks/start.yml b/roles/nifi/tasks/start.yml
deleted file mode 100644
index 99420a5984cbd451e2aeb462fc21737a7c5b7b2c..0000000000000000000000000000000000000000
--- a/roles/nifi/tasks/start.yml
+++ /dev/null
@@ -1,204 +0,0 @@
----
-
-- name: Copy cacert to ca-trust dir
-  remote_user: root
-  copy:
-    src: "{{playbook_dir}}/secrets/CA/ca.crt"
-    dest: /etc/pki/ca-trust/source/anchors/ca.crt
-
-- name: Install cacert to root truststore
-  remote_user: root
-  command: "update-ca-trust"
-
-- name: Copy certificates in NiFi conf dir
-  remote_user: nifi
-  copy:
-    src:  "{{ item }}"
-    dest: "conf/"
-  with_items:
-    - "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.p12"
-    - "{{playbook_dir}}/secrets/CA/cacerts.jks"
-    - common-cacerts.jks
-
-- name: Check if flow.xml already exists
-  remote_user: nifi
-  stat:
-    path: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml"
-  register: flowfile
-
-- name: Configure flow.xml
-  remote_user: nifi
-  template:
-    src:  "flow.xml.j2"
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml"
-  when: not flowfile.stat.exists
-
-- name: Gzip flow.xml
-  remote_user: nifi
-  archive:
-    path: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml"
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml.gz"
-    format: gz
-  when: not flowfile.stat.exists
-
-- name: Get openid authkey
-  remote_user: nifi
-  set_fact:
-    nifisecret: "{{lookup('file', '{{playbook_dir}}/secrets/tokens/nifisecret',convert_data=False)}}"
-
-- name: Configure NiFi boostrap properties
-  remote_user: nifi
-  template:
-    src: bootstrap.conf.j2
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/bootstrap.conf"
-
-- name: Configure NiFi properties for secure servers
-  remote_user: nifi
-  template:
-    src: nifi.properties.j2
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/nifi.properties"
-
-- name: Copy authorizations.xml
-  remote_user: nifi
-  copy:
-    src: "authorizations.xml"
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/authorizations.xml"
-
-- name: Configure users
-  remote_user: nifi
-  template:
-    src: users.xml.j2
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/users.xml"
-
-- name: Configure NiFi authorizers for secure servers
-  remote_user: nifi
-  template:
-    src: authorizers.xml.j2
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/authorizers.xml"
-
-- name: Create conf/enrich dir
-  remote_user: nifi
-  file: path={{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich state=directory
-
-- name: Create conf/enrich/freq dir
-  remote_user: nifi
-  file: path={{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/freq state=directory
-
-- name: Download freq processor
-  remote_user: nifi
-  get_url:
-    url: 'https://scm.uninett.no/geant-wp8-t3.1/nifi-processors/-/raw/master/scripts/freq/{{ item }}'
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/freq/"
-  with_items:
-   - alexa.json
-   - freq.py
-   - freqProcessor.py
-
-- name: Copy empty GeoLite2-City database
-  remote_user: nifi
-  copy:
-    src: GeoLite2-City.mmdb
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/GeoLite2-City.mmdb"
-
-- name: Copy CountriesWithRegionalCodes.csv
-  remote_user: nifi
-  copy:
-    src: CountriesWithRegionalCodes.csv
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/CountriesWithRegionalCodes.csv"
-
-- name: Copy grok libraries
-  copy:
-   src: haproxy.groklib
-   dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/haproxy.groklib"
-
-- name: Create empty list of Tor nodes
-  remote_user: nifi
-  copy:
-    content: "ip_addr,value"
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/tornodes.csv"
-    force: no
-
-- name: Download umbrella-top-1m.csv.zip
-  remote_user: nifi
-  local_action:
-    module: get_url
-    url: http://s3-us-west-1.amazonaws.com/umbrella-static/top-1m.csv.zip
-    dest: "/tmp/umbrella-top-1m.csv.zip"
-  run_once: True
-
-- name: Unzip umbrella-top-1m.csv.zip
-  remote_user: nifi
-  local_action:
-    module: unarchive
-    src: "/tmp/umbrella-top-1m.csv.zip"
-    dest: "/tmp"
-  run_once: True
-
-- name: Copy umbrella-top-1m.csv
-  remote_user: nifi
-  copy:
-    src: "/tmp/top-1m.csv"
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/umbrella-top-1m.csv"
-
-- name: Add header to umbrella-top-1m.csv
-  remote_user: nifi
-  lineinfile:
-    path: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/umbrella-top-1m.csv"
-    line: 'index,domain'
-    insertbefore: BOF
-
-- name: Download alexa-top-1m.csv.zip
-  remote_user: nifi
-  local_action:
-    module: get_url
-    url: http://s3.amazonaws.com/alexa-static/top-1m.csv.zip
-    dest: "/tmp/alexa-top-1m.csv.zip"
-  run_once: True
-
-- name: Unzip alexa-top-1m.csv.zip
-  remote_user: nifi
-  local_action:
-    module: unarchive
-    src: "/tmp/alexa-top-1m.csv.zip"
-    dest: "/tmp"
-  run_once: True
-
-- name: Copy alexa-top-1m.csv
-  remote_user: nifi
-  copy:
-    src: "/tmp/top-1m.csv"
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/alexa-top-1m.csv"
-
-- name: Add header to alexa-top-1m.csv
-  remote_user: nifi
-  lineinfile:
-    path: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/alexa-top-1m.csv"
-    line: 'index,domain'
-    insertbefore: BOF
-
-- name: Start NiFi
-  remote_user: root
-  command: "supervisorctl start nifi"
-
-#- name: check reachable hosts
-#  gather_facts: no
-#  tasks:
-#    - command: ping -c1 {{ inventory_hostname }}
-#      delegate_to: localhost
-#      register: ping_result
-#      ignore_errors: yes
-#    - group_by: key=reachable
-#      when: ping_result|success
-
-- name: Set Autostart for supervisord's services
-  replace:
-    path: /etc/supervisord.conf
-    regexp: '^autostart=false$'
-    replace: 'autostart=true'
-
-#- name: Copy flow from NiFi
-#  fetch:
-#    src: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml.gz"
-#    dest: "{{ role_path }}/files/flow-{{ inventory_hostname }}.xml.gz"
-#    flat: yes
-
diff --git a/roles/nifi/tasks/stop.yml b/roles/nifi/tasks/stop.yml
deleted file mode 100644
index d6abd9a5bf0d555b0c3d531358c59b24a4044bbc..0000000000000000000000000000000000000000
--- a/roles/nifi/tasks/stop.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-
-- name: Stop NiFi
-  remote_user: root
-  command: "supervisorctl stop nifi"
-
diff --git a/roles/nifi/tasks/update-config.yml b/roles/nifi/tasks/update-config.yml
deleted file mode 100644
index ddadbd3efb8be28f5383b8a33612d0b52f0861bd..0000000000000000000000000000000000000000
--- a/roles/nifi/tasks/update-config.yml
+++ /dev/null
@@ -1,77 +0,0 @@
----
-
-- name: Check if flow.xml already exists
-  remote_user: nifi
-  stat:
-    path: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml"
-  register: flowfile
-
-- name: Configure flow.xml
-  remote_user: nifi
-  template:
-    src:  "flow.xml.j2"
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml"
-  when: not flowfile.stat.exists
-
-- name: Gzip flow.xml
-  remote_user: nifi
-  archive:
-    path: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml"
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml.gz"
-    format: gz
-  when: not flowfile.stat.exists
-
-- name: Configure NiFi boostrap properties
-  remote_user: nifi
-  template:
-    src: bootstrap.conf.j2
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/bootstrap.conf"
-
-- name: Configure NiFi properties for secure servers
-  remote_user: nifi
-  template:
-    src: nifi.properties.j2
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/nifi.properties"
-
-- name: Copy authorizations.xml
-  remote_user: nifi
-  copy:
-    src: "authorizations.xml"
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/authorizations.xml"
-
-- name: Configure users
-  remote_user: nifi
-  template:
-    src: users.xml.j2
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/users.xml"
-
-- name: Configure NiFi authorizers for secure servers
-  remote_user: nifi
-  template:
-    src: authorizers.xml.j2
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/authorizers.xml"
-
-- name: Copy empty GeoLite2-City database
-  remote_user: nifi
-  copy:
-    src: GeoLite2-City.mmdb
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/GeoLite2-City.mmdb"
-
-- name: Copy CountriesWithRegionalCodes.csv
-  remote_user: nifi
-  copy:
-    src: CountriesWithRegionalCodes.csv
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/CountriesWithRegionalCodes.csv"
-
-- name: Copy grok libraries
-  copy:
-   src: haproxy.groklib
-   dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/haproxy.groklib"
-
-- name: Create empty list of Tor nodes
-  remote_user: nifi
-  copy:
-    content: "ip_addr,value"
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/tornodes.csv"
-    force: no
-
diff --git a/roles/nifi/templates/flow.xml.j2 b/roles/nifi/templates/flow.xml.j2
index ec452185ec9559dd620b084aaa89a74009cfc01e..20517182d06a1ba8cf6ab4063e8f1ff03b723d5b 100644
--- a/roles/nifi/templates/flow.xml.j2
+++ b/roles/nifi/templates/flow.xml.j2
@@ -8,22 +8,16 @@
     <name>NiFi Flow</name>
     <position x="0.0" y="0.0" />
     <comment />
-    <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-    <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
     <processGroup>
       <id>41088add-955b-3611-a0de-2c18b79b678c</id>
       <name>Data processing</name>
       <position x="1216.0" y="256.0" />
       <comment />
-      <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-      <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
       <processGroup>
         <id>fcbcacd1-542d-3a15-a5aa-9c1302328954</id>
         <name>Enrichment</name>
         <position x="384.0" y="720.0" />
         <comment />
-        <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-        <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
         <processor>
           <id>01b66126-695a-3059-b179-f1bf85e8ca91</id>
           <name>Check fqdn enrichment</name>
@@ -34,7 +28,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
+            <version>1.11.4</version>
           </bundle>
           <maxConcurrentTasks>8</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -65,7 +59,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
+            <version>1.11.4</version>
           </bundle>
           <maxConcurrentTasks>8</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -96,7 +90,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
+            <version>1.11.4</version>
           </bundle>
           <maxConcurrentTasks>8</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -136,8 +130,6 @@
           <name>fqdn enrichment</name>
           <position x="-202.47354083453774" y="596.1945491887745" />
           <comment />
-          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
           <processor>
             <id>2703fe3e-7e6a-310e-a010-b30898befa9b</id>
             <name>Check fqdn2 enrichment</name>
@@ -148,7 +140,7 @@
             <bundle>
               <group>org.apache.nifi</group>
               <artifact>nifi-standard-nar</artifact>
-              <version>1.12.1</version>
+              <version>1.11.4</version>
             </bundle>
             <maxConcurrentTasks>8</maxConcurrentTasks>
             <schedulingPeriod>0 sec</schedulingPeriod>
@@ -188,8 +180,6 @@
             <name>Enrich fqdn2</name>
             <position x="368.0" y="416.0" />
             <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <inputPort>
               <id>0cdf1224-a6d5-3ac4-a4f5-27a7588f1d98</id>
               <name>Input</name>
@@ -200,7 +190,7 @@
             <outputPort>
               <id>58b0935e-1c5b-3ad1-a2cc-7de4826170a6</id>
               <name>Output</name>
-              <position x="1096.0" y="528.0" />
+              <position x="432.0" y="536.0" />
               <comments />
               <scheduledState>RUNNING</scheduledState>
             </outputPort>
@@ -209,8 +199,6 @@
               <name>Umbrella</name>
               <position x="379.1725199638772" y="224.3012562119061" />
               <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>0306116f-b13d-30fc-94b1-34f3c8ba95da</id>
                 <name>Umbrella fqdn1</name>
@@ -221,7 +209,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
+                  <version>1.11.4</version>
                 </bundle>
                 <maxConcurrentTasks>8</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -345,167 +333,6 @@
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
             </processGroup>
-            <processGroup>
-              <id>f2263bf3-7929-182a-8971-2ac159d0cca9</id>
-              <name>Misp lookup</name>
-              <position x="1024.0" y="224.0" />
-              <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-              <processor>
-                <id>cadc3f2e-8e08-195c-898e-1b5fbcdf56e0</id>
-                <name>Misp fqdn2</name>
-                <position x="480.99999953064577" y="197.99999761468263" />
-                <styles />
-                <comment />
-                <class>org.apache.nifi.processors.standard.LookupRecord</class>
-                <bundle>
-                  <group>org.apache.nifi</group>
-                  <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
-                </bundle>
-                <maxConcurrentTasks>1</maxConcurrentTasks>
-                <schedulingPeriod>0 sec</schedulingPeriod>
-                <penalizationPeriod>30 sec</penalizationPeriod>
-                <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>WARN</bulletinLevel>
-                <lossTolerant>false</lossTolerant>
-                <scheduledState>RUNNING</scheduledState>
-                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-                <executionNode>ALL</executionNode>
-                <runDurationNanos>0</runDurationNanos>
-                <property>
-                  <name>record-reader</name>
-                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-                </property>
-                <property>
-                  <name>record-writer</name>
-                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-                </property>
-                <property>
-                  <name>lookup-service</name>
-                  <value>fa06ec39-7782-3ae3-8dfe-71d28c5240c3</value>
-                </property>
-                <property>
-                  <name>result-record-path</name>
-                  <value>${enrich_fqdn2}_misp</value>
-                </property>
-                <property>
-                  <name>routing-strategy</name>
-                  <value>route-to-success</value>
-                </property>
-                <property>
-                  <name>result-contents</name>
-                  <value>insert-entire-record</value>
-                </property>
-                <property>
-                  <name>record-update-strategy</name>
-                  <value>use-property</value>
-                </property>
-                <property>
-                  <name>key</name>
-                  <value>${enrich_fqdn2}</value>
-                </property>
-              </processor>
-              <inputPort>
-                <id>dca538c3-e563-1b63-8de2-edf46a599279</id>
-                <name>Input</name>
-                <position x="536.0" y="16.0" />
-                <comments />
-                <scheduledState>RUNNING</scheduledState>
-              </inputPort>
-              <outputPort>
-                <id>a4ef3d87-6241-14a5-b543-1824b197991c</id>
-                <name>Output</name>
-                <position x="536.0" y="456.0" />
-                <comments />
-                <scheduledState>RUNNING</scheduledState>
-              </outputPort>
-              <funnel>
-                <id>263b3963-3c73-1efc-8286-4e57645eefc2</id>
-                <position x="152.0" y="248.0" />
-              </funnel>
-              <connection>
-                <id>e47137a6-8c07-12bf-9d69-0e0c10b05088</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>cadc3f2e-8e08-195c-898e-1b5fbcdf56e0</sourceId>
-                <sourceGroupId>f2263bf3-7929-182a-8971-2ac159d0cca9</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>a4ef3d87-6241-14a5-b543-1824b197991c</destinationId>
-                <destinationGroupId>f2263bf3-7929-182a-8971-2ac159d0cca9</destinationGroupId>
-                <destinationType>OUTPUT_PORT</destinationType>
-                <relationship>success</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-              <connection>
-                <id>b4723c4d-5ed2-1f9e-bd7c-04076aa149cf</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>cadc3f2e-8e08-195c-898e-1b5fbcdf56e0</sourceId>
-                <sourceGroupId>f2263bf3-7929-182a-8971-2ac159d0cca9</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>263b3963-3c73-1efc-8286-4e57645eefc2</destinationId>
-                <destinationGroupId>f2263bf3-7929-182a-8971-2ac159d0cca9</destinationGroupId>
-                <destinationType>FUNNEL</destinationType>
-                <relationship>failure</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>60 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-              <connection>
-                <id>edab3c6f-d21b-12a1-8b73-10c8012a3bd2</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>dca538c3-e563-1b63-8de2-edf46a599279</sourceId>
-                <sourceGroupId>f2263bf3-7929-182a-8971-2ac159d0cca9</sourceGroupId>
-                <sourceType>INPUT_PORT</sourceType>
-                <destinationId>cadc3f2e-8e08-195c-898e-1b5fbcdf56e0</destinationId>
-                <destinationGroupId>f2263bf3-7929-182a-8971-2ac159d0cca9</destinationGroupId>
-                <destinationType>PROCESSOR</destinationType>
-                <relationship />
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-            </processGroup>
-            <connection>
-              <id>934921df-0175-1000-ffff-ffffeabcba7a</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>a4ef3d87-6241-14a5-b543-1824b197991c</sourceId>
-              <sourceGroupId>f2263bf3-7929-182a-8971-2ac159d0cca9</sourceGroupId>
-              <sourceType>OUTPUT_PORT</sourceType>
-              <destinationId>58b0935e-1c5b-3ad1-a2cc-7de4826170a6</destinationId>
-              <destinationGroupId>f9d9877a-de02-3374-9241-d3ca1939678b</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship />
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
             <connection>
               <id>fae5d513-1604-3fed-9adb-8ad19b5ab3c0</id>
               <name />
@@ -515,9 +342,9 @@
               <sourceId>c8994201-98f4-31d2-a604-11c3b454df00</sourceId>
               <sourceGroupId>363fd695-1466-3404-ada3-036133ff8d15</sourceGroupId>
               <sourceType>OUTPUT_PORT</sourceType>
-              <destinationId>dca538c3-e563-1b63-8de2-edf46a599279</destinationId>
-              <destinationGroupId>f2263bf3-7929-182a-8971-2ac159d0cca9</destinationGroupId>
-              <destinationType>INPUT_PORT</destinationType>
+              <destinationId>58b0935e-1c5b-3ad1-a2cc-7de4826170a6</destinationId>
+              <destinationGroupId>f9d9877a-de02-3374-9241-d3ca1939678b</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
               <relationship />
               <maxWorkQueueSize>10000</maxWorkQueueSize>
               <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
@@ -552,8 +379,6 @@
             <name>Enrich fqdn1</name>
             <position x="376.0" y="200.0" />
             <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <inputPort>
               <id>f2cc04f8-56bc-3adb-8d72-6ad7f6e6e48c</id>
               <name>Input</name>
@@ -564,7 +389,7 @@
             <outputPort>
               <id>12745a98-f547-38d2-9c50-a471e8cf6fc7</id>
               <name>Output</name>
-              <position x="1112.0" y="528.0" />
+              <position x="432.0" y="536.0" />
               <comments />
               <scheduledState>RUNNING</scheduledState>
             </outputPort>
@@ -573,8 +398,6 @@
               <name>Umbrella</name>
               <position x="379.1725199638772" y="224.3012562119061" />
               <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>ce84ada1-58b8-3c28-bc5a-64fc4f39e008</id>
                 <name>Umbrella fqdn1</name>
@@ -585,7 +408,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
+                  <version>1.11.4</version>
                 </bundle>
                 <maxConcurrentTasks>8</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -629,7 +452,6 @@
                   <name>key</name>
                   <value>${enrich_fqdn1}</value>
                 </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>c31f9f4a-becc-35c3-b9c0-b836d061e364</id>
@@ -645,6 +467,10 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
+              <funnel>
+                <id>8811d4ff-bf71-38a6-8cf0-e5732840e1de</id>
+                <position x="-1204.5503424650574" y="470.375701251353" />
+              </funnel>
               <connection>
                 <id>99b11d95-dfb3-34cf-8657-0c141d1e9f63</id>
                 <name />
@@ -685,117 +511,19 @@
                 <partitioningAttribute />
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
-            </processGroup>
-            <processGroup>
-              <id>1de23f54-e22a-19df-8dd2-9235ae248d29</id>
-              <name>Misp lookup</name>
-              <position x="1056.0" y="216.0" />
-              <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-              <processor>
-                <id>16d53f41-fc96-1292-b434-9a157e27eaf3</id>
-                <name>Misp fqdn1</name>
-                <position x="480.99999953064577" y="197.99999761468263" />
-                <styles />
-                <comment />
-                <class>org.apache.nifi.processors.standard.LookupRecord</class>
-                <bundle>
-                  <group>org.apache.nifi</group>
-                  <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
-                </bundle>
-                <maxConcurrentTasks>1</maxConcurrentTasks>
-                <schedulingPeriod>0 sec</schedulingPeriod>
-                <penalizationPeriod>30 sec</penalizationPeriod>
-                <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>WARN</bulletinLevel>
-                <lossTolerant>false</lossTolerant>
-                <scheduledState>RUNNING</scheduledState>
-                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-                <executionNode>ALL</executionNode>
-                <runDurationNanos>0</runDurationNanos>
-                <property>
-                  <name>record-reader</name>
-                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-                </property>
-                <property>
-                  <name>record-writer</name>
-                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-                </property>
-                <property>
-                  <name>lookup-service</name>
-                  <value>fa06ec39-7782-3ae3-8dfe-71d28c5240c3</value>
-                </property>
-                <property>
-                  <name>result-record-path</name>
-                  <value>${enrich_fqdn1}_misp</value>
-                </property>
-                <property>
-                  <name>routing-strategy</name>
-                  <value>route-to-success</value>
-                </property>
-                <property>
-                  <name>result-contents</name>
-                  <value>insert-entire-record</value>
-                </property>
-                <property>
-                  <name>record-update-strategy</name>
-                  <value>use-property</value>
-                </property>
-                <property>
-                  <name>key</name>
-                  <value>${enrich_fqdn1}</value>
-                </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-              </processor>
-              <inputPort>
-                <id>844331e5-cd55-1c55-889b-d447dfba57a2</id>
-                <name>Input</name>
-                <position x="536.0" y="16.0" />
-                <comments />
-                <scheduledState>RUNNING</scheduledState>
-              </inputPort>
-              <outputPort>
-                <id>e13e32a5-f5d5-1f5e-a38e-c1e19453fd31</id>
-                <name>Output</name>
-                <position x="536.0" y="456.0" />
-                <comments />
-                <scheduledState>RUNNING</scheduledState>
-              </outputPort>
               <connection>
-                <id>6153303e-0c09-1d36-9b87-6c2d0a5ed15a</id>
+                <id>badc00ed-f022-3045-bcfd-8a4839fef4bf</id>
                 <name />
                 <bendPoints />
                 <labelIndex>1</labelIndex>
                 <zIndex>0</zIndex>
-                <sourceId>16d53f41-fc96-1292-b434-9a157e27eaf3</sourceId>
-                <sourceGroupId>1de23f54-e22a-19df-8dd2-9235ae248d29</sourceGroupId>
+                <sourceId>ce84ada1-58b8-3c28-bc5a-64fc4f39e008</sourceId>
+                <sourceGroupId>c763d1fd-ae0f-3297-bab7-abf22759310d</sourceGroupId>
                 <sourceType>PROCESSOR</sourceType>
-                <destinationId>e13e32a5-f5d5-1f5e-a38e-c1e19453fd31</destinationId>
-                <destinationGroupId>1de23f54-e22a-19df-8dd2-9235ae248d29</destinationGroupId>
-                <destinationType>OUTPUT_PORT</destinationType>
-                <relationship>success</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-              <connection>
-                <id>3a4133c4-bc18-1bb7-84a0-06b25aba73f4</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>844331e5-cd55-1c55-889b-d447dfba57a2</sourceId>
-                <sourceGroupId>1de23f54-e22a-19df-8dd2-9235ae248d29</sourceGroupId>
-                <sourceType>INPUT_PORT</sourceType>
-                <destinationId>16d53f41-fc96-1292-b434-9a157e27eaf3</destinationId>
-                <destinationGroupId>1de23f54-e22a-19df-8dd2-9235ae248d29</destinationGroupId>
-                <destinationType>PROCESSOR</destinationType>
-                <relationship />
+                <destinationId>8811d4ff-bf71-38a6-8cf0-e5732840e1de</destinationId>
+                <destinationGroupId>c763d1fd-ae0f-3297-bab7-abf22759310d</destinationGroupId>
+                <destinationType>FUNNEL</destinationType>
+                <relationship>failure</relationship>
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
                 <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
                 <flowFileExpiration>0 sec</flowFileExpiration>
@@ -833,26 +561,6 @@
               <sourceId>9b6cb318-b9e8-36f1-bd8a-17b2aa38343a</sourceId>
               <sourceGroupId>c763d1fd-ae0f-3297-bab7-abf22759310d</sourceGroupId>
               <sourceType>OUTPUT_PORT</sourceType>
-              <destinationId>844331e5-cd55-1c55-889b-d447dfba57a2</destinationId>
-              <destinationGroupId>1de23f54-e22a-19df-8dd2-9235ae248d29</destinationGroupId>
-              <destinationType>INPUT_PORT</destinationType>
-              <relationship />
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>4f303cda-ab21-1acd-ffff-ffffcdd40e4b</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>e13e32a5-f5d5-1f5e-a38e-c1e19453fd31</sourceId>
-              <sourceGroupId>1de23f54-e22a-19df-8dd2-9235ae248d29</sourceGroupId>
-              <sourceType>OUTPUT_PORT</sourceType>
               <destinationId>12745a98-f547-38d2-9c50-a471e8cf6fc7</destinationId>
               <destinationGroupId>11b67527-3401-3961-97ba-425f721de3e0</destinationGroupId>
               <destinationType>OUTPUT_PORT</destinationType>
@@ -971,8 +679,6 @@
           <name>Custom enrichment</name>
           <position x="-536.0" y="944.0" />
           <comment />
-          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
           <inputPort>
             <id>2ba9db29-0172-1000-ffff-ffffc1aa6db2</id>
             <name>Input</name>
@@ -1013,8 +719,6 @@
           <name>IP enrichment</name>
           <position x="-216.0" y="16.0" />
           <comment />
-          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
           <processor>
             <id>be9226d7-777f-3820-bf10-49e97e9b73cc</id>
             <name>Check IP2 enrichment</name>
@@ -1025,7 +729,7 @@
             <bundle>
               <group>org.apache.nifi</group>
               <artifact>nifi-standard-nar</artifact>
-              <version>1.12.1</version>
+              <version>1.11.4</version>
             </bundle>
             <maxConcurrentTasks>8</maxConcurrentTasks>
             <schedulingPeriod>0 sec</schedulingPeriod>
@@ -1065,8 +769,6 @@
             <name>Enrich IP1</name>
             <position x="-48.0" y="312.0" />
             <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <inputPort>
               <id>ff302e29-64bb-3e10-b76e-91a13d2470d8</id>
               <name>Input</name>
@@ -1086,8 +788,6 @@
               <name>Misp lookup</name>
               <position x="1160.0" y="136.0" />
               <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>68dc57d7-2016-3e27-ac1f-092c63909a63</id>
                 <name>Misp ip1</name>
@@ -1098,7 +798,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
+                  <version>1.11.4</version>
                 </bundle>
                 <maxConcurrentTasks>16</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -1142,7 +842,6 @@
                   <name>key</name>
                   <value>${enrich_ip1}</value>
                 </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>57c1773b-65c7-3cdb-b161-a44fa977291a</id>
@@ -1158,6 +857,10 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
+              <funnel>
+                <id>3f92a75f-ec3e-3f4c-9467-e5c0e981f032</id>
+                <position x="-1312.0" y="792.0" />
+              </funnel>
               <connection>
                 <id>7f5a13cb-a049-385d-9ebc-3ef4aa8ff541</id>
                 <name />
@@ -1198,14 +901,32 @@
                 <partitioningAttribute />
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
+              <connection>
+                <id>d6c427a3-f4fb-39a5-b399-ebd9b0482039</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>68dc57d7-2016-3e27-ac1f-092c63909a63</sourceId>
+                <sourceGroupId>9b3b9cc7-49bf-3b66-b213-09f2f5df634e</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>3f92a75f-ec3e-3f4c-9467-e5c0e981f032</destinationId>
+                <destinationGroupId>9b3b9cc7-49bf-3b66-b213-09f2f5df634e</destinationGroupId>
+                <destinationType>FUNNEL</destinationType>
+                <relationship>failure</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
             </processGroup>
             <processGroup>
               <id>88a2dcc1-ccce-3396-9f4d-bc1e31c70063</id>
               <name>GeoIP</name>
               <position x="480.0" y="144.0" />
               <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>fb1a97b2-5e15-3bca-9284-f23a9cc90eed</id>
                 <name>Add GeoIP fields</name>
@@ -1216,7 +937,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
+                  <version>1.11.4</version>
                 </bundle>
                 <maxConcurrentTasks>8</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -1264,19 +985,18 @@
                   <name>pretty_print</name>
                   <value>false</value>
                 </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <processor>
                 <id>11668896-2c3e-3712-905a-eb406bf33c2a</id>
                 <name>GeoIP IP</name>
-                <position x="-568.0" y="160.0" />
+                <position x="-1192.0" y="424.0" />
                 <styles />
                 <comment />
                 <class>org.apache.nifi.processors.GeoEnrichIPRecord</class>
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-enrich-nar</artifact>
-                  <version>1.12.1</version>
+                  <version>1.11.4</version>
                 </bundle>
                 <maxConcurrentTasks>12</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -1337,62 +1057,6 @@
                 </property>
                 <autoTerminatedRelationship>original</autoTerminatedRelationship>
               </processor>
-              <processor>
-                <id>349b3525-a821-1197-0000-00006e02758e</id>
-                <name>Contry code to region</name>
-                <position x="-1216.0" y="368.0" />
-                <styles />
-                <comment />
-                <class>org.apache.nifi.processors.standard.LookupRecord</class>
-                <bundle>
-                  <group>org.apache.nifi</group>
-                  <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
-                </bundle>
-                <maxConcurrentTasks>1</maxConcurrentTasks>
-                <schedulingPeriod>0 sec</schedulingPeriod>
-                <penalizationPeriod>30 sec</penalizationPeriod>
-                <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>WARN</bulletinLevel>
-                <lossTolerant>false</lossTolerant>
-                <scheduledState>RUNNING</scheduledState>
-                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-                <executionNode>ALL</executionNode>
-                <runDurationNanos>0</runDurationNanos>
-                <property>
-                  <name>record-reader</name>
-                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-                </property>
-                <property>
-                  <name>record-writer</name>
-                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-                </property>
-                <property>
-                  <name>lookup-service</name>
-                  <value>349b34c7-a821-1197-ffff-ffff85d82877</value>
-                </property>
-                <property>
-                  <name>result-record-path</name>
-                  <value>${enrich_ip1:substring(1):contains('/'):ifElse('${enrich_ip1:substringBeforeLast(\"/\")}',${enrich_ip1:append('_')}):append("/geo/region")}</value>
-                </property>
-                <property>
-                  <name>routing-strategy</name>
-                  <value>route-to-success</value>
-                </property>
-                <property>
-                  <name>result-contents</name>
-                  <value>insert-entire-record</value>
-                </property>
-                <property>
-                  <name>record-update-strategy</name>
-                  <value>use-property</value>
-                </property>
-                <property>
-                  <name>key</name>
-                  <value>${enrich_ip1:substring(1):contains('/'):ifElse('${enrich_ip1:substringBeforeLast(\"/\")}',${enrich_ip1:append('_')}):append("/geo/country_iso_code")}</value>
-                </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-              </processor>
               <inputPort>
                 <id>e6d573f8-a297-3611-a1ff-f1918a2cbabc</id>
                 <name>Data Input</name>
@@ -1403,10 +1067,14 @@
               <outputPort>
                 <id>17c34a1f-8048-366b-8ef4-107ce16a100e</id>
                 <name>Data output</name>
-                <position x="-1168.0" y="656.0" />
+                <position x="-1160.0" y="752.0" />
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
+              <funnel>
+                <id>b68c4522-cddb-30bf-8545-73a2644cd35e</id>
+                <position x="-1560.0" y="336.0" />
+              </funnel>
               <connection>
                 <id>790863c1-3cfc-383f-ab9f-5d7ead5c0fe1</id>
                 <name />
@@ -1456,9 +1124,9 @@
                 <sourceId>11668896-2c3e-3712-905a-eb406bf33c2a</sourceId>
                 <sourceGroupId>88a2dcc1-ccce-3396-9f4d-bc1e31c70063</sourceGroupId>
                 <sourceType>PROCESSOR</sourceType>
-                <destinationId>349b3525-a821-1197-0000-00006e02758e</destinationId>
+                <destinationId>17c34a1f-8048-366b-8ef4-107ce16a100e</destinationId>
                 <destinationGroupId>88a2dcc1-ccce-3396-9f4d-bc1e31c70063</destinationGroupId>
-                <destinationType>PROCESSOR</destinationType>
+                <destinationType>OUTPUT_PORT</destinationType>
                 <relationship>found</relationship>
                 <relationship>not found</relationship>
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
@@ -1469,18 +1137,18 @@
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
               <connection>
-                <id>349b3542-a821-1197-0000-000059777de4</id>
+                <id>c831c34b-2a1a-3d24-963b-079b00961407</id>
                 <name />
                 <bendPoints />
                 <labelIndex>1</labelIndex>
                 <zIndex>0</zIndex>
-                <sourceId>349b3525-a821-1197-0000-00006e02758e</sourceId>
+                <sourceId>fb1a97b2-5e15-3bca-9284-f23a9cc90eed</sourceId>
                 <sourceGroupId>88a2dcc1-ccce-3396-9f4d-bc1e31c70063</sourceGroupId>
                 <sourceType>PROCESSOR</sourceType>
-                <destinationId>17c34a1f-8048-366b-8ef4-107ce16a100e</destinationId>
+                <destinationId>b68c4522-cddb-30bf-8545-73a2644cd35e</destinationId>
                 <destinationGroupId>88a2dcc1-ccce-3396-9f4d-bc1e31c70063</destinationGroupId>
-                <destinationType>OUTPUT_PORT</destinationType>
-                <relationship>success</relationship>
+                <destinationType>FUNNEL</destinationType>
+                <relationship>failure</relationship>
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
                 <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
                 <flowFileExpiration>0 sec</flowFileExpiration>
@@ -1494,8 +1162,6 @@
               <name>Tor nodes lookup</name>
               <position x="480.0" y="384.0" />
               <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>fd52d735-a256-3c52-9b90-fbe71f010fbe</id>
                 <name>Tor src IP</name>
@@ -1506,7 +1172,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
+                  <version>1.11.4</version>
                 </bundle>
                 <maxConcurrentTasks>12</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -1528,7 +1194,7 @@
                 </property>
                 <property>
                   <name>lookup-service</name>
-                  <value>bbd4d3a2-0175-1000-0000-00000b0fb8bd</value>
+                  <value>bf81debc-0171-1000-0000-00002936ae5a</value>
                 </property>
                 <property>
                   <name>result-record-path</name>
@@ -1550,7 +1216,6 @@
                   <name>key</name>
                   <value>${enrich_ip1}</value>
                 </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>eb136a03-4809-3d2f-a85e-e739ffa665cd</id>
@@ -1566,6 +1231,10 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
+              <funnel>
+                <id>44794379-111e-3f28-bf84-bf5850f42587</id>
+                <position x="-1412.2104124778762" y="829.0775745939713" />
+              </funnel>
               <connection>
                 <id>c681313a-f2c8-3439-8c00-70f9783fea67</id>
                 <name />
@@ -1606,6 +1275,26 @@
                 <partitioningAttribute />
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
+              <connection>
+                <id>ad32e629-d5a2-38b7-a50e-9acf0ad9d768</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>fd52d735-a256-3c52-9b90-fbe71f010fbe</sourceId>
+                <sourceGroupId>3cb64c25-8af7-361d-b6e7-e002defe7411</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>44794379-111e-3f28-bf84-bf5850f42587</destinationId>
+                <destinationGroupId>3cb64c25-8af7-361d-b6e7-e002defe7411</destinationGroupId>
+                <destinationType>FUNNEL</destinationType>
+                <relationship>failure</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
             </processGroup>
             <connection>
               <id>3831c5df-c2a8-3a1b-9d67-8f37abf05365</id>
@@ -1693,8 +1382,6 @@
             <name>Enrich IP2</name>
             <position x="-56.0" y="584.0" />
             <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <inputPort>
               <id>742a8211-a5e6-347d-9e79-25facc6b181e</id>
               <name>Input</name>
@@ -1714,75 +1401,17 @@
               <name>GeoIP and IPreg</name>
               <position x="480.0" y="144.0" />
               <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-              <processor>
-                <id>9ed935e9-7bd4-150a-913d-e6a4dedb2939</id>
-                <name>Contry code to region</name>
-                <position x="-1224.0" y="368.0" />
-                <styles />
-                <comment />
-                <class>org.apache.nifi.processors.standard.LookupRecord</class>
-                <bundle>
-                  <group>org.apache.nifi</group>
-                  <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
-                </bundle>
-                <maxConcurrentTasks>1</maxConcurrentTasks>
-                <schedulingPeriod>0 sec</schedulingPeriod>
-                <penalizationPeriod>30 sec</penalizationPeriod>
-                <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>WARN</bulletinLevel>
-                <lossTolerant>false</lossTolerant>
-                <scheduledState>RUNNING</scheduledState>
-                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-                <executionNode>ALL</executionNode>
-                <runDurationNanos>0</runDurationNanos>
-                <property>
-                  <name>record-reader</name>
-                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-                </property>
-                <property>
-                  <name>record-writer</name>
-                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-                </property>
-                <property>
-                  <name>lookup-service</name>
-                  <value>349b34c7-a821-1197-ffff-ffff85d82877</value>
-                </property>
-                <property>
-                  <name>result-record-path</name>
-                  <value>${enrich_ip2:substring(1):contains('/'):ifElse('${enrich_ip2:substringBeforeLast(\"/\")}',${enrich_ip2:append('_')}):append("/geo/region")}</value>
-                </property>
-                <property>
-                  <name>routing-strategy</name>
-                  <value>route-to-success</value>
-                </property>
-                <property>
-                  <name>result-contents</name>
-                  <value>insert-entire-record</value>
-                </property>
-                <property>
-                  <name>record-update-strategy</name>
-                  <value>use-property</value>
-                </property>
-                <property>
-                  <name>key</name>
-                  <value>${enrich_ip2:substring(1):contains('/'):ifElse('${enrich_ip2:substringBeforeLast(\"/\")}',${enrich_ip2:append('_')}):append("/geo/country_iso_code")}</value>
-                </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-              </processor>
               <processor>
                 <id>e16581ea-ff17-3cec-bd39-b1fe52797bd2</id>
                 <name>GeoIP IP</name>
-                <position x="-592.0" y="168.0" />
+                <position x="-1232.0" y="432.0" />
                 <styles />
                 <comment />
                 <class>org.apache.nifi.processors.GeoEnrichIPRecord</class>
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-enrich-nar</artifact>
-                  <version>1.12.1</version>
+                  <version>1.11.4</version>
                 </bundle>
                 <maxConcurrentTasks>16</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -1853,7 +1482,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
+                  <version>1.11.4</version>
                 </bundle>
                 <maxConcurrentTasks>8</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -1901,7 +1530,6 @@
                   <name>pretty_print</name>
                   <value>false</value>
                 </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>aa73b938-03ee-3d90-ba6f-0998b568ac36</id>
@@ -1917,19 +1545,23 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
+              <funnel>
+                <id>8e8abe4a-9ed6-3ec8-9e9d-719242be1a2b</id>
+                <position x="-1560.0" y="336.0" />
+              </funnel>
               <connection>
-                <id>9ed935f0-7bd4-150a-ffff-ffffaed76b62</id>
+                <id>a4870f06-f96b-328a-83d8-4eeb6db5cc93</id>
                 <name />
                 <bendPoints />
                 <labelIndex>1</labelIndex>
                 <zIndex>0</zIndex>
-                <sourceId>9ed935e9-7bd4-150a-913d-e6a4dedb2939</sourceId>
+                <sourceId>d467bca6-15df-38bb-8f9b-65ae1f9dceaa</sourceId>
                 <sourceGroupId>a8873c56-d149-34d1-8344-a35b339e6187</sourceGroupId>
                 <sourceType>PROCESSOR</sourceType>
-                <destinationId>0dbb2fcb-c11b-396e-8918-24d7121f7653</destinationId>
+                <destinationId>8e8abe4a-9ed6-3ec8-9e9d-719242be1a2b</destinationId>
                 <destinationGroupId>a8873c56-d149-34d1-8344-a35b339e6187</destinationGroupId>
-                <destinationType>OUTPUT_PORT</destinationType>
-                <relationship>success</relationship>
+                <destinationType>FUNNEL</destinationType>
+                <relationship>failure</relationship>
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
                 <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
                 <flowFileExpiration>0 sec</flowFileExpiration>
@@ -1966,9 +1598,9 @@
                 <sourceId>e16581ea-ff17-3cec-bd39-b1fe52797bd2</sourceId>
                 <sourceGroupId>a8873c56-d149-34d1-8344-a35b339e6187</sourceGroupId>
                 <sourceType>PROCESSOR</sourceType>
-                <destinationId>9ed935e9-7bd4-150a-913d-e6a4dedb2939</destinationId>
+                <destinationId>0dbb2fcb-c11b-396e-8918-24d7121f7653</destinationId>
                 <destinationGroupId>a8873c56-d149-34d1-8344-a35b339e6187</destinationGroupId>
-                <destinationType>PROCESSOR</destinationType>
+                <destinationType>OUTPUT_PORT</destinationType>
                 <relationship>found</relationship>
                 <relationship>not found</relationship>
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
@@ -2004,8 +1636,6 @@
               <name>Tor nodes lookup</name>
               <position x="480.0" y="384.0" />
               <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>adae2d07-ad4f-38f2-9a8c-b7638863cac7</id>
                 <name>Tor src IP</name>
@@ -2016,7 +1646,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
+                  <version>1.11.4</version>
                 </bundle>
                 <maxConcurrentTasks>16</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -2038,7 +1668,7 @@
                 </property>
                 <property>
                   <name>lookup-service</name>
-                  <value>bbd4d3a2-0175-1000-0000-00000b0fb8bd</value>
+                  <value>bf81debc-0171-1000-0000-00002936ae5a</value>
                 </property>
                 <property>
                   <name>result-record-path</name>
@@ -2060,7 +1690,6 @@
                   <name>key</name>
                   <value>${enrich_ip2}</value>
                 </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>1c42374a-61ad-3d92-9f86-1f1ae9bae6d0</id>
@@ -2076,6 +1705,10 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
+              <funnel>
+                <id>4bad43e2-bfed-3e45-a9d1-fdabb2ab85ea</id>
+                <position x="-1403.592919640183" y="819.7224736847786" />
+              </funnel>
               <connection>
                 <id>0b2f9272-06fe-3a8c-a322-9972ac5c0466</id>
                 <name />
@@ -2116,14 +1749,34 @@
                 <partitioningAttribute />
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
+              <connection>
+                <id>fe67c36a-4ae0-3e30-8aad-a988a481df4b</id>
+                <name />
+                <bendPoints>
+                  <bendPoint x="-1088.0" y="832.0" />
+                </bendPoints>
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>adae2d07-ad4f-38f2-9a8c-b7638863cac7</sourceId>
+                <sourceGroupId>33258978-2057-3612-be77-0a763431ee29</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>4bad43e2-bfed-3e45-a9d1-fdabb2ab85ea</destinationId>
+                <destinationGroupId>33258978-2057-3612-be77-0a763431ee29</destinationGroupId>
+                <destinationType>FUNNEL</destinationType>
+                <relationship>failure</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
             </processGroup>
             <processGroup>
               <id>de2bc05d-fbd2-35bc-9192-b82041176492</id>
               <name>Misp lookup</name>
               <position x="1160.0" y="136.0" />
               <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>2cd2029e-53ae-3575-bf35-785203683c7f</id>
                 <name>Misp ip</name>
@@ -2134,7 +1787,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
+                  <version>1.11.4</version>
                 </bundle>
                 <maxConcurrentTasks>12</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -2178,7 +1831,6 @@
                   <name>key</name>
                   <value>${enrich_ip2}</value>
                 </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>d6490898-79c0-3eb5-a102-718ff8ab68e6</id>
@@ -2194,6 +1846,10 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
+              <funnel>
+                <id>d259fdb6-aa03-35b1-b439-b5baccc57a1e</id>
+                <position x="-1264.0" y="784.0" />
+              </funnel>
               <connection>
                 <id>d2bfc9ce-5c85-3dc2-a0c5-83bbf0c77277</id>
                 <name />
@@ -2215,7 +1871,7 @@
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
               <connection>
-                <id>2a95cb88-0177-1000-ffff-ffffc8a50166</id>
+                <id>2475c41e-5711-3de0-bbec-2e977cd1f40a</id>
                 <name />
                 <bendPoints />
                 <labelIndex>1</labelIndex>
@@ -2234,6 +1890,26 @@
                 <partitioningAttribute />
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
+              <connection>
+                <id>a7505eac-df84-3e17-8c40-687c159877a7</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>2cd2029e-53ae-3575-bf35-785203683c7f</sourceId>
+                <sourceGroupId>de2bc05d-fbd2-35bc-9192-b82041176492</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>d259fdb6-aa03-35b1-b439-b5baccc57a1e</destinationId>
+                <destinationGroupId>de2bc05d-fbd2-35bc-9192-b82041176492</destinationGroupId>
+                <destinationType>FUNNEL</destinationType>
+                <relationship>failure</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
             </processGroup>
             <connection>
               <id>2ba90add-0172-1000-ffff-ffffb69e0af7</id>
@@ -2422,8 +2098,6 @@
           <name>Domain enrichment</name>
           <position x="-213.29739929099082" y="283.59665734060223" />
           <comment />
-          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
           <processor>
             <id>1957f5c3-b6cb-3c80-b527-1858c61ed111</id>
             <name>Check domain2 enrichment</name>
@@ -2434,7 +2108,7 @@
             <bundle>
               <group>org.apache.nifi</group>
               <artifact>nifi-standard-nar</artifact>
-              <version>1.12.1</version>
+              <version>1.11.4</version>
             </bundle>
             <maxConcurrentTasks>8</maxConcurrentTasks>
             <schedulingPeriod>0 sec</schedulingPeriod>
@@ -2474,8 +2148,6 @@
             <name>Enrich domain1</name>
             <position x="448.0" y="248.0" />
             <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <inputPort>
               <id>bf74c1ba-45ad-3c0d-84c6-ec7ea7bdcdea</id>
               <name>Input</name>
@@ -2486,7 +2158,7 @@
             <outputPort>
               <id>f270695c-edf6-3a9f-bc3a-10804f26f56f</id>
               <name>Output</name>
-              <position x="528.0" y="864.0" />
+              <position x="1232.0" y="600.0" />
               <comments />
               <scheduledState>RUNNING</scheduledState>
             </outputPort>
@@ -2495,8 +2167,6 @@
               <name>Entropy</name>
               <position x="1152.0" y="288.0" />
               <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>bf907759-0171-1000-0000-0000022727cd</id>
                 <name>Calculate entropy on domain1</name>
@@ -2507,15 +2177,15 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-scripting-nar</artifact>
-                  <version>1.12.1</version>
+                  <version>1.11.4</version>
                 </bundle>
                 <maxConcurrentTasks>1</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
                 <penalizationPeriod>30 sec</penalizationPeriod>
                 <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>ERROR</bulletinLevel>
+                <bulletinLevel>WARN</bulletinLevel>
                 <lossTolerant>false</lossTolerant>
-                <scheduledState>RUNNING</scheduledState>
+                <scheduledState>STOPPED</scheduledState>
                 <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
                 <executionNode>ALL</executionNode>
                 <runDurationNanos>0</runDurationNanos>
@@ -2525,18 +2195,18 @@
                 </property>
                 <property>
                   <name>Script File</name>
-                  <value>/opt/nifi/nifi-current/conf/enrich/freq/freqProcessor.py</value>
+                  <value>/opt/nifi/nifi-current/conf/freq/freqProcessor.py</value>
                 </property>
                 <property>
                   <name>Script Body</name>
                 </property>
                 <property>
                   <name>Module Directory</name>
-                  <value>/opt/nifi/nifi-current/conf/enrich/freq</value>
+                  <value>/opt/nifi/nifi-current/conf/freq</value>
                 </property>
                 <property>
-                  <name>record-reader</name>
-                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                  <name>Frequency File</name>
+                  <value>/opt/nifi/nifi-current/conf/freq/alexa.json</value>
                 </property>
                 <property>
                   <name>record-writer</name>
@@ -2547,18 +2217,17 @@
                   <value>${enrich_domain1}</value>
                 </property>
                 <property>
-                  <name>Result Field 1</name>
-                  <value>${enrich_domain1}_freq1</value>
+                  <name>record-reader</name>
+                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
                 </property>
                 <property>
                   <name>Result Field 2</name>
                   <value>${enrich_domain1}_freq2</value>
                 </property>
                 <property>
-                  <name>Frequency File</name>
-                  <value>/opt/nifi/nifi-current/conf/enrich/freq/alexa.json</value>
+                  <name>Result Field 1</name>
+                  <value>${enrich_domain1}_freq1</value>
                 </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>84dfe3a1-a6f4-3b80-9161-93a59b88ad8b</id>
@@ -2574,6 +2243,10 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
+              <funnel>
+                <id>7297c375-d15a-36a2-a115-6b2680fbef2b</id>
+                <position x="128.0" y="360.0" />
+              </funnel>
               <connection>
                 <id>2bea3770-0172-1000-ffff-ffff9cd568b2</id>
                 <name />
@@ -2594,18 +2267,38 @@
                 <partitioningAttribute />
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
+              <connection>
+                <id>bf938168-0171-1000-0000-00003e6fd9c5</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>bf907759-0171-1000-0000-0000022727cd</sourceId>
+                <sourceGroupId>89e761fa-669e-30c2-9590-ab8f806ffaff</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>7297c375-d15a-36a2-a115-6b2680fbef2b</destinationId>
+                <destinationGroupId>89e761fa-669e-30c2-9590-ab8f806ffaff</destinationGroupId>
+                <destinationType>FUNNEL</destinationType>
+                <relationship>failure</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
               <connection>
                 <id>27f7d6f4-0172-1000-ffff-ffffc65ffd5e</id>
                 <name />
                 <bendPoints />
-                <labelIndex>0</labelIndex>
+                <labelIndex>1</labelIndex>
                 <zIndex>0</zIndex>
                 <sourceId>84dfe3a1-a6f4-3b80-9161-93a59b88ad8b</sourceId>
                 <sourceGroupId>89e761fa-669e-30c2-9590-ab8f806ffaff</sourceGroupId>
                 <sourceType>INPUT_PORT</sourceType>
-                <destinationId>bf907759-0171-1000-0000-0000022727cd</destinationId>
+                <destinationId>2ef455b6-6c77-39ae-87bf-d21b988f4c52</destinationId>
                 <destinationGroupId>89e761fa-669e-30c2-9590-ab8f806ffaff</destinationGroupId>
-                <destinationType>PROCESSOR</destinationType>
+                <destinationType>OUTPUT_PORT</destinationType>
                 <relationship />
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
                 <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
@@ -2616,25 +2309,23 @@
               </connection>
             </processGroup>
             <processGroup>
-              <id>9ed9363a-7bd4-150a-0000-00000cc58ac4</id>
-              <name>Misp lookup</name>
-              <position x="456.0" y="552.0" />
+              <id>df54305f-551e-38ff-8e1c-a1c272c238c0</id>
+              <name>Alexa</name>
+              <position x="448.0" y="288.0" />
               <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
-                <id>9ed93644-7bd4-150a-0000-00003c8c3388</id>
-                <name>Misp domain1</name>
-                <position x="480.99999953064577" y="197.99999761468263" />
+                <id>ccab62e9-53cd-3d5e-aca3-6fa2e1b95597</id>
+                <name>Alexa domain1</name>
+                <position x="-726.6263417228297" y="457.36850568010186" />
                 <styles />
                 <comment />
                 <class>org.apache.nifi.processors.standard.LookupRecord</class>
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
+                  <version>1.11.4</version>
                 </bundle>
-                <maxConcurrentTasks>1</maxConcurrentTasks>
+                <maxConcurrentTasks>8</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
                 <penalizationPeriod>30 sec</penalizationPeriod>
                 <yieldPeriod>1 sec</yieldPeriod>
@@ -2643,7 +2334,7 @@
                 <scheduledState>RUNNING</scheduledState>
                 <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
                 <executionNode>ALL</executionNode>
-                <runDurationNanos>0</runDurationNanos>
+                <runDurationNanos>25000000</runDurationNanos>
                 <property>
                   <name>record-reader</name>
                   <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
@@ -2654,11 +2345,11 @@
                 </property>
                 <property>
                   <name>lookup-service</name>
-                  <value>fa06ec39-7782-3ae3-8dfe-71d28c5240c3</value>
+                  <value>282db77b-3118-3b3c-bbd1-e4260b1c6395</value>
                 </property>
                 <property>
                   <name>result-record-path</name>
-                  <value>${enrich_domain1}_misp</value>
+                  <value>${enrich_domain1}_alexa</value>
                 </property>
                 <property>
                   <name>routing-strategy</name>
@@ -2676,33 +2367,36 @@
                   <name>key</name>
                   <value>${enrich_domain1}</value>
                 </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
-                <id>9ed93645-7bd4-150a-ffff-fffff6fa372f</id>
-                <name>Input</name>
-                <position x="536.0" y="16.0" />
+                <id>c7b3b6c4-6418-3dbe-a037-387e3c85cb19</id>
+                <name>Input data</name>
+                <position x="-673.6437977775172" y="241.37341901017993" />
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </inputPort>
               <outputPort>
-                <id>9ed9364e-7bd4-150a-ffff-ffffa5012b2a</id>
-                <name>Output</name>
-                <position x="536.0" y="456.0" />
+                <id>ff4ada2c-5f6f-33bc-ae0c-8cdb24dd2357</id>
+                <name>Output data</name>
+                <position x="-704.0" y="736.0" />
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
+              <funnel>
+                <id>85764070-cd41-38a1-a352-929737e563c6</id>
+                <position x="-1152.0" y="512.0" />
+              </funnel>
               <connection>
-                <id>9ed9364f-7bd4-150a-0000-000019b6beab</id>
+                <id>002d4937-dcb5-3cf1-8075-8d5533667510</id>
                 <name />
                 <bendPoints />
                 <labelIndex>1</labelIndex>
                 <zIndex>0</zIndex>
-                <sourceId>9ed93644-7bd4-150a-0000-00003c8c3388</sourceId>
-                <sourceGroupId>9ed9363a-7bd4-150a-0000-00000cc58ac4</sourceGroupId>
+                <sourceId>ccab62e9-53cd-3d5e-aca3-6fa2e1b95597</sourceId>
+                <sourceGroupId>df54305f-551e-38ff-8e1c-a1c272c238c0</sourceGroupId>
                 <sourceType>PROCESSOR</sourceType>
-                <destinationId>9ed9364e-7bd4-150a-ffff-ffffa5012b2a</destinationId>
-                <destinationGroupId>9ed9363a-7bd4-150a-0000-00000cc58ac4</destinationGroupId>
+                <destinationId>ff4ada2c-5f6f-33bc-ae0c-8cdb24dd2357</destinationId>
+                <destinationGroupId>df54305f-551e-38ff-8e1c-a1c272c238c0</destinationGroupId>
                 <destinationType>OUTPUT_PORT</destinationType>
                 <relationship>success</relationship>
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
@@ -2713,116 +2407,18 @@
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
               <connection>
-                <id>9ed93647-7bd4-150a-0000-00000e5782ec</id>
+                <id>1af92349-7a45-30ec-b6fc-6d881dcd8b26</id>
                 <name />
                 <bendPoints />
                 <labelIndex>1</labelIndex>
                 <zIndex>0</zIndex>
-                <sourceId>9ed93645-7bd4-150a-ffff-fffff6fa372f</sourceId>
-                <sourceGroupId>9ed9363a-7bd4-150a-0000-00000cc58ac4</sourceGroupId>
-                <sourceType>INPUT_PORT</sourceType>
-                <destinationId>9ed93644-7bd4-150a-0000-00003c8c3388</destinationId>
-                <destinationGroupId>9ed9363a-7bd4-150a-0000-00000cc58ac4</destinationGroupId>
-                <destinationType>PROCESSOR</destinationType>
-                <relationship />
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-            </processGroup>
-            <processGroup>
-              <id>df54305f-551e-38ff-8e1c-a1c272c238c0</id>
-              <name>Alexa</name>
-              <position x="448.0" y="288.0" />
-              <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-              <processor>
-                <id>ccab62e9-53cd-3d5e-aca3-6fa2e1b95597</id>
-                <name>Alexa domain1</name>
-                <position x="-726.6263417228297" y="457.36850568010186" />
-                <styles />
-                <comment />
-                <class>org.apache.nifi.processors.standard.LookupRecord</class>
-                <bundle>
-                  <group>org.apache.nifi</group>
-                  <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
-                </bundle>
-                <maxConcurrentTasks>8</maxConcurrentTasks>
-                <schedulingPeriod>0 sec</schedulingPeriod>
-                <penalizationPeriod>30 sec</penalizationPeriod>
-                <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>WARN</bulletinLevel>
-                <lossTolerant>false</lossTolerant>
-                <scheduledState>RUNNING</scheduledState>
-                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-                <executionNode>ALL</executionNode>
-                <runDurationNanos>25000000</runDurationNanos>
-                <property>
-                  <name>record-reader</name>
-                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-                </property>
-                <property>
-                  <name>record-writer</name>
-                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-                </property>
-                <property>
-                  <name>lookup-service</name>
-                  <value>282db77b-3118-3b3c-bbd1-e4260b1c6395</value>
-                </property>
-                <property>
-                  <name>result-record-path</name>
-                  <value>${enrich_domain1}_alexa</value>
-                </property>
-                <property>
-                  <name>routing-strategy</name>
-                  <value>route-to-success</value>
-                </property>
-                <property>
-                  <name>result-contents</name>
-                  <value>insert-entire-record</value>
-                </property>
-                <property>
-                  <name>record-update-strategy</name>
-                  <value>use-property</value>
-                </property>
-                <property>
-                  <name>key</name>
-                  <value>${enrich_domain1}</value>
-                </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-              </processor>
-              <inputPort>
-                <id>c7b3b6c4-6418-3dbe-a037-387e3c85cb19</id>
-                <name>Input data</name>
-                <position x="-673.6437977775172" y="241.37341901017993" />
-                <comments />
-                <scheduledState>RUNNING</scheduledState>
-              </inputPort>
-              <outputPort>
-                <id>ff4ada2c-5f6f-33bc-ae0c-8cdb24dd2357</id>
-                <name>Output data</name>
-                <position x="-704.0" y="736.0" />
-                <comments />
-                <scheduledState>RUNNING</scheduledState>
-              </outputPort>
-              <connection>
-                <id>002d4937-dcb5-3cf1-8075-8d5533667510</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>ccab62e9-53cd-3d5e-aca3-6fa2e1b95597</sourceId>
-                <sourceGroupId>df54305f-551e-38ff-8e1c-a1c272c238c0</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>ff4ada2c-5f6f-33bc-ae0c-8cdb24dd2357</destinationId>
-                <destinationGroupId>df54305f-551e-38ff-8e1c-a1c272c238c0</destinationGroupId>
-                <destinationType>OUTPUT_PORT</destinationType>
-                <relationship>success</relationship>
+                <sourceId>ccab62e9-53cd-3d5e-aca3-6fa2e1b95597</sourceId>
+                <sourceGroupId>df54305f-551e-38ff-8e1c-a1c272c238c0</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>85764070-cd41-38a1-a352-929737e563c6</destinationId>
+                <destinationGroupId>df54305f-551e-38ff-8e1c-a1c272c238c0</destinationGroupId>
+                <destinationType>FUNNEL</destinationType>
+                <relationship>failure</relationship>
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
                 <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
                 <flowFileExpiration>0 sec</flowFileExpiration>
@@ -2851,26 +2447,6 @@
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
             </processGroup>
-            <connection>
-              <id>9ed93675-7bd4-150a-0000-000017d6cf1e</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>9ed9364e-7bd4-150a-ffff-ffffa5012b2a</sourceId>
-              <sourceGroupId>9ed9363a-7bd4-150a-0000-00000cc58ac4</sourceGroupId>
-              <sourceType>OUTPUT_PORT</sourceType>
-              <destinationId>f270695c-edf6-3a9f-bc3a-10804f26f56f</destinationId>
-              <destinationGroupId>309911c5-0f97-37e4-8511-3c5639f5db10</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship />
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
             <connection>
               <id>ff7df1ed-63be-3637-aa15-094355c9711f</id>
               <name />
@@ -2900,9 +2476,9 @@
               <sourceId>2ef455b6-6c77-39ae-87bf-d21b988f4c52</sourceId>
               <sourceGroupId>89e761fa-669e-30c2-9590-ab8f806ffaff</sourceGroupId>
               <sourceType>OUTPUT_PORT</sourceType>
-              <destinationId>9ed93645-7bd4-150a-ffff-fffff6fa372f</destinationId>
-              <destinationGroupId>9ed9363a-7bd4-150a-0000-00000cc58ac4</destinationGroupId>
-              <destinationType>INPUT_PORT</destinationType>
+              <destinationId>f270695c-edf6-3a9f-bc3a-10804f26f56f</destinationId>
+              <destinationGroupId>309911c5-0f97-37e4-8511-3c5639f5db10</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
               <relationship />
               <maxWorkQueueSize>10000</maxWorkQueueSize>
               <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
@@ -2937,8 +2513,6 @@
             <name>Enrich domain2</name>
             <position x="440.0" y="496.0" />
             <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <inputPort>
               <id>0097ae66-e4c5-316c-b301-c8fd4481cbf4</id>
               <name>Input</name>
@@ -2949,135 +2523,15 @@
             <outputPort>
               <id>1464f185-b2d5-3347-8aaa-89cfc91566f5</id>
               <name>Output</name>
-              <position x="528.0" y="816.0" />
+              <position x="1232.0" y="600.0" />
               <comments />
               <scheduledState>RUNNING</scheduledState>
             </outputPort>
-            <processGroup>
-              <id>3514302f-5e74-1185-b5c5-edc034d911a6</id>
-              <name>Misp lookup</name>
-              <position x="448.0" y="520.0" />
-              <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-              <processor>
-                <id>2a1b3c82-c06f-1184-b6ec-245bb0032b5a</id>
-                <name>Misp domain1</name>
-                <position x="480.99999953064577" y="197.99999761468263" />
-                <styles />
-                <comment />
-                <class>org.apache.nifi.processors.standard.LookupRecord</class>
-                <bundle>
-                  <group>org.apache.nifi</group>
-                  <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
-                </bundle>
-                <maxConcurrentTasks>1</maxConcurrentTasks>
-                <schedulingPeriod>0 sec</schedulingPeriod>
-                <penalizationPeriod>30 sec</penalizationPeriod>
-                <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>WARN</bulletinLevel>
-                <lossTolerant>false</lossTolerant>
-                <scheduledState>RUNNING</scheduledState>
-                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-                <executionNode>ALL</executionNode>
-                <runDurationNanos>0</runDurationNanos>
-                <property>
-                  <name>record-reader</name>
-                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-                </property>
-                <property>
-                  <name>record-writer</name>
-                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-                </property>
-                <property>
-                  <name>lookup-service</name>
-                  <value>fa06ec39-7782-3ae3-8dfe-71d28c5240c3</value>
-                </property>
-                <property>
-                  <name>result-record-path</name>
-                  <value>${enrich_domain2}_misp</value>
-                </property>
-                <property>
-                  <name>routing-strategy</name>
-                  <value>route-to-success</value>
-                </property>
-                <property>
-                  <name>result-contents</name>
-                  <value>insert-entire-record</value>
-                </property>
-                <property>
-                  <name>record-update-strategy</name>
-                  <value>use-property</value>
-                </property>
-                <property>
-                  <name>key</name>
-                  <value>${enrich_domain2}</value>
-                </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-              </processor>
-              <inputPort>
-                <id>7f5c3719-3707-1577-ad0d-945c5da3a77b</id>
-                <name>Input</name>
-                <position x="536.0" y="16.0" />
-                <comments />
-                <scheduledState>RUNNING</scheduledState>
-              </inputPort>
-              <outputPort>
-                <id>af083d3d-f063-1506-a7fe-2c6f0864de22</id>
-                <name>Output</name>
-                <position x="536.0" y="456.0" />
-                <comments />
-                <scheduledState>RUNNING</scheduledState>
-              </outputPort>
-              <connection>
-                <id>9cf430ed-a82c-1272-853f-4eeb68c144e2</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>2a1b3c82-c06f-1184-b6ec-245bb0032b5a</sourceId>
-                <sourceGroupId>3514302f-5e74-1185-b5c5-edc034d911a6</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>af083d3d-f063-1506-a7fe-2c6f0864de22</destinationId>
-                <destinationGroupId>3514302f-5e74-1185-b5c5-edc034d911a6</destinationGroupId>
-                <destinationType>OUTPUT_PORT</destinationType>
-                <relationship>success</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-              <connection>
-                <id>96023b7a-7902-1e45-91b0-0396e8bf647b</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>7f5c3719-3707-1577-ad0d-945c5da3a77b</sourceId>
-                <sourceGroupId>3514302f-5e74-1185-b5c5-edc034d911a6</sourceGroupId>
-                <sourceType>INPUT_PORT</sourceType>
-                <destinationId>2a1b3c82-c06f-1184-b6ec-245bb0032b5a</destinationId>
-                <destinationGroupId>3514302f-5e74-1185-b5c5-edc034d911a6</destinationGroupId>
-                <destinationType>PROCESSOR</destinationType>
-                <relationship />
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-            </processGroup>
             <processGroup>
               <id>db261d6a-ab4a-3a2e-854a-cd42492788c5</id>
               <name>Entropy</name>
               <position x="1152.0" y="288.0" />
               <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>eff73930-f310-1a2e-b248-812b172b7415</id>
                 <name>Calculate entropy on domain2</name>
@@ -3088,13 +2542,13 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-scripting-nar</artifact>
-                  <version>1.12.1</version>
+                  <version>1.11.4</version>
                 </bundle>
                 <maxConcurrentTasks>1</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
                 <penalizationPeriod>30 sec</penalizationPeriod>
                 <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>ERROR</bulletinLevel>
+                <bulletinLevel>WARN</bulletinLevel>
                 <lossTolerant>false</lossTolerant>
                 <scheduledState>RUNNING</scheduledState>
                 <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
@@ -3106,18 +2560,18 @@
                 </property>
                 <property>
                   <name>Script File</name>
-                  <value>/opt/nifi/nifi-current/conf/enrich/freq/freqProcessor.py</value>
+                  <value>/opt/nifi/nifi-current/conf/freq/freqProcessor.py</value>
                 </property>
                 <property>
                   <name>Script Body</name>
                 </property>
                 <property>
                   <name>Module Directory</name>
-                  <value>/opt/nifi/nifi-current/conf/enrich/freq</value>
+                  <value>/opt/nifi/nifi-current/conf/freq</value>
                 </property>
                 <property>
-                  <name>record-reader</name>
-                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                  <name>Frequency File</name>
+                  <value>/opt/nifi/nifi-current/conf/freq/alexa.json</value>
                 </property>
                 <property>
                   <name>record-writer</name>
@@ -3128,18 +2582,17 @@
                   <value>${enrich_domain2}</value>
                 </property>
                 <property>
-                  <name>Result Field 1</name>
-                  <value>${enrich_domain2}_freq1</value>
+                  <name>record-reader</name>
+                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
                 </property>
                 <property>
                   <name>Result Field 2</name>
                   <value>${enrich_domain2}_freq2</value>
                 </property>
                 <property>
-                  <name>Frequency File</name>
-                  <value>/opt/nifi/nifi-current/conf/enrich/freq/alexa.json</value>
+                  <name>Result Field 1</name>
+                  <value>${enrich_domain2}_freq1</value>
                 </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>ecc214d7-667d-3d81-affa-93e712a87abe</id>
@@ -3155,18 +2608,22 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
+              <funnel>
+                <id>1667ea62-481a-3dfb-8745-8033f80ab5a7</id>
+                <position x="144.0" y="352.0" />
+              </funnel>
               <connection>
                 <id>bf99e121-0171-1000-0000-0000487c681e</id>
                 <name />
                 <bendPoints />
-                <labelIndex>0</labelIndex>
+                <labelIndex>1</labelIndex>
                 <zIndex>0</zIndex>
                 <sourceId>ecc214d7-667d-3d81-affa-93e712a87abe</sourceId>
                 <sourceGroupId>db261d6a-ab4a-3a2e-854a-cd42492788c5</sourceGroupId>
                 <sourceType>INPUT_PORT</sourceType>
-                <destinationId>eff73930-f310-1a2e-b248-812b172b7415</destinationId>
+                <destinationId>10c439ea-f35c-3171-836c-d83af1403698</destinationId>
                 <destinationGroupId>db261d6a-ab4a-3a2e-854a-cd42492788c5</destinationGroupId>
-                <destinationType>PROCESSOR</destinationType>
+                <destinationType>OUTPUT_PORT</destinationType>
                 <relationship />
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
                 <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
@@ -3195,14 +2652,32 @@
                 <partitioningAttribute />
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
+              <connection>
+                <id>bf9a2f76-0171-1000-ffff-fffffcafce73</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>eff73930-f310-1a2e-b248-812b172b7415</sourceId>
+                <sourceGroupId>db261d6a-ab4a-3a2e-854a-cd42492788c5</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>1667ea62-481a-3dfb-8745-8033f80ab5a7</destinationId>
+                <destinationGroupId>db261d6a-ab4a-3a2e-854a-cd42492788c5</destinationGroupId>
+                <destinationType>FUNNEL</destinationType>
+                <relationship>failure</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
             </processGroup>
             <processGroup>
               <id>bd4c02d9-77f7-3984-8aa0-ad78099693a7</id>
               <name>Alexa</name>
               <position x="448.0" y="288.0" />
               <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>4598e8b8-b54a-3855-b6b7-5ac2721745a2</id>
                 <name>Alexa domain1</name>
@@ -3213,7 +2688,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
+                  <version>1.11.4</version>
                 </bundle>
                 <maxConcurrentTasks>8</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -3257,7 +2732,6 @@
                   <name>key</name>
                   <value>${enrich_domain2}</value>
                 </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>a7e674e2-60b2-3417-ad31-d69248774c3f</id>
@@ -3273,19 +2747,23 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
+              <funnel>
+                <id>bf17534a-3723-3f7d-9ca1-dc1b61022e90</id>
+                <position x="-1152.0" y="512.0" />
+              </funnel>
               <connection>
-                <id>6580ec44-ce8d-3aaf-b7ba-ee4c4d67321b</id>
+                <id>3264d31c-6569-3dde-b174-ddff9f7d3835</id>
                 <name />
                 <bendPoints />
                 <labelIndex>1</labelIndex>
                 <zIndex>0</zIndex>
-                <sourceId>a7e674e2-60b2-3417-ad31-d69248774c3f</sourceId>
+                <sourceId>4598e8b8-b54a-3855-b6b7-5ac2721745a2</sourceId>
                 <sourceGroupId>bd4c02d9-77f7-3984-8aa0-ad78099693a7</sourceGroupId>
-                <sourceType>INPUT_PORT</sourceType>
-                <destinationId>4598e8b8-b54a-3855-b6b7-5ac2721745a2</destinationId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>bf17534a-3723-3f7d-9ca1-dc1b61022e90</destinationId>
                 <destinationGroupId>bd4c02d9-77f7-3984-8aa0-ad78099693a7</destinationGroupId>
-                <destinationType>PROCESSOR</destinationType>
-                <relationship />
+                <destinationType>FUNNEL</destinationType>
+                <relationship>failure</relationship>
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
                 <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
                 <flowFileExpiration>0 sec</flowFileExpiration>
@@ -3294,12 +2772,32 @@
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
               <connection>
-                <id>bd6b2b7a-04db-3e73-8f38-4520b7b07965</id>
+                <id>6580ec44-ce8d-3aaf-b7ba-ee4c4d67321b</id>
                 <name />
                 <bendPoints />
                 <labelIndex>1</labelIndex>
                 <zIndex>0</zIndex>
-                <sourceId>4598e8b8-b54a-3855-b6b7-5ac2721745a2</sourceId>
+                <sourceId>a7e674e2-60b2-3417-ad31-d69248774c3f</sourceId>
+                <sourceGroupId>bd4c02d9-77f7-3984-8aa0-ad78099693a7</sourceGroupId>
+                <sourceType>INPUT_PORT</sourceType>
+                <destinationId>4598e8b8-b54a-3855-b6b7-5ac2721745a2</destinationId>
+                <destinationGroupId>bd4c02d9-77f7-3984-8aa0-ad78099693a7</destinationGroupId>
+                <destinationType>PROCESSOR</destinationType>
+                <relationship />
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+              <connection>
+                <id>bd6b2b7a-04db-3e73-8f38-4520b7b07965</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>4598e8b8-b54a-3855-b6b7-5ac2721745a2</sourceId>
                 <sourceGroupId>bd4c02d9-77f7-3984-8aa0-ad78099693a7</sourceGroupId>
                 <sourceType>PROCESSOR</sourceType>
                 <destinationId>23f74eb2-f2ec-3612-b370-d18952393be5</destinationId>
@@ -3354,26 +2852,6 @@
               <partitioningAttribute />
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
-            <connection>
-              <id>96023b92-7902-1e45-0000-000012465abe</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>af083d3d-f063-1506-a7fe-2c6f0864de22</sourceId>
-              <sourceGroupId>3514302f-5e74-1185-b5c5-edc034d911a6</sourceGroupId>
-              <sourceType>OUTPUT_PORT</sourceType>
-              <destinationId>1464f185-b2d5-3347-8aaa-89cfc91566f5</destinationId>
-              <destinationGroupId>464af303-e93a-32ed-a7ef-d3d553054447</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship />
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
             <connection>
               <id>7fcacebd-9235-37f8-9160-496d27d96a2d</id>
               <name />
@@ -3383,9 +2861,9 @@
               <sourceId>10c439ea-f35c-3171-836c-d83af1403698</sourceId>
               <sourceGroupId>db261d6a-ab4a-3a2e-854a-cd42492788c5</sourceGroupId>
               <sourceType>OUTPUT_PORT</sourceType>
-              <destinationId>7f5c3719-3707-1577-ad0d-945c5da3a77b</destinationId>
-              <destinationGroupId>3514302f-5e74-1185-b5c5-edc034d911a6</destinationGroupId>
-              <destinationType>INPUT_PORT</destinationType>
+              <destinationId>1464f185-b2d5-3347-8aaa-89cfc91566f5</destinationId>
+              <destinationGroupId>464af303-e93a-32ed-a7ef-d3d553054447</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
               <relationship />
               <maxWorkQueueSize>10000</maxWorkQueueSize>
               <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
@@ -3724,16 +3202,16 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-lookup-services-nar</artifact>
-            <version>1.12.1</version>
+            <version>1.11.4</version>
           </bundle>
           <enabled>true</enabled>
           <property>
             <name>csv-file</name>
-            <value>/opt/nifi/nifi-current/conf/enrich/alexa-top-1m.csv</value>
+            <value>/opt/nifi/nifi-current/conf/alexa-top-1m.csv</value>
           </property>
           <property>
             <name>CSV Format</name>
-            <value>default</value>
+            <value>Default</value>
           </property>
           <property>
             <name>Character Set</name>
@@ -3744,36 +3222,13 @@
             <value>domain</value>
           </property>
           <property>
-            <name>ignore-duplicates</name>
-            <value>true</value>
-          </property>
-          <property>
-            <name>Value Separator</name>
-            <value>,</value>
-          </property>
-          <property>
-            <name>Quote Character</name>
-            <value>"</value>
-          </property>
-          <property>
-            <name>Quote Mode</name>
-            <value>MINIMAL</value>
-          </property>
-          <property>
-            <name>Comment Marker</name>
-          </property>
-          <property>
-            <name>Escape Character</name>
-            <value>\</value>
+            <name>lookup-value-column</name>
+            <value>index</value>
           </property>
           <property>
-            <name>Trim Fields</name>
+            <name>ignore-duplicates</name>
             <value>true</value>
           </property>
-          <property>
-            <name>lookup-value-column</name>
-            <value>index</value>
-          </property>
         </controllerService>
         <controllerService>
           <id>67289e27-a14d-3fa6-bcf9-91f7d2ae8d59</id>
@@ -3783,16 +3238,16 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-lookup-services-nar</artifact>
-            <version>1.12.1</version>
+            <version>1.11.4</version>
           </bundle>
           <enabled>true</enabled>
           <property>
             <name>csv-file</name>
-            <value>/opt/nifi/nifi-current/conf/enrich/umbrella-top-1m.csv</value>
+            <value>/opt/nifi/nifi-current/conf/umbrella-top-1m.csv</value>
           </property>
           <property>
             <name>CSV Format</name>
-            <value>default</value>
+            <value>Excel</value>
           </property>
           <property>
             <name>Character Set</name>
@@ -3803,36 +3258,13 @@
             <value>domain</value>
           </property>
           <property>
-            <name>ignore-duplicates</name>
-            <value>true</value>
-          </property>
-          <property>
-            <name>Value Separator</name>
-            <value>,</value>
-          </property>
-          <property>
-            <name>Quote Character</name>
-            <value>"</value>
-          </property>
-          <property>
-            <name>Quote Mode</name>
-            <value>MINIMAL</value>
-          </property>
-          <property>
-            <name>Comment Marker</name>
-          </property>
-          <property>
-            <name>Escape Character</name>
-            <value>\</value>
+            <name>lookup-value-column</name>
+            <value>index</value>
           </property>
           <property>
-            <name>Trim Fields</name>
+            <name>ignore-duplicates</name>
             <value>true</value>
           </property>
-          <property>
-            <name>lookup-value-column</name>
-            <value>index</value>
-          </property>
         </controllerService>
       </processGroup>
       <processGroup>
@@ -3840,8 +3272,6 @@
         <name>Data input</name>
         <position x="830.4597621124223" y="407.3463126314215" />
         <comment />
-        <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-        <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
         <outputPort>
           <id>21a9e277-2d80-359a-9c57-cb76d8962e6d</id>
           <name>To data output</name>
@@ -3852,7 +3282,7 @@
         <outputPort>
           <id>20b01ab3-3a8d-3573-b95d-a4a45494050f</id>
           <name>To enrichment</name>
-          <position x="480.0" y="392.0" />
+          <position x="480.0" y="504.0" />
           <comments />
           <scheduledState>RUNNING</scheduledState>
         </outputPort>
@@ -3861,8 +3291,6 @@
           <name>Custom data inputs</name>
           <position x="-504.0" y="952.0" />
           <comment />
-          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
           <outputPort>
             <id>27d5dab2-0172-1000-ffff-ffffab5c50be</id>
             <name>To data output</name>
@@ -3879,23 +3307,21 @@
           </outputPort>
         </processGroup>
         <processGroup>
-          <id>0c790562-0175-1000-ffff-ffffeaaeafc3</id>
-          <name>FileBeat</name>
-          <position x="-496.0" y="344.0" />
+          <id>84607b52-9748-3d38-b519-b0a05cddd097</id>
+          <name>Nifi logs</name>
+          <position x="-496.0" y="136.0" />
           <comment />
-          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
           <processor>
-            <id>8962ad5a-0175-1000-ffff-ffffde6db5a6</id>
-            <name>RouteOnAttribute</name>
-            <position x="-1080.0" y="280.0" />
+            <id>c1318ad1-0c35-3896-b32a-1ccd6c09864a</id>
+            <name>Add source fields and fix timestamp</name>
+            <position x="-2192.0" y="560.0" />
             <styles />
             <comment />
-            <class>org.apache.nifi.processors.standard.RouteOnAttribute</class>
+            <class>org.apache.nifi.processors.standard.UpdateRecord</class>
             <bundle>
               <group>org.apache.nifi</group>
               <artifact>nifi-standard-nar</artifact>
-              <version>1.12.1</version>
+              <version>1.11.4</version>
             </bundle>
             <maxConcurrentTasks>1</maxConcurrentTasks>
             <schedulingPeriod>0 sec</schedulingPeriod>
@@ -3908,217 +3334,584 @@
             <executionNode>ALL</executionNode>
             <runDurationNanos>0</runDurationNanos>
             <property>
-              <name>Routing Strategy</name>
-              <value>Route to Property name</value>
+              <name>record-reader</name>
+              <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+            </property>
+            <property>
+              <name>record-writer</name>
+              <value>94600c6c-704e-3ff8-a2a4-f2f25c71dc3b</value>
+            </property>
+            <property>
+              <name>replacement-value-strategy</name>
+              <value>literal-value</value>
             </property>
             <property>
-              <name>keycloak</name>
-              <value>${log_type:equals("keycloak")}</value>
+              <name>/labels/source</name>
+              <value>${tailfile.original.path}</value>
             </property>
             <property>
-              <name>kibana</name>
-              <value>${log_type:equals("kibana")}</value>
+              <name>/labels/source_host</name>
+              <value>${hostname()}</value>
             </property>
             <property>
-              <name>elasticsearch</name>
-              <value>${log_type:equals("elasticsearch")}</value>
+              <name>/timestamp</name>
+              <value>${field.value:toDate('yyyy-MM-dd HH:mm:ss,SSS'):format("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")}</value>
             </property>
+          </processor>
+          <processor>
+            <id>68663f14-f470-32ee-9cb3-224344d5ad6a</id>
+            <name>UpdateAttribute</name>
+            <position x="-2184.0" y="824.0" />
+            <styles />
+            <comment />
+            <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+            <bundle>
+              <group>org.apache.nifi</group>
+              <artifact>nifi-update-attribute-nar</artifact>
+              <version>1.11.4</version>
+            </bundle>
+            <maxConcurrentTasks>1</maxConcurrentTasks>
+            <schedulingPeriod>0 sec</schedulingPeriod>
+            <penalizationPeriod>30 sec</penalizationPeriod>
+            <yieldPeriod>1 sec</yieldPeriod>
+            <bulletinLevel>WARN</bulletinLevel>
+            <lossTolerant>false</lossTolerant>
+            <scheduledState>RUNNING</scheduledState>
+            <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+            <executionNode>ALL</executionNode>
+            <runDurationNanos>0</runDurationNanos>
             <property>
-              <name>suricata</name>
-              <value>${log_type:equals("suricata")}</value>
+              <name>Delete Attributes Expression</name>
             </property>
             <property>
-              <name>haproxy</name>
-              <value>${log_type:equals("haproxy")}</value>
+              <name>Store State</name>
+              <value>Do not store state</value>
             </property>
             <property>
-              <name>mysql</name>
-              <value>${log_type:equals("mysql")}</value>
+              <name>Stateful Variables Initial Value</name>
             </property>
             <property>
-              <name>zeek</name>
-              <value>${log_type:equals("zeek")}</value>
+              <name>canonical-value-lookup-cache-size</name>
+              <value>100</value>
             </property>
             <property>
-              <name>nifi</name>
-              <value>${log_type:equals("nifi")}</value>
+              <name>data_index</name>
+              <value>nifi-logs</value>
             </property>
             <property>
-              <name>zookeeper</name>
-              <value>${log_type:equals("zookeeper")}</value>
+              <name>Authorization</name>
+              <value>Bearer 874rPdPJ6qOSL6HvWcH8xxChqTJxiFtHp94puxh4MygY</value>
             </property>
           </processor>
-          <outputPort>
-            <id>bcb879d5-0175-1000-0000-000070879ad0</id>
-            <name>To data output</name>
-            <position x="-2480.0" y="336.0" />
-            <comments />
+          <processor>
+            <id>716d22cb-8b81-342f-abe4-7cdfe2a980ff</id>
+            <name>ConvertRecord</name>
+            <position x="-2200.0" y="264.0" />
+            <styles />
+            <comment />
+            <class>org.apache.nifi.processors.standard.ConvertRecord</class>
+            <bundle>
+              <group>org.apache.nifi</group>
+              <artifact>nifi-standard-nar</artifact>
+              <version>1.11.4</version>
+            </bundle>
+            <maxConcurrentTasks>1</maxConcurrentTasks>
+            <schedulingPeriod>0 sec</schedulingPeriod>
+            <penalizationPeriod>30 sec</penalizationPeriod>
+            <yieldPeriod>1 sec</yieldPeriod>
+            <bulletinLevel>WARN</bulletinLevel>
+            <lossTolerant>false</lossTolerant>
             <scheduledState>RUNNING</scheduledState>
-          </outputPort>
+            <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+            <executionNode>ALL</executionNode>
+            <runDurationNanos>0</runDurationNanos>
+            <property>
+              <name>record-reader</name>
+              <value>e3e44ca0-6653-328b-9d3f-b8225312914b</value>
+            </property>
+            <property>
+              <name>record-writer</name>
+              <value>94600c6c-704e-3ff8-a2a4-f2f25c71dc3b</value>
+            </property>
+            <property>
+              <name>include-zero-record-flowfiles</name>
+              <value>true</value>
+            </property>
+          </processor>
+          <processor>
+            <id>609a3835-5317-1c94-ad8f-1d9940869db4</id>
+            <name>TailFile</name>
+            <position x="-2200.0" y="8.0" />
+            <styles />
+            <comment />
+            <class>org.apache.nifi.processors.standard.TailFile</class>
+            <bundle>
+              <group>org.apache.nifi</group>
+              <artifact>nifi-standard-nar</artifact>
+              <version>1.11.4</version>
+            </bundle>
+            <maxConcurrentTasks>1</maxConcurrentTasks>
+            <schedulingPeriod>0 sec</schedulingPeriod>
+            <penalizationPeriod>30 sec</penalizationPeriod>
+            <yieldPeriod>1 sec</yieldPeriod>
+            <bulletinLevel>WARN</bulletinLevel>
+            <lossTolerant>false</lossTolerant>
+            <scheduledState>RUNNING</scheduledState>
+            <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+            <executionNode>ALL</executionNode>
+            <runDurationNanos>0</runDurationNanos>
+            <property>
+              <name>tail-mode</name>
+              <value>Single file</value>
+            </property>
+            <property>
+              <name>File to Tail</name>
+              <value>/opt/nifi/nifi-current/logs/nifi-user.log</value>
+            </property>
+            <property>
+              <name>Rolling Filename Pattern</name>
+            </property>
+            <property>
+              <name>tail-base-directory</name>
+            </property>
+            <property>
+              <name>Initial Start Position</name>
+              <value>Beginning of File</value>
+            </property>
+            <property>
+              <name>File Location</name>
+              <value>Local</value>
+            </property>
+            <property>
+              <name>tailfile-recursive-lookup</name>
+              <value>false</value>
+            </property>
+            <property>
+              <name>tailfile-lookup-frequency</name>
+              <value>10 minutes</value>
+            </property>
+            <property>
+              <name>tailfile-maximum-age</name>
+              <value>24 hours</value>
+            </property>
+          </processor>
+          <processor>
+            <id>9ecf3ce4-ae3c-1b06-96f9-5e9c59e51690</id>
+            <name>TailFile</name>
+            <position x="-1784.0" y="8.0" />
+            <styles />
+            <comment />
+            <class>org.apache.nifi.processors.standard.TailFile</class>
+            <bundle>
+              <group>org.apache.nifi</group>
+              <artifact>nifi-standard-nar</artifact>
+              <version>1.11.4</version>
+            </bundle>
+            <maxConcurrentTasks>1</maxConcurrentTasks>
+            <schedulingPeriod>0 sec</schedulingPeriod>
+            <penalizationPeriod>30 sec</penalizationPeriod>
+            <yieldPeriod>1 sec</yieldPeriod>
+            <bulletinLevel>WARN</bulletinLevel>
+            <lossTolerant>false</lossTolerant>
+            <scheduledState>RUNNING</scheduledState>
+            <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+            <executionNode>ALL</executionNode>
+            <runDurationNanos>0</runDurationNanos>
+            <property>
+              <name>tail-mode</name>
+              <value>Single file</value>
+            </property>
+            <property>
+              <name>File to Tail</name>
+              <value>/opt/nifi/nifi-current/logs/nifi-bootstrap.log</value>
+            </property>
+            <property>
+              <name>Rolling Filename Pattern</name>
+            </property>
+            <property>
+              <name>tail-base-directory</name>
+            </property>
+            <property>
+              <name>Initial Start Position</name>
+              <value>Beginning of File</value>
+            </property>
+            <property>
+              <name>File Location</name>
+              <value>Local</value>
+            </property>
+            <property>
+              <name>tailfile-recursive-lookup</name>
+              <value>false</value>
+            </property>
+            <property>
+              <name>tailfile-lookup-frequency</name>
+              <value>10 minutes</value>
+            </property>
+            <property>
+              <name>tailfile-maximum-age</name>
+              <value>24 hours</value>
+            </property>
+          </processor>
+          <processor>
+            <id>1e796098-c064-371a-8147-d60b5d41a316</id>
+            <name>TailFile</name>
+            <position x="-2648.0" y="16.0" />
+            <styles />
+            <comment />
+            <class>org.apache.nifi.processors.standard.TailFile</class>
+            <bundle>
+              <group>org.apache.nifi</group>
+              <artifact>nifi-standard-nar</artifact>
+              <version>1.11.4</version>
+            </bundle>
+            <maxConcurrentTasks>1</maxConcurrentTasks>
+            <schedulingPeriod>0 sec</schedulingPeriod>
+            <penalizationPeriod>30 sec</penalizationPeriod>
+            <yieldPeriod>1 sec</yieldPeriod>
+            <bulletinLevel>WARN</bulletinLevel>
+            <lossTolerant>false</lossTolerant>
+            <scheduledState>RUNNING</scheduledState>
+            <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+            <executionNode>ALL</executionNode>
+            <runDurationNanos>0</runDurationNanos>
+            <property>
+              <name>tail-mode</name>
+              <value>Single file</value>
+            </property>
+            <property>
+              <name>File to Tail</name>
+              <value>/opt/nifi/nifi-current/logs/nifi-app.log</value>
+            </property>
+            <property>
+              <name>Rolling Filename Pattern</name>
+            </property>
+            <property>
+              <name>tail-base-directory</name>
+            </property>
+            <property>
+              <name>Initial Start Position</name>
+              <value>Beginning of File</value>
+            </property>
+            <property>
+              <name>File Location</name>
+              <value>Local</value>
+            </property>
+            <property>
+              <name>tailfile-recursive-lookup</name>
+              <value>false</value>
+            </property>
+            <property>
+              <name>tailfile-lookup-frequency</name>
+              <value>10 minutes</value>
+            </property>
+            <property>
+              <name>tailfile-maximum-age</name>
+              <value>24 hours</value>
+            </property>
+          </processor>
           <outputPort>
-            <id>349b32fe-a821-1197-0000-00003a0b6fe5</id>
-            <name>To enrichment</name>
-            <position x="744.0" y="920.0" />
+            <id>1ef39440-1985-3bbb-8e03-859a1c5ee4b1</id>
+            <name>To storage</name>
+            <position x="-2120.0" y="1064.0" />
             <comments />
             <scheduledState>RUNNING</scheduledState>
           </outputPort>
-          <processGroup>
-            <id>89636688-0175-1000-ffff-ffffb1b28a38</id>
-            <name>Unknown data</name>
-            <position x="-448.0" y="64.0" />
-            <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-            <processor>
-              <id>8963d0f9-0175-1000-0000-000054fbe086</id>
-              <name>UpdateAttribute</name>
-              <position x="392.0" y="248.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+          <funnel>
+            <id>beabd3be-6f95-3369-9aa5-4631e6207ec5</id>
+            <position x="-1572.2279720213353" y="320.16022816068823" />
+          </funnel>
+          <connection>
+            <id>0261c39c-d823-3ab3-b680-2d0c2fa152e5</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>c1318ad1-0c35-3896-b32a-1ccd6c09864a</sourceId>
+            <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>68663f14-f470-32ee-9cb3-224344d5ad6a</destinationId>
+            <destinationGroupId>84607b52-9748-3d38-b519-b0a05cddd097</destinationGroupId>
+            <destinationType>PROCESSOR</destinationType>
+            <relationship>success</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>214adcbf-0175-1000-ffff-ffffaedeecef</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>9ecf3ce4-ae3c-1b06-96f9-5e9c59e51690</sourceId>
+            <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>716d22cb-8b81-342f-abe4-7cdfe2a980ff</destinationId>
+            <destinationGroupId>84607b52-9748-3d38-b519-b0a05cddd097</destinationGroupId>
+            <destinationType>PROCESSOR</destinationType>
+            <relationship>success</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>0a34d026-0761-3a6d-b261-377d20a40b5d</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>c1318ad1-0c35-3896-b32a-1ccd6c09864a</sourceId>
+            <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>beabd3be-6f95-3369-9aa5-4631e6207ec5</destinationId>
+            <destinationGroupId>84607b52-9748-3d38-b519-b0a05cddd097</destinationGroupId>
+            <destinationType>FUNNEL</destinationType>
+            <relationship>failure</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>266ad4f3-c827-337a-b3b5-28bccc8917fc</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>716d22cb-8b81-342f-abe4-7cdfe2a980ff</sourceId>
+            <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>beabd3be-6f95-3369-9aa5-4631e6207ec5</destinationId>
+            <destinationGroupId>84607b52-9748-3d38-b519-b0a05cddd097</destinationGroupId>
+            <destinationType>FUNNEL</destinationType>
+            <relationship>failure</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>0dc021fb-a375-3e48-a5fd-1b9d5c3ad9bd</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>1e796098-c064-371a-8147-d60b5d41a316</sourceId>
+            <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>716d22cb-8b81-342f-abe4-7cdfe2a980ff</destinationId>
+            <destinationGroupId>84607b52-9748-3d38-b519-b0a05cddd097</destinationGroupId>
+            <destinationType>PROCESSOR</destinationType>
+            <relationship>success</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>5bc3c82f-bfb5-3e6c-a7bf-141748391beb</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>716d22cb-8b81-342f-abe4-7cdfe2a980ff</sourceId>
+            <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>c1318ad1-0c35-3896-b32a-1ccd6c09864a</destinationId>
+            <destinationGroupId>84607b52-9748-3d38-b519-b0a05cddd097</destinationGroupId>
+            <destinationType>PROCESSOR</destinationType>
+            <relationship>success</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>32df885e-4eb1-38fd-bf6b-219725264cf4</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>68663f14-f470-32ee-9cb3-224344d5ad6a</sourceId>
+            <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>1ef39440-1985-3bbb-8e03-859a1c5ee4b1</destinationId>
+            <destinationGroupId>84607b52-9748-3d38-b519-b0a05cddd097</destinationGroupId>
+            <destinationType>OUTPUT_PORT</destinationType>
+            <relationship>success</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>609a3840-5317-1c94-0000-00002897f5ab</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>609a3835-5317-1c94-ad8f-1d9940869db4</sourceId>
+            <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>716d22cb-8b81-342f-abe4-7cdfe2a980ff</destinationId>
+            <destinationGroupId>84607b52-9748-3d38-b519-b0a05cddd097</destinationGroupId>
+            <destinationType>PROCESSOR</destinationType>
+            <relationship>success</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <controllerService>
+            <id>e3e44ca0-6653-328b-9d3f-b8225312914b</id>
+            <name>Nifi logs GrokReader</name>
+            <comment />
+            <class>org.apache.nifi.grok.GrokReader</class>
+            <bundle>
+              <group>org.apache.nifi</group>
+              <artifact>nifi-record-serialization-services-nar</artifact>
+              <version>1.11.4</version>
+            </bundle>
+            <enabled>true</enabled>
+            <property>
+              <name>schema-access-strategy</name>
+              <value>string-fields-from-grok-expression</value>
+            </property>
+            <property>
+              <name>schema-registry</name>
+            </property>
+            <property>
+              <name>schema-name</name>
+              <value>${schema.name}</value>
+            </property>
+            <property>
+              <name>schema-version</name>
+            </property>
+            <property>
+              <name>schema-branch</name>
+            </property>
+            <property>
+              <name>schema-text</name>
+              <value>${avro.schema}</value>
+            </property>
+            <property>
+              <name>Grok Pattern File</name>
+            </property>
+            <property>
+              <name>Grok Expression</name>
+              <value>%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} \[%{DATA:thread}\] %{DATA:class} %{GREEDYDATA:message}</value>
+            </property>
+            <property>
+              <name>no-match-behavior</name>
+              <value>append-to-previous-message</value>
+            </property>
+          </controllerService>
+        </processGroup>
+        <processGroup>
+          <id>0c790562-0175-1000-ffff-ffffeaaeafc3</id>
+          <name>FileBeat</name>
+          <position x="-496.0" y="344.0" />
+          <comment />
+          <processGroup>
+            <id>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</id>
+            <name>Suricata</name>
+            <position x="-504.0" y="352.0" />
+            <comment />
+            <processor>
+              <id>19336e9e-3581-3d83-bb51-b9af2f5a6005</id>
+              <name>Filter out DNS events</name>
+              <position x="-371.62446124181497" y="672.8156960893323" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.RouteOnAttribute</class>
               <bundle>
                 <group>org.apache.nifi</group>
-                <artifact>nifi-update-attribute-nar</artifact>
-                <version>1.12.1</version>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.11.4</version>
               </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <maxConcurrentTasks>3</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
               <penalizationPeriod>30 sec</penalizationPeriod>
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
+              <scheduledState>STOPPED</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>Delete Attributes Expression</name>
+                <name>Routing Strategy</name>
+                <value>Route to Property name</value>
               </property>
               <property>
-                <name>Store State</name>
-                <value>Do not store state</value>
+                <name>dns</name>
+                <value>${event_type:contains("dns")}</value>
               </property>
               <property>
-                <name>Stateful Variables Initial Value</name>
+                <name>flow</name>
+                <value>${event_type:contains("flow")}</value>
               </property>
               <property>
-                <name>canonical-value-lookup-cache-size</name>
-                <value>100</value>
+                <name>alert</name>
+                <value>${event_type:contains("alert")}</value>
               </property>
               <property>
-                <name>data_index</name>
-                <value>logs-filebeat-unknown</value>
+                <name>ssh</name>
+                <value>${event_type:contains("ssh")}</value>
               </property>
-            </processor>
-            <inputPort>
-              <id>89639d3d-0175-1000-ffff-ffffb446c257</id>
-              <name>Input</name>
-              <position x="444.0000243687773" y="80.00000220501622" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </inputPort>
-            <outputPort>
-              <id>8963b202-0175-1000-0000-000022d64ba2</id>
-              <name>Output</name>
-              <position x="456.0" y="504.0" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </outputPort>
-            <connection>
-              <id>8963e649-0175-1000-ffff-fffff03ab629</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>89639d3d-0175-1000-ffff-ffffb446c257</sourceId>
-              <sourceGroupId>89636688-0175-1000-ffff-ffffb1b28a38</sourceGroupId>
-              <sourceType>INPUT_PORT</sourceType>
-              <destinationId>8963d0f9-0175-1000-0000-000054fbe086</destinationId>
-              <destinationGroupId>89636688-0175-1000-ffff-ffffb1b28a38</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship />
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>8963f112-0175-1000-0000-00000dfa15b5</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>8963d0f9-0175-1000-0000-000054fbe086</sourceId>
-              <sourceGroupId>89636688-0175-1000-ffff-ffffb1b28a38</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>8963b202-0175-1000-0000-000022d64ba2</destinationId>
-              <destinationGroupId>89636688-0175-1000-ffff-ffffb1b28a38</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-          </processGroup>
-          <processGroup>
-            <id>bc6be78f-0175-1000-ffff-ffffbcd0f569</id>
-            <name>NiFi logs</name>
-            <position x="-1904.0" y="264.0" />
-            <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-            <processor>
-              <id>bc903708-0175-1000-0000-0000642abebf</id>
-              <name>Extract message</name>
-              <position x="352.0" y="280.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                <name>tls</name>
+                <value>${event_type:contains("tls")}</value>
               </property>
               <property>
-                <name>record-writer</name>
-                <value>bc8e5957-0175-1000-0000-00003346421d</value>
+                <name>http</name>
+                <value>${event_type:contains("http")}</value>
+              </property>
+              <property>
+                <name>stats</name>
+                <value>${event_type:contains("stats")}</value>
+              </property>
+              <property>
+                <name>files</name>
+                <value>${event_type:contains("file")}</value>
               </property>
               <property>
-                <name>include-zero-record-flowfiles</name>
-                <value>true</value>
+                <name>smtp</name>
+                <value>${event_type:contains("smtp")}</value>
               </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+              <autoTerminatedRelationship>smtp</autoTerminatedRelationship>
+              <autoTerminatedRelationship>stats</autoTerminatedRelationship>
+              <autoTerminatedRelationship>unmatched</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>bc91c66f-0175-1000-0000-00005c7f88ce</id>
-              <name>Convert to json</name>
-              <position x="1064.0" y="272.0" />
+              <id>d59eabae-f47a-3d88-a1c9-e15c156202d6</id>
+              <name>Extract rrname</name>
+              <position x="-369.29872149802804" y="897.6180433395261" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
+              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
               <bundle>
                 <group>org.apache.nifi</group>
                 <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
+                <version>1.11.4</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4126,35 +3919,46 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
+              <scheduledState>STOPPED</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
                 <name>record-reader</name>
-                <value>bc97858d-0175-1000-0000-0000130a84f8</value>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
               </property>
               <property>
                 <name>record-writer</name>
                 <value>17b30955-5464-3709-8a32-69a459850cfa</value>
               </property>
               <property>
-                <name>include-zero-record-flowfiles</name>
-                <value>true</value>
+                <name>replacement-value-strategy</name>
+                <value>record-path-value</value>
+              </property>
+              <property>
+                <name>/rrname_length</name>
+                <value>/dns/rrname</value>
+              </property>
+              <property>
+                <name>/rrname_domain</name>
+                <value>/dns/rrname</value>
+              </property>
+              <property>
+                <name>/rrname_domain_length</name>
+                <value>/dns/rrname</value>
               </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>bcabbf11-0175-1000-0000-000037f4e3d3</id>
-              <name>UpdateAttribute</name>
-              <position x="1072.0" y="472.0" />
+              <id>24e1d8ed-10f4-3b46-958c-f2fb676e3192</id>
+              <name>Remove unnecessary  filebeat fields</name>
+              <position x="-987.5658863682004" y="234.96963460665665" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+              <class>org.apache.nifi.processors.standard.JoltTransformJSON</class>
               <bundle>
                 <group>org.apache.nifi</group>
-                <artifact>nifi-update-attribute-nar</artifact>
-                <version>1.12.1</version>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.11.4</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4162,40 +3966,59 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
+              <scheduledState>STOPPED</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>Delete Attributes Expression</name>
+                <name>jolt-transform</name>
+                <value>jolt-transform-chain</value>
               </property>
               <property>
-                <name>Store State</name>
-                <value>Do not store state</value>
+                <name>jolt-custom-class</name>
               </property>
               <property>
-                <name>Stateful Variables Initial Value</name>
+                <name>jolt-custom-modules</name>
               </property>
               <property>
-                <name>canonical-value-lookup-cache-size</name>
-                <value>100</value>
+                <name>jolt-spec</name>
+                <value>[{
+	"operation": "shift",
+	"spec": {
+		"*": {
+			"json": {
+				"*": {
+					"@": "[#4].&amp;"
+				}
+			},
+			"host": {
+				"name": "[#3].beat_host"
+			},
+			"source": "[#2].source"
+		}
+	}
+}]</value>
               </property>
               <property>
-                <name>data_index</name>
-                <value>logs-nifi</value>
+                <name>Transform Cache Size</name>
+                <value>1</value>
+              </property>
+              <property>
+                <name>pretty_print</name>
+                <value>false</value>
               </property>
             </processor>
             <processor>
-              <id>bc9ffeb0-0175-1000-0000-00000a88d684</id>
-              <name>UpdateRecord</name>
-              <position x="352.0" y="472.0" />
+              <id>47757d9f-c23d-33ca-9c88-3c8722bd00a5</id>
+              <name>Add rrname_domain++</name>
+              <position x="-368.27336608185624" y="1138.9635842383886" />
               <styles />
               <comment />
               <class>org.apache.nifi.processors.standard.UpdateRecord</class>
               <bundle>
                 <group>org.apache.nifi</group>
                 <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
+                <version>1.11.4</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4203,7 +4026,7 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
+              <scheduledState>STOPPED</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
@@ -4220,152 +4043,45 @@
                 <value>literal-value</value>
               </property>
               <property>
-                <name>/labels/source_file</name>
-                <value>${source_file}</value>
+                <name>/rrname_length</name>
+                <value>${field.value:length():toNumber()}</value>
               </property>
               <property>
-                <name>/labels/source_host</name>
-                <value>${source_host}</value>
+                <name>/ip_src_addr</name>
+                <value>0.0.0.0</value>
               </property>
               <property>
-                <name>/timestamp</name>
-                <value>${field.value:toDate('yyyy-MM-dd HH:mm:ss,SSS'):format("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")}</value>
+                <name>/src_ip</name>
+                <value>0.0.0.0</value>
+              </property>
+              <property>
+                <name>/ip_dst_addr</name>
+                <value>0.0.0.0</value>
+              </property>
+              <property>
+                <name>/rrname_domain</name>
+                <value>${field.value:substringBeforeLast('.'):substringAfterLast('.'):append(${field.value:substringAfterLast('.'):prepend('.')})}</value>
+              </property>
+              <property>
+                <name>/dest_ip</name>
+                <value>0.0.0.0</value>
+              </property>
+              <property>
+                <name>/rrname_domain_length</name>
+                <value>${field.value:substringBeforeLast('.'):substringAfterLast('.'):append(${field.value:substringAfterLast('.'):prepend('.')}):length():toNumber()}</value>
               </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
             </processor>
-            <inputPort>
-              <id>bc6c2159-0175-1000-ffff-ffffb4de4d47</id>
-              <name>Input</name>
-              <position x="397.9999517774115" y="110.99999315685733" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </inputPort>
-            <outputPort>
-              <id>bca9636a-0175-1000-0000-000013fa95aa</id>
-              <name>Output</name>
-              <position x="1120.0" y="808.0" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </outputPort>
-            <connection>
-              <id>bc90c7ac-0175-1000-ffff-fffffa80b534</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>bc903708-0175-1000-0000-0000642abebf</sourceId>
-              <sourceGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>bc91c66f-0175-1000-0000-00005c7f88ce</destinationId>
-              <destinationGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>bc924694-0175-1000-0000-00005b0604b6</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>bc91c66f-0175-1000-0000-00005c7f88ce</sourceId>
-              <sourceGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>bc9ffeb0-0175-1000-0000-00000a88d684</destinationId>
-              <destinationGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>bc6e1b20-0175-1000-ffff-ffff9e7dcb75</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>bc6c2159-0175-1000-ffff-ffffb4de4d47</sourceId>
-              <sourceGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</sourceGroupId>
-              <sourceType>INPUT_PORT</sourceType>
-              <destinationId>bc903708-0175-1000-0000-0000642abebf</destinationId>
-              <destinationGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship />
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>bcad2e36-0175-1000-0000-00002b6e8fe7</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>bcabbf11-0175-1000-0000-000037f4e3d3</sourceId>
-              <sourceGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>bca9636a-0175-1000-0000-000013fa95aa</destinationId>
-              <destinationGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>bca97855-0175-1000-ffff-ffffbd18cb66</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>bc9ffeb0-0175-1000-0000-00000a88d684</sourceId>
-              <sourceGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>bcabbf11-0175-1000-0000-000037f4e3d3</destinationId>
-              <destinationGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-          </processGroup>
-          <processGroup>
-            <id>895eab20-0175-1000-0000-00007e13267d</id>
-            <name>Common ListenBeats</name>
-            <position x="-1096.0" y="0.0" />
-            <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <processor>
-              <id>71be315f-7e16-1cce-89f1-d5bd502f889f</id>
+              <id>e89b0470-bff2-323c-92e5-5fb2d3949070</id>
               <name>Prepend [</name>
-              <position x="-1086.1517800521056" y="160.65881341602864" />
+              <position x="-996.7179797450688" y="47.535499055489254" />
               <styles />
               <comment />
               <class>org.apache.nifi.processors.standard.ReplaceText</class>
               <bundle>
                 <group>org.apache.nifi</group>
                 <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
+                <version>1.11.4</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4373,7 +4089,7 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
+              <scheduledState>STOPPED</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
@@ -4391,7 +4107,7 @@
               </property>
               <property>
                 <name>Maximum Buffer Size</name>
-                <value>2 MB</value>
+                <value>1 MB</value>
               </property>
               <property>
                 <name>Replacement Strategy</name>
@@ -4405,19 +4121,18 @@
                 <name>Line-by-Line Evaluation Mode</name>
                 <value>All</value>
               </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>d3e43667-10ef-1528-b935-47c2f077f2c9</id>
-              <name>ListenBeats</name>
-              <position x="-616.0" y="-56.0" />
+              <id>fd6b6513-51f8-3a96-a764-13bd39ec7f84</id>
+              <name>Partition records based on event_type</name>
+              <position x="-382.59400260581754" y="446.9900134408068" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.beats.ListenBeats</class>
+              <class>org.apache.nifi.processors.standard.PartitionRecord</class>
               <bundle>
                 <group>org.apache.nifi</group>
-                <artifact>nifi-beats-nar</artifact>
-                <version>1.12.1</version>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.11.4</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4425,65 +4140,35 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
+              <scheduledState>STOPPED</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>Local Network Interface</name>
-              </property>
-              <property>
-                <name>Port</name>
-                <value>6001</value>
-              </property>
-              <property>
-                <name>Receive Buffer Size</name>
-                <value>65507 B</value>
-              </property>
-              <property>
-                <name>Max Size of Message Queue</name>
-                <value>10000</value>
-              </property>
-              <property>
-                <name>Max Size of Socket Buffer</name>
-                <value>2 MB</value>
-              </property>
-              <property>
-                <name>Character Set</name>
-                <value>UTF-8</value>
-              </property>
-              <property>
-                <name>Max Batch Size</name>
-                <value>10000</value>
-              </property>
-              <property>
-                <name>Message Delimiter</name>
-                <value>,\n</value>
-              </property>
-              <property>
-                <name>Max Number of TCP Connections</name>
-                <value>100</value>
+                <name>record-reader</name>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
               </property>
               <property>
-                <name>SSL_CONTEXT_SERVICE</name>
-                <value>83443c00-b286-366a-b8e0-2f51527ab8e5</value>
+                <name>record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
               </property>
               <property>
-                <name>Client Auth</name>
-                <value>NONE</value>
+                <name>event_type</name>
+                <value>/event_type</value>
               </property>
+              <autoTerminatedRelationship>original</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>6b9a3cb4-e697-1540-a5fb-ea71cfce8f41</id>
-              <name>Append ]</name>
-              <position x="-424.0" y="160.0" />
+              <id>a88dab36-f543-32fc-8f45-aa11b99c0ff4</id>
+              <name>Add standardized fields</name>
+              <position x="-982.3277701858627" y="433.7665258942376" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.standard.ReplaceText</class>
+              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
               <bundle>
                 <group>org.apache.nifi</group>
                 <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
+                <version>1.11.4</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4491,51 +4176,50 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
+              <scheduledState>STOPPED</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>Regular Expression</name>
-                <value>(?s)(^.*$)</value>
+                <name>record-reader</name>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
               </property>
               <property>
-                <name>Replacement Value</name>
-                <value>]</value>
+                <name>record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
               </property>
               <property>
-                <name>Character Set</name>
-                <value>UTF-8</value>
+                <name>replacement-value-strategy</name>
+                <value>record-path-value</value>
               </property>
               <property>
-                <name>Maximum Buffer Size</name>
-                <value>2 MB</value>
+                <name>/ip_dst_port</name>
+                <value>/dest_port</value>
               </property>
               <property>
-                <name>Replacement Strategy</name>
-                <value>Append</value>
+                <name>/ip_src_addr</name>
+                <value>/src_ip</value>
               </property>
               <property>
-                <name>Evaluation Mode</name>
-                <value>Entire text</value>
+                <name>/ip_dst_addr</name>
+                <value>/dest_ip</value>
               </property>
               <property>
-                <name>Line-by-Line Evaluation Mode</name>
-                <value>All</value>
+                <name>/ip_src_port</name>
+                <value>/src_port</value>
               </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>d64f3acd-54a6-1b39-b1af-cc0a26156d5b</id>
-              <name>ListenBeats</name>
-              <position x="-1076.9243538376497" y="-51.550721133258094" />
+              <id>1a038948-9e9a-3523-b899-990077bfd575</id>
+              <name>Convert timestamp</name>
+              <position x="-385.7461824498648" y="233.13395543765722" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.beats.ListenBeats</class>
+              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
               <bundle>
                 <group>org.apache.nifi</group>
-                <artifact>nifi-beats-nar</artifact>
-                <version>1.12.1</version>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.11.4</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4543,64 +4227,46 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
+              <scheduledState>STOPPED</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>Local Network Interface</name>
-              </property>
-              <property>
-                <name>Port</name>
-                <value>6000</value>
-              </property>
-              <property>
-                <name>Receive Buffer Size</name>
-                <value>1024kb</value>
-              </property>
-              <property>
-                <name>Max Size of Message Queue</name>
-                <value>10000</value>
-              </property>
-              <property>
-                <name>Max Size of Socket Buffer</name>
-                <value>4 MB</value>
-              </property>
-              <property>
-                <name>Character Set</name>
-                <value>UTF-8</value>
+                <name>record-reader</name>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
               </property>
               <property>
-                <name>Max Batch Size</name>
-                <value>500</value>
+                <name>record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
               </property>
               <property>
-                <name>Message Delimiter</name>
-                <value>,\n</value>
+                <name>replacement-value-strategy</name>
+                <value>literal-value</value>
               </property>
               <property>
-                <name>Max Number of TCP Connections</name>
-                <value>200</value>
+                <name>/TLP</name>
+                <value>AMBER</value>
               </property>
               <property>
-                <name>SSL_CONTEXT_SERVICE</name>
+                <name>/mime.type</name>
+                <value>application/json</value>
               </property>
               <property>
-                <name>Client Auth</name>
-                <value>NONE</value>
+                <name>/timestamp</name>
+                <value>${field.value:replaceFirst('\+(\d\d)(\d\d)','+$1:$2')}</value>
               </property>
             </processor>
             <processor>
-              <id>bb719fee-0175-1000-ffff-ffffb73dd31a</id>
-              <name>Rename @ fields</name>
-              <position x="-1080.0" y="360.0" />
+              <id>7eeb23aa-b112-3cc8-bb56-2ca20b456907</id>
+              <name>Add enrichment attributes</name>
+              <position x="-381.71987132795925" y="1362.5536493927905" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.standard.JoltTransformJSON</class>
+              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
               <bundle>
                 <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
+                <artifact>nifi-update-attribute-nar</artifact>
+                <version>1.11.4</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4608,54 +4274,170 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
+              <scheduledState>STOPPED</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>jolt-transform</name>
-                <value>jolt-transform-chain</value>
+                <name>Delete Attributes Expression</name>
               </property>
               <property>
-                <name>jolt-custom-class</name>
+                <name>Store State</name>
+                <value>Do not store state</value>
               </property>
               <property>
-                <name>jolt-custom-modules</name>
+                <name>Stateful Variables Initial Value</name>
               </property>
               <property>
-                <name>jolt-spec</name>
-                <value>[{
-	"operation": "shift",
-	"spec": {
-		"*": {
-            "\\@timestamp":"[&amp;1].timestamp",
-            "\\@metadata":"[&amp;1].metadata",
-			"*": "[&amp;1].&amp;"
-		}
-	}
-}]</value>
+                <name>canonical-value-lookup-cache-size</name>
+                <value>100</value>
               </property>
               <property>
-                <name>Transform Cache Size</name>
-                <value>1</value>
+                <name>enrich_domain1</name>
+                <value>/rrname_domain</value>
               </property>
               <property>
-                <name>pretty_print</name>
-                <value>false</value>
+                <name>enrich_fqdn1</name>
+                <value>/dns/rrname</value>
               </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>896047e7-0175-1000-ffff-ffffc69204e4</id>
-              <name>PartitionRecord</name>
-              <position x="-424.0" y="368.0" />
+              <id>46cdd7aa-91f0-307c-90aa-65747e558f25</id>
+              <name>Add attributes</name>
+              <position x="-990.1194195007834" y="665.1839855126569" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.standard.PartitionRecord</class>
+              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-update-attribute-nar</artifact>
+                <version>1.11.4</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>STOPPED</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>Delete Attributes Expression</name>
+              </property>
+              <property>
+                <name>Store State</name>
+                <value>Do not store state</value>
+              </property>
+              <property>
+                <name>Stateful Variables Initial Value</name>
+              </property>
+              <property>
+                <name>canonical-value-lookup-cache-size</name>
+                <value>100</value>
+              </property>
+              <property>
+                <name>data_id</name>
+                <value>suricata-${event_type}</value>
+              </property>
+              <property>
+                <name>data_index</name>
+                <value>logs-${beats.sender:substringBeforeLast('/'):substringBeforeLast('.'):substringAfterLast('.')}-suricata-${event_type}</value>
+              </property>
+              <property>
+                <name>data_type</name>
+                <value>suricata</value>
+              </property>
+              <property>
+                <name>enrich_ip2</name>
+                <value>/ip_dst_addr</value>
+              </property>
+              <property>
+                <name>enrich_ip1</name>
+                <value>/ip_src_addr</value>
+              </property>
+              <property>
+                <name>TLP</name>
+                <value>AMBER</value>
+              </property>
+            </processor>
+            <processor>
+              <id>2b0f0d27-a69e-30c9-b3a6-1499ff955a30</id>
+              <name>ListenBeats</name>
+              <position x="-987.897149146032" y="-167.11494242687536" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.beats.ListenBeats</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-beats-nar</artifact>
+                <version>1.11.4</version>
+              </bundle>
+              <maxConcurrentTasks>2</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>NONE</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>STOPPED</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>Local Network Interface</name>
+              </property>
+              <property>
+                <name>Port</name>
+                <value>6101</value>
+              </property>
+              <property>
+                <name>Receive Buffer Size</name>
+                <value>65507 B</value>
+              </property>
+              <property>
+                <name>Max Size of Message Queue</name>
+                <value>100000</value>
+              </property>
+              <property>
+                <name>Max Size of Socket Buffer</name>
+                <value>10 MB</value>
+              </property>
+              <property>
+                <name>Character Set</name>
+                <value>UTF-8</value>
+              </property>
+              <property>
+                <name>Max Batch Size</name>
+                <value>5000</value>
+              </property>
+              <property>
+                <name>Message Delimiter</name>
+                <value>,\n</value>
+              </property>
+              <property>
+                <name>Max Number of TCP Connections</name>
+                <value>90</value>
+              </property>
+              <property>
+                <name>SSL_CONTEXT_SERVICE</name>
+              </property>
+              <property>
+                <name>Client Auth</name>
+                <value>REQUIRED</value>
+              </property>
+            </processor>
+            <processor>
+              <id>be18c77e-5e4e-3552-ac9b-892ab69a9d49</id>
+              <name>Append ]</name>
+              <position x="-396.7049152015222" y="50.4274414148523" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.ReplaceText</class>
               <bundle>
                 <group>org.apache.nifi</group>
                 <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
+                <version>1.11.4</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4663,52 +4445,70 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
+              <scheduledState>STOPPED</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                <name>Regular Expression</name>
+                <value>(?s)(^.*$)</value>
               </property>
               <property>
-                <name>record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+                <name>Replacement Value</name>
+                <value>]</value>
+              </property>
+              <property>
+                <name>Character Set</name>
+                <value>UTF-8</value>
               </property>
               <property>
-                <name>log_type</name>
-                <value>/fields/log_type</value>
+                <name>Maximum Buffer Size</name>
+                <value>1 MB</value>
               </property>
               <property>
-                <name>source_host</name>
-                <value>/host/name</value>
+                <name>Replacement Strategy</name>
+                <value>Append</value>
               </property>
               <property>
-                <name>source_file</name>
-                <value>/log/file/path</value>
+                <name>Evaluation Mode</name>
+                <value>Entire text</value>
+              </property>
+              <property>
+                <name>Line-by-Line Evaluation Mode</name>
+                <value>All</value>
               </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-              <autoTerminatedRelationship>original</autoTerminatedRelationship>
             </processor>
             <outputPort>
-              <id>89620b1a-0175-1000-0000-000078566f34</id>
-              <name>Output</name>
-              <position x="-360.0" y="704.0" />
+              <id>055308a4-d020-39a9-9da4-b165796ef717</id>
+              <name>To enrichment</name>
+              <position x="-900.0911671813442" y="1418.3104443450675" />
               <comments />
-              <scheduledState>RUNNING</scheduledState>
+              <scheduledState>STOPPED</scheduledState>
             </outputPort>
+            <funnel>
+              <id>d8f19295-5666-31a8-b701-52214c4db51d</id>
+              <position x="-1500.995244929405" y="257.20806784146276" />
+            </funnel>
+            <funnel>
+              <id>9e3adb6e-2266-390c-995d-76bc3aa5c3d8</id>
+              <position x="283.72871497338747" y="273.4623850295515" />
+            </funnel>
+            <funnel>
+              <id>c4afa3d5-0170-1000-ffff-ffffe437a306</id>
+              <position x="396.10723355029654" y="1188.222598705122" />
+            </funnel>
             <connection>
-              <id>bb8aafca-0175-1000-0000-000038f8e9fc</id>
+              <id>d39ff93b-85e9-3c56-9f44-1916d1abcd9d</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>896047e7-0175-1000-ffff-ffffc69204e4</sourceId>
-              <sourceGroupId>895eab20-0175-1000-0000-00007e13267d</sourceGroupId>
+              <sourceId>a88dab36-f543-32fc-8f45-aa11b99c0ff4</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
               <sourceType>PROCESSOR</sourceType>
-              <destinationId>89620b1a-0175-1000-0000-000078566f34</destinationId>
-              <destinationGroupId>895eab20-0175-1000-0000-00007e13267d</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
+              <destinationId>fd6b6513-51f8-3a96-a764-13bd39ec7f84</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
               <relationship>success</relationship>
               <maxWorkQueueSize>10000</maxWorkQueueSize>
               <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
@@ -4718,18 +4518,18 @@
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
             <connection>
-              <id>895f18a7-0175-1000-ffff-ffffbc2237fd</id>
+              <id>c4ae2f82-0170-1000-ffff-ffff91d33f16</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>71be315f-7e16-1cce-89f1-d5bd502f889f</sourceId>
-              <sourceGroupId>895eab20-0175-1000-0000-00007e13267d</sourceGroupId>
+              <sourceId>19336e9e-3581-3d83-bb51-b9af2f5a6005</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
               <sourceType>PROCESSOR</sourceType>
-              <destinationId>6b9a3cb4-e697-1540-a5fb-ea71cfce8f41</destinationId>
-              <destinationGroupId>895eab20-0175-1000-0000-00007e13267d</destinationGroupId>
+              <destinationId>d59eabae-f47a-3d88-a1c9-e15c156202d6</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
               <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
+              <relationship>dns</relationship>
               <maxWorkQueueSize>10000</maxWorkQueueSize>
               <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
               <flowFileExpiration>0 sec</flowFileExpiration>
@@ -4738,16 +4538,16 @@
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
             <connection>
-              <id>895ee440-0175-1000-ffff-ffffd3ff3143</id>
+              <id>a4471b0c-c924-31e0-9aa1-7cf56b1be0ed</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>d64f3acd-54a6-1b39-b1af-cc0a26156d5b</sourceId>
-              <sourceGroupId>895eab20-0175-1000-0000-00007e13267d</sourceGroupId>
+              <sourceId>be18c77e-5e4e-3552-ac9b-892ab69a9d49</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
               <sourceType>PROCESSOR</sourceType>
-              <destinationId>71be315f-7e16-1cce-89f1-d5bd502f889f</destinationId>
-              <destinationGroupId>895eab20-0175-1000-0000-00007e13267d</destinationGroupId>
+              <destinationId>24e1d8ed-10f4-3b46-958c-f2fb676e3192</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
               <destinationType>PROCESSOR</destinationType>
               <relationship>success</relationship>
               <maxWorkQueueSize>10000</maxWorkQueueSize>
@@ -4758,16 +4558,16 @@
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
             <connection>
-              <id>ac7a988a-0175-1000-ffff-ffff86c66751</id>
+              <id>f9a8aee6-502f-3eb9-8806-8964276d4ca0</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>d3e43667-10ef-1528-b935-47c2f077f2c9</sourceId>
-              <sourceGroupId>895eab20-0175-1000-0000-00007e13267d</sourceGroupId>
+              <sourceId>24e1d8ed-10f4-3b46-958c-f2fb676e3192</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
               <sourceType>PROCESSOR</sourceType>
-              <destinationId>71be315f-7e16-1cce-89f1-d5bd502f889f</destinationId>
-              <destinationGroupId>895eab20-0175-1000-0000-00007e13267d</destinationGroupId>
+              <destinationId>1a038948-9e9a-3523-b899-990077bfd575</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
               <destinationType>PROCESSOR</destinationType>
               <relationship>success</relationship>
               <maxWorkQueueSize>10000</maxWorkQueueSize>
@@ -4778,36 +4578,63 @@
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
             <connection>
-              <id>bb8a6c6c-0175-1000-0000-00000abdc8f9</id>
+              <id>e8ad07a6-cd62-3473-9b16-833cf43026a6</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>bb719fee-0175-1000-ffff-ffffb73dd31a</sourceId>
-              <sourceGroupId>895eab20-0175-1000-0000-00007e13267d</sourceGroupId>
+              <sourceId>2b0f0d27-a69e-30c9-b3a6-1499ff955a30</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
               <sourceType>PROCESSOR</sourceType>
-              <destinationId>896047e7-0175-1000-ffff-ffffc69204e4</destinationId>
-              <destinationGroupId>895eab20-0175-1000-0000-00007e13267d</destinationGroupId>
+              <destinationId>e89b0470-bff2-323c-92e5-5fb2d3949070</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
               <destinationType>PROCESSOR</destinationType>
               <relationship>success</relationship>
               <maxWorkQueueSize>10000</maxWorkQueueSize>
               <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>1 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>33baee02-9354-3b7f-a910-6220a5f6108f</id>
+              <name />
+              <bendPoints>
+                <bendPoint x="-775.4788208007812" y="947.9116821289062" />
+              </bendPoints>
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>19336e9e-3581-3d83-bb51-b9af2f5a6005</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>055308a4-d020-39a9-9da4-b165796ef717</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
+              <relationship>alert</relationship>
+              <relationship>files</relationship>
+              <relationship>http</relationship>
+              <relationship>ssh</relationship>
+              <relationship>tls</relationship>
+              <relationship>flow</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
               <flowFileExpiration>0 sec</flowFileExpiration>
               <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
               <partitioningAttribute />
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
             <connection>
-              <id>8961779d-0175-1000-0000-00003ef237de</id>
+              <id>c010a48c-a3af-3cfc-9693-9885925e763e</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>6b9a3cb4-e697-1540-a5fb-ea71cfce8f41</sourceId>
-              <sourceGroupId>895eab20-0175-1000-0000-00007e13267d</sourceGroupId>
+              <sourceId>fd6b6513-51f8-3a96-a764-13bd39ec7f84</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
               <sourceType>PROCESSOR</sourceType>
-              <destinationId>bb719fee-0175-1000-ffff-ffffb73dd31a</destinationId>
-              <destinationGroupId>895eab20-0175-1000-0000-00007e13267d</destinationGroupId>
+              <destinationId>46cdd7aa-91f0-307c-90aa-65747e558f25</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
               <destinationType>PROCESSOR</destinationType>
               <relationship>success</relationship>
               <maxWorkQueueSize>10000</maxWorkQueueSize>
@@ -4817,130 +4644,368 @@
               <partitioningAttribute />
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
-          </processGroup>
-          <processGroup>
-            <id>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</id>
-            <name>Suricata</name>
-            <position x="-448.0" y="264.0" />
-            <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-            <processor>
-              <id>8d1bef35-0175-1000-0000-0000746fa33d</id>
-              <name>RouteOnAttribute</name>
-              <position x="-984.0" y="640.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.RouteOnAttribute</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>Routing Strategy</name>
-                <value>Route to Property name</value>
-              </property>
-              <property>
-                <name>dns</name>
-                <value>${event_type:equals("dns")}</value>
-              </property>
-              <property>
-                <name>tls</name>
-                <value>${event_type:equals("tls")}</value>
-              </property>
-            </processor>
-            <processor>
-              <id>24e1d8ed-10f4-3b46-958c-f2fb676e3192</id>
-              <name>Normalize fields</name>
-              <position x="-987.5658863682004" y="234.96963460665665" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.JoltTransformJSON</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>jolt-transform</name>
-                <value>jolt-transform-chain</value>
-              </property>
-              <property>
-                <name>jolt-custom-class</name>
-              </property>
-              <property>
-                <name>jolt-custom-modules</name>
+            <connection>
+              <id>3a82b9ea-a974-3750-ad78-275da67285e6</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>be18c77e-5e4e-3552-ac9b-892ab69a9d49</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>9e3adb6e-2266-390c-995d-76bc3aa5c3d8</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>FUNNEL</destinationType>
+              <relationship>failure</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>c4afb718-0170-1000-0000-000061284251</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>d59eabae-f47a-3d88-a1c9-e15c156202d6</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>c4afa3d5-0170-1000-ffff-ffffe437a306</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>FUNNEL</destinationType>
+              <relationship>failure</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>67789d5d-ebdc-390c-adc8-f2111f467ad4</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>fd6b6513-51f8-3a96-a764-13bd39ec7f84</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>9e3adb6e-2266-390c-995d-76bc3aa5c3d8</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>FUNNEL</destinationType>
+              <relationship>failure</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>c4afc7bc-0170-1000-ffff-ffffae3762dd</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>47757d9f-c23d-33ca-9c88-3c8722bd00a5</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>c4afa3d5-0170-1000-ffff-ffffe437a306</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>FUNNEL</destinationType>
+              <relationship>failure</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>f4bd2bed-88a1-396f-974b-19dcb5f40101</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>e89b0470-bff2-323c-92e5-5fb2d3949070</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>d8f19295-5666-31a8-b701-52214c4db51d</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>FUNNEL</destinationType>
+              <relationship>failure</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>9b860d17-8918-3956-a8b2-54ec49231c37</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>47757d9f-c23d-33ca-9c88-3c8722bd00a5</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>7eeb23aa-b112-3cc8-bb56-2ca20b456907</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>98594ca0-2fce-349c-8432-94f4d021d1fe</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>e89b0470-bff2-323c-92e5-5fb2d3949070</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>be18c77e-5e4e-3552-ac9b-892ab69a9d49</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>d7ef534a-9fb6-3973-b2fa-2738705db47a</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>24e1d8ed-10f4-3b46-958c-f2fb676e3192</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>d8f19295-5666-31a8-b701-52214c4db51d</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>FUNNEL</destinationType>
+              <relationship>failure</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>c31d92b9-0e34-387d-86df-9536bf2ed9c9</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>1a038948-9e9a-3523-b899-990077bfd575</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>a88dab36-f543-32fc-8f45-aa11b99c0ff4</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>7417695b-cbde-3637-bb24-2e265bb2817c</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>46cdd7aa-91f0-307c-90aa-65747e558f25</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>19336e9e-3581-3d83-bb51-b9af2f5a6005</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>3e181820-b214-399d-a0df-474d15e2f146</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>1a038948-9e9a-3523-b899-990077bfd575</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>9e3adb6e-2266-390c-995d-76bc3aa5c3d8</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>FUNNEL</destinationType>
+              <relationship>failure</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>e9962c43-9689-39b9-a1ba-cd2eac598802</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>a88dab36-f543-32fc-8f45-aa11b99c0ff4</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>d8f19295-5666-31a8-b701-52214c4db51d</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>FUNNEL</destinationType>
+              <relationship>failure</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>1f219054-ea65-3700-a503-2d24acf2c754</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>7eeb23aa-b112-3cc8-bb56-2ca20b456907</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>055308a4-d020-39a9-9da4-b165796ef717</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>8c6c7a60-0856-3a39-8ed6-6e7d0b98c0ae</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>d59eabae-f47a-3d88-a1c9-e15c156202d6</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>47757d9f-c23d-33ca-9c88-3c8722bd00a5</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+          </processGroup>
+          <processGroup>
+            <id>83691174-683f-3c7c-8526-8fc00397aee1</id>
+            <name>Zeek</name>
+            <position x="-504.0" y="152.0" />
+            <comment />
+            <processor>
+              <id>39492e6c-faf0-3bfa-bd16-51a1f8be4c71</id>
+              <name>ListenBeats</name>
+              <position x="-1114.9155421491096" y="263.01449694104195" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.beats.ListenBeats</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-beats-nar</artifact>
+                <version>1.11.4</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>STOPPED</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>Local Network Interface</name>
               </property>
               <property>
-                <name>jolt-spec</name>
-                <value>[{
-	"operation": "shift",
-	"spec": {
-		"*": {
-			"json": {
-				"*": "[&amp;2].&amp;"
-			},
-			"host": {
-				"name": "[&amp;2].labels.source_host"
-			},
-			"source": "[&amp;1].labels.source"
-		}
-	}
-}, {
-	"operation": "shift",
-	"spec": {
-		"*": {
-            "dest_ip":"[&amp;1].destination.ip",
-            "dest_port":"[&amp;1].destination.port",
-            "src_ip":"[&amp;1].source.ip",
-            "src_port":"[&amp;1].source.port",
-			"*": "[&amp;1].&amp;"
-		}
-	}
-}]</value>
+                <name>Port</name>
+                <value>6100</value>
               </property>
               <property>
-                <name>Transform Cache Size</name>
-                <value>1</value>
+                <name>Receive Buffer Size</name>
+                <value>65507 B</value>
               </property>
               <property>
-                <name>pretty_print</name>
-                <value>false</value>
+                <name>Max Size of Message Queue</name>
+                <value>10000</value>
+              </property>
+              <property>
+                <name>Max Size of Socket Buffer</name>
+                <value>2 MB</value>
+              </property>
+              <property>
+                <name>Character Set</name>
+                <value>UTF-8</value>
+              </property>
+              <property>
+                <name>Max Batch Size</name>
+                <value>10000</value>
+              </property>
+              <property>
+                <name>Message Delimiter</name>
+                <value>,\n</value>
+              </property>
+              <property>
+                <name>Max Number of TCP Connections</name>
+                <value>100</value>
+              </property>
+              <property>
+                <name>SSL_CONTEXT_SERVICE</name>
+              </property>
+              <property>
+                <name>Client Auth</name>
+                <value>REQUIRED</value>
               </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>fd6b6513-51f8-3a96-a764-13bd39ec7f84</id>
-              <name>Partition records based on event_type</name>
-              <position x="-382.59400260581754" y="446.9900134408068" />
+              <id>ac17155e-32f1-3be8-843e-00877c210519</id>
+              <name>Prepend [</name>
+              <position x="-1124.1429683635654" y="475.2240314903287" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.standard.PartitionRecord</class>
+              <class>org.apache.nifi.processors.standard.ReplaceText</class>
               <bundle>
                 <group>org.apache.nifi</group>
                 <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
+                <version>1.11.4</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4948,36 +5013,107 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
+              <scheduledState>STOPPED</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                <name>Regular Expression</name>
+                <value>(?s)(^.*$)</value>
               </property>
               <property>
-                <name>record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+                <name>Replacement Value</name>
+                <value>[</value>
               </property>
               <property>
-                <name>event_type</name>
-                <value>/event_type</value>
+                <name>Character Set</name>
+                <value>UTF-8</value>
+              </property>
+              <property>
+                <name>Maximum Buffer Size</name>
+                <value>1 MB</value>
+              </property>
+              <property>
+                <name>Replacement Strategy</name>
+                <value>Prepend</value>
+              </property>
+              <property>
+                <name>Evaluation Mode</name>
+                <value>Entire text</value>
+              </property>
+              <property>
+                <name>Line-by-Line Evaluation Mode</name>
+                <value>All</value>
               </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-              <autoTerminatedRelationship>original</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>1a038948-9e9a-3523-b899-990077bfd575</id>
-              <name>Convert timestamp</name>
-              <position x="-385.7461824498648" y="233.13395543765722" />
+              <id>fec43039-de5d-1e3b-850a-5e25d7b93c76</id>
+              <name>UpdateAttribute</name>
+              <position x="-1121.584644408096" y="913.629598069974" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-update-attribute-nar</artifact>
+                <version>1.11.4</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>STOPPED</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>Delete Attributes Expression</name>
+              </property>
+              <property>
+                <name>Store State</name>
+                <value>Do not store state</value>
+              </property>
+              <property>
+                <name>Stateful Variables Initial Value</name>
+              </property>
+              <property>
+                <name>canonical-value-lookup-cache-size</name>
+                <value>100</value>
+              </property>
+              <property>
+                <name>data_index</name>
+                <value>logs-uninett-darknet</value>
+              </property>
+              <property>
+                <name>mime.type</name>
+                <value>application/json</value>
+              </property>
+              <property>
+                <name>enrich_ip2</name>
+                <value>/ip_dst_addr</value>
+              </property>
+              <property>
+                <name>enrich_ip1</name>
+                <value>/ip_src_addr</value>
+              </property>
+              <property>
+                <name>TLP</name>
+                <value>GREEN</value>
+              </property>
+            </processor>
+            <processor>
+              <id>9027e415-c8cd-355e-af16-0c635f43832f</id>
+              <name>Convert timestamp and add fields</name>
+              <position x="-472.77987807459795" y="696.7530680701591" />
               <styles />
               <comment />
               <class>org.apache.nifi.processors.standard.UpdateRecord</class>
               <bundle>
                 <group>org.apache.nifi</group>
                 <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
+                <version>1.11.4</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4985,7 +5121,7 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
+              <scheduledState>STOPPED</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
@@ -5003,29 +5139,40 @@
               </property>
               <property>
                 <name>/TLP</name>
-                <value>AMBER</value>
+                <value>GREEN</value>
+              </property>
+              <property>
+                <name>/data_type</name>
+                <value>zeek</value>
+              </property>
+              <property>
+                <name>/data_index</name>
+                <value>logs-zeek-conn</value>
               </property>
               <property>
                 <name>/mime.type</name>
                 <value>application/json</value>
               </property>
+              <property>
+                <name>/data_id</name>
+                <value>zeek_conn</value>
+              </property>
               <property>
                 <name>/timestamp</name>
-                <value>${field.value:replaceFirst('\+(\d\d)(\d\d)','+$1:$2')}</value>
+                <value>${field.value:multiply(1000):format('yyyy-MM-dd HH:mm:ss.SSSZ'):replace(' ','T'):replaceFirst('\+(\d\d)(\d\d)','+$1:$2')}</value>
               </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>46cdd7aa-91f0-307c-90aa-65747e558f25</id>
-              <name>Add attributes</name>
-              <position x="-984.0" y="456.0" />
+              <id>3bf497f2-3aed-3465-b91c-72ef6e53f0ea</id>
+              <name>Remove filebeat fields</name>
+              <position x="-1121.1565561587029" y="706.9002449806696" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+              <class>org.apache.nifi.processors.jolt.record.JoltTransformRecord</class>
               <bundle>
                 <group>org.apache.nifi</group>
-                <artifact>nifi-update-attribute-nar</artifact>
-                <version>1.12.1</version>
+                <artifact>nifi-jolt-record-nar</artifact>
+                <version>1.11.4</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -5033,5925 +5180,588 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
+              <scheduledState>STOPPED</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>Delete Attributes Expression</name>
+                <name>jolt-record-record-reader</name>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
               </property>
               <property>
-                <name>Store State</name>
-                <value>Do not store state</value>
+                <name>jolt-record-record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
               </property>
               <property>
-                <name>Stateful Variables Initial Value</name>
+                <name>jolt-record-transform</name>
+                <value>jolt-transform-chain</value>
               </property>
               <property>
-                <name>canonical-value-lookup-cache-size</name>
-                <value>100</value>
+                <name>jolt-record-custom-class</name>
               </property>
               <property>
-                <name>data_id</name>
-                <value>suricata-${event_type}</value>
+                <name>jolt-record-custom-modules</name>
               </property>
               <property>
-                <name>data_index</name>
-                <value>logs-${beats.sender:substringBeforeLast('/'):substringBeforeLast('.'):substringAfterLast('.')}-suricata-${event_type}</value>
+                <name>jolt-record-spec</name>
+                <value>[
+  {
+    "operation": "shift",
+    "spec": {
+      "json": {
+        "ts": "timestamp",
+        "*": {
+          "@": "&amp;"
+        }
+      },
+      "host": {
+        "name": "host"
+      },
+      "source": "source"
+    }
+  },{
+    "operation" : "modify-overwrite-beta",
+    "spec" :
+    {
+      "timestamp": "=toString"
+    }
+  }
+]</value>
               </property>
               <property>
-                <name>data_type</name>
-                <value>suricata</value>
+                <name>jolt-record-transform-cache-size</name>
+                <value>1</value>
               </property>
+              <autoTerminatedRelationship>original</autoTerminatedRelationship>
+            </processor>
+            <processor>
+              <id>06501f48-82c7-3c36-b99c-7368a322608b</id>
+              <name>Append ]</name>
+              <position x="-465.8393574027825" y="478.1159738496917" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.ReplaceText</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.11.4</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>STOPPED</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>enrich_ip2</name>
-                <value>/destination/ip</value>
+                <name>Regular Expression</name>
+                <value>(?s)(^.*$)</value>
               </property>
               <property>
-                <name>enrich_ip1</name>
-                <value>/source/ip</value>
+                <name>Replacement Value</name>
+                <value>]</value>
               </property>
               <property>
-                <name>TLP</name>
-                <value>AMBER</value>
+                <name>Character Set</name>
+                <value>UTF-8</value>
+              </property>
+              <property>
+                <name>Maximum Buffer Size</name>
+                <value>1 MB</value>
+              </property>
+              <property>
+                <name>Replacement Strategy</name>
+                <value>Append</value>
+              </property>
+              <property>
+                <name>Evaluation Mode</name>
+                <value>Entire text</value>
+              </property>
+              <property>
+                <name>Line-by-Line Evaluation Mode</name>
+                <value>All</value>
               </property>
             </processor>
-            <inputPort>
-              <id>8d13c952-0175-1000-0000-00007e8f4cae</id>
-              <name>Input</name>
-              <position x="-928.0" y="16.0" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </inputPort>
             <outputPort>
-              <id>055308a4-d020-39a9-9da4-b165796ef717</id>
+              <id>a28a9e95-1003-3ea6-9af6-a334c1aec07c</id>
               <name>To enrichment</name>
-              <position x="-928.0" y="1208.0" />
+              <position x="-1065.7090714972117" y="1164.8389289189608" />
               <comments />
-              <scheduledState>RUNNING</scheduledState>
+              <scheduledState>STOPPED</scheduledState>
             </outputPort>
-            <processGroup>
-              <id>8d1afcd0-0175-1000-ffff-ffffb3690a74</id>
-              <name>TLS events</name>
-              <position x="-384.0" y="872.0" />
+            <funnel>
+              <id>06521038-335b-3139-839d-ab43a013ce03</id>
+              <position x="-1557.869726298236" y="758.8984861527665" />
+            </funnel>
+            <funnel>
+              <id>c8c0a13d-0170-1000-ffff-ffff874141fa</id>
+              <position x="248.5321508445502" y="703.4412774751572" />
+            </funnel>
+            <connection>
+              <id>216d4dcf-f425-33d0-a5c1-5cdf1402162e</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>06501f48-82c7-3c36-b99c-7368a322608b</sourceId>
+              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>3bf497f2-3aed-3465-b91c-72ef6e53f0ea</destinationId>
+              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>3c739604-b69c-3e86-ba4c-a4739078837c</id>
+              <name />
+              <bendPoints />
+              <labelIndex>0</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>9027e415-c8cd-355e-af16-0c635f43832f</sourceId>
+              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>c8c0a13d-0170-1000-ffff-ffff874141fa</destinationId>
+              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
+              <destinationType>FUNNEL</destinationType>
+              <relationship>failure</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>295b97b9-1291-3a83-8191-78a300d0feaa</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>39492e6c-faf0-3bfa-bd16-51a1f8be4c71</sourceId>
+              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>ac17155e-32f1-3be8-843e-00877c210519</destinationId>
+              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>c8be8213-0170-1000-0000-0000695bc36c</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>fec43039-de5d-1e3b-850a-5e25d7b93c76</sourceId>
+              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>a28a9e95-1003-3ea6-9af6-a334c1aec07c</destinationId>
+              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>a056b363-8398-3877-8750-1bc9dcb9b1cd</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>ac17155e-32f1-3be8-843e-00877c210519</sourceId>
+              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>06501f48-82c7-3c36-b99c-7368a322608b</destinationId>
+              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>ee8556df-9826-3d45-82de-5c1c876db435</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>3bf497f2-3aed-3465-b91c-72ef6e53f0ea</sourceId>
+              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>06521038-335b-3139-839d-ab43a013ce03</destinationId>
+              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
+              <destinationType>FUNNEL</destinationType>
+              <relationship>failure</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>2d0f222e-d08e-31fd-b5e1-1ce178368e4c</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>3bf497f2-3aed-3465-b91c-72ef6e53f0ea</sourceId>
+              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>9027e415-c8cd-355e-af16-0c635f43832f</destinationId>
+              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>ed8609a1-bd09-391e-831b-1ab5b53a5049</id>
+              <name />
+              <bendPoints />
+              <labelIndex>0</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>06501f48-82c7-3c36-b99c-7368a322608b</sourceId>
+              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>c8c0a13d-0170-1000-ffff-ffff874141fa</destinationId>
+              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
+              <destinationType>FUNNEL</destinationType>
+              <relationship>failure</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>c8be6e60-0170-1000-ffff-ffffe34d52ef</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>9027e415-c8cd-355e-af16-0c635f43832f</sourceId>
+              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>fec43039-de5d-1e3b-850a-5e25d7b93c76</destinationId>
+              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>2a6e865b-4b36-3807-8bd7-eb2f39f95d4f</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>ac17155e-32f1-3be8-843e-00877c210519</sourceId>
+              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>06521038-335b-3139-839d-ab43a013ce03</destinationId>
+              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
+              <destinationType>FUNNEL</destinationType>
+              <relationship>failure</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+          </processGroup>
+        </processGroup>
+        <processGroup>
+          <id>b3d57504-7c06-37a3-b59b-8723f60fa728</id>
+          <name>Test data</name>
+          <position x="-496.0" y="552.0" />
+          <comment />
+          <outputPort>
+            <id>d30dc946-251a-307c-8e88-f2262b0bb194</id>
+            <name>To enrichment</name>
+            <position x="731.0454088698874" y="433.2315817172085" />
+            <comments />
+            <scheduledState>RUNNING</scheduledState>
+          </outputPort>
+          <processGroup>
+            <id>0c83ef26-0175-1000-ffff-ffffcac37910</id>
+            <name>Suricata</name>
+            <position x="462.0553417896858" y="119.99261716112323" />
+            <comment />
+            <processor>
+              <id>bb7dc9ff-2d25-3134-9617-cca3cabe9179</id>
+              <name>Alerts</name>
+              <position x="496.0" y="392.0" />
+              <styles />
               <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-              <processor>
-                <id>9279850b-0175-1000-0000-00001e74d182</id>
-                <name>Copy SNI</name>
-                <position x="504.0" y="320.0" />
-                <styles />
-                <comment />
-                <class>org.apache.nifi.processors.standard.UpdateRecord</class>
-                <bundle>
-                  <group>org.apache.nifi</group>
-                  <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
-                </bundle>
-                <maxConcurrentTasks>1</maxConcurrentTasks>
-                <schedulingPeriod>0 sec</schedulingPeriod>
-                <penalizationPeriod>30 sec</penalizationPeriod>
-                <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>WARN</bulletinLevel>
-                <lossTolerant>false</lossTolerant>
-                <scheduledState>RUNNING</scheduledState>
-                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-                <executionNode>ALL</executionNode>
-                <runDurationNanos>0</runDurationNanos>
-                <property>
-                  <name>record-reader</name>
-                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-                </property>
-                <property>
-                  <name>record-writer</name>
-                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-                </property>
-                <property>
-                  <name>replacement-value-strategy</name>
-                  <value>record-path-value</value>
-                </property>
-                <property>
-                  <name>/tls/sni_length</name>
-                  <value>/tls/sni</value>
-                </property>
-                <property>
-                  <name>/tls/sni_domain_length</name>
-                  <value>/tls/sni</value>
-                </property>
-                <property>
-                  <name>/tls/sni_domain</name>
-                  <value>/tls/sni</value>
-                </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-              </processor>
-              <processor>
-                <id>349b3279-a821-1197-aaa6-7e5472dccbef</id>
-                <name>Add sni_domain ++</name>
-                <position x="504.0" y="544.0" />
-                <styles />
-                <comment />
-                <class>org.apache.nifi.processors.standard.UpdateRecord</class>
-                <bundle>
-                  <group>org.apache.nifi</group>
-                  <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
-                </bundle>
-                <maxConcurrentTasks>1</maxConcurrentTasks>
-                <schedulingPeriod>0 sec</schedulingPeriod>
-                <penalizationPeriod>30 sec</penalizationPeriod>
-                <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>WARN</bulletinLevel>
-                <lossTolerant>false</lossTolerant>
-                <scheduledState>RUNNING</scheduledState>
-                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-                <executionNode>ALL</executionNode>
-                <runDurationNanos>0</runDurationNanos>
-                <property>
-                  <name>record-reader</name>
-                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-                </property>
-                <property>
-                  <name>record-writer</name>
-                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-                </property>
-                <property>
-                  <name>replacement-value-strategy</name>
-                  <value>literal-value</value>
-                </property>
-                <property>
-                  <name>/tls/sni_length</name>
-                  <value>${field.value:length():toNumber()}</value>
-                </property>
-                <property>
-                  <name>/tls/sni_domain_length</name>
-                  <value>${field.value:substringBeforeLast('.'):substringAfterLast('.'):append(${field.value:substringAfterLast('.'):prepend('.')}):length():toNumber()}</value>
-                </property>
-                <property>
-                  <name>/tls/sni_domain</name>
-                  <value>${field.value:substringBeforeLast('.'):substringAfterLast('.'):append(${field.value:substringAfterLast('.'):prepend('.')})}</value>
-                </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-              </processor>
-              <processor>
-                <id>349b3291-a821-1197-0000-000032560c6a</id>
-                <name>Specify enrichment fields</name>
-                <position x="504.0" y="752.0" />
-                <styles />
-                <comment />
-                <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
-                <bundle>
-                  <group>org.apache.nifi</group>
-                  <artifact>nifi-update-attribute-nar</artifact>
-                  <version>1.12.1</version>
-                </bundle>
-                <maxConcurrentTasks>1</maxConcurrentTasks>
-                <schedulingPeriod>0 sec</schedulingPeriod>
-                <penalizationPeriod>30 sec</penalizationPeriod>
-                <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>WARN</bulletinLevel>
-                <lossTolerant>false</lossTolerant>
-                <scheduledState>RUNNING</scheduledState>
-                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-                <executionNode>ALL</executionNode>
-                <runDurationNanos>0</runDurationNanos>
-                <property>
-                  <name>Delete Attributes Expression</name>
-                </property>
-                <property>
-                  <name>Store State</name>
-                  <value>Do not store state</value>
-                </property>
-                <property>
-                  <name>Stateful Variables Initial Value</name>
-                </property>
-                <property>
-                  <name>canonical-value-lookup-cache-size</name>
-                  <value>100</value>
-                </property>
-                <property>
-                  <name>enrich_domain1</name>
-                  <value>/tls/sni_domain</value>
-                </property>
-                <property>
-                  <name>enrich_fqdn1</name>
-                  <value>/tls/sni</value>
-                </property>
-              </processor>
-              <inputPort>
-                <id>92795a59-0175-1000-ffff-ffff89bc5f21</id>
-                <name>Input</name>
-                <position x="552.9999060626994" y="144.00001181679164" />
-                <comments />
-                <scheduledState>RUNNING</scheduledState>
-              </inputPort>
-              <outputPort>
-                <id>349b32d8-a821-1197-0000-000025a75a3b</id>
-                <name>Output</name>
-                <position x="552.0" y="976.0" />
-                <comments />
-                <scheduledState>RUNNING</scheduledState>
-              </outputPort>
-              <connection>
-                <id>9279996e-0175-1000-0000-000037fbed8b</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>92795a59-0175-1000-ffff-ffff89bc5f21</sourceId>
-                <sourceGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</sourceGroupId>
-                <sourceType>INPUT_PORT</sourceType>
-                <destinationId>9279850b-0175-1000-0000-00001e74d182</destinationId>
-                <destinationGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</destinationGroupId>
-                <destinationType>PROCESSOR</destinationType>
-                <relationship />
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-              <connection>
-                <id>349b3297-a821-1197-0000-0000717807b6</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>349b3279-a821-1197-aaa6-7e5472dccbef</sourceId>
-                <sourceGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>349b3291-a821-1197-0000-000032560c6a</destinationId>
-                <destinationGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</destinationGroupId>
-                <destinationType>PROCESSOR</destinationType>
-                <relationship>success</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-              <connection>
-                <id>349b327f-a821-1197-ffff-ffff8946a863</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>9279850b-0175-1000-0000-00001e74d182</sourceId>
-                <sourceGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>349b3279-a821-1197-aaa6-7e5472dccbef</destinationId>
-                <destinationGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</destinationGroupId>
-                <destinationType>PROCESSOR</destinationType>
-                <relationship>success</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-              <connection>
-                <id>349b32da-a821-1197-0000-000047979e25</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>349b3291-a821-1197-0000-000032560c6a</sourceId>
-                <sourceGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>349b32d8-a821-1197-0000-000025a75a3b</destinationId>
-                <destinationGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</destinationGroupId>
-                <destinationType>OUTPUT_PORT</destinationType>
-                <relationship>success</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-            </processGroup>
-            <processGroup>
-              <id>8d1ad21f-0175-1000-0000-00003c540411</id>
-              <name>DNS events</name>
-              <position x="-1000.0" y="872.0" />
+              <class>org.apache.nifi.processors.standard.GenerateFlowFile</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.11.4</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>10 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>File Size</name>
+                <value>0B</value>
+              </property>
+              <property>
+                <name>Batch Size</name>
+                <value>1</value>
+              </property>
+              <property>
+                <name>Data Format</name>
+                <value>Text</value>
+              </property>
+              <property>
+                <name>Unique FlowFiles</name>
+                <value>false</value>
+              </property>
+              <property>
+                <name>generate-ff-custom-text</name>
+                <value>[{"stream": 0,"flow": {"bytes_toserver": 74,"bytes_toclient": 0,"start": "${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}","pkts_toserver": 1,"pkts_toclient": 0},"vlan": 665,"ip_dst_port": 54323,"in_iface": "ens1f3","payload": "","timestamp": "${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}","proto": "TCP","event_type": "alert","alert": {"category": "Not Suspicious Traffic","severity": 3,"action": "allowed","gid": 1,"signature_id": 29999991,"rev": 1,"signature": "SOC TEST1"},"payload_printable": "","ip_src_addr": "10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","ip_src_port": 43844,"ip_dst_addr": "10.0.0.${random():mod(254):plus(1)}","host":"nifi.soctools.geant.org","host_domain":"geant.org"},
+{"timestamp":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}","alert":{"action":"allowed","category":"Potentially Bad Traffic","gid":1,"metadata":{"affected_product":["Any"],"attack_target":["Client_Endpoint"],"created_at":["2019_07_26"],"deployment":["Perimeter"],"former_category":["DNS"],"signature_severity":["Minor"],"updated_at":["2019_09_28"]},"rev":3,"severity":2,"signature":"ET DNS Query for .cc TLD","signature_id":2027758},"app_proto":"dns","destination":{"ip":"10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","port":53},"dns":{"query":[{"id":37261,"rrname":"static.arduino.cc","rrtype":"A","tx_id":2,"type":"query"}]},"event_type":"alert","flow":{"bytes_toclient":1039,"bytes_toserver":343,"pkts_toclient":2,"pkts_toserver":3,"start":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}"},"flow_id":1889254052511234,"in_iface":"if1","payload":"kY0BAAABAAAAAAABBnN0YXRpYwdhcmR1aW5vAmNjAAABAAEAACkPoAAAgAAAAA==","payload_printable":".............static.arduino.cc.......)........","proto":"UDP","source":{"ip":"10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","port":64164},"stream":0,"tx_id":2},
+{"timestamp":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}","TLP":"AMBER","alert":{"action":"allowed","category":"Attempted Information Leak","gid":1,"metadata":{"created_at":["2014_10_15"],"former_category":["CURRENT_EVENTS"],"updated_at":["2014_10_15"]},"rev":6,"severity":2,"signature":"ET EXPLOIT SSL excessive fatal alerts (possible POODLE attack against server)","signature_id":2019418},"app_proto":"tls","destination":{"ip":"10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","port":37220},"event_type":"alert","flow":{"bytes_toclient":247,"bytes_toserver":298,"pkts_toclient":4,"pkts_toserver":4,"start":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}"},"flow_id":43047386649621,"payload":"FQMAAAICKA==","payload_printable":"......(","proto":"TCP","source":{"ip":"10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","port":443},"stream":1,"tls":{"ja3":{},"version":"SSLv3"},"tx_id":0}]
+</value>
+              </property>
+              <property>
+                <name>character-set</name>
+                <value>UTF-8</value>
+              </property>
+              <property>
+                <name>mime.type</name>
+                <value>application/json</value>
+              </property>
+              <property>
+                <name>enrich_domain1</name>
+                <value>/host_domain</value>
+              </property>
+              <property>
+                <name>enrich_ip1</name>
+                <value>/source/ip</value>
+              </property>
+              <property>
+                <name>enrich_fqdn1</name>
+                <value>/host</value>
+              </property>
+              <property>
+                <name>data_id</name>
+                <value>suricata_alert</value>
+              </property>
+              <property>
+                <name>data_index</name>
+                <value>logs-suricata-alert</value>
+              </property>
+              <property>
+                <name>data_type</name>
+                <value>suricata</value>
+              </property>
+              <property>
+                <name>enrich_ip2</name>
+                <value>/destination/ip</value>
+              </property>
+            </processor>
+            <processor>
+              <id>f8143c19-b547-1c84-90b7-2e3c37a659e7</id>
+              <name>TLS</name>
+              <position x="496.0" y="536.0" />
+              <styles />
               <comment />
-              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-              <processor>
-                <id>8d37fe91-0175-1000-ffff-ffffb5c4de34</id>
-                <name>Add rrname_domain++</name>
-                <position x="1056.0" y="568.0" />
-                <styles />
-                <comment />
-                <class>org.apache.nifi.processors.standard.UpdateRecord</class>
-                <bundle>
-                  <group>org.apache.nifi</group>
-                  <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
-                </bundle>
-                <maxConcurrentTasks>1</maxConcurrentTasks>
-                <schedulingPeriod>0 sec</schedulingPeriod>
-                <penalizationPeriod>30 sec</penalizationPeriod>
-                <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>WARN</bulletinLevel>
-                <lossTolerant>false</lossTolerant>
-                <scheduledState>RUNNING</scheduledState>
-                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-                <executionNode>ALL</executionNode>
-                <runDurationNanos>0</runDurationNanos>
-                <property>
-                  <name>record-reader</name>
-                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-                </property>
-                <property>
-                  <name>record-writer</name>
-                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-                </property>
-                <property>
-                  <name>replacement-value-strategy</name>
-                  <value>literal-value</value>
-                </property>
-                <property>
-                  <name>/dns/rrname_domain</name>
-                  <value>${field.value:substringBeforeLast('.'):substringAfterLast('.'):append(${field.value:substringAfterLast('.'):prepend('.')})}</value>
-                </property>
-                <property>
-                  <name>/dns/rrname_length</name>
-                  <value>${field.value:length():toNumber()}</value>
-                </property>
-                <property>
-                  <name>/dns/rrname_domain_length</name>
-                  <value>${field.value:substringBeforeLast('.'):substringAfterLast('.'):append(${field.value:substringAfterLast('.'):prepend('.')}):length():toNumber()}</value>
-                </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-              </processor>
-              <processor>
-                <id>8d312ef9-0175-1000-ffff-fffff23bbb0c</id>
-                <name>Route on DNS type</name>
-                <position x="1056.0" y="128.0" />
-                <styles />
-                <comment />
-                <class>org.apache.nifi.processors.standard.RouteOnAttribute</class>
-                <bundle>
-                  <group>org.apache.nifi</group>
-                  <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
-                </bundle>
-                <maxConcurrentTasks>1</maxConcurrentTasks>
-                <schedulingPeriod>0 sec</schedulingPeriod>
-                <penalizationPeriod>30 sec</penalizationPeriod>
-                <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>WARN</bulletinLevel>
-                <lossTolerant>false</lossTolerant>
-                <scheduledState>RUNNING</scheduledState>
-                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-                <executionNode>ALL</executionNode>
-                <runDurationNanos>0</runDurationNanos>
-                <property>
-                  <name>Routing Strategy</name>
-                  <value>Route to Property name</value>
-                </property>
-                <property>
-                  <name>answer</name>
-                  <value>${type:contains("answer")}</value>
-                </property>
-              </processor>
-              <processor>
-                <id>8d2262f6-0175-1000-0000-000029eaa6ef</id>
-                <name>Partition on dns message type</name>
-                <position x="432.0" y="136.0" />
-                <styles />
-                <comment />
-                <class>org.apache.nifi.processors.standard.PartitionRecord</class>
-                <bundle>
-                  <group>org.apache.nifi</group>
-                  <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
-                </bundle>
-                <maxConcurrentTasks>1</maxConcurrentTasks>
-                <schedulingPeriod>0 sec</schedulingPeriod>
-                <penalizationPeriod>30 sec</penalizationPeriod>
-                <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>WARN</bulletinLevel>
-                <lossTolerant>false</lossTolerant>
-                <scheduledState>RUNNING</scheduledState>
-                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-                <executionNode>ALL</executionNode>
-                <runDurationNanos>0</runDurationNanos>
-                <property>
-                  <name>record-reader</name>
-                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-                </property>
-                <property>
-                  <name>record-writer</name>
-                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-                </property>
-                <property>
-                  <name>type</name>
-                  <value>/dns/type</value>
-                </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-                <autoTerminatedRelationship>original</autoTerminatedRelationship>
-              </processor>
-              <processor>
-                <id>8d36474f-0175-1000-0000-00003a8dd2d0</id>
-                <name>UpdateAttribute</name>
-                <position x="1056.0" y="768.0" />
-                <styles />
-                <comment />
-                <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
-                <bundle>
-                  <group>org.apache.nifi</group>
-                  <artifact>nifi-update-attribute-nar</artifact>
-                  <version>1.12.1</version>
-                </bundle>
-                <maxConcurrentTasks>1</maxConcurrentTasks>
-                <schedulingPeriod>0 sec</schedulingPeriod>
-                <penalizationPeriod>30 sec</penalizationPeriod>
-                <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>WARN</bulletinLevel>
-                <lossTolerant>false</lossTolerant>
-                <scheduledState>RUNNING</scheduledState>
-                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-                <executionNode>ALL</executionNode>
-                <runDurationNanos>0</runDurationNanos>
-                <property>
-                  <name>Delete Attributes Expression</name>
-                </property>
-                <property>
-                  <name>Store State</name>
-                  <value>Do not store state</value>
-                </property>
-                <property>
-                  <name>Stateful Variables Initial Value</name>
-                </property>
-                <property>
-                  <name>canonical-value-lookup-cache-size</name>
-                  <value>100</value>
-                </property>
-                <property>
-                  <name>enrich_domain1</name>
-                  <value>/dns/rrname_domain</value>
-                </property>
-                <property>
-                  <name>enrich_fqdn1</name>
-                  <value>/dns/rrname</value>
-                </property>
-              </processor>
-              <processor>
-                <id>8d34409e-0175-1000-ffff-ffff99eb371d</id>
-                <name>Extract rrname_domain++</name>
-                <position x="1056.0" y="368.0" />
-                <styles />
-                <comment />
-                <class>org.apache.nifi.processors.standard.UpdateRecord</class>
-                <bundle>
-                  <group>org.apache.nifi</group>
-                  <artifact>nifi-standard-nar</artifact>
-                  <version>1.12.1</version>
-                </bundle>
-                <maxConcurrentTasks>1</maxConcurrentTasks>
-                <schedulingPeriod>0 sec</schedulingPeriod>
-                <penalizationPeriod>30 sec</penalizationPeriod>
-                <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>WARN</bulletinLevel>
-                <lossTolerant>false</lossTolerant>
-                <scheduledState>RUNNING</scheduledState>
-                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-                <executionNode>ALL</executionNode>
-                <runDurationNanos>0</runDurationNanos>
-                <property>
-                  <name>record-reader</name>
-                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-                </property>
-                <property>
-                  <name>record-writer</name>
-                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-                </property>
-                <property>
-                  <name>replacement-value-strategy</name>
-                  <value>literal-value</value>
-                </property>
-                <property>
-                  <name>/dns/rrname_domain</name>
-                  <value>/dns/rrname</value>
-                </property>
-                <property>
-                  <name>/dns/rrname_length</name>
-                  <value>/dns/rrname</value>
-                </property>
-                <property>
-                  <name>/dns/rrname_domain_length</name>
-                  <value>/dns/rrname</value>
-                </property>
-                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-              </processor>
-              <inputPort>
-                <id>8d212c22-0175-1000-ffff-fffffbc39157</id>
-                <name>Input</name>
-                <position x="488.0" y="0.0" />
-                <comments />
-                <scheduledState>RUNNING</scheduledState>
-              </inputPort>
-              <outputPort>
-                <id>8d211b58-0175-1000-0000-000003eb5f3b</id>
-                <name>Output</name>
-                <position x="448.0" y="808.0" />
-                <comments />
-                <scheduledState>RUNNING</scheduledState>
-              </outputPort>
-              <connection>
-                <id>8d3979b7-0175-1000-ffff-ffffe2efe898</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>8d37fe91-0175-1000-ffff-ffffb5c4de34</sourceId>
-                <sourceGroupId>8d1ad21f-0175-1000-0000-00003c540411</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>8d36474f-0175-1000-0000-00003a8dd2d0</destinationId>
-                <destinationGroupId>8d1ad21f-0175-1000-0000-00003c540411</destinationGroupId>
-                <destinationType>PROCESSOR</destinationType>
-                <relationship>success</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-              <connection>
-                <id>8d3afc9a-0175-1000-ffff-ffffe1ef144c</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>8d36474f-0175-1000-0000-00003a8dd2d0</sourceId>
-                <sourceGroupId>8d1ad21f-0175-1000-0000-00003c540411</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>8d211b58-0175-1000-0000-000003eb5f3b</destinationId>
-                <destinationGroupId>8d1ad21f-0175-1000-0000-00003c540411</destinationGroupId>
-                <destinationType>OUTPUT_PORT</destinationType>
-                <relationship>success</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-              <connection>
-                <id>8d30f240-0175-1000-ffff-ffffa4cc8a58</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>8d212c22-0175-1000-ffff-fffffbc39157</sourceId>
-                <sourceGroupId>8d1ad21f-0175-1000-0000-00003c540411</sourceGroupId>
-                <sourceType>INPUT_PORT</sourceType>
-                <destinationId>8d2262f6-0175-1000-0000-000029eaa6ef</destinationId>
-                <destinationGroupId>8d1ad21f-0175-1000-0000-00003c540411</destinationGroupId>
-                <destinationType>PROCESSOR</destinationType>
-                <relationship />
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-              <connection>
-                <id>8d3b1d93-0175-1000-ffff-ffffe953d6b9</id>
-                <name />
-                <bendPoints>
-                  <bendPoint x="568.0" y="400.0" />
-                </bendPoints>
-                <labelIndex>0</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>8d312ef9-0175-1000-ffff-fffff23bbb0c</sourceId>
-                <sourceGroupId>8d1ad21f-0175-1000-0000-00003c540411</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>8d211b58-0175-1000-0000-000003eb5f3b</destinationId>
-                <destinationGroupId>8d1ad21f-0175-1000-0000-00003c540411</destinationGroupId>
-                <destinationType>OUTPUT_PORT</destinationType>
-                <relationship>unmatched</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-              <connection>
-                <id>8d3821ce-0175-1000-0000-000046a72d11</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>8d34409e-0175-1000-ffff-ffff99eb371d</sourceId>
-                <sourceGroupId>8d1ad21f-0175-1000-0000-00003c540411</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>8d37fe91-0175-1000-ffff-ffffb5c4de34</destinationId>
-                <destinationGroupId>8d1ad21f-0175-1000-0000-00003c540411</destinationGroupId>
-                <destinationType>PROCESSOR</destinationType>
-                <relationship>success</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-              <connection>
-                <id>8d3281c3-0175-1000-ffff-ffffed50fa50</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>8d2262f6-0175-1000-0000-000029eaa6ef</sourceId>
-                <sourceGroupId>8d1ad21f-0175-1000-0000-00003c540411</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>8d312ef9-0175-1000-ffff-fffff23bbb0c</destinationId>
-                <destinationGroupId>8d1ad21f-0175-1000-0000-00003c540411</destinationGroupId>
-                <destinationType>PROCESSOR</destinationType>
-                <relationship>success</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-              <connection>
-                <id>8d3485f4-0175-1000-0000-0000175959ff</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>8d312ef9-0175-1000-ffff-fffff23bbb0c</sourceId>
-                <sourceGroupId>8d1ad21f-0175-1000-0000-00003c540411</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>8d34409e-0175-1000-ffff-ffff99eb371d</destinationId>
-                <destinationGroupId>8d1ad21f-0175-1000-0000-00003c540411</destinationGroupId>
-                <destinationType>PROCESSOR</destinationType>
-                <relationship>answer</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-            </processGroup>
-            <connection>
-              <id>349b32bb-a821-1197-ffff-ffff81dc7ff2</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>8d1bef35-0175-1000-0000-0000746fa33d</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>92795a59-0175-1000-ffff-ffff89bc5f21</destinationId>
-              <destinationGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</destinationGroupId>
-              <destinationType>INPUT_PORT</destinationType>
-              <relationship>tls</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>8d19c8d7-0175-1000-ffff-ffffe3aa385d</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>1a038948-9e9a-3523-b899-990077bfd575</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>46cdd7aa-91f0-307c-90aa-65747e558f25</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>8d13df9c-0175-1000-0000-0000562b802e</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>8d13c952-0175-1000-0000-00007e8f4cae</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>INPUT_PORT</sourceType>
-              <destinationId>24e1d8ed-10f4-3b46-958c-f2fb676e3192</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship />
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>f9a8aee6-502f-3eb9-8806-8964276d4ca0</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>24e1d8ed-10f4-3b46-958c-f2fb676e3192</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>1a038948-9e9a-3523-b899-990077bfd575</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>8d2364b0-0175-1000-ffff-ffffa2a4601f</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>8d1bef35-0175-1000-0000-0000746fa33d</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>8d212c22-0175-1000-ffff-fffffbc39157</destinationId>
-              <destinationGroupId>8d1ad21f-0175-1000-0000-00003c540411</destinationGroupId>
-              <destinationType>INPUT_PORT</destinationType>
-              <relationship>dns</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>8d1a6818-0175-1000-ffff-ffffeebd7e98</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>46cdd7aa-91f0-307c-90aa-65747e558f25</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>fd6b6513-51f8-3a96-a764-13bd39ec7f84</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>349b32e1-a821-1197-0000-00000d7cca30</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>349b32d8-a821-1197-0000-000025a75a3b</sourceId>
-              <sourceGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</sourceGroupId>
-              <sourceType>OUTPUT_PORT</sourceType>
-              <destinationId>055308a4-d020-39a9-9da4-b165796ef717</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship />
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>8d1c1701-0175-1000-ffff-fffff7364622</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>fd6b6513-51f8-3a96-a764-13bd39ec7f84</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>8d1bef35-0175-1000-0000-0000746fa33d</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>9266feff-0175-1000-ffff-ffff8c7d68c1</id>
-              <name />
-              <bendPoints>
-                <bendPoint x="-1208.0" y="952.0" />
-              </bendPoints>
-              <labelIndex>0</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>8d1bef35-0175-1000-0000-0000746fa33d</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>055308a4-d020-39a9-9da4-b165796ef717</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship>unmatched</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>9266e0c5-0175-1000-0000-00006aafc0f8</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>8d211b58-0175-1000-0000-000003eb5f3b</sourceId>
-              <sourceGroupId>8d1ad21f-0175-1000-0000-00003c540411</sourceGroupId>
-              <sourceType>OUTPUT_PORT</sourceType>
-              <destinationId>055308a4-d020-39a9-9da4-b165796ef717</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship />
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-          </processGroup>
-          <processGroup>
-            <id>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</id>
-            <name>Mysql</name>
-            <position x="-440.0" y="1272.0" />
-            <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-            <processor>
-              <id>14453e90-7646-1485-ffff-ffff81f3c683</id>
-              <name>Add header</name>
-              <position x="344.0" y="-8.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.ReplaceText</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>Regular Expression</name>
-                <value>(?s)(^.*$)</value>
-              </property>
-              <property>
-                <name>Replacement Value</name>
-                <value>timestamp,serverhost,username,host,connectionid,queryid,operation,database,object,retcode
-</value>
-              </property>
-              <property>
-                <name>Character Set</name>
-                <value>UTF-8</value>
-              </property>
-              <property>
-                <name>Maximum Buffer Size</name>
-                <value>1 MB</value>
-              </property>
-              <property>
-                <name>Replacement Strategy</name>
-                <value>Prepend</value>
-              </property>
-              <property>
-                <name>Evaluation Mode</name>
-                <value>Entire text</value>
-              </property>
-              <property>
-                <name>Line-by-Line Evaluation Mode</name>
-                <value>All</value>
-              </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-            </processor>
-            <processor>
-              <id>e0bd3907-2d13-1407-b2dd-48591e65e59d</id>
-              <name>UpdateRecord</name>
-              <position x="-336.0" y="416.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-              </property>
-              <property>
-                <name>record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-              </property>
-              <property>
-                <name>replacement-value-strategy</name>
-                <value>literal-value</value>
-              </property>
-              <property>
-                <name>/event_type</name>
-                <value>log</value>
-              </property>
-              <property>
-                <name>/labels/source_host</name>
-                <value>${source_host}</value>
-              </property>
-              <property>
-                <name>/timestamp</name>
-                <value>${field.value:toDate('yyMMdd HH:mm:ss'):format("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")}</value>
-              </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-            </processor>
-            <processor>
-              <id>50813f6b-a5f6-1a98-8ae4-115134714332</id>
-              <name>UpdateRecord</name>
-              <position x="352.0" y="472.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-              </property>
-              <property>
-                <name>record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-              </property>
-              <property>
-                <name>replacement-value-strategy</name>
-                <value>literal-value</value>
-              </property>
-              <property>
-                <name>/event_type</name>
-                <value>audit</value>
-              </property>
-              <property>
-                <name>/labels/source_host</name>
-                <value>${source_host}</value>
-              </property>
-              <property>
-                <name>/timestamp</name>
-                <value>${field.value:toDate('yyyyMMdd HH:mm:ss'):format("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")}</value>
-              </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-            </processor>
-            <processor>
-              <id>e4353681-23e9-15af-0000-000032ea35e3</id>
-              <name>RouteOnAttribute</name>
-              <position x="-352.0" y="0.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.RouteOnAttribute</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>Routing Strategy</name>
-                <value>Route to Property name</value>
-              </property>
-              <property>
-                <name>audit</name>
-                <value>${source_file:contains("audit")}</value>
-              </property>
-            </processor>
-            <processor>
-              <id>f92d3f77-958a-1344-bd3b-7c93457e5c12</id>
-              <name>Extract message</name>
-              <position x="-360.0" y="-216.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-              </property>
-              <property>
-                <name>record-writer</name>
-                <value>bc8e5957-0175-1000-0000-00003346421d</value>
-              </property>
-              <property>
-                <name>include-zero-record-flowfiles</name>
-                <value>true</value>
-              </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-            </processor>
-            <processor>
-              <id>92693a34-99da-1004-adfb-bdf4aa7e1c30</id>
-              <name>Convert to json</name>
-              <position x="352.0" y="240.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>record-reader</name>
-                <value>14453a95-7646-1485-0000-00002c675762</value>
-              </property>
-              <property>
-                <name>record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-              </property>
-              <property>
-                <name>include-zero-record-flowfiles</name>
-                <value>false</value>
-              </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-            </processor>
-            <processor>
-              <id>48723b8e-fae0-14e6-afdc-85c239646dc0</id>
-              <name>UpdateAttribute</name>
-              <position x="-320.0" y="648.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-update-attribute-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>Delete Attributes Expression</name>
-              </property>
-              <property>
-                <name>Store State</name>
-                <value>Do not store state</value>
-              </property>
-              <property>
-                <name>Stateful Variables Initial Value</name>
-              </property>
-              <property>
-                <name>canonical-value-lookup-cache-size</name>
-                <value>100</value>
-              </property>
-              <property>
-                <name>data_index</name>
-                <value>logs-mysql</value>
-              </property>
-              <property>
-                <name>enrich_ip1</name>
-                <value>/client.ip</value>
-              </property>
-            </processor>
-            <processor>
-              <id>14453a41-7646-1485-b398-28f819de4a45</id>
-              <name>Convert to json</name>
-              <position x="-336.0" y="200.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>record-reader</name>
-                <value>70ea12d7-0176-1000-ffff-ffffee2ee306</value>
-              </property>
-              <property>
-                <name>record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-              </property>
-              <property>
-                <name>include-zero-record-flowfiles</name>
-                <value>false</value>
-              </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-            </processor>
-            <inputPort>
-              <id>7f683020-779c-1bc9-85da-5bad079d5d9d</id>
-              <name>Input</name>
-              <position x="-312.0" y="-336.0" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </inputPort>
-            <outputPort>
-              <id>bcbb33ba-112e-1f53-8982-d5ae9f0e701f</id>
-              <name>Output</name>
-              <position x="-256.0" y="960.0" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </outputPort>
-            <connection>
-              <id>14453eaa-7646-1485-0000-000070b97065</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>14453e90-7646-1485-ffff-ffff81f3c683</sourceId>
-              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>92693a34-99da-1004-adfb-bdf4aa7e1c30</destinationId>
-              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>e43535a1-23e9-15af-9f98-2061dd6f97d6</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>92693a34-99da-1004-adfb-bdf4aa7e1c30</sourceId>
-              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>50813f6b-a5f6-1a98-8ae4-115134714332</destinationId>
-              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>70e77065-0176-1000-0000-00001479fdf4</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>e0bd3907-2d13-1407-b2dd-48591e65e59d</sourceId>
-              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>48723b8e-fae0-14e6-afdc-85c239646dc0</destinationId>
-              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>cf95350a-de6c-1a4b-8183-8f9cfa11449a</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>7f683020-779c-1bc9-85da-5bad079d5d9d</sourceId>
-              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
-              <sourceType>INPUT_PORT</sourceType>
-              <destinationId>f92d3f77-958a-1344-bd3b-7c93457e5c12</destinationId>
-              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship />
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>14453fcf-7646-1485-ffff-ffff952df142</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>e4353681-23e9-15af-0000-000032ea35e3</sourceId>
-              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>14453e90-7646-1485-ffff-ffff81f3c683</destinationId>
-              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>audit</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>3e21311d-dc5c-143f-b39e-d8fb8c9fd36d</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>50813f6b-a5f6-1a98-8ae4-115134714332</sourceId>
-              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>48723b8e-fae0-14e6-afdc-85c239646dc0</destinationId>
-              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>14453a4b-7646-1485-ffff-fffffc8f5285</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>e4353681-23e9-15af-0000-000032ea35e3</sourceId>
-              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>14453a41-7646-1485-b398-28f819de4a45</destinationId>
-              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>unmatched</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>7fe931b3-82b3-1699-b49a-d380dd14a5b8</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>48723b8e-fae0-14e6-afdc-85c239646dc0</sourceId>
-              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>bcbb33ba-112e-1f53-8982-d5ae9f0e701f</destinationId>
-              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>a35e3744-5906-1ee9-abc4-205356ca01d1</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>f92d3f77-958a-1344-bd3b-7c93457e5c12</sourceId>
-              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>e4353681-23e9-15af-0000-000032ea35e3</destinationId>
-              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>70e8f3cb-0176-1000-0000-00006d2cdbf5</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>14453a41-7646-1485-b398-28f819de4a45</sourceId>
-              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>e0bd3907-2d13-1407-b2dd-48591e65e59d</destinationId>
-              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-          </processGroup>
-          <processGroup>
-            <id>5d04357e-423c-1ab5-a7a4-44565abfed7f</id>
-            <name>Haproxy</name>
-            <position x="-448.0" y="664.0" />
-            <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-            <processor>
-              <id>c9763c4c-7186-1460-871a-b5fd00ca3241</id>
-              <name>UpdateRecord</name>
-              <position x="352.0" y="472.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-              </property>
-              <property>
-                <name>record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-              </property>
-              <property>
-                <name>replacement-value-strategy</name>
-                <value>literal-value</value>
-              </property>
-              <property>
-                <name>/labels/source_host</name>
-                <value>${source_host}</value>
-              </property>
-              <property>
-                <name>/timestamp</name>
-                <value>${field.value:toDate('dd/MMM/yyyy:HH:mm:ss.SSS'):format("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")}</value>
-              </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-            </processor>
-            <processor>
-              <id>e4c8356d-54ad-15b5-94fe-799d9465aa51</id>
-              <name>Extract message</name>
-              <position x="352.0" y="280.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-              </property>
-              <property>
-                <name>record-writer</name>
-                <value>bc8e5957-0175-1000-0000-00003346421d</value>
-              </property>
-              <property>
-                <name>include-zero-record-flowfiles</name>
-                <value>true</value>
-              </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-            </processor>
-            <processor>
-              <id>f6e63fd3-6150-1d72-a58a-46b43bc5d5c2</id>
-              <name>Convert to json</name>
-              <position x="1064.0" y="272.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>record-reader</name>
-                <value>56ebe0aa-0176-1000-ffff-ffffbd212f01</value>
-              </property>
-              <property>
-                <name>record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-              </property>
-              <property>
-                <name>include-zero-record-flowfiles</name>
-                <value>false</value>
-              </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-            </processor>
-            <processor>
-              <id>7fbd38e8-60a2-1503-8a6c-ffc6b156b3b0</id>
-              <name>UpdateAttribute</name>
-              <position x="1072.0" y="472.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-update-attribute-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>Delete Attributes Expression</name>
-              </property>
-              <property>
-                <name>Store State</name>
-                <value>Do not store state</value>
-              </property>
-              <property>
-                <name>Stateful Variables Initial Value</name>
-              </property>
-              <property>
-                <name>canonical-value-lookup-cache-size</name>
-                <value>100</value>
-              </property>
-              <property>
-                <name>data_index</name>
-                <value>logs-haproxy</value>
-              </property>
-              <property>
-                <name>enrich_ip1</name>
-                <value>/client.ip</value>
-              </property>
-            </processor>
-            <inputPort>
-              <id>65a33e05-e157-1bfc-8741-adf11b3df720</id>
-              <name>Input</name>
-              <position x="397.9999517774115" y="110.99999315685733" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </inputPort>
-            <outputPort>
-              <id>328b35e2-eb52-1f47-b84d-52941eff8a07</id>
-              <name>Output</name>
-              <position x="1120.0" y="808.0" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </outputPort>
-            <connection>
-              <id>960f3ac9-95dc-103d-a70a-ca3b070851a4</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>7fbd38e8-60a2-1503-8a6c-ffc6b156b3b0</sourceId>
-              <sourceGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>328b35e2-eb52-1f47-b84d-52941eff8a07</destinationId>
-              <destinationGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>0ecb3e12-768e-1896-a850-2a2bec52eb95</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>c9763c4c-7186-1460-871a-b5fd00ca3241</sourceId>
-              <sourceGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>7fbd38e8-60a2-1503-8a6c-ffc6b156b3b0</destinationId>
-              <destinationGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>b5d43cea-5555-10b0-b75f-b88a95e9c6aa</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>65a33e05-e157-1bfc-8741-adf11b3df720</sourceId>
-              <sourceGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</sourceGroupId>
-              <sourceType>INPUT_PORT</sourceType>
-              <destinationId>e4c8356d-54ad-15b5-94fe-799d9465aa51</destinationId>
-              <destinationGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship />
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>484a3eab-4af3-11cd-abe2-d5ee6fc1a291</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>e4c8356d-54ad-15b5-94fe-799d9465aa51</sourceId>
-              <sourceGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>f6e63fd3-6150-1d72-a58a-46b43bc5d5c2</destinationId>
-              <destinationGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>39ef3a2d-874e-11a6-87be-0b3582fa43de</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>f6e63fd3-6150-1d72-a58a-46b43bc5d5c2</sourceId>
-              <sourceGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>c9763c4c-7186-1460-871a-b5fd00ca3241</destinationId>
-              <destinationGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-          </processGroup>
-          <processGroup>
-            <id>7263390f-914c-1f6e-9451-75f908ed8816</id>
-            <name>Elasticsearch</name>
-            <position x="-1904.0" y="488.0" />
-            <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-            <processor>
-              <id>295133bd-42e6-1b08-80c5-bea2e19921fc</id>
-              <name>UpdateAttribute</name>
-              <position x="360.0" y="600.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-update-attribute-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>Delete Attributes Expression</name>
-              </property>
-              <property>
-                <name>Store State</name>
-                <value>Do not store state</value>
-              </property>
-              <property>
-                <name>Stateful Variables Initial Value</name>
-              </property>
-              <property>
-                <name>canonical-value-lookup-cache-size</name>
-                <value>100</value>
-              </property>
-              <property>
-                <name>data_index</name>
-                <value>logs-elasticsearch</value>
-              </property>
-            </processor>
-            <inputPort>
-              <id>39ce3238-1ebd-1c2c-b724-01d18f147b6f</id>
-              <name>Input</name>
-              <position x="408.0" y="320.0" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </inputPort>
-            <outputPort>
-              <id>bbc63756-9681-13b9-8c07-20c82f62ceca</id>
-              <name>Output</name>
-              <position x="408.0" y="920.0" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </outputPort>
-            <connection>
-              <id>15e0341e-6dd3-172a-b2b5-8f1d5740fea1</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>39ce3238-1ebd-1c2c-b724-01d18f147b6f</sourceId>
-              <sourceGroupId>7263390f-914c-1f6e-9451-75f908ed8816</sourceGroupId>
-              <sourceType>INPUT_PORT</sourceType>
-              <destinationId>295133bd-42e6-1b08-80c5-bea2e19921fc</destinationId>
-              <destinationGroupId>7263390f-914c-1f6e-9451-75f908ed8816</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship />
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>af99379e-bf26-19c5-bd70-bd6d405fb0b7</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>295133bd-42e6-1b08-80c5-bea2e19921fc</sourceId>
-              <sourceGroupId>7263390f-914c-1f6e-9451-75f908ed8816</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>bbc63756-9681-13b9-8c07-20c82f62ceca</destinationId>
-              <destinationGroupId>7263390f-914c-1f6e-9451-75f908ed8816</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-          </processGroup>
-          <processGroup>
-            <id>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</id>
-            <name>Keycloak</name>
-            <position x="-440.0" y="1064.0" />
-            <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-            <processor>
-              <id>8e17350e-583e-1130-8ec7-bd2dc5d4f361</id>
-              <name>UpdateAttribute</name>
-              <position x="344.0" y="736.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-update-attribute-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>Delete Attributes Expression</name>
-              </property>
-              <property>
-                <name>Store State</name>
-                <value>Do not store state</value>
-              </property>
-              <property>
-                <name>Stateful Variables Initial Value</name>
-              </property>
-              <property>
-                <name>canonical-value-lookup-cache-size</name>
-                <value>100</value>
-              </property>
-              <property>
-                <name>data_index</name>
-                <value>logs-keycloak</value>
-              </property>
-            </processor>
-            <processor>
-              <id>fbbe3f9c-5336-11c9-0000-00003ab5dde5</id>
-              <name>Fix timestamp</name>
-              <position x="352.0" y="480.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.jolt.record.JoltTransformRecord</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-jolt-record-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>jolt-record-record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-              </property>
-              <property>
-                <name>jolt-record-record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-              </property>
-              <property>
-                <name>jolt-record-transform</name>
-                <value>jolt-transform-chain</value>
-              </property>
-              <property>
-                <name>jolt-record-custom-class</name>
-              </property>
-              <property>
-                <name>jolt-record-custom-modules</name>
-              </property>
-              <property>
-                <name>jolt-record-spec</name>
-                <value>[
-  {
-    "operation": "shift",
-    "spec": {
-      "timestamp": {
-        "1": "timestamp"
-      },
-      "*": "&amp;"
-    }
-  }
-]</value>
-              </property>
-              <property>
-                <name>jolt-record-transform-cache-size</name>
-                <value>1</value>
-              </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-              <autoTerminatedRelationship>original</autoTerminatedRelationship>
-            </processor>
-            <inputPort>
-              <id>10cb3b64-e867-1d81-bd59-eb9cf6883f24</id>
-              <name>Input</name>
-              <position x="408.0" y="320.0" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </inputPort>
-            <outputPort>
-              <id>84dc3511-1322-175b-8083-9729037f8edb</id>
-              <name>Output</name>
-              <position x="392.0" y="984.0" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </outputPort>
-            <connection>
-              <id>fbbe3fbf-5336-11c9-ffff-ffffb7c3576e</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>fbbe3f9c-5336-11c9-0000-00003ab5dde5</sourceId>
-              <sourceGroupId>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>8e17350e-583e-1130-8ec7-bd2dc5d4f361</destinationId>
-              <destinationGroupId>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>50c83129-28e1-1d45-bafe-912df3cdf284</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>10cb3b64-e867-1d81-bd59-eb9cf6883f24</sourceId>
-              <sourceGroupId>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</sourceGroupId>
-              <sourceType>INPUT_PORT</sourceType>
-              <destinationId>fbbe3f9c-5336-11c9-0000-00003ab5dde5</destinationId>
-              <destinationGroupId>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship />
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>fbbe3ede-5336-11c9-8870-deb7fffd14ae</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>8e17350e-583e-1130-8ec7-bd2dc5d4f361</sourceId>
-              <sourceGroupId>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>84dc3511-1322-175b-8083-9729037f8edb</destinationId>
-              <destinationGroupId>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-          </processGroup>
-          <processGroup>
-            <id>83691174-683f-3c7c-8526-8fc00397aee1</id>
-            <name>Zeek</name>
-            <position x="-448.0" y="464.0" />
-            <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-            <processor>
-              <id>fec43039-de5d-1e3b-850a-5e25d7b93c76</id>
-              <name>UpdateAttribute</name>
-              <position x="-1121.584644408096" y="913.629598069974" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-update-attribute-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>Delete Attributes Expression</name>
-              </property>
-              <property>
-                <name>Store State</name>
-                <value>Do not store state</value>
-              </property>
-              <property>
-                <name>Stateful Variables Initial Value</name>
-              </property>
-              <property>
-                <name>canonical-value-lookup-cache-size</name>
-                <value>100</value>
-              </property>
-              <property>
-                <name>data_index</name>
-                <value>logs-uninett-darknet</value>
-              </property>
-              <property>
-                <name>mime.type</name>
-                <value>application/json</value>
-              </property>
-              <property>
-                <name>enrich_ip2</name>
-                <value>/destination/ip</value>
-              </property>
-              <property>
-                <name>enrich_ip1</name>
-                <value>/source/ip</value>
-              </property>
-              <property>
-                <name>TLP</name>
-                <value>AMBER</value>
-              </property>
-            </processor>
-            <processor>
-              <id>9027e415-c8cd-355e-af16-0c635f43832f</id>
-              <name>Convert timestamp and add fields</name>
-              <position x="-472.77987807459795" y="696.7530680701591" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-              </property>
-              <property>
-                <name>record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-              </property>
-              <property>
-                <name>replacement-value-strategy</name>
-                <value>literal-value</value>
-              </property>
-              <property>
-                <name>/data_type</name>
-                <value>zeek</value>
-              </property>
-              <property>
-                <name>/data_index</name>
-                <value>logs-zeek-conn</value>
-              </property>
-              <property>
-                <name>/data_id</name>
-                <value>zeek_conn</value>
-              </property>
-              <property>
-                <name>/timestamp</name>
-                <value>${field.value:multiply(1000):format('yyyy-MM-dd HH:mm:ss.SSSZ'):replace(' ','T'):replaceFirst('\+(\d\d)(\d\d)','+$1:$2')}</value>
-              </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-            </processor>
-            <processor>
-              <id>3bf497f2-3aed-3465-b91c-72ef6e53f0ea</id>
-              <name>Normalize fields</name>
-              <position x="-1121.1565561587029" y="706.9002449806696" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.jolt.record.JoltTransformRecord</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-jolt-record-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>jolt-record-record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-              </property>
-              <property>
-                <name>jolt-record-record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-              </property>
-              <property>
-                <name>jolt-record-transform</name>
-                <value>jolt-transform-chain</value>
-              </property>
-              <property>
-                <name>jolt-record-custom-class</name>
-              </property>
-              <property>
-                <name>jolt-record-custom-modules</name>
-              </property>
-              <property>
-                <name>jolt-record-spec</name>
-                <value>[{
-    "operation": "modify-overwrite-beta",
-    "spec": {
-      "*": "=recursivelySquashNulls"
-    }
-  },{
-	"operation": "shift",
-	"spec": {
-		"*": {
-			"json": {
-				"*": "[&amp;2].&amp;"
-			},
-			"host": {
-				"name": "[&amp;2].labels.source_host"
-			},
-			"source": "[&amp;1].labels.source"
-		}
-	}
-}, {
-	"operation": "shift",
-	"spec": {
-		"*": {
-			"ts": "[&amp;1].timestamp",
-            "id.resp_h":"[&amp;1].destination.ip",
-            "id.resp_p":"[&amp;1].destination.port",
-            "id.orig_h":"[&amp;1].source.ip",
-            "id.orig_p":"[&amp;1].source.port",
-			"*": "[&amp;1].&amp;"
-		}
-	}
-}, {
-	"operation": "modify-overwrite-beta",
-	"spec": {
-		"*": {
-			"timestamp": "=toString"
-		}
-	}
-}]</value>
-              </property>
-              <property>
-                <name>jolt-record-transform-cache-size</name>
-                <value>1</value>
-              </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-              <autoTerminatedRelationship>original</autoTerminatedRelationship>
-            </processor>
-            <inputPort>
-              <id>349b3362-a821-1197-ffff-ffff91d0e6c0</id>
-              <name>Input</name>
-              <position x="-1072.0" y="520.0" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </inputPort>
-            <outputPort>
-              <id>a28a9e95-1003-3ea6-9af6-a334c1aec07c</id>
-              <name>To enrichment</name>
-              <position x="-1065.7090714972117" y="1164.8389289189608" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </outputPort>
-            <connection>
-              <id>c8be8213-0170-1000-0000-0000695bc36c</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>fec43039-de5d-1e3b-850a-5e25d7b93c76</sourceId>
-              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>a28a9e95-1003-3ea6-9af6-a334c1aec07c</destinationId>
-              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>2d0f222e-d08e-31fd-b5e1-1ce178368e4c</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>3bf497f2-3aed-3465-b91c-72ef6e53f0ea</sourceId>
-              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>9027e415-c8cd-355e-af16-0c635f43832f</destinationId>
-              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>c8be6e60-0170-1000-ffff-ffffe34d52ef</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>9027e415-c8cd-355e-af16-0c635f43832f</sourceId>
-              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>fec43039-de5d-1e3b-850a-5e25d7b93c76</destinationId>
-              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>349b3364-a821-1197-0000-000063d0c208</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>349b3362-a821-1197-ffff-ffff91d0e6c0</sourceId>
-              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
-              <sourceType>INPUT_PORT</sourceType>
-              <destinationId>3bf497f2-3aed-3465-b91c-72ef6e53f0ea</destinationId>
-              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship />
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-          </processGroup>
-          <processGroup>
-            <id>31b13b40-8e26-1798-9777-2272881c6031</id>
-            <name>Zookeeper</name>
-            <position x="-440.0" y="1488.0" />
-            <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-            <processor>
-              <id>b09b367b-060f-1e74-9a96-ca5ba5f88858</id>
-              <name>UpdateRecord</name>
-              <position x="352.0" y="472.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-              </property>
-              <property>
-                <name>record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-              </property>
-              <property>
-                <name>replacement-value-strategy</name>
-                <value>literal-value</value>
-              </property>
-              <property>
-                <name>/labels/source_host</name>
-                <value>${source_host}</value>
-              </property>
-              <property>
-                <name>/timestamp</name>
-                <value>${field.value:toDate('yyyy-MM-dd HH:mm:ss,SSS'):format("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")}</value>
-              </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-            </processor>
-            <processor>
-              <id>dd3b361c-4e9c-158c-ba31-61006a0b21b7</id>
-              <name>UpdateAttribute</name>
-              <position x="1072.0" y="472.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-update-attribute-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>Delete Attributes Expression</name>
-              </property>
-              <property>
-                <name>Store State</name>
-                <value>Do not store state</value>
-              </property>
-              <property>
-                <name>Stateful Variables Initial Value</name>
-              </property>
-              <property>
-                <name>canonical-value-lookup-cache-size</name>
-                <value>100</value>
-              </property>
-              <property>
-                <name>data_index</name>
-                <value>logs-zookeeper</value>
-              </property>
-            </processor>
-            <processor>
-              <id>4b1c38b7-8f98-1a81-96c9-17e3eccc45b2</id>
-              <name>Extract message</name>
-              <position x="352.0" y="280.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-              </property>
-              <property>
-                <name>record-writer</name>
-                <value>bc8e5957-0175-1000-0000-00003346421d</value>
-              </property>
-              <property>
-                <name>include-zero-record-flowfiles</name>
-                <value>true</value>
-              </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-            </processor>
-            <processor>
-              <id>38f03e95-db26-1287-be1a-4218f647596a</id>
-              <name>Convert to json</name>
-              <position x="1064.0" y="272.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>record-reader</name>
-                <value>7504a565-0176-1000-ffff-ffff9c0f0741</value>
-              </property>
-              <property>
-                <name>record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-              </property>
-              <property>
-                <name>include-zero-record-flowfiles</name>
-                <value>false</value>
-              </property>
-              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-            </processor>
-            <inputPort>
-              <id>a77d3c33-9575-1926-b230-9cf1fca55e7e</id>
-              <name>Input</name>
-              <position x="397.9999517774115" y="110.99999315685733" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </inputPort>
-            <outputPort>
-              <id>f1e73393-065a-1450-9ad0-fd7cdb57853f</id>
-              <name>Output</name>
-              <position x="1120.0" y="808.0" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </outputPort>
-            <connection>
-              <id>4b353d86-8a69-1ca1-bc1c-8db0049f5886</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>38f03e95-db26-1287-be1a-4218f647596a</sourceId>
-              <sourceGroupId>31b13b40-8e26-1798-9777-2272881c6031</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>b09b367b-060f-1e74-9a96-ca5ba5f88858</destinationId>
-              <destinationGroupId>31b13b40-8e26-1798-9777-2272881c6031</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>b05339e8-7bbc-1975-a9b2-4bc789dda2df</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>a77d3c33-9575-1926-b230-9cf1fca55e7e</sourceId>
-              <sourceGroupId>31b13b40-8e26-1798-9777-2272881c6031</sourceGroupId>
-              <sourceType>INPUT_PORT</sourceType>
-              <destinationId>4b1c38b7-8f98-1a81-96c9-17e3eccc45b2</destinationId>
-              <destinationGroupId>31b13b40-8e26-1798-9777-2272881c6031</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship />
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>5d6f3995-2075-11db-ba4b-1b76e1ed6473</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>b09b367b-060f-1e74-9a96-ca5ba5f88858</sourceId>
-              <sourceGroupId>31b13b40-8e26-1798-9777-2272881c6031</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>dd3b361c-4e9c-158c-ba31-61006a0b21b7</destinationId>
-              <destinationGroupId>31b13b40-8e26-1798-9777-2272881c6031</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>2a0131b7-9c0d-157d-a9ac-abd12398f2a8</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>4b1c38b7-8f98-1a81-96c9-17e3eccc45b2</sourceId>
-              <sourceGroupId>31b13b40-8e26-1798-9777-2272881c6031</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>38f03e95-db26-1287-be1a-4218f647596a</destinationId>
-              <destinationGroupId>31b13b40-8e26-1798-9777-2272881c6031</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>5a2e3db4-49d3-187d-9db9-3f0b48a2c6af</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>dd3b361c-4e9c-158c-ba31-61006a0b21b7</sourceId>
-              <sourceGroupId>31b13b40-8e26-1798-9777-2272881c6031</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>f1e73393-065a-1450-9ad0-fd7cdb57853f</destinationId>
-              <destinationGroupId>31b13b40-8e26-1798-9777-2272881c6031</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-          </processGroup>
-          <processGroup>
-            <id>f0f934a9-853a-1a19-a9cc-f878a5606bce</id>
-            <name>Kibana</name>
-            <position x="-440.0" y="864.0" />
-            <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-            <processor>
-              <id>992c3710-1c87-169c-ab17-d2597387a25e</id>
-              <name>UpdateAttribute</name>
-              <position x="360.0" y="512.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-update-attribute-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>Delete Attributes Expression</name>
-              </property>
-              <property>
-                <name>Store State</name>
-                <value>Do not store state</value>
-              </property>
-              <property>
-                <name>Stateful Variables Initial Value</name>
-              </property>
-              <property>
-                <name>canonical-value-lookup-cache-size</name>
-                <value>100</value>
-              </property>
-              <property>
-                <name>data_index</name>
-                <value>logs-kibana</value>
-              </property>
-            </processor>
-            <inputPort>
-              <id>a22b30c4-53f8-19c0-bdbb-0632e99a17d9</id>
-              <name>Input</name>
-              <position x="408.0" y="320.0" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </inputPort>
-            <outputPort>
-              <id>887c36a6-39d6-1b60-8a83-d4d10ea7e03b</id>
-              <name>Output</name>
-              <position x="408.0" y="760.0" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </outputPort>
-            <connection>
-              <id>cc403fb4-8d68-1c68-82c3-b9af4affddaa</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>a22b30c4-53f8-19c0-bdbb-0632e99a17d9</sourceId>
-              <sourceGroupId>f0f934a9-853a-1a19-a9cc-f878a5606bce</sourceGroupId>
-              <sourceType>INPUT_PORT</sourceType>
-              <destinationId>992c3710-1c87-169c-ab17-d2597387a25e</destinationId>
-              <destinationGroupId>f0f934a9-853a-1a19-a9cc-f878a5606bce</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship />
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>b9e33c29-910f-134a-8390-2970800d7fcf</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>992c3710-1c87-169c-ab17-d2597387a25e</sourceId>
-              <sourceGroupId>f0f934a9-853a-1a19-a9cc-f878a5606bce</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>887c36a6-39d6-1b60-8a83-d4d10ea7e03b</destinationId>
-              <destinationGroupId>f0f934a9-853a-1a19-a9cc-f878a5606bce</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-          </processGroup>
-          <connection>
-            <id>fbbe3f1b-5336-11c9-ffff-ffffd29d2f5c</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>84dc3511-1322-175b-8083-9729037f8edb</sourceId>
-            <sourceGroupId>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</sourceGroupId>
-            <sourceType>OUTPUT_PORT</sourceType>
-            <destinationId>349b32fe-a821-1197-0000-00003a0b6fe5</destinationId>
-            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
-            <destinationType>OUTPUT_PORT</destinationType>
-            <relationship />
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>56e5f029-0176-1000-ffff-fffff7512a3b</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>328b35e2-eb52-1f47-b84d-52941eff8a07</sourceId>
-            <sourceGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</sourceGroupId>
-            <sourceType>OUTPUT_PORT</sourceType>
-            <destinationId>349b32fe-a821-1197-0000-00003a0b6fe5</destinationId>
-            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
-            <destinationType>OUTPUT_PORT</destinationType>
-            <relationship />
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>e43535d0-23e9-15af-ffff-ffffa44d6172</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>bcbb33ba-112e-1f53-8982-d5ae9f0e701f</sourceId>
-            <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
-            <sourceType>OUTPUT_PORT</sourceType>
-            <destinationId>349b32fe-a821-1197-0000-00003a0b6fe5</destinationId>
-            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
-            <destinationType>OUTPUT_PORT</destinationType>
-            <relationship />
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>349b339b-a821-1197-0000-00002e648df6</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>a28a9e95-1003-3ea6-9af6-a334c1aec07c</sourceId>
-            <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
-            <sourceType>OUTPUT_PORT</sourceType>
-            <destinationId>349b32fe-a821-1197-0000-00003a0b6fe5</destinationId>
-            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
-            <destinationType>OUTPUT_PORT</destinationType>
-            <relationship />
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>75109cc1-0176-1000-ffff-ffff86db235d</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>f1e73393-065a-1450-9ad0-fd7cdb57853f</sourceId>
-            <sourceGroupId>31b13b40-8e26-1798-9777-2272881c6031</sourceGroupId>
-            <sourceType>OUTPUT_PORT</sourceType>
-            <destinationId>349b32fe-a821-1197-0000-00003a0b6fe5</destinationId>
-            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
-            <destinationType>OUTPUT_PORT</destinationType>
-            <relationship />
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>8d0ea3d4-0175-1000-0000-0000471b8522</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
-            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>89639d3d-0175-1000-ffff-ffffb446c257</destinationId>
-            <destinationGroupId>89636688-0175-1000-ffff-ffffb1b28a38</destinationGroupId>
-            <destinationType>INPUT_PORT</destinationType>
-            <relationship>unmatched</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>7558e6dd-0176-1000-ffff-ffffec9061a8</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
-            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>39ce3238-1ebd-1c2c-b724-01d18f147b6f</destinationId>
-            <destinationGroupId>7263390f-914c-1f6e-9451-75f908ed8816</destinationGroupId>
-            <destinationType>INPUT_PORT</destinationType>
-            <relationship>elasticsearch</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>fbbe3ee1-5336-11c9-ffff-ffffa7c97811</id>
-            <name />
-            <bendPoints>
-              <bendPoint x="-720.0" y="1016.0" />
-              <bendPoint x="-584.0" y="1152.0" />
-            </bendPoints>
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
-            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>10cb3b64-e867-1d81-bd59-eb9cf6883f24</destinationId>
-            <destinationGroupId>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</destinationGroupId>
-            <destinationType>INPUT_PORT</destinationType>
-            <relationship>keycloak</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>8d1fe825-0175-1000-ffff-fffff0505cdc</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
-            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>8d13c952-0175-1000-0000-00007e8f4cae</destinationId>
-            <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-            <destinationType>INPUT_PORT</destinationType>
-            <relationship>suricata</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>74ff448b-0176-1000-0000-00002e302e83</id>
-            <name />
-            <bendPoints>
-              <bendPoint x="-688.0" y="1576.0" />
-            </bendPoints>
-            <labelIndex>0</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
-            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>a77d3c33-9575-1926-b230-9cf1fca55e7e</destinationId>
-            <destinationGroupId>31b13b40-8e26-1798-9777-2272881c6031</destinationGroupId>
-            <destinationType>INPUT_PORT</destinationType>
-            <relationship>zookeeper</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>349b3398-a821-1197-ffff-ffffc5ae6471</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
-            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>349b3362-a821-1197-ffff-ffff91d0e6c0</destinationId>
-            <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
-            <destinationType>INPUT_PORT</destinationType>
-            <relationship>zeek</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>61c51cd8-0176-1000-ffff-ffff9247ba7c</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>887c36a6-39d6-1b60-8a83-d4d10ea7e03b</sourceId>
-            <sourceGroupId>f0f934a9-853a-1a19-a9cc-f878a5606bce</sourceGroupId>
-            <sourceType>OUTPUT_PORT</sourceType>
-            <destinationId>349b32fe-a821-1197-0000-00003a0b6fe5</destinationId>
-            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
-            <destinationType>OUTPUT_PORT</destinationType>
-            <relationship />
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>bc6e50cc-0175-1000-ffff-ffffbd982e0c</id>
-            <name />
-            <bendPoints />
-            <labelIndex>0</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
-            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>bc6c2159-0175-1000-ffff-ffffb4de4d47</destinationId>
-            <destinationGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</destinationGroupId>
-            <destinationType>INPUT_PORT</destinationType>
-            <relationship>nifi</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>56e5add3-0176-1000-ffff-ffffd667d1f6</id>
-            <name />
-            <bendPoints>
-              <bendPoint x="-584.0" y="624.0" />
-            </bendPoints>
-            <labelIndex>0</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
-            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>65a33e05-e157-1bfc-8741-adf11b3df720</destinationId>
-            <destinationGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</destinationGroupId>
-            <destinationType>INPUT_PORT</destinationType>
-            <relationship>haproxy</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>6196cd03-0176-1000-ffff-ffffd39b8c82</id>
-            <name />
-            <bendPoints>
-              <bendPoint x="-576.0" y="896.0" />
-            </bendPoints>
-            <labelIndex>0</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
-            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>a22b30c4-53f8-19c0-bdbb-0632e99a17d9</destinationId>
-            <destinationGroupId>f0f934a9-853a-1a19-a9cc-f878a5606bce</destinationGroupId>
-            <destinationType>INPUT_PORT</destinationType>
-            <relationship>kibana</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>89630460-0175-1000-0000-00006b5f18c8</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>89620b1a-0175-1000-0000-000078566f34</sourceId>
-            <sourceGroupId>895eab20-0175-1000-0000-00007e13267d</sourceGroupId>
-            <sourceType>OUTPUT_PORT</sourceType>
-            <destinationId>8962ad5a-0175-1000-ffff-ffffde6db5a6</destinationId>
-            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
-            <destinationType>PROCESSOR</destinationType>
-            <relationship />
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>349b3303-a821-1197-ffff-ffffa12b866d</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>8963b202-0175-1000-0000-000022d64ba2</sourceId>
-            <sourceGroupId>89636688-0175-1000-ffff-ffffb1b28a38</sourceGroupId>
-            <sourceType>OUTPUT_PORT</sourceType>
-            <destinationId>349b32fe-a821-1197-0000-00003a0b6fe5</destinationId>
-            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
-            <destinationType>OUTPUT_PORT</destinationType>
-            <relationship />
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>bcadaf87-0175-1000-0000-000048464ec3</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>bca9636a-0175-1000-0000-000013fa95aa</sourceId>
-            <sourceGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</sourceGroupId>
-            <sourceType>OUTPUT_PORT</sourceType>
-            <destinationId>bcb879d5-0175-1000-0000-000070879ad0</destinationId>
-            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
-            <destinationType>OUTPUT_PORT</destinationType>
-            <relationship />
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>349b3301-a821-1197-0000-0000070259c4</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>055308a4-d020-39a9-9da4-b165796ef717</sourceId>
-            <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-            <sourceType>OUTPUT_PORT</sourceType>
-            <destinationId>349b32fe-a821-1197-0000-00003a0b6fe5</destinationId>
-            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
-            <destinationType>OUTPUT_PORT</destinationType>
-            <relationship />
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>e43535c9-23e9-15af-ffff-ffffcd7d888a</id>
-            <name />
-            <bendPoints>
-              <bendPoint x="-704.0" y="1256.0" />
-              <bendPoint x="-584.0" y="1368.0" />
-            </bendPoints>
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
-            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>7f683020-779c-1bc9-85da-5bad079d5d9d</destinationId>
-            <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
-            <destinationType>INPUT_PORT</destinationType>
-            <relationship>mysql</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>7575486d-0176-1000-0000-00002542d6de</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>bbc63756-9681-13b9-8c07-20c82f62ceca</sourceId>
-            <sourceGroupId>7263390f-914c-1f6e-9451-75f908ed8816</sourceGroupId>
-            <sourceType>OUTPUT_PORT</sourceType>
-            <destinationId>bcb879d5-0175-1000-0000-000070879ad0</destinationId>
-            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
-            <destinationType>OUTPUT_PORT</destinationType>
-            <relationship />
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-        </processGroup>
-        <processGroup>
-          <id>b3d57504-7c06-37a3-b59b-8723f60fa728</id>
-          <name>Test data</name>
-          <position x="-496.0" y="552.0" />
-          <comment />
-          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-          <outputPort>
-            <id>d30dc946-251a-307c-8e88-f2262b0bb194</id>
-            <name>To enrichment</name>
-            <position x="731.0454088698874" y="433.2315817172085" />
-            <comments />
-            <scheduledState>RUNNING</scheduledState>
-          </outputPort>
-          <processGroup>
-            <id>0c83ef26-0175-1000-ffff-ffffcac37910</id>
-            <name>Suricata</name>
-            <position x="462.0553417896858" y="119.99261716112323" />
-            <comment />
-            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-            <processor>
-              <id>bb7dc9ff-2d25-3134-9617-cca3cabe9179</id>
-              <name>Alerts</name>
-              <position x="496.0" y="392.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.GenerateFlowFile</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>10 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>File Size</name>
-                <value>0B</value>
-              </property>
-              <property>
-                <name>Batch Size</name>
-                <value>1</value>
-              </property>
-              <property>
-                <name>Data Format</name>
-                <value>Text</value>
-              </property>
-              <property>
-                <name>Unique FlowFiles</name>
-                <value>false</value>
-              </property>
-              <property>
-                <name>generate-ff-custom-text</name>
-                <value>[{"stream": 0,"flow": {"bytes_toserver": 74,"bytes_toclient": 0,"start": "${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}","pkts_toserver": 1,"pkts_toclient": 0},"vlan": 665,"ip_dst_port": 54323,"in_iface": "ens1f3","payload": "","timestamp": "${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}","proto": "TCP","event_type": "alert","alert": {"category": "Not Suspicious Traffic","severity": 3,"action": "allowed","gid": 1,"signature_id": 29999991,"rev": 1,"signature": "SOC TEST1"},"payload_printable": "","ip_src_addr": "10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","ip_src_port": 43844,"ip_dst_addr": "10.0.0.${random():mod(254):plus(1)}","host":"nifi.soctools.geant.org","host_domain":"geant.org"},
-{"timestamp":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}","alert":{"action":"allowed","category":"Potentially Bad Traffic","gid":1,"metadata":{"affected_product":["Any"],"attack_target":["Client_Endpoint"],"created_at":["2019_07_26"],"deployment":["Perimeter"],"former_category":["DNS"],"signature_severity":["Minor"],"updated_at":["2019_09_28"]},"rev":3,"severity":2,"signature":"ET DNS Query for .cc TLD","signature_id":2027758},"app_proto":"dns","destination":{"ip":"10.10.10.${random():mod(254):plus(1)}","port":53},"dns":{"query":[{"id":37261,"rrname":"example.evil","rrtype":"A","tx_id":2,"type":"query"}]},"event_type":"alert","flow":{"bytes_toclient":1039,"bytes_toserver":343,"pkts_toclient":2,"pkts_toserver":3,"start":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}"},"flow_id":1889254052511234,"in_iface":"if1","payload":"kY0BAAABAAAAAAABBnN0YXRpYwdhcmR1aW5vAmNjAAABAAEAACkPoAAAgAAAAA==","payload_printable":".............example.evil.......)........","proto":"UDP","source":{"ip":"10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","port":64164},"stream":0,"tx_id":2},
-{"timestamp":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}","TLP":"AMBER","alert":{"action":"allowed","category":"Attempted Information Leak","gid":1,"metadata":{"created_at":["2014_10_15"],"former_category":["CURRENT_EVENTS"],"updated_at":["2014_10_15"]},"rev":6,"severity":2,"signature":"ET EXPLOIT SSL excessive fatal alerts (possible POODLE attack against server)","signature_id":2019418},"app_proto":"tls","destination":{"ip":"10.10.10.${random():mod(10):plus(1)}","port":37220},"event_type":"alert","flow":{"bytes_toclient":247,"bytes_toserver":298,"pkts_toclient":4,"pkts_toserver":4,"start":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}"},"flow_id":43047386649621,"payload":"FQMAAAICKA==","payload_printable":"......(","proto":"TCP","source":{"ip":"10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","port":443},"stream":1,"tls":{"ja3":{},"version":"SSLv3"},"tx_id":0}]</value>
-              </property>
-              <property>
-                <name>character-set</name>
-                <value>UTF-8</value>
-              </property>
-              <property>
-                <name>mime-type</name>
-              </property>
-              <property>
-                <name>mime.type</name>
-                <value>application/json</value>
-              </property>
-              <property>
-                <name>enrich_domain1</name>
-                <value>/host_domain</value>
-              </property>
-              <property>
-                <name>enrich_ip1</name>
-                <value>/source/ip</value>
-              </property>
-              <property>
-                <name>enrich_fqdn1</name>
-                <value>/host</value>
-              </property>
-              <property>
-                <name>data_id</name>
-                <value>suricata_alert</value>
-              </property>
-              <property>
-                <name>data_index</name>
-                <value>logs-suricata-alert</value>
-              </property>
-              <property>
-                <name>data_type</name>
-                <value>suricata</value>
-              </property>
-              <property>
-                <name>enrich_ip2</name>
-                <value>/destination/ip</value>
-              </property>
-            </processor>
-            <processor>
-              <id>f8143c19-b547-1c84-90b7-2e3c37a659e7</id>
-              <name>TLS</name>
-              <position x="496.0" y="536.0" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.GenerateFlowFile</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.12.1</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>10 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>RUNNING</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>File Size</name>
-                <value>0B</value>
-              </property>
-              <property>
-                <name>Batch Size</name>
-                <value>1</value>
-              </property>
-              <property>
-                <name>Data Format</name>
-                <value>Text</value>
-              </property>
-              <property>
-                <name>Unique FlowFiles</name>
-                <value>false</value>
-              </property>
-              <property>
-                <name>generate-ff-custom-text</name>
-                <value>[{"timestamp":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}","TLP":"AMBER","destination":{"ip":"10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","port":443},"event_type":"tls","flow_id":852792667052212,"in_iface":"if1","proto":"TCP","source":{"ip":"10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","port":53466},"tls":{"ja3":{"hash":"e5b607b5862a46cab44d7bacd582b3cd","string":"771,4867-4865-4866-52393-52392-49195-49199-49196-49200-49171-49172-156-157-47-53-10,0-23-65281-10-11-35-16-5-13-18-51-45-43-27-21,29-23-24,0"},"sni":"clients3.google.com","sni_domain":"google.com","version":"TLS 1.3"}}]</value>
-              </property>
-              <property>
-                <name>character-set</name>
-                <value>UTF-8</value>
-              </property>
-              <property>
-                <name>mime-type</name>
-              </property>
-              <property>
-                <name>mime.type</name>
-                <value>application/json</value>
-              </property>
-              <property>
-                <name>enrich_domain1</name>
-                <value>/tls/sni_domain</value>
-              </property>
-              <property>
-                <name>enrich_fqdn1</name>
-                <value>/tls/sni</value>
-              </property>
-              <property>
-                <name>enrich_ip1</name>
-                <value>/source/ip</value>
-              </property>
-              <property>
-                <name>data_id</name>
-                <value>suricata_tls</value>
-              </property>
-              <property>
-                <name>data_index</name>
-                <value>logs-suricata-tls</value>
-              </property>
-              <property>
-                <name>data_type</name>
-                <value>suricata</value>
-              </property>
-              <property>
-                <name>enrich_ip2</name>
-                <value>/destination/ip</value>
-              </property>
-            </processor>
-            <outputPort>
-              <id>0c864b15-0175-1000-0000-00001d403b1e</id>
-              <name>To enrichment</name>
-              <position x="1192.0" y="576.0" />
-              <comments />
-              <scheduledState>RUNNING</scheduledState>
-            </outputPort>
-            <connection>
-              <id>1cb3658c-0175-1000-ffff-ffff93193081</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>f8143c19-b547-1c84-90b7-2e3c37a659e7</sourceId>
-              <sourceGroupId>0c83ef26-0175-1000-ffff-ffffcac37910</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>0c864b15-0175-1000-0000-00001d403b1e</destinationId>
-              <destinationGroupId>0c83ef26-0175-1000-ffff-ffffcac37910</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>0c865d01-0175-1000-0000-0000559b408d</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>bb7dc9ff-2d25-3134-9617-cca3cabe9179</sourceId>
-              <sourceGroupId>0c83ef26-0175-1000-ffff-ffffcac37910</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>0c864b15-0175-1000-0000-00001d403b1e</destinationId>
-              <destinationGroupId>0c83ef26-0175-1000-ffff-ffffcac37910</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-          </processGroup>
-          <connection>
-            <id>0c866fa6-0175-1000-ffff-ffffe866c936</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>0c864b15-0175-1000-0000-00001d403b1e</sourceId>
-            <sourceGroupId>0c83ef26-0175-1000-ffff-ffffcac37910</sourceGroupId>
-            <sourceType>OUTPUT_PORT</sourceType>
-            <destinationId>d30dc946-251a-307c-8e88-f2262b0bb194</destinationId>
-            <destinationGroupId>b3d57504-7c06-37a3-b59b-8723f60fa728</destinationGroupId>
-            <destinationType>OUTPUT_PORT</destinationType>
-            <relationship />
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-        </processGroup>
-        <connection>
-          <id>c5fe676f-baa5-3d90-956e-fe502db0ac68</id>
-          <name />
-          <bendPoints />
-          <labelIndex>0</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>d30dc946-251a-307c-8e88-f2262b0bb194</sourceId>
-          <sourceGroupId>b3d57504-7c06-37a3-b59b-8723f60fa728</sourceGroupId>
-          <sourceType>OUTPUT_PORT</sourceType>
-          <destinationId>20b01ab3-3a8d-3573-b95d-a4a45494050f</destinationId>
-          <destinationGroupId>870d6d68-7a0a-3505-8c42-0d6064fe43f6</destinationGroupId>
-          <destinationType>OUTPUT_PORT</destinationType>
-          <relationship />
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>349b33a3-a821-1197-0000-00001ce4370e</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>349b32fe-a821-1197-0000-00003a0b6fe5</sourceId>
-          <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
-          <sourceType>OUTPUT_PORT</sourceType>
-          <destinationId>20b01ab3-3a8d-3573-b95d-a4a45494050f</destinationId>
-          <destinationGroupId>870d6d68-7a0a-3505-8c42-0d6064fe43f6</destinationGroupId>
-          <destinationType>OUTPUT_PORT</destinationType>
-          <relationship />
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>bcb8ef9d-0175-1000-0000-000017e52ef1</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>bcb879d5-0175-1000-0000-000070879ad0</sourceId>
-          <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
-          <sourceType>OUTPUT_PORT</sourceType>
-          <destinationId>21a9e277-2d80-359a-9c57-cb76d8962e6d</destinationId>
-          <destinationGroupId>870d6d68-7a0a-3505-8c42-0d6064fe43f6</destinationGroupId>
-          <destinationType>OUTPUT_PORT</destinationType>
-          <relationship />
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>27d64272-0172-1000-0000-000079e1c9c6</id>
-          <name />
-          <bendPoints>
-            <bendPoint x="88.0" y="864.0" />
-          </bendPoints>
-          <labelIndex>0</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>27d5761b-0172-1000-0000-000059275dad</sourceId>
-          <sourceGroupId>27d51d04-0172-1000-0000-00004573c6ec</sourceGroupId>
-          <sourceType>OUTPUT_PORT</sourceType>
-          <destinationId>20b01ab3-3a8d-3573-b95d-a4a45494050f</destinationId>
-          <destinationGroupId>870d6d68-7a0a-3505-8c42-0d6064fe43f6</destinationGroupId>
-          <destinationType>OUTPUT_PORT</destinationType>
-          <relationship />
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>27d65fe7-0172-1000-ffff-ffffec2db03b</id>
-          <name />
-          <bendPoints>
-            <bendPoint x="-744.0" y="856.0" />
-          </bendPoints>
-          <labelIndex>0</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>27d5dab2-0172-1000-ffff-ffffab5c50be</sourceId>
-          <sourceGroupId>27d51d04-0172-1000-0000-00004573c6ec</sourceGroupId>
-          <sourceType>OUTPUT_PORT</sourceType>
-          <destinationId>21a9e277-2d80-359a-9c57-cb76d8962e6d</destinationId>
-          <destinationGroupId>870d6d68-7a0a-3505-8c42-0d6064fe43f6</destinationGroupId>
-          <destinationType>OUTPUT_PORT</destinationType>
-          <relationship />
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <controllerService>
-          <id>94600c6c-704e-3ff8-a2a4-f2f25c71dc3b</id>
-          <name>JsonRecordSetWriter</name>
-          <comment />
-          <class>org.apache.nifi.json.JsonRecordSetWriter</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-record-serialization-services-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <enabled>true</enabled>
-          <property>
-            <name>Schema Write Strategy</name>
-            <value>no-schema</value>
-          </property>
-          <property>
-            <name>schema-cache</name>
-          </property>
-          <property>
-            <name>schema-protocol-version</name>
-            <value>1</value>
-          </property>
-          <property>
-            <name>schema-access-strategy</name>
-            <value>inherit-record-schema</value>
-          </property>
-          <property>
-            <name>schema-registry</name>
-          </property>
-          <property>
-            <name>schema-name</name>
-            <value>${schema.name}</value>
-          </property>
-          <property>
-            <name>schema-version</name>
-          </property>
-          <property>
-            <name>schema-branch</name>
-          </property>
-          <property>
-            <name>schema-text</name>
-            <value>${avro.schema}</value>
-          </property>
-          <property>
-            <name>Date Format</name>
-          </property>
-          <property>
-            <name>Time Format</name>
-          </property>
-          <property>
-            <name>Timestamp Format</name>
-          </property>
-          <property>
-            <name>Pretty Print JSON</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>suppress-nulls</name>
-            <value>suppress-missing</value>
-          </property>
-          <property>
-            <name>output-grouping</name>
-            <value>output-array</value>
-          </property>
-          <property>
-            <name>compression-format</name>
-            <value>none</value>
-          </property>
-          <property>
-            <name>compression-level</name>
-            <value>1</value>
-          </property>
-        </controllerService>
-        <controllerService>
-          <id>09b4fa02-0459-358d-939f-54fda8aea702</id>
-          <name>VolatileSchemaCache</name>
-          <comment />
-          <class>org.apache.nifi.schema.inference.VolatileSchemaCache</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-record-serialization-services-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <enabled>false</enabled>
-          <property>
-            <name>max-cache-size</name>
-            <value>100</value>
-          </property>
-        </controllerService>
-      </processGroup>
-      <processGroup>
-        <id>e9c19adc-c8a4-327e-ad24-24e71fd3474e</id>
-        <name>Data output</name>
-        <position x="829.4446253936723" y="1015.2711478364996" />
-        <comment />
-        <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-        <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-        <inputPort>
-          <id>e333b82d-7408-3747-8dd2-46473704e51b</id>
-          <name>Data input</name>
-          <position x="-688.0" y="496.0" />
-          <comments />
-          <scheduledState>RUNNING</scheduledState>
-        </inputPort>
-        <processGroup>
-          <id>7ebf304b-4978-3adc-ac31-470fb76e5029</id>
-          <name>Elastic odfe</name>
-          <position x="-759.1319580078125" y="739.6137390136719" />
-          <comment />
-          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-          <processor>
-            <id>8b48f28f-2379-3f0f-81fe-4e1b93e72666</id>
-            <name>PutElasticsearchHttpRecord</name>
-            <position x="-856.2311706542969" y="629.8186340332031" />
-            <styles />
-            <comment />
-            <class>org.apache.nifi.processors.elasticsearch.PutElasticsearchHttpRecord</class>
-            <bundle>
-              <group>org.apache.nifi</group>
-              <artifact>nifi-elasticsearch-nar</artifact>
-              <version>1.12.1</version>
-            </bundle>
-            <maxConcurrentTasks>1</maxConcurrentTasks>
-            <schedulingPeriod>0 sec</schedulingPeriod>
-            <penalizationPeriod>30 sec</penalizationPeriod>
-            <yieldPeriod>1 sec</yieldPeriod>
-            <bulletinLevel>WARN</bulletinLevel>
-            <lossTolerant>false</lossTolerant>
-            <scheduledState>RUNNING</scheduledState>
-            <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-            <executionNode>ALL</executionNode>
-            <runDurationNanos>0</runDurationNanos>
-            <property>
-              <name>elasticsearch-http-url</name>
-              <value>${elastic_url}</value>
-            </property>
-            <property>
-              <name>SSL Context Service</name>
-              <value>83443c00-b286-366a-b8e0-2f51527ab8e5</value>
-            </property>
-            <property>
-              <name>Character Set</name>
-              <value>UTF-8</value>
-            </property>
-            <property>
-              <name>Username</name>
-              <value>${elastic_username}</value>
-            </property>
-            <property>
-              <name>Password</name>
-              <value>enc{e3c6c99d66e95dfa569c6dab15f7bd5cb2142d215044a4c556aba0a2bed19ac85c899bd8837e09bb49300f0823011b45}</value>
-            </property>
-            <property>
-              <name>elasticsearch-http-connect-timeout</name>
-              <value>5 secs</value>
-            </property>
-            <property>
-              <name>elasticsearch-http-response-timeout</name>
-              <value>15 secs</value>
-            </property>
-            <property>
-              <name>proxy-configuration-service</name>
-            </property>
-            <property>
-              <name>elasticsearch-http-proxy-host</name>
-            </property>
-            <property>
-              <name>elasticsearch-http-proxy-port</name>
-            </property>
-            <property>
-              <name>proxy-username</name>
-            </property>
-            <property>
-              <name>proxy-password</name>
-            </property>
-            <property>
-              <name>put-es-record-record-reader</name>
-              <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-            </property>
-            <property>
-              <name>put-es-record-record-writer</name>
-            </property>
-            <property>
-              <name>put-es-record-log-all-errors</name>
-              <value>false</value>
-            </property>
-            <property>
-              <name>put-es-record-id-path</name>
-            </property>
-            <property>
-              <name>put-es-record-index</name>
-              <value>${data_index}-${now():format("yyyy-MM-dd")}</value>
-            </property>
-            <property>
-              <name>put-es-record-type</name>
-              <value>_doc</value>
-            </property>
-            <property>
-              <name>put-es-record-index-op</name>
-              <value>index</value>
-            </property>
-            <property>
-              <name>suppress-nulls</name>
-              <value>always-suppress</value>
-            </property>
-            <property>
-              <name>Date Format</name>
-            </property>
-            <property>
-              <name>Time Format</name>
-            </property>
-            <property>
-              <name>Timestamp Format</name>
-            </property>
-            <autoTerminatedRelationship>success</autoTerminatedRelationship>
-            <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-          </processor>
-          <inputPort>
-            <id>e7d34e01-babe-3022-ad9b-a7620e7c0f38</id>
-            <name>Data input</name>
-            <position x="-803.9990234375" y="484.5271301269531" />
-            <comments />
-            <scheduledState>RUNNING</scheduledState>
-          </inputPort>
-          <connection>
-            <id>3280c550-2117-37a6-8b5e-3bc1953fa17e</id>
-            <name />
-            <bendPoints>
-              <bendPoint x="-393.2311706542969" y="669.8186340332031" />
-              <bendPoint x="-393.2311706542969" y="719.8186340332031" />
-            </bendPoints>
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>8b48f28f-2379-3f0f-81fe-4e1b93e72666</sourceId>
-            <sourceGroupId>7ebf304b-4978-3adc-ac31-470fb76e5029</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>8b48f28f-2379-3f0f-81fe-4e1b93e72666</destinationId>
-            <destinationGroupId>7ebf304b-4978-3adc-ac31-470fb76e5029</destinationGroupId>
-            <destinationType>PROCESSOR</destinationType>
-            <relationship>retry</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>5de8f98f-ce46-3565-b0ce-7f8ecf518c53</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>e7d34e01-babe-3022-ad9b-a7620e7c0f38</sourceId>
-            <sourceGroupId>7ebf304b-4978-3adc-ac31-470fb76e5029</sourceGroupId>
-            <sourceType>INPUT_PORT</sourceType>
-            <destinationId>8b48f28f-2379-3f0f-81fe-4e1b93e72666</destinationId>
-            <destinationGroupId>7ebf304b-4978-3adc-ac31-470fb76e5029</destinationGroupId>
-            <destinationType>PROCESSOR</destinationType>
-            <relationship />
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>60 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-        </processGroup>
-        <processGroup>
-          <id>2bb2f914-0172-1000-0000-0000240c76e4</id>
-          <name>Custom output</name>
-          <position x="-160.0" y="736.0" />
-          <comment />
-          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-          <inputPort>
-            <id>2bb31aa5-0172-1000-0000-00000869fb70</id>
-            <name>Input</name>
-            <position x="-648.0" y="496.0" />
-            <comments />
-            <scheduledState>STOPPED</scheduledState>
-          </inputPort>
-        </processGroup>
-        <connection>
-          <id>9349cb73-0175-1000-ffff-ffff90dc265d</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>e333b82d-7408-3747-8dd2-46473704e51b</sourceId>
-          <sourceGroupId>e9c19adc-c8a4-327e-ad24-24e71fd3474e</sourceGroupId>
-          <sourceType>INPUT_PORT</sourceType>
-          <destinationId>2bb31aa5-0172-1000-0000-00000869fb70</destinationId>
-          <destinationGroupId>2bb2f914-0172-1000-0000-0000240c76e4</destinationGroupId>
-          <destinationType>INPUT_PORT</destinationType>
-          <relationship />
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>1 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>34772170-2400-3eb6-b9c5-c03b912a38f3</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>e333b82d-7408-3747-8dd2-46473704e51b</sourceId>
-          <sourceGroupId>e9c19adc-c8a4-327e-ad24-24e71fd3474e</sourceGroupId>
-          <sourceType>INPUT_PORT</sourceType>
-          <destinationId>e7d34e01-babe-3022-ad9b-a7620e7c0f38</destinationId>
-          <destinationGroupId>7ebf304b-4978-3adc-ac31-470fb76e5029</destinationGroupId>
-          <destinationType>INPUT_PORT</destinationType>
-          <relationship />
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-      </processGroup>
-      <connection>
-        <id>875a975e-46e1-36fa-a035-4799201abd63</id>
-        <name />
-        <bendPoints />
-        <labelIndex>1</labelIndex>
-        <zIndex>0</zIndex>
-        <sourceId>20b01ab3-3a8d-3573-b95d-a4a45494050f</sourceId>
-        <sourceGroupId>870d6d68-7a0a-3505-8c42-0d6064fe43f6</sourceGroupId>
-        <sourceType>OUTPUT_PORT</sourceType>
-        <destinationId>74abf119-faa6-3e9e-bb31-da2e79f89a38</destinationId>
-        <destinationGroupId>fcbcacd1-542d-3a15-a5aa-9c1302328954</destinationGroupId>
-        <destinationType>INPUT_PORT</destinationType>
-        <relationship />
-        <maxWorkQueueSize>10000</maxWorkQueueSize>
-        <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-        <flowFileExpiration>0 sec</flowFileExpiration>
-        <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-        <partitioningAttribute />
-        <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-      </connection>
-      <connection>
-        <id>bbc37560-0171-1000-0000-000055178fff</id>
-        <name />
-        <bendPoints />
-        <labelIndex>1</labelIndex>
-        <zIndex>0</zIndex>
-        <sourceId>c164884d-277f-31af-ac3c-18b211667bbf</sourceId>
-        <sourceGroupId>fcbcacd1-542d-3a15-a5aa-9c1302328954</sourceGroupId>
-        <sourceType>OUTPUT_PORT</sourceType>
-        <destinationId>e333b82d-7408-3747-8dd2-46473704e51b</destinationId>
-        <destinationGroupId>e9c19adc-c8a4-327e-ad24-24e71fd3474e</destinationGroupId>
-        <destinationType>INPUT_PORT</destinationType>
-        <relationship />
-        <maxWorkQueueSize>10000</maxWorkQueueSize>
-        <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-        <flowFileExpiration>0 sec</flowFileExpiration>
-        <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-        <partitioningAttribute />
-        <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-      </connection>
-      <connection>
-        <id>9cdaaee8-0e39-3dbd-a7cc-06a89056bb7c</id>
-        <name />
-        <bendPoints />
-        <labelIndex>1</labelIndex>
-        <zIndex>0</zIndex>
-        <sourceId>21a9e277-2d80-359a-9c57-cb76d8962e6d</sourceId>
-        <sourceGroupId>870d6d68-7a0a-3505-8c42-0d6064fe43f6</sourceGroupId>
-        <sourceType>OUTPUT_PORT</sourceType>
-        <destinationId>e333b82d-7408-3747-8dd2-46473704e51b</destinationId>
-        <destinationGroupId>e9c19adc-c8a4-327e-ad24-24e71fd3474e</destinationGroupId>
-        <destinationType>INPUT_PORT</destinationType>
-        <relationship />
-        <maxWorkQueueSize>10000</maxWorkQueueSize>
-        <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-        <flowFileExpiration>0 sec</flowFileExpiration>
-        <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-        <partitioningAttribute />
-        <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-      </connection>
-      <controllerService>
-        <id>b7794eb3-9227-36dd-8751-e87d1c2321ee</id>
-        <name>Misp DistributedMapCacheClientService</name>
-        <comment />
-        <class>org.apache.nifi.distributed.cache.client.DistributedMapCacheClientService</class>
-        <bundle>
-          <group>org.apache.nifi</group>
-          <artifact>nifi-distributed-cache-services-nar</artifact>
-          <version>1.12.1</version>
-        </bundle>
-        <enabled>true</enabled>
-        <property>
-          <name>Server Hostname</name>
-          <value>localhost</value>
-        </property>
-        <property>
-          <name>Server Port</name>
-          <value>6000</value>
-        </property>
-        <property>
-          <name>SSL Context Service</name>
-        </property>
-        <property>
-          <name>Communications Timeout</name>
-          <value>30 secs</value>
-        </property>
-      </controllerService>
-    </processGroup>
-    <processGroup>
-      <id>72eb009e-0c2f-302d-bc6c-2d02c29c25a9</id>
-      <name>Enrichment data</name>
-      <position x="1720.0" y="248.0" />
-      <comment />
-      <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-      <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-      <processGroup>
-        <id>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</id>
-        <name>Top domains</name>
-        <position x="970.3727876614566" y="673.4981494769316" />
-        <comment>Downloads CSV files containing top domains from Alexa and Umbrella</comment>
-        <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-        <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-        <processor>
-          <id>857cd537-4aeb-31fb-9740-0513e6cc46fe</id>
-          <name>Unzip CSV files</name>
-          <position x="-297.30227379373514" y="212.70767899178307" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.UnpackContent</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Packaging Format</name>
-            <value>zip</value>
-          </property>
-          <property>
-            <name>File Filter</name>
-            <value>.*</value>
-          </property>
-          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-          <autoTerminatedRelationship>original</autoTerminatedRelationship>
-        </processor>
-        <processor>
-          <id>937de5fc-7d4a-35af-a071-46f04d6ea4fa</id>
-          <name>Save to disk</name>
-          <position x="326.18698401876486" y="392.4228279175642" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.PutFile</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Directory</name>
-            <value>/opt/nifi/nifi-current/conf/</value>
-          </property>
-          <property>
-            <name>Conflict Resolution Strategy</name>
-            <value>replace</value>
-          </property>
-          <property>
-            <name>Create Missing Directories</name>
-            <value>true</value>
-          </property>
-          <property>
-            <name>Maximum File Count</name>
-          </property>
-          <property>
-            <name>Last Modified Time</name>
-          </property>
-          <property>
-            <name>Permissions</name>
-          </property>
-          <property>
-            <name>Owner</name>
-          </property>
-          <property>
-            <name>Group</name>
-          </property>
-          <autoTerminatedRelationship>success</autoTerminatedRelationship>
-          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-        </processor>
-        <processor>
-          <id>3c4d65a9-aa39-380f-b16b-2aea028a019b</id>
-          <name>Download Alexa CSV file</name>
-          <position x="197.54468055196799" y="-60.57735518790443" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.GetHTTP</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>1 day</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>URL</name>
-            <value>http://s3.amazonaws.com/alexa-static/top-1m.csv.zip</value>
-          </property>
-          <property>
-            <name>Filename</name>
-            <value>alexa-top-1m.csv.zip</value>
-          </property>
-          <property>
-            <name>SSL Context Service</name>
-          </property>
-          <property>
-            <name>Username</name>
-          </property>
-          <property>
-            <name>Password</name>
-          </property>
-          <property>
-            <name>Connection Timeout</name>
-            <value>30 sec</value>
-          </property>
-          <property>
-            <name>Data Timeout</name>
-            <value>10 min</value>
-          </property>
-          <property>
-            <name>User Agent</name>
-          </property>
-          <property>
-            <name>Accept Content-Type</name>
-          </property>
-          <property>
-            <name>Follow Redirects</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>redirect-cookie-policy</name>
-            <value>default</value>
-          </property>
-          <property>
-            <name>proxy-configuration-service</name>
-          </property>
-          <property>
-            <name>Proxy Host</name>
-          </property>
-          <property>
-            <name>Proxy Port</name>
-          </property>
-          <property>
-            <name>filename</name>
-            <value>alexa-top-1m.csv</value>
-          </property>
-        </processor>
-        <processor>
-          <id>9d3d9047-fb85-3ae6-a815-0e19cc860c60</id>
-          <name>Download Umbrella CSV file</name>
-          <position x="-297.30227379373514" y="-61.444390100013806" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.GetHTTP</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>1 day</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>URL</name>
-            <value>http://s3-us-west-1.amazonaws.com/umbrella-static/top-1m.csv.zip</value>
-          </property>
-          <property>
-            <name>Filename</name>
-            <value>umbrella-top-1m.csv.zip</value>
-          </property>
-          <property>
-            <name>SSL Context Service</name>
-          </property>
-          <property>
-            <name>Username</name>
-          </property>
-          <property>
-            <name>Password</name>
-          </property>
-          <property>
-            <name>Connection Timeout</name>
-            <value>30 sec</value>
-          </property>
-          <property>
-            <name>Data Timeout</name>
-            <value>10 min</value>
-          </property>
-          <property>
-            <name>User Agent</name>
-          </property>
-          <property>
-            <name>Accept Content-Type</name>
-          </property>
-          <property>
-            <name>Follow Redirects</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>redirect-cookie-policy</name>
-            <value>default</value>
-          </property>
-          <property>
-            <name>proxy-configuration-service</name>
-          </property>
-          <property>
-            <name>Proxy Host</name>
-          </property>
-          <property>
-            <name>Proxy Port</name>
-          </property>
-          <property>
-            <name>filename</name>
-            <value>umbrella-top-1m.csv</value>
-          </property>
-        </processor>
-        <processor>
-          <id>9009320d-fb62-357e-ad94-bef8e95ea142</id>
-          <name>Set filename</name>
-          <position x="-294.78310875467264" y="388.04684866613775" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-update-attribute-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Delete Attributes Expression</name>
-          </property>
-          <property>
-            <name>Store State</name>
-            <value>Do not store state</value>
-          </property>
-          <property>
-            <name>Stateful Variables Initial Value</name>
-          </property>
-          <property>
-            <name>canonical-value-lookup-cache-size</name>
-            <value>100</value>
-          </property>
-          <property>
-            <name>filename</name>
-            <value>${segment.original.filename}</value>
-          </property>
-        </processor>
-        <processor>
-          <id>86fdf574-d86b-3f35-9aa0-3ada1867aff8</id>
-          <name>Add headers</name>
-          <position x="325.04416175313986" y="201.70740433357992" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.ReplaceText</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Regular Expression</name>
-            <value>(?s)(^.*$)</value>
-          </property>
-          <property>
-            <name>Replacement Value</name>
-            <value>index,domain
-</value>
-          </property>
-          <property>
-            <name>Character Set</name>
-            <value>UTF-8</value>
-          </property>
-          <property>
-            <name>Maximum Buffer Size</name>
-            <value>1 MB</value>
-          </property>
-          <property>
-            <name>Replacement Strategy</name>
-            <value>Prepend</value>
-          </property>
-          <property>
-            <name>Evaluation Mode</name>
-            <value>Entire text</value>
-          </property>
-          <property>
-            <name>Line-by-Line Evaluation Mode</name>
-            <value>All</value>
-          </property>
-          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-        </processor>
-        <connection>
-          <id>652026e5-0acd-3009-b45a-f68f3e37bef9</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>9d3d9047-fb85-3ae6-a815-0e19cc860c60</sourceId>
-          <sourceGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>857cd537-4aeb-31fb-9740-0513e6cc46fe</destinationId>
-          <destinationGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>bfe27587-bb06-388c-a59a-8aad9830cda1</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>3c4d65a9-aa39-380f-b16b-2aea028a019b</sourceId>
-          <sourceGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>857cd537-4aeb-31fb-9740-0513e6cc46fe</destinationId>
-          <destinationGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>7af7ff86-6b85-3fd1-bbc4-efa4e04593d9</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>857cd537-4aeb-31fb-9740-0513e6cc46fe</sourceId>
-          <sourceGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>86fdf574-d86b-3f35-9aa0-3ada1867aff8</destinationId>
-          <destinationGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>e2d60b76-d9bf-380f-9cfd-eeda1422ad73</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>86fdf574-d86b-3f35-9aa0-3ada1867aff8</sourceId>
-          <sourceGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>9009320d-fb62-357e-ad94-bef8e95ea142</destinationId>
-          <destinationGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>58b9bce4-6f7a-369c-a93f-dc23e252c670</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>9009320d-fb62-357e-ad94-bef8e95ea142</sourceId>
-          <sourceGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>937de5fc-7d4a-35af-a071-46f04d6ea4fa</destinationId>
-          <destinationGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-      </processGroup>
-      <processGroup>
-        <id>b997e46b-7905-33e8-8bbc-f4d51b0cc735</id>
-        <name>Tor Nodes</name>
-        <position x="968.7335178760902" y="456.9915202898361" />
-        <comment>Downloads a CSV file of IP addresses used as Tor nodes</comment>
-        <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-        <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-        <processor>
-          <id>ad366a87-89d6-38ff-affe-a1f3575faa8a</id>
-          <name>Save to disk</name>
-          <position x="-328.58331298828125" y="-153.10000610351562" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.PutFile</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Directory</name>
-            <value>/opt/nifi/nifi-current/conf/</value>
-          </property>
-          <property>
-            <name>Conflict Resolution Strategy</name>
-            <value>replace</value>
-          </property>
-          <property>
-            <name>Create Missing Directories</name>
-            <value>true</value>
-          </property>
-          <property>
-            <name>Maximum File Count</name>
-          </property>
-          <property>
-            <name>Last Modified Time</name>
-          </property>
-          <property>
-            <name>Permissions</name>
-          </property>
-          <property>
-            <name>Owner</name>
-          </property>
-          <property>
-            <name>Group</name>
-          </property>
-          <autoTerminatedRelationship>success</autoTerminatedRelationship>
-        </processor>
-        <processor>
-          <id>34f52e1e-164e-34e4-b5fc-e5d16f773b19</id>
-          <name>Get CSV file with Tor nodes</name>
-          <position x="-323.0833282470703" y="-647.6000061035156" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.GetHTTP</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>1 day</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>URL</name>
-            <value>https://check.torproject.org/torbulkexitlist</value>
-          </property>
-          <property>
-            <name>Filename</name>
-            <value>tornodes.csv</value>
-          </property>
-          <property>
-            <name>SSL Context Service</name>
-            <value>8972e39a-0176-1000-ffff-ffffb8dd96f4</value>
-          </property>
-          <property>
-            <name>Username</name>
-          </property>
-          <property>
-            <name>Password</name>
-          </property>
-          <property>
-            <name>Connection Timeout</name>
-            <value>30 sec</value>
-          </property>
-          <property>
-            <name>Data Timeout</name>
-            <value>30 sec</value>
-          </property>
-          <property>
-            <name>User Agent</name>
-          </property>
-          <property>
-            <name>Accept Content-Type</name>
-          </property>
-          <property>
-            <name>Follow Redirects</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>redirect-cookie-policy</name>
-            <value>default</value>
-          </property>
-          <property>
-            <name>proxy-configuration-service</name>
-          </property>
-          <property>
-            <name>Proxy Host</name>
-          </property>
-          <property>
-            <name>Proxy Port</name>
-          </property>
-        </processor>
-        <processor>
-          <id>8c69ccb6-616f-3ce2-b0cd-57276cae3749</id>
-          <name>Add header</name>
-          <position x="-325.5833282470703" y="-410.1000061035156" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.ReplaceText</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Regular Expression</name>
-            <value>(?s)(^.*$)</value>
-          </property>
-          <property>
-            <name>Replacement Value</name>
-            <value>ip_addr
-</value>
-          </property>
-          <property>
-            <name>Character Set</name>
-            <value>UTF-8</value>
-          </property>
-          <property>
-            <name>Maximum Buffer Size</name>
-            <value>1 MB</value>
-          </property>
-          <property>
-            <name>Replacement Strategy</name>
-            <value>Prepend</value>
-          </property>
-          <property>
-            <name>Evaluation Mode</name>
-            <value>Entire text</value>
-          </property>
-          <property>
-            <name>Line-by-Line Evaluation Mode</name>
-            <value>All</value>
-          </property>
-        </processor>
-        <connection>
-          <id>33cb6d60-d003-3954-b9d0-f51ac40ed983</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>8c69ccb6-616f-3ce2-b0cd-57276cae3749</sourceId>
-          <sourceGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>ad366a87-89d6-38ff-affe-a1f3575faa8a</destinationId>
-          <destinationGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>cd13f619-bb19-37c2-b8fe-c962edfbf213</id>
-          <name />
-          <bendPoints>
-            <bendPoint x="137.4166717529297" y="-370.1000061035156" />
-            <bendPoint x="137.4166717529297" y="-320.1000061035156" />
-          </bendPoints>
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>8c69ccb6-616f-3ce2-b0cd-57276cae3749</sourceId>
-          <sourceGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>8c69ccb6-616f-3ce2-b0cd-57276cae3749</destinationId>
-          <destinationGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>failure</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>3941ee86-e740-3b8f-951a-c7da71e78fbe</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>34f52e1e-164e-34e4-b5fc-e5d16f773b19</sourceId>
-          <sourceGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>8c69ccb6-616f-3ce2-b0cd-57276cae3749</destinationId>
-          <destinationGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>19de0f5c-c244-3e7d-b711-ee165b493ea2</id>
-          <name />
-          <bendPoints>
-            <bendPoint x="134.41668701171875" y="-113.10000610351562" />
-            <bendPoint x="134.41668701171875" y="-63.100006103515625" />
-          </bendPoints>
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>ad366a87-89d6-38ff-affe-a1f3575faa8a</sourceId>
-          <sourceGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>ad366a87-89d6-38ff-affe-a1f3575faa8a</destinationId>
-          <destinationGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>failure</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>8130df3d-dc8c-32c2-975d-9c94438cac05</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>34f52e1e-164e-34e4-b5fc-e5d16f773b19</sourceId>
-          <sourceGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>8c69ccb6-616f-3ce2-b0cd-57276cae3749</destinationId>
-          <destinationGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-      </processGroup>
-      <processGroup>
-        <id>194a653f-0c92-3704-8bd4-ffa079643515</id>
-        <name>Misp</name>
-        <position x="548.9658647769079" y="453.4916238226681" />
-        <comment>Polls Misp database once every minute and places new IOCs in a NiFi memcache.</comment>
-        <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-        <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-        <processor>
-          <id>283bea4b-2774-3f2d-aabe-cf96989e9997</id>
-          <name>Set timestamp as FlowFile content</name>
-          <position x="506.47715414708637" y="587.6551663734834" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.ReplaceText</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Regular Expression</name>
-            <value>(?s)(^.*$)</value>
-          </property>
-          <property>
-            <name>Replacement Value</name>
-            <value>${timestamp}</value>
-          </property>
-          <property>
-            <name>Character Set</name>
-            <value>UTF-8</value>
-          </property>
-          <property>
-            <name>Maximum Buffer Size</name>
-            <value>1 MB</value>
-          </property>
-          <property>
-            <name>Replacement Strategy</name>
-            <value>Always Replace</value>
-          </property>
-          <property>
-            <name>Evaluation Mode</name>
-            <value>Entire text</value>
-          </property>
-          <property>
-            <name>Line-by-Line Evaluation Mode</name>
-            <value>All</value>
-          </property>
-          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-        </processor>
-        <processor>
-          <id>e1e2caef-8178-3c91-b3ca-99f05f619064</id>
-          <name>Get timestamp of last successful poll</name>
-          <position x="-168.51082396716333" y="-293.9956980367642" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.FetchDistributedMapCache</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Cache Entry Identifier</name>
-            <value>${lookup_id}</value>
-          </property>
-          <property>
-            <name>Distributed Cache Service</name>
-            <value>ad4d31bf-b1fb-35e0-b634-b969b200f3a6</value>
-          </property>
-          <property>
-            <name>Put Cache Value In Attribute</name>
-            <value>last_run</value>
-          </property>
-          <property>
-            <name>Max Length To Put In Attribute</name>
-            <value>256</value>
-          </property>
-          <property>
-            <name>Character Set</name>
-            <value>UTF-8</value>
-          </property>
-        </processor>
-        <processor>
-          <id>192802be-4416-3abc-ba03-90934f2df860</id>
-          <name>Get events</name>
-          <position x="-151.66592451726592" y="335.6012170464188" />
-          <styles />
-          <comment>Normally the query will have a filter at the end "/last:${last}" so that only new events are pulled. This has been removed from this demo.</comment>
-          <class>org.apache.nifi.processors.standard.InvokeHTTP</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>HTTP Method</name>
-            <value>GET</value>
-          </property>
-          <property>
-            <name>Remote URL</name>
-            <value>${misp_url}/attributes/restSearch/returnFormat:json/type:ip-src||ip-dst/last:${last}</value>
-          </property>
-          <property>
-            <name>SSL Context Service</name>
-            <value>83443c00-b286-366a-b8e0-2f51527ab8e5</value>
-          </property>
-          <property>
-            <name>Connection Timeout</name>
-            <value>5 secs</value>
-          </property>
-          <property>
-            <name>Read Timeout</name>
-            <value>15 secs</value>
-          </property>
-          <property>
-            <name>idle-timeout</name>
-            <value>5 mins</value>
-          </property>
-          <property>
-            <name>max-idle-connections</name>
-            <value>5</value>
-          </property>
-          <property>
-            <name>Include Date Header</name>
-            <value>True</value>
-          </property>
-          <property>
-            <name>Follow Redirects</name>
-            <value>True</value>
-          </property>
-          <property>
-            <name>Attributes to Send</name>
-          </property>
-          <property>
-            <name>Useragent</name>
-          </property>
-          <property>
-            <name>Basic Authentication Username</name>
-          </property>
-          <property>
-            <name>Basic Authentication Password</name>
-          </property>
-          <property>
-            <name>proxy-configuration-service</name>
-          </property>
-          <property>
-            <name>Proxy Host</name>
-          </property>
-          <property>
-            <name>Proxy Port</name>
-          </property>
-          <property>
-            <name>Proxy Type</name>
-            <value>http</value>
-          </property>
-          <property>
-            <name>invokehttp-proxy-user</name>
-          </property>
-          <property>
-            <name>invokehttp-proxy-password</name>
-          </property>
-          <property>
-            <name>Put Response Body In Attribute</name>
-          </property>
-          <property>
-            <name>Max Length To Put In Attribute</name>
-            <value>256</value>
-          </property>
-          <property>
-            <name>Digest Authentication</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>Always Output Response</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>Add Response Headers to Request</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>Content-Type</name>
-            <value>${mime.type}</value>
-          </property>
-          <property>
-            <name>send-message-body</name>
-            <value>true</value>
-          </property>
-          <property>
-            <name>Use Chunked Encoding</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>Penalize on "No Retry"</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>use-etag</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>etag-max-cache-size</name>
-            <value>10MB</value>
-          </property>
-          <property>
-            <name>ignore-response-content</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>form-body-form-name</name>
-          </property>
-          <property>
-            <name>set-form-filename</name>
-            <value>true</value>
-          </property>
-          <property>
-            <name>Authorization</name>
-            <value>${misp_token}</value>
-          </property>
-          <autoTerminatedRelationship>Original</autoTerminatedRelationship>
-          <autoTerminatedRelationship>Failure</autoTerminatedRelationship>
-          <autoTerminatedRelationship>Retry</autoTerminatedRelationship>
-          <autoTerminatedRelationship>No Retry</autoTerminatedRelationship>
-        </processor>
-        <processor>
-          <id>671c4e42-604f-389d-9cee-27431ca36448</id>
-          <name>Store timestamp</name>
-          <position x="504.4604101497308" y="824.0677052542044" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.PutDistributedMapCache</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Cache Entry Identifier</name>
-            <value>${lookup_id}</value>
-          </property>
-          <property>
-            <name>Distributed Cache Service</name>
-            <value>ad4d31bf-b1fb-35e0-b634-b969b200f3a6</value>
-          </property>
-          <property>
-            <name>Cache update strategy</name>
-            <value>replace</value>
-          </property>
-          <property>
-            <name>Max cache entry size</name>
-            <value>1 MB</value>
-          </property>
-          <autoTerminatedRelationship>success</autoTerminatedRelationship>
-          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-        </processor>
-        <processor>
-          <id>c7cc4e24-7d9a-3a17-8af1-ca655f46595f</id>
-          <name>Update cache</name>
-          <position x="-775.4735301448745" y="930.3624699197178" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.PutDistributedMapCache</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Cache Entry Identifier</name>
-            <value>${misp_ip}</value>
-          </property>
-          <property>
-            <name>Distributed Cache Service</name>
-            <value>ad4d31bf-b1fb-35e0-b634-b969b200f3a6</value>
-          </property>
-          <property>
-            <name>Cache update strategy</name>
-            <value>replace</value>
-          </property>
-          <property>
-            <name>Max cache entry size</name>
-            <value>1 MB</value>
-          </property>
-          <autoTerminatedRelationship>success</autoTerminatedRelationship>
-          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-        </processor>
-        <processor>
-          <id>81ec71a0-719a-3205-9360-6a535072f7c6</id>
-          <name>Set attributes to get all events for the last x days</name>
-          <position x="-378.1916613806792" y="-12.197472102501479" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-update-attribute-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Delete Attributes Expression</name>
-          </property>
-          <property>
-            <name>Store State</name>
-            <value>Do not store state</value>
-          </property>
-          <property>
-            <name>Stateful Variables Initial Value</name>
-          </property>
-          <property>
-            <name>canonical-value-lookup-cache-size</name>
-            <value>100</value>
-          </property>
-          <property>
-            <name>last</name>
-            <value>${misp_first_interval}</value>
-          </property>
-          <property>
-            <name>timestamp</name>
-            <value>${now():toNumber()}</value>
-          </property>
-        </processor>
-        <processor>
-          <id>6d78b76c-5463-3610-b8c8-4796fa09c59b</id>
-          <name>Periodic polling</name>
-          <position x="-171.36520083798905" y="-518.6967632987289" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.GenerateFlowFile</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>1 minute</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>File Size</name>
-            <value>0B</value>
-          </property>
-          <property>
-            <name>Batch Size</name>
-            <value>1</value>
-          </property>
-          <property>
-            <name>Data Format</name>
-            <value>Text</value>
-          </property>
-          <property>
-            <name>Unique FlowFiles</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>generate-ff-custom-text</name>
-          </property>
-          <property>
-            <name>character-set</name>
-            <value>UTF-8</value>
-          </property>
-          <property>
-            <name>mime-type</name>
-          </property>
-          <property>
-            <name>lookup_id</name>
-            <value>ip</value>
-          </property>
-        </processor>
-        <processor>
-          <id>dbc236e3-8c68-3c6b-b1e9-d1fc8f57327d</id>
-          <name>Extract IP address</name>
-          <position x="-156.69110558236184" y="543.7042207790005" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.EvaluateJsonPath</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Destination</name>
-            <value>flowfile-attribute</value>
-          </property>
-          <property>
-            <name>Return Type</name>
-            <value>auto-detect</value>
-          </property>
-          <property>
-            <name>Path Not Found Behavior</name>
-            <value>ignore</value>
-          </property>
-          <property>
-            <name>Null Value Representation</name>
-            <value>empty string</value>
-          </property>
-          <property>
-            <name>misp_ip</name>
-            <value>$.value</value>
-          </property>
-          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-          <autoTerminatedRelationship>unmatched</autoTerminatedRelationship>
-        </processor>
-        <processor>
-          <id>74d66e0e-0b65-36d2-96f1-4b836d2c4222</id>
-          <name>Set attributes to get new events since last poll</name>
-          <position x="81.93877074822706" y="-13.058372981407729" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-update-attribute-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Delete Attributes Expression</name>
-          </property>
-          <property>
-            <name>Store State</name>
-            <value>Do not store state</value>
-          </property>
-          <property>
-            <name>Stateful Variables Initial Value</name>
-          </property>
-          <property>
-            <name>canonical-value-lookup-cache-size</name>
-            <value>100</value>
-          </property>
-          <property>
-            <name>last</name>
-            <value>${now():toNumber():minus(${last_run}):divide(60000):plus(1):append("m")}</value>
-          </property>
-          <property>
-            <name>timestamp</name>
-            <value>${now():toNumber()}</value>
-          </property>
-        </processor>
-        <processor>
-          <id>ba1b7e7e-a03c-3ace-9182-7f43569537e2</id>
-          <name>Create one FlowFile for each IP address</name>
-          <position x="-789.5267777615984" y="546.1428879861119" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.SplitJson</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>JsonPath Expression</name>
-            <value>$.response.Attribute</value>
-          </property>
-          <property>
-            <name>Null Value Representation</name>
-            <value>empty string</value>
-          </property>
-          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-          <autoTerminatedRelationship>original</autoTerminatedRelationship>
-        </processor>
-        <processor>
-          <id>d850fc04-df9a-36b7-b53f-8b397a1be69a</id>
-          <name>Extract Misp event ID and store it to FlowFile</name>
-          <position x="-783.5607955237681" y="719.2550630641567" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.EvaluateJsonPath</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Destination</name>
-            <value>flowfile-content</value>
-          </property>
-          <property>
-            <name>Return Type</name>
-            <value>auto-detect</value>
-          </property>
-          <property>
-            <name>Path Not Found Behavior</name>
-            <value>ignore</value>
-          </property>
-          <property>
-            <name>Null Value Representation</name>
-            <value>empty string</value>
-          </property>
-          <property>
-            <name>event_id</name>
-            <value>$.event_id</value>
-          </property>
-          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
-          <autoTerminatedRelationship>unmatched</autoTerminatedRelationship>
-        </processor>
-        <connection>
-          <id>39f7b787-0995-3721-8d50-700838b7a256</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>6d78b76c-5463-3610-b8c8-4796fa09c59b</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>e1e2caef-8178-3c91-b3ca-99f05f619064</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>adc3f55b-8d9a-33d0-a7af-0d795fa234ba</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>d850fc04-df9a-36b7-b53f-8b397a1be69a</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>c7cc4e24-7d9a-3a17-8af1-ca655f46595f</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>matched</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>4a797ab8-fb0e-3c9a-b397-b3394eca1ce4</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>ba1b7e7e-a03c-3ace-9182-7f43569537e2</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>dbc236e3-8c68-3c6b-b1e9-d1fc8f57327d</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>split</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>4707ebf2-4b30-3e97-8abc-6ca8a9d168fd</id>
-          <name>Consecutive poll</name>
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>e1e2caef-8178-3c91-b3ca-99f05f619064</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>74d66e0e-0b65-36d2-96f1-4b836d2c4222</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>5e84f4ae-bf61-37d8-b115-0af74b89a6aa</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>dbc236e3-8c68-3c6b-b1e9-d1fc8f57327d</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>d850fc04-df9a-36b7-b53f-8b397a1be69a</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>matched</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>58cc41df-404e-309b-9df6-2ea67e1fe2b7</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>283bea4b-2774-3f2d-aabe-cf96989e9997</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>671c4e42-604f-389d-9cee-27431ca36448</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>a9d8c7a2-6b55-3684-9954-92934d5a69e8</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>74d66e0e-0b65-36d2-96f1-4b836d2c4222</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>192802be-4416-3abc-ba03-90934f2df860</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>c022992b-534a-317a-943c-86142ee1cf81</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>81ec71a0-719a-3205-9360-6a535072f7c6</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>192802be-4416-3abc-ba03-90934f2df860</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>424c08f5-1ad1-3a0a-923c-c3fd988f7d2e</id>
-          <name>Update timestamp</name>
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>192802be-4416-3abc-ba03-90934f2df860</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>283bea4b-2774-3f2d-aabe-cf96989e9997</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>Response</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>70fec2c7-4dd5-3dd1-92fa-59c3027bffb4</id>
-          <name />
-          <bendPoints>
-            <bendPoint x="294.48917603283667" y="-253.99569803676422" />
-            <bendPoint x="294.48917603283667" y="-203.99569803676422" />
-          </bendPoints>
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>e1e2caef-8178-3c91-b3ca-99f05f619064</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>e1e2caef-8178-3c91-b3ca-99f05f619064</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>failure</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>d19116d2-0da0-3f86-8fd3-3285a839648e</id>
-          <name>First poll</name>
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>e1e2caef-8178-3c91-b3ca-99f05f619064</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>81ec71a0-719a-3205-9360-6a535072f7c6</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>not-found</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>d375a69b-2139-3d9a-b6e3-48e0f69ec589</id>
-          <name>Update cache with new events</name>
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>192802be-4416-3abc-ba03-90934f2df860</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>ba1b7e7e-a03c-3ace-9182-7f43569537e2</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>Response</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-      </processGroup>
-      <processGroup>
-        <id>c4a200ea-5317-332a-97a4-ff76f951ecde</id>
-        <name>GeoIP</name>
-        <position x="556.427978515625" y="673.0274658203125" />
-        <comment />
-        <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
-        <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
-        <processor>
-          <id>6292665b-f188-3551-b366-95476b5ac36f</id>
-          <name>Save to disk</name>
-          <position x="-357.78594755036767" y="656.471512008819" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.PutFile</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Directory</name>
-            <value>/opt/nifi/nifi-current/conf/</value>
-          </property>
-          <property>
-            <name>Conflict Resolution Strategy</name>
-            <value>replace</value>
-          </property>
-          <property>
-            <name>Create Missing Directories</name>
-            <value>true</value>
-          </property>
-          <property>
-            <name>Maximum File Count</name>
-          </property>
-          <property>
-            <name>Last Modified Time</name>
-          </property>
-          <property>
-            <name>Permissions</name>
-          </property>
-          <property>
-            <name>Owner</name>
-          </property>
-          <property>
-            <name>Group</name>
-          </property>
-          <autoTerminatedRelationship>success</autoTerminatedRelationship>
-        </processor>
-        <processor>
-          <id>c8b26516-0170-1000-ffff-fffffa357a77</id>
-          <name>InvokeHTTP</name>
-          <position x="-354.33263208075834" y="-1.6134650355261897" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.InvokeHTTP</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>HTTP Method</name>
-            <value>GET</value>
-          </property>
-          <property>
-            <name>Remote URL</name>
-            <value>https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&amp;license_key=${maxmind_key}&amp;suffix=tar.gz</value>
-          </property>
-          <property>
-            <name>SSL Context Service</name>
-            <value>83443c00-b286-366a-b8e0-2f51527ab8e5</value>
-          </property>
-          <property>
-            <name>Connection Timeout</name>
-            <value>5 secs</value>
-          </property>
-          <property>
-            <name>Read Timeout</name>
-            <value>15 secs</value>
-          </property>
-          <property>
-            <name>idle-timeout</name>
-            <value>5 mins</value>
-          </property>
-          <property>
-            <name>max-idle-connections</name>
-            <value>5</value>
-          </property>
-          <property>
-            <name>Include Date Header</name>
-            <value>True</value>
-          </property>
-          <property>
-            <name>Follow Redirects</name>
-            <value>True</value>
-          </property>
-          <property>
-            <name>Attributes to Send</name>
-          </property>
-          <property>
-            <name>Useragent</name>
-          </property>
-          <property>
-            <name>Basic Authentication Username</name>
-          </property>
-          <property>
-            <name>Basic Authentication Password</name>
-          </property>
-          <property>
-            <name>proxy-configuration-service</name>
-          </property>
-          <property>
-            <name>Proxy Host</name>
-          </property>
-          <property>
-            <name>Proxy Port</name>
-          </property>
-          <property>
-            <name>Proxy Type</name>
-            <value>http</value>
-          </property>
-          <property>
-            <name>invokehttp-proxy-user</name>
-          </property>
-          <property>
-            <name>invokehttp-proxy-password</name>
-          </property>
-          <property>
-            <name>Put Response Body In Attribute</name>
-          </property>
-          <property>
-            <name>Max Length To Put In Attribute</name>
-            <value>256</value>
-          </property>
-          <property>
-            <name>Digest Authentication</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>Always Output Response</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>Add Response Headers to Request</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>Content-Type</name>
-            <value>${mime.type}</value>
-          </property>
-          <property>
-            <name>send-message-body</name>
-            <value>true</value>
-          </property>
-          <property>
-            <name>Use Chunked Encoding</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>Penalize on "No Retry"</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>use-etag</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>etag-max-cache-size</name>
-            <value>10MB</value>
-          </property>
-          <property>
-            <name>ignore-response-content</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>form-body-form-name</name>
-          </property>
-          <property>
-            <name>set-form-filename</name>
-            <value>true</value>
-          </property>
-          <autoTerminatedRelationship>Original</autoTerminatedRelationship>
-        </processor>
-        <processor>
-          <id>b99eab15-7e38-33fa-87d1-41d772306d9c</id>
-          <name>Uncompress</name>
-          <position x="-359.13545011384423" y="239.87525101326742" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.CompressContent</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Mode</name>
-            <value>decompress</value>
-          </property>
-          <property>
-            <name>Compression Format</name>
-            <value>use mime.type attribute</value>
-          </property>
-          <property>
-            <name>Compression Level</name>
-            <value>1</value>
-          </property>
-          <property>
-            <name>Update Filename</name>
-            <value>false</value>
-          </property>
-        </processor>
-        <processor>
-          <id>c8b20333-0170-1000-0000-000010760524</id>
-          <name>RouteOnAttribute</name>
-          <position x="-353.2358571852152" y="-223.16639543708658" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.RouteOnAttribute</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Routing Strategy</name>
-            <value>Route to Property name</value>
-          </property>
-          <property>
-            <name>maxmind_key</name>
-            <value>${maxmind_key:length():gt(1)}</value>
-          </property>
-          <autoTerminatedRelationship>unmatched</autoTerminatedRelationship>
-        </processor>
-        <processor>
-          <id>aad91df7-8e80-3598-a3eb-9b000045b843</id>
-          <name>UnpackContent</name>
-          <position x="-358.13545011384423" y="448.82544805040084" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.UnpackContent</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>0 sec</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>Packaging Format</name>
-            <value>tar</value>
-          </property>
-          <property>
-            <name>File Filter</name>
-            <value>GeoLite2-City.mmdb</value>
-          </property>
-          <autoTerminatedRelationship>original</autoTerminatedRelationship>
-        </processor>
-        <processor>
-          <id>c8b1bafd-0170-1000-0000-0000753f5f5b</id>
-          <name>GenerateFlowFile</name>
-          <position x="-366.3974570271698" y="-455.687252544095" />
-          <styles />
-          <comment />
-          <class>org.apache.nifi.processors.standard.GenerateFlowFile</class>
-          <bundle>
-            <group>org.apache.nifi</group>
-            <artifact>nifi-standard-nar</artifact>
-            <version>1.12.1</version>
-          </bundle>
-          <maxConcurrentTasks>1</maxConcurrentTasks>
-          <schedulingPeriod>1 week</schedulingPeriod>
-          <penalizationPeriod>30 sec</penalizationPeriod>
-          <yieldPeriod>1 sec</yieldPeriod>
-          <bulletinLevel>WARN</bulletinLevel>
-          <lossTolerant>false</lossTolerant>
-          <scheduledState>RUNNING</scheduledState>
-          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-          <executionNode>ALL</executionNode>
-          <runDurationNanos>0</runDurationNanos>
-          <property>
-            <name>File Size</name>
-            <value>0B</value>
-          </property>
-          <property>
-            <name>Batch Size</name>
-            <value>1</value>
-          </property>
-          <property>
-            <name>Data Format</name>
-            <value>Text</value>
-          </property>
-          <property>
-            <name>Unique FlowFiles</name>
-            <value>false</value>
-          </property>
-          <property>
-            <name>generate-ff-custom-text</name>
-          </property>
-          <property>
-            <name>character-set</name>
-            <value>UTF-8</value>
-          </property>
-          <property>
-            <name>mime-type</name>
-          </property>
-        </processor>
-        <funnel>
-          <id>c2cac6f3-c926-3038-b685-68f71f76fda3</id>
-          <position x="457.8712158203125" y="380.06201171875" />
-        </funnel>
-        <connection>
-          <id>c8b21bba-0170-1000-0000-0000281b44ba</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>c8b1bafd-0170-1000-0000-0000753f5f5b</sourceId>
-          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>c8b20333-0170-1000-0000-000010760524</destinationId>
-          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>1d0b1e6f-7b01-34c5-82f8-c95918e700ae</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>b99eab15-7e38-33fa-87d1-41d772306d9c</sourceId>
-          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>c2cac6f3-c926-3038-b685-68f71f76fda3</destinationId>
-          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
-          <destinationType>FUNNEL</destinationType>
-          <relationship>failure</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>e8e86b3f-6936-3080-8eb6-036d532cb483</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>6292665b-f188-3551-b366-95476b5ac36f</sourceId>
-          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>c2cac6f3-c926-3038-b685-68f71f76fda3</destinationId>
-          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
-          <destinationType>FUNNEL</destinationType>
-          <relationship>failure</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>e2f43878-959f-379c-b898-6d7c3a72af44</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>b99eab15-7e38-33fa-87d1-41d772306d9c</sourceId>
-          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>aad91df7-8e80-3598-a3eb-9b000045b843</destinationId>
-          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
+              <class>org.apache.nifi.processors.standard.GenerateFlowFile</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.11.4</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>10 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>File Size</name>
+                <value>0B</value>
+              </property>
+              <property>
+                <name>Batch Size</name>
+                <value>1</value>
+              </property>
+              <property>
+                <name>Data Format</name>
+                <value>Text</value>
+              </property>
+              <property>
+                <name>Unique FlowFiles</name>
+                <value>false</value>
+              </property>
+              <property>
+                <name>generate-ff-custom-text</name>
+                <value>[{"timestamp":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}","TLP":"AMBER","destination":{"ip":"10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","port":443},"event_type":"tls","flow_id":852792667052212,"in_iface":"if1","proto":"TCP","source":{"ip":"10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","port":53466},"tls":{"ja3":{"hash":"e5b607b5862a46cab44d7bacd582b3cd","string":"771,4867-4865-4866-52393-52392-49195-49199-49196-49200-49171-49172-156-157-47-53-10,0-23-65281-10-11-35-16-5-13-18-51-45-43-27-21,29-23-24,0"},"sni":"clients3.google.com","sni_domain":"google.com","version":"TLS 1.3"}}]</value>
+              </property>
+              <property>
+                <name>character-set</name>
+                <value>UTF-8</value>
+              </property>
+              <property>
+                <name>mime.type</name>
+                <value>application/json</value>
+              </property>
+              <property>
+                <name>enrich_domain1</name>
+                <value>/tls/sni_domain</value>
+              </property>
+              <property>
+                <name>enrich_fqdn1</name>
+                <value>/tls/sni</value>
+              </property>
+              <property>
+                <name>enrich_ip1</name>
+                <value>/source/ip</value>
+              </property>
+              <property>
+                <name>data_id</name>
+                <value>suricata_tls</value>
+              </property>
+              <property>
+                <name>data_index</name>
+                <value>logs-suricata-tls</value>
+              </property>
+              <property>
+                <name>data_type</name>
+                <value>suricata</value>
+              </property>
+              <property>
+                <name>enrich_ip2</name>
+                <value>/destination/ip</value>
+              </property>
+            </processor>
+            <outputPort>
+              <id>0c864b15-0175-1000-0000-00001d403b1e</id>
+              <name>To enrichment</name>
+              <position x="1192.0" y="576.0" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </outputPort>
+            <connection>
+              <id>1cb3658c-0175-1000-ffff-ffff93193081</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>f8143c19-b547-1c84-90b7-2e3c37a659e7</sourceId>
+              <sourceGroupId>0c83ef26-0175-1000-ffff-ffffcac37910</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>0c864b15-0175-1000-0000-00001d403b1e</destinationId>
+              <destinationGroupId>0c83ef26-0175-1000-ffff-ffffcac37910</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>0c865d01-0175-1000-0000-0000559b408d</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>bb7dc9ff-2d25-3134-9617-cca3cabe9179</sourceId>
+              <sourceGroupId>0c83ef26-0175-1000-ffff-ffffcac37910</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>0c864b15-0175-1000-0000-00001d403b1e</destinationId>
+              <destinationGroupId>0c83ef26-0175-1000-ffff-ffffcac37910</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+          </processGroup>
+          <connection>
+            <id>0c866fa6-0175-1000-ffff-ffffe866c936</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>0c864b15-0175-1000-0000-00001d403b1e</sourceId>
+            <sourceGroupId>0c83ef26-0175-1000-ffff-ffffcac37910</sourceGroupId>
+            <sourceType>OUTPUT_PORT</sourceType>
+            <destinationId>d30dc946-251a-307c-8e88-f2262b0bb194</destinationId>
+            <destinationGroupId>b3d57504-7c06-37a3-b59b-8723f60fa728</destinationGroupId>
+            <destinationType>OUTPUT_PORT</destinationType>
+            <relationship />
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+        </processGroup>
         <connection>
-          <id>dc7524de-fb6c-3e02-8c60-f821d81aff29</id>
+          <id>c5fe676f-baa5-3d90-956e-fe502db0ac68</id>
           <name />
           <bendPoints />
-          <labelIndex>1</labelIndex>
+          <labelIndex>0</labelIndex>
           <zIndex>0</zIndex>
-          <sourceId>aad91df7-8e80-3598-a3eb-9b000045b843</sourceId>
-          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>6292665b-f188-3551-b366-95476b5ac36f</destinationId>
-          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
+          <sourceId>d30dc946-251a-307c-8e88-f2262b0bb194</sourceId>
+          <sourceGroupId>b3d57504-7c06-37a3-b59b-8723f60fa728</sourceGroupId>
+          <sourceType>OUTPUT_PORT</sourceType>
+          <destinationId>20b01ab3-3a8d-3573-b95d-a4a45494050f</destinationId>
+          <destinationGroupId>870d6d68-7a0a-3505-8c42-0d6064fe43f6</destinationGroupId>
+          <destinationType>OUTPUT_PORT</destinationType>
+          <relationship />
           <maxWorkQueueSize>10000</maxWorkQueueSize>
           <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
           <flowFileExpiration>0 sec</flowFileExpiration>
@@ -10960,18 +5770,18 @@
           <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
         </connection>
         <connection>
-          <id>39a11e18-3397-3f1a-a020-49b895ff6f81</id>
+          <id>214d5013-0175-1000-ffff-ffff9b7dbebb</id>
           <name />
           <bendPoints />
           <labelIndex>1</labelIndex>
           <zIndex>0</zIndex>
-          <sourceId>aad91df7-8e80-3598-a3eb-9b000045b843</sourceId>
-          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>c2cac6f3-c926-3038-b685-68f71f76fda3</destinationId>
-          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
-          <destinationType>FUNNEL</destinationType>
-          <relationship>failure</relationship>
+          <sourceId>1ef39440-1985-3bbb-8e03-859a1c5ee4b1</sourceId>
+          <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
+          <sourceType>OUTPUT_PORT</sourceType>
+          <destinationId>21a9e277-2d80-359a-9c57-cb76d8962e6d</destinationId>
+          <destinationGroupId>870d6d68-7a0a-3505-8c42-0d6064fe43f6</destinationGroupId>
+          <destinationType>OUTPUT_PORT</destinationType>
+          <relationship />
           <maxWorkQueueSize>10000</maxWorkQueueSize>
           <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
           <flowFileExpiration>0 sec</flowFileExpiration>
@@ -10980,82 +5790,20 @@
           <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
         </connection>
         <connection>
-          <id>c8b2e58b-0170-1000-ffff-ffff997c6e6c</id>
+          <id>27d64272-0172-1000-0000-000079e1c9c6</id>
           <name />
           <bendPoints>
-            <bendPoint x="108.66736791924166" y="38.38653496447381" />
-            <bendPoint x="136.0" y="88.0" />
+            <bendPoint x="88.0" y="864.0" />
           </bendPoints>
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>c8b26516-0170-1000-ffff-fffffa357a77</sourceId>
-          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>c8b26516-0170-1000-ffff-fffffa357a77</destinationId>
-          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>Retry</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>c8b29bee-0170-1000-ffff-fffff516df5d</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>c8b26516-0170-1000-ffff-fffffa357a77</sourceId>
-          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>b99eab15-7e38-33fa-87d1-41d772306d9c</destinationId>
-          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>Response</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>c8b2cb01-0170-1000-0000-000005baadda</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>c8b26516-0170-1000-ffff-fffffa357a77</sourceId>
-          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>c2cac6f3-c926-3038-b685-68f71f76fda3</destinationId>
-          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
-          <destinationType>FUNNEL</destinationType>
-          <relationship>No Retry</relationship>
-          <relationship>Failure</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>c8b5c90e-0170-1000-ffff-ffff9864e7e4</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
+          <labelIndex>0</labelIndex>
           <zIndex>0</zIndex>
-          <sourceId>c8b20333-0170-1000-0000-000010760524</sourceId>
-          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>c8b26516-0170-1000-ffff-fffffa357a77</destinationId>
-          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>maxmind_key</relationship>
+          <sourceId>27d5761b-0172-1000-0000-000059275dad</sourceId>
+          <sourceGroupId>27d51d04-0172-1000-0000-00004573c6ec</sourceGroupId>
+          <sourceType>OUTPUT_PORT</sourceType>
+          <destinationId>20b01ab3-3a8d-3573-b95d-a4a45494050f</destinationId>
+          <destinationGroupId>870d6d68-7a0a-3505-8c42-0d6064fe43f6</destinationGroupId>
+          <destinationType>OUTPUT_PORT</destinationType>
+          <relationship />
           <maxWorkQueueSize>10000</maxWorkQueueSize>
           <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
           <flowFileExpiration>0 sec</flowFileExpiration>
@@ -11063,436 +5811,2776 @@
           <partitioningAttribute />
           <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
         </connection>
-      </processGroup>
-    </processGroup>
-    <controllerService>
-      <id>349b34c7-a821-1197-ffff-ffff85d82877</id>
-      <name>Contry code to region</name>
-      <comment />
-      <class>org.apache.nifi.lookup.SimpleCsvFileLookupService</class>
-      <bundle>
-        <group>org.apache.nifi</group>
-        <artifact>nifi-lookup-services-nar</artifact>
-        <version>1.12.1</version>
-      </bundle>
-      <enabled>true</enabled>
-      <property>
-        <name>csv-file</name>
-        <value>/opt/nifi/nifi-current/conf/enrich/CountriesWithRegionalCodes.csv</value>
-      </property>
-      <property>
-        <name>CSV Format</name>
-        <value>default</value>
-      </property>
-      <property>
-        <name>Character Set</name>
-        <value>UTF-8</value>
-      </property>
-      <property>
-        <name>lookup-key-column</name>
-        <value>alpha-2</value>
-      </property>
-      <property>
-        <name>ignore-duplicates</name>
-        <value>true</value>
-      </property>
-      <property>
-        <name>Value Separator</name>
-        <value>,</value>
-      </property>
-      <property>
-        <name>Quote Character</name>
-        <value>"</value>
-      </property>
-      <property>
-        <name>Quote Mode</name>
-        <value>MINIMAL</value>
-      </property>
-      <property>
-        <name>Comment Marker</name>
-      </property>
-      <property>
-        <name>Escape Character</name>
-        <value>\</value>
-      </property>
-      <property>
-        <name>Trim Fields</name>
-        <value>true</value>
-      </property>
-      <property>
-        <name>lookup-value-column</name>
-        <value>region</value>
-      </property>
-    </controllerService>
-    <controllerService>
-      <id>8972e39a-0176-1000-ffff-ffffb8dd96f4</id>
-      <name>Common CA</name>
-      <comment />
-      <class>org.apache.nifi.ssl.StandardSSLContextService</class>
-      <bundle>
-        <group>org.apache.nifi</group>
-        <artifact>nifi-ssl-context-service-nar</artifact>
-        <version>1.12.1</version>
-      </bundle>
-      <enabled>true</enabled>
-      <property>
-        <name>Keystore Filename</name>
-      </property>
-      <property>
-        <name>Keystore Password</name>
-      </property>
-      <property>
-        <name>key-password</name>
-      </property>
-      <property>
-        <name>Keystore Type</name>
-      </property>
-      <property>
-        <name>Truststore Filename</name>
-        <value>/opt/nifi/nifi-current/conf/common-cacerts.jks</value>
-      </property>
-      <property>
-        <name>Truststore Password</name>
-        <value>enc{2650a175fb2f75e2dcd038b4b506ac6368b7e025f6cb80fa6a82b187b0755443}</value>
-      </property>
-      <property>
-        <name>Truststore Type</name>
-        <value>JKS</value>
-      </property>
-      <property>
-        <name>SSL Protocol</name>
-        <value>TLS</value>
-      </property>
-    </controllerService>
-    <controllerService>
-      <id>bbd4d3a2-0175-1000-0000-00000b0fb8bd</id>
-      <name>Tor node CSV</name>
-      <comment />
-      <class>org.apache.nifi.lookup.SimpleCsvFileLookupService</class>
-      <bundle>
-        <group>org.apache.nifi</group>
-        <artifact>nifi-lookup-services-nar</artifact>
-        <version>1.12.1</version>
-      </bundle>
-      <enabled>true</enabled>
-      <property>
-        <name>csv-file</name>
-        <value>/opt/nifi/nifi-current/conf/enrich/tornodes.csv</value>
-      </property>
-      <property>
-        <name>CSV Format</name>
-        <value>default</value>
-      </property>
-      <property>
-        <name>Character Set</name>
-        <value>UTF-8</value>
-      </property>
-      <property>
-        <name>lookup-key-column</name>
-        <value>ip_addr</value>
-      </property>
-      <property>
-        <name>ignore-duplicates</name>
-        <value>true</value>
-      </property>
-      <property>
-        <name>Value Separator</name>
-        <value>,</value>
-      </property>
-      <property>
-        <name>Quote Character</name>
-        <value>"</value>
-      </property>
-      <property>
-        <name>Quote Mode</name>
-        <value>MINIMAL</value>
-      </property>
-      <property>
-        <name>Comment Marker</name>
-      </property>
-      <property>
-        <name>Escape Character</name>
-        <value>\</value>
-      </property>
-      <property>
-        <name>Trim Fields</name>
-        <value>true</value>
-      </property>
-      <property>
-        <name>lookup-value-column</name>
-        <value>ip_addr</value>
-      </property>
-    </controllerService>
-    <controllerService>
-      <id>14453a95-7646-1485-0000-00002c675762</id>
-      <name>Mysql audit log</name>
-      <comment />
-      <class>org.apache.nifi.csv.CSVReader</class>
-      <bundle>
-        <group>org.apache.nifi</group>
-        <artifact>nifi-record-serialization-services-nar</artifact>
-        <version>1.12.1</version>
-      </bundle>
-      <enabled>true</enabled>
-      <property>
-        <name>schema-access-strategy</name>
-        <value>infer-schema</value>
-      </property>
-      <property>
-        <name>schema-registry</name>
-      </property>
-      <property>
-        <name>schema-name</name>
-        <value>${schema.name}</value>
-      </property>
-      <property>
-        <name>schema-version</name>
-      </property>
-      <property>
-        <name>schema-branch</name>
-      </property>
-      <property>
-        <name>schema-text</name>
-        <value>${avro.schema}</value>
-      </property>
-      <property>
-        <name>csv-reader-csv-parser</name>
-        <value>commons-csv</value>
-      </property>
-      <property>
-        <name>Date Format</name>
-      </property>
-      <property>
-        <name>Time Format</name>
-      </property>
-      <property>
-        <name>Timestamp Format</name>
-      </property>
-      <property>
-        <name>CSV Format</name>
-        <value>custom</value>
-      </property>
-      <property>
-        <name>Value Separator</name>
-        <value>,</value>
-      </property>
-      <property>
-        <name>Record Separator</name>
-        <value>\n</value>
-      </property>
-      <property>
-        <name>Skip Header Line</name>
-        <value>true</value>
-      </property>
-      <property>
-        <name>ignore-csv-header</name>
-        <value>false</value>
-      </property>
-      <property>
-        <name>Quote Character</name>
-        <value>"</value>
-      </property>
-      <property>
-        <name>Escape Character</name>
-        <value>\</value>
-      </property>
-      <property>
-        <name>Comment Marker</name>
-      </property>
-      <property>
-        <name>Null String</name>
-      </property>
-      <property>
-        <name>Trim Fields</name>
-        <value>true</value>
-      </property>
-      <property>
-        <name>csvutils-character-set</name>
-        <value>UTF-8</value>
-      </property>
-    </controllerService>
-    <controllerService>
-      <id>7504a565-0176-1000-ffff-ffff9c0f0741</id>
-      <name>Zookeeper logs</name>
-      <comment />
-      <class>org.apache.nifi.grok.GrokReader</class>
-      <bundle>
-        <group>org.apache.nifi</group>
-        <artifact>nifi-record-serialization-services-nar</artifact>
-        <version>1.12.1</version>
-      </bundle>
-      <enabled>true</enabled>
-      <property>
-        <name>schema-access-strategy</name>
-        <value>string-fields-from-grok-expression</value>
-      </property>
-      <property>
-        <name>schema-registry</name>
-      </property>
-      <property>
-        <name>schema-name</name>
-        <value>${schema.name}</value>
-      </property>
-      <property>
-        <name>schema-version</name>
-      </property>
-      <property>
-        <name>schema-branch</name>
-      </property>
-      <property>
-        <name>schema-text</name>
-        <value>${avro.schema}</value>
-      </property>
-      <property>
-        <name>Grok Pattern File</name>
-      </property>
-      <property>
-        <name>Grok Expression</name>
-        <value>%{GREEDYDATA:timestamp} \[%{DATA:id}\] - %{DATA:level} \[%{DATA:process}\] - %{GREEDYDATA:message}</value>
-      </property>
-      <property>
-        <name>no-match-behavior</name>
-        <value>append-to-previous-message</value>
-      </property>
-    </controllerService>
-    <controllerService>
-      <id>8b1dd8bb-0170-1000-0000-000007446e6a</id>
-      <name>Misp DistributedMapCacheServer</name>
-      <comment />
-      <class>org.apache.nifi.distributed.cache.server.map.DistributedMapCacheServer</class>
-      <bundle>
-        <group>org.apache.nifi</group>
-        <artifact>nifi-distributed-cache-services-nar</artifact>
-        <version>1.12.1</version>
-      </bundle>
-      <enabled>true</enabled>
-      <property>
-        <name>Port</name>
-        <value>4557</value>
-      </property>
-      <property>
-        <name>Maximum Cache Entries</name>
-        <value>10000</value>
-      </property>
-      <property>
-        <name>Eviction Strategy</name>
-        <value>Least Frequently Used</value>
-      </property>
-      <property>
-        <name>Persistence Directory</name>
-        <value>/opt/nifi/nifi-current/conf/</value>
-      </property>
-      <property>
-        <name>SSL Context Service</name>
-      </property>
-    </controllerService>
-    <controllerService>
-      <id>56ebe0aa-0176-1000-ffff-ffffbd212f01</id>
-      <name>Haproxy GrokReader</name>
+        <connection>
+          <id>27d65fe7-0172-1000-ffff-ffffec2db03b</id>
+          <name />
+          <bendPoints>
+            <bendPoint x="-744.0" y="856.0" />
+          </bendPoints>
+          <labelIndex>0</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>27d5dab2-0172-1000-ffff-ffffab5c50be</sourceId>
+          <sourceGroupId>27d51d04-0172-1000-0000-00004573c6ec</sourceGroupId>
+          <sourceType>OUTPUT_PORT</sourceType>
+          <destinationId>21a9e277-2d80-359a-9c57-cb76d8962e6d</destinationId>
+          <destinationGroupId>870d6d68-7a0a-3505-8c42-0d6064fe43f6</destinationGroupId>
+          <destinationType>OUTPUT_PORT</destinationType>
+          <relationship />
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <controllerService>
+          <id>94600c6c-704e-3ff8-a2a4-f2f25c71dc3b</id>
+          <name>JsonRecordSetWriter</name>
+          <comment />
+          <class>org.apache.nifi.json.JsonRecordSetWriter</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-record-serialization-services-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <enabled>true</enabled>
+          <property>
+            <name>Schema Write Strategy</name>
+            <value>no-schema</value>
+          </property>
+          <property>
+            <name>schema-cache</name>
+          </property>
+          <property>
+            <name>schema-access-strategy</name>
+            <value>inherit-record-schema</value>
+          </property>
+          <property>
+            <name>schema-registry</name>
+          </property>
+          <property>
+            <name>schema-name</name>
+            <value>${schema.name}</value>
+          </property>
+          <property>
+            <name>schema-version</name>
+          </property>
+          <property>
+            <name>schema-branch</name>
+          </property>
+          <property>
+            <name>schema-text</name>
+            <value>${avro.schema}</value>
+          </property>
+          <property>
+            <name>Date Format</name>
+          </property>
+          <property>
+            <name>Time Format</name>
+          </property>
+          <property>
+            <name>Timestamp Format</name>
+          </property>
+          <property>
+            <name>Pretty Print JSON</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>suppress-nulls</name>
+            <value>suppress-missing</value>
+          </property>
+          <property>
+            <name>output-grouping</name>
+            <value>output-array</value>
+          </property>
+          <property>
+            <name>compression-format</name>
+            <value>none</value>
+          </property>
+          <property>
+            <name>compression-level</name>
+            <value>1</value>
+          </property>
+        </controllerService>
+        <controllerService>
+          <id>09b4fa02-0459-358d-939f-54fda8aea702</id>
+          <name>VolatileSchemaCache</name>
+          <comment />
+          <class>org.apache.nifi.schema.inference.VolatileSchemaCache</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-record-serialization-services-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <enabled>false</enabled>
+          <property>
+            <name>max-cache-size</name>
+            <value>100</value>
+          </property>
+        </controllerService>
+      </processGroup>
+      <processGroup>
+        <id>e9c19adc-c8a4-327e-ad24-24e71fd3474e</id>
+        <name>Data output</name>
+        <position x="829.4446253936723" y="1015.2711478364996" />
+        <comment />
+        <inputPort>
+          <id>e333b82d-7408-3747-8dd2-46473704e51b</id>
+          <name>Data input</name>
+          <position x="-688.0" y="496.0" />
+          <comments />
+          <scheduledState>RUNNING</scheduledState>
+        </inputPort>
+        <processGroup>
+          <id>7ebf304b-4978-3adc-ac31-470fb76e5029</id>
+          <name>Elastic odfe</name>
+          <position x="-759.1319580078125" y="739.6137390136719" />
+          <comment />
+          <processor>
+            <id>8b48f28f-2379-3f0f-81fe-4e1b93e72666</id>
+            <name>PutElasticsearchHttpRecord</name>
+            <position x="-856.2311706542969" y="629.8186340332031" />
+            <styles />
+            <comment />
+            <class>org.apache.nifi.processors.elasticsearch.PutElasticsearchHttpRecord</class>
+            <bundle>
+              <group>org.apache.nifi</group>
+              <artifact>nifi-elasticsearch-nar</artifact>
+              <version>1.11.4</version>
+            </bundle>
+            <maxConcurrentTasks>1</maxConcurrentTasks>
+            <schedulingPeriod>0 sec</schedulingPeriod>
+            <penalizationPeriod>30 sec</penalizationPeriod>
+            <yieldPeriod>1 sec</yieldPeriod>
+            <bulletinLevel>WARN</bulletinLevel>
+            <lossTolerant>false</lossTolerant>
+            <scheduledState>RUNNING</scheduledState>
+            <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+            <executionNode>ALL</executionNode>
+            <runDurationNanos>0</runDurationNanos>
+            <property>
+              <name>elasticsearch-http-url</name>
+              <value>${elastic_url}</value>
+            </property>
+            <property>
+              <name>SSL Context Service</name>
+              <value>83443c00-b286-366a-b8e0-2f51527ab8e5</value>
+            </property>
+            <property>
+              <name>Character Set</name>
+              <value>UTF-8</value>
+            </property>
+            <property>
+              <name>Username</name>
+              <value>${elastic_username}</value>
+            </property>
+            <property>
+              <name>Password</name>
+              <value>enc{aa0e200e6ad20acb3eb1e1f1c7ab08154fc11ccf55c6176c4c8b12fab9f339cba76c4cf1f567bb8aeb4802017cc50639}</value>
+            </property>
+            <property>
+              <name>elasticsearch-http-connect-timeout</name>
+              <value>5 secs</value>
+            </property>
+            <property>
+              <name>elasticsearch-http-response-timeout</name>
+              <value>15 secs</value>
+            </property>
+            <property>
+              <name>proxy-configuration-service</name>
+            </property>
+            <property>
+              <name>elasticsearch-http-proxy-host</name>
+            </property>
+            <property>
+              <name>elasticsearch-http-proxy-port</name>
+            </property>
+            <property>
+              <name>proxy-username</name>
+            </property>
+            <property>
+              <name>proxy-password</name>
+            </property>
+            <property>
+              <name>put-es-record-record-reader</name>
+              <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+            </property>
+            <property>
+              <name>put-es-record-record-writer</name>
+            </property>
+            <property>
+              <name>put-es-record-log-all-errors</name>
+              <value>false</value>
+            </property>
+            <property>
+              <name>put-es-record-id-path</name>
+            </property>
+            <property>
+              <name>put-es-record-index</name>
+              <value>${data_index}-${now():format("yyyy-MM-dd")}</value>
+            </property>
+            <property>
+              <name>put-es-record-type</name>
+              <value>_doc</value>
+            </property>
+            <property>
+              <name>put-es-record-index-op</name>
+              <value>index</value>
+            </property>
+            <property>
+              <name>suppress-nulls</name>
+              <value>always-suppress</value>
+            </property>
+            <property>
+              <name>Date Format</name>
+            </property>
+            <property>
+              <name>Time Format</name>
+            </property>
+            <property>
+              <name>Timestamp Format</name>
+            </property>
+            <autoTerminatedRelationship>success</autoTerminatedRelationship>
+          </processor>
+          <inputPort>
+            <id>e7d34e01-babe-3022-ad9b-a7620e7c0f38</id>
+            <name>Data input</name>
+            <position x="-803.9990234375" y="484.5271301269531" />
+            <comments />
+            <scheduledState>RUNNING</scheduledState>
+          </inputPort>
+          <funnel>
+            <id>a8cf8491-c2a7-3986-b803-58aff43326de</id>
+            <position x="-709.0761208187066" y="911.6861746431973" />
+          </funnel>
+          <connection>
+            <id>3280c550-2117-37a6-8b5e-3bc1953fa17e</id>
+            <name />
+            <bendPoints>
+              <bendPoint x="-393.2311706542969" y="669.8186340332031" />
+              <bendPoint x="-393.2311706542969" y="719.8186340332031" />
+            </bendPoints>
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>8b48f28f-2379-3f0f-81fe-4e1b93e72666</sourceId>
+            <sourceGroupId>7ebf304b-4978-3adc-ac31-470fb76e5029</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>8b48f28f-2379-3f0f-81fe-4e1b93e72666</destinationId>
+            <destinationGroupId>7ebf304b-4978-3adc-ac31-470fb76e5029</destinationGroupId>
+            <destinationType>PROCESSOR</destinationType>
+            <relationship>retry</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>02a9e341-0590-34a8-9f0c-9d6992869e59</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>8b48f28f-2379-3f0f-81fe-4e1b93e72666</sourceId>
+            <sourceGroupId>7ebf304b-4978-3adc-ac31-470fb76e5029</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>a8cf8491-c2a7-3986-b803-58aff43326de</destinationId>
+            <destinationGroupId>7ebf304b-4978-3adc-ac31-470fb76e5029</destinationGroupId>
+            <destinationType>FUNNEL</destinationType>
+            <relationship>failure</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>1 min</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>5de8f98f-ce46-3565-b0ce-7f8ecf518c53</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>e7d34e01-babe-3022-ad9b-a7620e7c0f38</sourceId>
+            <sourceGroupId>7ebf304b-4978-3adc-ac31-470fb76e5029</sourceGroupId>
+            <sourceType>INPUT_PORT</sourceType>
+            <destinationId>8b48f28f-2379-3f0f-81fe-4e1b93e72666</destinationId>
+            <destinationGroupId>7ebf304b-4978-3adc-ac31-470fb76e5029</destinationGroupId>
+            <destinationType>PROCESSOR</destinationType>
+            <relationship />
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>10 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+        </processGroup>
+        <processGroup>
+          <id>2bb2f914-0172-1000-0000-0000240c76e4</id>
+          <name>Custom output</name>
+          <position x="-328.0" y="744.0" />
+          <comment />
+          <inputPort>
+            <id>2bb31aa5-0172-1000-0000-00000869fb70</id>
+            <name>Input</name>
+            <position x="-648.0" y="496.0" />
+            <comments />
+            <scheduledState>STOPPED</scheduledState>
+          </inputPort>
+        </processGroup>
+        <connection>
+          <id>34772170-2400-3eb6-b9c5-c03b912a38f3</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>e333b82d-7408-3747-8dd2-46473704e51b</sourceId>
+          <sourceGroupId>e9c19adc-c8a4-327e-ad24-24e71fd3474e</sourceGroupId>
+          <sourceType>INPUT_PORT</sourceType>
+          <destinationId>e7d34e01-babe-3022-ad9b-a7620e7c0f38</destinationId>
+          <destinationGroupId>7ebf304b-4978-3adc-ac31-470fb76e5029</destinationGroupId>
+          <destinationType>INPUT_PORT</destinationType>
+          <relationship />
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+      </processGroup>
+      <connection>
+        <id>875a975e-46e1-36fa-a035-4799201abd63</id>
+        <name />
+        <bendPoints />
+        <labelIndex>1</labelIndex>
+        <zIndex>0</zIndex>
+        <sourceId>20b01ab3-3a8d-3573-b95d-a4a45494050f</sourceId>
+        <sourceGroupId>870d6d68-7a0a-3505-8c42-0d6064fe43f6</sourceGroupId>
+        <sourceType>OUTPUT_PORT</sourceType>
+        <destinationId>74abf119-faa6-3e9e-bb31-da2e79f89a38</destinationId>
+        <destinationGroupId>fcbcacd1-542d-3a15-a5aa-9c1302328954</destinationGroupId>
+        <destinationType>INPUT_PORT</destinationType>
+        <relationship />
+        <maxWorkQueueSize>10000</maxWorkQueueSize>
+        <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+        <flowFileExpiration>0 sec</flowFileExpiration>
+        <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+        <partitioningAttribute />
+        <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+      </connection>
+      <connection>
+        <id>bbc37560-0171-1000-0000-000055178fff</id>
+        <name />
+        <bendPoints />
+        <labelIndex>1</labelIndex>
+        <zIndex>0</zIndex>
+        <sourceId>c164884d-277f-31af-ac3c-18b211667bbf</sourceId>
+        <sourceGroupId>fcbcacd1-542d-3a15-a5aa-9c1302328954</sourceGroupId>
+        <sourceType>OUTPUT_PORT</sourceType>
+        <destinationId>e333b82d-7408-3747-8dd2-46473704e51b</destinationId>
+        <destinationGroupId>e9c19adc-c8a4-327e-ad24-24e71fd3474e</destinationGroupId>
+        <destinationType>INPUT_PORT</destinationType>
+        <relationship />
+        <maxWorkQueueSize>10000</maxWorkQueueSize>
+        <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+        <flowFileExpiration>0 sec</flowFileExpiration>
+        <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+        <partitioningAttribute />
+        <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+      </connection>
+      <connection>
+        <id>9cdaaee8-0e39-3dbd-a7cc-06a89056bb7c</id>
+        <name />
+        <bendPoints />
+        <labelIndex>1</labelIndex>
+        <zIndex>0</zIndex>
+        <sourceId>21a9e277-2d80-359a-9c57-cb76d8962e6d</sourceId>
+        <sourceGroupId>870d6d68-7a0a-3505-8c42-0d6064fe43f6</sourceGroupId>
+        <sourceType>OUTPUT_PORT</sourceType>
+        <destinationId>e333b82d-7408-3747-8dd2-46473704e51b</destinationId>
+        <destinationGroupId>e9c19adc-c8a4-327e-ad24-24e71fd3474e</destinationGroupId>
+        <destinationType>INPUT_PORT</destinationType>
+        <relationship />
+        <maxWorkQueueSize>10000</maxWorkQueueSize>
+        <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+        <flowFileExpiration>0 sec</flowFileExpiration>
+        <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+        <partitioningAttribute />
+        <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+      </connection>
+      <controllerService>
+        <id>b7794eb3-9227-36dd-8751-e87d1c2321ee</id>
+        <name>Misp DistributedMapCacheClientService</name>
+        <comment />
+        <class>org.apache.nifi.distributed.cache.client.DistributedMapCacheClientService</class>
+        <bundle>
+          <group>org.apache.nifi</group>
+          <artifact>nifi-distributed-cache-services-nar</artifact>
+          <version>1.11.4</version>
+        </bundle>
+        <enabled>false</enabled>
+        <property>
+          <name>Server Hostname</name>
+          <value>localhost</value>
+        </property>
+        <property>
+          <name>Server Port</name>
+          <value>6000</value>
+        </property>
+        <property>
+          <name>SSL Context Service</name>
+        </property>
+        <property>
+          <name>Communications Timeout</name>
+          <value>30 secs</value>
+        </property>
+      </controllerService>
+    </processGroup>
+    <processGroup>
+      <id>72eb009e-0c2f-302d-bc6c-2d02c29c25a9</id>
+      <name>Enrichment data</name>
+      <position x="1720.0" y="248.0" />
       <comment />
-      <class>org.apache.nifi.grok.GrokReader</class>
-      <bundle>
-        <group>org.apache.nifi</group>
-        <artifact>nifi-record-serialization-services-nar</artifact>
-        <version>1.12.1</version>
-      </bundle>
-      <enabled>true</enabled>
-      <property>
-        <name>schema-access-strategy</name>
-        <value>string-fields-from-grok-expression</value>
-      </property>
-      <property>
-        <name>schema-registry</name>
-      </property>
-      <property>
-        <name>schema-name</name>
-        <value>${schema.name}</value>
-      </property>
-      <property>
-        <name>schema-version</name>
-      </property>
-      <property>
-        <name>schema-branch</name>
-      </property>
-      <property>
-        <name>schema-text</name>
-        <value>${avro.schema}</value>
-      </property>
-      <property>
-        <name>Grok Pattern File</name>
-        <value>/opt/nifi/nifi-current/conf/enrich/haproxy.groklib</value>
-      </property>
-      <property>
-        <name>Grok Expression</name>
-        <value>%{PROG:process.name}(?:\[%{POSINT:process.pid}\])?: %{HAPROXYHTTPBASE}</value>
-      </property>
-      <property>
-        <name>no-match-behavior</name>
-        <value>append-to-previous-message</value>
-      </property>
-    </controllerService>
+      <processGroup>
+        <id>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</id>
+        <name>Top domains</name>
+        <position x="970.3727876614566" y="673.4981494769316" />
+        <comment>Downloads CSV files containing top domains from Alexa and Umbrella</comment>
+        <processor>
+          <id>857cd537-4aeb-31fb-9740-0513e6cc46fe</id>
+          <name>Unzip CSV files</name>
+          <position x="-297.30227379373514" y="212.70767899178307" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.UnpackContent</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Packaging Format</name>
+            <value>zip</value>
+          </property>
+          <property>
+            <name>File Filter</name>
+            <value>.*</value>
+          </property>
+          <autoTerminatedRelationship>original</autoTerminatedRelationship>
+        </processor>
+        <processor>
+          <id>937de5fc-7d4a-35af-a071-46f04d6ea4fa</id>
+          <name>Save to disk</name>
+          <position x="326.18698401876486" y="392.4228279175642" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.PutFile</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Directory</name>
+            <value>/opt/nifi/nifi-current/conf/</value>
+          </property>
+          <property>
+            <name>Conflict Resolution Strategy</name>
+            <value>replace</value>
+          </property>
+          <property>
+            <name>Create Missing Directories</name>
+            <value>true</value>
+          </property>
+          <property>
+            <name>Maximum File Count</name>
+          </property>
+          <property>
+            <name>Last Modified Time</name>
+          </property>
+          <property>
+            <name>Permissions</name>
+          </property>
+          <property>
+            <name>Owner</name>
+          </property>
+          <property>
+            <name>Group</name>
+          </property>
+          <autoTerminatedRelationship>success</autoTerminatedRelationship>
+        </processor>
+        <processor>
+          <id>3c4d65a9-aa39-380f-b16b-2aea028a019b</id>
+          <name>Download Alexa CSV file</name>
+          <position x="197.54468055196799" y="-60.57735518790443" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.GetHTTP</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>1 day</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>URL</name>
+            <value>http://s3.amazonaws.com/alexa-static/top-1m.csv.zip</value>
+          </property>
+          <property>
+            <name>Filename</name>
+            <value>alexa-top-1m.csv.zip</value>
+          </property>
+          <property>
+            <name>SSL Context Service</name>
+          </property>
+          <property>
+            <name>Username</name>
+          </property>
+          <property>
+            <name>Password</name>
+          </property>
+          <property>
+            <name>Connection Timeout</name>
+            <value>30 sec</value>
+          </property>
+          <property>
+            <name>Data Timeout</name>
+            <value>10 min</value>
+          </property>
+          <property>
+            <name>User Agent</name>
+          </property>
+          <property>
+            <name>Accept Content-Type</name>
+          </property>
+          <property>
+            <name>Follow Redirects</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>redirect-cookie-policy</name>
+            <value>default</value>
+          </property>
+          <property>
+            <name>proxy-configuration-service</name>
+          </property>
+          <property>
+            <name>Proxy Host</name>
+          </property>
+          <property>
+            <name>Proxy Port</name>
+          </property>
+          <property>
+            <name>filename</name>
+            <value>alexa-top-1m.csv</value>
+          </property>
+        </processor>
+        <processor>
+          <id>9d3d9047-fb85-3ae6-a815-0e19cc860c60</id>
+          <name>Download Umbrella CSV file</name>
+          <position x="-297.30227379373514" y="-61.444390100013806" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.GetHTTP</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>1 day</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>URL</name>
+            <value>http://s3-us-west-1.amazonaws.com/umbrella-static/top-1m.csv.zip</value>
+          </property>
+          <property>
+            <name>Filename</name>
+            <value>umbrella-top-1m.csv.zip</value>
+          </property>
+          <property>
+            <name>SSL Context Service</name>
+          </property>
+          <property>
+            <name>Username</name>
+          </property>
+          <property>
+            <name>Password</name>
+          </property>
+          <property>
+            <name>Connection Timeout</name>
+            <value>30 sec</value>
+          </property>
+          <property>
+            <name>Data Timeout</name>
+            <value>10 min</value>
+          </property>
+          <property>
+            <name>User Agent</name>
+          </property>
+          <property>
+            <name>Accept Content-Type</name>
+          </property>
+          <property>
+            <name>Follow Redirects</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>redirect-cookie-policy</name>
+            <value>default</value>
+          </property>
+          <property>
+            <name>proxy-configuration-service</name>
+          </property>
+          <property>
+            <name>Proxy Host</name>
+          </property>
+          <property>
+            <name>Proxy Port</name>
+          </property>
+          <property>
+            <name>filename</name>
+            <value>umbrella-top-1m.csv</value>
+          </property>
+        </processor>
+        <processor>
+          <id>9009320d-fb62-357e-ad94-bef8e95ea142</id>
+          <name>Set filename</name>
+          <position x="-294.78310875467264" y="388.04684866613775" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-update-attribute-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Delete Attributes Expression</name>
+          </property>
+          <property>
+            <name>Store State</name>
+            <value>Do not store state</value>
+          </property>
+          <property>
+            <name>Stateful Variables Initial Value</name>
+          </property>
+          <property>
+            <name>canonical-value-lookup-cache-size</name>
+            <value>100</value>
+          </property>
+          <property>
+            <name>filename</name>
+            <value>${segment.original.filename}</value>
+          </property>
+        </processor>
+        <processor>
+          <id>86fdf574-d86b-3f35-9aa0-3ada1867aff8</id>
+          <name>Add headers</name>
+          <position x="325.04416175313986" y="201.70740433357992" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.ReplaceText</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Regular Expression</name>
+            <value>(?s)(^.*$)</value>
+          </property>
+          <property>
+            <name>Replacement Value</name>
+            <value>index,domain
+</value>
+          </property>
+          <property>
+            <name>Character Set</name>
+            <value>UTF-8</value>
+          </property>
+          <property>
+            <name>Maximum Buffer Size</name>
+            <value>1 MB</value>
+          </property>
+          <property>
+            <name>Replacement Strategy</name>
+            <value>Prepend</value>
+          </property>
+          <property>
+            <name>Evaluation Mode</name>
+            <value>Entire text</value>
+          </property>
+          <property>
+            <name>Line-by-Line Evaluation Mode</name>
+            <value>All</value>
+          </property>
+        </processor>
+        <connection>
+          <id>652026e5-0acd-3009-b45a-f68f3e37bef9</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>9d3d9047-fb85-3ae6-a815-0e19cc860c60</sourceId>
+          <sourceGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>857cd537-4aeb-31fb-9740-0513e6cc46fe</destinationId>
+          <destinationGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>success</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>b400d4e7-7106-3ea3-8b1a-0b9d2a8795b2</id>
+          <name />
+          <bendPoints>
+            <bendPoint x="787.0441617531399" y="276.7074043335799" />
+            <bendPoint x="788.0441617531399" y="291.7074043335799" />
+          </bendPoints>
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>86fdf574-d86b-3f35-9aa0-3ada1867aff8</sourceId>
+          <sourceGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>86fdf574-d86b-3f35-9aa0-3ada1867aff8</destinationId>
+          <destinationGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>failure</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>5d7b82fa-10f8-3a32-9ffa-ebce53eb6070</id>
+          <name />
+          <bendPoints>
+            <bendPoint x="-414.74468712381326" y="221.65236588143148" />
+            <bendPoint x="-451.48125938943826" y="275.1232673706893" />
+          </bendPoints>
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>857cd537-4aeb-31fb-9740-0513e6cc46fe</sourceId>
+          <sourceGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>857cd537-4aeb-31fb-9740-0513e6cc46fe</destinationId>
+          <destinationGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>failure</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>bfe27587-bb06-388c-a59a-8aad9830cda1</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>3c4d65a9-aa39-380f-b16b-2aea028a019b</sourceId>
+          <sourceGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>857cd537-4aeb-31fb-9740-0513e6cc46fe</destinationId>
+          <destinationGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>success</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>7af7ff86-6b85-3fd1-bbc4-efa4e04593d9</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>857cd537-4aeb-31fb-9740-0513e6cc46fe</sourceId>
+          <sourceGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>86fdf574-d86b-3f35-9aa0-3ada1867aff8</destinationId>
+          <destinationGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>success</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>e2d60b76-d9bf-380f-9cfd-eeda1422ad73</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>86fdf574-d86b-3f35-9aa0-3ada1867aff8</sourceId>
+          <sourceGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>9009320d-fb62-357e-ad94-bef8e95ea142</destinationId>
+          <destinationGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>success</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>58b9bce4-6f7a-369c-a93f-dc23e252c670</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>9009320d-fb62-357e-ad94-bef8e95ea142</sourceId>
+          <sourceGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>937de5fc-7d4a-35af-a071-46f04d6ea4fa</destinationId>
+          <destinationGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>success</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>dea956ed-2b3b-39de-8cd8-a4d1f7a88aa2</id>
+          <name />
+          <bendPoints>
+            <bendPoint x="790.1869840187649" y="473.4228279175642" />
+            <bendPoint x="789.1869840187649" y="482.42282791756406" />
+          </bendPoints>
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>937de5fc-7d4a-35af-a071-46f04d6ea4fa</sourceId>
+          <sourceGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>937de5fc-7d4a-35af-a071-46f04d6ea4fa</destinationId>
+          <destinationGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>failure</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+      </processGroup>
+      <processGroup>
+        <id>b997e46b-7905-33e8-8bbc-f4d51b0cc735</id>
+        <name>Tor Nodes</name>
+        <position x="968.7335178760902" y="456.9915202898361" />
+        <comment>Downloads a CSV file of IP addresses used as Tor nodes</comment>
+        <processor>
+          <id>ad366a87-89d6-38ff-affe-a1f3575faa8a</id>
+          <name>Save to disk</name>
+          <position x="-328.58331298828125" y="-153.10000610351562" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.PutFile</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Directory</name>
+            <value>/opt/nifi/nifi-current/conf/</value>
+          </property>
+          <property>
+            <name>Conflict Resolution Strategy</name>
+            <value>replace</value>
+          </property>
+          <property>
+            <name>Create Missing Directories</name>
+            <value>true</value>
+          </property>
+          <property>
+            <name>Maximum File Count</name>
+          </property>
+          <property>
+            <name>Last Modified Time</name>
+          </property>
+          <property>
+            <name>Permissions</name>
+          </property>
+          <property>
+            <name>Owner</name>
+          </property>
+          <property>
+            <name>Group</name>
+          </property>
+          <autoTerminatedRelationship>success</autoTerminatedRelationship>
+        </processor>
+        <processor>
+          <id>34f52e1e-164e-34e4-b5fc-e5d16f773b19</id>
+          <name>Get CSV file with Tor nodes</name>
+          <position x="-323.0833282470703" y="-647.6000061035156" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.GetHTTP</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>1 day</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>STOPPED</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>URL</name>
+            <value>http://check.torproject.org/torbulkexitlist</value>
+          </property>
+          <property>
+            <name>Filename</name>
+            <value>tornodes.csv</value>
+          </property>
+          <property>
+            <name>SSL Context Service</name>
+          </property>
+          <property>
+            <name>Username</name>
+          </property>
+          <property>
+            <name>Password</name>
+          </property>
+          <property>
+            <name>Connection Timeout</name>
+            <value>30 sec</value>
+          </property>
+          <property>
+            <name>Data Timeout</name>
+            <value>30 sec</value>
+          </property>
+          <property>
+            <name>User Agent</name>
+          </property>
+          <property>
+            <name>Accept Content-Type</name>
+          </property>
+          <property>
+            <name>Follow Redirects</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>redirect-cookie-policy</name>
+            <value>default</value>
+          </property>
+          <property>
+            <name>proxy-configuration-service</name>
+          </property>
+          <property>
+            <name>Proxy Host</name>
+          </property>
+          <property>
+            <name>Proxy Port</name>
+          </property>
+        </processor>
+        <processor>
+          <id>8c69ccb6-616f-3ce2-b0cd-57276cae3749</id>
+          <name>Add header</name>
+          <position x="-325.5833282470703" y="-410.1000061035156" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.ReplaceText</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Regular Expression</name>
+            <value>(?s)(^.*$)</value>
+          </property>
+          <property>
+            <name>Replacement Value</name>
+            <value>ip_addr
+</value>
+          </property>
+          <property>
+            <name>Character Set</name>
+            <value>UTF-8</value>
+          </property>
+          <property>
+            <name>Maximum Buffer Size</name>
+            <value>1 MB</value>
+          </property>
+          <property>
+            <name>Replacement Strategy</name>
+            <value>Prepend</value>
+          </property>
+          <property>
+            <name>Evaluation Mode</name>
+            <value>Entire text</value>
+          </property>
+          <property>
+            <name>Line-by-Line Evaluation Mode</name>
+            <value>All</value>
+          </property>
+        </processor>
+        <connection>
+          <id>33cb6d60-d003-3954-b9d0-f51ac40ed983</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>8c69ccb6-616f-3ce2-b0cd-57276cae3749</sourceId>
+          <sourceGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>ad366a87-89d6-38ff-affe-a1f3575faa8a</destinationId>
+          <destinationGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>success</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>cd13f619-bb19-37c2-b8fe-c962edfbf213</id>
+          <name />
+          <bendPoints>
+            <bendPoint x="137.4166717529297" y="-370.1000061035156" />
+            <bendPoint x="137.4166717529297" y="-320.1000061035156" />
+          </bendPoints>
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>8c69ccb6-616f-3ce2-b0cd-57276cae3749</sourceId>
+          <sourceGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>8c69ccb6-616f-3ce2-b0cd-57276cae3749</destinationId>
+          <destinationGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>failure</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>3941ee86-e740-3b8f-951a-c7da71e78fbe</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>34f52e1e-164e-34e4-b5fc-e5d16f773b19</sourceId>
+          <sourceGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>8c69ccb6-616f-3ce2-b0cd-57276cae3749</destinationId>
+          <destinationGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>success</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>19de0f5c-c244-3e7d-b711-ee165b493ea2</id>
+          <name />
+          <bendPoints>
+            <bendPoint x="134.41668701171875" y="-113.10000610351562" />
+            <bendPoint x="134.41668701171875" y="-63.100006103515625" />
+          </bendPoints>
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>ad366a87-89d6-38ff-affe-a1f3575faa8a</sourceId>
+          <sourceGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>ad366a87-89d6-38ff-affe-a1f3575faa8a</destinationId>
+          <destinationGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>failure</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>8130df3d-dc8c-32c2-975d-9c94438cac05</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>34f52e1e-164e-34e4-b5fc-e5d16f773b19</sourceId>
+          <sourceGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>8c69ccb6-616f-3ce2-b0cd-57276cae3749</destinationId>
+          <destinationGroupId>b997e46b-7905-33e8-8bbc-f4d51b0cc735</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>success</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+      </processGroup>
+      <processGroup>
+        <id>194a653f-0c92-3704-8bd4-ffa079643515</id>
+        <name>Misp</name>
+        <position x="548.9658647769079" y="453.4916238226681" />
+        <comment>Polls Misp database once every minute and places new IOCs in a NiFi memcache.</comment>
+        <processor>
+          <id>283bea4b-2774-3f2d-aabe-cf96989e9997</id>
+          <name>Set timestamp as FlowFile content</name>
+          <position x="506.47715414708637" y="587.6551663734834" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.ReplaceText</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Regular Expression</name>
+            <value>(?s)(^.*$)</value>
+          </property>
+          <property>
+            <name>Replacement Value</name>
+            <value>${timestamp}</value>
+          </property>
+          <property>
+            <name>Character Set</name>
+            <value>UTF-8</value>
+          </property>
+          <property>
+            <name>Maximum Buffer Size</name>
+            <value>1 MB</value>
+          </property>
+          <property>
+            <name>Replacement Strategy</name>
+            <value>Always Replace</value>
+          </property>
+          <property>
+            <name>Evaluation Mode</name>
+            <value>Entire text</value>
+          </property>
+          <property>
+            <name>Line-by-Line Evaluation Mode</name>
+            <value>All</value>
+          </property>
+        </processor>
+        <processor>
+          <id>e1e2caef-8178-3c91-b3ca-99f05f619064</id>
+          <name>Get timestamp of last successful poll</name>
+          <position x="-168.51082396716333" y="-293.9956980367642" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.FetchDistributedMapCache</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Cache Entry Identifier</name>
+            <value>${lookup_id}</value>
+          </property>
+          <property>
+            <name>Distributed Cache Service</name>
+            <value>ad4d31bf-b1fb-35e0-b634-b969b200f3a6</value>
+          </property>
+          <property>
+            <name>Put Cache Value In Attribute</name>
+            <value>last_run</value>
+          </property>
+          <property>
+            <name>Max Length To Put In Attribute</name>
+            <value>256</value>
+          </property>
+          <property>
+            <name>Character Set</name>
+            <value>UTF-8</value>
+          </property>
+        </processor>
+        <processor>
+          <id>192802be-4416-3abc-ba03-90934f2df860</id>
+          <name>Get events</name>
+          <position x="-151.66592451726592" y="335.6012170464188" />
+          <styles />
+          <comment>Normally the query will have a filter at the end "/last:${last}" so that only new events are pulled. This has been removed from this demo.</comment>
+          <class>org.apache.nifi.processors.standard.InvokeHTTP</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>HTTP Method</name>
+            <value>GET</value>
+          </property>
+          <property>
+            <name>Remote URL</name>
+            <value>${misp_url}/attributes/restSearch/returnFormat:json/type:ip-src||ip-dst</value>
+          </property>
+          <property>
+            <name>SSL Context Service</name>
+            <value>83443c00-b286-366a-b8e0-2f51527ab8e5</value>
+          </property>
+          <property>
+            <name>Connection Timeout</name>
+            <value>5 secs</value>
+          </property>
+          <property>
+            <name>Read Timeout</name>
+            <value>15 secs</value>
+          </property>
+          <property>
+            <name>Include Date Header</name>
+            <value>True</value>
+          </property>
+          <property>
+            <name>Follow Redirects</name>
+            <value>True</value>
+          </property>
+          <property>
+            <name>Attributes to Send</name>
+          </property>
+          <property>
+            <name>Basic Authentication Username</name>
+          </property>
+          <property>
+            <name>Basic Authentication Password</name>
+          </property>
+          <property>
+            <name>proxy-configuration-service</name>
+          </property>
+          <property>
+            <name>Proxy Host</name>
+          </property>
+          <property>
+            <name>Proxy Port</name>
+          </property>
+          <property>
+            <name>Proxy Type</name>
+            <value>http</value>
+          </property>
+          <property>
+            <name>invokehttp-proxy-user</name>
+          </property>
+          <property>
+            <name>invokehttp-proxy-password</name>
+          </property>
+          <property>
+            <name>Put Response Body In Attribute</name>
+          </property>
+          <property>
+            <name>Max Length To Put In Attribute</name>
+            <value>256</value>
+          </property>
+          <property>
+            <name>Digest Authentication</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>Always Output Response</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>Add Response Headers to Request</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>Content-Type</name>
+            <value>${mime.type}</value>
+          </property>
+          <property>
+            <name>send-message-body</name>
+            <value>true</value>
+          </property>
+          <property>
+            <name>Use Chunked Encoding</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>Penalize on "No Retry"</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>use-etag</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>etag-max-cache-size</name>
+            <value>10MB</value>
+          </property>
+          <property>
+            <name>ignore-response-content</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>Authorization</name>
+            <value>${misp_token}</value>
+          </property>
+          <autoTerminatedRelationship>Original</autoTerminatedRelationship>
+          <autoTerminatedRelationship>Retry</autoTerminatedRelationship>
+        </processor>
+        <processor>
+          <id>671c4e42-604f-389d-9cee-27431ca36448</id>
+          <name>Store timestamp</name>
+          <position x="504.4604101497308" y="824.0677052542044" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.PutDistributedMapCache</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Cache Entry Identifier</name>
+            <value>${lookup_id}</value>
+          </property>
+          <property>
+            <name>Distributed Cache Service</name>
+            <value>ad4d31bf-b1fb-35e0-b634-b969b200f3a6</value>
+          </property>
+          <property>
+            <name>Cache update strategy</name>
+            <value>replace</value>
+          </property>
+          <property>
+            <name>Max cache entry size</name>
+            <value>1 MB</value>
+          </property>
+          <autoTerminatedRelationship>success</autoTerminatedRelationship>
+        </processor>
+        <processor>
+          <id>c7cc4e24-7d9a-3a17-8af1-ca655f46595f</id>
+          <name>Update cache</name>
+          <position x="-775.4735301448745" y="930.3624699197178" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.PutDistributedMapCache</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Cache Entry Identifier</name>
+            <value>${misp_ip}</value>
+          </property>
+          <property>
+            <name>Distributed Cache Service</name>
+            <value>ad4d31bf-b1fb-35e0-b634-b969b200f3a6</value>
+          </property>
+          <property>
+            <name>Cache update strategy</name>
+            <value>replace</value>
+          </property>
+          <property>
+            <name>Max cache entry size</name>
+            <value>1 MB</value>
+          </property>
+          <autoTerminatedRelationship>success</autoTerminatedRelationship>
+        </processor>
+        <processor>
+          <id>81ec71a0-719a-3205-9360-6a535072f7c6</id>
+          <name>Set attributes to get all events for the last x days</name>
+          <position x="-378.1916613806792" y="-12.197472102501479" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-update-attribute-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Delete Attributes Expression</name>
+          </property>
+          <property>
+            <name>Store State</name>
+            <value>Do not store state</value>
+          </property>
+          <property>
+            <name>Stateful Variables Initial Value</name>
+          </property>
+          <property>
+            <name>canonical-value-lookup-cache-size</name>
+            <value>100</value>
+          </property>
+          <property>
+            <name>last</name>
+            <value>${misp_ip_first_interval}</value>
+          </property>
+          <property>
+            <name>timestamp</name>
+            <value>${now():toNumber()}</value>
+          </property>
+        </processor>
+        <processor>
+          <id>6d78b76c-5463-3610-b8c8-4796fa09c59b</id>
+          <name>Periodic polling</name>
+          <position x="-171.36520083798905" y="-518.6967632987289" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.GenerateFlowFile</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>1 minute</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>STOPPED</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>File Size</name>
+            <value>0B</value>
+          </property>
+          <property>
+            <name>Batch Size</name>
+            <value>1</value>
+          </property>
+          <property>
+            <name>Data Format</name>
+            <value>Text</value>
+          </property>
+          <property>
+            <name>Unique FlowFiles</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>generate-ff-custom-text</name>
+          </property>
+          <property>
+            <name>character-set</name>
+            <value>UTF-8</value>
+          </property>
+          <property>
+            <name>lookup_id</name>
+            <value>ip</value>
+          </property>
+        </processor>
+        <processor>
+          <id>dbc236e3-8c68-3c6b-b1e9-d1fc8f57327d</id>
+          <name>Extract IP address</name>
+          <position x="-156.69110558236184" y="543.7042207790005" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.EvaluateJsonPath</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Destination</name>
+            <value>flowfile-attribute</value>
+          </property>
+          <property>
+            <name>Return Type</name>
+            <value>auto-detect</value>
+          </property>
+          <property>
+            <name>Path Not Found Behavior</name>
+            <value>ignore</value>
+          </property>
+          <property>
+            <name>Null Value Representation</name>
+            <value>empty string</value>
+          </property>
+          <property>
+            <name>misp_ip</name>
+            <value>$.value</value>
+          </property>
+        </processor>
+        <processor>
+          <id>74d66e0e-0b65-36d2-96f1-4b836d2c4222</id>
+          <name>Set attributes to get new events since last poll</name>
+          <position x="81.93877074822706" y="-13.058372981407729" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-update-attribute-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Delete Attributes Expression</name>
+          </property>
+          <property>
+            <name>Store State</name>
+            <value>Do not store state</value>
+          </property>
+          <property>
+            <name>Stateful Variables Initial Value</name>
+          </property>
+          <property>
+            <name>canonical-value-lookup-cache-size</name>
+            <value>100</value>
+          </property>
+          <property>
+            <name>last</name>
+            <value>${now():toNumber():minus(${last_run}):divide(60000):plus(1):append("m")}</value>
+          </property>
+          <property>
+            <name>timestamp</name>
+            <value>${now():toNumber()}</value>
+          </property>
+        </processor>
+        <processor>
+          <id>ba1b7e7e-a03c-3ace-9182-7f43569537e2</id>
+          <name>Create one FlowFile for each IP address</name>
+          <position x="-789.5267777615984" y="546.1428879861119" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.SplitJson</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>JsonPath Expression</name>
+            <value>$.response.Attribute</value>
+          </property>
+          <property>
+            <name>Null Value Representation</name>
+            <value>empty string</value>
+          </property>
+          <autoTerminatedRelationship>original</autoTerminatedRelationship>
+        </processor>
+        <processor>
+          <id>d850fc04-df9a-36b7-b53f-8b397a1be69a</id>
+          <name>Extract Misp event ID and store it to FlowFile</name>
+          <position x="-783.5607955237681" y="719.2550630641567" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.EvaluateJsonPath</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Destination</name>
+            <value>flowfile-content</value>
+          </property>
+          <property>
+            <name>Return Type</name>
+            <value>auto-detect</value>
+          </property>
+          <property>
+            <name>Path Not Found Behavior</name>
+            <value>ignore</value>
+          </property>
+          <property>
+            <name>Null Value Representation</name>
+            <value>empty string</value>
+          </property>
+          <property>
+            <name>event_id</name>
+            <value>$.event_id</value>
+          </property>
+        </processor>
+        <funnel>
+          <id>c490b6b5-0170-1000-0000-000035bc685d</id>
+          <position x="601.9534533822577" y="371.9240905653907" />
+        </funnel>
+        <connection>
+          <id>39f7b787-0995-3721-8d50-700838b7a256</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>6d78b76c-5463-3610-b8c8-4796fa09c59b</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>e1e2caef-8178-3c91-b3ca-99f05f619064</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>success</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>adc3f55b-8d9a-33d0-a7af-0d795fa234ba</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>d850fc04-df9a-36b7-b53f-8b397a1be69a</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>c7cc4e24-7d9a-3a17-8af1-ca655f46595f</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>matched</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>4a797ab8-fb0e-3c9a-b397-b3394eca1ce4</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>ba1b7e7e-a03c-3ace-9182-7f43569537e2</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>dbc236e3-8c68-3c6b-b1e9-d1fc8f57327d</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>split</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>4707ebf2-4b30-3e97-8abc-6ca8a9d168fd</id>
+          <name>Consecutive poll</name>
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>e1e2caef-8178-3c91-b3ca-99f05f619064</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>74d66e0e-0b65-36d2-96f1-4b836d2c4222</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>success</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>58cc41df-404e-309b-9df6-2ea67e1fe2b7</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>283bea4b-2774-3f2d-aabe-cf96989e9997</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>671c4e42-604f-389d-9cee-27431ca36448</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>success</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>5e84f4ae-bf61-37d8-b115-0af74b89a6aa</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>dbc236e3-8c68-3c6b-b1e9-d1fc8f57327d</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>d850fc04-df9a-36b7-b53f-8b397a1be69a</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>matched</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>a9d8c7a2-6b55-3684-9954-92934d5a69e8</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>74d66e0e-0b65-36d2-96f1-4b836d2c4222</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>192802be-4416-3abc-ba03-90934f2df860</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>success</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>c2a99429-58ab-325b-b755-dffeb30b0fc1</id>
+          <name />
+          <bendPoints />
+          <labelIndex>0</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>192802be-4416-3abc-ba03-90934f2df860</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>c490b6b5-0170-1000-0000-000035bc685d</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>FUNNEL</destinationType>
+          <relationship>No Retry</relationship>
+          <relationship>Failure</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>a146ab21-f626-3fa5-a736-fdeec786eaf8</id>
+          <name />
+          <bendPoints>
+            <bendPoint x="-312.47353014487453" y="970.3624699197178" />
+            <bendPoint x="-312.47353014487453" y="1020.3624699197178" />
+          </bendPoints>
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>c7cc4e24-7d9a-3a17-8af1-ca655f46595f</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>c7cc4e24-7d9a-3a17-8af1-ca655f46595f</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>failure</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>c022992b-534a-317a-943c-86142ee1cf81</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>81ec71a0-719a-3205-9360-6a535072f7c6</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>192802be-4416-3abc-ba03-90934f2df860</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>success</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>424c08f5-1ad1-3a0a-923c-c3fd988f7d2e</id>
+          <name>Update timestamp</name>
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>192802be-4416-3abc-ba03-90934f2df860</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>283bea4b-2774-3f2d-aabe-cf96989e9997</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>Response</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>5b9b78c7-890c-3fe0-a1b1-b2dc5bbd944b</id>
+          <name />
+          <bendPoints>
+            <bendPoint x="306.30889441763816" y="583.7042207790005" />
+            <bendPoint x="306.30889441763816" y="633.7042207790005" />
+          </bendPoints>
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>dbc236e3-8c68-3c6b-b1e9-d1fc8f57327d</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>dbc236e3-8c68-3c6b-b1e9-d1fc8f57327d</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>failure</relationship>
+          <relationship>unmatched</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>c98425f5-d4f3-36f7-b045-834923ca235a</id>
+          <name />
+          <bendPoints>
+            <bendPoint x="-911.4283280545671" y="539.9664353493931" />
+            <bendPoint x="-945.2909989530046" y="613.0546921853306" />
+          </bendPoints>
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>ba1b7e7e-a03c-3ace-9182-7f43569537e2</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>ba1b7e7e-a03c-3ace-9182-7f43569537e2</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>failure</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>d19c9d34-8896-39ff-9d2d-f29651b24c18</id>
+          <name />
+          <bendPoints>
+            <bendPoint x="967.4604101497307" y="864.0677052542044" />
+            <bendPoint x="967.4604101497307" y="914.0677052542044" />
+          </bendPoints>
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>671c4e42-604f-389d-9cee-27431ca36448</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>671c4e42-604f-389d-9cee-27431ca36448</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>failure</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>70fec2c7-4dd5-3dd1-92fa-59c3027bffb4</id>
+          <name />
+          <bendPoints>
+            <bendPoint x="294.48917603283667" y="-253.99569803676422" />
+            <bendPoint x="294.48917603283667" y="-203.99569803676422" />
+          </bendPoints>
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>e1e2caef-8178-3c91-b3ca-99f05f619064</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>e1e2caef-8178-3c91-b3ca-99f05f619064</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>failure</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>d19116d2-0da0-3f86-8fd3-3285a839648e</id>
+          <name>First poll</name>
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>e1e2caef-8178-3c91-b3ca-99f05f619064</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>81ec71a0-719a-3205-9360-6a535072f7c6</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>not-found</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>d375a69b-2139-3d9a-b6e3-48e0f69ec589</id>
+          <name>Update cache with new events</name>
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>192802be-4416-3abc-ba03-90934f2df860</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>ba1b7e7e-a03c-3ace-9182-7f43569537e2</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>Response</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>8d3dfbef-370e-374b-a6c6-89e4cdf6216b</id>
+          <name />
+          <bendPoints>
+            <bendPoint x="-320.5607955237681" y="759.2550630641567" />
+            <bendPoint x="-320.5607955237681" y="809.2550630641567" />
+          </bendPoints>
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>d850fc04-df9a-36b7-b53f-8b397a1be69a</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>d850fc04-df9a-36b7-b53f-8b397a1be69a</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>failure</relationship>
+          <relationship>unmatched</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>536817e5-12a1-3a94-82ae-7638937a07e8</id>
+          <name />
+          <bendPoints>
+            <bendPoint x="969.4771541470864" y="627.6551663734834" />
+            <bendPoint x="969.4771541470864" y="677.6551663734834" />
+          </bendPoints>
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>283bea4b-2774-3f2d-aabe-cf96989e9997</sourceId>
+          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>283bea4b-2774-3f2d-aabe-cf96989e9997</destinationId>
+          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>failure</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+      </processGroup>
+      <processGroup>
+        <id>c4a200ea-5317-332a-97a4-ff76f951ecde</id>
+        <name>GeoIP</name>
+        <position x="556.427978515625" y="673.0274658203125" />
+        <comment />
+        <processor>
+          <id>6292665b-f188-3551-b366-95476b5ac36f</id>
+          <name>Save to disk</name>
+          <position x="-357.78594755036767" y="656.471512008819" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.PutFile</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Directory</name>
+            <value>/opt/nifi/nifi-current/conf/</value>
+          </property>
+          <property>
+            <name>Conflict Resolution Strategy</name>
+            <value>replace</value>
+          </property>
+          <property>
+            <name>Create Missing Directories</name>
+            <value>true</value>
+          </property>
+          <property>
+            <name>Maximum File Count</name>
+          </property>
+          <property>
+            <name>Last Modified Time</name>
+          </property>
+          <property>
+            <name>Permissions</name>
+          </property>
+          <property>
+            <name>Owner</name>
+          </property>
+          <property>
+            <name>Group</name>
+          </property>
+          <autoTerminatedRelationship>success</autoTerminatedRelationship>
+        </processor>
+        <processor>
+          <id>c8b26516-0170-1000-ffff-fffffa357a77</id>
+          <name>InvokeHTTP</name>
+          <position x="-354.33263208075834" y="-1.6134650355261897" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.InvokeHTTP</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>STOPPED</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>HTTP Method</name>
+            <value>GET</value>
+          </property>
+          <property>
+            <name>Remote URL</name>
+            <value>https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&amp;license_key=${maxmind_key}&amp;suffix=tar.gz</value>
+          </property>
+          <property>
+            <name>SSL Context Service</name>
+            <value>83443c00-b286-366a-b8e0-2f51527ab8e5</value>
+          </property>
+          <property>
+            <name>Connection Timeout</name>
+            <value>5 secs</value>
+          </property>
+          <property>
+            <name>Read Timeout</name>
+            <value>15 secs</value>
+          </property>
+          <property>
+            <name>Include Date Header</name>
+            <value>True</value>
+          </property>
+          <property>
+            <name>Follow Redirects</name>
+            <value>True</value>
+          </property>
+          <property>
+            <name>Attributes to Send</name>
+          </property>
+          <property>
+            <name>Basic Authentication Username</name>
+          </property>
+          <property>
+            <name>Basic Authentication Password</name>
+          </property>
+          <property>
+            <name>proxy-configuration-service</name>
+          </property>
+          <property>
+            <name>Proxy Host</name>
+          </property>
+          <property>
+            <name>Proxy Port</name>
+          </property>
+          <property>
+            <name>Proxy Type</name>
+            <value>http</value>
+          </property>
+          <property>
+            <name>invokehttp-proxy-user</name>
+          </property>
+          <property>
+            <name>invokehttp-proxy-password</name>
+          </property>
+          <property>
+            <name>Put Response Body In Attribute</name>
+          </property>
+          <property>
+            <name>Max Length To Put In Attribute</name>
+            <value>256</value>
+          </property>
+          <property>
+            <name>Digest Authentication</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>Always Output Response</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>Add Response Headers to Request</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>Content-Type</name>
+            <value>${mime.type}</value>
+          </property>
+          <property>
+            <name>send-message-body</name>
+            <value>true</value>
+          </property>
+          <property>
+            <name>Use Chunked Encoding</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>Penalize on "No Retry"</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>use-etag</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>etag-max-cache-size</name>
+            <value>10MB</value>
+          </property>
+          <property>
+            <name>ignore-response-content</name>
+            <value>false</value>
+          </property>
+          <autoTerminatedRelationship>Original</autoTerminatedRelationship>
+        </processor>
+        <processor>
+          <id>b99eab15-7e38-33fa-87d1-41d772306d9c</id>
+          <name>Uncompress</name>
+          <position x="-359.13545011384423" y="239.87525101326742" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.CompressContent</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Mode</name>
+            <value>decompress</value>
+          </property>
+          <property>
+            <name>Compression Format</name>
+            <value>use mime.type attribute</value>
+          </property>
+          <property>
+            <name>Compression Level</name>
+            <value>1</value>
+          </property>
+          <property>
+            <name>Update Filename</name>
+            <value>false</value>
+          </property>
+        </processor>
+        <processor>
+          <id>c8b20333-0170-1000-0000-000010760524</id>
+          <name>RouteOnAttribute</name>
+          <position x="-353.2358571852152" y="-223.16639543708658" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.RouteOnAttribute</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Routing Strategy</name>
+            <value>Route to Property name</value>
+          </property>
+          <property>
+            <name>maxmind_key</name>
+            <value>${maxmind_key:length():gt(1)}</value>
+          </property>
+          <autoTerminatedRelationship>unmatched</autoTerminatedRelationship>
+        </processor>
+        <processor>
+          <id>aad91df7-8e80-3598-a3eb-9b000045b843</id>
+          <name>UnpackContent</name>
+          <position x="-358.13545011384423" y="448.82544805040084" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.UnpackContent</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>0 sec</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>RUNNING</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>Packaging Format</name>
+            <value>tar</value>
+          </property>
+          <property>
+            <name>File Filter</name>
+            <value>GeoLite2-City.mmdb</value>
+          </property>
+          <autoTerminatedRelationship>original</autoTerminatedRelationship>
+        </processor>
+        <processor>
+          <id>c8b1bafd-0170-1000-0000-0000753f5f5b</id>
+          <name>GenerateFlowFile</name>
+          <position x="-366.3974570271698" y="-455.687252544095" />
+          <styles />
+          <comment />
+          <class>org.apache.nifi.processors.standard.GenerateFlowFile</class>
+          <bundle>
+            <group>org.apache.nifi</group>
+            <artifact>nifi-standard-nar</artifact>
+            <version>1.11.4</version>
+          </bundle>
+          <maxConcurrentTasks>1</maxConcurrentTasks>
+          <schedulingPeriod>1 week</schedulingPeriod>
+          <penalizationPeriod>30 sec</penalizationPeriod>
+          <yieldPeriod>1 sec</yieldPeriod>
+          <bulletinLevel>WARN</bulletinLevel>
+          <lossTolerant>false</lossTolerant>
+          <scheduledState>STOPPED</scheduledState>
+          <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+          <executionNode>ALL</executionNode>
+          <runDurationNanos>0</runDurationNanos>
+          <property>
+            <name>File Size</name>
+            <value>0B</value>
+          </property>
+          <property>
+            <name>Batch Size</name>
+            <value>1</value>
+          </property>
+          <property>
+            <name>Data Format</name>
+            <value>Text</value>
+          </property>
+          <property>
+            <name>Unique FlowFiles</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>generate-ff-custom-text</name>
+          </property>
+          <property>
+            <name>character-set</name>
+            <value>UTF-8</value>
+          </property>
+        </processor>
+        <funnel>
+          <id>c2cac6f3-c926-3038-b685-68f71f76fda3</id>
+          <position x="457.8712158203125" y="380.06201171875" />
+        </funnel>
+        <connection>
+          <id>c8b21bba-0170-1000-0000-0000281b44ba</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>c8b1bafd-0170-1000-0000-0000753f5f5b</sourceId>
+          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>c8b20333-0170-1000-0000-000010760524</destinationId>
+          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>success</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>1d0b1e6f-7b01-34c5-82f8-c95918e700ae</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>b99eab15-7e38-33fa-87d1-41d772306d9c</sourceId>
+          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>c2cac6f3-c926-3038-b685-68f71f76fda3</destinationId>
+          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
+          <destinationType>FUNNEL</destinationType>
+          <relationship>failure</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>e8e86b3f-6936-3080-8eb6-036d532cb483</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>6292665b-f188-3551-b366-95476b5ac36f</sourceId>
+          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>c2cac6f3-c926-3038-b685-68f71f76fda3</destinationId>
+          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
+          <destinationType>FUNNEL</destinationType>
+          <relationship>failure</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>e2f43878-959f-379c-b898-6d7c3a72af44</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>b99eab15-7e38-33fa-87d1-41d772306d9c</sourceId>
+          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>aad91df7-8e80-3598-a3eb-9b000045b843</destinationId>
+          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>success</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>dc7524de-fb6c-3e02-8c60-f821d81aff29</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>aad91df7-8e80-3598-a3eb-9b000045b843</sourceId>
+          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>6292665b-f188-3551-b366-95476b5ac36f</destinationId>
+          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>success</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>39a11e18-3397-3f1a-a020-49b895ff6f81</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>aad91df7-8e80-3598-a3eb-9b000045b843</sourceId>
+          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>c2cac6f3-c926-3038-b685-68f71f76fda3</destinationId>
+          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
+          <destinationType>FUNNEL</destinationType>
+          <relationship>failure</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>c8b2e58b-0170-1000-ffff-ffff997c6e6c</id>
+          <name />
+          <bendPoints>
+            <bendPoint x="108.66736791924166" y="38.38653496447381" />
+            <bendPoint x="108.66736791924166" y="88.38653496447381" />
+          </bendPoints>
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>c8b26516-0170-1000-ffff-fffffa357a77</sourceId>
+          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>c8b26516-0170-1000-ffff-fffffa357a77</destinationId>
+          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>Retry</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>c8b29bee-0170-1000-ffff-fffff516df5d</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>c8b26516-0170-1000-ffff-fffffa357a77</sourceId>
+          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>b99eab15-7e38-33fa-87d1-41d772306d9c</destinationId>
+          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>Response</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>c8b2cb01-0170-1000-0000-000005baadda</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>c8b26516-0170-1000-ffff-fffffa357a77</sourceId>
+          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>c2cac6f3-c926-3038-b685-68f71f76fda3</destinationId>
+          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
+          <destinationType>FUNNEL</destinationType>
+          <relationship>No Retry</relationship>
+          <relationship>Failure</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>c8b5c90e-0170-1000-ffff-ffff9864e7e4</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>c8b20333-0170-1000-0000-000010760524</sourceId>
+          <sourceGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</sourceGroupId>
+          <sourceType>PROCESSOR</sourceType>
+          <destinationId>c8b26516-0170-1000-ffff-fffffa357a77</destinationId>
+          <destinationGroupId>c4a200ea-5317-332a-97a4-ff76f951ecde</destinationGroupId>
+          <destinationType>PROCESSOR</destinationType>
+          <relationship>maxmind_key</relationship>
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+      </processGroup>
+    </processGroup>
     <controllerService>
-      <id>bc97858d-0175-1000-0000-0000130a84f8</id>
-      <name>Nifi logs GrokReader</name>
+      <id>bf81debc-0171-1000-0000-00002936ae5a</id>
+      <name>Tor node CSV</name>
       <comment />
-      <class>org.apache.nifi.grok.GrokReader</class>
+      <class>org.apache.nifi.lookup.CSVRecordLookupService</class>
       <bundle>
         <group>org.apache.nifi</group>
-        <artifact>nifi-record-serialization-services-nar</artifact>
-        <version>1.12.1</version>
+        <artifact>nifi-lookup-services-nar</artifact>
+        <version>1.11.4</version>
       </bundle>
       <enabled>true</enabled>
       <property>
-        <name>schema-access-strategy</name>
-        <value>string-fields-from-grok-expression</value>
-      </property>
-      <property>
-        <name>schema-registry</name>
-      </property>
-      <property>
-        <name>schema-name</name>
-        <value>${schema.name}</value>
-      </property>
-      <property>
-        <name>schema-version</name>
-      </property>
-      <property>
-        <name>schema-branch</name>
-      </property>
-      <property>
-        <name>schema-text</name>
-        <value>${avro.schema}</value>
-      </property>
-      <property>
-        <name>Grok Pattern File</name>
+        <name>csv-file</name>
+        <value>/opt/nifi/nifi-current/conf/enrich/tornodes.csv</value>
       </property>
       <property>
-        <name>Grok Expression</name>
-        <value>%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} \[%{DATA:thread}\] %{DATA:class} %{GREEDYDATA:message}</value>
+        <name>csv-format</name>
+        <value>Default</value>
       </property>
       <property>
-        <name>no-match-behavior</name>
-        <value>append-to-previous-message</value>
+        <name>Character Set</name>
+        <value>UTF-8</value>
       </property>
-    </controllerService>
-    <controllerService>
-      <id>bc8e5957-0175-1000-0000-00003346421d</id>
-      <name>Extract message field</name>
-      <comment />
-      <class>org.apache.nifi.text.FreeFormTextRecordSetWriter</class>
-      <bundle>
-        <group>org.apache.nifi</group>
-        <artifact>nifi-record-serialization-services-nar</artifact>
-        <version>1.12.1</version>
-      </bundle>
-      <enabled>true</enabled>
       <property>
-        <name>Text</name>
-        <value>${message}</value>
+        <name>lookup-key-column</name>
+        <value>ip_addr</value>
       </property>
       <property>
-        <name>Character Set</name>
-        <value>UTF-8</value>
+        <name>ignore-duplicates</name>
+        <value>true</value>
       </property>
     </controllerService>
     <controllerService>
@@ -11503,7 +8591,7 @@
       <bundle>
         <group>org.apache.nifi</group>
         <artifact>nifi-lookup-services-nar</artifact>
-        <version>1.12.1</version>
+        <version>1.11.4</version>
       </bundle>
       <enabled>true</enabled>
       <property>
@@ -11523,7 +8611,7 @@
       <bundle>
         <group>org.apache.nifi</group>
         <artifact>nifi-distributed-cache-services-nar</artifact>
-        <version>1.12.1</version>
+        <version>1.11.4</version>
       </bundle>
       <enabled>true</enabled>
       <property>
@@ -11542,46 +8630,6 @@
         <value>30 secs</value>
       </property>
     </controllerService>
-    <controllerService>
-      <id>83443c00-b286-366a-b8e0-2f51527ab8e5</id>
-      <name>Soctools CA</name>
-      <comment />
-      <class>org.apache.nifi.ssl.StandardRestrictedSSLContextService</class>
-      <bundle>
-        <group>org.apache.nifi</group>
-        <artifact>nifi-ssl-context-service-nar</artifact>
-        <version>1.12.1</version>
-      </bundle>
-      <enabled>true</enabled>
-      <property>
-        <name>Keystore Filename</name>
-      </property>
-      <property>
-        <name>Keystore Password</name>
-      </property>
-      <property>
-        <name>key-password</name>
-      </property>
-      <property>
-        <name>Keystore Type</name>
-      </property>
-      <property>
-        <name>Truststore Filename</name>
-        <value>/opt/nifi/nifi-current/conf/cacerts.jks</value>
-      </property>
-      <property>
-        <name>Truststore Password</name>
-        <value>{{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}}</value>
-      </property>
-      <property>
-        <name>Truststore Type</name>
-        <value>JKS</value>
-      </property>
-      <property>
-        <name>SSL Protocol</name>
-        <value>TLS</value>
-      </property>
-    </controllerService>
     <controllerService>
       <id>17b30955-5464-3709-8a32-69a459850cfa</id>
       <name>Inferred JsonRecordSetWriter</name>
@@ -11590,7 +8638,7 @@
       <bundle>
         <group>org.apache.nifi</group>
         <artifact>nifi-record-serialization-services-nar</artifact>
-        <version>1.12.1</version>
+        <version>1.11.4</version>
       </bundle>
       <enabled>true</enabled>
       <property>
@@ -11600,10 +8648,6 @@
       <property>
         <name>schema-cache</name>
       </property>
-      <property>
-        <name>schema-protocol-version</name>
-        <value>1</value>
-      </property>
       <property>
         <name>schema-access-strategy</name>
         <value>inherit-record-schema</value>
@@ -11656,47 +8700,74 @@
       </property>
     </controllerService>
     <controllerService>
-      <id>70ea12d7-0176-1000-ffff-ffffee2ee306</id>
-      <name>Mysql log GrokReader</name>
+      <id>8b1dd8bb-0170-1000-0000-000007446e6a</id>
+      <name>Misp DistributedMapCacheServer</name>
       <comment />
-      <class>org.apache.nifi.grok.GrokReader</class>
+      <class>org.apache.nifi.distributed.cache.server.map.DistributedMapCacheServer</class>
       <bundle>
         <group>org.apache.nifi</group>
-        <artifact>nifi-record-serialization-services-nar</artifact>
-        <version>1.12.1</version>
+        <artifact>nifi-distributed-cache-services-nar</artifact>
+        <version>1.11.4</version>
       </bundle>
       <enabled>true</enabled>
       <property>
-        <name>schema-access-strategy</name>
-        <value>string-fields-from-grok-expression</value>
+        <name>Port</name>
+        <value>4557</value>
       </property>
       <property>
-        <name>schema-registry</name>
+        <name>Maximum Cache Entries</name>
+        <value>10000</value>
       </property>
       <property>
-        <name>schema-name</name>
-        <value>${schema.name}</value>
+        <name>Eviction Strategy</name>
+        <value>Least Frequently Used</value>
       </property>
       <property>
-        <name>schema-version</name>
+        <name>Persistence Directory</name>
+        <value>/opt/nifi/nifi-current/conf/</value>
       </property>
       <property>
-        <name>schema-branch</name>
+        <name>SSL Context Service</name>
       </property>
+    </controllerService>
+    <controllerService>
+      <id>83443c00-b286-366a-b8e0-2f51527ab8e5</id>
+      <name>Common CA</name>
+      <comment />
+      <class>org.apache.nifi.ssl.StandardRestrictedSSLContextService</class>
+      <bundle>
+        <group>org.apache.nifi</group>
+        <artifact>nifi-ssl-context-service-nar</artifact>
+        <version>1.11.4</version>
+      </bundle>
+      <enabled>true</enabled>
       <property>
-        <name>schema-text</name>
-        <value>${avro.schema}</value>
+        <name>Keystore Filename</name>
+      </property>
+      <property>
+        <name>Keystore Password</name>
+      </property>
+      <property>
+        <name>key-password</name>
+      </property>
+      <property>
+        <name>Keystore Type</name>
+      </property>
+      <property>
+        <name>Truststore Filename</name>
+        <value>/opt/nifi/nifi-current/conf/cacerts.jks</value>
       </property>
       <property>
-        <name>Grok Pattern File</name>
+        <name>Truststore Password</name>
+        <value>enc{a4ca3924cb58cb8c28fec2766ce1a66f9bec9ca13f5cb90008f3b0719d4777b2}</value>
       </property>
       <property>
-        <name>Grok Expression</name>
-        <value>%{GREEDYDATA:timestamp} %{DATA:process}: %{GREEDYDATA:message}</value>
+        <name>Truststore Type</name>
+        <value>JKS</value>
       </property>
       <property>
-        <name>no-match-behavior</name>
-        <value>append-to-previous-message</value>
+        <name>SSL Protocol</name>
+        <value>TLS</value>
       </property>
     </controllerService>
     <controllerService>
@@ -11707,7 +8778,7 @@
       <bundle>
         <group>org.apache.nifi</group>
         <artifact>nifi-record-serialization-services-nar</artifact>
-        <version>1.12.1</version>
+        <version>1.11.4</version>
       </bundle>
       <enabled>true</enabled>
       <property>
@@ -11744,13 +8815,13 @@
         <name>Timestamp Format</name>
       </property>
     </controllerService>
-    <variable name="misp_token" value="{{lookup('file','{{playbook_dir}}/secrets/tokens/misp')}}" />
+    <variable name="misp_token" value="{{ misp_token }}" />
     <variable name="maxmind_key" value="{{ maxmind_key }}" />
-    <variable name="misp_first_interval" value="60d" />
+    <variable name="misp_ip_first_interval" value="60d" />
     <variable name="elastic_username" value="{{ elastic_username }}" />
     <variable name="misp_url" value="{{ misp_url }}" />
-    <variable name="elastic_url" value="https://{{ soctoolsproxy }}:9200" />
-    <variable name="elastic_password" value="{{lookup('password', '{{playbook_dir}}/secrets/passwords/odfees_adminpass')}}" />
+    <variable name="elastic_url" value="https://{{ dslproxy }}:9200" />
+    <variable name="elastic_password" value="{{ odfees_adminpass }}" />
   </rootGroup>
   <controllerServices />
   <reportingTasks />
diff --git a/roles/nifi/templates/nifi.properties.j2 b/roles/nifi/templates/nifi.properties.j2
index c2dafaff8e4019ebc0e5c6a206b3378863110f80..426e5ce0d6c5975ff27cef19449d2deea9a93b20 100644
--- a/roles/nifi/templates/nifi.properties.j2
+++ b/roles/nifi/templates/nifi.properties.j2
@@ -120,8 +120,8 @@ nifi.provenance.repository.buffer.size=100000
 
 # Component Status Repository
 nifi.components.status.repository.implementation=org.apache.nifi.controller.status.history.VolatileComponentStatusRepository
-nifi.components.status.repository.buffer.size=288
-nifi.components.status.snapshot.frequency=5 min
+nifi.components.status.repository.buffer.size=1440
+nifi.components.status.snapshot.frequency=1 min
 
 # Site to Site properties
 nifi.remote.input.host={{ inventory_hostname }}
@@ -143,7 +143,7 @@ nifi.web.jetty.working.directory=./work/jetty
 nifi.web.jetty.threads=200
 nifi.web.max.header.size=16 KB
 nifi.web.proxy.context.path=/nifi
-nifi.web.proxy.host={{ soctoolsproxy }}:9443
+nifi.web.proxy.host={{ dslproxy }}:9443
 
 # security properties #
 nifi.sensitive.props.key=
@@ -154,21 +154,21 @@ nifi.sensitive.props.additional.keys=
 
 nifi.security.keystore=./conf/{{ inventory_hostname }}.p12
 nifi.security.keystoreType=pkcs12
-nifi.security.keystorePasswd={{lookup('password', '{{playbook_dir}}/secrets/passwords/keystore')}}
+nifi.security.keystorePasswd={{ kspass}}
 #nifi.security.keyPasswd=IP7Jgn7amiAYi3LRSRk5LGg3t4zlfh0kEKcAaaoxHDo
 nifi.security.truststore=./conf/cacerts.jks
 nifi.security.truststoreType=jks
-nifi.security.truststorePasswd={{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}}
+nifi.security.truststorePasswd={{ tspass}}
 nifi.security.user.authorizer=managed-authorizer
 nifi.security.user.login.identity.provider=
 nifi.security.ocsp.responder.url=
 nifi.security.ocsp.responder.certificate=
 
 # OpenId Connect SSO Properties #
-nifi.security.user.oidc.discovery.url=https://{{soctoolsproxy}}:12443/auth/realms/{{openid_realm}}/.well-known/openid-configuration
-nifi.security.user.oidc.connect.timeout=10 secs
-nifi.security.user.oidc.read.timeout=10 secs
-nifi.security.user.oidc.client.id=soctools-nifi
+nifi.security.user.oidc.discovery.url=https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/.well-known/openid-configuration
+nifi.security.user.oidc.connect.timeout=5 secs
+nifi.security.user.oidc.read.timeout=5 secs
+nifi.security.user.oidc.client.id=dsoclab-nifi
 nifi.security.user.oidc.client.secret={{nifisecret.value}}
 nifi.security.user.oidc.preferred.jwsalgorithm=
 nifi.security.user.oidc.additional.scopes={{openid_scope}}
@@ -226,9 +226,9 @@ nifi.cluster.load.balance.max.thread.count=8
 nifi.cluster.load.balance.comms.timeout=30 sec
 
 # zookeeper properties, used for cluster management #
-nifi.zookeeper.connect.string=soctools-zookeeper:2181
-nifi.zookeeper.connect.timeout=60 secs
-nifi.zookeeper.session.timeout=60 secs
+nifi.zookeeper.connect.string=dsoclab-zookeeper:2181
+nifi.zookeeper.connect.timeout=3 secs
+nifi.zookeeper.session.timeout=3 secs
 nifi.zookeeper.root.node=/nifi
 
 # Zookeeper properties for the authentication scheme used when creating acls on znodes used for cluster management
diff --git a/roles/odfees/files/Arne Oslebo.p12 b/roles/odfees/files/Arne Oslebo.p12
new file mode 100644
index 0000000000000000000000000000000000000000..273c8018b7bed8f691d9e9c24f5fa9d6425a0e79
Binary files /dev/null and b/roles/odfees/files/Arne Oslebo.p12 differ
diff --git a/roles/odfees/files/Bozidar Proevski.p12 b/roles/odfees/files/Bozidar Proevski.p12
new file mode 100644
index 0000000000000000000000000000000000000000..24010a64063a960d554cd4e895e17b9e2e62362a
Binary files /dev/null and b/roles/odfees/files/Bozidar Proevski.p12 differ
diff --git a/roles/odfees/files/SOCTOOLS-CA.crt b/roles/odfees/files/SOCTOOLS-CA.crt
new file mode 100644
index 0000000000000000000000000000000000000000..04b1f203d036d2219c23c4ea3630115d68510eb8
--- /dev/null
+++ b/roles/odfees/files/SOCTOOLS-CA.crt
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
+BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
+UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
+Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
+M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
+c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
+tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
+ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
+8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
+EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
+JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
+z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
+XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
+CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
+nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
+GPiQTFGknE1U
+-----END CERTIFICATE-----
diff --git a/roles/odfees/files/cacerts.jks b/roles/odfees/files/cacerts.jks
new file mode 100644
index 0000000000000000000000000000000000000000..9d4001b7d9a466941cda896b6bf145bf2f02020c
Binary files /dev/null and b/roles/odfees/files/cacerts.jks differ
diff --git a/roles/odfees/files/dsoclab-odfe-1.p12 b/roles/odfees/files/dsoclab-odfe-1.p12
new file mode 100644
index 0000000000000000000000000000000000000000..ed4bd60a1d96595774f510ecfd8c864a09e8d338
Binary files /dev/null and b/roles/odfees/files/dsoclab-odfe-1.p12 differ
diff --git a/roles/odfees/files/dsoclab-odfe-2.p12 b/roles/odfees/files/dsoclab-odfe-2.p12
new file mode 100644
index 0000000000000000000000000000000000000000..106170ff7a325bccade7cfecf2f60642e866a4a0
Binary files /dev/null and b/roles/odfees/files/dsoclab-odfe-2.p12 differ
diff --git a/roles/odfees/tasks/main.yml b/roles/odfees/tasks/main.yml
index 016e8786ed6a31238dd2c7efc68e9aec7c7a9912..ae6ae65701c4bebcf8cbd04bc4d4ddb9e246acfd 100644
--- a/roles/odfees/tasks/main.yml
+++ b/roles/odfees/tasks/main.yml
@@ -1,17 +1,118 @@
 ---
 
-- include: start.yml
+- name: Copy cacert to ca-trust dir
+  remote_user: root
+  copy:
+    src: "files/{{ca_cn}}.crt"
+    dest: /etc/pki/ca-trust/source/anchors/ca.crt
   tags:
-   - start
-- include: stop.yml
+    - start
+
+- name: Install cacert to root truststore
+  remote_user: root
+  command: "update-ca-trust"
+  tags:
+    - start
+
+- name: Copy certificates in odfe conf dir
+  copy:
+    src:  "{{ item }}"
+    dest: "config/{{ item }}"
+    mode: 0600
+  with_items:
+    - "{{ inventory_hostname }}.p12"
+    - cacerts.jks
+    - "{{soctools_users[0].CN}}.p12"
+  tags:
+    - start
+
+- name: Configure sysconfig
+  template:
+    src: sysconfig_elasticsearch.j2
+    dest: sysconfig_elasticsearch
+  tags:
+    - start
+
+- name: Copy sysconfig to /etc
+  command: "cp sysconfig_elasticsearch /etc/sysconfig/elasticsearch"
+  tags: 
+    - start
+
+- name: Configure odfe properties
+  template:
+    src: "config/{{item}}.j2"
+    dest: "config/{{item}}"
+  with_items:
+    - elasticsearch.yml
+    - jvm.options
+    - log4j2.properties
+  tags:
+    - start
+
+- name: Change password for admin
+  command: "bash plugins/opendistro_security/tools/hash.sh -p {{odfees_adminpass}}"
+  register: adminhash
+  # when: "'{{groups['odfeescontainers'][0]}}' in inventory_hostname"
+  tags:
+    - start
+
+- set_fact:
+    adminhashpwd: "{{ adminhash.stdout }}"
+    #adminhashpwd: "{{ hostvars[groups['odfeescontainers'][0]]['adminhash.stdout'] }}"
+  tags:
+    - start
+
+- name: Change password for cortex
+  command: "bash plugins/opendistro_security/tools/hash.sh -p {{cortex_odfe_pass}}"
+  register: cortexhash
+  # when: "'{{groups['odfeescontainers'][0]}}' in inventory_hostname"
   tags:
-   - stop
-   - stop-odfees
-- include: update-config.yml
+    - start
+
+- set_fact:
+    cortexhashpwd: "{{ cortexhash.stdout }}"
+    #adminhashpwd: "{{ hostvars[groups['odfeescontainers'][0]]['adminhash.stdout'] }}"
   tags:
-   - update-config
-   - update-odfees-config
-- include: restart.yml
+    - start
+
+- name: Configure opendistro_security properties
+  template:
+    src: "securityconfig/{{item}}.j2"
+    dest: "plugins/opendistro_security/securityconfig/{{item}}"
+  with_items:
+    - internal_users.yml
+    - config.yml
+    - roles_mapping.yml
   tags:
-   - restart
-   - restart-odfees
+    - start
+
+#- name: Exit here to test ODFE
+#  meta: end_play
+#  tags:
+#    - start
+
+- name: Start OpenDistro for Elasticsearch
+  command: "/usr/share/elasticsearch/bin/elasticsearch -p {{ inventory_hostname }}.pid -d"
+  tags:
+    - start
+
+- name: Wait for ElasticSearch
+  wait_for:
+    host: "{{groups['odfeescontainers'][0]}}"
+    port: 9200
+    state: started
+    delay: 5
+  tags:
+    - start
+
+- name: Configure OpenDistro security
+  command: "bash ./plugins/opendistro_security/tools/securityadmin.sh -h {{groups['odfeescontainers'][0]}} -cd /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/ -ks '/usr/share/elasticsearch/config/{{soctools_users[0].CN}}.p12' -kspass {{soctools_users[0].password}} -ts /usr/share/elasticsearch/config/cacerts.jks -tspass {{tspass}} -cn dsoclab-cluster"
+  when: "'{{groups['odfeescontainers'][0]}}' in inventory_hostname"
+  tags:
+    - start
+
+- name: Stop OpenDistro for Elasticsearch
+  command: "pkill -SIGTERM -F {{inventory_hostname}}.pid"
+  tags:
+    - stop
+
diff --git a/roles/odfees/tasks/restart.yml b/roles/odfees/tasks/restart.yml
deleted file mode 100644
index 130f200cb0e139f54001e92ebb0bff025e803136..0000000000000000000000000000000000000000
--- a/roles/odfees/tasks/restart.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-
-- name: Restart OpenDistro for Elasticsearch
-  remote_user: root
-  command: "supervisorctl restart odfe"
-
-- name: Wait for ElasticSearch
-  remote_user: root
-  wait_for:
-    host: "{{groups['odfeescontainers'][0]}}"
-    port: 9200
-    state: started
-    delay: 5
-
diff --git a/roles/odfees/tasks/start.yml b/roles/odfees/tasks/start.yml
deleted file mode 100644
index 622a1cd65e9e634472048a5ab79207ffa60850fd..0000000000000000000000000000000000000000
--- a/roles/odfees/tasks/start.yml
+++ /dev/null
@@ -1,102 +0,0 @@
----
-
-- name: Copy cacert to ca-trust dir
-  remote_user: root
-  copy:
-    src: "{{playbook_dir}}/secrets/CA/ca.crt"
-    dest: /etc/pki/ca-trust/source/anchors/ca.crt
-
-- name: Install cacert to root truststore
-  remote_user: root
-  command: "update-ca-trust"
-
-- name: Copy certificates in odfe conf dir
-  remote_user: elasticsearch
-  copy:
-    src:  "{{ item }}"
-    dest: "config/"
-    mode: 0600
-  with_items:
-    - "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.p12"
-    - "{{playbook_dir}}/secrets/CA/cacerts.jks"
-    - "{{playbook_dir}}/secrets/CA/private/{{soctools_users[0].CN}}.p12"
-
-- name: Configure sysconfig
-  remote_user: elasticsearch
-  template:
-    src: sysconfig_elasticsearch.j2
-    dest: sysconfig_elasticsearch
-
-- name: Copy sysconfig to /etc
-  remote_user: elasticsearch
-  command: "cp sysconfig_elasticsearch /etc/sysconfig/elasticsearch"
-
-- name: Configure odfe properties
-  remote_user: elasticsearch
-  template:
-    src: "config/{{item}}.j2"
-    dest: "config/{{item}}"
-  with_items:
-    - elasticsearch.yml
-    - jvm.options
-    - log4j2.properties
-
-- name: Change password for admin
-  remote_user: elasticsearch
-  command: "bash plugins/opendistro_security/tools/hash.sh -p {{lookup('password', '{{playbook_dir}}/secrets/passwords/odfees_adminpass')}}"
-  register: adminhash
-  # when: "'{{groups['odfeescontainers'][0]}}' in inventory_hostname"
-
-- set_fact:
-    adminhashpwd: "{{ adminhash.stdout }}"
-    #adminhashpwd: "{{ hostvars[groups['odfeescontainers'][0]]['adminhash.stdout'] }}"
-  remote_user: elasticsearch
-
-- name: Change password for cortex
-  remote_user: elasticsearch
-  command: "bash plugins/opendistro_security/tools/hash.sh -p {{lookup('password', '{{playbook_dir}}/secrets/passwords/cortex_odfe')}}"
-  register: cortexhash
-  # when: "'{{groups['odfeescontainers'][0]}}' in inventory_hostname"
-
-- set_fact:
-    cortexhashpwd: "{{ cortexhash.stdout }}"
-    #adminhashpwd: "{{ hostvars[groups['odfeescontainers'][0]]['adminhash.stdout'] }}"
-  remote_user: elasticsearch
-
-- name: Configure opendistro_security properties
-  remote_user: elasticsearch
-  template:
-    src: "securityconfig/{{item}}.j2"
-    dest: "plugins/opendistro_security/securityconfig/{{item}}"
-  with_items:
-    - internal_users.yml
-    - config.yml
-    - roles_mapping.yml
-
-#- name: Exit here to test ODFE
-#  meta: end_play
-
-- name: Start OpenDistro for Elasticsearch
-  remote_user: root
-  command: "supervisorctl start odfe"
-
-- name: Wait for ElasticSearch
-  remote_user: root
-  wait_for:
-    host: "{{groups['odfeescontainers'][0]}}"
-    port: 9200
-    state: started
-    delay: 5
-
-- name: Configure OpenDistro security
-  remote_user: elasticsearch
-  command: "bash ./plugins/opendistro_security/tools/securityadmin.sh -h {{groups['odfeescontainers'][0]}} -cd /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/ -ks '/usr/share/elasticsearch/config/{{soctools_users[0].CN}}.p12' -kspass {{lookup('password', '{{playbook_dir}}/secrets/passwords/{{soctools_users[0].CN}}')}} {{lookup('password','{{playbook_dir}}/secrets/passwords/{{soctools_users[0].CN}}')}} -ts /usr/share/elasticsearch/config/cacerts.jks -tspass {{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}} -cn soctools-cluster"
-  when: "'{{groups['odfeescontainers'][0]}}' in inventory_hostname"
-
-- name: Set Autostart for supervisord's services
-  remote_user: root
-  replace:
-    path: /etc/supervisord.conf
-    regexp: '^autostart=false$'
-    replace: 'autostart=true'
-
diff --git a/roles/odfees/tasks/stop.yml b/roles/odfees/tasks/stop.yml
deleted file mode 100644
index 1302cc8bf86e04950e347eb12436b0a6cc0aac0f..0000000000000000000000000000000000000000
--- a/roles/odfees/tasks/stop.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-
-- name: Stop OpenDistro for Elasticsearch
-  remote_user: root
-  command: "supervisorctl stop odfe"
-
diff --git a/roles/odfees/tasks/update-config.yml b/roles/odfees/tasks/update-config.yml
deleted file mode 100644
index a40d487df503d8edc00dd641352d61d3f892042e..0000000000000000000000000000000000000000
--- a/roles/odfees/tasks/update-config.yml
+++ /dev/null
@@ -1,32 +0,0 @@
----
-
-- name: Configure sysconfig
-  remote_user: elasticsearch
-  template:
-    src: sysconfig_elasticsearch.j2
-    dest: sysconfig_elasticsearch
-
-- name: Copy sysconfig to /etc
-  remote_user: elasticsearch
-  command: "cp sysconfig_elasticsearch /etc/sysconfig/elasticsearch"
-
-- name: Configure odfe properties
-  remote_user: elasticsearch
-  template:
-    src: "config/{{item}}.j2"
-    dest: "config/{{item}}"
-  with_items:
-    - elasticsearch.yml
-    - jvm.options
-    - log4j2.properties
-
-- name: Configure opendistro_security properties
-  remote_user: elasticsearch
-  template:
-    src: "securityconfig/{{item}}.j2"
-    dest: "plugins/opendistro_security/securityconfig/{{item}}"
-  with_items:
-    - internal_users.yml
-    - config.yml
-    - roles_mapping.yml
-
diff --git a/roles/odfees/templates/config/elasticsearch.yml.j2 b/roles/odfees/templates/config/elasticsearch.yml.j2
index 5e8e18fc2999f2622cca3b0c229265a379c49b44..ef61cd36dac6bdefebeaeab66a3c15b97aa3a25d 100644
--- a/roles/odfees/templates/config/elasticsearch.yml.j2
+++ b/roles/odfees/templates/config/elasticsearch.yml.j2
@@ -1,4 +1,4 @@
-cluster.name: "soctools-cluster"
+cluster.name: "dsoclab-cluster"
 #network.host: 0.0.0.0
 network.host: {{ inventory_hostname }}
 discovery.seed_hosts:
@@ -30,11 +30,11 @@ cluster.initial_master_nodes:
 
 opendistro_security.ssl.transport.keystore_type: pkcs12
 opendistro_security.ssl.transport.keystore_filepath: {{ inventory_hostname }}.p12
-opendistro_security.ssl.transport.keystore_password: "{{lookup('password', '{{playbook_dir}}/secrets/passwords/keystore')}}"
+opendistro_security.ssl.transport.keystore_password: {{ kspass }}
 #opendistro_security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
 opendistro_security.ssl.transport.truststore_type: jks
 opendistro_security.ssl.transport.truststore_filepath: cacerts.jks
-opendistro_security.ssl.transport.truststore_password: "{{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}}"
+opendistro_security.ssl.transport.truststore_password: {{ tspass }}
 opendistro_security.ssl.transport.enforce_hostname_verification: false
 
 opendistro_security.ssl.http.enabled: true
@@ -42,10 +42,10 @@ opendistro_security.ssl.http.enabled: true
 # opendistro_security.ssl.http.pemkey_filepath: esnode-key.pem
 opendistro_security.ssl.http.keystore_type: pkcs12
 opendistro_security.ssl.http.keystore_filepath: {{ inventory_hostname }}.p12
-opendistro_security.ssl.http.keystore_password: "{{lookup('password', '{{playbook_dir}}/secrets/passwords/keystore')}}"
+opendistro_security.ssl.http.keystore_password: {{ kspass }}
 opendistro_security.ssl.http.truststore_type: jks
 opendistro_security.ssl.http.truststore_filepath: cacerts.jks
-opendistro_security.ssl.http.truststore_password: "{{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}}"
+opendistro_security.ssl.http.truststore_password: {{ tspass }}
 #opendistro_security.ssl.http.pemtrustedcas_filepath: root-ca.pem
 #opendistro_security.ssl.http.clientauth_mode: optional
 opendistro_security.allow_unsafe_democertificates: false
diff --git a/roles/odfees/templates/config/log4j2.properties.j2 b/roles/odfees/templates/config/log4j2.properties.j2
index ee01d9a1406720d46fe983efacf16cc8d52c3729..9ad290ad82679309319cee88bee3eaf9d49814eb 100644
--- a/roles/odfees/templates/config/log4j2.properties.j2
+++ b/roles/odfees/templates/config/log4j2.properties.j2
@@ -5,27 +5,5 @@ appender.console.name = console
 appender.console.layout.type = PatternLayout
 appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n
 
-appender.rolling.type = RollingFile
-appender.rolling.name = rolling
-appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.json
-appender.rolling.layout.type = ESJsonLayout
-appender.rolling.layout.type_name = server
-appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.json.gz
-appender.rolling.policies.type = Policies
-appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
-appender.rolling.policies.time.interval = 1
-appender.rolling.policies.time.modulate = true
-appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
-appender.rolling.policies.size.size = 20MB
-appender.rolling.strategy.type = DefaultRolloverStrategy
-appender.rolling.strategy.fileIndex = nomax
-appender.rolling.strategy.action.type = Delete
-appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path}
-appender.rolling.strategy.action.condition.type = IfFileName
-appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-*
-appender.rolling.strategy.action.condition.nested_condition.type = IfAccumulatedFileSize
-appender.rolling.strategy.action.condition.nested_condition.exceeds = 100MB
-
 rootLogger.level = info
-#rootLogger.appenderRef.console.ref = console
-rootLogger.appenderRef.rolling.ref = rolling
+rootLogger.appenderRef.console.ref = console
diff --git a/roles/odfees/templates/securityconfig/config.yml.j2 b/roles/odfees/templates/securityconfig/config.yml.j2
index 49368676333bb6153b32e988dcd9bd60764426b2..26e77a4fa806fe68767015fc40ad620117985ac5 100644
--- a/roles/odfees/templates/securityconfig/config.yml.j2
+++ b/roles/odfees/templates/securityconfig/config.yml.j2
@@ -116,7 +116,7 @@ config:
           config:
             subject_key: {{openid_subjkey}} 
             roles_key: roles
-            openid_connect_url: https://{{soctoolsproxy}}:12443/auth/realms/{{openid_realm}}/.well-known/openid-configuration
+            openid_connect_url: https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/.well-known/openid-configuration
             enable_ssl: true
             verify_hostnames: false
             pemtrustedcas_filepath: "/usr/share/elasticsearch/config/{{ca_cn}}.crt"
diff --git a/roles/odfekibana/files/Arne Oslebo.p12 b/roles/odfekibana/files/Arne Oslebo.p12
new file mode 100644
index 0000000000000000000000000000000000000000..273c8018b7bed8f691d9e9c24f5fa9d6425a0e79
Binary files /dev/null and b/roles/odfekibana/files/Arne Oslebo.p12 differ
diff --git a/roles/odfekibana/files/Bozidar Proevski.p12 b/roles/odfekibana/files/Bozidar Proevski.p12
new file mode 100644
index 0000000000000000000000000000000000000000..24010a64063a960d554cd4e895e17b9e2e62362a
Binary files /dev/null and b/roles/odfekibana/files/Bozidar Proevski.p12 differ
diff --git a/roles/odfekibana/files/SOCTOOLS-CA.crt b/roles/odfekibana/files/SOCTOOLS-CA.crt
new file mode 100644
index 0000000000000000000000000000000000000000..04b1f203d036d2219c23c4ea3630115d68510eb8
--- /dev/null
+++ b/roles/odfekibana/files/SOCTOOLS-CA.crt
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
+BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
+UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
+Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
+M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
+c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
+tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
+ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
+8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
+EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
+JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
+z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
+XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
+CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
+nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
+GPiQTFGknE1U
+-----END CERTIFICATE-----
diff --git a/roles/odfekibana/files/cacerts.jks b/roles/odfekibana/files/cacerts.jks
new file mode 100644
index 0000000000000000000000000000000000000000..9d4001b7d9a466941cda896b6bf145bf2f02020c
Binary files /dev/null and b/roles/odfekibana/files/cacerts.jks differ
diff --git a/roles/odfekibana/files/dsoclab-kibana.crt b/roles/odfekibana/files/dsoclab-kibana.crt
new file mode 100644
index 0000000000000000000000000000000000000000..f47839f66eda87805afce110cf5d0c2e136e8abe
--- /dev/null
+++ b/roles/odfekibana/files/dsoclab-kibana.crt
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            7d:fc:33:45:75:73:e8:f1:60:94:a7:4e:6b:2f:23:f1
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:27 2020 GMT
+            Not After : Oct 15 10:47:27 2023 GMT
+        Subject: CN=dsoclab-kibana
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:ce:4f:c9:0f:84:4d:4e:7b:dc:11:90:c9:49:a8:
+                    f3:60:44:a8:25:1b:59:83:64:0b:d1:e0:bc:59:50:
+                    22:a5:f5:88:7a:c8:40:65:e4:22:3d:77:d2:8f:9e:
+                    30:17:80:5e:20:85:bc:70:67:61:cb:d8:e2:9f:9a:
+                    7c:7b:a6:e8:4e:79:7b:cd:86:6e:26:52:37:45:b6:
+                    ab:b7:6f:40:8f:7a:55:8b:d1:91:cc:21:6f:55:37:
+                    50:3b:72:1f:2d:3b:bf:75:47:91:88:6a:1c:ea:39:
+                    dd:8b:25:31:55:0e:bc:52:6f:bf:0b:96:ef:e3:12:
+                    5c:da:63:22:54:e5:b3:95:8b:02:9e:57:3e:7b:4f:
+                    a0:f5:6f:07:a8:5b:45:7c:cb:34:83:77:34:a5:b1:
+                    ff:05:12:88:8f:cc:c4:05:5d:e9:e7:7d:2b:12:fa:
+                    bb:4d:25:f4:f7:04:e7:95:06:95:ea:a9:c4:75:4e:
+                    f7:03:67:2d:9c:9a:f4:01:f6:2a:8d:6c:6d:d0:59:
+                    a9:ce:1f:12:b1:76:39:c8:07:d4:20:73:1e:f3:9c:
+                    b9:67:83:3b:a8:7c:6e:fb:86:ea:3f:6a:8e:98:4c:
+                    39:a9:d1:4d:be:9f:0a:43:49:1b:fd:09:67:b6:62:
+                    71:fd:87:9a:63:25:00:aa:c7:a1:4d:23:12:e3:56:
+                    0f:6f
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                50:F3:7D:4F:B2:8C:A5:09:FD:64:CB:C1:97:F1:F8:49:C8:6B:30:4D
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-kibana, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         ae:be:82:6f:6d:e6:c4:cb:c3:2a:d9:d6:ee:11:52:a6:de:89:
+         9e:31:a3:e2:86:07:e9:d1:fe:95:c9:a2:38:90:df:05:ff:e5:
+         99:27:e8:d8:55:00:8a:85:b3:15:a5:e5:5b:ce:4e:4f:01:3b:
+         74:a4:b2:09:fc:6e:95:92:94:2f:76:0d:c7:97:1b:78:c1:08:
+         1e:3a:0e:fa:a6:ab:db:1e:22:26:86:39:f4:bb:89:a1:a1:d1:
+         55:f6:c3:ff:9b:a5:eb:1b:6a:84:8a:1d:3c:5f:7c:03:0d:08:
+         42:6f:d7:14:86:61:38:66:65:f7:c2:86:68:db:81:e9:41:0f:
+         82:cf:bb:be:fd:d7:94:48:cc:f8:cf:4a:40:ce:33:c4:75:51:
+         00:7e:c7:93:f6:3b:92:c1:5e:8a:ce:5f:2c:c2:f4:fe:ec:77:
+         9e:ea:30:d9:53:ee:f9:b9:fd:50:f5:6b:92:1c:57:d2:e0:f3:
+         05:d8:79:a9:63:16:13:09:cf:5f:39:dc:ec:43:e4:65:45:43:
+         65:e4:7c:39:a3:a2:81:47:ab:8f:57:a9:89:9d:56:4b:77:b1:
+         04:c8:9c:54:d2:5c:28:f5:d3:66:ae:9a:9c:a5:91:c7:eb:20:
+         69:fb:58:99:c7:5e:be:ec:4a:7a:62:09:fe:3b:30:f2:4a:d7:
+         1d:f9:0b:c3
+-----BEGIN CERTIFICATE-----
+MIIDljCCAn6gAwIBAgIQffwzRXVz6PFglKdOay8j8TANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjdaFw0yMzEwMTUx
+MDQ3MjdaMBkxFzAVBgNVBAMMDmRzb2NsYWIta2liYW5hMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAzk/JD4RNTnvcEZDJSajzYESoJRtZg2QL0eC8WVAi
+pfWIeshAZeQiPXfSj54wF4BeIIW8cGdhy9jin5p8e6boTnl7zYZuJlI3Rbart29A
+j3pVi9GRzCFvVTdQO3IfLTu/dUeRiGoc6jndiyUxVQ68Um+/C5bv4xJc2mMiVOWz
+lYsCnlc+e0+g9W8HqFtFfMs0g3c0pbH/BRKIj8zEBV3p530rEvq7TSX09wTnlQaV
+6qnEdU73A2ctnJr0AfYqjWxt0Fmpzh8SsXY5yAfUIHMe85y5Z4M7qHxu+4bqP2qO
+mEw5qdFNvp8KQ0kb/QlntmJx/YeaYyUAqsehTSMS41YPbwIDAQABo4HcMIHZMAkG
+A1UdEwQCMAAwHQYDVR0OBBYEFFDzfU+yjKUJ/WTLwZfx+EnIazBNMEYGA1UdIwQ/
+MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
+Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
+BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1raWJhbmGCHmRzb2NsYWIu
+Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEArr6Cb23m
+xMvDKtnW7hFSpt6JnjGj4oYH6dH+lcmiOJDfBf/lmSfo2FUAioWzFaXlW85OTwE7
+dKSyCfxulZKUL3YNx5cbeMEIHjoO+qar2x4iJoY59LuJoaHRVfbD/5ul6xtqhIod
+PF98Aw0IQm/XFIZhOGZl98KGaNuB6UEPgs+7vv3XlEjM+M9KQM4zxHVRAH7Hk/Y7
+ksFeis5fLML0/ux3nuow2VPu+bn9UPVrkhxX0uDzBdh5qWMWEwnPXznc7EPkZUVD
+ZeR8OaOigUerj1epiZ1WS3exBMicVNJcKPXTZq6anKWRx+sgaftYmcdevuxKemIJ
+/jsw8krXHfkLww==
+-----END CERTIFICATE-----
diff --git a/roles/odfekibana/files/dsoclab-kibana.key b/roles/odfekibana/files/dsoclab-kibana.key
new file mode 100644
index 0000000000000000000000000000000000000000..9eec2e4fa77aee5162699b82640aad24869304a8
--- /dev/null
+++ b/roles/odfekibana/files/dsoclab-kibana.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDOT8kPhE1Oe9wR
+kMlJqPNgRKglG1mDZAvR4LxZUCKl9Yh6yEBl5CI9d9KPnjAXgF4ghbxwZ2HL2OKf
+mnx7puhOeXvNhm4mUjdFtqu3b0CPelWL0ZHMIW9VN1A7ch8tO791R5GIahzqOd2L
+JTFVDrxSb78Llu/jElzaYyJU5bOViwKeVz57T6D1bweoW0V8yzSDdzSlsf8FEoiP
+zMQFXennfSsS+rtNJfT3BOeVBpXqqcR1TvcDZy2cmvQB9iqNbG3QWanOHxKxdjnI
+B9Qgcx7znLlngzuofG77huo/ao6YTDmp0U2+nwpDSRv9CWe2YnH9h5pjJQCqx6FN
+IxLjVg9vAgMBAAECggEBAKJC7gdeLs8Da1oFXcqpLoEQfo5wrD5CeWlgL8Ku3BFa
+wzSOOtfoTWW6z8hUyc4yD9XUWRiutqP0uIh+oFlANIVD1rMWf5t0HjSeLv/eaBBw
+Tsfg06KQyVdkYZ3fa9XPoA1FdJitnIA7cpr1bY9QP502djNPSux0jMLWJTJQVqXN
+fXykLoIvB8xIPWbJAJMgF75turJMFT3wGN+qjCzbsZqIHmqp4eaKoH4Mz+Y6SJcA
+uSzCdGKVPxHUVZbtkXn5GZXFx5YQ0wwRHJRWQ6Fn49HtKc5vBc7PN8fG18+s3DA2
+BR7MLgIaHGBKsnJgcOOZQiRCQP/uBBEIxIF0qU3h5UECgYEA6aiUvvBNcShCRaaH
+Wf5GpYTT1ANNv5+3sCTy4KKt3yCxyyn5ENEFL1i8w6/LffGIAsoLnoEcxWV/fhLy
+ZH5FzIYxlR/w2rddUyOXENx/9CWw/IhL91U9525JCJ0B0TBkZ9842ORX7kcI8+0g
+4oaC5bDYTZotAto4ftNIzmfznesCgYEA4gnREIl4nv9v28x5aUS+HhSpsH9kkVrr
+FQ0amCJSHu4U9J39MXS3Fju3rlmZG59J9ymEQ4tr0Hq3S+tsTy4hP5d67/KtoxKr
+3smyKduX6gfOmEy3TjCSc+OMebM7lX0crX2+0JCm355yDC8fxdAGxpmqYvwmVw9Q
+NbIb2mHR/40CgYEAjshlnQhbSnq/hLBupZ+srBivGS+rox2Gsizh/kNq3J6uBuhv
+Osd/0572Ot6CC0Q9SPcOgp2DZ1zOu8v4M1C2dnTKd8Y8+Gp0rQlilvsndZpSvP7M
+7Sc53OKX3puTMLHRqWfO5TskQIdIAUc2gTaRZqragxFj0App25ZhN0BurmECgYEA
+uM8L5vhu7ZitjUk17zKsOo3sW4kc4ZczY4fOOZq+B9niukm+LMRfuUbkHCHXg/UN
+lY6VPGBuqwraeLEoYei2eHbSpgKFozHt4f6Is55+K3Nsn6sBqGUgKK5gOVSon8Wm
+P9byvzW1qlmyp3GUCbjXAWO8IqhEdKPpka1pBnk6KDUCgYAhGqRGJ7NG4+Wz/0/5
+Z/IQeEsLO4lB7EuIADn9udmrYgYqv7sHDzhIUOviJPRgf2ag68LEXXZsC029famu
+/wbhD6pw1yq0QKGDcgH/LzHL9+74TqRlT7drPyOFPqOGPKtc88wL/aXRC90n7dsT
+jFEbunnLOfUUjgxXiJpNU0FtjQ==
+-----END PRIVATE KEY-----
diff --git a/roles/odfekibana/files/dsoclab-kibana.p12 b/roles/odfekibana/files/dsoclab-kibana.p12
new file mode 100644
index 0000000000000000000000000000000000000000..f9e8737d615ab77c25857cf3b3c8eb2d77f03104
Binary files /dev/null and b/roles/odfekibana/files/dsoclab-kibana.p12 differ
diff --git a/roles/odfekibana/files/kibana_graphs.ndjson b/roles/odfekibana/files/kibana_graphs.ndjson
index f6e604f541a023d488df4f3f76e97d4342d72476..086e784c413a2ff1ad657f886be9030d158a6735 100644
--- a/roles/odfekibana/files/kibana_graphs.ndjson
+++ b/roles/odfekibana/files/kibana_graphs.ndjson
@@ -1,62 +1,11 @@
-{"attributes":{"buildNum":26506,"defaultIndex":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b"},"id":"7.4.2","references":[],"type":"config","updated_at":"2020-12-20T14:02:51.577Z","version":"WzM0LDRd"}
-{"attributes":{"fields":"[{\"name\":\"TLP\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"TLP.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"TLP\",\"subType\":\"multi\"},{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"destination.ip\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination.ip.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination.ip\",\"subType\":\"multi\"},{\"name\":\"destination.port\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination/ip_geo_city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination/ip_geo_city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination/ip_geo_city\",\"subType\":\"multi\"},{\"name\":\"destination/ip_geo_country\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination/ip_geo_country.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination/ip_geo_country\",\"subType\":\"multi\"},{\"name\":\"destination/ip_geo_country_iso\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination/ip_geo_country_iso.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination/ip_geo_country_iso\",\"subType\":\"multi\"},{\"name\":\"destination/ip_geo_lat\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination/ip_geo_lat.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination/ip_geo_lat\",\"subType\":\"multi\"},{\"name\":\"destination/ip_geo_lon\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination/ip_geo_lon.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination/ip_geo_lon\",\"subType\":\"multi\"},{\"name\":\"destination/ip_ipreg_comment\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination/ip_ipreg_comment.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination/ip_ipreg_comment\",\"subType\":\"multi\"},{\"name\":\"destination/ip_ipreg_domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination/ip_ipreg_domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination/ip_ipreg_domain\",\"subType\":\"multi\"},{\"name\":\"destination/ip_ipreg_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination/ip_ipreg_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination/ip_ipreg_name\",\"subType\":\"multi\"},{\"name\":\"event_type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"event_type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"event_type\",\"subType\":\"multi\"},{\"name\":\"flow_id\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"in_iface\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"in_iface.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"in_iface\",\"subType\":\"multi\"},{\"name\":\"proto\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"proto.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"proto\",\"subType\":\"multi\"},{\"name\":\"source.ip\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source.ip.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source.ip\",\"subType\":\"multi\"},{\"name\":\"source.port\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source/ip_geo_city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source/ip_geo_city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source/ip_geo_city\",\"subType\":\"multi\"},{\"name\":\"source/ip_geo_country\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source/ip_geo_country.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source/ip_geo_country\",\"subType\":\"multi\"},{\"name\":\"source/ip_geo_country_iso\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source/ip_geo_country_iso.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source/ip_geo_country_iso\",\"subType\":\"multi\"},{\"name\":\"source/ip_geo_lat\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source/ip_geo_lat.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source/ip_geo_lat\",\"subType\":\"multi\"},{\"name\":\"source/ip_geo_lon\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source/ip_geo_lon.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source/ip_geo_lon\",\"subType\":\"multi\"},{\"name\":\"source/ip_ipreg_comment\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source/ip_ipreg_comment.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source/ip_ipreg_comment\",\"subType\":\"multi\"},{\"name\":\"source/ip_ipreg_domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source/ip_ipreg_domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source/ip_ipreg_domain\",\"subType\":\"multi\"},{\"name\":\"source/ip_ipreg_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source/ip_ipreg_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source/ip_ipreg_name\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"tls.ja3.hash\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tls.ja3.hash.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tls.ja3.hash\",\"subType\":\"multi\"},{\"name\":\"tls.ja3.string\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tls.ja3.string.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tls.ja3.string\",\"subType\":\"multi\"},{\"name\":\"tls.sni\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tls.sni.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tls.sni\",\"subType\":\"multi\"},{\"name\":\"tls.sni_domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tls.sni_domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tls.sni_domain\",\"subType\":\"multi\"},{\"name\":\"tls.sni_domain_alexa\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tls.sni_domain_alexa.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tls.sni_domain_alexa\",\"subType\":\"multi\"},{\"name\":\"tls.sni_umbrella\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tls.sni_umbrella.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tls.sni_umbrella\",\"subType\":\"multi\"},{\"name\":\"tls.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tls.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tls.version\",\"subType\":\"multi\"}]","timeFieldName":"timestamp","title":"logs-suricata-tls-*"},"id":"74bb7bb0-430a-11eb-b75a-bbebe0b50e97","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-21T10:26:54.470Z","version":"Wzk4LDRd"}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata TLS - Histogram","uiStateJSON":"{\"vis\":{\"legendOpen\":false}}","version":1,"visState":"{\"title\":\"Suricata TLS - Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#34130C\"},\"dimensions\":{\"x\":{\"accessor\":0,\"format\":{\"id\":\"date\",\"params\":{\"pattern\":\"HH:mm\"}},\"params\":{\"date\":true,\"interval\":\"PT30M\",\"format\":\"HH:mm\",\"bounds\":{\"min\":\"2020-12-20T08:53:14.254Z\",\"max\":\"2020-12-21T08:53:14.254Z\"}},\"aggType\":\"date_histogram\"},\"y\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"timeRange\":{\"from\":\"now-24h\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}"},"id":"080a28d0-436a-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"74bb7bb0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T10:31:45.324Z","version":"WzExMCw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata TLS - Top source IPs","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata TLS - Top source IPs\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"source.ip.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Source IP addr\"}}]}"},"id":"649dd8c0-436b-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"74bb7bb0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T09:18:57.076Z","version":"WzgwLDRd"}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata TLS - Top destination IPs","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata TLS - Top destination IPs\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"destination.ip.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Dest. IP addr\"}}]}"},"id":"e95d6ae0-436a-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"74bb7bb0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T09:19:11.119Z","version":"WzgxLDRd"}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata TLS - Top SNI","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata TLS - Top SNI\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"tls.sni.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"SNI\"}}]}"},"id":"fbeb5370-436a-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"74bb7bb0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T10:30:58.208Z","version":"WzEwNyw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata TLS - Top destination ports","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata TLS - Top destination ports\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"number\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"destination.port\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Dest. port\"}}]}"},"id":"d5917220-436c-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"74bb7bb0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T10:31:21.254Z","version":"WzEwOCw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata TLS - TLS version","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Suricata TLS - TLS version\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"bottom\",\"isDonut\":false,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"tls.version.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"f99b0560-436b-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"74bb7bb0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T10:28:59.999Z","version":"WzEwMyw0XQ=="}
-{"attributes":{"columns":["in_iface","source.ip","destination.ip","destination.port","tls.version","tls.sni","tls.sni_domain_alexa","tls.sni_umbrella"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"Suricata TLS logs","version":1},"id":"2fb21020-4377-11eb-b75a-bbebe0b50e97","migrationVersion":{"search":"7.4.0"},"references":[{"id":"74bb7bb0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-21T10:27:54.529Z","version":"Wzk5LDRd"}
-{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":9,\"i\":\"bf273f44-b0c6-4a76-85ae-271bace06b5c\"},\"panelIndex\":\"bf273f44-b0c6-4a76-85ae-271bace06b5c\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":9,\"w\":10,\"h\":15,\"i\":\"f3f513d2-c57c-402d-a7eb-9335533b9cee\"},\"panelIndex\":\"f3f513d2-c57c-402d-a7eb-9335533b9cee\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":10,\"y\":9,\"w\":11,\"h\":15,\"i\":\"280a69a1-470e-455f-a2af-e0f67a5b6899\"},\"panelIndex\":\"280a69a1-470e-455f-a2af-e0f67a5b6899\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":21,\"y\":9,\"w\":17,\"h\":15,\"i\":\"e2966d9f-3a5f-40c6-8046-921ca11dca36\"},\"panelIndex\":\"e2966d9f-3a5f-40c6-8046-921ca11dca36\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":38,\"y\":9,\"w\":10,\"h\":8,\"i\":\"8b66f551-7eea-46fd-a693-83291441986a\"},\"panelIndex\":\"8b66f551-7eea-46fd-a693-83291441986a\",\"embeddableConfig\":{},\"panelRefName\":\"panel_4\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":38,\"y\":17,\"w\":10,\"h\":7,\"i\":\"91965e77-41d0-4046-b51b-acf16494b52c\"},\"panelIndex\":\"91965e77-41d0-4046-b51b-acf16494b52c\",\"embeddableConfig\":{},\"panelRefName\":\"panel_5\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":24,\"w\":48,\"h\":22,\"i\":\"66a787fc-5c09-4a60-b878-5d453d6d5738\"},\"panelIndex\":\"66a787fc-5c09-4a60-b878-5d453d6d5738\",\"embeddableConfig\":{},\"panelRefName\":\"panel_6\"}]","timeRestore":false,"title":"Suricata TLS","version":1},"id":"2d8baeb0-436c-11eb-b75a-bbebe0b50e97","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"080a28d0-436a-11eb-b75a-bbebe0b50e97","name":"panel_0","type":"visualization"},{"id":"649dd8c0-436b-11eb-b75a-bbebe0b50e97","name":"panel_1","type":"visualization"},{"id":"e95d6ae0-436a-11eb-b75a-bbebe0b50e97","name":"panel_2","type":"visualization"},{"id":"fbeb5370-436a-11eb-b75a-bbebe0b50e97","name":"panel_3","type":"visualization"},{"id":"d5917220-436c-11eb-b75a-bbebe0b50e97","name":"panel_4","type":"visualization"},{"id":"f99b0560-436b-11eb-b75a-bbebe0b50e97","name":"panel_5","type":"visualization"},{"id":"2fb21020-4377-11eb-b75a-bbebe0b50e97","name":"panel_6","type":"search"}],"type":"dashboard","updated_at":"2020-12-21T10:30:30.675Z","version":"WzEwNSw0XQ=="}
-{"attributes":{"fieldFormatMap":"{\"ip_dst_addr_misp_url\":{\"id\":\"url\"}}","fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"alert.action\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"alert.action.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"alert.action\",\"subType\":\"multi\"},{\"name\":\"alert.category\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"alert.category.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"alert.category\",\"subType\":\"multi\"},{\"name\":\"alert.gid\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"alert.rev\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"alert.severity\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"alert.signature\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"alert.signature.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"alert.signature\",\"subType\":\"multi\"},{\"name\":\"alert.signature_id\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event_type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"event_type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"event_type\",\"subType\":\"multi\"},{\"name\":\"flow.bytes_toclient\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"flow.bytes_toserver\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"flow.pkts_toclient\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"flow.pkts_toserver\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"flow.start\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"host\",\"subType\":\"multi\"},{\"name\":\"host_domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host_domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"host_domain\",\"subType\":\"multi\"},{\"name\":\"host_domain_freq1\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host_domain_freq2\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"in_iface\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"in_iface.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"in_iface\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr_geo.geo.accuracy\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_dst_addr_geo.geo.city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr_geo.geo.city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr_geo.geo.city\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr_geo.geo.country.isoCode\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr_geo.geo.country.isoCode.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr_geo.geo.country.isoCode\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr_geo.geo.country.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr_geo.geo.country.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr_geo.geo.country.name\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr_geo.geo.latitude\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_dst_addr_geo.geo.longitude\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_dst_addr_misp\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr_misp.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr_misp\",\"subType\":\"multi\"},{\"name\":\"ip_dst_port\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_src_addr\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo.geo.accuracy\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_src_addr_geo.geo.city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo.geo.city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo.geo.city\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo.geo.country.isoCode\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo.geo.country.isoCode.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo.geo.country.isoCode\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo.geo.country.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo.geo.country.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo.geo.country.name\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo.geo.latitude\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_src_addr_geo.geo.longitude\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_src_port\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"payload\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"payload.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"payload\",\"subType\":\"multi\"},{\"name\":\"payload_printable\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"payload_printable.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"payload_printable\",\"subType\":\"multi\"},{\"name\":\"proto\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"proto.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"proto\",\"subType\":\"multi\"},{\"name\":\"stream\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"vlan\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]","timeFieldName":"timestamp","title":"logs-suricata-alert-*"},"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-20T21:20:28.734Z","version":"WzM1LDRd"}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata Alerts Histogram","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Suricata Alerts Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"dimensions\":{\"x\":null,\"y\":[{\"accessor\":0,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}"},"id":"71a37750-0b7c-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-20T14:01:02.393Z","version":"WzIzLDRd"}
-{"attributes":{"columns":["alert.signature_id","alert.signature","ip_src_addr","ip_dst_addr"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"Suricata Alerts","version":1},"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"search":"7.4.0"},"references":[{"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-20T14:01:02.393Z","version":"WzI0LDRd"}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Suricata alerts - top signatures","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata alerts - top signatures\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"alert.signature.keyword\",\"order\":\"desc\",\"size\":10,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Signature\"}}]}"},"id":"d7d96e70-0b7d-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-12-20T14:01:02.393Z","version":"WzI1LDRd"}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Suricata alerts - top ip_dst_addr ","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata alerts - top ip_dst_addr \",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"cardinality\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cardinality\",\"schema\":\"metric\",\"params\":{\"field\":\"alert.signature_id\",\"customLabel\":\"Unique\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"ip_dst_addr.keyword\",\"order\":\"desc\",\"size\":10,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Dst IP\"}}]}"},"id":"eb41e310-0b7e-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-12-20T14:01:02.393Z","version":"WzI2LDRd"}
-{"attributes":{"columns":["ip_dst_addr_misp","ip_dst_addr","alert.signature","ip_dst_addr_misp_url"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"ip_dst_addr_misp>0\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"Suricata Alerts Misp","version":1},"id":"42ad6a30-15b0-11ea-841d-a1505e4ae442","migrationVersion":{"search":"7.4.0"},"references":[{"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-20T14:01:02.393Z","version":"WzI3LDRd"}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Dst IP in misp","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Dst IP in misp\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"ip_dst_addr.keyword\",\"order\":\"desc\",\"size\":5,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Signature\"}}]}"},"id":"9676d8e0-15b0-11ea-841d-a1505e4ae442","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"42ad6a30-15b0-11ea-841d-a1505e4ae442","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-12-20T14:01:02.393Z","version":"WzI4LDRd"}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata alerts - the Hive","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Suricata alerts - the Hive\",\"type\":\"thehive_button\",\"params\":{\"url\":\"https://hive.soctools.geant.org/\",\"apikey\":\"ebMZixrFT+4qeWDf0iW3D5qFr/GbwA4j\",\"owner\":\"odfe\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"ip_src_addr.keyword\",\"order\":\"desc\",\"size\":20,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"48992900-62d3-11ea-aaa3-bb2f31340783","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-20T14:01:02.393Z","version":"WzI5LDRd"}
-{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":7,\"i\":\"1\"},\"panelIndex\":\"1\",\"embeddableConfig\":{\"vis\":{\"legendOpen\":false}},\"panelRefName\":\"panel_0\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":16,\"w\":48,\"h\":14,\"i\":\"2\"},\"panelIndex\":\"2\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":7,\"w\":15,\"h\":9,\"i\":\"3\"},\"panelIndex\":\"3\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":15,\"y\":7,\"w\":9,\"h\":9,\"i\":\"5\"},\"panelIndex\":\"5\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":24,\"y\":7,\"w\":11,\"h\":9,\"i\":\"7\"},\"panelIndex\":\"7\",\"embeddableConfig\":{},\"panelRefName\":\"panel_4\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":39,\"y\":7,\"w\":9,\"h\":4,\"i\":\"8\"},\"panelIndex\":\"8\",\"embeddableConfig\":{},\"panelRefName\":\"panel_5\"}]","timeRestore":false,"title":"Suricata Alerts","version":1},"id":"368ddb80-0b7f-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"71a37750-0b7c-11ea-bc07-2bc38b4c4b9b","name":"panel_0","type":"visualization"},{"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","name":"panel_1","type":"search"},{"id":"d7d96e70-0b7d-11ea-bc07-2bc38b4c4b9b","name":"panel_2","type":"visualization"},{"id":"eb41e310-0b7e-11ea-bc07-2bc38b4c4b9b","name":"panel_3","type":"visualization"},{"id":"9676d8e0-15b0-11ea-841d-a1505e4ae442","name":"panel_4","type":"visualization"},{"id":"48992900-62d3-11ea-aaa3-bb2f31340783","name":"panel_5","type":"visualization"}],"type":"dashboard","updated_at":"2020-12-21T21:58:35.823Z","version":"WzIxMSw0XQ=="}
-{"attributes":{"fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"class\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"class.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"class\",\"subType\":\"multi\"},{\"name\":\"level\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"level.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"level\",\"subType\":\"multi\"},{\"name\":\"message\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"message.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"message\",\"subType\":\"multi\"},{\"name\":\"source_file\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source_file.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source_file\",\"subType\":\"multi\"},{\"name\":\"source_host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source_host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source_host\",\"subType\":\"multi\"},{\"name\":\"stackTrace\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"stackTrace.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"stackTrace\",\"subType\":\"multi\"},{\"name\":\"thread\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"thread.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"thread\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]","timeFieldName":"timestamp","title":"logs-nifi-*"},"id":"635a5350-430a-11eb-b75a-bbebe0b50e97","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-21T10:42:10.466Z","version":"WzEyNiw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"NiFi Logs - Histogram","uiStateJSON":"{\"vis\":{\"colors\":{\"ERROR\":\"#BF1B00\",\"WARN\":\"#CCA300\",\"INFO\":\"#1F78C1\"}}}","version":1,"visState":"{\"title\":\"NiFi Logs - Histogram\",\"type\":\"histogram\",\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"filter\":true,\"show\":true,\"truncate\":100},\"position\":\"bottom\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{},\"type\":\"category\"}],\"dimensions\":{\"x\":{\"accessor\":0,\"format\":{\"id\":\"date\",\"params\":{\"pattern\":\"HH:mm\"}},\"params\":{\"date\":true,\"interval\":\"PT30M\",\"format\":\"HH:mm\",\"bounds\":{\"min\":\"2020-12-20T10:47:07.185Z\",\"max\":\"2020-12-21T10:47:07.185Z\"}},\"aggType\":\"date_histogram\"},\"y\":[{\"accessor\":2,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"series\":[{\"accessor\":1,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]},\"grid\":{\"categoryLines\":false},\"labels\":{\"show\":false},\"legendPosition\":\"bottom\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Count\"},\"drawLinesBetweenPoints\":true,\"mode\":\"stacked\",\"show\":\"true\",\"showCircles\":true,\"type\":\"histogram\",\"valueAxis\":\"ValueAxis-1\"}],\"thresholdLine\":{\"color\":\"#34130C\",\"show\":false,\"style\":\"full\",\"value\":10,\"width\":1},\"times\":[],\"type\":\"histogram\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"left\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Count\"},\"type\":\"value\"}]},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"timeRange\":{\"from\":\"now-24h\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"level.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"085d3790-437a-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"635a5350-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T10:49:20.127Z","version":"WzEyOSw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"NiFi logs - Source host","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"NiFi logs - Source host\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"bottom\",\"isDonut\":false,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"source_host.keyword\",\"orderBy\":\"_key\",\"order\":\"asc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"3ad86f30-438b-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"635a5350-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:53:41.198Z","version":"WzIwNCw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"NiFi logs - Level","uiStateJSON":"{\"vis\":{\"colors\":{\"ERROR\":\"#E24D42\",\"INFO\":\"#1F78C1\",\"WARN\":\"#CCA300\"}}}","version":1,"visState":"{\"title\":\"NiFi logs - Level\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"bottom\",\"isDonut\":false,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"level.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"03184750-438b-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"635a5350-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T12:49:49.637Z","version":"WzEzMyw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"NiFI logs - source files","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"NiFI logs - source files\",\"type\":\"table\",\"params\":{\"perPage\":4,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":true,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"source_file.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Source file\"}}]}"},"id":"e16c89f0-437a-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"635a5350-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T10:54:21.199Z","version":"WzEzMiw0XQ=="}
-{"attributes":{"columns":["source_host","level","source_file","message"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"NiFi logs","version":1},"id":"53a1d270-4379-11eb-b75a-bbebe0b50e97","migrationVersion":{"search":"7.4.0"},"references":[{"id":"635a5350-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-21T10:43:13.810Z","version":"WzEyNyw0XQ=="}
-{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":11,\"i\":\"41579e7d-a833-4988-8e87-30e9934c9153\"},\"panelIndex\":\"41579e7d-a833-4988-8e87-30e9934c9153\",\"embeddableConfig\":{\"vis\":{\"colors\":{\"ERROR\":\"#E24D42\",\"WARN\":\"#CCA300\",\"INFO\":\"#1F78C1\"}}},\"panelRefName\":\"panel_0\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":11,\"w\":12,\"h\":10,\"i\":\"26a9e301-ca86-4313-8321-e5b8b67fa097\"},\"panelIndex\":\"26a9e301-ca86-4313-8321-e5b8b67fa097\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":12,\"y\":11,\"w\":9,\"h\":10,\"i\":\"0d515b73-44ae-48f0-9fbe-c330d044544a\"},\"panelIndex\":\"0d515b73-44ae-48f0-9fbe-c330d044544a\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":21,\"y\":11,\"w\":13,\"h\":10,\"i\":\"9cf35fdc-5e6b-4a9b-a1fd-88c379d343da\"},\"panelIndex\":\"9cf35fdc-5e6b-4a9b-a1fd-88c379d343da\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":21,\"w\":48,\"h\":22,\"i\":\"e52833e0-30de-4451-80db-22c74ec92fcb\"},\"panelIndex\":\"e52833e0-30de-4451-80db-22c74ec92fcb\",\"embeddableConfig\":{},\"panelRefName\":\"panel_4\"}]","timeRestore":false,"title":"NiFi logs","version":1},"id":"4b6ae5a0-437a-11eb-b75a-bbebe0b50e97","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"085d3790-437a-11eb-b75a-bbebe0b50e97","name":"panel_0","type":"visualization"},{"id":"3ad86f30-438b-11eb-b75a-bbebe0b50e97","name":"panel_1","type":"visualization"},{"id":"03184750-438b-11eb-b75a-bbebe0b50e97","name":"panel_2","type":"visualization"},{"id":"e16c89f0-437a-11eb-b75a-bbebe0b50e97","name":"panel_3","type":"visualization"},{"id":"53a1d270-4379-11eb-b75a-bbebe0b50e97","name":"panel_4","type":"search"}],"type":"dashboard","updated_at":"2020-12-21T12:53:06.300Z","version":"WzEzNiw0XQ=="}
-{"attributes":{"fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"agent.ephemeral_id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.ephemeral_id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.ephemeral_id\",\"subType\":\"multi\"},{\"name\":\"agent.hostname\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.hostname.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.hostname\",\"subType\":\"multi\"},{\"name\":\"agent.id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.id\",\"subType\":\"multi\"},{\"name\":\"agent.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.name\",\"subType\":\"multi\"},{\"name\":\"agent.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.type\",\"subType\":\"multi\"},{\"name\":\"agent.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.version\",\"subType\":\"multi\"},{\"name\":\"ecs.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ecs.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ecs.version\",\"subType\":\"multi\"},{\"name\":\"error.message\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"error.message.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"error.message\",\"subType\":\"multi\"},{\"name\":\"error.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"error.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"error.name\",\"subType\":\"multi\"},{\"name\":\"error.stack\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"error.stack.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"error.stack\",\"subType\":\"multi\"},{\"name\":\"fields.log_type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"fields.log_type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"fields.log_type\",\"subType\":\"multi\"},{\"name\":\"host.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"host.name\",\"subType\":\"multi\"},{\"name\":\"input.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"input.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"input.type\",\"subType\":\"multi\"},{\"name\":\"level\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"level.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"level\",\"subType\":\"multi\"},{\"name\":\"log.file.path\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"log.file.path.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"log.file.path\",\"subType\":\"multi\"},{\"name\":\"log.offset\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"message\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"message.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"message\",\"subType\":\"multi\"},{\"name\":\"metadata.beat\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.beat.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.beat\",\"subType\":\"multi\"},{\"name\":\"metadata.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.type\",\"subType\":\"multi\"},{\"name\":\"metadata.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.version\",\"subType\":\"multi\"},{\"name\":\"method\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"method.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"method\",\"subType\":\"multi\"},{\"name\":\"pid\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"prevMsg\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"prevMsg.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"prevMsg\",\"subType\":\"multi\"},{\"name\":\"prevState\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"prevState.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"prevState\",\"subType\":\"multi\"},{\"name\":\"req.headers.accept\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.accept-encoding\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.accept-encoding.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.accept-encoding\",\"subType\":\"multi\"},{\"name\":\"req.headers.accept-language\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.accept-language.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.accept-language\",\"subType\":\"multi\"},{\"name\":\"req.headers.accept.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.accept\",\"subType\":\"multi\"},{\"name\":\"req.headers.cache-control\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.cache-control.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.cache-control\",\"subType\":\"multi\"},{\"name\":\"req.headers.connection\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.connection.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.connection\",\"subType\":\"multi\"},{\"name\":\"req.headers.content-length\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.content-length.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.content-length\",\"subType\":\"multi\"},{\"name\":\"req.headers.content-type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.content-type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.content-type\",\"subType\":\"multi\"},{\"name\":\"req.headers.host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.host\",\"subType\":\"multi\"},{\"name\":\"req.headers.if-none-match\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.if-none-match.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.if-none-match\",\"subType\":\"multi\"},{\"name\":\"req.headers.kbn-version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.kbn-version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.kbn-version\",\"subType\":\"multi\"},{\"name\":\"req.headers.origin\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.origin.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.origin\",\"subType\":\"multi\"},{\"name\":\"req.headers.referer\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.referer.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.referer\",\"subType\":\"multi\"},{\"name\":\"req.headers.upgrade-insecure-requests\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.upgrade-insecure-requests.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.upgrade-insecure-requests\",\"subType\":\"multi\"},{\"name\":\"req.headers.user-agent\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.user-agent.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.user-agent\",\"subType\":\"multi\"},{\"name\":\"req.method\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.method.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.method\",\"subType\":\"multi\"},{\"name\":\"req.referer\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.referer.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.referer\",\"subType\":\"multi\"},{\"name\":\"req.remoteAddress\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.remoteAddress.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.remoteAddress\",\"subType\":\"multi\"},{\"name\":\"req.url\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.url.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.url\",\"subType\":\"multi\"},{\"name\":\"req.userAgent\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.userAgent.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.userAgent\",\"subType\":\"multi\"},{\"name\":\"res.contentLength\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"res.responseTime\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"res.statusCode\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"state\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"state.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"state\",\"subType\":\"multi\"},{\"name\":\"statusCode\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"tags\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tags.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tags\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"type\",\"subType\":\"multi\"}]","timeFieldName":"timestamp","title":"logs-kibana-*"},"id":"55426280-430a-11eb-b75a-bbebe0b50e97","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-21T16:15:49.869Z","version":"WzE0Nyw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Kibana logs - Histogram","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Kibana logs - Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#34130C\"},\"dimensions\":{\"x\":null,\"y\":[{\"accessor\":0,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}"},"id":"84735610-43a8-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"55426280-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T16:21:02.064Z","version":"WzE0OCw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Kibana logs - Top IPs","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Kibana logs - Top IPs\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"req.remoteAddress.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Remote address\"}}]}"},"id":"22b8f4d0-43cf-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"55426280-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T20:57:28.477Z","version":"WzE1Niw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Kibana logs - Response time","uiStateJSON":"{\"vis\":{\"legendOpen\":false}}","version":1,"visState":"{\"title\":\"Kibana logs - Response time\",\"type\":\"histogram\",\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"filter\":true,\"show\":true,\"truncate\":100},\"position\":\"bottom\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{},\"type\":\"category\"}],\"dimensions\":{\"x\":{\"accessor\":0,\"format\":{\"id\":\"number\"},\"params\":{\"interval\":100},\"aggType\":\"histogram\"},\"y\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}]},\"grid\":{\"categoryLines\":false},\"labels\":{\"show\":false},\"legendPosition\":\"right\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Count\"},\"drawLinesBetweenPoints\":true,\"mode\":\"stacked\",\"show\":\"true\",\"showCircles\":true,\"type\":\"histogram\",\"valueAxis\":\"ValueAxis-1\"}],\"thresholdLine\":{\"color\":\"#34130C\",\"show\":false,\"style\":\"full\",\"value\":50,\"width\":1},\"times\":[],\"type\":\"histogram\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"left\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Count\"},\"type\":\"value\"}],\"orderBucketsBySum\":false},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"res.responseTime\",\"interval\":50,\"min_doc_count\":false,\"has_extended_bounds\":false,\"extended_bounds\":{\"max\":\"\",\"min\":\"\"},\"customLabel\":\"Response time [ms]\"}}]}"},"id":"90d03420-43ce-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"55426280-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T20:53:23.681Z","version":"WzE1NSw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Kibana logs - Status codes","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Kibana logs - Status codes\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"bottom\",\"isDonut\":false,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"number\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"res.statusCode\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Status code\"}}]}"},"id":"8f67bff0-43cd-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"55426280-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T20:46:11.822Z","version":"WzE1NCw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Kibana logs - Top URLs","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Kibana logs - Top URLs\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},{\"accessor\":3,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"},{\"accessor\":2,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"req.url.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Requested URL\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"req.method.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Method\"}}]}"},"id":"d921f4a0-43a8-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"55426280-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T20:43:48.516Z","version":"WzE1Myw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Kibana logs - Top User-Agents","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Kibana logs - Top User-Agents\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"req.headers.user-agent.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"User-Agent\"}}]}"},"id":"baef0cb0-43cc-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"55426280-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T20:40:15.354Z","version":"WzE1MSw0XQ=="}
-{"attributes":{"columns":["method","req.url","res.statusCode","req.remoteAddress","req.headers.user-agent"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"Kibana logs","version":1},"id":"8f07c570-43a8-11eb-b75a-bbebe0b50e97","migrationVersion":{"search":"7.4.0"},"references":[{"id":"55426280-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-21T16:21:19.815Z","version":"WzE0OSw0XQ=="}
-{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":8,\"i\":\"04285b5f-cd0f-4514-857c-0392c04dd759\"},\"panelIndex\":\"04285b5f-cd0f-4514-857c-0392c04dd759\",\"embeddableConfig\":{\"vis\":{\"legendOpen\":false}},\"panelRefName\":\"panel_0\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":8,\"w\":11,\"h\":12,\"i\":\"d6cba6b1-29d2-41bf-862b-85094bc155db\"},\"panelIndex\":\"d6cba6b1-29d2-41bf-862b-85094bc155db\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":11,\"y\":8,\"w\":23,\"h\":12,\"i\":\"2f0b8c11-89a2-4faa-bf5f-201803edae1d\"},\"panelIndex\":\"2f0b8c11-89a2-4faa-bf5f-201803edae1d\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":34,\"y\":8,\"w\":14,\"h\":12,\"i\":\"99a7d5fc-d91f-4202-8c7e-48bfbf515084\"},\"panelIndex\":\"99a7d5fc-d91f-4202-8c7e-48bfbf515084\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":20,\"w\":28,\"h\":15,\"i\":\"7c98c844-9efd-4289-94b0-83101b21ee9b\"},\"panelIndex\":\"7c98c844-9efd-4289-94b0-83101b21ee9b\",\"embeddableConfig\":{},\"panelRefName\":\"panel_4\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":28,\"y\":20,\"w\":20,\"h\":15,\"i\":\"08ce3890-961f-408f-9e2b-f9f028415e07\"},\"panelIndex\":\"08ce3890-961f-408f-9e2b-f9f028415e07\",\"embeddableConfig\":{},\"panelRefName\":\"panel_5\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":35,\"w\":48,\"h\":21,\"i\":\"0b4b31f9-53d5-4212-aedc-a261ee4be5e8\"},\"panelIndex\":\"0b4b31f9-53d5-4212-aedc-a261ee4be5e8\",\"embeddableConfig\":{},\"panelRefName\":\"panel_6\"}]","timeRestore":false,"title":"Kibana logs","version":1},"id":"6e0402e0-43cf-11eb-b75a-bbebe0b50e97","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"84735610-43a8-11eb-b75a-bbebe0b50e97","name":"panel_0","type":"visualization"},{"id":"22b8f4d0-43cf-11eb-b75a-bbebe0b50e97","name":"panel_1","type":"visualization"},{"id":"90d03420-43ce-11eb-b75a-bbebe0b50e97","name":"panel_2","type":"visualization"},{"id":"8f67bff0-43cd-11eb-b75a-bbebe0b50e97","name":"panel_3","type":"visualization"},{"id":"d921f4a0-43a8-11eb-b75a-bbebe0b50e97","name":"panel_4","type":"visualization"},{"id":"baef0cb0-43cc-11eb-b75a-bbebe0b50e97","name":"panel_5","type":"visualization"},{"id":"8f07c570-43a8-11eb-b75a-bbebe0b50e97","name":"panel_6","type":"search"}],"type":"dashboard","updated_at":"2020-12-21T20:59:34.797Z","version":"WzE1Nyw0XQ=="}
-{"attributes":{"fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"agent.ephemeral_id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.ephemeral_id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.ephemeral_id\",\"subType\":\"multi\"},{\"name\":\"agent.hostname\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.hostname.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.hostname\",\"subType\":\"multi\"},{\"name\":\"agent.id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.id\",\"subType\":\"multi\"},{\"name\":\"agent.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.name\",\"subType\":\"multi\"},{\"name\":\"agent.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.type\",\"subType\":\"multi\"},{\"name\":\"agent.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.version\",\"subType\":\"multi\"},{\"name\":\"ecs.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ecs.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ecs.version\",\"subType\":\"multi\"},{\"name\":\"event.severity\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"fields.log_type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"fields.log_type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"fields.log_type\",\"subType\":\"multi\"},{\"name\":\"host.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"host.name\",\"subType\":\"multi\"},{\"name\":\"input.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"input.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"input.type\",\"subType\":\"multi\"},{\"name\":\"log.file.path\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"log.file.path.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"log.file.path\",\"subType\":\"multi\"},{\"name\":\"log.offset\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"log.source.address\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"log.source.address.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"log.source.address\",\"subType\":\"multi\"},{\"name\":\"message\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"message.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"message\",\"subType\":\"multi\"},{\"name\":\"metadata.beat\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.beat.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.beat\",\"subType\":\"multi\"},{\"name\":\"metadata.truncated\",\"type\":\"boolean\",\"esTypes\":[\"boolean\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"metadata.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.type\",\"subType\":\"multi\"},{\"name\":\"metadata.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.version\",\"subType\":\"multi\"},{\"name\":\"syslog.facility\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"syslog.facility_label\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"syslog.facility_label.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"syslog.facility_label\",\"subType\":\"multi\"},{\"name\":\"syslog.priority\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"syslog.severity_label\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"syslog.severity_label.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"syslog.severity_label\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]","timeFieldName":"timestamp","title":"logs-filebeat-unknown-*"},"id":"b8cf4490-4309-11eb-b75a-bbebe0b50e97","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-21T21:44:27.290Z","version":"WzE5Myw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Other logs - Histogram","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Other logs - Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"bottom\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#34130C\"},\"dimensions\":{\"x\":{\"accessor\":1,\"format\":{\"id\":\"date\",\"params\":{\"pattern\":\"YYYY-MM-DD HH:mm\"}},\"params\":{\"date\":true,\"interval\":\"PT3H\",\"format\":\"YYYY-MM-DD HH:mm\",\"bounds\":{\"min\":\"2020-12-14T21:46:19.383Z\",\"max\":\"2020-12-21T21:46:19.383Z\"}},\"aggType\":\"date_histogram\"},\"y\":[{\"accessor\":2,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"series\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"fields.log_type.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"timeRange\":{\"from\":\"now-7d\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}"},"id":"f4775b50-43d5-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"b8cf4490-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:46:26.845Z","version":"WzE5Nyw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Other logs - Host name","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Other logs - Host name\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":false,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"host.name.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"3579d010-43d6-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"b8cf4490-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:48:06.416Z","version":"WzE5OSw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Other logs - Log type","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Other logs - Log type\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":false,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"fields.log_type.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"1fe05530-43d6-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"b8cf4490-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:47:30.178Z","version":"WzE5OCw0XQ=="}
-{"attributes":{"columns":["fields.log_type","message"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"Filebeat unknown logs","version":1},"id":"bfaaf800-43d5-11eb-b75a-bbebe0b50e97","migrationVersion":{"search":"7.4.0"},"references":[{"id":"b8cf4490-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-21T21:44:48.767Z","version":"WzE5NCw0XQ=="}
-{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":9,\"i\":\"bf3a414b-96f0-4090-b163-43664f901493\"},\"panelIndex\":\"bf3a414b-96f0-4090-b163-43664f901493\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":9,\"w\":15,\"h\":9,\"i\":\"d6977944-5a19-48b6-8829-2e50838363e7\"},\"panelIndex\":\"d6977944-5a19-48b6-8829-2e50838363e7\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":15,\"y\":9,\"w\":15,\"h\":9,\"i\":\"4cc8faa1-db1f-49e4-aaed-4e6010ff066b\"},\"panelIndex\":\"4cc8faa1-db1f-49e4-aaed-4e6010ff066b\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":18,\"w\":48,\"h\":21,\"i\":\"09bccade-e7cc-455e-b5e7-af2403262ba6\"},\"panelIndex\":\"09bccade-e7cc-455e-b5e7-af2403262ba6\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"}]","timeRestore":false,"title":"Other logs","version":1},"id":"7104bb90-43d6-11eb-b75a-bbebe0b50e97","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"f4775b50-43d5-11eb-b75a-bbebe0b50e97","name":"panel_0","type":"visualization"},{"id":"3579d010-43d6-11eb-b75a-bbebe0b50e97","name":"panel_1","type":"visualization"},{"id":"1fe05530-43d6-11eb-b75a-bbebe0b50e97","name":"panel_2","type":"visualization"},{"id":"bfaaf800-43d5-11eb-b75a-bbebe0b50e97","name":"panel_3","type":"search"}],"type":"dashboard","updated_at":"2020-12-21T21:49:46.312Z","version":"WzIwMCw0XQ=="}
-{"attributes":{"fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"agent.ephemeral_id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.ephemeral_id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.ephemeral_id\",\"subType\":\"multi\"},{\"name\":\"agent.hostname\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.hostname.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.hostname\",\"subType\":\"multi\"},{\"name\":\"agent.id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.id\",\"subType\":\"multi\"},{\"name\":\"agent.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.name\",\"subType\":\"multi\"},{\"name\":\"agent.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.type\",\"subType\":\"multi\"},{\"name\":\"agent.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.version\",\"subType\":\"multi\"},{\"name\":\"ecs.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ecs.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ecs.version\",\"subType\":\"multi\"},{\"name\":\"error.message\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"error.message.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"error.message\",\"subType\":\"multi\"},{\"name\":\"error.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"error.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"error.type\",\"subType\":\"multi\"},{\"name\":\"fields.log_type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"fields.log_type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"fields.log_type\",\"subType\":\"multi\"},{\"name\":\"host.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"host.name\",\"subType\":\"multi\"},{\"name\":\"hostName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"hostName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"hostName\",\"subType\":\"multi\"},{\"name\":\"input.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"input.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"input.type\",\"subType\":\"multi\"},{\"name\":\"level\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"level.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"level\",\"subType\":\"multi\"},{\"name\":\"log.file.path\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"log.file.path.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"log.file.path\",\"subType\":\"multi\"},{\"name\":\"log.offset\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"loggerClassName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"loggerClassName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"loggerClassName\",\"subType\":\"multi\"},{\"name\":\"loggerName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"loggerName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"loggerName\",\"subType\":\"multi\"},{\"name\":\"message\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"message.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"message\",\"subType\":\"multi\"},{\"name\":\"metadata.beat\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.beat.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.beat\",\"subType\":\"multi\"},{\"name\":\"metadata.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.type\",\"subType\":\"multi\"},{\"name\":\"metadata.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.version\",\"subType\":\"multi\"},{\"name\":\"ndc\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ndc.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ndc\",\"subType\":\"multi\"},{\"name\":\"processId\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"processName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"processName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"processName\",\"subType\":\"multi\"},{\"name\":\"sequence\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"sourceClassName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"sourceClassName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"sourceClassName\",\"subType\":\"multi\"},{\"name\":\"sourceFileName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"sourceFileName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"sourceFileName\",\"subType\":\"multi\"},{\"name\":\"sourceLineNumber\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"sourceMethodName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"sourceMethodName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"sourceMethodName\",\"subType\":\"multi\"},{\"name\":\"sourceModuleName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"sourceModuleName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"sourceModuleName\",\"subType\":\"multi\"},{\"name\":\"sourceModuleVersion\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"sourceModuleVersion.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"sourceModuleVersion\",\"subType\":\"multi\"},{\"name\":\"threadId\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"threadName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"threadName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"threadName\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]","timeFieldName":"timestamp","title":"logs-keycloak-*"},"id":"b9a340f0-430a-11eb-b75a-bbebe0b50e97","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-21T21:01:56.865Z","version":"WzE2MCw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Keycloak logs - Histogram","uiStateJSON":"{\"vis\":{\"colors\":{\"INFO\":\"#1F78C1\"},\"legendOpen\":true}}","version":1,"visState":"{\"title\":\"Keycloak logs - Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"bottom\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#34130C\"},\"dimensions\":{\"x\":{\"accessor\":1,\"format\":{\"id\":\"date\",\"params\":{\"pattern\":\"HH:mm\"}},\"params\":{\"date\":true,\"interval\":\"PT30M\",\"format\":\"HH:mm\",\"bounds\":{\"min\":\"2020-12-20T21:05:22.930Z\",\"max\":\"2020-12-21T21:05:22.930Z\"}},\"aggType\":\"date_histogram\"},\"y\":[{\"accessor\":2,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"series\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"level.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"timeRange\":{\"from\":\"now-24h\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}"},"id":"4b5e4560-43d0-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"b9a340f0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:05:46.166Z","version":"WzE2Miw0XQ=="}
-{"attributes":{"columns":["level","message"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"Keycloak logs","version":1},"id":"14c6e610-43d0-11eb-b75a-bbebe0b50e97","migrationVersion":{"search":"7.4.0"},"references":[{"id":"b9a340f0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-21T21:04:14.577Z","version":"WzE2MSw0XQ=="}
-{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":9,\"i\":\"f4adefb8-580f-47fa-a7b8-27be3af78eb1\"},\"panelIndex\":\"f4adefb8-580f-47fa-a7b8-27be3af78eb1\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":9,\"w\":48,\"h\":20,\"i\":\"2f33edae-d9c7-4eaa-8e4d-494db3b1cf73\"},\"panelIndex\":\"2f33edae-d9c7-4eaa-8e4d-494db3b1cf73\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"}]","timeRestore":false,"title":"Keycloak logs","version":1},"id":"717b80f0-43d0-11eb-b75a-bbebe0b50e97","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"4b5e4560-43d0-11eb-b75a-bbebe0b50e97","name":"panel_0","type":"visualization"},{"id":"14c6e610-43d0-11eb-b75a-bbebe0b50e97","name":"panel_1","type":"search"}],"type":"dashboard","updated_at":"2020-12-21T21:06:50.111Z","version":"WzE2Myw0XQ=="}
-{"attributes":{"fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"actconn\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"actconn.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"actconn\",\"subType\":\"multi\"},{\"name\":\"backend_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"backend_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"backend_name\",\"subType\":\"multi\"},{\"name\":\"backend_queue\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"backend_queue.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"backend_queue\",\"subType\":\"multi\"},{\"name\":\"beconn\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"beconn.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"beconn\",\"subType\":\"multi\"},{\"name\":\"bytes_read\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"bytes_read.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"bytes_read\",\"subType\":\"multi\"},{\"name\":\"captured_request_cookie\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"captured_request_cookie.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"captured_request_cookie\",\"subType\":\"multi\"},{\"name\":\"captured_response_cookie\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"captured_response_cookie.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"captured_response_cookie\",\"subType\":\"multi\"},{\"name\":\"client.ip\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip\",\"subType\":\"multi\"},{\"name\":\"client.ip_geo_city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip_geo_city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip_geo_city\",\"subType\":\"multi\"},{\"name\":\"client.ip_geo_country\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip_geo_country.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip_geo_country\",\"subType\":\"multi\"},{\"name\":\"client.ip_geo_country_iso\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip_geo_country_iso.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip_geo_country_iso\",\"subType\":\"multi\"},{\"name\":\"client.ip_geo_lat\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip_geo_lat.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip_geo_lat\",\"subType\":\"multi\"},{\"name\":\"client.ip_geo_lon\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip_geo_lon.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip_geo_lon\",\"subType\":\"multi\"},{\"name\":\"client.ip_ipreg_comment\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip_ipreg_comment.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip_ipreg_comment\",\"subType\":\"multi\"},{\"name\":\"client.ip_ipreg_domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip_ipreg_domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip_ipreg_domain\",\"subType\":\"multi\"},{\"name\":\"client.ip_ipreg_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip_ipreg_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip_ipreg_name\",\"subType\":\"multi\"},{\"name\":\"client.port\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.port.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.port\",\"subType\":\"multi\"},{\"name\":\"feconn\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"feconn.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"feconn\",\"subType\":\"multi\"},{\"name\":\"frontend_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"frontend_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"frontend_name\",\"subType\":\"multi\"},{\"name\":\"http_host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_host\",\"subType\":\"multi\"},{\"name\":\"http_proto\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_proto.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_proto\",\"subType\":\"multi\"},{\"name\":\"http_request\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_request.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_request\",\"subType\":\"multi\"},{\"name\":\"http_status_code\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_status_code.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_status_code\",\"subType\":\"multi\"},{\"name\":\"http_user\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_user.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_user\",\"subType\":\"multi\"},{\"name\":\"http_verb\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_verb.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_verb\",\"subType\":\"multi\"},{\"name\":\"http_version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_version\",\"subType\":\"multi\"},{\"name\":\"process.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"process.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"process.name\",\"subType\":\"multi\"},{\"name\":\"process.pid\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"process.pid.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"process.pid\",\"subType\":\"multi\"},{\"name\":\"retries\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"retries.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"retries\",\"subType\":\"multi\"},{\"name\":\"server.domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"server.domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"server.domain\",\"subType\":\"multi\"},{\"name\":\"source_host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source_host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source_host\",\"subType\":\"multi\"},{\"name\":\"srv_queue\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"srv_queue.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"srv_queue\",\"subType\":\"multi\"},{\"name\":\"srvconn\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"srvconn.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"srvconn\",\"subType\":\"multi\"},{\"name\":\"termination_state\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"termination_state.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"termination_state\",\"subType\":\"multi\"},{\"name\":\"time_backend_connect\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"time_backend_connect.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"time_backend_connect\",\"subType\":\"multi\"},{\"name\":\"time_backend_response\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"time_backend_response.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"time_backend_response\",\"subType\":\"multi\"},{\"name\":\"time_duration\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"time_duration.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"time_duration\",\"subType\":\"multi\"},{\"name\":\"time_queue\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"time_queue.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"time_queue\",\"subType\":\"multi\"},{\"name\":\"time_request\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"time_request.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"time_request\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]","timeFieldName":"timestamp","title":"logs-haproxy-*"},"id":"ece0e360-4309-11eb-b75a-bbebe0b50e97","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-21T21:27:29.655Z","version":"WzE3NSw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"haproxy logs - Histogram","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"haproxy logs - Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"bottom\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#34130C\"},\"dimensions\":{\"x\":{\"accessor\":0,\"format\":{\"id\":\"date\",\"params\":{\"pattern\":\"HH:mm\"}},\"params\":{\"date\":true,\"interval\":\"PT30M\",\"format\":\"HH:mm\",\"bounds\":{\"min\":\"2020-12-20T21:34:47.670Z\",\"max\":\"2020-12-21T21:34:47.670Z\"}},\"aggType\":\"date_histogram\"},\"y\":[{\"accessor\":2,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"series\":[{\"accessor\":1,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"timeRange\":{\"from\":\"now-24h\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"backend_name.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"74693590-43d1-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"ece0e360-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:35:01.074Z","version":"WzE4MSw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"haproxy logs - Top clients","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"haproxy logs - Top clients\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"client.ip.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Client IP addr\"}}]}"},"id":"d2b6e700-43d1-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"ece0e360-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:16:42.736Z","version":"WzE2Niw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"haproxy logs - Top requests","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":3,\"direction\":\"desc\"}}}}","version":1,"visState":"{\"title\":\"haproxy logs - Top requests\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":3,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"},{\"accessor\":1,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"},{\"accessor\":2,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"backend_name.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Backend name\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"http_request.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":20,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Request\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"http_status_code.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Status\"}}]}"},"id":"33158c30-43d4-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"ece0e360-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:38:09.088Z","version":"WzE4NCw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"haproxy logs - Status codes","uiStateJSON":"{}","version":1,"visState":"{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"field\":\"http_status_code.keyword\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"size\":10},\"schema\":\"segment\",\"type\":\"terms\"}],\"params\":{\"addLegend\":true,\"addTooltip\":true,\"dimensions\":{\"buckets\":[{\"accessor\":0,\"aggType\":\"terms\",\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"missingBucketLabel\":\"Missing\",\"otherBucketLabel\":\"Other\"}},\"params\":{}}],\"metric\":{\"accessor\":1,\"aggType\":\"count\",\"format\":{\"id\":\"number\"},\"params\":{}}},\"isDonut\":false,\"labels\":{\"last_level\":true,\"show\":false,\"truncate\":100,\"values\":true},\"legendPosition\":\"bottom\",\"type\":\"pie\"},\"title\":\"haproxy logs - Status codes\",\"type\":\"pie\"}"},"id":"96a9c140-43d3-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"ece0e360-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:29:37.571Z","version":"WzE3OCw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"haproxy logs - Backends","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"haproxy logs - Backends\",\"type\":\"pie\",\"params\":{\"addLegend\":true,\"addTooltip\":true,\"isDonut\":false,\"labels\":{\"last_level\":true,\"show\":false,\"truncate\":100,\"values\":true},\"legendPosition\":\"bottom\",\"type\":\"pie\",\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"backend_name.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"2c952900-43d5-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"ece0e360-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:40:42.000Z","version":"WzE4OCw0XQ=="}
-{"attributes":{"columns":["client.ip","backend_name","http_verb","http_request","http_status_code","bytes_read","time_duration"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"haproxy logs","version":1},"id":"6c1be520-43d3-11eb-b75a-bbebe0b50e97","migrationVersion":{"search":"7.4.0"},"references":[{"id":"ece0e360-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-21T21:28:09.585Z","version":"WzE3Niw0XQ=="}
-{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":9,\"i\":\"ccce8e7d-f8cf-4074-929a-a5518428f22d\"},\"panelIndex\":\"ccce8e7d-f8cf-4074-929a-a5518428f22d\",\"embeddableConfig\":{\"legendOpen\":false,\"vis\":{\"legendOpen\":true}},\"panelRefName\":\"panel_0\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":9,\"w\":11,\"h\":16,\"i\":\"ba3bb2ae-8c2d-4d7c-b31b-68236235fa54\"},\"panelIndex\":\"ba3bb2ae-8c2d-4d7c-b31b-68236235fa54\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":11,\"y\":9,\"w\":28,\"h\":16,\"i\":\"07c2a778-1266-463e-9b3a-ea6f9d93e82b\"},\"panelIndex\":\"07c2a778-1266-463e-9b3a-ea6f9d93e82b\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":39,\"y\":17,\"w\":9,\"h\":8,\"i\":\"d8e80787-da38-48a5-be9d-e73a94a1f0b3\"},\"panelIndex\":\"d8e80787-da38-48a5-be9d-e73a94a1f0b3\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":39,\"y\":9,\"w\":9,\"h\":8,\"i\":\"efc8e873-81b6-46d4-91c8-003c1869de67\"},\"panelIndex\":\"efc8e873-81b6-46d4-91c8-003c1869de67\",\"embeddableConfig\":{\"vis\":{\"legendOpen\":true},\"legendOpen\":false},\"panelRefName\":\"panel_4\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":25,\"w\":48,\"h\":22,\"i\":\"735a3ce2-b6f1-4d3b-af8f-05c4511e9b64\"},\"panelIndex\":\"735a3ce2-b6f1-4d3b-af8f-05c4511e9b64\",\"embeddableConfig\":{},\"panelRefName\":\"panel_5\"}]","timeRestore":false,"title":"haproxy logs","version":1},"id":"7dfc0c10-43d4-11eb-b75a-bbebe0b50e97","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"74693590-43d1-11eb-b75a-bbebe0b50e97","name":"panel_0","type":"visualization"},{"id":"d2b6e700-43d1-11eb-b75a-bbebe0b50e97","name":"panel_1","type":"visualization"},{"id":"33158c30-43d4-11eb-b75a-bbebe0b50e97","name":"panel_2","type":"visualization"},{"id":"96a9c140-43d3-11eb-b75a-bbebe0b50e97","name":"panel_3","type":"visualization"},{"id":"2c952900-43d5-11eb-b75a-bbebe0b50e97","name":"panel_4","type":"visualization"},{"id":"6c1be520-43d3-11eb-b75a-bbebe0b50e97","name":"panel_5","type":"search"}],"type":"dashboard","updated_at":"2020-12-21T21:42:37.188Z","version":"WzE4OSw0XQ=="}
-{"attributes":{"fields":"[{\"name\":\"@timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"audit_category\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_category.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_category\",\"subType\":\"multi\"},{\"name\":\"audit_cluster_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_cluster_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_cluster_name\",\"subType\":\"multi\"},{\"name\":\"audit_format_version\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"audit_node_host_address\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_node_host_address.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_node_host_address\",\"subType\":\"multi\"},{\"name\":\"audit_node_host_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_node_host_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_node_host_name\",\"subType\":\"multi\"},{\"name\":\"audit_node_id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_node_id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_node_id\",\"subType\":\"multi\"},{\"name\":\"audit_node_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_node_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_node_name\",\"subType\":\"multi\"},{\"name\":\"audit_request_exception_stacktrace\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_request_exception_stacktrace.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_request_exception_stacktrace\",\"subType\":\"multi\"},{\"name\":\"audit_request_layer\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_request_layer.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_request_layer\",\"subType\":\"multi\"},{\"name\":\"audit_request_origin\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_request_origin.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_request_origin\",\"subType\":\"multi\"}]","timeFieldName":"@timestamp","title":"security-auditlog-*"},"id":"cc44d890-430a-11eb-b75a-bbebe0b50e97","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-21T10:34:19.556Z","version":"WzExOCw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Security Audit Log - Histogram","uiStateJSON":"{\"vis\":{\"legendOpen\":true}}","version":1,"visState":"{\"title\":\"Security Audit Log - Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"bottom\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#34130C\"},\"dimensions\":{\"x\":{\"accessor\":0,\"format\":{\"id\":\"date\",\"params\":{\"pattern\":\"YYYY-MM-DD HH:mm\"}},\"params\":{\"date\":true,\"interval\":\"PT3H\",\"format\":\"YYYY-MM-DD HH:mm\",\"bounds\":{\"min\":\"2020-12-14T21:56:36.618Z\",\"max\":\"2020-12-21T21:56:36.618Z\"}},\"aggType\":\"date_histogram\"},\"y\":[{\"accessor\":2,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"series\":[{\"accessor\":1,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-7d\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"audit_category.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"846b6f00-4375-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"cc44d890-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:56:51.161Z","version":"WzIwOCw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Security Audit Log - Node name","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Security Audit Log - Node name\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":false,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"audit_node_name.keyword\",\"orderBy\":\"1\",\"order\":\"asc\",\"size\":10,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"b80e8d30-4378-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"cc44d890-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:55:05.416Z","version":"WzIwNyw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Security Audit Log - Category","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Security Audit Log - Category\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":false,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"audit_category.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"ca9c27a0-4378-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"cc44d890-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T10:39:23.930Z","version":"WzEyMSw0XQ=="}
-{"attributes":{"columns":["audit_node_host_name","audit_category","audit_request_layer","audit_request_origin","audit_request_exception_stacktrace"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["@timestamp","desc"]],"title":"Security Audit Logs","version":1},"id":"388503f0-4378-11eb-b75a-bbebe0b50e97","migrationVersion":{"search":"7.4.0"},"references":[{"id":"cc44d890-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-21T10:35:18.830Z","version":"WzExOSw0XQ=="}
-{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":10,\"i\":\"963df476-bd2f-4c26-9652-3cdfa1eef34f\"},\"panelIndex\":\"963df476-bd2f-4c26-9652-3cdfa1eef34f\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":10,\"w\":15,\"h\":9,\"i\":\"c87d79c0-84a1-46af-80a4-afc61cdae0a5\"},\"panelIndex\":\"c87d79c0-84a1-46af-80a4-afc61cdae0a5\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":15,\"y\":10,\"w\":15,\"h\":9,\"i\":\"c32eb149-2f61-41b5-ae5a-a864fb3257cb\"},\"panelIndex\":\"c32eb149-2f61-41b5-ae5a-a864fb3257cb\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":19,\"w\":48,\"h\":22,\"i\":\"cbd2ce7a-841d-4d11-b16e-79be174523e6\"},\"panelIndex\":\"cbd2ce7a-841d-4d11-b16e-79be174523e6\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"}]","timeRestore":false,"title":"Security Audit Log","version":1},"id":"e52ea260-4377-11eb-b75a-bbebe0b50e97","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"846b6f00-4375-11eb-b75a-bbebe0b50e97","name":"panel_0","type":"visualization"},{"id":"b80e8d30-4378-11eb-b75a-bbebe0b50e97","name":"panel_1","type":"visualization"},{"id":"ca9c27a0-4378-11eb-b75a-bbebe0b50e97","name":"panel_2","type":"visualization"},{"id":"388503f0-4378-11eb-b75a-bbebe0b50e97","name":"panel_3","type":"search"}],"type":"dashboard","updated_at":"2020-12-21T10:40:45.697Z","version":"WzEyMiw0XQ=="}
-{"attributes":{"fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"data_id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"data_id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"data_id\",\"subType\":\"multi\"},{\"name\":\"data_type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"data_type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"data_type\",\"subType\":\"multi\"},{\"name\":\"http_version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_version\",\"subType\":\"multi\"},{\"name\":\"ident\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ident.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ident\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_city\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_country\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_country.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_country\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_country_iso\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_country_iso.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_country_iso\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_lat\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_lat.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_lat\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_lon\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_lon.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_lon\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_ipreg_comment\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_ipreg_comment.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_ipreg_comment\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_ipreg_domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_ipreg_domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_ipreg_domain\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_ipreg_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_ipreg_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_ipreg_name\",\"subType\":\"multi\"},{\"name\":\"method\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"method.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"method\",\"subType\":\"multi\"},{\"name\":\"referer\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"referer.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"referer\",\"subType\":\"multi\"},{\"name\":\"request_page\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"request_page.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"request_page\",\"subType\":\"multi\"},{\"name\":\"response_size\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"response_size.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"response_size\",\"subType\":\"multi\"},{\"name\":\"server_response\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"server_response.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"server_response\",\"subType\":\"multi\"},{\"name\":\"source_file\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source_file.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source_file\",\"subType\":\"multi\"},{\"name\":\"source_host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source_host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source_host\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user_agent\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"user_agent.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"user_agent\",\"subType\":\"multi\"}]","timeFieldName":"timestamp","title":"logs-nginx-*"},"id":"4ca554f0-893f-11ea-977f-4711a028b7c3","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-20T14:01:02.393Z","version":"WzMxLDRd"}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Nginx Logs - Histogram","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Nginx Logs - Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#34130C\"},\"dimensions\":{\"x\":null,\"y\":[{\"accessor\":0,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}"},"id":"5bafcf20-43a7-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"4ca554f0-893f-11ea-977f-4711a028b7c3","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T16:12:44.178Z","version":"WzEzOSw0XQ=="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Suricata alerts - top ip_src_addr ","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata alerts - top ip_src_addr \",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"cardinality\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cardinality\",\"schema\":\"metric\",\"params\":{\"field\":\"alert.signature_id\",\"customLabel\":\"Unique\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"ip_src_addr.keyword\",\"order\":\"desc\",\"size\":10,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Src IP\"}}]}"},"id":"d8322050-0b7e-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-12-20T14:01:02.393Z","version":"WzMyLDRd"}
\ No newline at end of file
+{"attributes":{"fieldFormatMap":"{\"ip_dst_addr_misp_url\":{\"id\":\"url\"}}","fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"alert.action\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"alert.action.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"alert.action\",\"subType\":\"multi\"},{\"name\":\"alert.category\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"alert.category.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"alert.category\",\"subType\":\"multi\"},{\"name\":\"alert.gid\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"alert.rev\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"alert.severity\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"alert.signature\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"alert.signature.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"alert.signature\",\"subType\":\"multi\"},{\"name\":\"alert.signature_id\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event_type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"event_type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"event_type\",\"subType\":\"multi\"},{\"name\":\"flow.bytes_toclient\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"flow.bytes_toserver\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"flow.pkts_toclient\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"flow.pkts_toserver\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"flow.start\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"host\",\"subType\":\"multi\"},{\"name\":\"host_domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host_domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"host_domain\",\"subType\":\"multi\"},{\"name\":\"host_domain_freq1\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host_domain_freq2\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"in_iface\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"in_iface.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"in_iface\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr_geo.geo.accuracy\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_dst_addr_geo.geo.city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr_geo.geo.city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr_geo.geo.city\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr_geo.geo.country.isoCode\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr_geo.geo.country.isoCode.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr_geo.geo.country.isoCode\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr_geo.geo.country.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr_geo.geo.country.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr_geo.geo.country.name\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr_geo.geo.latitude\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_dst_addr_geo.geo.longitude\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_dst_addr_misp\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr_misp.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr_misp\",\"subType\":\"multi\"},{\"name\":\"ip_dst_port\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_src_addr\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo.geo.accuracy\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_src_addr_geo.geo.city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo.geo.city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo.geo.city\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo.geo.country.isoCode\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo.geo.country.isoCode.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo.geo.country.isoCode\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo.geo.country.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo.geo.country.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo.geo.country.name\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo.geo.latitude\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_src_addr_geo.geo.longitude\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_src_port\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"payload\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"payload.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"payload\",\"subType\":\"multi\"},{\"name\":\"payload_printable\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"payload_printable.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"payload_printable\",\"subType\":\"multi\"},{\"name\":\"proto\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"proto.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"proto\",\"subType\":\"multi\"},{\"name\":\"stream\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"vlan\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_dst_addr_misp_url\",\"type\":\"string\",\"count\":0,\"scripted\":true,\"script\":\"if (!doc['ip_dst_addr_misp.keyword'].empty) { \\n    return 'https://misp.soctools.geant.org/events/view/'+doc['ip_dst_addr_misp.keyword'].value;\\n}\\nreturn null;\",\"lang\":\"painless\",\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false}]","timeFieldName":"timestamp","title":"logs-suricata-alert-*"},"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-07-08T12:42:14.207Z","version":"WzMsMV0="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata Alerts Histogram","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Suricata Alerts Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"dimensions\":{\"x\":null,\"y\":[{\"accessor\":0,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}"},"id":"71a37750-0b7c-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-07-08T12:42:14.207Z","version":"WzQsMV0="}
+{"attributes":{"columns":["alert.signature_id","alert.signature","ip_src_addr","ip_dst_addr"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"Suricata Alerts","version":1},"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"search":"7.4.0"},"references":[{"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-07-08T12:42:14.207Z","version":"WzUsMV0="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Suricata alerts - top signatures","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata alerts - top signatures\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"alert.signature.keyword\",\"order\":\"desc\",\"size\":10,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Signature\"}}]}"},"id":"d7d96e70-0b7d-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-07-08T12:42:14.207Z","version":"WzYsMV0="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Suricata alerts - top ip_dst_addr ","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata alerts - top ip_dst_addr \",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"cardinality\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cardinality\",\"schema\":\"metric\",\"params\":{\"field\":\"alert.signature_id\",\"customLabel\":\"Unique\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"ip_dst_addr.keyword\",\"order\":\"desc\",\"size\":10,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Dst IP\"}}]}"},"id":"eb41e310-0b7e-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-07-08T12:42:14.207Z","version":"WzcsMV0="}
+{"attributes":{"columns":["ip_dst_addr_misp","ip_dst_addr","alert.signature","ip_dst_addr_misp_url"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"ip_dst_addr_misp>0\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"Suricata Alerts Misp","version":1},"id":"42ad6a30-15b0-11ea-841d-a1505e4ae442","migrationVersion":{"search":"7.4.0"},"references":[{"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-07-08T12:42:14.207Z","version":"WzgsMV0="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Dst IP in misp","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Dst IP in misp\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"ip_dst_addr.keyword\",\"order\":\"desc\",\"size\":5,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Signature\"}}]}"},"id":"9676d8e0-15b0-11ea-841d-a1505e4ae442","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"42ad6a30-15b0-11ea-841d-a1505e4ae442","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-07-08T12:42:14.207Z","version":"WzksMV0="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata alerts - the Hive","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Suricata alerts - the Hive\",\"type\":\"thehive_button\",\"params\":{\"url\":\"https://hive.soctools.geant.org/\",\"apikey\":\"ebMZixrFT+4qeWDf0iW3D5qFr/GbwA4j\",\"owner\":\"odfe\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"ip_src_addr.keyword\",\"order\":\"desc\",\"size\":20,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"48992900-62d3-11ea-aaa3-bb2f31340783","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-07-08T12:42:14.207Z","version":"WzEwLDFd"}
+{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"embeddableConfig\":{},\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":7,\"i\":\"1\"},\"panelIndex\":\"1\",\"version\":\"7.3.0\",\"panelRefName\":\"panel_0\"},{\"embeddableConfig\":{},\"gridData\":{\"x\":0,\"y\":15,\"w\":48,\"h\":14,\"i\":\"2\"},\"panelIndex\":\"2\",\"version\":\"7.3.0\",\"panelRefName\":\"panel_1\"},{\"embeddableConfig\":{},\"gridData\":{\"x\":0,\"y\":7,\"w\":10,\"h\":8,\"i\":\"3\"},\"panelIndex\":\"3\",\"version\":\"7.3.0\",\"panelRefName\":\"panel_2\"},{\"embeddableConfig\":{},\"gridData\":{\"x\":10,\"y\":7,\"w\":9,\"h\":8,\"i\":\"5\"},\"panelIndex\":\"5\",\"version\":\"7.3.0\",\"panelRefName\":\"panel_3\"},{\"embeddableConfig\":{},\"gridData\":{\"x\":19,\"y\":7,\"w\":11,\"h\":8,\"i\":\"7\"},\"panelIndex\":\"7\",\"version\":\"7.3.0\",\"panelRefName\":\"panel_4\"},{\"embeddableConfig\":{},\"gridData\":{\"x\":39,\"y\":7,\"w\":9,\"h\":3,\"i\":\"8\"},\"panelIndex\":\"8\",\"version\":\"7.3.0\",\"panelRefName\":\"panel_5\"}]","timeRestore":false,"title":"Suricata Alerts","version":1},"id":"368ddb80-0b7f-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"71a37750-0b7c-11ea-bc07-2bc38b4c4b9b","name":"panel_0","type":"visualization"},{"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","name":"panel_1","type":"search"},{"id":"d7d96e70-0b7d-11ea-bc07-2bc38b4c4b9b","name":"panel_2","type":"visualization"},{"id":"eb41e310-0b7e-11ea-bc07-2bc38b4c4b9b","name":"panel_3","type":"visualization"},{"id":"9676d8e0-15b0-11ea-841d-a1505e4ae442","name":"panel_4","type":"visualization"},{"id":"48992900-62d3-11ea-aaa3-bb2f31340783","name":"panel_5","type":"visualization"}],"type":"dashboard","updated_at":"2020-07-08T12:42:14.207Z","version":"WzExLDFd"}
+{"attributes":{"fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"data_id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"data_id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"data_id\",\"subType\":\"multi\"},{\"name\":\"data_type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"data_type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"data_type\",\"subType\":\"multi\"},{\"name\":\"http_version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_version\",\"subType\":\"multi\"},{\"name\":\"ident\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ident.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ident\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_city\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_country\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_country.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_country\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_country_iso\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_country_iso.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_country_iso\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_lat\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_lat.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_lat\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_lon\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_lon.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_lon\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_ipreg_comment\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_ipreg_comment.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_ipreg_comment\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_ipreg_domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_ipreg_domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_ipreg_domain\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_ipreg_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_ipreg_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_ipreg_name\",\"subType\":\"multi\"},{\"name\":\"method\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"method.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"method\",\"subType\":\"multi\"},{\"name\":\"referer\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"referer.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"referer\",\"subType\":\"multi\"},{\"name\":\"request_page\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"request_page.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"request_page\",\"subType\":\"multi\"},{\"name\":\"response_size\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"response_size.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"response_size\",\"subType\":\"multi\"},{\"name\":\"server_response\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"server_response.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"server_response\",\"subType\":\"multi\"},{\"name\":\"source_file\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source_file.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source_file\",\"subType\":\"multi\"},{\"name\":\"source_host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source_host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source_host\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user_agent\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"user_agent.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"user_agent\",\"subType\":\"multi\"}]","timeFieldName":"timestamp","title":"logs-nginx-*"},"id":"4ca554f0-893f-11ea-977f-4711a028b7c3","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-07-08T12:42:14.207Z","version":"WzEyLDFd"}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Suricata alerts - top ip_src_addr ","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata alerts - top ip_src_addr \",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"cardinality\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cardinality\",\"schema\":\"metric\",\"params\":{\"field\":\"alert.signature_id\",\"customLabel\":\"Unique\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"ip_src_addr.keyword\",\"order\":\"desc\",\"size\":10,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Src IP\"}}]}"},"id":"d8322050-0b7e-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-07-08T12:42:14.207Z","version":"WzEzLDFd"}
\ No newline at end of file
diff --git a/roles/odfekibana/files/kibanasecret b/roles/odfekibana/files/kibanasecret
new file mode 100644
index 0000000000000000000000000000000000000000..ec28be7e844bd0eaefbc32f1d4196e27aa41e19b
--- /dev/null
+++ b/roles/odfekibana/files/kibanasecret
@@ -0,0 +1,3 @@
+{
+  "value" : "19125de3-27fa-40e8-83bf-fdb8c8338b99"
+}
\ No newline at end of file
diff --git a/roles/odfekibana/tasks/main.yml b/roles/odfekibana/tasks/main.yml
index 1662efd600ad1a43e47bc3c40acb09fe69599dda..c0854140c7d172dc700f010fb756728b5c296f55 100644
--- a/roles/odfekibana/tasks/main.yml
+++ b/roles/odfekibana/tasks/main.yml
@@ -1,17 +1,184 @@
 ---
 
-- include: start.yml
+#- name: Create config directory
+#  file:
+#    name: config
+#    state: directory
+#    mode: 0700
+#  tags:
+#    - start
+
+- name: Copy cacert to ca-trust dir
+  remote_user: root
+  copy:
+    src: "files/{{ca_cn}}.crt"
+    dest: /etc/pki/ca-trust/source/anchors/ca.crt
+  tags:
+    - start
+
+- name: Install cacert to root truststore
+  remote_user: root
+  command: "update-ca-trust"
+  tags:
+    - start
+
+- name: Copy certificates in odfe kibana conf dir
+  copy:
+    src:  "{{ item }}"
+    dest: "config/{{ item }}"
+    mode: 0600
+  with_items:
+    - "{{ inventory_hostname }}.p12"
+    - "{{ inventory_hostname }}.crt"
+    - "{{ inventory_hostname }}.key"
+    - cacerts.jks
+    - "{{ca_cn}}.crt"
+    - "{{soctools_users[0].CN}}.p12"
   tags:
-   - start
-- include: stop.yml
+    - start
+
+- name: Get openid authkey
+  set_fact:
+    kibanasecret: "{{lookup('file', 'files/kibanasecret',convert_data=False) | from_json }}"
+  tags:
+    - start
+
+#- name: Configure sysconfig
+#  template:
+#    src: sysconfig_elasticsearch.j2
+#    dest: sysconfig_elasticsearch
+#  tags:
+#    - start
+#
+#- name: Copy sysconfig to /etc
+#  command: "cp sysconfig_elasticsearch /etc/sysconfig/elasticsearch"
+#  tags: 
+#    - start
+
+#  lineinfile:
+#    path: /etc/sysconfig/elasticsearch
+#    regexp: '^ES_PATH_CONF='
+#    line: ES_PATH_CONF=/usr/share/elasticsearch/config
+#  tags:
+#    - start
+- name: Configure odfe kibana properties
+  template:
+    src: "{{item}}.j2"
+    dest: "config/{{item}}"
+  with_items:
+    - kibana.yml
   tags:
-   - stop
-   - stop-odfekibana
-- include: update-config.yml
+    - start
+
+- name: Configure odfe kibana start script
+  template:
+    src: "{{item}}.j2"
+    dest: "{{item}}"
+    mode: 0750
+  with_items:
+    - startkibana.sh
+  tags:
+    - start
+
+#- name: Exit here to test ODFE
+#  meta: end_play
+#  tags:
+#    - start
+
+
+- name: Generate configuration for thehive_button plugin
+  template:
+    src: files/env.js.j2
+    dest: "/usr/share/kibana/plugins/thehive_button/public/env.js"
+    owner: kibana
+    group: kibana
+  tags:
+    - start
+
+
+- name: Start OpenDistro Kibana for Elasticsearch
+  command: /usr/share/kibana/startkibana.sh
+  #shell: exec /usr/share/kibana/bin/kibana -c config/kibana.yml &
+  #shell: "nohup /usr/share/kibana/bin/kibana -c config/kibana.yml &"
   tags:
-   - update-config
-   - update-odfekibana-config
-- include: restart.yml
+    - start
+
+- name: Wait for Kibana
+  wait_for:
+    host: "{{groups['odfekibanacontainers'][0]}}"
+    port: 5601
+    state: started
+    delay: 5
+  tags:
+    - start
+
+- name: Check Kibana health
+  shell: 'curl -k -b /tmp/cookie.txt -c /tmp/cookie.txt -X "GET" "https://{{dslproxy}}:5601/api/status" \
+              | egrep status....overall....state...green'
+  register: result
+  until: result.rc == 0
+  retries: 90
+  delay: 2
+  ignore_errors: yes
+  tags:
+    - start
+
+- name: Copy tenant.json to container
+  remote_user: kibana
+  copy:
+    src: "files/tenant.json"
+    dest: /tmp/tenant.json
+  tags:
+    - start
+
+- name: change tenant to global
+  shell: 'curl -X "POST" "https://{{dslproxy}}:5601/api/v1/multitenancy/tenant" \
+         -b /tmp/cookie.txt -c /tmp/cookie.txt \
+         -k --user admin:{{ odfees_adminpass }} \
+         -H "kbn-xsrf: reporting" -H "Content-Type: application/json" \
+         -d @/tmp/tenant.json'
+  tags:
+    - start
+
+- name: Copy kibana_graphs.ndjson to container
+  remote_user: kibana
+  copy:
+    src: "files/kibana_graphs.ndjson"
+    dest: /tmp/kibana_graphs.ndjson
+  tags:
+    - start
+
+- name: Import graphs to kibana
+  shell: 'curl -X "POST" "https://{{dslproxy}}:5601/api/saved_objects/_import?overwrite=true" \
+          -b /tmp/cookie.txt -c /tmp/cookie.txt \
+          -k --user admin:{{ odfees_adminpass }} \
+          -H "kbn-xsrf: reporting" -H "Content-Type: multipart/form-data" \
+          -F "file=@/tmp/kibana_graphs.ndjson"'
+  tags:
+    - start
+
+#- name: cleanup temporary files for kibana_graph import
+#  shell: '/bin/rm -rf /tmp/cookie.txt /tmp/kibana_graphs.ndjson /tmp/tenant.json'
+#  ignore_errors: true
+#  tags:
+#    - start
+
+#- name: check reachable hosts
+#  gather_facts: no
+#  tasks:
+#    - command: ping -c1 {{ inventory_hostname }}
+#      delegate_to: localhost
+#      register: ping_result
+#      ignore_errors: yes
+#    - group_by: key=reachable
+#      when: ping_result|success
+
+#- name: Stop OpenDistro Kibana for Elasticsearch
+#  command: "pkill -SIGTERM -F {{inventory_hostname}}.pid"
+#  tags:
+#    - stop
+
+- name: Stop OpenDistro Kibana for Elasticsearch
+  command: "pkill -SIGTERM -F {{inventory_hostname}}.pid"
   tags:
-   - restart
-   - restart-odfekibana
+    - stop
diff --git a/roles/odfekibana/tasks/restart.yml b/roles/odfekibana/tasks/restart.yml
deleted file mode 100644
index 7ef339035ddb769ec70ffad981b8a36959f735e1..0000000000000000000000000000000000000000
--- a/roles/odfekibana/tasks/restart.yml
+++ /dev/null
@@ -1,32 +0,0 @@
----
-
-- name: Restart Kibana
-  remote_user: root
-  shell: "supervisorctl restart kibana"
-
-- name: Wait for Kibana
-  remote_user: kibana
-  wait_for:
-    host: "{{groups['odfekibanacontainers'][0]}}"
-    port: 5601
-    state: started
-    delay: 5
-
-- name: Check Kibana health
-  remote_user: kibana
-  shell: 'curl -k -b /tmp/cookie.txt -c /tmp/cookie.txt -X "GET" "https://{{soctoolsproxy}}:5601/api/status" \
-              | egrep status....overall....state...green'
-  register: result
-  until: result.rc == 0
-  retries: 90
-  delay: 2
-  ignore_errors: yes
-
-- name: Import graphs to kibana
-  remote_user: kibana
-  shell: 'curl -X "POST" "https://{{soctoolsproxy}}:5601/api/saved_objects/_import?overwrite=true" \
-          -b /tmp/cookie.txt -c /tmp/cookie.txt \
-          -k --user admin:{{lookup("password", "{{playbook_dir}}/secrets/passwords/odfees_adminpass")}} \
-          -H "kbn-xsrf: reporting" -H "Content-Type: multipart/form-data" \
-          -F "file=@/tmp/kibana_graphs.ndjson"'
-
diff --git a/roles/odfekibana/tasks/start.yml b/roles/odfekibana/tasks/start.yml
deleted file mode 100644
index 186a6a6c8effc0664dba8b6f72090aa932a7681a..0000000000000000000000000000000000000000
--- a/roles/odfekibana/tasks/start.yml
+++ /dev/null
@@ -1,166 +0,0 @@
----
-
-#- name: Create config directory
-#  file:
-#    name: config
-#    state: directory
-#    mode: 0700
-
-- name: Copy cacert to ca-trust dir
-  remote_user: root
-  copy:
-    src: "{{playbook_dir}}/secrets/CA/ca.crt"
-    dest: /etc/pki/ca-trust/source/anchors/ca.crt
-
-- name: Install cacert to root truststore
-  remote_user: root
-  command: "update-ca-trust"
-
-- name: Copy certificates in odfe kibana conf dir
-  remote_user: kibana
-  copy:
-    src:  "{{ item }}"
-    dest: "config/"
-    mode: 0600
-  with_items:
-    - "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.p12"
-    - "{{playbook_dir}}/secrets/CA/issued/{{ inventory_hostname }}.crt"
-    - "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.key"
-    - "{{playbook_dir}}/secrets/CA/cacerts.jks"
-    - "{{playbook_dir}}/secrets/CA/ca.crt"
-    - "{{playbook_dir}}/secrets/CA/private/{{soctools_users[0].CN}}.p12"
-
-- name: Get openid authkey
-  remote_user: kibana
-  set_fact:
-    kibanasecret: "{{lookup('file', '{{playbook_dir}}/secrets/tokens/kibanasecret',convert_data=False) | from_json }}"
-
-#- name: Configure sysconfig
-#  template:
-#    src: sysconfig_elasticsearch.j2
-#    dest: sysconfig_elasticsearch
-#
-#- name: Copy sysconfig to /etc
-#  command: "cp sysconfig_elasticsearch /etc/sysconfig/elasticsearch"
-
-#  lineinfile:
-#    path: /etc/sysconfig/elasticsearch
-#    regexp: '^ES_PATH_CONF='
-#    line: ES_PATH_CONF=/usr/share/elasticsearch/config
-
-- name: Configure odfe kibana properties
-  remote_user: kibana
-  template:
-    src: "{{item}}.j2"
-    dest: "config/{{item}}"
-  with_items:
-    - kibana.yml
-
-- name: Configure odfe kibana start script
-  remote_user: kibana
-  template:
-    src: "{{item}}.j2"
-    dest: "{{item}}"
-    mode: 0750
-  with_items:
-    - startkibana.sh
-
-#- name: Exit here to test ODFE
-#  meta: end_play
-
-
-- name: Generate configuration for thehive_button plugin
-  remote_user: kibana
-  template:
-    src: files/env.js.j2
-    dest: "/usr/share/kibana/plugins/thehive_button/public/env.js"
-    owner: kibana
-    group: kibana
-
-
-- name: Start Kibana
-  remote_user: root
-  shell: "supervisorctl start kibana"
-
-- name: Wait for Kibana
-  remote_user: kibana
-  wait_for:
-    host: "{{groups['odfekibanacontainers'][0]}}"
-    port: 5601
-    state: started
-    delay: 5
-
-- name: Check Kibana health
-  remote_user: kibana
-  shell: 'curl -k -b /tmp/cookie.txt -c /tmp/cookie.txt -X "GET" "https://{{soctoolsproxy}}:5601/api/status" \
-              | egrep status....overall....state...green'
-  register: result
-  until: result.rc == 0
-  retries: 90
-  delay: 2
-  ignore_errors: yes
-
-#- name: Copy tenant.json to container
-#  remote_user: kibana
-#  copy:
-#    src: "files/tenant.json"
-#    dest: /tmp/tenant.json
-#
-#- name: change tenant to global
-#  shell: 'curl -X "POST" "https://{{soctoolsproxy}}:5601/api/v1/multitenancy/tenant" \
-#         -b /tmp/cookie.txt -c /tmp/cookie.txt \
-#         -k --user admin:{{ odfees_adminpass }} \
-#         -H "kbn-xsrf: reporting" -H "Content-Type: application/json" \
-#         -d @/tmp/tenant.json'
-
-- name: Copy kibana_graphs.ndjson to container
-  remote_user: kibana
-  copy:
-    src: "files/kibana_graphs.ndjson"
-    dest: /tmp/kibana_graphs.ndjson
-
-- name: Import graphs to kibana
-  remote_user: kibana
-  shell: 'curl -X "POST" "https://{{soctoolsproxy}}:5601/api/saved_objects/_import?overwrite=true" \
-          -b /tmp/cookie.txt -c /tmp/cookie.txt \
-          -k --user admin:{{lookup("password", "{{playbook_dir}}/secrets/passwords/odfees_adminpass")}} \
-          -H "kbn-xsrf: reporting" -H "Content-Type: multipart/form-data" \
-          -F "file=@/tmp/kibana_graphs.ndjson"'
-
-- name: Copy role modification json to container
-  remote_user: kibana
-  template:
-    src: "role.json.j2"
-    dest: /tmp/role.json
-
-- name: Grant admin permissions to users
-  remote_user: kibana
-  shell: 'curl -X "POST" "https://{{soctoolsproxy}}:5601/api/v1/configuration/rolesmapping/all_access" \
-          -b /tmp/cookie.txt -c /tmp/cookie.txt \
-          -k --user admin:{{lookup("password", "{{playbook_dir}}/secrets/passwords/odfees_adminpass")}} \
-          -H "kbn-xsrf: reporting" -H "Content-Type: application/json" \
-          -d @/tmp/role.json'
-
-#- name: cleanup temporary files for kibana_graph import
-#  shell: '/bin/rm -rf /tmp/cookie.txt /tmp/kibana_graphs.ndjson /tmp/tenant.json'
-#  ignore_errors: true
-
-#- name: check reachable hosts
-#  gather_facts: no
-#  tasks:
-#    - command: ping -c1 {{ inventory_hostname }}
-#      delegate_to: localhost
-#      register: ping_result
-#      ignore_errors: yes
-#    - group_by: key=reachable
-#      when: ping_result|success
-
-#- name: Stop OpenDistro Kibana for Elasticsearch
-#  command: "pkill -SIGTERM -F {{inventory_hostname}}.pid"
-
-- name: Set Autostart for supervisord's services
-  replace:
-    path: /etc/supervisord.conf
-    regexp: '^autostart=false$'
-    replace: 'autostart=true'
-
diff --git a/roles/odfekibana/tasks/stop.yml b/roles/odfekibana/tasks/stop.yml
deleted file mode 100644
index 2ab354a31339c1ee47c5d287277b9e25c6afa377..0000000000000000000000000000000000000000
--- a/roles/odfekibana/tasks/stop.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-
-- name: Stop OpenDistro Kibana for Elasticsearch
-  remote_user: root
-  command: "supervisorctl stop kibana"
diff --git a/roles/odfekibana/tasks/update-config.yml b/roles/odfekibana/tasks/update-config.yml
deleted file mode 100644
index 779d95f971090d8575e3216bc1aa1179bee5eaae..0000000000000000000000000000000000000000
--- a/roles/odfekibana/tasks/update-config.yml
+++ /dev/null
@@ -1,34 +0,0 @@
----
-
-- name: Configure odfe kibana properties
-  remote_user: kibana
-  template:
-    src: "{{item}}.j2"
-    dest: "config/{{item}}"
-  with_items:
-    - kibana.yml
-
-- name: Configure odfe kibana start script
-  remote_user: kibana
-  template:
-    src: "{{item}}.j2"
-    dest: "{{item}}"
-    mode: 0750
-  with_items:
-    - startkibana.sh
-
-- name: Generate configuration for thehive_button plugin
-  remote_user: kibana
-  template:
-    src: files/env.js.j2
-    dest: "/usr/share/kibana/plugins/thehive_button/public/env.js"
-    owner: kibana
-    group: kibana
-
-
-- name: Copy kibana_graphs.ndjson to container
-  remote_user: kibana
-  copy:
-    src: "files/kibana_graphs.ndjson"
-    dest: /tmp/kibana_graphs.ndjson
-
diff --git a/roles/odfekibana/templates/kibana.yml.j2 b/roles/odfekibana/templates/kibana.yml.j2
index e676b3735c0f2f9ee59a2c7b3e19c020e04faa1b..0d670073c5d8f8515075abcea316f02d4863df25 100644
--- a/roles/odfekibana/templates/kibana.yml.j2
+++ b/roles/odfekibana/templates/kibana.yml.j2
@@ -29,8 +29,8 @@ elasticsearch.username: kibanaserver
 elasticsearch.password: kibanaserver
 elasticsearch.requestHeadersWhitelist: ["securitytenant","Authorization"]
 
-opendistro_security.multitenancy.enabled: false
-#opendistro_security.multitenancy.tenants.preferred: ["Private", "Global"]
+opendistro_security.multitenancy.enabled: true
+opendistro_security.multitenancy.tenants.preferred: ["Private", "Global"]
 opendistro_security.readonly_mode.roles: ["kibana_read_only"]
 
 #new in 7.6
@@ -39,20 +39,20 @@ opendistro_security.readonly_mode.roles: ["kibana_read_only"]
 #telemetry.enabled: false
 
 opendistro_security.auth.type: "openid"
-opendistro_security.openid.connect_url: "https://{{soctoolsproxy}}:12443/auth/realms/{{openid_realm}}/.well-known/openid-configuration"
-opendistro_security.openid.client_id: "soctools-kibana"
+opendistro_security.openid.connect_url: "https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/.well-known/openid-configuration"
+opendistro_security.openid.client_id: "dsoclab-kibana"
 opendistro_security.openid.client_secret: "{{kibanasecret.value}}"
-opendistro_security.openid.root_ca: "/usr/share/kibana/config/ca.crt"
-opendistro_security.openid.base_redirect_url: "https://{{soctoolsproxy}}:5601"
+opendistro_security.openid.root_ca: "/usr/share/kibana/config/{{ca_cn}}.crt"
+opendistro_security.openid.base_redirect_url: "https://{{dslproxy}}:5601"
 
 opendistro_security.cookie.secure: true
-opendistro_security.cookie.password: {{lookup("password", "{{playbook_dir}}/secrets/passwords/kibana_cookiepassword length=32")}}
+opendistro_security.cookie.password: "{{odfekibana_cookie}}"
 
 server.ssl.enabled: true
 server.ssl.key: /usr/share/kibana/config/{{inventory_hostname}}.key
 server.ssl.certificate: /usr/share/kibana/config/{{inventory_hostname}}.crt
 #server.ssl.keystore.path: /usr/share/kibana/config/{{inventory_hostname}}.p12
-#server.ssl.keystore.password: {{lookup('password', '{{playbook_dir}}/secrets/passwords/keystore')}}
+#server.ssl.keystore.password: {{kspass}}
 #server.ssl.certificateAuthorities:
 #server.ssl.truststore.path: jks (p12?)
 #server.ssl.truststore.password:
diff --git a/roles/odfekibana/templates/role.json.j2 b/roles/odfekibana/templates/role.json.j2
deleted file mode 100644
index 9d67a52fb225237029d74bcaa8b381857a3f1eb2..0000000000000000000000000000000000000000
--- a/roles/odfekibana/templates/role.json.j2
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-   "backend_roles":[
-      "admin"
-   ],
-   "hosts":[
-      
-   ],
-   "users":[
-{% for user in ODFE_ADMIN_USERS %}
-      "{{ user }}",
-{% endfor %}
-      "admin"
-   ],
-   "description":"Maps admin to all_access"
-}
diff --git a/roles/soctools-server/tasks/main.yml b/roles/soctools-server/tasks/main.yml
index 98902dce701cf0b9f7b6d57c6b3fd5df601a85e9..55adbbdb04ed879233a41f8b11d6219358147a17 100644
--- a/roles/soctools-server/tasks/main.yml
+++ b/roles/soctools-server/tasks/main.yml
@@ -16,7 +16,7 @@
 
 - name: Install required packages
   yum: 
-    name: ["docker-ce","docker-ce-cli","containerd.io","python-pip","unzip"] 
+    name: ["docker-ce","docker-ce-cli","containerd.io","python-pip"] 
     state: latest
     validate_certs: no
   when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'
diff --git a/roles/thehive/files/SOCTOOLS-CA.crt b/roles/thehive/files/SOCTOOLS-CA.crt
new file mode 100644
index 0000000000000000000000000000000000000000..04b1f203d036d2219c23c4ea3630115d68510eb8
--- /dev/null
+++ b/roles/thehive/files/SOCTOOLS-CA.crt
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
+BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
+FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
+UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
+Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
+M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
+c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
+tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
+ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
+8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
+EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
+JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
+z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
+XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
+CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
+nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
+GPiQTFGknE1U
+-----END CERTIFICATE-----
diff --git a/roles/thehive/files/cacerts.jks b/roles/thehive/files/cacerts.jks
new file mode 100644
index 0000000000000000000000000000000000000000..9d4001b7d9a466941cda896b6bf145bf2f02020c
Binary files /dev/null and b/roles/thehive/files/cacerts.jks differ
diff --git a/roles/thehive/files/dsoclab-thehive.crt b/roles/thehive/files/dsoclab-thehive.crt
new file mode 100644
index 0000000000000000000000000000000000000000..0d474c2a1277de93ba6357ca841a7eac3b1cce44
--- /dev/null
+++ b/roles/thehive/files/dsoclab-thehive.crt
@@ -0,0 +1,88 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            61:09:5c:2c:8d:35:ee:29:1c:99:ce:ab:d4:2b:3c:a4
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=SOCTOOLS-CA
+        Validity
+            Not Before: Oct 30 10:47:29 2020 GMT
+            Not After : Oct 15 10:47:29 2023 GMT
+        Subject: CN=dsoclab-thehive
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:ba:c5:4d:20:a4:60:b7:61:21:ed:16:a1:6f:72:
+                    c4:de:a1:00:c0:ef:fc:5d:a1:89:34:07:15:d2:b4:
+                    3a:14:b8:95:75:8e:81:71:49:46:1d:c8:81:cb:f1:
+                    ec:c7:5a:12:f6:89:60:e4:c8:98:1a:61:c8:2d:12:
+                    8f:73:ee:f8:9d:88:b5:7f:30:70:97:29:b4:ab:43:
+                    2d:dc:db:a7:10:47:c7:b5:26:9b:11:85:fb:d3:27:
+                    8f:3a:55:bc:ea:78:17:b8:89:10:a3:a4:10:60:39:
+                    c3:7f:42:25:a9:fe:84:7f:38:5e:f4:3d:c3:98:3d:
+                    56:b9:ba:81:06:55:8d:65:12:f0:4e:23:88:1d:98:
+                    0c:2f:6e:4f:67:fd:4e:67:39:91:b9:01:52:12:aa:
+                    9e:bb:7a:c8:ea:8f:4a:2d:18:f8:69:9a:3a:a0:c8:
+                    6e:e3:de:c6:db:be:4c:59:e0:cf:bc:34:4f:2c:b0:
+                    ef:3e:82:5a:df:68:be:b8:fb:cc:5f:6a:f2:3e:66:
+                    d4:c6:c5:f6:0b:67:e9:64:85:15:87:60:6f:dc:b4:
+                    5b:13:6f:b0:9b:f8:f3:da:c1:91:9e:81:5f:16:ca:
+                    9e:14:01:c1:1c:ce:2a:d3:c8:3c:0f:be:b1:37:aa:
+                    c9:08:68:2b:de:f9:44:6c:1e:90:a4:12:bc:f5:3c:
+                    46:bd
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                5B:08:8E:F2:1B:8F:12:03:BA:31:02:9C:CE:CC:BC:9F:FC:19:D1:E1
+            X509v3 Authority Key Identifier: 
+                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
+                DirName:/CN=SOCTOOLS-CA
+                serial:8A:74:93:26:80:5B:42:B7
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment
+            X509v3 Subject Alternative Name: 
+                DNS:dsoclab-thehive, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
+    Signature Algorithm: sha256WithRSAEncryption
+         7f:b2:fa:33:d6:e3:6c:57:8a:4a:9a:ef:8b:81:2b:df:f3:d6:
+         fb:8c:bc:02:cf:71:54:a0:f2:0d:ae:3b:30:cf:5c:69:d7:d0:
+         aa:cc:16:80:4d:9d:c8:1f:a7:98:9d:26:dc:ae:8e:24:2b:bc:
+         c1:11:a6:8d:4f:ca:13:1f:7f:8f:4c:ef:dd:46:df:d6:97:0a:
+         88:51:4e:f7:46:aa:3d:e3:70:e9:19:e8:9f:7e:22:fa:b6:38:
+         30:00:0a:94:38:09:bf:b8:64:6c:c1:b7:05:6d:4f:f3:27:0c:
+         df:04:ef:a1:4e:e8:2d:4c:06:d0:c0:4f:4f:da:d0:6d:b8:f2:
+         b3:79:18:63:bd:62:83:53:55:38:94:d9:64:ca:e7:4d:71:ce:
+         d1:05:6d:b1:6c:fb:1a:4c:b6:ef:70:2b:3d:9b:1d:66:d8:d9:
+         9f:f0:e5:48:29:50:e8:1b:1a:fb:b4:d2:5e:38:ec:05:45:c2:
+         e7:de:9a:9d:aa:34:67:c5:66:18:e3:86:8b:0c:1a:c4:21:20:
+         7e:b7:ad:e2:0b:d0:0d:d4:76:e6:53:ca:77:bc:ce:d0:9b:7b:
+         7c:fd:42:94:da:63:d8:a7:52:d2:45:f2:d5:55:ef:37:f1:a5:
+         0e:ba:29:c9:b4:ce:99:45:04:21:2b:86:27:bb:c1:f2:86:9a:
+         7c:51:5c:3b
+-----BEGIN CERTIFICATE-----
+MIIDmDCCAoCgAwIBAgIQYQlcLI017ikcmc6r1Cs8pDANBgkqhkiG9w0BAQsFADAW
+MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjlaFw0yMzEwMTUx
+MDQ3MjlaMBoxGDAWBgNVBAMMD2Rzb2NsYWItdGhlaGl2ZTCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBALrFTSCkYLdhIe0WoW9yxN6hAMDv/F2hiTQHFdK0
+OhS4lXWOgXFJRh3Igcvx7MdaEvaJYOTImBphyC0Sj3Pu+J2ItX8wcJcptKtDLdzb
+pxBHx7UmmxGF+9MnjzpVvOp4F7iJEKOkEGA5w39CJan+hH84XvQ9w5g9Vrm6gQZV
+jWUS8E4jiB2YDC9uT2f9Tmc5kbkBUhKqnrt6yOqPSi0Y+GmaOqDIbuPextu+TFng
+z7w0Tyyw7z6CWt9ovrj7zF9q8j5m1MbF9gtn6WSFFYdgb9y0WxNvsJv489rBkZ6B
+XxbKnhQBwRzOKtPIPA++sTeqyQhoK975RGwekKQSvPU8Rr0CAwEAAaOB3TCB2jAJ
+BgNVHRMEAjAAMB0GA1UdDgQWBBRbCI7yG48SA7oxApzOzLyf/BnR4TBGBgNVHSME
+PzA9gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9P
+TFMtQ0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
+CwYDVR0PBAQDAgWgMDoGA1UdEQQzMDGCD2Rzb2NsYWItdGhlaGl2ZYIeZHNvY2xh
+Yi5nbjQtMy13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQB/svoz
+1uNsV4pKmu+LgSvf89b7jLwCz3FUoPINrjswz1xp19CqzBaATZ3IH6eYnSbcro4k
+K7zBEaaNT8oTH3+PTO/dRt/WlwqIUU73Rqo943DpGeiffiL6tjgwAAqUOAm/uGRs
+wbcFbU/zJwzfBO+hTugtTAbQwE9P2tBtuPKzeRhjvWKDU1U4lNlkyudNcc7RBW2x
+bPsaTLbvcCs9mx1m2Nmf8OVIKVDoGxr7tNJeOOwFRcLn3pqdqjRnxWYY44aLDBrE
+ISB+t63iC9AN1HbmU8p3vM7Qm3t8/UKU2mPYp1LSRfLVVe838aUOuinJtM6ZRQQh
+K4Ynu8Hyhpp8UVw7
+-----END CERTIFICATE-----
diff --git a/roles/thehive/files/dsoclab-thehive.key b/roles/thehive/files/dsoclab-thehive.key
new file mode 100644
index 0000000000000000000000000000000000000000..6d4d8bb01b413adbe679481a68241bfe71a1c9dc
--- /dev/null
+++ b/roles/thehive/files/dsoclab-thehive.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC6xU0gpGC3YSHt
+FqFvcsTeoQDA7/xdoYk0BxXStDoUuJV1joFxSUYdyIHL8ezHWhL2iWDkyJgaYcgt
+Eo9z7vidiLV/MHCXKbSrQy3c26cQR8e1JpsRhfvTJ486VbzqeBe4iRCjpBBgOcN/
+QiWp/oR/OF70PcOYPVa5uoEGVY1lEvBOI4gdmAwvbk9n/U5nOZG5AVISqp67esjq
+j0otGPhpmjqgyG7j3sbbvkxZ4M+8NE8ssO8+glrfaL64+8xfavI+ZtTGxfYLZ+lk
+hRWHYG/ctFsTb7Cb+PPawZGegV8Wyp4UAcEczirTyDwPvrE3qskIaCve+URsHpCk
+Erz1PEa9AgMBAAECggEARJH9cBeJfqoFp6LgYCd1yfq4aR1yvPl6gwR66aHLlSHz
+lXZdZbcuK+8aYEMQ2FvkjGkBjt1qonz13j5rNngtBMFVST4CiC0CrMH8S5LFMj/4
+PTTQR822F971QciKlFbE9rYzyrCIZpuuf8FMTK4p/P84NVmbvv/+IDAuAKJWSB3b
+TXVeYzqET/cENXrNZNsTMHVoPAudtsHXXa5w3yXJXhTlRQrjMtMHgV+H1O2iOvi5
+IAJUm2HVmGON9aqQKZlzYvx9txSBRczEwQK+fLPoXGEG/KhskiBPMU0y9a60SV5F
+Oi94zzBCOSf/k+C4+EhkvfSq727ZFs60zGcoEW7rzQKBgQD08umyOtqJEB6dk5hg
+RA1mc3qx332Li0Ep9ciPD0oOyt9H/pQBMYHlV4Vf26dmjxg7XMPqB38topjbnVcY
+r1QigQ8tnHXktcO1tUpx6MhTkN4sBH9dvZE4TdBiarlcThgnuCfZUhjyfyr715tR
+BIC8TA9bd/6oUaf/zd0S4aGcEwKBgQDDMnKe7PoDlHtjxaiDs8VLRRgNKocT/jaD
+SZ5j5a1e+fvIK+lqpW7pXT/AlBVvxC6ke2Zb1csgndgF0p45ZO9WsB5fV3x8AREM
+zIvrqpH4hdRBEF7o1syVDMXmTQLsPOLzj6B2UC5mpqoo2GkI9yyXpJhNR0kqzkDy
+Pclu3xZL7wKBgQCZsFAxI/w6Q4LyG8lfnVNLFOnG8RM0mwsn6K8OE+nDnka6RWFX
+3lhCLcfhfVBraR0rIelKzaleWMbQBMjBFEEV5SRA2gqele1V9YngLs6CoELGG4xO
+pMKZMTmuhogHAnjlcwaNtJUykdfGbGFnVAvyGUcJfSCrO5DNT72GO0vLQQKBgQCF
+WyPf2/r7Eygxg8qbH+h8ghnqdNGQIS9RBqzFhxapOpR/rzBrAdcCbAiwIvt6Pke3
+a+8Ecs2x3OTHJZufjovNZ8l4TaboeToSynQVb5UGezgFs4+D96wRcIaLzrVefEJ5
+L/jqm+D3lInQGfm4fFXkzDiZI0ijjAHm/btumc771QKBgBTu4KvY6rzgmHbymux1
++tr+xl3/Nb29XQJHpZV+hgFGg1+aWaR9c0WXz9mKovBanEUHJb5khqFQDFZuWMNG
+tNQ1JbwTXwxmAfVJbLYbSHnuePkh+qtpmTVa3H5NdRBI/062/Km6Rxcf5JljB8/J
+k+SqVxdKSTfaWxGqyyAZgVis
+-----END PRIVATE KEY-----
diff --git a/roles/thehive/files/logback.xml b/roles/thehive/files/logback.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d7f5263595b7f2b0e8b007dec1877d41d6de1c73
--- /dev/null
+++ b/roles/thehive/files/logback.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="true">
+
+    <conversionRule conversionWord="coloredLevel"
+                    converterClass="play.api.libs.logback.ColoredLevel"/>
+
+    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>/var/log/thehive/application.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+            <fileNamePattern>/var/log/logs/application.%i.log.zip</fileNamePattern>
+            <minIndex>1</minIndex>
+            <maxIndex>10</maxIndex>
+        </rollingPolicy>
+        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+            <maxFileSize>10MB</maxFileSize>
+        </triggeringPolicy>
+        <encoder>
+            <pattern>%date [%level] from %logger in %thread [%X{request}|%X{tx}] %message%n%xException</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%coloredLevel %logger{15} [%X{request}|%X{tx}] %message%n%xException{10}
+            </pattern>
+        </encoder>
+    </appender>
+
+    <appender name="ASYNCFILE" class="ch.qos.logback.classic.AsyncAppender">
+        <appender-ref ref="FILE"/>
+    </appender>
+
+    <appender name="ASYNCSTDOUT" class="ch.qos.logback.classic.AsyncAppender">
+        <appender-ref ref="STDOUT"/>
+    </appender>
+
+    <logger name="org.thp" level="INFO"/>
+
+    <root level="DEBUG">
+        <appender-ref ref="ASYNCFILE"/>
+        <appender-ref ref="ASYNCSTDOUT"/>
+    </root>
+
+</configuration>
+
diff --git a/roles/thehive/files/thehivesecret b/roles/thehive/files/thehivesecret
new file mode 100644
index 0000000000000000000000000000000000000000..f00a8d57edd365f329d95494e2242fe9d7432dbe
--- /dev/null
+++ b/roles/thehive/files/thehivesecret
@@ -0,0 +1,3 @@
+{
+  "value" : "b832e3a9-0080-4f07-bc3d-6bbc67bce741"
+}
\ No newline at end of file
diff --git a/roles/thehive/tasks/createusers.yml b/roles/thehive/tasks/createusers.yml
new file mode 100644
index 0000000000000000000000000000000000000000..b0fbcdd9ba24fb12fba0bed5dc16b50584f0fd4c
--- /dev/null
+++ b/roles/thehive/tasks/createusers.yml
@@ -0,0 +1,28 @@
+---
+#  - name: create organisation
+#    uri:
+#      url: "https://{{dslproxy}}:9000/api/organisation"
+#      method: POST
+#      headers:
+#        Authorization: "Bearer {{ THEHIVE_API_KEY }}"
+#      body_format: form-urlencoded
+#      body:
+#        name: "{{ organisation }}"
+#        description: "test"      
+#      status_code: 201
+#    tags:
+#    - create_org 
+- name: generate json files for creating users
+  remote_user: root
+  template:
+    src: users.json
+    dest: /tmp/{{ item.username }}.json
+  with_items:
+    - "{{ THEHIVE_USERS }}"
+- name: create users
+  remote_user: root
+  shell: "curl -k -H 'Authorization: Bearer {{ THEHIVE_API_KEY }}' -H 'Content-Type: application/json' https://{{ dslproxy }}:9000/api/user -d @/tmp/{{ item.username}}.json"
+  args:
+    warn: false
+  with_items:
+    - "{{ THEHIVE_USERS }}"
diff --git a/roles/thehive/tasks/main.yml b/roles/thehive/tasks/main.yml
index a0f7edf3191254869b03c63056db742bacb7b71e..0e560e7122b33b36a8ab31e0b0c6f6c46570153f 100644
--- a/roles/thehive/tasks/main.yml
+++ b/roles/thehive/tasks/main.yml
@@ -1,18 +1,87 @@
 ---
 
-- include: start.yml
+- name: Copy cacert to ca-trust dir
+  remote_user: root
+  copy:
+    src: "files/{{ca_cn}}.crt"
+    dest: /etc/pki/ca-trust/source/anchors/ca.crt
   tags:
-   - start
-- include: stop.yml
+    - start
+
+- name: Install cacert to root truststore
+  remote_user: root
+  command: "update-ca-trust"
+  tags:
+    - start
+
+- name: Copy certificates in thehive conf dir
+  copy:
+    src:  "{{ item }}"
+    dest: "/etc/thehive/{{ item }}"
+    mode: 0600
+  with_items:
+    - "{{ inventory_hostname }}.crt"
+    - "{{ inventory_hostname }}.key"
+    - cacerts.jks
+    - "{{ca_cn}}.crt"
+  tags:
+    - start
+
+- name: Get openid authkey
+  set_fact:
+    thehivesecret: "{{lookup('file', 'files/thehivesecret',convert_data=False) | from_json }}"
   tags:
-   - stop
-   - stop-thehive
-- include: update-config.yml
+    - start
+
+
+- name: Configure TheHive
+  template:
+    src: application.conf.j2
+    dest: /etc/thehive/application.conf
+  tags:
+    - start
+
+- name: Configure TheHive logging
+  copy:
+    src: logback.xml
+    dest: /etc/thehive/logback.xml
   tags:
-   - update-config
-   - update-thehive-config
-- include: restart.yml
+    - start
+
+
+- name: Start TheHive
+  command: >
+    daemonize 
+    -c /opt/thehive 
+    -p /tmp/thehive.pid
+    -o /tmp/thehive-stdout.log 
+    /opt/thehive/bin/thehive 
+    -Dconfig.file=/etc/thehive/application.conf 
+    -Dlogger.file=/etc/thehive/logback.xml 
+    -J-Xms1g
+    -J-Xmx1g
+    -Dpidfile.path=/dev/null
+  tags:
+    - start
+
+- name: Wait for TheHive
+  wait_for:
+    host: "{{groups['thehive'][0]}}"
+    port: 9000
+    state: started
+    delay: 5
+  tags:
+    - start
+
+- name: Create TheHive users
+  include: createusers.yml
+  tags:
+  - createusers
+  - start
+
+- name: Stop TheHive
+  command: "pkill -SIGTERM -F /tmp/thehive.pid"
   tags:
-   - restart
-   - restart-thehive
+    - stop
+    - stopthehive
 
diff --git a/roles/thehive/tasks/restart.yml b/roles/thehive/tasks/restart.yml
deleted file mode 100644
index f3b364456e14669dfcbfa61f9ce9a5ff7646c30c..0000000000000000000000000000000000000000
--- a/roles/thehive/tasks/restart.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-
-- name: Restart TheHive
-  remote_user: root
-  command: "supervisorctl restart thehive"
-
-- name: Wait for TheHive
-  remote_user: root
-  wait_for:
-    host: "{{groups['thehive'][0]}}"
-    port: 9000
-    state: started
-    delay: 5
diff --git a/roles/thehive/tasks/start.yml b/roles/thehive/tasks/start.yml
deleted file mode 100644
index 33a136bffda2f69156da07a3a97c4bcb9addecfb..0000000000000000000000000000000000000000
--- a/roles/thehive/tasks/start.yml
+++ /dev/null
@@ -1,26 +0,0 @@
----
-
-- name: Configure TheHive
-  remote_user: thehive
-  template:
-    src: application.conf.j2
-    dest: /etc/thehive/application.conf
-
-- name: Start TheHive
-  remote_user: root
-  command: "supervisorctl start thehive"
-
-- name: Wait for TheHive
-  remote_user: root
-  wait_for:
-    host: "{{groups['thehive'][0]}}"
-    port: 9000
-    state: started
-    delay: 5
-
-- name: Set Autostart for supervisord's services
-  replace:
-    path: /etc/supervisord.conf
-    regexp: '^autostart=false$'
-    replace: 'autostart=true'
-
diff --git a/roles/thehive/tasks/stop.yml b/roles/thehive/tasks/stop.yml
deleted file mode 100644
index 87d605a59f69355208b4fe84b707d6b94c478c0c..0000000000000000000000000000000000000000
--- a/roles/thehive/tasks/stop.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-
-- name: Stop TheHive
-  remote_user: root
-  command: "supervisorctl stop thehive"
diff --git a/roles/thehive/tasks/update-config.yml b/roles/thehive/tasks/update-config.yml
deleted file mode 100644
index 7b02823bbe7e65d60fc9352e732800cb4622b365..0000000000000000000000000000000000000000
--- a/roles/thehive/tasks/update-config.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-
-- name: Configure TheHive
-  remote_user: thehive
-  template:
-    src: application.conf.j2
-    dest: /etc/thehive/application.conf
diff --git a/roles/thehive/templates/application.conf.j2 b/roles/thehive/templates/application.conf.j2
index d25e059818a773a6a4a48fb34196cc641f79e718..a92e4f71ca871305611695aa04367054738881d0 100644
--- a/roles/thehive/templates/application.conf.j2
+++ b/roles/thehive/templates/application.conf.j2
@@ -5,7 +5,7 @@
 ## Include Play secret key
 # More information on secret key at https://www.playframework.com/documentation/2.8.x/ApplicationSecret
 #include "/etc/thehive/secret.conf"
-play.http.secret.key="{{lookup('password', '{{playbook_dir}}/secrets/passwords/thehive_secret_key')}}"
+play.http.secret.key="{{thehive_secret_key}}"
 
 ## Database configuration
 db.janusgraph {
@@ -13,7 +13,7 @@ db.janusgraph {
     ## Cassandra configuration
     # More information at https://docs.janusgraph.org/basics/configuration-reference/#storagecql
     backend: cql
-    hostname: ["{{groups['cassandra'][0]}}.{{soctools_netname}}"]
+    hostname: ["{{groups['cassandra'][0]}}.{{soctools_netname}}:9042"]
     # Cassandra authentication (if configured)
     // username: "thehive"
     // password: "password"
@@ -47,17 +47,61 @@ storage {
 
 ## Authentication configuration
 # More information at https://github.com/TheHive-Project/TheHiveDocs/TheHive4/Administration/Authentication.md
-//auth {
-//  providers: [
+auth {
+  providers: [
 //    {name: session}               # required !
 //    {name: basic, realm: thehive}
 //    {name: local}
 //    {name: key}
-//  ]
+    {name: session}               # required !
+    {name: basic, realm: thehive}
+    {name: local}
+    {name: key}    
+    {
+      name: oauth2
+      clientId: "dsoclab-thehive"
+      clientSecret: {{thehivesecret.value}}
+      redirectUri: "https://{{dslproxy}}:9000/api/ssoLogin"
+      responseType: "code"
+      grantType: "authorization_code"
+      authorizationUrl: "https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/protocol/openid-connect/auth"
+      authorizationHeader: "Bearer"
+      tokenUrl: "https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/protocol/openid-connect/token"
+      userUrl: "https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/protocol/openid-connect/userinfo"
+//      scope: ["openid", "email"]
+      scope: ["openid"]
+      userIdField: "email"
+//      userIdField: "name"
+    }
+  ]
+  sso {
+    autocreate: true
+    autoupdate: true
+    autologin: true
+    mapper: "simple"
+//    attributes {
+//     login: "login"
+//      name: "name"
+//      roles: "role"
+//    }
+    defaultRoles: ["read", "write", "admin"]
+    defaultOrganization: "uninett.no"
+//    defaultOrganization: "demo"
+  } 
+  ws.ssl.trustManager {
+    stores = [
+      {
+        type: "JKS" // JKS or PEM
+        path: "cacerts.jks"
+        password: "{{tspass}}"
+      }
+    ]
+  }
 # The format of logins must be valid email address format. If the provided login doesn't contain `@` the following
 # domain is automatically appended
-//  defaultUserDomain: "thehive.local"
-//}
+  defaultUserDomain: "uninett.no"
+#  defaultUserDomain: "thehive.local"
+}
 
 ## CORTEX configuration
 # More information at https://github.com/TheHive-Project/TheHiveDocs/TheHive4/Administration/Connectors.md
diff --git a/roles/thehive/templates/users.json b/roles/thehive/templates/users.json
new file mode 100644
index 0000000000000000000000000000000000000000..b16eed70fd8aaf68302b82150ce4101c8acfa430
--- /dev/null
+++ b/roles/thehive/templates/users.json
@@ -0,0 +1,6 @@
+{
+  "login": "{{ item.username }}",
+  "name": "{{ item.name }} {{ item.surname }}",
+  "roles": {{ item.roles }},
+  "organisation": "{{ item.organization }}"
+}
diff --git a/roles/thehive/vars/users.yml b/roles/thehive/vars/users.yml
new file mode 100644
index 0000000000000000000000000000000000000000..07433e6a1cc8b18ac3b239d1d0dfc48715d22a6e
--- /dev/null
+++ b/roles/thehive/vars/users.yml
@@ -0,0 +1,16 @@
+---
+​
+THEHIVE_API_KEY: "1gFdNhmUSxO3BRe1SBB5JYEvkW9UOo6s"
+THEHIVE_USERS:
+  - kiril:
+    username: "kiril"
+    name: "Kiril"
+    surname: "Kiroski"
+    roles: '["read", "write", "admin"]'
+    organization: "uninett.no"
+  - temur:
+    username: "temur"
+    name: "Temur"
+    surname: "Maisuradze"
+    roles: '["read", "write", "admin"]'
+    organization: "uninett.no"
diff --git a/soctools-inventory b/soctools-inventory
new file mode 100644
index 0000000000000000000000000000000000000000..cff0d648d769176bf1292cfcd88493c12ac03120
--- /dev/null
+++ b/soctools-inventory
@@ -0,0 +1,35 @@
+[dsldev]
+localhost ansible_connection=local
+
+[nificontainers]
+dsoclab-nifi-1 ansible_connection=docker
+dsoclab-nifi-2 ansible_connection=docker
+dsoclab-nifi-3 ansible_connection=docker
+
+[odfeescontainers]
+dsoclab-odfe-1 ansible_connection=docker
+dsoclab-odfe-2 ansible_connection=docker
+
+[odfekibanacontainers]
+dsoclab-kibana ansible_connection=docker
+
+[keycloakcontainers]
+dsoclab-keycloak ansible_connection=docker
+
+[mysql]
+dsoclab-mysql ansible_connection=docker
+
+[mispcontainers]
+dsoclab-misp ansible_connection=docker
+
+[cassandra]
+dsoclab-cassandra ansible_connection=docker
+
+[thehive]
+dsoclab-thehive ansible_connection=docker
+
+[cortex]
+dsoclab-cortex ansible_connection=docker
+
+[haproxy]
+dsoclab-haproxy ansible_connection=docker
diff --git a/soctools.yml b/soctools.yml
index fb4a2196557009b772ebf937cc80fe2658d65001..c25b56f32c95d5973e64ce70d6a1d7b4c3eae539 100644
--- a/soctools.yml
+++ b/soctools.yml
@@ -2,16 +2,9 @@
 
 - name: Start soctools cluster
   import_playbook: startsoctools.yml
-  when: "'start' in ansible_run_tags or 'config' in ansible_run_tags"
+  when: "'start' in ansible_run_tags"
 
 - name: Stop soctools cluster
   import_playbook: stopsoctools.yml
-  when: "'stop' in ansible_run_tags or 'stop-thehive' in ansible_run_tags or 'stop-keycloak' in ansible_run_tags or 'stop-cortex' in ansible_run_tags or 'stop-haproxy' in ansible_run_tags or 'stop-cassandra' in ansible_run_tags or 'stop-filebeat' in ansible_run_tags or 'stop-misp' in ansible_run_tags or 'stop-mysql' in ansible_run_tags or 'stop-nifi' in ansible_run_tags or 'stop-odfees' in ansible_run_tags or 'stop-odfekibana' in ansible_run_tags"
+  when: "'stop' in ansible_run_tags"
 
-- name: Update soctools cluster configs
-  import_playbook: update-config-soctools.yml
-  when: "'update-config' in ansible_run_tags or 'update-keycloak-config' in ansible_run_tags or 'update-thehive-config' in ansible_run_tags or 'update-cortex-config' in ansible_run_tags or 'update-haproxy-config' in ansible_run_tags or 'update-cassandra-config' in ansible_run_tags or 'update-filebeat-config' in ansible_run_tags or 'update-misp-config' in ansible_run_tags or 'update-mysql-config' in ansible_run_tags or 'update-nifi-config' in ansible_run_tags or 'update-odfees-config' in ansible_run_tags or 'update-odfekibana-config' in ansible_run_tags"
-
-- name: restart soctools cluster servics
-  import_playbook: restart-soctools.yml
-  when: "'restart' in ansible_run_tags or 'restart-thehive' in ansible_run_tags or 'restart-keycloak' in ansible_run_tags or 'restart-cortex' in ansible_run_tags or 'restart-haproxy' in ansible_run_tags or 'restart-cassandra' in ansible_run_tags or 'restart-filebeat' in ansible_run_tags or 'restart-misp' in ansible_run_tags or 'restart-mysql' in ansible_run_tags or 'restart-nifi' in ansible_run_tags or 'restart-odfees' in ansible_run_tags or 'restart-odfekibana' in ansible_run_tags"
diff --git a/soctools_server.yml b/soctools_server.yml
index 382d998567a630c58950d28fd43802eaf31089d9..23716c5a7e7d32fdc7bedd0faf775afb5c55bfbc 100644
--- a/soctools_server.yml
+++ b/soctools_server.yml
@@ -1,5 +1,5 @@
 ---
-- hosts: soctoolsmain
+- hosts: dsldev
   become: true
   roles:
     - soctools-server
diff --git a/startsoctools.yml b/startsoctools.yml
index c9c4c6bb95760d4da7a0a46706507bd4d5867174..f1154c340f91f5604fd36c1abd38f9cc718c58f0 100644
--- a/startsoctools.yml
+++ b/startsoctools.yml
@@ -1,7 +1,7 @@
 ---
 
 - name: Start docker containers 
-  hosts: soctoolsmain
+  hosts: dsldev
   roles:
     - docker
 
@@ -25,11 +25,6 @@
   roles:
     - keycloak
 
-- name: Reconfigure and start MISP
-  hosts: mispcontainers
-  roles:
-    - misp
-
 - name: Reconfigure and start NiFi
   hosts: nificontainers
   roles:
@@ -45,10 +40,10 @@
   roles:
     - odfekibana
 
-- name: Install and run filebeat
-  hosts: filebeat
+- name: Reconfigure and start MISP
+  hosts: mispcontainers
   roles:
-    - filebeat
+    - misp
 
 - name: Reconfigure and start TheHive
   hosts: thehive
diff --git a/stopsoctools.yml b/stopsoctools.yml
index 5bd121746729120486802cfc5538a181235b1642..045c3f06243bc3358245c8bbf219d68e9f89a9a5 100644
--- a/stopsoctools.yml
+++ b/stopsoctools.yml
@@ -6,7 +6,7 @@
     - nifi
 
 - name: Stop all containers
-  hosts: soctoolsmain
+  hosts: dsldev
   roles:
     - docker
 
diff --git a/update-config-soctools.yml b/update-config-soctools.yml
deleted file mode 100644
index 138f664fee2eb1a9d882a7ebf0b8f9e390bb1e72..0000000000000000000000000000000000000000
--- a/update-config-soctools.yml
+++ /dev/null
@@ -1,52 +0,0 @@
----
-
-- name: Update Configs for haproxy
-  hosts: haproxy
-  roles:
-    - haproxy
-
-- name: Update Configs for mysql
-  hosts: mysql
-  roles:
-    - mysql
-
-- name: Update Configs for Cassandra
-  hosts: cassandra
-  roles:
-    - cassandra
-
-- name: Update Configs for Keycloak
-  hosts: keycloakcontainers
-  roles:
-    - keycloak
-
-- name: Update Configs for NiFi
-  hosts: nificontainers
-  roles:
-    - nifi
-
-- name: Update Configs for OpenDistro for Elasticsearch
-  hosts: odfeescontainers
-  roles:
-    - odfees
-
-- name: Update Configs for OpenDistro Kibana for Elasticsearch
-  hosts: odfekibanacontainers
-  roles:
-    - odfekibana
-
-- name: Update Configs for MISP
-  hosts: mispcontainers
-  roles:
-    - misp
-
-- name: Update Configs for TheHive
-  hosts: thehive
-  roles:
-    - thehive
-
-- name: Update Configs for Cortex
-  hosts: cortex
-  roles:
-    - cortex
-
diff --git a/utils/flow2template.py b/utils/flow2template.py
index b2018328c6ccf5d7c53bf75645c3f44122cc4ba2..570a1ef23d0606d7ef2db44b7133d5a6ec9f43b2 100755
--- a/utils/flow2template.py
+++ b/utils/flow2template.py
@@ -13,20 +13,17 @@ et = xml.etree.ElementTree.parse(f)
 for v in et.findall(".//variable"):
     a=v.attrib
     if a['name']=="misp_token":
-        a['value']="{{lookup('file','{{playbook_dir}}/secrets/tokens/misp')}}"
+        a['value']="{{ misp_token }}"
     elif a['name']=="misp_url":
         a['value']="{{ misp_url }}"
     elif a['name']=="maxmind_key":
         a['value']="{{ maxmind_key }}"
     elif a['name']=="elastic_url":
-        a['value']="https://{{ soctoolsproxy }}:9200"
+        a['value']="https://{{ dslproxy }}:9200"
     elif a['name']=="elastic_username":
         a['value']="{{ elastic_username }}"
     elif a['name']=="elastic_password":
-        a['value']="{{lookup('password', '{{playbook_dir}}/secrets/passwords/odfees_adminpass')}}"
-
-for v in et.findall(".//controllerService[name='Soctools CA']/property[name='Truststore Password']/value"):
-    v.text="{{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}}"
+        a['value']="{{ odfees_adminpass }}"
     
 et.write(args.templatefile)