diff --git a/inventories/filebeat b/inventories/filebeat
index f4600cf1d042698cdc4fd5e4d4edba1e81b00264..cf6fb49060191fecf1d22704c367c9499929dd53 100644
--- a/inventories/filebeat
+++ b/inventories/filebeat
@@ -6,7 +6,7 @@ soctools-misp ansible_connection=docker FILEBEAT_FILES='["/var/opt/rh/rh-php72/l
 #soctools-odfe-1 ansible_connection=docker FILEBEAT_FILES='["/usr/share/elasticsearch/logs/soctools-cluster_server.json","/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="odfe1" FILEBEAT_LOG_FORMAT="text"
 #soctools-odfe-2 ansible_connection=docker FILEBEAT_FILES='["/usr/share/elasticsearch/logs/soctools-cluster_server.json","/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="odfe2" FILEBEAT_LOG_FORMAT="text"
 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="text"
+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"]' 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"
diff --git a/roles/keycloak/tasks/main.yml b/roles/keycloak/tasks/main.yml
index 296d051e9a316d7049613c6b4b6c9b084d47ebf1..41a832c1992542b6cdf480d2eb1b8a996c6c067a 100644
--- a/roles/keycloak/tasks/main.yml
+++ b/roles/keycloak/tasks/main.yml
@@ -36,6 +36,33 @@
   tags:
     - start
 
+- 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\">"
+  tags:
+   - start
+
+- 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">'
+  tags:
+   - start
+
+- 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"/>'
+  tags:
+   - start
+
 - name: Configure Keycloak start script
   remote_user: jboss
   template:
@@ -48,7 +75,6 @@
   tags:
     - start
 
-
 - name: Start Keycloak IdP
   remote_user: root
   command: "supervisorctl start keycloak"
diff --git a/roles/nifi/templates/flow.xml.j2 b/roles/nifi/templates/flow.xml.j2
index 3956cebc1cdfe2db106af5a70edb416b0277ef26..86f3a35d81acd93dfa56891efbe9c5b791a7b79e 100644
--- a/roles/nifi/templates/flow.xml.j2
+++ b/roles/nifi/templates/flow.xml.j2
@@ -4205,16 +4205,16 @@
         <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
         <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
         <outputPort>
-          <id>21a9e277-2d80-359a-9c57-cb76d8962e6d</id>
-          <name>To data output</name>
-          <position x="-1120.0" y="592.0" />
+          <id>20b01ab3-3a8d-3573-b95d-a4a45494050f</id>
+          <name>To enrichment</name>
+          <position x="480.0" y="392.0" />
           <comments />
           <scheduledState>RUNNING</scheduledState>
         </outputPort>
         <outputPort>
-          <id>20b01ab3-3a8d-3573-b95d-a4a45494050f</id>
-          <name>To enrichment</name>
-          <position x="480.0" y="392.0" />
+          <id>21a9e277-2d80-359a-9c57-cb76d8962e6d</id>
+          <name>To data output</name>
+          <position x="-1120.0" y="592.0" />
           <comments />
           <scheduledState>RUNNING</scheduledState>
         </outputPort>
@@ -4226,16 +4226,16 @@
           <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
           <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
           <outputPort>
-            <id>27d5761b-0172-1000-0000-000059275dad</id>
-            <name>To enrichment</name>
-            <position x="-312.0" y="328.0" />
+            <id>27d5dab2-0172-1000-ffff-ffffab5c50be</id>
+            <name>To data output</name>
+            <position x="-632.0" y="328.0" />
             <comments />
             <scheduledState>STOPPED</scheduledState>
           </outputPort>
           <outputPort>
-            <id>27d5dab2-0172-1000-ffff-ffffab5c50be</id>
-            <name>To data output</name>
-            <position x="-632.0" y="328.0" />
+            <id>27d5761b-0172-1000-0000-000059275dad</id>
+            <name>To enrichment</name>
+            <position x="-312.0" y="328.0" />
             <comments />
             <scheduledState>STOPPED</scheduledState>
           </outputPort>
@@ -4273,6 +4273,10 @@
               <name>Routing Strategy</name>
               <value>Route to Property name</value>
             </property>
+            <property>
+              <name>keycloak</name>
+              <value>${log_type:equals("keycloak")}</value>
+            </property>
             <property>
               <name>kibana</name>
               <value>${log_type:equals("kibana")}</value>
@@ -4295,16 +4299,16 @@
             </property>
           </processor>
           <outputPort>
-            <id>349b32fe-a821-1197-0000-00003a0b6fe5</id>
-            <name>To enrichment</name>
-            <position x="360.0" y="424.0" />
+            <id>bcb879d5-0175-1000-0000-000070879ad0</id>
+            <name>To data output</name>
+            <position x="-2480.0" y="336.0" />
             <comments />
             <scheduledState>RUNNING</scheduledState>
           </outputPort>
           <outputPort>
-            <id>bcb879d5-0175-1000-0000-000070879ad0</id>
-            <name>To data output</name>
-            <position x="-2480.0" y="336.0" />
+            <id>349b32fe-a821-1197-0000-00003a0b6fe5</id>
+            <name>To enrichment</name>
+            <position x="544.0" y="688.0" />
             <comments />
             <scheduledState>RUNNING</scheduledState>
           </outputPort>
@@ -5104,14 +5108,14 @@
               <comments />
               <scheduledState>RUNNING</scheduledState>
             </outputPort>
-            <funnel>
-              <id>895f7db3-0175-1000-ffff-ffff8229d688</id>
-              <position x="-1446.1517058240609" y="301.4492766741185" />
-            </funnel>
             <funnel>
               <id>895faa7a-0175-1000-0000-000014ef9dd3</id>
               <position x="278.84829417593915" y="332.4492766741185" />
             </funnel>
+            <funnel>
+              <id>895f7db3-0175-1000-ffff-ffff8229d688</id>
+              <position x="-1446.1517058240609" y="301.4492766741185" />
+            </funnel>
             <connection>
               <id>895fbf8f-0175-1000-ffff-ffffa5d2d01e</id>
               <name />
@@ -5582,14 +5586,14 @@
               <comments />
               <scheduledState>RUNNING</scheduledState>
             </outputPort>
-            <funnel>
-              <id>9e3adb6e-2266-390c-995d-76bc3aa5c3d8</id>
-              <position x="283.72871497338747" y="273.4623850295515" />
-            </funnel>
             <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>
             <processGroup>
               <id>8d1afcd0-0175-1000-ffff-ffffb3690a74</id>
               <name>TLS events</name>
@@ -6102,14 +6106,14 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
-              <funnel>
-                <id>8d399854-0175-1000-ffff-ffff8272837e</id>
-                <position x="1736.0" y="528.0" />
-              </funnel>
               <funnel>
                 <id>8d3298f0-0175-1000-ffff-ffffc9f211a7</id>
                 <position x="56.0" y="280.0" />
               </funnel>
+              <funnel>
+                <id>8d399854-0175-1000-ffff-ffff8272837e</id>
+                <position x="1736.0" y="528.0" />
+              </funnel>
               <connection>
                 <id>8d3979b7-0175-1000-ffff-ffffe2efe898</id>
                 <name />
@@ -6924,6 +6928,190 @@
               <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>
@@ -7140,14 +7328,14 @@
               <comments />
               <scheduledState>RUNNING</scheduledState>
             </outputPort>
-            <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>
+            <funnel>
+              <id>06521038-335b-3139-839d-ab43a013ce03</id>
+              <position x="-1557.869726298236" y="758.8984861527665" />
+            </funnel>
             <connection>
               <id>3c739604-b69c-3e86-ba4c-a4739078837c</id>
               <name />
@@ -7372,6 +7560,26 @@
               <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 />
@@ -7432,6 +7640,29 @@
             <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 />
@@ -8149,7 +8380,7 @@
             </property>
             <property>
               <name>Password</name>
-              <value>enc{2d7036ed427615cc0da2c105923da69609e9a5b2cfdf3ae7356c2fb11de6538a5393d363e717b6316763851a10ca5679}</value>
+              <value>enc{7f706f76bc019ad8a3c7700ec14f6d65035b47cfa70fce4d0aade0809ded55af0afc391ccf1744443ffa082fc97204a6}</value>
             </property>
             <property>
               <name>elasticsearch-http-connect-timeout</name>
@@ -11161,7 +11392,7 @@
       </property>
       <property>
         <name>Truststore Password</name>
-        <value>enc{f1a53d9f8ccdcff528b762ffc26710276eb38abb97f6abe2fd3fb2e8779ca390}</value>
+        <value>enc{fb94647e0f686a70205e73bdc73eb6a28bdbcd74c3e169b4cd116dd6a7cc28f6}</value>
       </property>
       <property>
         <name>Truststore Type</name>