PM flow demo - docker/kube

Change-Id: I9114f1c21fe12e931a14f995a49195aafda6baea
diff --git a/pm-data-event-demo/group6/rapp/ws.py b/pm-data-event-demo/group6/rapp/ws.py
index 55f98a4..4866513 100644
--- a/pm-data-event-demo/group6/rapp/ws.py
+++ b/pm-data-event-demo/group6/rapp/ws.py
@@ -51,6 +51,7 @@
                 f.write(json.dumps(msg))
                 f.close()
             elif (MIME_TEXT in request.content_type):
+                print("Payload(json): "+str(msg))
                 f = open("/rapp/dump/"+id+".json", "w")
                 f.write(request.data.decode('UTF-8'))
                 f.close()
diff --git a/pm-file-flow-demo/README.md b/pm-file-flow-demo/README.md
new file mode 100644
index 0000000..c7bc23c
--- /dev/null
+++ b/pm-file-flow-demo/README.md
@@ -0,0 +1,16 @@
+
+## Demo PM file flow using producers/consumers
+
+This demo is adapted to run both in docker and kuberneters (local or remote).
+
+See README.md in docker-proj for docker version\
+
+See README.md in kube-proj for kubernetes version (local and remote variant)
+
+Three components need to be built to run the demo. Build instruction is inlcuded in each of the above README.
+
+Components:
+- https-server Simulate a NE with https file download
+- kafka-pm-producer A producer of pm json (from pm xml) and for filtering of json
+- rapp Simulates an rapp, start and unique job to request filtered json
+
diff --git a/pm-file-flow-demo/docker-proj/README.md b/pm-file-flow-demo/docker-proj/README.md
new file mode 100644
index 0000000..253a524
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/README.md
@@ -0,0 +1,203 @@
+
+## Demo project in docker
+
+A demo showing pm file flow from simlulates network elements to filtered pm data for rAPPs.
+
+## Run in docker-desktop - docker only
+
+### Clone the protoyping repo:
+
+`git clone https://gerrit.nordix.org/local/oransc/nonrtric-prototyping`
+
+### Build Datafile component
+
+`cd datafile`
+
+`mvn install docker:build -Dmaven.test.skip=true`
+
+### Build Kafka pm producer
+
+`cd pm-file-flow-demo/kafka-pm-producer`
+
+`./build.sh no-push`
+
+### Build Https server
+
+`cd pm-file-flow-demo/https-server`
+
+`./build.sh no-push`
+
+### Build rapp
+
+`cd pm-file-flow-demo/rapp`
+
+`./build.sh no-push`
+
+### Start demo
+
+WARNING: The setup scripts below will prune all unused docker volumes!
+
+INFO: Temporary files for some containers will be stored in subdirs under `/tmp`
+
+`cd pm-file-flow-demo/docker-proj`
+
+There are several ways to start and run the demo, with file or minio file storage, single or multi instances of data-file collector and kafka as well as a choice of sftp, ftpes or https.
+Additional configuration can be made in the setup script.
+
+It could be a good idea to clean any other running containers in docker to avoid port and container name clashes.
+
+Command usage: `docker-setup.sh k1|k3 dfc1|dfc2 file|minio no-ftp|ftp  data-mount|no-data-mount`
+
+Paratameters: \
+k1 - Single kafka broker \
+k3 - Three kafka brokers \
+dfc1 - Single dfc \
+dfc2 - Two dfc \
+file - raw file storage \
+minio - file storage in minio \
+ftp -  use ftp servers to simulate NEs \
+no-ftp - use https servers to simulate NEs \
+data-mount - mount data volumes to localhost\
+no-data-mount - do not mount data volumes to localhost - however container shared dirs are still mounted\
+
+Example cmd: \
+`./docker-setup.sh k1 dfc1 minio no-ftp`
+
+Let the script finish.
+
+If the script fails, make sure to clean the setup before attempting a new setup.
+
+`./docker-tear-down.sh`
+
+In addition, a `docker system prune` might be needed now and then.
+
+### Tools for monitoring
+
+Open browser to kowl (kafka gui) - watch topics, messages etc\
+browser: `localhost:8780`
+
+Open brower to minio - available only if minio is given on the cmd line when starting the demo\
+user: admin pwd: adminadmin\
+browser: `localhost:9001`
+
+Open browser or run curl  - dfc statictics\
+browser or curl: `https://localhost:8433/status`\
+browser or curl: `https://localhost:8533/status` (second dfc - only when running with 2 dfc instances)
+
+Open browser or run curl - kafka-producer (xml->json) statictics (2 instances) \
+curl: `localhost:9880/status | jq` \
+browser: `localhost:9880/status`
+
+curl: `localhost:9881/status | jq` \
+browser: `localhost:9881/status`
+
+Open browser or run curl - kafka-producer (json->kafka) statictics \
+curl: `localhost:9980/status | jq` \
+browser: `localhost:9980/status`
+
+Open browser or run curl - dmaap-adapter (json->kafka) statictics\
+curl: `localhost:8084/statistics | jq` \
+browser: `localhost:8084/statistics`
+
+### Push data - basic
+
+The basic setup creates:
+- one job in a golang-kafka-producers (kpm100 and kpm101) for xml to json conversion
+- one job in a golang-kafka-producer (kp1) json filtering
+- one job in a dmaap-adapter for json filtering
+
+For additional producer setup, see "Push data - extended below"
+
+If the demo has been started with the flag "ftp" then files need to be prepared for the http server.
+
+`cd pm-file-flow-demo/scripts`
+
+Use the following script to create ftp files (not needed with running https servers)
+
+Usage: `populate-ne-files.sh <node-count> <file-count> <node-name-base> <file-extension>`
+
+Parameters/
+node-count - number of unique NEs\
+file-count - number of files per NE\
+node-name-base - NE name prefix\
+file-extension - xml or xml.gz
+
+File ready events can be pushed to the ves collector or pushed directly to the topic for file ready events (bypassing the ves collector).
+
+Push to ves collector:
+
+Usage: `push-to-ves-collector.sh <node-count> <num-of-events> <node-name-base> <file-extension> sftp|ftpes|https <num-servers> [hist]`
+
+Parameters/
+node-count* - number of unique NEs\
+num-of-events* - number of events per NE\
+node-name-base* - NE name prefix\
+file-extension* - xml or xml.gz
+sftp** - use sftp for file download
+ftpes** - use ftpes for file download
+https** - use https for file download
+num-servers - number of sftp/ftpes/https servers to simulate  NEs (10 is default)
+hist - include 24h of historical ropfiles (96 files) in each event
+
+Parameter with * must match the parameters in the setup script populate-ne-files.sh - if running sftp/ftpes
+Parameter with ** must match the parameter no-ftp/ftp in the script docker-setup.sh - https can be used for no-ftp and sftp/ftpes can be used for ftp.
+
+
+Usage: ` push-to-file-ready-topic.sh <node-count> <num-of-events> <node-name-base> <file-extension> sftp|ftpes|https <num-servers> [hist]`
+
+Parameter: \
+Same as `push-to-ves-collector.sh`
+
+Once the events has been pushed the progress can be viewed in the monitoring tools described above.
+
+If several sets of data shall be pushed, just change the parameter `<node-name-base>` to make the new files unique.
+
+### Push data - extended
+
+#### Set of jobs/rapps
+
+To simulate a larger amount of jobs, a number of jobs can be set up to send filtered json to individual topics.
+
+`cd pm-file-flow-demo/docker-proj`
+
+Usage: `x-jobs.sh file|minio topics|no-topics jobs|rapps|none [<num-jobs>]`
+
+Parameter with * must match the parameters in the setup script
+
+Parameters/
+file* - raw file storage \
+minio* - file storage in minio \
+topics - create unique topics\
+no-topics - do not create unique topics. Topics will be autocreated by the jobs/rapps\
+jobs - create jobs\
+rapps - create rapps\
+none - do not create jobs or rapps
+num-job - number of jobs in each producer (there are two producer applicable)
+
+Warning: The rapp parameter will create twp docker container for each job - bigger number may exhaust the docker resources on your machine
+
+#### Historical pm data
+
+A job can be setup to seach and filter historical pm files (previously downloaded)
+
+`cd pm-file-flow-demo/docker-proj`
+
+Usage: `./hist-job.sh`
+
+No parameters needed
+
+
+### Clean up
+
+`cd pm-file-flow-demo/scripts`
+
+Run the script to remove all docker containers.
+
+`./docker-tear-down.sh`
+
+To also cleanup files.
+
+`./clean-shared-volume.sh`
+
+`./clean-ne-files.sh`
+
diff --git a/pm-file-flow-demo/docker-proj/config/dfc-common/template-truststore.jks b/pm-file-flow-demo/docker-proj/config/dfc-common/template-truststore.jks
new file mode 100644
index 0000000..50a0f9e
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/dfc-common/template-truststore.jks
Binary files differ
diff --git a/pm-file-flow-demo/docker-proj/config/dfc-common/truststore.pass b/pm-file-flow-demo/docker-proj/config/dfc-common/truststore.pass
new file mode 100755
index 0000000..b915b0f
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/dfc-common/truststore.pass
@@ -0,0 +1 @@
+policy_agent
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/dfc1/application-template.yaml b/pm-file-flow-demo/docker-proj/config/dfc1/application-template.yaml
new file mode 100644
index 0000000..476e113
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/dfc1/application-template.yaml
@@ -0,0 +1,80 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+spring:
+  profiles:
+    active: prod
+management:
+  endpoints:
+    web:
+      exposure:
+        include: "loggers,logfile,health,info,metrics"
+server:
+  port: 8433
+  ssl:
+      key-store-type: JKS
+      key-store-password: policy_agent
+      key-store: config/keystore.jks
+      key-password: policy_agent
+      key-alias: policy_agent
+logging:
+  level:
+    ROOT: WARN
+    org.onap: WARN
+    org.springframework: WARN
+    #TRACE
+    org.springframework.data: WARN
+    org.springframework.web.reactive.function.client.ExchangeFunctions: WARN
+    org.onap.dcaegen2.collectors.datafile: WARN
+    #org.onap.dcaegen2.collectors.datafile: TRACE
+
+  file:
+    name: /var/log/ONAP/application.log
+app:
+  filepath: config/datafile_endpoints_test.json
+  collected-files-path: "/tmp/onap_datafile/"
+   # KAFKA boostrap servers. This is only needed if there are Information Types that uses a kafkaInputTopic
+  # several redundant boostrap servers can be specified, separated by a comma ','.
+  kafka:
+    bootstrap-servers: kafka-1:29092
+    # output topic
+    collected-file-topic: collected-file
+    client-id: datafile-1
+    # input topic
+    file-ready-event-topic: file-ready
+  sftp:
+    known-hosts-file-path:
+    strict-host-key-checking: false
+  ssl:
+     key-store-password-file: /opt/app/datafile/config/ftps_keystore.pass
+     key-store: /opt/app/datafile/config/ftps_keystore.p12
+     trust-store-password-file: /opt/app/datafile/config/truststore.pass
+     trust-store: /opt/app/datafile/config/truststore.jks
+  s3:
+    endpointOverride: $DFC_MINIO
+    accessKeyId: admin
+    secretAccessKey: adminadmin
+    bucket: ropfiles
+
+springdoc:
+  show-actuator: true
+  swagger-ui.disable-swagger-default-url: true
+################
+
+
+
+
diff --git a/pm-file-flow-demo/docker-proj/config/dfc1/application.yaml b/pm-file-flow-demo/docker-proj/config/dfc1/application.yaml
new file mode 100644
index 0000000..1f7f056
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/dfc1/application.yaml
@@ -0,0 +1,80 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+spring:
+  profiles:
+    active: prod
+management:
+  endpoints:
+    web:
+      exposure:
+        include: "loggers,logfile,health,info,metrics"
+server:
+  port: 8433
+  ssl:
+      key-store-type: JKS
+      key-store-password: policy_agent
+      key-store: config/keystore.jks
+      key-password: policy_agent
+      key-alias: policy_agent
+logging:
+  level:
+    ROOT: WARN
+    org.onap: WARN
+    org.springframework: WARN
+    #TRACE
+    org.springframework.data: WARN
+    org.springframework.web.reactive.function.client.ExchangeFunctions: WARN
+    org.onap.dcaegen2.collectors.datafile: WARN
+    #org.onap.dcaegen2.collectors.datafile: TRACE
+
+  file:
+    name: /var/log/ONAP/application.log
+app:
+  filepath: config/datafile_endpoints_test.json
+  collected-files-path: "/tmp/onap_datafile/"
+   # KAFKA boostrap servers. This is only needed if there are Information Types that uses a kafkaInputTopic
+  # several redundant boostrap servers can be specified, separated by a comma ','.
+  kafka:
+    bootstrap-servers: kafka-1:29092
+    # output topic
+    collected-file-topic: collected-file
+    client-id: datafile-1
+    # input topic
+    file-ready-event-topic: file-ready
+  sftp:
+    known-hosts-file-path:
+    strict-host-key-checking: false
+  ssl:
+     key-store-password-file: /opt/app/datafile/config/ftps_keystore.pass
+     key-store: /opt/app/datafile/config/ftps_keystore.p12
+     trust-store-password-file: /opt/app/datafile/config/truststore.pass
+     trust-store: /opt/app/datafile/config/truststore.jks
+  s3:
+    endpointOverride: http://minio-server:9000
+    accessKeyId: admin
+    secretAccessKey: adminadmin
+    bucket: ropfiles
+
+springdoc:
+  show-actuator: true
+  swagger-ui.disable-swagger-default-url: true
+################
+
+
+
+
diff --git a/pm-file-flow-demo/docker-proj/config/dfc1/truststore.jks b/pm-file-flow-demo/docker-proj/config/dfc1/truststore.jks
new file mode 100644
index 0000000..920df31
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/dfc1/truststore.jks
Binary files differ
diff --git a/pm-file-flow-demo/docker-proj/config/dfc2/application-template.yaml b/pm-file-flow-demo/docker-proj/config/dfc2/application-template.yaml
new file mode 100644
index 0000000..b90d6ce
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/dfc2/application-template.yaml
@@ -0,0 +1,79 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+spring:
+  profiles:
+    active: prod
+management:
+  endpoints:
+    web:
+      exposure:
+        include: "loggers,logfile,health,info,metrics"
+server:
+  port: 8433
+  ssl:
+      key-store-type: JKS
+      key-store-password: policy_agent
+      key-store: config/keystore.jks
+      key-password: policy_agent
+      key-alias: policy_agent
+logging:
+  level:
+    ROOT: WARN
+    org.onap: WARN
+    org.springframework: WARN
+    #TRACE
+    org.springframework.data: WARN
+    org.springframework.web.reactive.function.client.ExchangeFunctions: WARN
+    org.onap.dcaegen2.collectors.datafile: WARN
+    #org.onap.dcaegen2.collectors.datafile: TRACE
+
+  file:
+    name: /var/log/ONAP/application.log
+app:
+  filepath: config/datafile_endpoints_test.json
+  collected-files-path: "/tmp/onap_datafile/"
+   # KAFKA boostrap servers. This is only needed if there are Information Types that uses a kafkaInputTopic
+  # several redundant boostrap servers can be specified, separated by a comma ','.
+  kafka:
+    bootstrap-servers: kafka-1:29092
+    # output topic
+    collected-file-topic: collected-file
+    client-id: datafile-2
+    # input topic
+    file-ready-event-topic: file-ready
+  sftp:
+    known-hosts-file-path:
+    strict-host-key-checking: false
+  ssl:
+     key-store-password-file: /opt/app/datafile/config/ftps_keystore.pass
+     key-store: /opt/app/datafile/config/ftps_keystore.p12
+     trust-store-password-file: /opt/app/datafile/config/truststore.pass
+     trust-store: /opt/app/datafile/config/truststore.jks
+  s3:
+    endpointOverride: $DFC_MINIO
+    accessKeyId: admin
+    secretAccessKey: adminadmin
+    bucket: ropfiles
+springdoc:
+  show-actuator: true
+  swagger-ui.disable-swagger-default-url: true
+################
+
+
+
+
diff --git a/pm-file-flow-demo/docker-proj/config/dfc2/application.yaml b/pm-file-flow-demo/docker-proj/config/dfc2/application.yaml
new file mode 100644
index 0000000..adef711
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/dfc2/application.yaml
@@ -0,0 +1,79 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+spring:
+  profiles:
+    active: prod
+management:
+  endpoints:
+    web:
+      exposure:
+        include: "loggers,logfile,health,info,metrics"
+server:
+  port: 8433
+  ssl:
+      key-store-type: JKS
+      key-store-password: policy_agent
+      key-store: config/keystore.jks
+      key-password: policy_agent
+      key-alias: policy_agent
+logging:
+  level:
+    ROOT: WARN
+    org.onap: WARN
+    org.springframework: WARN
+    #TRACE
+    org.springframework.data: WARN
+    org.springframework.web.reactive.function.client.ExchangeFunctions: WARN
+    org.onap.dcaegen2.collectors.datafile: WARN
+    #org.onap.dcaegen2.collectors.datafile: TRACE
+
+  file:
+    name: /var/log/ONAP/application.log
+app:
+  filepath: config/datafile_endpoints_test.json
+  collected-files-path: "/tmp/onap_datafile/"
+   # KAFKA boostrap servers. This is only needed if there are Information Types that uses a kafkaInputTopic
+  # several redundant boostrap servers can be specified, separated by a comma ','.
+  kafka:
+    bootstrap-servers: kafka-1:29092
+    # output topic
+    collected-file-topic: collected-file
+    client-id: datafile-2
+    # input topic
+    file-ready-event-topic: file-ready
+  sftp:
+    known-hosts-file-path:
+    strict-host-key-checking: false
+  ssl:
+     key-store-password-file: /opt/app/datafile/config/ftps_keystore.pass
+     key-store: /opt/app/datafile/config/ftps_keystore.p12
+     trust-store-password-file: /opt/app/datafile/config/truststore.pass
+     trust-store: /opt/app/datafile/config/truststore.jks
+  s3:
+    endpointOverride: 
+    accessKeyId: admin
+    secretAccessKey: adminadmin
+    bucket: ropfiles
+springdoc:
+  show-actuator: true
+  swagger-ui.disable-swagger-default-url: true
+################
+
+
+
+
diff --git a/pm-file-flow-demo/docker-proj/config/dfc2/truststore.jks b/pm-file-flow-demo/docker-proj/config/dfc2/truststore.jks
new file mode 100644
index 0000000..2191066
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/dfc2/truststore.jks
Binary files differ
diff --git a/pm-file-flow-demo/docker-proj/config/dmaap/MsgRtrApi.properties b/pm-file-flow-demo/docker-proj/config/dmaap/MsgRtrApi.properties
new file mode 100644
index 0000000..344b4d0
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/dmaap/MsgRtrApi.properties
@@ -0,0 +1,169 @@
+###############################################################################
+#  ============LICENSE_START=======================================================
+#  org.onap.dmaap
+#  ================================================================================
+#  Copyright � 2017 AT&T Intellectual Property. All rights reserved.
+#  ================================================================================
+#  Licensed 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.
+#  ============LICENSE_END=========================================================
+#
+#  ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+###############################################################################
+###############################################################################
+##
+## Cambria API Server config
+##
+##	- Default values are shown as commented settings.
+##
+
+###############################################################################
+##
+## HTTP service
+##
+##		- 3904 is standard as of 7/29/14.
+#
+## Zookeeper Connection
+##
+##	Both Cambria and Kafka make use of Zookeeper.
+##
+#config.zk.servers=172.18.1.1
+config.zk.servers=zookeeper-1:32181
+#config.zk.root=/fe3c/cambria/config
+
+
+###############################################################################
+##
+## Kafka Connection
+##
+##	Items below are passed through to Kafka's producer and consumer
+##	configurations (after removing "kafka.")
+##	if you want to change request.required.acks it can take this one value
+#kafka.metadata.broker.list=localhost:9092,localhost:9093
+kafka.metadata.broker.list=kafka-1:29092
+##kafka.request.required.acks=-1
+#kafka.client.zookeeper=${config.zk.servers}
+consumer.timeout.ms=100
+zookeeper.connection.timeout.ms=6000
+zookeeper.session.timeout.ms=20000
+zookeeper.sync.time.ms=2000
+auto.commit.interval.ms=1000
+fetch.message.max.bytes =1000000
+auto.commit.enable=false
+
+#(backoff*retries > zksessiontimeout)
+kafka.rebalance.backoff.ms=10000
+kafka.rebalance.max.retries=6
+
+
+###############################################################################
+##
+##	Secured Config
+##
+##	Some data stored in the config system is sensitive -- API keys and secrets,
+##	for example. to protect it, we use an encryption layer for this section
+##	of the config.
+##
+## The key is a base64 encode AES key. This must be created/configured for
+## each installation.
+#cambria.secureConfig.key=
+##
+## The initialization vector is a 16 byte value specific to the secured store.
+## This must be created/configured for each installation.
+#cambria.secureConfig.iv=
+
+## Southfield Sandbox
+cambria.secureConfig.key=b/7ouTn9FfEw2PQwL0ov/Q==
+cambria.secureConfig.iv=wR9xP5k5vbz/xD0LmtqQLw==
+authentication.adminSecret=fe3cCompound
+#cambria.secureConfig.key[pc569h]=YT3XPyxEmKCTLI2NK+Sjbw==
+#cambria.secureConfig.iv[pc569h]=rMm2jhR3yVnU+u2V9Ugu3Q==
+
+
+###############################################################################
+##
+## Consumer Caching
+##
+##	Kafka expects live connections from the consumer to the broker, which
+##	obviously doesn't work over connectionless HTTP requests. The Cambria
+##	server proxies HTTP requests into Kafka consumer sessions that are kept
+##	around for later re-use. Not doing so is costly for setup per request,
+##	which would substantially impact a high volume consumer's performance.
+##
+##	This complicates Cambria server failover, because we often need server
+##	A to close its connection before server B brings up the replacement.
+##
+
+## The consumer cache is normally enabled.
+#cambria.consumer.cache.enabled=true
+
+## Cached consumers are cleaned up after a period of disuse. The server inspects
+## consumers every sweepFreqSeconds and will clean up any connections that are
+## dormant for touchFreqMs.
+#cambria.consumer.cache.sweepFreqSeconds=15
+cambria.consumer.cache.touchFreqMs=120000
+##stickforallconsumerrequests=false
+## The cache is managed through ZK. The default value for the ZK connection
+## string is the same as config.zk.servers.
+#cambria.consumer.cache.zkConnect=${config.zk.servers}
+
+##
+## Shared cache information is associated with this node's name. The default
+## name is the hostname plus the HTTP service port this host runs on. (The
+## hostname is determined via InetAddress.getLocalHost ().getCanonicalHostName(),
+## which is not always adequate.) You can set this value explicitly here.
+##
+#cambria.api.node.identifier=<use-something-unique-to-this-instance>
+
+#cambria.rateLimit.maxEmptyPollsPerMinute=30
+#cambria.rateLimitActual.delay.ms=10
+
+###############################################################################
+##
+## Metrics Reporting
+##
+##	This server can report its metrics periodically on a topic.
+##
+#metrics.send.cambria.enabled=true
+#metrics.send.cambria.topic=cambria.apinode.metrics                                  #msgrtr.apinode.metrics.dmaap
+#metrics.send.cambria.sendEverySeconds=60
+
+cambria.consumer.cache.zkBasePath=/fe3c/cambria/consumerCache
+consumer.timeout=17
+
+##############################################################################
+#100mb
+maxcontentlength=10000
+
+
+##############################################################################
+#AAF Properties
+msgRtr.namespace.aaf=org.onap.dmaap.mr.topic
+msgRtr.topicfactory.aaf=org.onap.dmaap.mr.topicFactory|:org.onap.dmaap.mr.topic:
+enforced.topic.name.AAF=org.onap.dmaap.mr
+forceAAF=false
+transidUEBtopicreqd=false
+defaultNSforUEB=org.onap.dmaap.mr
+##############################################################################
+#Mirror Maker Agent
+msgRtr.mirrormakeradmin.aaf=org.onap.dmaap.mr.mirrormaker|*|admin
+msgRtr.mirrormakeruser.aaf=org.onap.dmaap.mr.mirrormaker|*|user
+msgRtr.mirrormakeruser.aaf.create=org.onap.dmaap.mr.topicFactory|:org.onap.dmaap.mr.topic:
+msgRtr.mirrormaker.timeout=15000
+msgRtr.mirrormaker.topic=org.onap.dmaap.mr.mmagent
+msgRtr.mirrormaker.consumergroup=mmagentserver
+msgRtr.mirrormaker.consumerid=1
+
+kafka.max.poll.interval.ms=300000
+kafka.heartbeat.interval.ms=60000
+kafka.session.timeout.ms=240000
+kafka.max.poll.records=1000
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/dmaap/cadi.properties b/pm-file-flow-demo/docker-proj/config/dmaap/cadi.properties
new file mode 100644
index 0000000..e5b544c
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/dmaap/cadi.properties
@@ -0,0 +1,36 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+#aaf_locate_url=https://aaf-locate.{{ include "common.namespace" . }}:8095
+aaf_url=https://AAF_LOCATE_URL/onap.org.osaaf.aaf.service:2.1
+aaf_env=DEV
+aaf_lur=org.onap.aaf.cadi.aaf.v2_0.AAFLurPerm
+
+#cadi_truststore=/appl/dmaapMR1/etc/org.onap.dmaap.mr.trust.jks
+#cadi_truststore_password=enc:mN6GiIzFQxKGDzAXDOs7b4j8DdIX02QrZ9QOWNRpxV3rD6whPCfizSMZkJwxi_FJ
+
+cadi_keyfile=/appl/dmaapMR1/etc/org.onap.dmaap.mr.keyfile
+
+cadi_alias=dmaapmr@mr.dmaap.onap.org
+cadi_keystore=/appl/dmaapMR1/etc/org.onap.dmaap.mr.p12
+cadi_keystore_password=enc:_JJT2gAEkRzXla5xfDIHal8pIoIB5iIos3USvZQT6sL-l14LpI5fRFR_QIGUCh5W
+cadi_x509_issuers=CN=intermediateCA_1, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_7, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_9, OU=OSAAF, O=ONAP, C=US
+
+cadi_loglevel=INFO
+cadi_protocols=TLSv1.1,TLSv1.2
+cadi_latitude=37.78187
+cadi_longitude=-122.26147
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/ftpes/certs/gen-certs.sh b/pm-file-flow-demo/docker-proj/config/ftpes/certs/gen-certs.sh
new file mode 100755
index 0000000..84091d1
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/ftpes/certs/gen-certs.sh
@@ -0,0 +1,90 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+echo "Generating ftpes certs"
+SD=$(dirname -- "$0")
+echo "script-home: "$SD
+
+cd $SD
+
+print_usage() {
+    echo "Usage: gen-certs.sh <num-certs>"
+    exit 1
+}
+
+check_error() {
+    if [ $1 -ne 0 ]; then
+        echo "Failed $2"
+        echo "Exiting..."
+        exit 1
+    fi
+}
+
+if [ $# -ne 1 ]; then
+    print_usage
+fi
+
+rm *.crt
+rm *.key
+
+echo "Generating ca cert and key"
+echo " Generating ca key"
+openssl genrsa 2048 > ca.key
+check_error $?
+
+echo " Generating ca cert"
+cat <<__EOF__ | openssl req -new -x509 -nodes -days 365000  -key ca.key  -out ftpesca.crt
+SE
+.
+.
+EST
+EST
+$SRV
+.
+__EOF__
+check_error $?
+
+
+for (( i=1; i<=${1}; i++ )); do
+    SRV="ftp-ftpes-$i"
+
+    echo " Generating cert and key  for server $SRV"
+cat <<__EOF__ | openssl req -newkey rsa:2048 -nodes -days 365000  -keyout ftpes-$i.key -out ftpes-req$i.crt
+SE
+.
+.
+ERIC
+ERIC
+$SRV
+.
+
+__EOF__
+    check_error $?
+
+    openssl x509 -req -days 365000 -set_serial 01 -in ftpes-req$i.crt -out ftpes-$i.crt -CA ftpesca.crt -CAkey ca.key
+    check_error $?
+
+    echo " Verifying cert towards ca cert"
+    openssl verify -CAfile ftpesca.crt ftpesca.crt ftpes-$i.crt
+    check_error $?
+
+done
+
+echo "DONE"
+exit 0
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/ftpes/sftpgo.json b/pm-file-flow-demo/docker-proj/config/ftpes/sftpgo.json
new file mode 100644
index 0000000..f48fa12
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/ftpes/sftpgo.json
@@ -0,0 +1,400 @@
+{
+    "common": {
+      "idle_timeout": 15,
+      "upload_mode": 0,
+      "actions": {
+        "execute_on": [],
+        "execute_sync": [],
+        "hook": ""
+      },
+      "setstat_mode": 0,
+      "temp_path": "",
+      "proxy_protocol": 0,
+      "proxy_allowed": [],
+      "startup_hook": "",
+      "post_connect_hook": "",
+      "post_disconnect_hook": "",
+      "data_retention_hook": "",
+      "max_total_connections": 0,
+      "max_per_host_connections": 100,
+      "whitelist_file": "",
+      "defender": {
+        "enabled": false,
+        "driver": "memory",
+        "ban_time": 30,
+        "ban_time_increment": 50,
+        "threshold": 15,
+        "score_invalid": 2,
+        "score_valid": 1,
+        "score_limit_exceeded": 3,
+        "observation_time": 30,
+        "entries_soft_limit": 100,
+        "entries_hard_limit": 150,
+        "safelist_file": "",
+        "blocklist_file": "",
+        "safelist": [],
+        "blocklist": []
+      },
+      "rate_limiters": [
+        {
+          "average": 0,
+          "period": 1000,
+          "burst": 1,
+          "type": 2,
+          "protocols": [
+            "SSH",
+            "FTP",
+            "DAV",
+            "HTTP"
+          ],
+          "allow_list": [],
+          "generate_defender_events": false,
+          "entries_soft_limit": 100,
+          "entries_hard_limit": 150
+        }
+      ]
+    },
+    "acme": {
+      "domains": [],
+      "email": "",
+      "key_type": "4096",
+      "certs_path": "certs",
+      "ca_endpoint": "https://acme-v02.api.letsencrypt.org/directory",
+      "renew_days": 30,
+      "http01_challenge": {
+        "port": 80,
+        "proxy_header": "",
+        "webroot": ""
+      },
+      "tls_alpn01_challenge": {
+        "port": 0
+      }
+    },
+    "sftpd": {
+      "bindings": [
+        {
+          "port": 2022,
+          "address": "",
+          "apply_proxy_config": true
+        }
+      ],
+      "max_auth_tries": 0,
+      "banner": "",
+      "host_keys": [],
+      "host_certificates": [],
+      "host_key_algorithms": [],
+      "kex_algorithms": [],
+      "ciphers": [],
+      "macs": [],
+      "trusted_user_ca_keys": [],
+      "revoked_user_certs_file": "",
+      "login_banner_file": "",
+      "enabled_ssh_commands": [
+        "md5sum",
+        "sha1sum",
+        "sha256sum",
+        "cd",
+        "pwd",
+        "scp"
+      ],
+      "keyboard_interactive_authentication": false,
+      "keyboard_interactive_auth_hook": "",
+      "password_authentication": true,
+      "folder_prefix": ""
+    },
+    "ftpd": {
+      "bindings": [
+        {
+          "port": 2021,
+          "address": "",
+          "apply_proxy_config": true,
+          "tls_mode": 0,
+          "certificate_file": "",
+          "certificate_key_file": "",
+          "min_tls_version": 12,
+          "force_passive_ip": "",
+          "passive_ip_overrides": [],
+          "client_auth_type": 0,
+          "tls_cipher_suites": [],
+          "passive_connections_security": 0,
+          "active_connections_security": 0,
+          "debug": false
+        }
+      ],
+      "banner": "",
+      "banner_file": "",
+      "active_transfers_port_non_20": true,
+      "passive_port_range": {
+        "start": 50000,
+        "end": 50100
+      },
+      "disable_active_mode": true,
+      "enable_site": false,
+      "hash_support": 0,
+      "combine_support": 0,
+      "certificate_file": "/etc/ssl/private/ftp.crt",
+      "certificate_key_file": "/etc/ssl/private/ftp.key",
+      "ca_certificates": ["/etc/ssl/private/ftpesca.crt"],
+      "ca_revocation_lists": []
+    },
+    "webdavd": {
+      "bindings": [
+        {
+          "port": 0,
+          "address": "",
+          "enable_https": false,
+          "certificate_file": "",
+          "certificate_key_file": "",
+          "min_tls_version": 12,
+          "client_auth_type": 0,
+          "tls_cipher_suites": [],
+          "prefix": "",
+          "proxy_allowed": [],
+          "client_ip_proxy_header": "",
+          "client_ip_header_depth": 0
+        }
+      ],
+      "certificate_file": "",
+      "certificate_key_file": "",
+      "ca_certificates": [],
+      "ca_revocation_lists": [],
+      "cors": {
+        "enabled": false,
+        "allowed_origins": [],
+        "allowed_methods": [],
+        "allowed_headers": [],
+        "exposed_headers": [],
+        "allow_credentials": false,
+        "max_age": 0
+      },
+      "cache": {
+        "users": {
+          "expiration_time": 0,
+          "max_size": 50
+        },
+        "mime_types": {
+          "enabled": true,
+          "max_size": 1000
+        }
+      }
+    },
+    "data_provider": {
+      "driver": "sqlite",
+      "name": "sftpgo.db",
+      "host": "",
+      "port": 0,
+      "username": "",
+      "password": "",
+      "sslmode": 0,
+      "root_cert": "",
+      "client_cert": "",
+      "client_key": "",
+      "connection_string": "",
+      "sql_tables_prefix": "",
+      "track_quota": 2,
+      "delayed_quota_update": 0,
+      "pool_size": 0,
+      "users_base_dir": "/srv/sftpgo/data",
+      "actions": {
+        "execute_on": [],
+        "execute_for": [],
+        "hook": ""
+      },
+      "external_auth_hook": "",
+      "external_auth_scope": 0,
+      "credentials_path": "credentials",
+      "pre_login_hook": "",
+      "post_login_hook": "",
+      "post_login_scope": 0,
+      "check_password_hook": "",
+      "check_password_scope": 0,
+      "password_hashing": {
+        "bcrypt_options": {
+          "cost": 10
+        },
+        "argon2_options": {
+          "memory": 65536,
+          "iterations": 1,
+          "parallelism": 2
+        },
+        "algo": "bcrypt"
+      },
+      "password_validation": {
+        "admins": {
+          "min_entropy": 0
+        },
+        "users": {
+          "min_entropy": 0
+        }
+      },
+      "password_caching": true,
+      "update_mode": 0,
+      "create_default_admin": false,
+      "naming_rules": 1,
+      "is_shared": 0,
+      "backups_path": "/srv/sftpgo/backups",
+      "auto_backup": {
+        "enabled": true,
+        "hour": "0",
+        "day_of_week": "*"
+      }
+    },
+    "httpd": {
+      "bindings": [
+        {
+          "port": 8080,
+          "address": "",
+          "enable_web_admin": true,
+          "enable_web_client": true,
+          "enabled_login_methods": 0,
+          "enable_https": false,
+          "certificate_file": "",
+          "certificate_key_file": "",
+          "min_tls_version": 12,
+          "client_auth_type": 0,
+          "tls_cipher_suites": [],
+          "proxy_allowed": [],
+          "client_ip_proxy_header": "",
+          "client_ip_header_depth": 0,
+          "hide_login_url": 0,
+          "render_openapi": true,
+          "web_client_integrations": [],
+          "oidc": {
+            "client_id": "",
+            "client_secret": "",
+            "config_url": "",
+            "redirect_base_url": "",
+            "scopes": [
+              "openid",
+              "profile",
+              "email"
+            ],
+            "username_field": "",
+            "role_field": "",
+            "implicit_roles": false,
+            "custom_fields": [],
+            "debug": false
+          },
+          "security": {
+            "enabled": false,
+            "allowed_hosts": [],
+            "allowed_hosts_are_regex": false,
+            "hosts_proxy_headers": [],
+            "https_redirect": false,
+            "https_host": "",
+            "https_proxy_headers": [],
+            "sts_seconds": 0,
+            "sts_include_subdomains": false,
+            "sts_preload": false,
+            "content_type_nosniff": false,
+            "content_security_policy": "",
+            "permissions_policy": "",
+            "cross_origin_opener_policy": "",
+            "expect_ct_header": ""
+          },
+          "branding": {
+            "web_admin": {
+              "name": "",
+              "short_name": "",
+              "favicon_path": "",
+              "logo_path": "",
+              "login_image_path": "",
+              "disclaimer_name": "",
+              "disclaimer_path": "",
+              "default_css": "",
+              "extra_css": []
+            },
+            "web_client": {
+              "name": "",
+              "short_name": "",
+              "favicon_path": "",
+              "logo_path": "",
+              "login_image_path": "",
+              "disclaimer_name": "",
+              "disclaimer_path": "",
+              "default_css": "",
+              "extra_css": []
+            }
+          }
+        }
+      ],
+      "templates_path": "templates",
+      "static_files_path": "static",
+      "openapi_path": "openapi",
+      "web_root": "",
+      "certificate_file": "",
+      "certificate_key_file": "",
+      "ca_certificates": [],
+      "ca_revocation_lists": [],
+      "signing_passphrase": "",
+      "token_validation": 0,
+      "max_upload_file_size": 1048576000,
+      "cors": {
+        "enabled": false,
+        "allowed_origins": [],
+        "allowed_methods": [],
+        "allowed_headers": [],
+        "exposed_headers": [],
+        "allow_credentials": false,
+        "max_age": 0
+      },
+      "setup": {
+        "installation_code": "",
+        "installation_code_hint": "Installation code"
+      },
+      "hide_support_link": false
+    },
+    "telemetry": {
+      "bind_port": 0,
+      "bind_address": "127.0.0.1",
+      "enable_profiler": false,
+      "auth_user_file": "",
+      "certificate_file": "",
+      "certificate_key_file": "",
+      "min_tls_version": 12,
+      "tls_cipher_suites": []
+    },
+    "http": {
+      "timeout": 20,
+      "retry_wait_min": 2,
+      "retry_wait_max": 30,
+      "retry_max": 3,
+      "ca_certificates": [],
+      "certificates": [],
+      "skip_tls_verify": false,
+      "headers": []
+    },
+    "command": {
+      "timeout": 30,
+      "env": [],
+      "commands": []
+    },
+    "kms": {
+      "secrets": {
+        "url": "",
+        "master_key": "",
+        "master_key_path": ""
+      }
+    },
+    "mfa": {
+      "totp": [
+        {
+          "name": "Default",
+          "issuer": "SFTPGo",
+          "algo": "sha1"
+        }
+      ]
+    },
+    "smtp": {
+      "host": "",
+      "port": 25,
+      "from": "",
+      "user": "",
+      "password": "",
+      "auth_type": 0,
+      "encryption": 0,
+      "domain": "",
+      "templates_path": "templates"
+    },
+    "plugins": []
+  }
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/https/certs/gen-certs.sh b/pm-file-flow-demo/docker-proj/config/https/certs/gen-certs.sh
new file mode 100755
index 0000000..934907b
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/https/certs/gen-certs.sh
@@ -0,0 +1,89 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+echo "Generating https certs"
+SD=$(dirname -- "$0")
+echo "script-home: "$SD
+
+cd $SD
+
+print_usage() {
+    echo "Usage: gen-certs.sh <num-certs>"
+    exit 1
+}
+
+check_error() {
+    if [ $1 -ne 0 ]; then
+        echo "Failed $2"
+        echo "Exiting..."
+        exit 1
+    fi
+}
+
+if [ $# -ne 1 ]; then
+    print_usage
+fi
+
+rm *.crt
+rm *.key
+
+echo "Generating ca cert and key"
+echo " Generating ca key"
+openssl genrsa 2048 > ca.key
+check_error $?
+
+echo " Generating ca cert"
+cat <<__EOF__ | openssl req -new -x509 -nodes -days 365000  -key ca.key  -out httpsca.crt
+SE
+.
+.
+EST
+EST
+$SRV
+.
+__EOF__
+check_error $?
+
+
+for (( i=1; i<=${1}; i++ )); do
+    SRV="pm-https-server-$i"
+
+    echo " Generating cert and key  for server $SRV"
+cat <<__EOF__ | openssl req -newkey rsa:2048 -nodes -days 365000  -keyout https-$i.key -out https-req$i.crt
+SE
+.
+.
+ERIC
+ERIC
+$SRV
+.
+
+__EOF__
+    check_error $?
+
+    openssl x509 -req -days 365000 -set_serial 01 -in https-req$i.crt -out https-$i.crt -CA httpsca.crt -CAkey ca.key
+    check_error $?
+    echo " Verifying cert towards ca cert"
+    openssl verify -CAfile httpsca.crt httpsca.crt https-$i.crt
+    check_error $?
+
+done
+
+echo "DONE"
+exit 0
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/ics/application.yaml b/pm-file-flow-demo/docker-proj/config/ics/application.yaml
new file mode 100644
index 0000000..2434fa3
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/ics/application.yaml
@@ -0,0 +1,69 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+spring:
+  profiles:
+    active: prod
+  main:
+    allow-bean-definition-overriding: true
+  aop:
+    auto: false
+springdoc:
+  show-actuator: true
+management:
+  endpoints:
+    web:
+      exposure:
+        # Enabling of springboot actuator features. See springboot documentation.
+        include: "loggers,logfile,health,info,metrics,threaddump,heapdump"
+
+logging:
+  # Configuration of logging
+  level:
+    ROOT: ERROR
+    org.springframework: ERROR
+    org.springframework.data: ERROR
+    org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR
+    org.oransc.ics: DEBUG
+  file:
+    name: /var/log/information-coordinator-service/application.log
+server:
+   # Configuration of the HTTP/REST server. The parameters are defined and handeled by the springboot framework.
+   # See springboot documentation.
+   port : 8434
+   http-port: 8083
+   ssl:
+      key-store-type: JKS
+      key-store-password: policy_agent
+      key-store: /opt/app/information-coordinator-service/etc/cert/keystore.jks
+      key-password: policy_agent
+      key-alias: policy_agent
+app:
+  webclient:
+    # Configuration of the trust store used for the HTTP client (outgoing requests)
+    # The file location and the password for the truststore is only relevant if trust-store-used == true
+    # Note that the same keystore as for the server is used.
+    trust-store-used: false
+    trust-store-password: policy_agent
+    trust-store: /opt/app/information-coordinator-service/etc/cert/truststore.jks
+    # Configuration of usage of HTTP Proxy for the southbound accesses.
+    # The HTTP proxy (if configured) will only be used for accessing NearRT RIC:s
+    http.proxy-host:
+    http.proxy-port: 0
+  vardata-directory: /var/information-coordinator-service
+  # If the file name is empty, no authorzation token is sent
+  auth-token-file:
diff --git a/pm-file-flow-demo/docker-proj/config/kowl/config.yaml b/pm-file-flow-demo/docker-proj/config/kowl/config.yaml
new file mode 100644
index 0000000..9471031
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/kowl/config.yaml
@@ -0,0 +1,20 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+kafka:
+  brokers:
+    - kafka-1:29092
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/kp1/application_configuration-file.json b/pm-file-flow-demo/docker-proj/config/kp1/application_configuration-file.json
new file mode 100644
index 0000000..e549eca
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/kp1/application_configuration-file.json
@@ -0,0 +1,12 @@
+{
+  "types": [
+    {
+      "id": "json-file-data",
+      "kafkaInputTopic": "json-file-ready-kp",
+      "inputJobType": "xml-file-data",
+      "inputJobDefinition": {
+        "kafkaOutputTopic": "json-file-ready-kp"
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/kp1/application_configuration-minio.json b/pm-file-flow-demo/docker-proj/config/kp1/application_configuration-minio.json
new file mode 100644
index 0000000..a4648c1
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/kp1/application_configuration-minio.json
@@ -0,0 +1,12 @@
+{
+  "types": [
+    {
+      "id": "json-file-data-from-filestore",
+      "kafkaInputTopic": "json-file-ready-kp",
+      "inputJobType": "xml-file-data-to-filestore",
+      "inputJobDefinition": {
+        "kafkaOutputTopic": "json-file-ready-kp"
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/kp1/application_configuration.json b/pm-file-flow-demo/docker-proj/config/kp1/application_configuration.json
new file mode 100644
index 0000000..a4648c1
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/kp1/application_configuration.json
@@ -0,0 +1,12 @@
+{
+  "types": [
+    {
+      "id": "json-file-data-from-filestore",
+      "kafkaInputTopic": "json-file-ready-kp",
+      "inputJobType": "xml-file-data-to-filestore",
+      "inputJobDefinition": {
+        "kafkaOutputTopic": "json-file-ready-kp"
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/kpadp200/application-file-template.yaml b/pm-file-flow-demo/docker-proj/config/kpadp200/application-file-template.yaml
new file mode 100644
index 0000000..e39289f
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/kpadp200/application-file-template.yaml
@@ -0,0 +1,84 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+spring:
+  profiles:
+    active: prod
+  main:
+    allow-bean-definition-overriding: true
+  aop:
+    auto: false
+management:
+  endpoints:
+    web:
+      exposure:
+        # Enabling of springboot actuator features. See springboot documentation.
+        include: "loggers,logfile,health,info,metrics,threaddump,heapdump"
+springdoc:
+  show-actuator: true
+logging:
+  # Configuration of logging
+  level:
+    ROOT: WARN
+    org.apache.kafka: WARN
+    org.springframework: ERROR
+    org.springframework.data: ERROR
+    org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR
+    org.oran.dmaapadapter: INFO
+    #org.oran.dmaapadapter: TRACE
+
+  file:
+    name: /var/log/dmaap-adapter-service/application.log
+server:
+   # Configuration of the HTTP/REST server. The parameters are defined and handeled by the springboot framework.
+   # See springboot documentation.
+   port : 8435
+   http-port: 8084
+   ssl:
+      key-store-type: JKS
+      key-store-password: policy_agent
+      key-store: /opt/app/dmaap-adapter-service/etc/cert/keystore.jks
+      key-password: policy_agent
+      key-alias: policy_agent
+app:
+  webclient:
+    # Configuration of the trust store used for the HTTP client (outgoing requests)
+    # The file location and the password for the truststore is only relevant if trust-store-used == true
+    # Note that the same keystore as for the server is used.
+    trust-store-used: false
+    trust-store-password: policy_agent
+    trust-store: /opt/app/dmaap-adapter-service/etc/cert/truststore.jks
+    # Configuration of usage of HTTP Proxy for the southbound accesses.
+    # The HTTP proxy (if configured) will only be used for accessing NearRT RIC:s
+    http.proxy-host:
+    http.proxy-port: 0
+  ics-base-url: https://ics:8434
+  # Location of the component configuration file. The file will only be used if the Consul database is not used;
+  # configuration from the Consul will override the file.
+  configuration-filepath: /opt/app/dmaap-adapter-service/data/application_configuration.json
+  dmaap-base-url: http://dradmin:dradmin@localhost:2222
+  # The url used to adress this component. This is used as a callback url sent to other components.
+  dmaap-adapter-base-url: https://kpadp200:8435
+  # KAFKA boostrap servers. This is only needed if there are Information Types that uses a kafkaInputTopic
+  # several redundant boostrap servers can be specified, separated by a comma ','.
+  kafka:
+    bootstrap-servers: kafka-1:29092
+    # The maximum number of records returned in a single call to poll() (default 100)
+    max-poll-records: 500
+  # If the file name is empty, no authorization token is used
+  auth-token-file:
+  pm-files-path: /pm-files
diff --git a/pm-file-flow-demo/docker-proj/config/kpadp200/application-minio-template.yaml b/pm-file-flow-demo/docker-proj/config/kpadp200/application-minio-template.yaml
new file mode 100644
index 0000000..98f9e33
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/kpadp200/application-minio-template.yaml
@@ -0,0 +1,89 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+spring:
+  profiles:
+    active: prod
+  main:
+    allow-bean-definition-overriding: true
+  aop:
+    auto: false
+management:
+  endpoints:
+    web:
+      exposure:
+        # Enabling of springboot actuator features. See springboot documentation.
+        include: "loggers,logfile,health,info,metrics,threaddump,heapdump"
+springdoc:
+  show-actuator: true
+logging:
+  # Configuration of logging
+  level:
+    ROOT: WARN
+    org.apache.kafka: WARN
+    org.springframework: ERROR
+    org.springframework.data: ERROR
+    org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR
+    org.oran.dmaapadapter: INFO
+
+  file:
+    name: /var/log/dmaap-adapter-service/application.log
+server:
+   # Configuration of the HTTP/REST server. The parameters are defined and handeled by the springboot framework.
+   # See springboot documentation.
+   port : 8435
+   http-port: 8084
+   ssl:
+      key-store-type: JKS
+      key-store-password: policy_agent
+      key-store: /opt/app/dmaap-adapter-service/etc/cert/keystore.jks
+      key-password: policy_agent
+      key-alias: policy_agent
+app:
+  webclient:
+    # Configuration of the trust store used for the HTTP client (outgoing requests)
+    # The file location and the password for the truststore is only relevant if trust-store-used == true
+    # Note that the same keystore as for the server is used.
+    trust-store-used: false
+    trust-store-password: policy_agent
+    trust-store: /opt/app/dmaap-adapter-service/etc/cert/truststore.jks
+    # Configuration of usage of HTTP Proxy for the southbound accesses.
+    # The HTTP proxy (if configured) will only be used for accessing NearRT RIC:s
+    http.proxy-host:
+    http.proxy-port: 0
+  ics-base-url: https://ics:8434
+  # Location of the component configuration file. The file will only be used if the Consul database is not used;
+  # configuration from the Consul will override the file.
+  configuration-filepath: /opt/app/dmaap-adapter-service/data/application_configuration.json
+  dmaap-base-url: http://dradmin:dradmin@localhost:2222
+  # The url used to adress this component. This is used as a callback url sent to other components.
+  dmaap-adapter-base-url: https://kpadp200:8435
+  # KAFKA boostrap servers. This is only needed if there are Information Types that uses a kafkaInputTopic
+  # several redundant boostrap servers can be specified, separated by a comma ','.
+  kafka:
+    bootstrap-servers: kafka-1:29092
+    # The maximum number of records returned in a single call to poll() (default 100)
+    max-poll-records: 500
+  # If the file name is empty, no authorization token is used
+  auth-token-file:
+  pm-files-path: /pm-files
+  s3:
+    endpointOverride: $KPADP_MINIO
+    accessKeyId: admin
+    secretAccessKey: adminadmin
+    locksBucket: pm-files-json-locks
+    bucket: pm-files-json
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/kpadp200/application.yaml b/pm-file-flow-demo/docker-proj/config/kpadp200/application.yaml
new file mode 100644
index 0000000..f20745e
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/kpadp200/application.yaml
@@ -0,0 +1,89 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+spring:
+  profiles:
+    active: prod
+  main:
+    allow-bean-definition-overriding: true
+  aop:
+    auto: false
+management:
+  endpoints:
+    web:
+      exposure:
+        # Enabling of springboot actuator features. See springboot documentation.
+        include: "loggers,logfile,health,info,metrics,threaddump,heapdump"
+springdoc:
+  show-actuator: true
+logging:
+  # Configuration of logging
+  level:
+    ROOT: WARN
+    org.apache.kafka: WARN
+    org.springframework: ERROR
+    org.springframework.data: ERROR
+    org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR
+    org.oran.dmaapadapter: INFO
+
+  file:
+    name: /var/log/dmaap-adapter-service/application.log
+server:
+   # Configuration of the HTTP/REST server. The parameters are defined and handeled by the springboot framework.
+   # See springboot documentation.
+   port : 8435
+   http-port: 8084
+   ssl:
+      key-store-type: JKS
+      key-store-password: policy_agent
+      key-store: /opt/app/dmaap-adapter-service/etc/cert/keystore.jks
+      key-password: policy_agent
+      key-alias: policy_agent
+app:
+  webclient:
+    # Configuration of the trust store used for the HTTP client (outgoing requests)
+    # The file location and the password for the truststore is only relevant if trust-store-used == true
+    # Note that the same keystore as for the server is used.
+    trust-store-used: false
+    trust-store-password: policy_agent
+    trust-store: /opt/app/dmaap-adapter-service/etc/cert/truststore.jks
+    # Configuration of usage of HTTP Proxy for the southbound accesses.
+    # The HTTP proxy (if configured) will only be used for accessing NearRT RIC:s
+    http.proxy-host:
+    http.proxy-port: 0
+  ics-base-url: https://ics:8434
+  # Location of the component configuration file. The file will only be used if the Consul database is not used;
+  # configuration from the Consul will override the file.
+  configuration-filepath: /opt/app/dmaap-adapter-service/data/application_configuration.json
+  dmaap-base-url: http://dradmin:dradmin@localhost:2222
+  # The url used to adress this component. This is used as a callback url sent to other components.
+  dmaap-adapter-base-url: https://kpadp200:8435
+  # KAFKA boostrap servers. This is only needed if there are Information Types that uses a kafkaInputTopic
+  # several redundant boostrap servers can be specified, separated by a comma ','.
+  kafka:
+    bootstrap-servers: kafka-1:29092
+    # The maximum number of records returned in a single call to poll() (default 100)
+    max-poll-records: 500
+  # If the file name is empty, no authorization token is used
+  auth-token-file:
+  pm-files-path: /pm-files
+  s3:
+    endpointOverride: http://minio-server:9000
+    accessKeyId: admin
+    secretAccessKey: adminadmin
+    locksBucket: pm-files-json-locks
+    bucket: pm-files-json
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/kpadp200/application_configuration-file-template.json b/pm-file-flow-demo/docker-proj/config/kpadp200/application_configuration-file-template.json
new file mode 100644
index 0000000..88b5ae2
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/kpadp200/application_configuration-file-template.json
@@ -0,0 +1,14 @@
+{
+   "types": [
+      {
+         "id": "PmData",
+         "kafkaInputTopic": "json-file-ready-kpadp",
+         "useHttpProxy": false,
+         "dataType": "pmData",
+         "inputJobType": "xml-file-data",
+         "inputJobDefinition": {
+            "kafkaOutputTopic": "json-file-ready-kpadp"
+         }
+      }
+   ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/kpadp200/application_configuration-minio-template.json b/pm-file-flow-demo/docker-proj/config/kpadp200/application_configuration-minio-template.json
new file mode 100644
index 0000000..7c8a550
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/kpadp200/application_configuration-minio-template.json
@@ -0,0 +1,14 @@
+{
+   "types": [
+      {
+         "id": "PmData",
+         "kafkaInputTopic": "json-file-ready-kpadp",
+         "useHttpProxy": false,
+         "dataType": "pmData",
+         "inputJobType": "xml-file-data-to-filestore",
+         "inputJobDefinition": {
+            "kafkaOutputTopic": "json-file-ready-kpadp"
+         }
+      }
+   ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/kpadp200/application_configuration.json b/pm-file-flow-demo/docker-proj/config/kpadp200/application_configuration.json
new file mode 100644
index 0000000..7c8a550
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/kpadp200/application_configuration.json
@@ -0,0 +1,14 @@
+{
+   "types": [
+      {
+         "id": "PmData",
+         "kafkaInputTopic": "json-file-ready-kpadp",
+         "useHttpProxy": false,
+         "dataType": "pmData",
+         "inputJobType": "xml-file-data-to-filestore",
+         "inputJobDefinition": {
+            "kafkaOutputTopic": "json-file-ready-kpadp"
+         }
+      }
+   ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/kpm100/application_configuration-file.json b/pm-file-flow-demo/docker-proj/config/kpm100/application_configuration-file.json
new file mode 100644
index 0000000..4c4fb5c
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/kpm100/application_configuration-file.json
@@ -0,0 +1,8 @@
+{
+  "types": [
+    {
+      "id": "xml-file-data",
+      "kafkaInputTopic": "collected-file"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/kpm100/application_configuration-minio.json b/pm-file-flow-demo/docker-proj/config/kpm100/application_configuration-minio.json
new file mode 100644
index 0000000..4c1bbdd
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/kpm100/application_configuration-minio.json
@@ -0,0 +1,8 @@
+{
+  "types": [
+    {
+      "id": "xml-file-data-to-filestore",
+      "kafkaInputTopic": "collected-file"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/kpm100/application_configuration.json b/pm-file-flow-demo/docker-proj/config/kpm100/application_configuration.json
new file mode 100644
index 0000000..4c1bbdd
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/kpm100/application_configuration.json
@@ -0,0 +1,8 @@
+{
+  "types": [
+    {
+      "id": "xml-file-data-to-filestore",
+      "kafkaInputTopic": "collected-file"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/kpm101/application_configuration-file.json b/pm-file-flow-demo/docker-proj/config/kpm101/application_configuration-file.json
new file mode 100644
index 0000000..4c4fb5c
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/kpm101/application_configuration-file.json
@@ -0,0 +1,8 @@
+{
+  "types": [
+    {
+      "id": "xml-file-data",
+      "kafkaInputTopic": "collected-file"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/kpm101/application_configuration-minio.json b/pm-file-flow-demo/docker-proj/config/kpm101/application_configuration-minio.json
new file mode 100644
index 0000000..4c1bbdd
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/kpm101/application_configuration-minio.json
@@ -0,0 +1,8 @@
+{
+  "types": [
+    {
+      "id": "xml-file-data-to-filestore",
+      "kafkaInputTopic": "collected-file"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/kpm101/application_configuration.json b/pm-file-flow-demo/docker-proj/config/kpm101/application_configuration.json
new file mode 100644
index 0000000..4c1bbdd
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/kpm101/application_configuration.json
@@ -0,0 +1,8 @@
+{
+  "types": [
+    {
+      "id": "xml-file-data-to-filestore",
+      "kafkaInputTopic": "collected-file"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/sftp/sftpgo.json b/pm-file-flow-demo/docker-proj/config/sftp/sftpgo.json
new file mode 100644
index 0000000..2b8b7b9
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/sftp/sftpgo.json
@@ -0,0 +1,400 @@
+{
+    "common": {
+      "idle_timeout": 15,
+      "upload_mode": 0,
+      "actions": {
+        "execute_on": [],
+        "execute_sync": [],
+        "hook": ""
+      },
+      "setstat_mode": 0,
+      "temp_path": "",
+      "proxy_protocol": 0,
+      "proxy_allowed": [],
+      "startup_hook": "",
+      "post_connect_hook": "",
+      "post_disconnect_hook": "",
+      "data_retention_hook": "",
+      "max_total_connections": 0,
+      "max_per_host_connections": 100,
+      "whitelist_file": "",
+      "defender": {
+        "enabled": false,
+        "driver": "memory",
+        "ban_time": 30,
+        "ban_time_increment": 50,
+        "threshold": 15,
+        "score_invalid": 2,
+        "score_valid": 1,
+        "score_limit_exceeded": 3,
+        "observation_time": 30,
+        "entries_soft_limit": 100,
+        "entries_hard_limit": 150,
+        "safelist_file": "",
+        "blocklist_file": "",
+        "safelist": [],
+        "blocklist": []
+      },
+      "rate_limiters": [
+        {
+          "average": 0,
+          "period": 1000,
+          "burst": 1,
+          "type": 2,
+          "protocols": [
+            "SSH",
+            "FTP",
+            "DAV",
+            "HTTP"
+          ],
+          "allow_list": [],
+          "generate_defender_events": false,
+          "entries_soft_limit": 100,
+          "entries_hard_limit": 150
+        }
+      ]
+    },
+    "acme": {
+      "domains": [],
+      "email": "",
+      "key_type": "4096",
+      "certs_path": "certs",
+      "ca_endpoint": "https://acme-v02.api.letsencrypt.org/directory",
+      "renew_days": 30,
+      "http01_challenge": {
+        "port": 80,
+        "proxy_header": "",
+        "webroot": ""
+      },
+      "tls_alpn01_challenge": {
+        "port": 0
+      }
+    },
+    "sftpd": {
+      "bindings": [
+        {
+          "port": 2022,
+          "address": "",
+          "apply_proxy_config": true
+        }
+      ],
+      "max_auth_tries": 0,
+      "banner": "",
+      "host_keys": [],
+      "host_certificates": [],
+      "host_key_algorithms": [],
+      "kex_algorithms": [],
+      "ciphers": [],
+      "macs": [],
+      "trusted_user_ca_keys": [],
+      "revoked_user_certs_file": "",
+      "login_banner_file": "",
+      "enabled_ssh_commands": [
+        "md5sum",
+        "sha1sum",
+        "sha256sum",
+        "cd",
+        "pwd",
+        "scp"
+      ],
+      "keyboard_interactive_authentication": false,
+      "keyboard_interactive_auth_hook": "",
+      "password_authentication": true,
+      "folder_prefix": ""
+    },
+    "ftpd": {
+      "bindings": [
+        {
+          "port": 0,
+          "address": "",
+          "apply_proxy_config": true,
+          "tls_mode": 0,
+          "certificate_file": "",
+          "certificate_key_file": "",
+          "min_tls_version": 12,
+          "force_passive_ip": "",
+          "passive_ip_overrides": [],
+          "client_auth_type": 0,
+          "tls_cipher_suites": [],
+          "passive_connections_security": 0,
+          "active_connections_security": 0,
+          "debug": false
+        }
+      ],
+      "banner": "",
+      "banner_file": "",
+      "active_transfers_port_non_20": true,
+      "passive_port_range": {
+        "start": 50000,
+        "end": 50100
+      },
+      "disable_active_mode": false,
+      "enable_site": false,
+      "hash_support": 0,
+      "combine_support": 0,
+      "certificate_file": "",
+      "certificate_key_file": "",
+      "ca_certificates": [],
+      "ca_revocation_lists": []
+    },
+    "webdavd": {
+      "bindings": [
+        {
+          "port": 0,
+          "address": "",
+          "enable_https": false,
+          "certificate_file": "",
+          "certificate_key_file": "",
+          "min_tls_version": 12,
+          "client_auth_type": 0,
+          "tls_cipher_suites": [],
+          "prefix": "",
+          "proxy_allowed": [],
+          "client_ip_proxy_header": "",
+          "client_ip_header_depth": 0
+        }
+      ],
+      "certificate_file": "",
+      "certificate_key_file": "",
+      "ca_certificates": [],
+      "ca_revocation_lists": [],
+      "cors": {
+        "enabled": false,
+        "allowed_origins": [],
+        "allowed_methods": [],
+        "allowed_headers": [],
+        "exposed_headers": [],
+        "allow_credentials": false,
+        "max_age": 0
+      },
+      "cache": {
+        "users": {
+          "expiration_time": 0,
+          "max_size": 50
+        },
+        "mime_types": {
+          "enabled": true,
+          "max_size": 1000
+        }
+      }
+    },
+    "data_provider": {
+      "driver": "sqlite",
+      "name": "sftpgo.db",
+      "host": "",
+      "port": 0,
+      "username": "",
+      "password": "",
+      "sslmode": 0,
+      "root_cert": "",
+      "client_cert": "",
+      "client_key": "",
+      "connection_string": "",
+      "sql_tables_prefix": "",
+      "track_quota": 2,
+      "delayed_quota_update": 0,
+      "pool_size": 0,
+      "users_base_dir": "/srv/sftpgo/data",
+      "actions": {
+        "execute_on": [],
+        "execute_for": [],
+        "hook": ""
+      },
+      "external_auth_hook": "",
+      "external_auth_scope": 0,
+      "credentials_path": "credentials",
+      "pre_login_hook": "",
+      "post_login_hook": "",
+      "post_login_scope": 0,
+      "check_password_hook": "",
+      "check_password_scope": 0,
+      "password_hashing": {
+        "bcrypt_options": {
+          "cost": 10
+        },
+        "argon2_options": {
+          "memory": 65536,
+          "iterations": 1,
+          "parallelism": 2
+        },
+        "algo": "bcrypt"
+      },
+      "password_validation": {
+        "admins": {
+          "min_entropy": 0
+        },
+        "users": {
+          "min_entropy": 0
+        }
+      },
+      "password_caching": true,
+      "update_mode": 0,
+      "create_default_admin": false,
+      "naming_rules": 1,
+      "is_shared": 0,
+      "backups_path": "/srv/sftpgo/backups",
+      "auto_backup": {
+        "enabled": true,
+        "hour": "0",
+        "day_of_week": "*"
+      }
+    },
+    "httpd": {
+      "bindings": [
+        {
+          "port": 8080,
+          "address": "",
+          "enable_web_admin": true,
+          "enable_web_client": true,
+          "enabled_login_methods": 0,
+          "enable_https": false,
+          "certificate_file": "",
+          "certificate_key_file": "",
+          "min_tls_version": 12,
+          "client_auth_type": 0,
+          "tls_cipher_suites": [],
+          "proxy_allowed": [],
+          "client_ip_proxy_header": "",
+          "client_ip_header_depth": 0,
+          "hide_login_url": 0,
+          "render_openapi": true,
+          "web_client_integrations": [],
+          "oidc": {
+            "client_id": "",
+            "client_secret": "",
+            "config_url": "",
+            "redirect_base_url": "",
+            "scopes": [
+              "openid",
+              "profile",
+              "email"
+            ],
+            "username_field": "",
+            "role_field": "",
+            "implicit_roles": false,
+            "custom_fields": [],
+            "debug": false
+          },
+          "security": {
+            "enabled": false,
+            "allowed_hosts": [],
+            "allowed_hosts_are_regex": false,
+            "hosts_proxy_headers": [],
+            "https_redirect": false,
+            "https_host": "",
+            "https_proxy_headers": [],
+            "sts_seconds": 0,
+            "sts_include_subdomains": false,
+            "sts_preload": false,
+            "content_type_nosniff": false,
+            "content_security_policy": "",
+            "permissions_policy": "",
+            "cross_origin_opener_policy": "",
+            "expect_ct_header": ""
+          },
+          "branding": {
+            "web_admin": {
+              "name": "",
+              "short_name": "",
+              "favicon_path": "",
+              "logo_path": "",
+              "login_image_path": "",
+              "disclaimer_name": "",
+              "disclaimer_path": "",
+              "default_css": "",
+              "extra_css": []
+            },
+            "web_client": {
+              "name": "",
+              "short_name": "",
+              "favicon_path": "",
+              "logo_path": "",
+              "login_image_path": "",
+              "disclaimer_name": "",
+              "disclaimer_path": "",
+              "default_css": "",
+              "extra_css": []
+            }
+          }
+        }
+      ],
+      "templates_path": "templates",
+      "static_files_path": "static",
+      "openapi_path": "openapi",
+      "web_root": "",
+      "certificate_file": "",
+      "certificate_key_file": "",
+      "ca_certificates": [],
+      "ca_revocation_lists": [],
+      "signing_passphrase": "",
+      "token_validation": 0,
+      "max_upload_file_size": 1048576000,
+      "cors": {
+        "enabled": false,
+        "allowed_origins": [],
+        "allowed_methods": [],
+        "allowed_headers": [],
+        "exposed_headers": [],
+        "allow_credentials": false,
+        "max_age": 0
+      },
+      "setup": {
+        "installation_code": "",
+        "installation_code_hint": "Installation code"
+      },
+      "hide_support_link": false
+    },
+    "telemetry": {
+      "bind_port": 0,
+      "bind_address": "127.0.0.1",
+      "enable_profiler": false,
+      "auth_user_file": "",
+      "certificate_file": "",
+      "certificate_key_file": "",
+      "min_tls_version": 12,
+      "tls_cipher_suites": []
+    },
+    "http": {
+      "timeout": 20,
+      "retry_wait_min": 2,
+      "retry_wait_max": 30,
+      "retry_max": 3,
+      "ca_certificates": [],
+      "certificates": [],
+      "skip_tls_verify": false,
+      "headers": []
+    },
+    "command": {
+      "timeout": 30,
+      "env": [],
+      "commands": []
+    },
+    "kms": {
+      "secrets": {
+        "url": "",
+        "master_key": "",
+        "master_key_path": ""
+      }
+    },
+    "mfa": {
+      "totp": [
+        {
+          "name": "Default",
+          "issuer": "SFTPGo",
+          "algo": "sha1"
+        }
+      ]
+    },
+    "smtp": {
+      "host": "",
+      "port": 25,
+      "from": "",
+      "user": "",
+      "password": "",
+      "auth_type": 0,
+      "encryption": 0,
+      "domain": "",
+      "templates_path": "templates"
+    },
+    "plugins": []
+  }
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/config/ves-collector/collector.properties b/pm-file-flow-demo/docker-proj/config/ves-collector/collector.properties
new file mode 100644
index 0000000..34e454d
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/ves-collector/collector.properties
@@ -0,0 +1,77 @@
+###############################################################################
+##
+## Collector Server config
+##
+##      - Default values are shown as commented settings.
+##
+###############################################################################
+##
+## HTTP(S) service
+##
+##      Normally:
+##
+##              - 8080 is http service
+##              - https is disabled by default
+##
+##              - At this time, the server always binds to 0.0.0.0
+##
+##
+#collector.service.port=8080
+
+## Authentication is only supported via secure port
+## When enabled - require valid keystore defined
+collector.service.secure.port=8443
+
+# auth.method flags:
+#
+# noAuth - default option - no security (http)
+# certBasicAuth - auth by certificate and basic auth username / password (https)
+#auth.method=certBasicAuth
+auth.method=noAuth
+
+## Combination of userid,hashPassword encoded pwd list to be supported
+## userid and pwd comma separated; pipe delimitation between each pair
+## Password is generated by crypt-password library using BCrypt algorithm stored in dcaegen2/sdk package
+## or https://nexus.onap.org/#nexus-search;quick~crypt-password
+header.authlist=sample1,$2a$10$0buh.2WeYwN868YMwnNNEuNEAMNYVU9.FSMJGyIKV3dGET/7oGOi6
+
+## The keystore must be setup per installation when secure port is configured
+collector.keystore.file.location=etc/keystore
+collector.keystore.passwordfile=etc/passwordfile
+
+collector.cert.subject.matcher=etc/certSubjectMatcher.properties
+
+## The truststore must be setup per installation when mutual tls support is configured
+collector.truststore.file.location=etc/truststore
+collector.truststore.passwordfile=etc/trustpasswordfile
+
+## Schema Validation checkflag
+## default no validation checkflag (-1)
+## If enabled (1) - schemafile location must be specified
+collector.schema.checkflag=1
+collector.schema.file={\"v1\":\"./etc/CommonEventFormat_27.2.json\",\"v2\":\"./etc/CommonEventFormat_27.2.json\",\"v3\":\"./etc/CommonEventFormat_27.2.json\",\"v4\":\"./etc/CommonEventFormat_27.2.json\",\"v5\":\"./etc/CommonEventFormat_28.4.1.json\",\"v7\":\"./etc/CommonEventFormat_30.2.1_ONAP.json\"}
+
+## Schema StndDefinedFields Validation checkflag
+## default no validation checkflag (-1)
+## If enabled (1) - schema files locations must be specified, mapping file path must be specified, schema reference path
+## in event json must be specified, path to stndDefined data field in event json must be specified
+collector.externalSchema.checkflag=1
+collector.externalSchema.schemasLocation=./etc/externalRepo/
+collector.externalSchema.mappingFileLocation=./etc/externalRepo/schema-map.json
+event.externalSchema.schemaRefPath=$.event.stndDefinedFields.schemaReference
+event.externalSchema.stndDefinedDataPath=$.event.stndDefinedFields.data
+
+## List all streamid per domain to be supported. The streamid should match to channel name on dmaapfile
+collector.dmaap.streamid=fault=ves-fault|syslog=ves-syslog|heartbeat=ves-heartbeat|measurementsForVfScaling=ves-measurement|mobileFlow=ves-mobileflow|other=ves-other|stateChange=ves-statechange|thresholdCrossingAlert=ves-thresholdCrossingAlert|voiceQuality=ves-voicequality|sipSignaling=ves-sipsignaling|notification=ves-measurement|pnfRegistration=ves-pnfRegistration|3GPP-FaultSupervision=ves-3gpp-fault-supervision|3GPP-Heartbeat=ves-3gpp-heartbeat|3GPP-Provisioning=ves-3gpp-provisioning|3GPP-PerformanceAssurance=ves-3gpp-performance-assurance|o-ran-sc-du-hello-world-pm-streaming-oas3=ves-o-ran-sc-du-hello-world-pm-streaming-oas3
+collector.dmaapfile=etc/ves-dmaap-config.json
+
+## Path to the file containing description of api versions
+collector.description.api.version.location=etc/api_version_description.json
+
+## Event transformation Flag - when set expects configurable transformation
+## defined under ./etc/eventTransform.json
+## Enabled by default; to disable set to 0
+event.transform.flag=1
+
+# Describes at what frequency (measured in minutes) should application try to fetch config from CBS
+collector.dynamic.config.update.frequency=5
diff --git a/pm-file-flow-demo/docker-proj/config/ves-collector/ves-dmaap-config.json b/pm-file-flow-demo/docker-proj/config/ves-collector/ves-dmaap-config.json
new file mode 100644
index 0000000..633d9c0
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/config/ves-collector/ves-dmaap-config.json
@@ -0,0 +1,10 @@
+{
+  "ves-measurement": {
+    "type": "message_router",
+    "dmaap_info": {
+      "location": "mtl5",
+      "topic_url": "http://onap-dmaap:3904/events/file-ready/",
+      "ORIGINAL-topic_url": "http://onap-dmaap:3904/events/unauthenticated.VES_MEASUREMENT_OUTPUT/"
+    }
+  }
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/docker-compose-dfc1.yaml b/pm-file-flow-demo/docker-proj/docker-compose-dfc1.yaml
new file mode 100644
index 0000000..0e6dbf6
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/docker-compose-dfc1.yaml
@@ -0,0 +1,37 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+version: '3.0'
+networks:
+  default:
+    external: true
+    name: nonrtric-docker-net
+
+services:
+
+  dfc1:
+    container_name: dfc1
+    user: root
+    image: $DFC_IMAGE
+    ports:
+    - 8433:8433
+    volumes:
+    - ./config/dfc1/application.yaml:/opt/app/datafile/config/application.yaml
+    - ./shared-volume:/tmp/onap_datafile/
+    # truststore is updated in runtime
+    labels:
+      - "dmaap_test=yes"
diff --git a/pm-file-flow-demo/docker-proj/docker-compose-dfc2.yaml b/pm-file-flow-demo/docker-proj/docker-compose-dfc2.yaml
new file mode 100644
index 0000000..3e04019
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/docker-compose-dfc2.yaml
@@ -0,0 +1,50 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+version: '3.0'
+networks:
+  default:
+    external: true
+    name: nonrtric-docker-net
+
+services:
+
+  dfc1:
+    container_name: dfc1
+    user: root
+    image: $DFC_IMAGE
+    ports:
+    - 8433:8433
+    volumes:
+    - ./config/dfc1/application.yaml:/opt/app/datafile/config/application.yaml
+    - ./shared-volume:/tmp/onap_datafile/
+    # truststore is updated in runtime
+    labels:
+      - "dmaap_test=yes"
+
+  dfc2:
+    container_name: dfc2
+    user: root
+    image: $DFC_IMAGE
+    ports:
+    - 8533:8433
+    volumes:
+    - ./config/dfc2/application.yaml:/opt/app/datafile/config/application.yaml
+    - ./shared-volume:/tmp/onap_datafile/
+    # truststore is updated in runtime
+    labels:
+      - "dmaap_test=yes"
diff --git a/pm-file-flow-demo/docker-proj/docker-compose-dfc_gen.yaml b/pm-file-flow-demo/docker-proj/docker-compose-dfc_gen.yaml
new file mode 100644
index 0000000..9512e03
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/docker-compose-dfc_gen.yaml
@@ -0,0 +1,37 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+version: '3.0'
+networks:
+  default:
+    external: true
+    name: nonrtric-docker-net
+
+services:
+
+  dfc1:
+    container_name: dfc1
+    user: root
+    image: onap/org.onap.dcaegen2.collectors.datafile.datafile-app-server:2.5.14
+    ports:
+    - 8433:8433
+    volumes:
+    - ./config/dfc1/application.yaml:/opt/app/datafile/config/application.yaml
+    - ./shared-volume:/tmp/onap_datafile/
+    # truststore is updated in runtime
+    labels:
+      - "dmaap_test=yes"
diff --git a/pm-file-flow-demo/docker-proj/docker-compose-ftp.yaml b/pm-file-flow-demo/docker-proj/docker-compose-ftp.yaml
new file mode 100644
index 0000000..fea8009
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/docker-compose-ftp.yaml
@@ -0,0 +1,65 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+version: '3.0'
+networks:
+  default:
+    external: true
+    name: nonrtric-docker-net
+
+services:
+
+############## SFTP ################
+## SFTP PORT: 2022
+  sftp:
+    deploy:
+      mode: replicated
+      replicas: $NUM_SFTP
+    image: $SFTPGO_IMAGE
+    ports:
+    - 8080
+    volumes:
+    - ./ne-files:/srv/onap:rw
+    - ./config/sftp/sftpgo.json:/etc/sftpgo/sftpgo.json:ro
+    environment:
+      SFTPGO_DATA_PROVIDER__CREATE_DEFAULT_ADMIN: 1
+      SFTPGO_DEFAULT_ADMIN_USERNAME: admin
+      SFTPGO_DEFAULT_ADMIN_PASSWORD: admin
+    labels:
+      - "dmaap_test=yes"
+
+
+############### FTPES ################
+## FTPES PORT: 2021
+  ftpes:
+    deploy:
+      mode: replicated
+      replicas: $NUM_FTPES
+    image: $SFTPGO_IMAGE
+    ports:
+    - 8080
+    volumes:
+    - ./ne-files:/srv/onap:rw
+    - ./config/ftpes/sftpgo.json:/etc/sftpgo/sftpgo.json:ro
+    # cert is copied into the container(s) at runtime
+    environment:
+      SFTPGO_DATA_PROVIDER__CREATE_DEFAULT_ADMIN: 1
+      SFTPGO_DEFAULT_ADMIN_USERNAME: admin
+      SFTPGO_DEFAULT_ADMIN_PASSWORD: admin
+    labels:
+      - "dmaap_test=yes"
+
diff --git a/pm-file-flow-demo/docker-proj/docker-compose-ftp_gen.yaml b/pm-file-flow-demo/docker-proj/docker-compose-ftp_gen.yaml
new file mode 100644
index 0000000..ab937a7
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/docker-compose-ftp_gen.yaml
@@ -0,0 +1,65 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+version: '3.0'
+networks:
+  default:
+    external: true
+    name: nonrtric-docker-net
+
+services:
+
+############## SFTP ################
+## SFTP PORT: 2022
+  sftp:
+    deploy:
+      mode: replicated
+      replicas: 10
+    image: drakkan/sftpgo:2.3.x-alpine-slim
+    ports:
+    - 8080
+    volumes:
+    - ./ne-files:/srv/onap:rw
+    - ./config/sftp/sftpgo.json:/etc/sftpgo/sftpgo.json:ro
+    environment:
+      SFTPGO_DATA_PROVIDER__CREATE_DEFAULT_ADMIN: 1
+      SFTPGO_DEFAULT_ADMIN_USERNAME: admin
+      SFTPGO_DEFAULT_ADMIN_PASSWORD: admin
+    labels:
+      - "dmaap_test=yes"
+
+
+############### FTPES ################
+## FTPES PORT: 2021
+  ftpes:
+    deploy:
+      mode: replicated
+      replicas: 10
+    image: drakkan/sftpgo:2.3.x-alpine-slim
+    ports:
+    - 8080
+    volumes:
+    - ./ne-files:/srv/onap:rw
+    - ./config/ftpes/sftpgo.json:/etc/sftpgo/sftpgo.json:ro
+    # cert is copied into the container(s) at runtime
+    environment:
+      SFTPGO_DATA_PROVIDER__CREATE_DEFAULT_ADMIN: 1
+      SFTPGO_DEFAULT_ADMIN_USERNAME: admin
+      SFTPGO_DEFAULT_ADMIN_PASSWORD: admin
+    labels:
+      - "dmaap_test=yes"
+
diff --git a/pm-file-flow-demo/docker-proj/docker-compose-k1.yaml b/pm-file-flow-demo/docker-proj/docker-compose-k1.yaml
new file mode 100644
index 0000000..e7149c1
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/docker-compose-k1.yaml
@@ -0,0 +1,152 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+version: '3.0'
+networks:
+  default:
+    external: true
+    name: nonrtric-docker-net
+
+services:
+
+  zookeeper-1:
+    image: confluentinc/cp-zookeeper:6.2.1
+    ports:
+      - '32181:32181'
+    environment:
+      ZOOKEEPER_CLIENT_PORT: 32181
+      ZOOKEEPER_TICK_TIME: 2000
+    labels:
+      - "dmaap_test=yes"
+#NO_DATA_VOLUME_MAP_LOCALHOST_START
+    volumes:
+    - /tmp/kafka-test/z1-data:/var/lib/zookeeper/data
+    - /tmp/kafka-test/z1-log:/var/lib/zookeeper/log
+#NO_DATA_VOLUME_MAP_LOCALHOST_STOP
+
+  kafka-1:
+    image: confluentinc/cp-kafka:6.2.1
+    ports:
+      - '9092:9092'
+    depends_on:
+      - zookeeper-1
+    environment:
+      KAFKA_BROKER_ID: 1
+      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:32181
+      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
+      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
+      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka-1:29092,EXTERNAL://localhost:9092
+
+      #KAFKA_DEFAULT_REPLICATION_FACTOR: 1
+      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
+      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
+      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
+
+
+      KAFKA_NUM_PARTITIONS: ${KAFKA_NUM_PARTITIONS}
+    labels:
+      - "dmaap_test=yes"
+#NO_DATA_VOLUME_MAP_LOCALHOST_START
+    volumes:
+      - /tmp/kafka-test/k1-data:/var/lib/kafka/data
+#NO_DATA_VOLUME_MAP_LOCALHOST_STOP
+
+  kowl:
+    container_name: kowl
+    image: quay.io/cloudhut/kowl
+    restart: on-failure
+    hostname: kowl
+    volumes:
+    - ./config/kowl/config.yaml:/etc/kowl/config.yaml
+    ports:
+    - "8780:8080"
+    entrypoint: ./kowl --config.filepath=/etc/kowl/config.yaml
+    depends_on:
+      - kafka-1
+    labels:
+      - "dmaap_test=yes"
+
+  dmaap:
+    container_name: onap-dmaap
+    image: ${DMAAP_IMAGE}
+    ports:
+      - 3904:3904
+      - 3905:3905
+    environment:
+      enableCadi: 'false'
+    volumes:
+      - ./config/dmaap/MsgRtrApi.properties:/appl/dmaapMR1/bundleconfig/etc/appprops/MsgRtrApi.properties
+      - ./config/dmaap/cadi.properties:/appl/dmaapMR1/etc/cadi.properties
+    depends_on:
+      - zookeeper-1
+      - kafka-1
+    labels:
+      - "dmaap_test=yes"
+
+  ves-collector:
+    image: ${VES_COLLECTOR_IMAGE}
+    container_name: ves-collector
+    environment:
+      DMAAPHOST: onap-dmaap
+    ports:
+      - 8080:8080
+      - 8443:8443
+    volumes:
+      - ./config/ves-collector/collector.properties:/opt/app/VESCollector/etc/collector.properties
+      - ./config/ves-collector/ves-dmaap-config.json:/opt/app/VESCollector/etc/ves-dmaap-config.json
+    labels:
+      - "dmaap_test=yes"
+
+  kcat:
+    image: edenhill/kcat:1.7.1
+    container_name: kcat
+    depends_on:
+      - kafka-1
+    entrypoint:
+      - /bin/sh
+      - -c
+      - |
+        apk add jq;
+        while [ 1 -eq 1 ];do sleep 60;done
+    labels:
+      - "dmaap_test=yes"
+
+  ics:
+    image: ${ICS_IMAGE}
+    container_name: ics
+    volumes:
+    - ./config/ics/application.yaml:/opt/app/information-coordinator-service/config/application.yaml
+    ports:
+    - 8083:8083
+    - 8434:8434
+    labels:
+      - "dmaap_test=yes"
+
+  callback:
+    image: kennethreitz/httpbin
+    container_name: callback
+    labels:
+      - "dmaap_test=yes"
+
+
+  client:
+    container_name: client
+    image: confluentinc/cp-kafka:6.2.1
+    command: ['sh', '-c', 'sleep 100000']
+    labels:
+      - "dmaap_test=yes"
+
diff --git a/pm-file-flow-demo/docker-proj/docker-compose-k3.yaml b/pm-file-flow-demo/docker-proj/docker-compose-k3.yaml
new file mode 100644
index 0000000..c08dda9
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/docker-compose-k3.yaml
@@ -0,0 +1,189 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+version: '3.0'
+networks:
+  default:
+    external: true
+    name: nonrtric-docker-net
+
+services:
+  callback:
+    image: kennethreitz/httpbin
+    container_name: callback
+    labels:
+      - "dmaap_test=yes"
+
+
+  client:
+    container_name: client
+    image: confluentinc/cp-kafka:6.2.1
+    command: ['sh', '-c', 'sleep 100000']
+    labels:
+      - "dmaap_test=yes"
+
+  zookeeper-1:
+    image: confluentinc/cp-zookeeper:6.2.1
+    ports:
+      - '32181:32181'
+    environment:
+      ZOOKEEPER_CLIENT_PORT: 32181
+      ZOOKEEPER_TICK_TIME: 2000
+    labels:
+      - "dmaap_test=yes"
+#NO_DATA_VOLUME_MAP_LOCALHOST_START
+    volumes:
+    - /tmp/kafka-test/z1-data:/var/lib/zookeeper/data
+    - /tmp/kafka-test/z1-log:/var/lib/zookeeper/log
+#NO_DATA_VOLUME_MAP_LOCALHOST_STOP
+
+  kafka-1:
+    image: confluentinc/cp-kafka:6.2.1
+    ports:
+      - '9092:9092'
+    depends_on:
+      - zookeeper-1
+    environment:
+      KAFKA_BROKER_ID: 1
+      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:32181
+      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
+      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
+      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka-1:29092,EXTERNAL://localhost:9092
+      KAFKA_DEFAULT_REPLICATION_FACTOR: ${KAFKA_DEFAULT_REPLICATION_FACTOR}
+      KAFKA_NUM_PARTITIONS: ${KAFKA_NUM_PARTITIONS}
+    labels:
+      - "dmaap_test=yes"
+#NO_DATA_VOLUME_MAP_LOCALHOST_START
+    volumes:
+      - /tmp/kafka-test/k1-data/var/lib/kafka/data
+#NO_DATA_VOLUME_MAP_LOCALHOST_STOP
+
+  kafka-2:
+    image: confluentinc/cp-kafka:6.2.1
+    ports:
+      - '9093:9093'
+    depends_on:
+      - zookeeper-1
+    environment:
+      KAFKA_BROKER_ID: 2
+      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:32181
+      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
+      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
+      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka-2:29093,EXTERNAL://localhost:9093
+      KAFKA_DEFAULT_REPLICATION_FACTOR: ${KAFKA_DEFAULT_REPLICATION_FACTOR}
+      KAFKA_NUM_PARTITIONS: ${KAFKA_NUM_PARTITIONS}
+    labels:
+      - "dmaap_test=yes"
+#NO_DATA_VOLUME_MAP_LOCALHOST_START
+    volumes:
+      - /tmp/kafka-test/k2-data:/var/lib/kafka/data
+#NO_DATA_VOLUME_MAP_LOCALHOST_STOP
+
+  kafka-3:
+    image: confluentinc/cp-kafka:6.2.1
+    ports:
+      - '9094:9094'
+    depends_on:
+      - zookeeper-1
+    environment:
+      KAFKA_BROKER_ID: 3
+      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:32181
+      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
+      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
+      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka-3:29094,EXTERNAL://localhost:9094
+      KAFKA_DEFAULT_REPLICATION_FACTOR: ${KAFKA_DEFAULT_REPLICATION_FACTOR}
+      KAFKA_NUM_PARTITIONS: ${KAFKA_NUM_PARTITIONS}
+    labels:
+      - "dmaap_test=yes"
+#NO_DATA_VOLUME_MAP_LOCALHOST_START
+    volumes:
+      - /tmp/kafka-test/k3-data:/var/lib/kafka/data
+#NO_DATA_VOLUME_MAP_LOCALHOST_STOP
+
+  kowl:
+    container_name: kowl
+    image: quay.io/cloudhut/kowl
+    restart: on-failure
+    hostname: kowl
+    volumes:
+    - ./config/kowl/config.yaml:/etc/kowl/config.yaml
+    ports:
+    - "8780:8080"
+    entrypoint: ./kowl --config.filepath=/etc/kowl/config.yaml
+    depends_on:
+      - kafka-1
+      - kafka-2
+      - kafka-3
+
+  dmaap:
+    container_name: onap-dmaap
+    image: ${DMAAP_IMAGE}
+    ports:
+      - 3904:3904
+      - 3905:3905
+    environment:
+      enableCadi: 'false'
+    volumes:
+      - ./config/dmaap/MsgRtrApi.properties:/appl/dmaapMR1/bundleconfig/etc/appprops/MsgRtrApi.properties
+      - ./config/dmaap/cadi.properties:/appl/dmaapMR1/etc/cadi.properties
+    depends_on:
+      - zookeeper-1
+      - kafka-1
+    labels:
+      - "dmaap_test=yes"
+
+
+  ves-collector:
+    image: ${VES_COLLECTOR_IMAGE}
+    container_name: ves-collector
+    environment:
+      DMAAPHOST: onap-dmaap
+    ports:
+      - 8080:8080
+      - 8443:8443
+    volumes:
+      - ./config/ves-collector/collector.properties:/opt/app/VESCollector/etc/collector.properties
+      - ./config/ves-collector/ves-dmaap-config.json:/opt/app/VESCollector/etc/ves-dmaap-config.json
+    labels:
+      - "dmaap_test=yes"
+
+  kcat:
+    image: edenhill/kcat:1.7.1
+    container_name: kcat
+    depends_on:
+      - kafka-1
+      - kafka-2
+      - kafka-3
+    entrypoint:
+      - /bin/sh
+      - -c
+      - |
+        apk add jq;
+        while [ 1 -eq 1 ];do sleep 60;done
+    labels:
+      - "dmaap_test=yes"
+
+  ics:
+    image: ${ICS_IMAGE}
+    container_name: ics
+    volumes:
+    - ./config/ics/application.yaml:/opt/app/information-coordinator-service/config/application.yaml
+    ports:
+    - 8083:8083
+    - 8434:8434
+    labels:
+      - "dmaap_test=yes"
diff --git a/pm-file-flow-demo/docker-proj/docker-compose-minio.yaml b/pm-file-flow-demo/docker-proj/docker-compose-minio.yaml
new file mode 100644
index 0000000..2e46420
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/docker-compose-minio.yaml
@@ -0,0 +1,41 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+version: '3.0'
+networks:
+  default:
+    external: true
+    name: nonrtric-docker-net
+
+services:
+
+  minio:
+    image: minio/minio
+    container_name: minio-server
+    command: server /data --console-address ":9001"
+    environment:
+      MINIO_ROOT_USER: admin
+      MINIO_ROOT_PASSWORD: adminadmin
+    ports:
+    - 9000:9000
+    - 9001:9001
+    labels:
+      - "dmaap_test=yes"
+#NO_DATA_VOLUME_MAP_LOCALHOST_START
+    volumes:
+    - /tmp/minio-test/0:/data
+#NO_DATA_VOLUME_MAP_LOCALHOST_STOP
diff --git a/pm-file-flow-demo/docker-proj/docker-compose-minio_gen.yaml b/pm-file-flow-demo/docker-proj/docker-compose-minio_gen.yaml
new file mode 100644
index 0000000..422ad02
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/docker-compose-minio_gen.yaml
@@ -0,0 +1,37 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+version: '3.0'
+networks:
+  default:
+    external: true
+    name: nonrtric-docker-net
+
+services:
+
+  minio:
+    image: minio/minio
+    container_name: minio-server
+    command: server /data --console-address ":9001"
+    environment:
+      MINIO_ROOT_USER: admin
+      MINIO_ROOT_PASSWORD: adminadmin
+    ports:
+    - 9000:9000
+    - 9001:9001
+    labels:
+      - "dmaap_test=yes"
diff --git a/pm-file-flow-demo/docker-proj/docker-compose-pm-https.yaml b/pm-file-flow-demo/docker-proj/docker-compose-pm-https.yaml
new file mode 100644
index 0000000..b1a1b88
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/docker-compose-pm-https.yaml
@@ -0,0 +1,38 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+version: '3.0'
+networks:
+  default:
+    external: true
+    name: nonrtric-docker-net
+
+services:
+
+  server:
+    # cert is copied into the container(s) at runtime
+    deploy:
+      mode: replicated
+      replicas: $NUM_HTTP
+    image: $PM_HTTPSSERVER_IMAGE
+    environment:
+      ALWAYS_RETURN: /files/pm.xml.gz
+    volumes:
+    - ./ne-files:/files:rw
+    labels:
+      - "dmaap_test=yes"
+
diff --git a/pm-file-flow-demo/docker-proj/docker-compose-pm-https_gen.yaml b/pm-file-flow-demo/docker-proj/docker-compose-pm-https_gen.yaml
new file mode 100644
index 0000000..5e55fab
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/docker-compose-pm-https_gen.yaml
@@ -0,0 +1,38 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+version: '3.0'
+networks:
+  default:
+    external: true
+    name: nonrtric-docker-net
+
+services:
+
+  server:
+    # cert is copied into the container(s) at runtime
+    deploy:
+      mode: replicated
+      replicas: 10
+    image: pm-https-server:latest
+    environment:
+      ALWAYS_RETURN: /files/pm.xml.gz
+    volumes:
+    - ./ne-files:/files:rw
+    labels:
+      - "dmaap_test=yes"
+
diff --git a/pm-file-flow-demo/docker-proj/docker-compose-producers.yaml b/pm-file-flow-demo/docker-proj/docker-compose-producers.yaml
new file mode 100644
index 0000000..59d8708
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/docker-compose-producers.yaml
@@ -0,0 +1,113 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+version: '3.0'
+networks:
+  default:
+    external: true
+    name: nonrtric-docker-net
+
+services:
+
+  kafka-producer1:
+    image: $KPX_IMAGE
+    container_name: kp1
+    volumes:
+    - ./config/kp1/application_configuration.json:/application_configuration.json
+    - ./shared-volume:$FILES_VOLUME
+    ports:
+    - 9980:80
+    labels:
+      - "dmaap_test=yes"
+    environment:
+      KP: 1
+      FILES_VOLUME: $FILES_VOLUME
+      KAFKA_SERVER: kafka-1:29092
+      ICS: ics:8083
+      SELF: kp1:80
+      FILESTORE_USER: admin
+      FILESTORE_PWD: adminadmin
+      FILESTORE_SERVER: minio-server:9000
+    deploy:
+      resources:
+        limits:
+          memory: 500M
+
+
+  kafka-producer100:
+    image: $KPX_IMAGE
+    container_name: kpm100
+    volumes:
+    - ./config/kpm100/application_configuration.json:/application_configuration.json
+    - ./shared-volume:$FILES_VOLUME
+    ports:
+    - 9880:80
+    labels:
+      - "dmaap_test=yes"
+    environment:
+      KP: 100
+      FILES_VOLUME: $FILES_VOLUME
+      KAFKA_SERVER: kafka-1:29092
+      ICS: ics:8083
+      SELF: kpm100:80
+      FILESTORE_USER: admin
+      FILESTORE_PWD: adminadmin
+      FILESTORE_SERVER: minio-server:9000
+    deploy:
+      resources:
+        limits:
+          memory: 200M
+
+  kafka-producer101:
+    image: $KPX_IMAGE
+    container_name: kpm101
+    volumes:
+    - ./config/kpm101/application_configuration.json:/application_configuration.json
+    - ./shared-volume:$FILES_VOLUME
+    ports:
+    - 9881:80
+    labels:
+      - "dmaap_test=yes"
+    environment:
+      KP: 101
+      FILES_VOLUME: $FILES_VOLUME
+      KAFKA_SERVER: kafka-1:29092
+      ICS: ics:8083
+      SELF: kpm101:80
+      FILESTORE_USER: admin
+      FILESTORE_PWD: adminadmin
+      FILESTORE_SERVER: minio-server:9000
+    deploy:
+      resources:
+        limits:
+          memory: 200M
+
+  kafka-producer200:
+    image: $DMAAPADP_IMAGE
+    container_name: kpadp200
+    volumes:
+    - ./config/kpadp200/application_configuration.json:/opt/app/dmaap-adapter-service/data/application_configuration.json
+    - ./config/kpadp200/application.yaml:/opt/app/dmaap-adapter-service/config/application.yaml
+    - ./shared-volume:$FILES_VOLUME
+    ports:
+    - 8084:8084
+    labels:
+      - "dmaap_test=yes"
+    deploy:
+      resources:
+        limits:
+          memory: 600M
diff --git a/pm-file-flow-demo/docker-proj/docker-compose-producers_gen.yaml b/pm-file-flow-demo/docker-proj/docker-compose-producers_gen.yaml
new file mode 100644
index 0000000..d1d00fc
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/docker-compose-producers_gen.yaml
@@ -0,0 +1,113 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+version: '3.0'
+networks:
+  default:
+    external: true
+    name: nonrtric-docker-net
+
+services:
+
+  kafka-producer1:
+    image: kafka-pm-producer:latest
+    container_name: kp1
+    volumes:
+    - ./config/kp1/application_configuration.json:/application_configuration.json
+    - ./shared-volume:/pm-files
+    ports:
+    - 9980:80
+    labels:
+      - "dmaap_test=yes"
+    environment:
+      KP: 1
+      FILES_VOLUME: /pm-files
+      KAFKA_SERVER: kafka-1:29092
+      ICS: ics:8083
+      SELF: kp1:80
+      FILESTORE_USER: admin
+      FILESTORE_PWD: adminadmin
+      FILESTORE_SERVER: minio-server:9000
+    deploy:
+      resources:
+        limits:
+          memory: 500M
+
+
+  kafka-producer100:
+    image: kafka-pm-producer:latest
+    container_name: kpm100
+    volumes:
+    - ./config/kpm100/application_configuration.json:/application_configuration.json
+    - ./shared-volume:/pm-files
+    ports:
+    - 9880:80
+    labels:
+      - "dmaap_test=yes"
+    environment:
+      KP: 100
+      FILES_VOLUME: /pm-files
+      KAFKA_SERVER: kafka-1:29092
+      ICS: ics:8083
+      SELF: kpm100:80
+      FILESTORE_USER: admin
+      FILESTORE_PWD: adminadmin
+      FILESTORE_SERVER: minio-server:9000
+    deploy:
+      resources:
+        limits:
+          memory: 200M
+
+  kafka-producer101:
+    image: kafka-pm-producer:latest
+    container_name: kpm101
+    volumes:
+    - ./config/kpm101/application_configuration.json:/application_configuration.json
+    - ./shared-volume:/pm-files
+    ports:
+    - 9881:80
+    labels:
+      - "dmaap_test=yes"
+    environment:
+      KP: 101
+      FILES_VOLUME: /pm-files
+      KAFKA_SERVER: kafka-1:29092
+      ICS: ics:8083
+      SELF: kpm101:80
+      FILESTORE_USER: admin
+      FILESTORE_PWD: adminadmin
+      FILESTORE_SERVER: minio-server:9000
+    deploy:
+      resources:
+        limits:
+          memory: 200M
+
+  kafka-producer200:
+    image: o-ran-sc/nonrtric-plt-dmaapadapter:1.2.0-SNAPSHOT
+    container_name: kpadp200
+    volumes:
+    - ./config/kpadp200/application_configuration.json:/opt/app/dmaap-adapter-service/data/application_configuration.json
+    - ./config/kpadp200/application.yaml:/opt/app/dmaap-adapter-service/config/application.yaml
+    - ./shared-volume:/pm-files
+    ports:
+    - 8084:8084
+    labels:
+      - "dmaap_test=yes"
+    deploy:
+      resources:
+        limits:
+          memory: 600M
diff --git a/pm-file-flow-demo/docker-proj/docker-compose_gen.yaml b/pm-file-flow-demo/docker-proj/docker-compose_gen.yaml
new file mode 100644
index 0000000..4280317
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/docker-compose_gen.yaml
@@ -0,0 +1,142 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+version: '3.0'
+networks:
+  default:
+    external: true
+    name: nonrtric-docker-net
+
+services:
+  callback:
+    image: kennethreitz/httpbin
+    container_name: callback
+    labels:
+      - "dmaap_test=yes"
+
+
+  client:
+    container_name: client
+    image: confluentinc/cp-kafka:6.2.1
+    command: ['sh', '-c', 'sleep 100000']
+    labels:
+      - "dmaap_test=yes"
+
+  zookeeper-1:
+    image: confluentinc/cp-zookeeper:6.2.1
+    ports:
+      - '32181:32181'
+    environment:
+      ZOOKEEPER_CLIENT_PORT: 32181
+      ZOOKEEPER_TICK_TIME: 2000
+    labels:
+      - "dmaap_test=yes"
+
+  kafka-1:
+    image: confluentinc/cp-kafka:6.2.1
+    ports:
+      - '9092:9092'
+    depends_on:
+      - zookeeper-1
+    environment:
+      KAFKA_BROKER_ID: 1
+      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:32181
+      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
+      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
+      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka-1:29092,EXTERNAL://localhost:9092
+
+      #KAFKA_DEFAULT_REPLICATION_FACTOR: 1
+      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
+      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
+      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
+
+
+      KAFKA_NUM_PARTITIONS: 10
+    labels:
+      - "dmaap_test=yes"
+
+  kowl:
+    container_name: kowl
+    image: quay.io/cloudhut/kowl
+    restart: on-failure
+    hostname: kowl
+    volumes:
+    - ./config/kowl/config.yaml:/etc/kowl/config.yaml
+    ports:
+    - "8780:8080"
+    entrypoint: ./kowl --config.filepath=/etc/kowl/config.yaml
+    depends_on:
+      - kafka-1
+    labels:
+      - "dmaap_test=yes"
+
+  dmaap:
+    container_name: onap-dmaap
+    image: nexus3.onap.org:10001/onap/dmaap/dmaap-mr:1.1.18
+    ports:
+      - 3904:3904
+      - 3905:3905
+    environment:
+      enableCadi: 'false'
+    volumes:
+      - ./config/dmaap/MsgRtrApi.properties:/appl/dmaapMR1/bundleconfig/etc/appprops/MsgRtrApi.properties
+      - ./config/dmaap/cadi.properties:/appl/dmaapMR1/etc/cadi.properties
+    depends_on:
+      - zookeeper-1
+      - kafka-1
+    labels:
+      - "dmaap_test=yes"
+
+  ves-collector:
+    image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.11.0
+    container_name: ves-collector
+    environment:
+      DMAAPHOST: onap-dmaap
+    ports:
+      - 8080:8080
+      - 8443:8443
+    volumes:
+      - ./config/ves-collector/collector.properties:/opt/app/VESCollector/etc/collector.properties
+      - ./config/ves-collector/ves-dmaap-config.json:/opt/app/VESCollector/etc/ves-dmaap-config.json
+    labels:
+      - "dmaap_test=yes"
+
+  kcat:
+    image: edenhill/kcat:1.7.1
+    container_name: kcat
+    depends_on:
+      - kafka-1
+    entrypoint:
+      - /bin/sh
+      - -c
+      - |
+        apk add jq;
+        while [ 1 -eq 1 ];do sleep 60;done
+    labels:
+      - "dmaap_test=yes"
+
+  ics:
+    image: nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-plt-informationcoordinatorservice:1.4.0
+    container_name: ics
+    volumes:
+    - ./config/ics/application.yaml:/opt/app/information-coordinator-service/config/application.yaml
+    ports:
+    - 8083:8083
+    - 8434:8434
+    labels:
+      - "dmaap_test=yes"
+
diff --git a/pm-file-flow-demo/docker-proj/docker-setup.sh b/pm-file-flow-demo/docker-proj/docker-setup.sh
new file mode 100755
index 0000000..629f36e
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/docker-setup.sh
@@ -0,0 +1,287 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+echo $SP
+print_usage() {
+    echo "Usage: docker-setup.sh k1|k3 dfc1|dfc2 file|minio no-ftp|ftp data-mount|no-data-mount"
+    exit 1
+}
+
+check_error() {
+    if [ $1 -ne 0 ]; then
+        echo "Failed $2"
+        echo "Exiting..."
+        exit 1
+    fi
+}
+
+ARG=$1
+if [ $# -ne 5 ]; then
+    print_usage
+fi
+
+if [ $1 == "k1" ]; then
+    :
+elif [ $1 == "k3" ]; then
+    :
+else
+    print_usage
+fi
+
+if [ $2 == "dfc1" ]; then
+    :
+elif [ $2 == "dfc2" ]; then
+    :
+else
+    print_usage
+fi
+
+if [ $3 == "file" ]; then
+    export NRT_STORAGE=$3
+elif [ $3 == "minio" ]; then
+    export NRT_STORAGE=$3
+else
+    print_usage
+fi
+
+if [ $4 == "no-ftp" ]; then
+    FTP_FLAG=$4
+elif [ $4 == "ftp" ]; then
+    FTP_FLAG=$4
+else
+    print_usage
+fi
+
+if [ $5 == "no-data-mount" ]; then
+    :
+elif [ $5 == "data-mount" ]; then
+    :
+else
+    print_usage
+fi
+
+callback_get_num_jobs_kp() {
+    echo 1
+}
+
+callback_get_num_jobs_kpm() {
+    echo 0
+}
+
+callback_get_num_jobs_kpadp() {
+    echo 1
+}
+
+callback_get_job_sufffix_kp() {
+    echo "kp"
+}
+
+callback_get_job_sufffix_kpm() {
+    echo "kpm"
+}
+
+callback_get_job_sufffix_kpadp() {
+    echo "kpadp"
+}
+
+#Arg: <job-id> <storage-type>
+callback_create_job_kp() {
+
+    if [ $2 == "file" ]; then
+        # Store in file system
+        JOB='{"info_type_id": "json-file-data", "job_owner": "console","status_notification_uri": "http://callback:80/post","job_definition": {
+        "kafkaOutputTopic":"rapp-topic-'$1'","filterType":"pmdata","filter":{"measTypes":["pmCounterNumber101"]}
+        }}'
+        echo $JOB > .job.json
+    fi
+
+    if [ $2 == "minio" ]; then
+        #Store in filestore
+        JOB='{"info_type_id": "json-file-data-from-filestore", "job_owner": "console","status_notification_uri": "http://callback:80/post","job_definition": {
+        "kafkaOutputTopic":"rapp-topic-'$1'","filterType":"pmdata","filter":{"measTypes":["pmCounterNumber101"]}
+        }}'
+        echo $JOB > .job.json
+    fi
+
+}
+
+#Arg: <job-id> <storage-type>
+callback_create_job_kpm() {
+
+    let ID=3
+    JOB='{"info_type_id": "PmData", "job_owner": "console","status_notification_uri": "http://callback:80/post","job_definition": {
+    "kafkaOutputTopic":"rapp-topic-'$ID'","filterType":"pmdata","filter":{"measTypes":["pmCounterNumber101"],"pmRopStartTime": "1999-12-27T10:50:44.000-08:00"}
+    }}'
+    echo $JOB > .job.json
+}
+#Arg: <job-id> <storage-type>
+callback_create_job_kpadp() {
+    let ID=$1+1
+
+    JOB='{"info_type_id": "PmData", "job_owner": "console","status_notification_uri": "http://callback:80/post","job_definition": {
+    "kafkaOutputTopic":"rapp-topic-'$ID'","filterType":"pmdata","filter":{"measTypes":["pmCounterNumber101"]}
+    }}'
+    echo $JOB > .job.json
+}
+
+. ./setup-phase1.sh
+
+export DMAAP_IMAGE=nexus3.onap.org:10001/onap/dmaap/dmaap-mr:1.1.18
+export VES_COLLECTOR_IMAGE=nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.11.0
+
+export ICS_IMAGE="nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-plt-informationcoordinatorservice:1.4.0"
+echo "Pulling ICS image... "$ICS_IMAGE
+docker pull $ICS_IMAGE
+
+export DMAAPADP_IMAGE="nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-plt-dmaapadapter:1.2.0"
+echo "Pulling DMAAPADP image... "$DMAAPADP_IMAGE
+docker pull $DMAAPADP_IMAGE
+
+echo "LOCAL IMAGE FOR DMAAP ADP"
+export DMAAPADP_IMAGE="o-ran-sc/nonrtric-plt-dmaapadapter:1.2.0-SNAPSHOT"
+
+if [ $NRT_STORAGE == "file" ]; then
+    # Run without mino
+    export KPADP_MINIO=
+else
+    # Run with minio
+    export KPADP_MINIO=http://minio-server:9000
+fi
+
+export KAFKA_NUM_PARTITIONS=10
+export TOPICS="file-ready collected-file json-file-ready json-file-ready-kp json-file-ready-kpadp"
+
+if [ $1 == "k1" ]; then
+    . ./setup-phase2.sh 1 $NRT_STORAGE $5
+else
+    export KAFKA_DEFAULT_REPLICATION_FACTOR=3
+    . ./setup-phase2.sh 3 $NRT_STORAGE $5
+fi
+
+export NUM_DFC=1
+if [ $2 != "dfc1" ]; then
+    export NUM_DFC=2
+fi
+echo "Starting $NUM_DFC dfc"
+
+if [ $NRT_STORAGE == "file" ]; then
+    # Run without mino
+    export DFC_MINIO=
+else
+    # Run with minio
+    export DFC_MINIO=http://minio-server:9000
+fi
+
+
+export FILES_VOLUME="/pm-files"
+
+#This is a locally built image
+export DFC_IMAGE="onap/org.onap.dcaegen2.collectors.datafile.datafile-app-server:2.5.14"
+
+if [ $2 != "dfc1" ]; then
+    envsubst < docker-compose-dfc2.yaml > docker-compose-dfc_gen.yaml
+    envsubst < config/dfc2/application-template.yaml > config/dfc2/application.yaml
+else
+    envsubst < docker-compose-dfc1.yaml > docker-compose-dfc_gen.yaml
+    envsubst < config/dfc1/application-template.yaml > config/dfc1/application.yaml
+fi
+docker-compose -p dfc -f docker-compose-dfc_gen.yaml up -d
+if [ $? -ne 0 ]; then
+    echo "docker-compose failed"
+    echo "exiting..."
+    exit 1
+fi
+
+echo "Starting producers"
+
+if [ $NRT_STORAGE == "file" ]; then
+    cp config/kpadp200/application_configuration-file-template.json config/kpadp200/application_configuration.json
+else
+    cp config/kpadp200/application_configuration-minio-template.json config/kpadp200/application_configuration.json
+fi
+
+if [ $NRT_STORAGE == "file" ]; then
+    envsubst < config/kpadp200/application-file-template.yaml > config/kpadp200/application.yaml
+else
+    envsubst < config/kpadp200/application-minio-template.yaml > config/kpadp200/application.yaml
+fi
+
+if [ $NRT_STORAGE == "file" ]; then
+    cp config/kpm100/application_configuration-file.json config/kpm100/application_configuration.json
+    cp config/kpm101/application_configuration-file.json config/kpm101/application_configuration.json
+else
+    cp config/kpm100/application_configuration-minio.json config/kpm100/application_configuration.json
+    cp config/kpm101/application_configuration-minio.json config/kpm101/application_configuration.json
+fi
+
+if [ $NRT_STORAGE == "file" ]; then
+    cp config/kp1/application_configuration-file.json config/kp1/application_configuration.json
+else
+    cp config/kp1/application_configuration-minio.json config/kp1/application_configuration.json
+fi
+
+export KPX_IMAGE="kafka-pm-producer:latest"
+
+envsubst < docker-compose-producers.yaml > docker-compose-producers_gen.yaml
+docker-compose -p prod -f docker-compose-producers_gen.yaml up -d
+if [ $? -ne 0 ]; then
+    echo "docker-compose failed"
+    echo "exiting..."
+    exit 1
+fi
+
+cp pm-files/pm* ne-files
+
+if [ $FTP_FLAG == "ftp" ]; then
+    echo "Starting ftp servers"
+
+    export SFTPGO_IMAGE="drakkan/sftpgo:2.3.x-alpine-slim"
+    export NUM_SFTP=10
+    export NUM_FTPES=10
+
+    envsubst < docker-compose-ftp.yaml > docker-compose-ftp_gen.yaml
+    docker-compose -p ftp -f docker-compose-ftp_gen.yaml up -d
+    if [ $? -ne 0 ]; then
+        echo "docker-compose failed"
+        echo "exiting..."
+        exit 1
+    fi
+fi
+
+echo "Starting http servers"
+
+export PM_HTTPSSERVER_IMAGE="pm-https-server:latest"
+export NUM_HTTP=10
+
+envsubst < docker-compose-pm-https.yaml > docker-compose-pm-https_gen.yaml
+docker-compose -p pm-https -f docker-compose-pm-https_gen.yaml up -d
+if [ $? -ne 0 ]; then
+    echo "docker-compose failed"
+    echo "exiting..."
+    exit 1
+fi
+
+. ./setup-phase3.sh $NRT_STORAGE  $FTP_FLAG
+check_error $? "Setup phase 3 failed"
+
+scripts/clean-shared-volume.sh
+
+# curl localhost:9880/logging/debug -X PUT
+# curl localhost:9881/logging/debug -X PUT
+# curl localhost:9980/logging/debug -X PUT
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/docker-tear-down.sh b/pm-file-flow-demo/docker-proj/docker-tear-down.sh
new file mode 100755
index 0000000..8bd454f
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/docker-tear-down.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+echo "Stop and remove all containers in the project"
+
+docker stop $(docker ps -qa  --filter "label=dmaap_test")  2> /dev/null
+docker stop $(docker ps -qa  --filter "label=dmaap_test")  2> /dev/null
+docker rm -f $(docker ps -qa  --filter "label=dmaap_test")  2> /dev/null
+
+docker-compose -f docker-compose-dfc_gen.yaml -p dfc down
+docker-compose -f docker-compose-minio_gen.yaml -p minio down
+docker-compose -f docker-compose-producers_gen.yaml -p prod down
+docker-compose -f docker-compose-ftp_gen.yaml -p ftp down
+docker-compose -f docker-compose-pm-https_gen.yaml -p pm-https down
+docker-compose -f docker-compose_gen.yaml -p common down
+
diff --git a/pm-file-flow-demo/docker-proj/hist-job.sh b/pm-file-flow-demo/docker-proj/hist-job.sh
new file mode 100755
index 0000000..a716abf
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/hist-job.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+echo "Creating a job to filter historical pm files (json)"
+
+JOB='{"info_type_id": "PmData", "job_owner": "console","status_notification_uri": "http://callback:80/post","job_definition": {"kafkaOutputTopic":"a-hist","filterType":"pmdata","filter":{"pmRopStartTime": "1999-12-27T10:50:44.000-08:00","sourceNames":["HTTPS-0"],"measTypes":["pmCounterNumber101"]}}}'
+RESP=$(curl -s -w '%{http_code}' localhost:8083/data-consumer/v1/info-jobs/xa-hist -X PUT -H 'Content-Type: application/json' --data-binary "$JOB")
+status=${RESP:${#RESP}-3}
+if [ "$status" == "200" ]; then
+    echo "  Job created ok"
+elif [ "$status" == "201" ]; then
+    echo "  Job created ok"
+else
+    echo $RESP
+    echo "FAILED"
+    exit 1
+fi
+
+echo "DONE"
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/ne-files/dummy.txt b/pm-file-flow-demo/docker-proj/ne-files/dummy.txt
new file mode 100644
index 0000000..013ed0d
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/ne-files/dummy.txt
@@ -0,0 +1 @@
+Empty file
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/ne-files/pm.xml b/pm-file-flow-demo/docker-proj/ne-files/pm.xml
new file mode 100644
index 0000000..529f69f
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/ne-files/pm.xml
@@ -0,0 +1,4023 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="MeasDataCollection.xsl"?>
+<measCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec"
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                xsi:schemaLocation="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec">
+  <fileHeader fileFormatVersion="32.435 V10.0"
+              vendorName="Ericsson AB"
+              dnPrefix="SubNetwork=G3">
+    <fileSender     localDn="nodedntest"
+                elementType="RadioNode"/>
+    <measCollec beginTime="2022-04-18T19:00:00+00:00"/>
+  </fileHeader>
+  <measData>
+    <managedElement localDn="nodedntest"
+                    swVersion="CXP2010174_1 R44B17"/>
+    <measInfo measInfoId="PM=1,PmGroup=NRCellCU_GNBCUCP">
+      <job jobId="nr_all"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber0</measType>
+      <measType p="2">pmCounterNumber1</measType>
+      <measType p="3">pmCounterNumber2</measType>
+      <measType p="4">pmCounterNumber3</measType>
+      <measType p="5">pmCounterNumber4</measType>
+      <measType p="6">pmCounterNumber5</measType>
+      <measType p="7">pmCounterNumber6</measType>
+      <measType p="8">pmCounterNumber7</measType>
+      <measType p="9">pmCounterNumber8</measType>
+      <measType p="10">pmCounterNumber9</measType>
+      <measType p="11">pmCounterNumber10</measType>
+      <measType p="12">pmCounterNumber11</measType>
+      <measType p="13">pmCounterNumber12</measType>
+      <measType p="14">pmCounterNumber13</measType>
+      <measType p="15">pmCounterNumber14</measType>
+      <measType p="16">pmCounterNumber15</measType>
+      <measType p="17">pmCounterNumber16</measType>
+      <measType p="18">pmCounterNumber17</measType>
+      <measType p="19">pmCounterNumber18</measType>
+      <measType p="20">pmCounterNumber19</measType>
+      <measType p="21">pmCounterNumber20</measType>
+      <measType p="22">pmCounterNumber21</measType>
+      <measType p="23">pmCounterNumber22</measType>
+      <measType p="24">pmCounterNumber23</measType>
+      <measType p="25">pmCounterNumber24</measType>
+      <measType p="26">pmCounterNumber25</measType>
+      <measType p="27">pmCounterNumber26</measType>
+      <measType p="28">pmCounterNumber27</measType>
+      <measType p="29">pmCounterNumber28</measType>
+      <measType p="30">pmCounterNumber29</measType>
+      <measType p="31">pmCounterNumber30</measType>
+      <measType p="32">pmCounterNumber31</measType>
+      <measType p="33">pmCounterNumber32</measType>
+      <measType p="34">pmCounterNumber33</measType>
+      <measType p="35">pmCounterNumber34</measType>
+      <measType p="36">pmCounterNumber35</measType>
+      <measType p="37">pmCounterNumber36</measType>
+      <measType p="38">pmCounterNumber37</measType>
+      <measType p="39">pmCounterNumber38</measType>
+      <measType p="40">pmCounterNumber39</measType>
+      <measType p="41">pmCounterNumber40</measType>
+      <measType p="42">pmCounterNumber41</measType>
+      <measType p="43">pmCounterNumber42</measType>
+      <measType p="44">pmCounterNumber43</measType>
+      <measType p="45">pmCounterNumber44</measType>
+      <measType p="46">pmCounterNumber45</measType>
+      <measType p="47">pmCounterNumber46</measType>
+      <measType p="48">pmCounterNumber47</measType>
+      <measType p="49">pmCounterNumber48</measType>
+      <measType p="50">pmCounterNumber49</measType>
+      <measType p="51">pmCounterNumber50</measType>
+      <measType p="52">pmCounterNumber51</measType>
+      <measType p="53">pmCounterNumber51Act</measType>
+      <measType p="54">pmCounterNumber53</measType>
+      <measType p="55">pmCounterNumber53Act</measType>
+      <measType p="56">pmCounterNumber55</measType>
+      <measType p="57">pmCounterNumber56</measType>
+      <measType p="58">pmCounterNumber57</measType>
+      <measType p="59">pmCounterNumber58</measType>
+      <measType p="60">pmCounterNumber59</measType>
+      <measType p="61">pmCounterNumber60</measType>
+      <measType p="62">pmCounterNumber60IntgProt64kbps</measType>
+      <measType p="63">pmCounterNumber62</measType>
+      <measType p="64">pmCounterNumber63</measType>
+      <measType p="65">pmCounterNumber64</measType>
+      <measType p="66">pmCounterNumber65</measType>
+      <measType p="67">pmCounterNumber66</measType>
+      <measType p="68">pmCounterNumber67</measType>
+      <measType p="69">pmCounterNumber68</measType>
+      <measType p="70">pmCounterNumber69</measType>
+      <measType p="71">pmCounterNumber70</measType>
+      <measType p="72">pmCounterNumber71</measType>
+      <measType p="73">pmCounterNumber72</measType>
+      <measType p="74">pmCounterNumber73</measType>
+      <measType p="75">pmCounterNumber74</measType>
+      <measType p="76">pmCounterNumber75</measType>
+      <measType p="77">pmCounterNumber76</measType>
+      <measType p="78">pmCounterNumber77</measType>
+      <measType p="79">pmCounterNumber78</measType>
+      <measType p="80">pmCounterNumber79</measType>
+      <measType p="81">pmCounterNumber80</measType>
+      <measType p="82">pmCounterNumber81</measType>
+      <measType p="83">pmCounterNumber82</measType>
+      <measType p="84">pmCounterNumber83</measType>
+      <measType p="85">pmCounterNumber84</measType>
+      <measType p="86">pmCounterNumber84Em</measType>
+      <measType p="87">pmCounterNumber84EmFbInd</measType>
+      <measType p="88">pmCounterNumber87</measType>
+      <measType p="89">pmCounterNumber88</measType>
+      <measType p="90">pmCounterNumber89</measType>
+      <measType p="91">pmCounterNumber90</measType>
+      <measType p="92">pmCounterNumber91</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=32">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">180</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0</r>
+        <r p="81">0</r>
+        <r p="82">0</r>
+        <r p="83">0</r>
+        <r p="84">0</r>
+        <r p="85">0</r>
+        <r p="86">0</r>
+        <r p="87">0</r>
+        <r p="88">0</r>
+        <r p="89">0</r>
+        <r p="90">0</r>
+        <r p="91">0</r>
+        <r p="92">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=31">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">180</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0</r>
+        <r p="81">0</r>
+        <r p="82">0</r>
+        <r p="83">0</r>
+        <r p="84">0</r>
+        <r p="85">0</r>
+        <r p="86">0</r>
+        <r p="87">0</r>
+        <r p="88">0</r>
+        <r p="89">0</r>
+        <r p="90">0</r>
+        <r p="91">0</r>
+        <r p="92">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">180</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0</r>
+        <r p="81">0</r>
+        <r p="82">0</r>
+        <r p="83">0</r>
+        <r p="84">0</r>
+        <r p="85">0</r>
+        <r p="86">0</r>
+        <r p="87">0</r>
+        <r p="88">0</r>
+        <r p="89">0</r>
+        <r p="90">0</r>
+        <r p="91">0</r>
+        <r p="92">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">180</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0</r>
+        <r p="81">0</r>
+        <r p="82">0</r>
+        <r p="83">0</r>
+        <r p="84">0</r>
+        <r p="85">0</r>
+        <r p="86">0</r>
+        <r p="87">0</r>
+        <r p="88">0</r>
+        <r p="89">0</r>
+        <r p="90">0</r>
+        <r p="91">0</r>
+        <r p="92">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=NRCellDU_GNBDU">
+      <job jobId="nr_all"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber92</measType>
+      <measType p="2">pmCounterNumber93</measType>
+      <measType p="3">pmCounterNumber94</measType>
+      <measType p="4">pmCounterNumber95</measType>
+      <measType p="5">pmCounterNumber96</measType>
+      <measType p="6">pmCounterNumber97</measType>
+      <measType p="7">pmCounterNumber98</measType>
+      <measType p="8">pmCounterNumber99</measType>
+      <measType p="9">pmCounterNumber100</measType>
+      <measType p="10">pmCounterNumber101</measType>
+      <measType p="11">pmCounterNumber102</measType>
+      <measType p="12">pmCounterNumber103</measType>
+      <measType p="13">pmCounterNumber104</measType>
+      <measType p="14">pmCounterNumber105</measType>
+      <measType p="15">pmCounterNumber106</measType>
+      <measType p="16">pmCounterNumber107</measType>
+      <measType p="17">pmCounterNumber108</measType>
+      <measType p="18">pmCounterNumber108Init</measType>
+      <measType p="19">pmCounterNumber110</measType>
+      <measType p="20">pmCounterNumber110Init</measType>
+      <measType p="21">pmCounterNumber112</measType>
+      <measType p="22">pmCounterNumber112Init</measType>
+      <measType p="23">pmCounterNumber114</measType>
+      <measType p="24">pmCounterNumber114Init</measType>
+      <measType p="25">pmCounterNumber116</measType>
+      <measType p="26">pmCounterNumber116Init</measType>
+      <measType p="27">pmCounterNumber118</measType>
+      <measType p="28">pmCounterNumber118Init</measType>
+      <measType p="29">pmCounterNumber120</measType>
+      <measType p="30">pmCounterNumber120Init</measType>
+      <measType p="31">pmCounterNumber122</measType>
+      <measType p="32">pmCounterNumber122Init</measType>
+      <measType p="33">pmCounterNumber124</measType>
+      <measType p="34">pmCounterNumber125</measType>
+      <measType p="35">pmCounterNumber125Init</measType>
+      <measType p="36">pmCounterNumber127</measType>
+      <measType p="37">pmCounterNumber127Init</measType>
+      <measType p="38">pmCounterNumber129</measType>
+      <measType p="39">pmCounterNumber129Init</measType>
+      <measType p="40">pmCounterNumber131</measType>
+      <measType p="41">pmCounterNumber131Init</measType>
+      <measType p="42">pmCounterNumber133</measType>
+      <measType p="43">pmCounterNumber133Init</measType>
+      <measType p="44">pmCounterNumber135</measType>
+      <measType p="45">pmCounterNumber135Init</measType>
+      <measType p="46">pmCounterNumber137</measType>
+      <measType p="47">pmCounterNumber137Init</measType>
+      <measType p="48">pmCounterNumber139</measType>
+      <measType p="49">pmCounterNumber139Init</measType>
+      <measType p="50">pmCounterNumber141</measType>
+      <measType p="51">pmCounterNumber141Init</measType>
+      <measType p="52">pmCounterNumber143</measType>
+      <measType p="53">pmCounterNumber143Init</measType>
+      <measType p="54">pmCounterNumber145</measType>
+      <measType p="55">pmCounterNumber145Init</measType>
+      <measType p="56">pmCounterNumber147</measType>
+      <measType p="57">pmCounterNumber147Init</measType>
+      <measType p="58">pmCounterNumber149</measType>
+      <measType p="59">pmCounterNumber150</measType>
+      <measType p="60">pmCounterNumber150Init</measType>
+      <measType p="61">pmCounterNumber152</measType>
+      <measType p="62">pmCounterNumber152Init</measType>
+      <measType p="63">pmCounterNumber154</measType>
+      <measType p="64">pmCounterNumber154Init</measType>
+      <measType p="65">pmCounterNumber156</measType>
+      <measType p="66">pmCounterNumber156Init</measType>
+      <measType p="67">pmCounterNumber158</measType>
+      <measType p="68">pmCounterNumber158Ext</measType>
+      <measType p="69">pmCounterNumber160</measType>
+      <measType p="70">pmCounterNumber161</measType>
+      <measType p="71">pmCounterNumber162</measType>
+      <measType p="72">pmCounterNumber163</measType>
+      <measType p="73">pmCounterNumber164</measType>
+      <measType p="74">pmCounterNumber165</measType>
+      <measType p="75">pmCounterNumber166</measType>
+      <measType p="76">pmCounterNumber1666</measType>
+      <measType p="77">pmCounterNumber168</measType>
+      <measType p="78">pmCounterNumber169</measType>
+      <measType p="79">pmCounterNumber170</measType>
+      <measType p="80">pmCounterNumber171</measType>
+      <measType p="81">pmCounterNumber172</measType>
+      <measType p="82">pmCounterNumber173</measType>
+      <measType p="83">pmCounterNumber174</measType>
+      <measType p="84">pmCounterNumber175</measType>
+      <measType p="85">pmCounterNumber176</measType>
+      <measType p="86">pmCounterNumber177</measType>
+      <measType p="87">pmCounterNumber178</measType>
+      <measType p="88">pmCounterNumber179</measType>
+      <measType p="89">pmCounterNumber180</measType>
+      <measType p="90">pmCounterNumber181</measType>
+      <measType p="91">pmCounterNumber182</measType>
+      <measType p="92">pmCounterNumber183</measType>
+      <measType p="93">pmCounterNumber184</measType>
+      <measType p="94">pmCounterNumber185</measType>
+      <measType p="95">pmCounterNumber185Qos</measType>
+      <measType p="96">pmCounterNumber185Samp</measType>
+      <measType p="97">pmCounterNumber185SampQos</measType>
+      <measType p="98">pmCounterNumber189</measType>
+      <measType p="99">pmCounterNumber189Qos</measType>
+      <measType p="100">pmCounterNumber191</measType>
+      <measType p="101">pmCounterNumber191Qos</measType>
+      <measType p="102">pmCounterNumber193</measType>
+      <measType p="103">pmCounterNumber193Samp</measType>
+      <measType p="104">pmCounterNumber195</measType>
+      <measType p="105">pmCounterNumber195Ext</measType>
+      <measType p="106">pmCounterNumber197</measType>
+      <measType p="107">pmCounterNumber198</measType>
+      <measType p="108">pmCounterNumber199</measType>
+      <measType p="109">pmCounterNumber200</measType>
+      <measType p="110">pmCounterNumber200BsrGrant</measType>
+      <measType p="111">pmCounterNumber200PreemptGrant</measType>
+      <measType p="112">pmCounterNumber200PucchSrGrant</measType>
+      <measType p="113">pmCounterNumber204</measType>
+      <measType p="114">pmCounterNumber205</measType>
+      <measType p="115">pmCounterNumber206</measType>
+      <measType p="116">pmCounterNumber207</measType>
+      <measType p="117">pmCounterNumber208</measType>
+      <measType p="118">pmCounterNumber209</measType>
+      <measType p="119">pmCounterNumber210</measType>
+      <measType p="120">pmCounterNumber211</measType>
+      <measType p="121">pmCounterNumber212</measType>
+      <measType p="122">pmCounterNumber213</measType>
+      <measType p="123">pmCounterNumber214</measType>
+      <measType p="124">pmCounterNumber215</measType>
+      <measType p="125">pmCounterNumber216</measType>
+      <measType p="126">pmCounterNumber216MacCe</measType>
+      <measType p="127">pmCounterNumber218</measType>
+      <measType p="128">pmCounterNumber219</measType>
+      <measType p="129">pmCounterNumber220</measType>
+      <measType p="130">pmCounterNumber221</measType>
+      <measType p="131">pmCounterNumber222</measType>
+      <measType p="132">pmCounterNumber223</measType>
+      <measType p="133">pmCounterNumber224</measType>
+      <measType p="134">pmCounterNumber225</measType>
+      <measType p="135">pmCounterNumber226</measType>
+      <measType p="136">pmCounterNumber227</measType>
+      <measType p="137">pmCounterNumber228</measType>
+      <measType p="138">pmCounterNumber228Forced</measType>
+      <measType p="139">pmCounterNumber230</measType>
+      <measType p="140">pmCounterNumber231</measType>
+      <measType p="141">pmCounterNumber232</measType>
+      <measType p="142">pmCounterNumber233</measType>
+      <measType p="143">pmCounterNumber234</measType>
+      <measType p="144">pmCounterNumber235</measType>
+      <measType p="145">pmCounterNumber236</measType>
+      <measType p="146">pmCounterNumber237</measType>
+      <measType p="147">pmCounterNumber238</measType>
+      <measType p="148">pmCounterNumber239</measType>
+      <measType p="149">pmCounterNumber240</measType>
+      <measType p="150">pmCounterNumber241</measType>
+      <measType p="151">pmCounterNumber242</measType>
+      <measType p="152">pmCounterNumber243</measType>
+      <measType p="153">pmCounterNumber244</measType>
+      <measType p="154">pmCounterNumber245</measType>
+      <measType p="155">pmCounterNumber246</measType>
+      <measType p="156">pmCounterNumber247</measType>
+      <measType p="157">pmCounterNumber248</measType>
+      <measType p="158">pmCounterNumber249</measType>
+      <measType p="159">pmCounterNumber250</measType>
+      <measType p="160">pmCounterNumber251</measType>
+      <measType p="161">pmCounterNumber252</measType>
+      <measType p="162">pmCounterNumber252Qos</measType>
+      <measType p="163">pmCounterNumber254</measType>
+      <measType p="164">pmCounterNumber254Qos</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=32">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="12">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="13">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="14">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="15">0</r>
+        <r p="16">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">2880</r>
+        <r p="80">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="81">0,0,0,0,0,0,0,0</r>
+        <r p="82">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="83">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="84">0,0,0,0,0,0,0,0</r>
+        <r p="85">0,0,0,0,0,0,0,0</r>
+        <r p="86">0,0,0,0,0,0,0,0</r>
+        <r p="87">0,0,0,0,0,0,0,0</r>
+        <r p="88">0,0,0,0,0,0,0,0</r>
+        <r p="89">0,0,0,0,0,0,0,0</r>
+        <r p="90">0,0,0,0,0,0,0,0</r>
+        <r p="91">0,0,0,0,0,0,0,0</r>
+        <r p="92">0,0,0,0,0,0,0,0</r>
+        <r p="93">0</r>
+        <r p="94">0</r>
+        <r p="95">0</r>
+        <r p="96">0</r>
+        <r p="97">0</r>
+        <r p="98">0</r>
+        <r p="99">0</r>
+        <r p="100">0</r>
+        <r p="101">0</r>
+        <r p="102">0</r>
+        <r p="103">0</r>
+        <r p="104">0</r>
+        <r p="105">0</r>
+        <r p="106">0</r>
+        <r p="107">0</r>
+        <r p="108">0</r>
+        <r p="109">0</r>
+        <r p="110">0</r>
+        <r p="111">0</r>
+        <r p="112">0</r>
+        <r p="113">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="114">0</r>
+        <r p="115">0</r>
+        <r p="116">0</r>
+        <r p="117">179</r>
+        <r p="118">0</r>
+        <r p="119">0,0,0,0</r>
+        <r p="120">0,0,0,0</r>
+        <r p="121">0</r>
+        <r p="122">0</r>
+        <r p="123">0</r>
+        <r p="124">0</r>
+        <r p="125">0</r>
+        <r p="126">0</r>
+        <r p="127">0</r>
+        <r p="128">0</r>
+        <r p="129">0</r>
+        <r p="130">0</r>
+        <r p="131">0</r>
+        <r p="132">0</r>
+        <r p="133">0</r>
+        <r p="134">900,0,0,0,0</r>
+        <r p="135">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="136">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="137">1440001</r>
+        <r p="138">0</r>
+        <r p="139">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="140">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="141">0</r>
+        <r p="142">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="143">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="144">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="145">0</r>
+        <r p="146">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="147">0,0,0,0,0,0,0,0,0,0,0,1800001,0,0,0,0,0,0,0,0,0</r>
+        <r p="148">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="149">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="150">0,0,0,0,0,0,0,0</r>
+        <r p="151">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="152">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="153">0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="154">0</r>
+        <r p="155">0</r>
+        <r p="156">0</r>
+        <r p="157">0</r>
+        <r p="158">0</r>
+        <r p="159">0</r>
+        <r p="160">0</r>
+        <r p="161">0</r>
+        <r p="162">0</r>
+        <r p="163">0</r>
+        <r p="164">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=31">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="12">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="13">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="14">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="15">0</r>
+        <r p="16">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">5376</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="81">0,0,0,0,0,0,0,0</r>
+        <r p="82">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="83">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="84">0,0,0,0,0,0,0,0</r>
+        <r p="85">0,0,0,0,0,0,0,0</r>
+        <r p="86">0,0,0,0,0,0,0,0</r>
+        <r p="87">0,0,0,0,0,0,0,0</r>
+        <r p="88">0,0,0,0,0,0,0,0</r>
+        <r p="89">0,0,0,0,0,0,0,0</r>
+        <r p="90">0,0,0,0,0,0,0,0</r>
+        <r p="91">0,0,0,0,0,0,0,0</r>
+        <r p="92">0,0,0,0,0,0,0,0</r>
+        <r p="93">0</r>
+        <r p="94">0</r>
+        <r p="95">0</r>
+        <r p="96">0</r>
+        <r p="97">0</r>
+        <r p="98">0</r>
+        <r p="99">0</r>
+        <r p="100">0</r>
+        <r p="101">0</r>
+        <r p="102">0</r>
+        <r p="103">0</r>
+        <r p="104">0</r>
+        <r p="105">0</r>
+        <r p="106">0</r>
+        <r p="107">0</r>
+        <r p="108">0</r>
+        <r p="109">0</r>
+        <r p="110">0</r>
+        <r p="111">0</r>
+        <r p="112">0</r>
+        <r p="113">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="114">0</r>
+        <r p="115">0</r>
+        <r p="116">0</r>
+        <r p="117">179</r>
+        <r p="118">0</r>
+        <r p="119">0,0,0,0</r>
+        <r p="120">0,0,0,0</r>
+        <r p="121">0</r>
+        <r p="122">0</r>
+        <r p="123">0</r>
+        <r p="124">0</r>
+        <r p="125">0</r>
+        <r p="126">0</r>
+        <r p="127">0</r>
+        <r p="128">0</r>
+        <r p="129">0</r>
+        <r p="130">0</r>
+        <r p="131">0</r>
+        <r p="132">0</r>
+        <r p="133">0</r>
+        <r p="134">900,0,0,0,0</r>
+        <r p="135">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="136">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="137">1440001</r>
+        <r p="138">0</r>
+        <r p="139">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="140">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="141">0</r>
+        <r p="142">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="143">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="144">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="145">0</r>
+        <r p="146">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="147">0,0,0,0,0,0,0,0,0,0,0,1800001,0,0,0,0,0,0,0,0,0</r>
+        <r p="148">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="149">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="150">0,0,0,0,0,0,0,0</r>
+        <r p="151">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="152">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="153">0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="154">0</r>
+        <r p="155">0</r>
+        <r p="156">0</r>
+        <r p="157">0</r>
+        <r p="158">0</r>
+        <r p="159">0</r>
+        <r p="160">0</r>
+        <r p="161">0</r>
+        <r p="162">0</r>
+        <r p="163">0</r>
+        <r p="164">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="12">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="13">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="14">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="15">0</r>
+        <r p="16">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="81">0,0,0,0,0,0,0,0</r>
+        <r p="82">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="83">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="84">0,0,0,0,0,0,0,0</r>
+        <r p="85">0,0,0,0,0,0,0,0</r>
+        <r p="86">0,0,0,0,0,0,0,0</r>
+        <r p="87">0,0,0,0,0,0,0,0</r>
+        <r p="88">0,0,0,0,0,0,0,0</r>
+        <r p="89">0,0,0,0,0,0,0,0</r>
+        <r p="90">0,0,0,0,0,0,0,0</r>
+        <r p="91">0,0,0,0,0,0,0,0</r>
+        <r p="92">0,0,0,0,0,0,0,0</r>
+        <r p="93">0</r>
+        <r p="94">0</r>
+        <r p="95">0</r>
+        <r p="96">0</r>
+        <r p="97">0</r>
+        <r p="98">0</r>
+        <r p="99">0</r>
+        <r p="100">0</r>
+        <r p="101">0</r>
+        <r p="102">0</r>
+        <r p="103">0</r>
+        <r p="104">0</r>
+        <r p="105">0</r>
+        <r p="106">0</r>
+        <r p="107">0</r>
+        <r p="108">0</r>
+        <r p="109">0</r>
+        <r p="110">0</r>
+        <r p="111">0</r>
+        <r p="112">0</r>
+        <r p="113">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="114">0</r>
+        <r p="115">0</r>
+        <r p="116">0</r>
+        <r p="117">0</r>
+        <r p="118">0</r>
+        <r p="119">0,0,0,0</r>
+        <r p="120">0,0,0,0</r>
+        <r p="121">0</r>
+        <r p="122">0</r>
+        <r p="123">0</r>
+        <r p="124">0</r>
+        <r p="125">0</r>
+        <r p="126">0</r>
+        <r p="127">0</r>
+        <r p="128">0</r>
+        <r p="129">0</r>
+        <r p="130">0</r>
+        <r p="131">0</r>
+        <r p="132">0</r>
+        <r p="133">0</r>
+        <r p="134">0,0,0,0,0</r>
+        <r p="135">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="136">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="137">0</r>
+        <r p="138">0</r>
+        <r p="139">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="140">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="141">0</r>
+        <r p="142">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="143">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="144">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="145">0</r>
+        <r p="146">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="147">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="148">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="149">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="150">0,0,0,0,0,0,0,0</r>
+        <r p="151">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="152">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="153">0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="154">0</r>
+        <r p="155">0</r>
+        <r p="156">0</r>
+        <r p="157">0</r>
+        <r p="158">0</r>
+        <r p="159">0</r>
+        <r p="160">0</r>
+        <r p="161">0</r>
+        <r p="162">0</r>
+        <r p="163">0</r>
+        <r p="164">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="12">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="13">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="14">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="15">0</r>
+        <r p="16">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="81">0,0,0,0,0,0,0,0</r>
+        <r p="82">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="83">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="84">0,0,0,0,0,0,0,0</r>
+        <r p="85">0,0,0,0,0,0,0,0</r>
+        <r p="86">0,0,0,0,0,0,0,0</r>
+        <r p="87">0,0,0,0,0,0,0,0</r>
+        <r p="88">0,0,0,0,0,0,0,0</r>
+        <r p="89">0,0,0,0,0,0,0,0</r>
+        <r p="90">0,0,0,0,0,0,0,0</r>
+        <r p="91">0,0,0,0,0,0,0,0</r>
+        <r p="92">0,0,0,0,0,0,0,0</r>
+        <r p="93">0</r>
+        <r p="94">0</r>
+        <r p="95">0</r>
+        <r p="96">0</r>
+        <r p="97">0</r>
+        <r p="98">0</r>
+        <r p="99">0</r>
+        <r p="100">0</r>
+        <r p="101">0</r>
+        <r p="102">0</r>
+        <r p="103">0</r>
+        <r p="104">0</r>
+        <r p="105">0</r>
+        <r p="106">0</r>
+        <r p="107">0</r>
+        <r p="108">0</r>
+        <r p="109">0</r>
+        <r p="110">0</r>
+        <r p="111">0</r>
+        <r p="112">0</r>
+        <r p="113">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="114">0</r>
+        <r p="115">0</r>
+        <r p="116">0</r>
+        <r p="117">0</r>
+        <r p="118">0</r>
+        <r p="119">0,0,0,0</r>
+        <r p="120">0,0,0,0</r>
+        <r p="121">0</r>
+        <r p="122">0</r>
+        <r p="123">0</r>
+        <r p="124">0</r>
+        <r p="125">0</r>
+        <r p="126">0</r>
+        <r p="127">0</r>
+        <r p="128">0</r>
+        <r p="129">0</r>
+        <r p="130">0</r>
+        <r p="131">0</r>
+        <r p="132">0</r>
+        <r p="133">0</r>
+        <r p="134">0,0,0,0,0</r>
+        <r p="135">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="136">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="137">0</r>
+        <r p="138">0</r>
+        <r p="139">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="140">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="141">0</r>
+        <r p="142">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="143">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="144">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="145">0</r>
+        <r p="146">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="147">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="148">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="149">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="150">0,0,0,0,0,0,0,0</r>
+        <r p="151">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="152">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="153">0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="154">0</r>
+        <r p="155">0</r>
+        <r p="156">0</r>
+        <r p="157">0</r>
+        <r p="158">0</r>
+        <r p="159">0</r>
+        <r p="160">0</r>
+        <r p="161">0</r>
+        <r p="162">0</r>
+        <r p="163">0</r>
+        <r p="164">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=NRSectorCarrier_GNBDU">
+      <job jobId="nr_all"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber256</measType>
+      <measType p="2">pmCounterNumber257</measType>
+      <measType p="3">pmCounterNumber258</measType>
+      <measType p="4">pmCounterNumber259</measType>
+      <measType p="5">pmCounterNumber260</measType>
+      <measType p="6">pmCounterNumber261</measType>
+      <measType p="7">pmCounterNumber262</measType>
+      <measType p="8">pmCounterNumber263</measType>
+      <measType p="9">pmCounterNumber263On</measType>
+      <measType p="10">pmCounterNumber265</measType>
+      <measType p="11">pmCounterNumber266</measType>
+      <measType p="12">pmCounterNumber267</measType>
+      <measType p="13">pmCounterNumber267Auto</measType>
+      <measType p="14">pmCounterNumber267AutoCbrs</measType>
+      <measType p="15">pmCounterNumber267Man</measType>
+      <measType p="16">pmCounterNumber267ManCbrs</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRSectorCarrier=32">
+        <r p="1">0,0,0,0,0,0,0,0,0,15,0,0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="3">0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">10000</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRSectorCarrier=31">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,15,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="3">0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">15000</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRSectorCarrier=2">
+        <r p="1">15,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="3">0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRSectorCarrier=1">
+        <r p="1">15,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="3">0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=EUtranCellFDD">
+      <job jobId="stat"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber272</measType>
+      <measType p="2">pmCounterNumber273</measType>
+      <measType p="3">pmCounterNumber274</measType>
+      <measType p="4">pmCounterNumber275</measType>
+      <measType p="5">pmCounterNumber276</measType>
+      <measType p="6">pmCounterNumber277</measType>
+      <measType p="7">pmCounterNumber278</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=2">
+        <r p="1">0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="3">0,0,0,0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=1">
+        <r p="1">0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="3">0,0,0,0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=NRCellDU_GNBDU">
+      <job jobId="stat"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber279</measType>
+      <measType p="2">pmCounterNumber280</measType>
+      <measType p="3">pmCounterNumber281</measType>
+      <measType p="4">pmCounterNumber282</measType>
+      <measType p="5">pmCounterNumber283</measType>
+      <measType p="6">pmCounterNumber284</measType>
+      <measType p="7">pmCounterNumber285</measType>
+      <measType p="8">pmCounterNumber286</measType>
+      <measType p="9">pmCounterNumber287</measType>
+      <measType p="10">pmCounterNumber288</measType>
+      <measType p="11">pmCounterNumber289</measType>
+      <measType p="12">pmCounterNumber290</measType>
+      <measType p="13">pmCounterNumber291</measType>
+      <measType p="14">pmCounterNumber292</measType>
+      <measType p="15">pmCounterNumber293</measType>
+      <measType p="16">pmCounterNumber294</measType>
+      <measType p="17">pmCounterNumber295</measType>
+      <measType p="18">pmCounterNumber296</measType>
+      <measType p="19">pmCounterNumber274</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=32">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0</r>
+        <r p="3">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0,0,0,0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=31">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0</r>
+        <r p="3">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0,0,0,0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=2">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0</r>
+        <r p="3">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0,0,0,0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=1">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0</r>
+        <r p="3">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0,0,0,0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=EUtranCellFDD">
+      <job jobId="inter"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber297</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=2">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=1">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=NRCellDU_GNBDU">
+      <job jobId="inter"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber297F0Distr</measType>
+      <measType p="2">pmCounterNumber297F2Distr</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=32">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=31">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=2">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=1">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=GNBCUCPFunction_GNBCUCP">
+      <job jobId="PREDEF_5GRC"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber300</measType>
+      <measType p="2">pmCounterNumber301</measType>
+      <measType p="3">pmCounterNumber302</measType>
+      <measType p="4">pmCounterNumber303</measType>
+      <measType p="5">pmCounterNumber304</measType>
+      <measType p="6">pmCounterNumber305</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">180</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=NRCellCU_GNBCUCP">
+      <job jobId="PREDEF_5GRC"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber306</measType>
+      <measType p="2">pmCounterNumber307</measType>
+      <measType p="3">pmCounterNumber308</measType>
+      <measType p="4">pmCounterNumber309</measType>
+      <measType p="5">pmCounterNumber310</measType>
+      <measType p="6">pmCounterNumber311</measType>
+      <measType p="7">pmCounterNumber312</measType>
+      <measType p="8">pmCounterNumber313</measType>
+      <measType p="9">pmCounterNumber314</measType>
+      <measType p="10">pmCounterNumber315</measType>
+      <measType p="11">pmCounterNumber316</measType>
+      <measType p="12">pmCounterNumber317</measType>
+      <measType p="13">pmCounterNumber318</measType>
+      <measType p="14">pmCounterNumber319</measType>
+      <measType p="15">pmCounterNumber320</measType>
+      <measType p="16">pmCounterNumber321</measType>
+      <measType p="17">pmCounterNumber322</measType>
+      <measType p="18">pmCounterNumber323</measType>
+      <measType p="19">pmCounterNumber324</measType>
+      <measType p="20">pmCounterNumber324Act</measType>
+      <measType p="21">pmCounterNumber326</measType>
+      <measType p="22">pmCounterNumber326Act</measType>
+      <measType p="23">pmCounterNumber328</measType>
+      <measType p="24">pmCounterNumber329</measType>
+      <measType p="25">pmCounterNumber330</measType>
+      <measType p="26">pmCounterNumber331</measType>
+      <measType p="27">pmCounterNumber332</measType>
+      <measType p="28">pmCounterNumber333</measType>
+      <measType p="29">pmCounterNumber334</measType>
+      <measType p="30">pmCounterNumber335</measType>
+      <measType p="31">pmCounterNumber336</measType>
+      <measType p="32">pmCounterNumber337</measType>
+      <measType p="33">pmCounterNumber338</measType>
+      <measType p="34">pmCounterNumber339</measType>
+      <measType p="35">pmCounterNumber340</measType>
+      <measType p="36">pmCounterNumber341</measType>
+      <measType p="37">pmCounterNumber342</measType>
+      <measType p="38">pmCounterNumber343</measType>
+      <measType p="39">pmCounterNumber343Mos</measType>
+      <measType p="40">pmCounterNumber345</measType>
+      <measType p="41">pmCounterNumber345Mos</measType>
+      <measType p="42">pmCounterNumber347</measType>
+      <measType p="43">pmCounterNumber348</measType>
+      <measType p="44">pmCounterNumber349</measType>
+      <measType p="45">pmCounterNumber350</measType>
+      <measType p="46">pmCounterNumber350Mos</measType>
+      <measType p="47">pmCounterNumber350Reatt</measType>
+      <measType p="48">pmCounterNumber350ReattMos</measType>
+      <measType p="49">pmCounterNumber354</measType>
+      <measType p="50">pmCounterNumber354Mos</measType>
+      <measType p="51">pmCounterNumber301</measType>
+      <measType p="52">pmCounterNumber302</measType>
+      <measType p="53">pmCounterNumber303</measType>
+      <measType p="54">pmCounterNumber304</measType>
+      <measType p="55">pmCounterNumber305</measType>
+      <measType p="56">pmCounterNumber356</measType>
+      <measType p="57">pmCounterNumber357</measType>
+      <measType p="58">pmCounterNumber358</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=32">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">180</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">180</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">180</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=31">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">180</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">180</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">180</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">180</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">180</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">180</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">180</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">180</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">180</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=GNBDUFunction_GNBDU">
+      <job jobId="PREDEF_5GRP"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber359</measType>
+      <measType p="2">pmCounterNumber360</measType>
+      <measType p="3">pmCounterNumber361</measType>
+      <measType p="4">pmCounterNumber362</measType>
+      <measType p="5">pmCounterNumber363</measType>
+      <measType p="6">pmCounterNumber364</measType>
+      <measType p="7">pmCounterNumber365</measType>
+      <measType p="8">pmCounterNumber366</measType>
+      <measType p="9">pmCounterNumber367</measType>
+      <measType p="10">pmCounterNumber368</measType>
+      <measType p="11">pmCounterNumber369</measType>
+      <measType p="12">pmCounterNumber370</measType>
+      <measType p="13">pmCounterNumber371</measType>
+      <measType p="14">pmCounterNumber372</measType>
+      <measType p="15">pmCounterNumber373</measType>
+      <measType p="16">pmCounterNumber374</measType>
+      <measType p="17">pmCounterNumber375</measType>
+      <measType p="18">pmCounterNumber376</measType>
+      <measType p="19">pmCounterNumber377</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">32</r>
+        <r p="6">16</r>
+        <r p="7">0</r>
+        <r p="8">16</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=NRCellDU_GNBDU">
+      <job jobId="PREDEF_5GRP"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber378</measType>
+      <measType p="2">pmCounterNumber379</measType>
+      <measType p="3">pmCounterNumber380</measType>
+      <measType p="4">pmCounterNumber381</measType>
+      <measType p="5">pmCounterNumber382</measType>
+      <measType p="6">pmCounterNumber383</measType>
+      <measType p="7">pmCounterNumber384</measType>
+      <measType p="8">pmCounterNumber385</measType>
+      <measType p="9">pmCounterNumber386</measType>
+      <measType p="10">pmCounterNumber306</measType>
+      <measType p="11">pmCounterNumber307</measType>
+      <measType p="12">pmCounterNumber307ual</measType>
+      <measType p="13">pmCounterNumber388</measType>
+      <measType p="14">pmCounterNumber389</measType>
+      <measType p="15">pmCounterNumber390</measType>
+      <measType p="16">pmCounterNumber391</measType>
+      <measType p="17">pmCounterNumber392</measType>
+      <measType p="18">pmCounterNumber393</measType>
+      <measType p="19">pmCounterNumber394</measType>
+      <measType p="20">pmCounterNumber395</measType>
+      <measType p="21">pmCounterNumber396</measType>
+      <measType p="22">pmCounterNumber397</measType>
+      <measType p="23">pmCounterNumber398</measType>
+      <measType p="24">pmCounterNumber399</measType>
+      <measType p="25">pmCounterNumber399Broadcasting</measType>
+      <measType p="26">pmCounterNumber401</measType>
+      <measType p="27">pmCounterNumber402</measType>
+      <measType p="28">pmCounterNumber403</measType>
+      <measType p="29">pmCounterNumber404</measType>
+      <measType p="30">pmCounterNumber405</measType>
+      <measType p="31">pmCounterNumber406</measType>
+      <measType p="32">pmCounterNumber407</measType>
+      <measType p="33">pmCounterNumber407Qos</measType>
+      <measType p="34">pmCounterNumber409</measType>
+      <measType p="35">pmCounterNumber410</measType>
+      <measType p="36">pmCounterNumber410Drb</measType>
+      <measType p="37">pmCounterNumber410DrbQos</measType>
+      <measType p="38">pmCounterNumber413</measType>
+      <measType p="39">pmCounterNumber413ResUe</measType>
+      <measType p="40">pmCounterNumber415</measType>
+      <measType p="41">pmCounterNumber416</measType>
+      <measType p="42">pmCounterNumber417</measType>
+      <measType p="43">pmCounterNumber418</measType>
+      <measType p="44">pmCounterNumber419</measType>
+      <measType p="45">pmCounterNumber420</measType>
+      <measType p="46">pmCounterNumber421</measType>
+      <measType p="47">pmCounterNumber422</measType>
+      <measType p="48">pmCounterNumber423</measType>
+      <measType p="49">pmCounterNumber424</measType>
+      <measType p="50">pmCounterNumber425</measType>
+      <measType p="51">pmCounterNumber426</measType>
+      <measType p="52">pmCounterNumber427</measType>
+      <measType p="53">pmCounterNumber428</measType>
+      <measType p="54">pmCounterNumber429</measType>
+      <measType p="55">pmCounterNumber430</measType>
+      <measType p="56">pmCounterNumber431</measType>
+      <measType p="57">pmCounterNumber432</measType>
+      <measType p="58">pmCounterNumber433</measType>
+      <measType p="59">pmCounterNumber434</measType>
+      <measType p="60">pmCounterNumber435</measType>
+      <measType p="61">pmCounterNumber436</measType>
+      <measType p="62">pmCounterNumber437</measType>
+      <measType p="63">pmCounterNumber438</measType>
+      <measType p="64">pmCounterNumber439</measType>
+      <measType p="65">pmCounterNumber440</measType>
+      <measType p="66">pmCounterNumber441</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=32">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">1800000</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">1800001</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">3032642268</r>
+        <r p="18">20160056</r>
+        <r p="19">15120000</r>
+        <r p="20">816482268</r>
+        <r p="21">0</r>
+        <r p="22">2880</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">3780540</r>
+        <r p="26">2520</r>
+        <r p="27">0</r>
+        <r p="28">900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="29">0</r>
+        <r p="30">900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">5760004</r>
+        <r p="41">0</r>
+        <r p="42">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="43">1440004</r>
+        <r p="44">0</r>
+        <r p="45">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="46">2,1,1,2,2,3,2,1,1,0,0,0</r>
+        <r p="47">15</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">60</r>
+        <r p="54">15</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">179</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=31">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">1800000</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">1800001</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">5110563822</r>
+        <r p="18">20160056</r>
+        <r p="19">15120000</r>
+        <r p="20">1375923822</r>
+        <r p="21">0</r>
+        <r p="22">5376</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">3780504</r>
+        <r p="26">2352</r>
+        <r p="27">0</r>
+        <r p="28">900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="29">0</r>
+        <r p="30">900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">5760004</r>
+        <r p="41">0</r>
+        <r p="42">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="43">1440004</r>
+        <r p="44">0</r>
+        <r p="45">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="46">3,1,2,1,2,0,3,2,0,0,0,0</r>
+        <r p="47">14</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">56</r>
+        <r p="54">14</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">179</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">900</r>
+        <r p="12">900</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="29">0</r>
+        <r p="30">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="46">0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">900</r>
+        <r p="12">900</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="29">0</r>
+        <r p="30">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="46">0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=PpControlLink_GNBCUUP">
+      <job jobId="PREDEF_5GPP"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber310</measType>
+      <measType p="2">pmCounterNumber311</measType>
+      <measType p="3">pmCounterNumber312</measType>
+      <measType p="4">pmCounterNumber313</measType>
+      <measType p="5">pmCounterNumber314</measType>
+      <measType p="6">pmCounterNumber347</measType>
+      <measType p="7">pmCounterNumber348</measType>
+      <measType p="8">pmCounterNumber349</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUUPFunction=1,PpControlTermination=1,PpControlLink=internal">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">900</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">900</r>
+        <r p="8">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=EUtranCellFDD">
+      <job jobId="ltearq"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber442</measType>
+      <measType p="2">pmCounterNumber443</measType>
+      <measType p="3">pmCounterNumber444</measType>
+      <measType p="4">pmCounterNumber445</measType>
+      <measType p="5">pmCounterNumber446</measType>
+      <measType p="6">pmCounterNumber447</measType>
+      <measType p="7">pmCounterNumber448</measType>
+      <measType p="8">pmCounterNumber448PCell</measType>
+      <measType p="9">pmCounterNumber448SCell</measType>
+      <measType p="10">pmCounterNumber448Volte</measType>
+      <measType p="11">pmCounterNumber452</measType>
+      <measType p="12">pmCounterNumber453</measType>
+      <measType p="13">pmCounterNumber454</measType>
+      <measType p="14">pmCounterNumber455</measType>
+      <measType p="15">pmCounterNumber114</measType>
+      <measType p="16">pmCounterNumber456</measType>
+      <measType p="17">pmCounterNumber457</measType>
+      <measType p="18">pmCounterNumber458</measType>
+      <measType p="19">pmCounterNumber122</measType>
+      <measType p="20">pmCounterNumber459</measType>
+      <measType p="21">pmCounterNumber460</measType>
+      <measType p="22">pmCounterNumber461</measType>
+      <measType p="23">pmCounterNumber462</measType>
+      <measType p="24">pmCounterNumber131</measType>
+      <measType p="25">pmCounterNumber463</measType>
+      <measType p="26">pmCounterNumber464</measType>
+      <measType p="27">pmCounterNumber143</measType>
+      <measType p="28">pmCounterNumber145</measType>
+      <measType p="29">pmCounterNumber147</measType>
+      <measType p="30">pmCounterNumber14916qam</measType>
+      <measType p="31">pmCounterNumber149256Qam</measType>
+      <measType p="32">pmCounterNumber14964Qam</measType>
+      <measType p="33">pmCounterNumber149Iua16qam</measType>
+      <measType p="34">pmCounterNumber149IuaQpsk</measType>
+      <measType p="35">pmCounterNumber149Qpsk</measType>
+      <measType p="36">pmCounterNumber471</measType>
+      <measType p="37">pmCounterNumber472</measType>
+      <measType p="38">pmCounterNumber473</measType>
+      <measType p="39">pmCounterNumber474</measType>
+      <measType p="40">pmCounterNumber475</measType>
+      <measType p="41">pmCounterNumber476</measType>
+      <measType p="42">pmCounterNumber477</measType>
+      <measType p="43">pmCounterNumber478</measType>
+      <measType p="44">pmCounterNumber248</measType>
+      <measType p="45">pmCounterNumber249</measType>
+      <measType p="46">pmCounterNumber479</measType>
+      <measType p="47">pmCounterNumber250</measType>
+      <measType p="48">pmCounterNumber251</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=FieldReplaceableUnit">
+      <job jobId="PREDEF_Nc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber480</measType>
+      <measType p="2">pmCounterNumber481</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S3-1">
+        <r p="1">0</r>
+        <r p="2">4,4,4</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S2-1">
+        <r p="1">0</r>
+        <r p="2">4,4,4</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S1-1">
+        <r p="1">0</r>
+        <r p="2">4,4,4</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608">
+        <r p="1">0</r>
+        <r p="2"> , , </r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1">
+        <r p="1"> </r>
+        <r p="2">4,4,4</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=RiEthernetPort">
+      <job jobId="PREDEF_Nc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber482</measType>
+      <measType p="2">pmCounterNumber483</measType>
+      <measType p="3">pmCounterNumber484</measType>
+      <measType p="4">pmCounterNumber485</measType>
+      <measType p="5">pmCounterNumber486</measType>
+      <measType p="6">pmCounterNumber487</measType>
+      <measType p="7">pmCounterNumber488</measType>
+      <measType p="8">pmCounterNumber489</measType>
+      <measType p="9">pmCounterNumber490</measType>
+      <measType p="10">pmCounterNumber491</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,RiPort=P,RiEthernetPort=1">
+        <r p="1">0</r>
+        <r p="2">51885</r>
+        <r p="3">4628315</r>
+        <r p="4">9190</r>
+        <r p="5">0</r>
+        <r p="6">15493</r>
+        <r p="7">1956503</r>
+        <r p="8">7326</r>
+        <r p="9">0</r>
+        <r p="10"> </r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,RiPort=N,RiEthernetPort=1">
+        <r p="1">0</r>
+        <r p="2">37309</r>
+        <r p="3">2868954</r>
+        <r p="4">4551</r>
+        <r p="5">0</r>
+        <r p="6">915</r>
+        <r p="7">380361</r>
+        <r p="8">4549</r>
+        <r p="9">0</r>
+        <r p="10"> </r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,RiPort=B,RiEthernetPort=1">
+        <r p="1">0</r>
+        <r p="2">15490</r>
+        <r p="3">1512626</r>
+        <r p="4">7326</r>
+        <r p="5">0</r>
+        <r p="6">51883</r>
+        <r p="7">3492085</r>
+        <r p="8">9190</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,RiPort=A,RiEthernetPort=1">
+        <r p="1">0</r>
+        <r p="2">916</r>
+        <r p="3">260228</r>
+        <r p="4">4549</r>
+        <r p="5">0</r>
+        <r p="6">37309</r>
+        <r p="7">2097258</r>
+        <r p="8">4551</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=RiLink">
+      <job jobId="PREDEF_Nc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber492</measType>
+      <measType p="2">pmCounterNumber493</measType>
+      <measType p="3">pmCounterNumber494</measType>
+      <measType p="4">pmCounterNumber495</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,RiLink=S3-1">
+        <r p="1">1077</r>
+        <r p="2">1076</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,RiLink=S2-1">
+        <r p="1">450</r>
+        <r p="2">450</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,RiLink=S1-1">
+        <r p="1">427</r>
+        <r p="2">427</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,RiLink=R608-2">
+        <r p="1">0</r>
+        <r p="2">2147483647</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,RiLink=R608-1">
+        <r p="1">0</r>
+        <r p="2">2147483647</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=RiPort">
+      <job jobId="PREDEF_Nc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber496</measType>
+      <measType p="2">pmCounterNumber497</measType>
+      <measType p="3">pmCounterNumber498</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S3-1,RiPort=DATA_2">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S3-1,RiPort=DATA_1">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S2-1,RiPort=DATA_2">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S2-1,RiPort=DATA_1">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S1-1,RiPort=DATA_2">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S1-1,RiPort=DATA_1">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,RiPort=P">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,RiPort=N">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,RiPort=B">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,RiPort=A">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,RiPort=K">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,RiPort=C">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,RiPort=B">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,RiPort=A">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=SfpChannel">
+      <job jobId="PREDEF_Nc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber499</measType>
+      <measType p="2">pmCounterNumber500</measType>
+      <measType p="3">pmCounterNumber501</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,SfpModule=P,SfpChannel=1">
+        <r p="1">2951</r>
+        <r p="2">3600</r>
+        <r p="3">2922</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,SfpModule=N,SfpChannel=1">
+        <r p="1">3018</r>
+        <r p="2">4200</r>
+        <r p="3">2953</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,SfpModule=K,SfpChannel=1">
+        <r p="1">2809</r>
+        <r p="2">3500</r>
+        <r p="3">2812</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S3-1,SfpModule=DATA_2,SfpChannel=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S2-1,SfpModule=DATA_2,SfpChannel=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S1-1,SfpModule=DATA_2,SfpChannel=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S3-1,SfpModule=DATA_1,SfpChannel=1">
+        <r p="1">2810</r>
+        <r p="2">3100</r>
+        <r p="3">2830</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S2-1,SfpModule=DATA_1,SfpChannel=1">
+        <r p="1">2717</r>
+        <r p="2">3600</r>
+        <r p="3">2775</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S1-1,SfpModule=DATA_1,SfpChannel=1">
+        <r p="1">2700</r>
+        <r p="2">3900</r>
+        <r p="3">2773</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,SfpModule=C,SfpChannel=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,SfpModule=B,SfpChannel=1">
+        <r p="1">2744</r>
+        <r p="2">3200</r>
+        <r p="3">2775</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,SfpModule=B,SfpChannel=1">
+        <r p="1">2863</r>
+        <r p="2">3800</r>
+        <r p="3">2898</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,SfpModule=A,SfpChannel=1">
+        <r p="1">2684</r>
+        <r p="2">3900</r>
+        <r p="3">2737</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,SfpModule=A,SfpChannel=1">
+        <r p="1">2892</r>
+        <r p="2">4400</r>
+        <r p="3">2893</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=SfpModule">
+      <job jobId="PREDEF_Nc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber502</measType>
+      <measType p="2">pmCounterNumber503</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S3-1,SfpModule=DATA_2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S3-1,SfpModule=DATA_1">
+        <r p="1">1310</r>
+        <r p="2">32552</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S2-1,SfpModule=DATA_2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S2-1,SfpModule=DATA_1">
+        <r p="1">1430</r>
+        <r p="2">32904</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S1-1,SfpModule=DATA_2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S1-1,SfpModule=DATA_1">
+        <r p="1">1410</r>
+        <r p="2">33141</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,SfpModule=P">
+        <r p="1">1388</r>
+        <r p="2">32558</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,SfpModule=N">
+        <r p="1">1384</r>
+        <r p="2">32505</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,SfpModule=B">
+        <r p="1">1297</r>
+        <r p="2">32999</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,SfpModule=A">
+        <r p="1">1297</r>
+        <r p="2">33041</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,SfpModule=K">
+        <r p="1">1474</r>
+        <r p="2">32588</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,SfpModule=C">
+        <r p="1">0</r>
+        <r p="2">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,SfpModule=B">
+        <r p="1">1463</r>
+        <r p="2">32493</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,SfpModule=A">
+        <r p="1">1464</r>
+        <r p="2">32534</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=EthernetPort">
+      <job jobId="PREDEF_Rtn"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber482</measType>
+      <measType p="2">pmCounterNumber483</measType>
+      <measType p="3">pmCounterNumber484</measType>
+      <measType p="4">pmCounterNumber485</measType>
+      <measType p="5">pmCounterNumber486</measType>
+      <measType p="6">pmCounterNumber487</measType>
+      <measType p="7">pmCounterNumber488</measType>
+      <measType p="8">pmCounterNumber489</measType>
+      <measType p="9">pmCounterNumber504</measType>
+      <measType p="10">pmCounterNumber490</measType>
+      <measType p="11">pmCounterNumber505</measType>
+      <measType p="12">pmCounterNumber506</measType>
+      <measType p="13">pmCounterNumber507</measType>
+      <measType p="14">pmCounterNumber491</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,EthernetPort=TN_IDL_B_1">
+        <r p="1">22345</r>
+        <r p="2">1057</r>
+        <r p="3">2921772</r>
+        <r p="4">4472</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">9147991</r>
+        <r p="8">17099</r>
+        <r p="9">0</r>
+        <r p="10">7627</r>
+        <r p="11">3582</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=InterfaceIPv4">
+      <job jobId="PREDEF_Rtn"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber508</measType>
+      <measType p="2">pmCounterNumber509</measType>
+      <measType p="3">pmCounterNumber510</measType>
+      <measType p="4">pmCounterNumber511</measType>
+      <measType p="5">pmCounterNumber512</measType>
+      <measType p="6">pmCounterNumber513</measType>
+      <measType p="7">pmCounterNumber514</measType>
+      <measType p="8">pmCounterNumber515</measType>
+      <measType p="9">pmCounterNumber516</measType>
+      <measType p="10">pmCounterNumber517</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,Router=vr_OAM,InterfaceIPv4=1">
+        <r p="1">314834</r>
+        <r p="2">4561</r>
+        <r p="3">8697703</r>
+        <r p="4">16811</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,Router=vr_NR,InterfaceIPv4=1">
+        <r p="1">19900</r>
+        <r p="2">388</r>
+        <r p="3">1260</r>
+        <r p="4">30</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,Router=vr_LTE,InterfaceIPv4=1">
+        <r p="1">26656</r>
+        <r p="2">574</r>
+        <r p="3">14580</r>
+        <r p="4">243</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,Router=Node_Internal_F1,InterfaceIPv4=NRDU">
+        <r p="1"> </r>
+        <r p="2"> </r>
+        <r p="3"> </r>
+        <r p="4"> </r>
+        <r p="5"> </r>
+        <r p="6"> </r>
+        <r p="7"> </r>
+        <r p="8"> </r>
+        <r p="9"> </r>
+        <r p="10"> </r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,Router=Node_Internal_F1,InterfaceIPv4=NRCUCP">
+        <r p="1"> </r>
+        <r p="2"> </r>
+        <r p="3"> </r>
+        <r p="4"> </r>
+        <r p="5"> </r>
+        <r p="6"> </r>
+        <r p="7"> </r>
+        <r p="8"> </r>
+        <r p="9"> </r>
+        <r p="10"> </r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=SctpAssociation">
+      <job jobId="PREDEF_Rtn"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber518</measType>
+      <measType p="2">pmCounterNumber519</measType>
+      <measType p="3">pmCounterNumber520</measType>
+      <measType p="4">pmCounterNumber521</measType>
+      <measType p="5">pmCounterNumber522</measType>
+      <measType p="6">pmCounterNumber523</measType>
+      <measType p="7">pmCounterNumber524</measType>
+      <measType p="8">pmCounterNumber525</measType>
+      <measType p="9">pmCounterNumber526</measType>
+      <measType p="10">pmCounterNumber527</measType>
+      <measType p="11">pmCounterNumber528</measType>
+      <measType p="12">pmCounterNumber529</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,SctpEndpoint=F1_NRDU,SctpAssociation=38472-10.0.0.1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">833</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">87820</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">87820</r>
+        <r p="12">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,SctpEndpoint=F1_NRCUCP,SctpAssociation=38472-10.0.0.2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">833</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">87820</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">87820</r>
+        <r p="12">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=VlanPort">
+      <job jobId="PREDEF_Rtn"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber482</measType>
+      <measType p="2">pmCounterNumber483</measType>
+      <measType p="3">pmCounterNumber484</measType>
+      <measType p="4">pmCounterNumber485</measType>
+      <measType p="5">pmCounterNumber486</measType>
+      <measType p="6">pmCounterNumber487</measType>
+      <measType p="7">pmCounterNumber488</measType>
+      <measType p="8">pmCounterNumber489</measType>
+      <measType p="9">pmCounterNumber507</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,VlanPort=vr_OAM.IF1">
+        <r p="1">1996</r>
+        <r p="2">341</r>
+        <r p="3">657544</r>
+        <r p="4">4205</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">9067777</r>
+        <r p="8">16814</r>
+        <r p="9">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,VlanPort=vr_NR.IF1">
+        <r p="1">8457</r>
+        <r p="2">343</r>
+        <r p="3">711892</r>
+        <r p="4">33</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">2368</r>
+        <r p="8">37</r>
+        <r p="9">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,VlanPort=vr_LTE.IF1">
+        <r p="1">11894</r>
+        <r p="2">343</r>
+        <r p="3">1006906</r>
+        <r p="4">234</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">20246</r>
+        <r p="8">248</r>
+        <r p="9">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=ConsumedEnergyMeasurement">
+      <job jobId="PREDEF_Apc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber530</measType>
+      <measType p="2">pmCounterNumber530Accumulated</measType>
+      <measType p="3">pmCounterNumber532</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,NodeSupport=1,ConsumedEnergyMeasurement=1">
+        <r p="1"> </r>
+        <r p="2"> </r>
+        <r p="3"> , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , </r>
+        <suspect>true</suspect>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=EnergyMeter">
+      <job jobId="PREDEF_Apc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber530</measType>
+      <measType p="2">pmCounterNumber530Accumulated</measType>
+      <measType p="3">pmCounterNumber532</measType>
+      <measType p="4">pmCounterNumber533</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,EnergyMeter=1">
+        <r p="1">83</r>
+        <r p="2">34846</r>
+        <r p="3">333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,334,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333</r>
+        <r p="4">52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S1-1,EnergyMeter=1">
+        <r p="1">12</r>
+        <r p="2">4947</r>
+        <r p="3">47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47</r>
+        <r p="4">53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S2-1,EnergyMeter=1">
+        <r p="1">13</r>
+        <r p="2">5394</r>
+        <r p="3">52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,51,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,51,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52</r>
+        <r p="4">54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S3-1,EnergyMeter=1">
+        <r p="1">22</r>
+        <r p="2">9338</r>
+        <r p="3">89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89</r>
+        <r p="4">53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,52,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,52,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,EnergyMeter=1">
+        <r p="1"> </r>
+        <r p="2"> </r>
+        <r p="3"> , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , </r>
+        <r p="4"> , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , </r>
+        <suspect>true</suspect>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=SupportUnit">
+      <job jobId="PREDEF_Apc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber534</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,SupportUnit=2">
+        <r p="1">18,18,18</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,SupportUnit=1">
+        <r p="1">30,30,30</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=BbProcessingResource">
+      <job jobId="PREDEF_Lrat"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber535</measType>
+      <measType p="2">pmCounterNumber367</measType>
+      <measType p="3">pmCounterNumber368</measType>
+      <measType p="4">pmCounterNumber369</measType>
+      <measType p="5">pmCounterNumber370</measType>
+      <measType p="6">pmCounterNumber536</measType>
+      <measType p="7">pmCounterNumber537</measType>
+      <measType p="8">pmCounterNumber538</measType>
+      <measType p="9">pmCounterNumber539</measType>
+      <measType p="10">pmCounterNumber540</measType>
+      <measType p="11">pmCounterNumber541</measType>
+      <measType p="12">pmCounterNumber542</measType>
+      <measType p="13">pmCounterNumber543</measType>
+      <measType p="14">pmCounterNumber374</measType>
+      <measType p="15">pmCounterNumber375</measType>
+      <measType p="16">pmCounterNumber376</measType>
+      <measType p="17">pmCounterNumber377</measType>
+      <measType p="18">pmCounterNumber544</measType>
+      <measType p="19">pmCounterNumber545</measType>
+      <measType p="20">pmCounterNumber546</measType>
+      <measType p="21">pmCounterNumber547</measType>
+      <measType p="22">pmCounterNumber548</measType>
+      <measType p="23">pmCounterNumber549</measType>
+      <measType p="24">pmCounterNumber550</measType>
+      <measType p="25">pmCounterNumber551</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,BbProcessingResource=1">
+        <r p="1">0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="20">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=ENodeBFunction">
+      <job jobId="PREDEF_Lrat"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber359Aas</measType>
+      <measType p="2">pmCounterNumber360Aas</measType>
+      <measType p="3">pmCounterNumber554</measType>
+      <measType p="4">pmCounterNumber555</measType>
+      <measType p="5">pmCounterNumber365Actual</measType>
+      <measType p="6">pmCounterNumber366Actual</measType>
+      <measType p="7">pmCounterNumber558</measType>
+      <measType p="8">pmCounterNumber559</measType>
+      <measType p="9">pmCounterNumber560</measType>
+      <measType p="10">pmCounterNumber561</measType>
+      <measType p="11">pmCounterNumber562</measType>
+      <measType p="12">pmCounterNumber563</measType>
+      <measType p="13">pmCounterNumber564</measType>
+      <measType p="14">pmCounterNumber565</measType>
+      <measType p="15">pmCounterNumber566</measType>
+      <measType p="16">pmCounterNumber567</measType>
+      <measType p="17">pmCounterNumber568</measType>
+      <measType p="18">pmCounterNumber569</measType>
+      <measType p="19">pmCounterNumber570</measType>
+      <measType p="20">pmCounterNumber571</measType>
+      <measType p="21">pmCounterNumber572</measType>
+      <measType p="22">pmCounterNumber573</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">5</r>
+        <r p="8">900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">180</r>
+        <r p="10">0</r>
+        <r p="11">8000</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">10000</r>
+        <r p="15">1800</r>
+        <r p="16">10000</r>
+        <r p="17">1800</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=EUtranCellFDD">
+      <job jobId="PREDEF_Lrat"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber306</measType>
+      <measType p="2">pmCounterNumber307</measType>
+      <measType p="3">pmCounterNumber574</measType>
+      <measType p="4">pmCounterNumber575</measType>
+      <measType p="5">pmCounterNumber576</measType>
+      <measType p="6">pmCounterNumber577</measType>
+      <measType p="7">pmCounterNumber578</measType>
+      <measType p="8">pmCounterNumber579</measType>
+      <measType p="9">pmCounterNumber580</measType>
+      <measType p="10">pmCounterNumber581</measType>
+      <measType p="11">pmCounterNumber582</measType>
+      <measType p="12">pmCounterNumber33</measType>
+      <measType p="13">pmCounterNumber34</measType>
+      <measType p="14">pmCounterNumber329</measType>
+      <measType p="15">pmCounterNumber330</measType>
+      <measType p="16">pmCounterNumber583</measType>
+      <measType p="17">pmCounterNumber583Arp</measType>
+      <measType p="18">pmCounterNumber583Csfb</measType>
+      <measType p="19">pmCounterNumber583CsfbArp</measType>
+      <measType p="20">pmCounterNumber583CsfbQci</measType>
+      <measType p="21">pmCounterNumber583HoOngoing</measType>
+      <measType p="22">pmCounterNumber583HoOngoingArp</measType>
+      <measType p="23">pmCounterNumber583HoOngoingQci</measType>
+      <measType p="24">pmCounterNumber583Qci</measType>
+      <measType p="25">pmCounterNumber592</measType>
+      <measType p="26">pmCounterNumber592Arp</measType>
+      <measType p="27">pmCounterNumber594</measType>
+      <measType p="28">pmCounterNumber595</measType>
+      <measType p="29">pmCounterNumber596</measType>
+      <measType p="30">pmCounterNumber597</measType>
+      <measType p="31">pmCounterNumber598</measType>
+      <measType p="32">pmCounterNumber599</measType>
+      <measType p="33">pmCounterNumber599Arp</measType>
+      <measType p="34">pmCounterNumber599Qci</measType>
+      <measType p="35">pmCounterNumber602</measType>
+      <measType p="36">pmCounterNumber602Arp</measType>
+      <measType p="37">pmCounterNumber604</measType>
+      <measType p="38">pmCounterNumber605</measType>
+      <measType p="39">pmCounterNumber606</measType>
+      <measType p="40">pmCounterNumber607</measType>
+      <measType p="41">pmCounterNumber608</measType>
+      <measType p="42">pmCounterNumber609</measType>
+      <measType p="43">pmCounterNumber610</measType>
+      <measType p="44">pmCounterNumber611</measType>
+      <measType p="45">pmCounterNumber612</measType>
+      <measType p="46">pmCounterNumber613</measType>
+      <measType p="47">pmCounterNumber614</measType>
+      <measType p="48">pmCounterNumber615</measType>
+      <measType p="49">pmCounterNumber616</measType>
+      <measType p="50">pmCounterNumber617</measType>
+      <measType p="51">pmCounterNumber618</measType>
+      <measType p="52">pmCounterNumber619</measType>
+      <measType p="53">pmCounterNumber620</measType>
+      <measType p="54">pmCounterNumber621</measType>
+      <measType p="55">pmCounterNumber409</measType>
+      <measType p="56">pmCounterNumber622</measType>
+      <measType p="57">pmCounterNumber623</measType>
+      <measType p="58">pmCounterNumber624</measType>
+      <measType p="59">pmCounterNumber625</measType>
+      <measType p="60">pmCounterNumber626</measType>
+      <measType p="61">pmCounterNumber627</measType>
+      <measType p="62">pmCounterNumber413ResUe</measType>
+      <measType p="63">pmCounterNumber570</measType>
+      <measType p="64">pmCounterNumber213Ce</measType>
+      <measType p="65">pmCounterNumber629</measType>
+      <measType p="66">pmCounterNumber630</measType>
+      <measType p="67">pmCounterNumber631</measType>
+      <measType p="68">pmCounterNumber631Uu</measType>
+      <measType p="69">pmCounterNumber633</measType>
+      <measType p="70">pmCounterNumber634</measType>
+      <measType p="71">pmCounterNumber635</measType>
+      <measType p="72">pmCounterNumber636</measType>
+      <measType p="73">pmCounterNumber637</measType>
+      <measType p="74">pmCounterNumber637FiltQci</measType>
+      <measType p="75">pmCounterNumber637LastTTI</measType>
+      <measType p="76">pmCounterNumber637LastTTIQci</measType>
+      <measType p="77">pmCounterNumber641</measType>
+      <measType p="78">pmCounterNumber642</measType>
+      <measType p="79">pmCounterNumber643</measType>
+      <measType p="80">pmCounterNumber350</measType>
+      <measType p="81">pmCounterNumber350Ce</measType>
+      <measType p="82">pmCounterNumber350Dta</measType>
+      <measType p="83">pmCounterNumber350DtaCe</measType>
+      <measType p="84">pmCounterNumber350Reatt</measType>
+      <measType p="85">pmCounterNumber350ReattCe</measType>
+      <measType p="86">pmCounterNumber350ReattDta</measType>
+      <measType p="87">pmCounterNumber350ReattDtaCe</measType>
+      <measType p="88">pmCounterNumber650</measType>
+      <measType p="89">pmCounterNumber650ActiveUsers</measType>
+      <measType p="90">pmCounterNumber652</measType>
+      <measType p="91">pmCounterNumber652Ce</measType>
+      <measType p="92">pmCounterNumber654</measType>
+      <measType p="93">pmCounterNumber654Ce</measType>
+      <measType p="94">pmCounterNumber354</measType>
+      <measType p="95">pmCounterNumber354Ce</measType>
+      <measType p="96">pmCounterNumber354Dta</measType>
+      <measType p="97">pmCounterNumber354DtaCe</measType>
+      <measType p="98">pmCounterNumber354GummeiNative</measType>
+      <measType p="99">pmCounterNumber660</measType>
+      <measType p="100">pmCounterNumber661</measType>
+      <measType p="101">pmCounterNumber662</measType>
+      <measType p="102">pmCounterNumber663</measType>
+      <measType p="103">pmCounterNumber664</measType>
+      <measType p="104">pmCounterNumber664Ce</measType>
+      <measType p="105">pmCounterNumber664Dta</measType>
+      <measType p="106">pmCounterNumber664DtaCe</measType>
+      <measType p="107">pmCounterNumber664Em</measType>
+      <measType p="108">pmCounterNumber664Hpa</measType>
+      <measType p="109">pmCounterNumber664Mod</measType>
+      <measType p="110">pmCounterNumber664ModCe</measType>
+      <measType p="111">pmCounterNumber664Mos</measType>
+      <measType p="112">pmCounterNumber664Mta</measType>
+      <measType p="113">pmCounterNumber664MtaCe</measType>
+      <measType p="114">pmCounterNumber675</measType>
+      <measType p="115">pmCounterNumber675Ce</measType>
+      <measType p="116">pmCounterNumber677</measType>
+      <measType p="117">pmCounterNumber677Ce</measType>
+      <measType p="118">pmCounterNumber677Dta</measType>
+      <measType p="119">pmCounterNumber677DtaCe</measType>
+      <measType p="120">pmCounterNumber677Em</measType>
+      <measType p="121">pmCounterNumber677Hpa</measType>
+      <measType p="122">pmCounterNumber677Mod</measType>
+      <measType p="123">pmCounterNumber677ModCe</measType>
+      <measType p="124">pmCounterNumber677Mos</measType>
+      <measType p="125">pmCounterNumber677Mta</measType>
+      <measType p="126">pmCounterNumber677MtaCe</measType>
+      <measType p="127">pmCounterNumber688</measType>
+      <measType p="128">pmCounterNumber689</measType>
+      <measType p="129">pmCounterNumber690</measType>
+      <measType p="130">pmCounterNumber691</measType>
+      <measType p="131">pmCounterNumber692</measType>
+      <measType p="132">pmCounterNumber693</measType>
+      <measType p="133">pmCounterNumber694</measType>
+      <measType p="134">pmCounterNumber694Em</measType>
+      <measType p="135">pmCounterNumber696</measType>
+      <measType p="136">pmCounterNumber696Em</measType>
+      <measType p="137">pmCounterNumber698</measType>
+      <measType p="138">pmCounterNumber699</measType>
+      <measType p="139">pmCounterNumber699Em</measType>
+      <measType p="140">pmCounterNumber701</measType>
+      <measType p="141">pmCounterNumber701Em</measType>
+      <measType p="142">pmCounterNumber703</measType>
+      <measType p="143">pmCounterNumber704</measType>
+      <measType p="144">pmCounterNumber705</measType>
+      <measType p="145">pmCounterNumber706</measType>
+      <measType p="146">pmCounterNumber7062</measType>
+      <measType p="147">pmCounterNumber708</measType>
+      <measType p="148">pmCounterNumber709</measType>
+      <measType p="149">pmCounterNumber710</measType>
+      <measType p="150">pmCounterNumber711</measType>
+      <measType p="151">pmCounterNumber712</measType>
+      <measType p="152">pmCounterNumber713</measType>
+      <measType p="153">pmCounterNumber714</measType>
+      <measType p="154">pmCounterNumber715</measType>
+      <measType p="155">pmCounterNumber716</measType>
+      <measType p="156">pmCounterNumber717</measType>
+      <measType p="157">pmCounterNumber718</measType>
+      <measType p="158">pmCounterNumber719</measType>
+      <measType p="159">pmCounterNumber720</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=2">
+        <r p="1">0</r>
+        <r p="2">900</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0,0,0,0</r>
+        <r p="48">0,0,0,0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0,0,0,0</r>
+        <r p="54">0,0,0,0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="59">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0,0,0,0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0</r>
+        <r p="81">0,0,0,0</r>
+        <r p="82">0</r>
+        <r p="83">0,0,0,0</r>
+        <r p="84">0</r>
+        <r p="85">0,0,0,0</r>
+        <r p="86">0</r>
+        <r p="87">0,0,0,0</r>
+        <r p="88">0</r>
+        <r p="89">0</r>
+        <r p="90">0</r>
+        <r p="91">0,0,0,0</r>
+        <r p="92">0</r>
+        <r p="93">0,0,0,0</r>
+        <r p="94">0</r>
+        <r p="95">0,0,0,0</r>
+        <r p="96">0</r>
+        <r p="97">0,0,0,0</r>
+        <r p="98">0</r>
+        <r p="99">0</r>
+        <r p="100">0</r>
+        <r p="101">0</r>
+        <r p="102">0</r>
+        <r p="103">0</r>
+        <r p="104">0,0,0,0</r>
+        <r p="105">0</r>
+        <r p="106">0,0,0,0</r>
+        <r p="107">0</r>
+        <r p="108">0</r>
+        <r p="109">0</r>
+        <r p="110">0,0,0,0</r>
+        <r p="111">0</r>
+        <r p="112">0</r>
+        <r p="113">0,0,0,0</r>
+        <r p="114">0</r>
+        <r p="115">0,0,0,0</r>
+        <r p="116">0</r>
+        <r p="117">0,0,0,0</r>
+        <r p="118">0</r>
+        <r p="119">0,0,0,0</r>
+        <r p="120">0</r>
+        <r p="121">0</r>
+        <r p="122">0</r>
+        <r p="123">0,0,0,0</r>
+        <r p="124">0</r>
+        <r p="125">0</r>
+        <r p="126">0,0,0,0</r>
+        <r p="127">0</r>
+        <r p="128">0</r>
+        <r p="129">0</r>
+        <r p="130">0</r>
+        <r p="131">0</r>
+        <r p="132">0</r>
+        <r p="133">0</r>
+        <r p="134">0</r>
+        <r p="135">0</r>
+        <r p="136">0</r>
+        <r p="137">0</r>
+        <r p="138">0</r>
+        <r p="139">0</r>
+        <r p="140">0</r>
+        <r p="141">0</r>
+        <r p="142">0</r>
+        <r p="143">0</r>
+        <r p="144">0</r>
+        <r p="145">0</r>
+        <r p="146">0</r>
+        <r p="147">0</r>
+        <r p="148">0</r>
+        <r p="149">0</r>
+        <r p="150">0</r>
+        <r p="151">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="152">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="153">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="154">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="155">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="156">0</r>
+        <r p="157">0</r>
+        <r p="158">0,0,0,0,0,0,0,0</r>
+        <r p="159">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=1">
+        <r p="1">0</r>
+        <r p="2">900</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0,0,0,0</r>
+        <r p="48">0,0,0,0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0,0,0,0</r>
+        <r p="54">0,0,0,0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="59">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0,0,0,0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0</r>
+        <r p="81">0,0,0,0</r>
+        <r p="82">0</r>
+        <r p="83">0,0,0,0</r>
+        <r p="84">0</r>
+        <r p="85">0,0,0,0</r>
+        <r p="86">0</r>
+        <r p="87">0,0,0,0</r>
+        <r p="88">0</r>
+        <r p="89">0</r>
+        <r p="90">0</r>
+        <r p="91">0,0,0,0</r>
+        <r p="92">0</r>
+        <r p="93">0,0,0,0</r>
+        <r p="94">0</r>
+        <r p="95">0,0,0,0</r>
+        <r p="96">0</r>
+        <r p="97">0,0,0,0</r>
+        <r p="98">0</r>
+        <r p="99">0</r>
+        <r p="100">0</r>
+        <r p="101">0</r>
+        <r p="102">0</r>
+        <r p="103">0</r>
+        <r p="104">0,0,0,0</r>
+        <r p="105">0</r>
+        <r p="106">0,0,0,0</r>
+        <r p="107">0</r>
+        <r p="108">0</r>
+        <r p="109">0</r>
+        <r p="110">0,0,0,0</r>
+        <r p="111">0</r>
+        <r p="112">0</r>
+        <r p="113">0,0,0,0</r>
+        <r p="114">0</r>
+        <r p="115">0,0,0,0</r>
+        <r p="116">0</r>
+        <r p="117">0,0,0,0</r>
+        <r p="118">0</r>
+        <r p="119">0,0,0,0</r>
+        <r p="120">0</r>
+        <r p="121">0</r>
+        <r p="122">0</r>
+        <r p="123">0,0,0,0</r>
+        <r p="124">0</r>
+        <r p="125">0</r>
+        <r p="126">0,0,0,0</r>
+        <r p="127">0</r>
+        <r p="128">0</r>
+        <r p="129">0</r>
+        <r p="130">0</r>
+        <r p="131">0</r>
+        <r p="132">0</r>
+        <r p="133">0</r>
+        <r p="134">0</r>
+        <r p="135">0</r>
+        <r p="136">0</r>
+        <r p="137">0</r>
+        <r p="138">0</r>
+        <r p="139">0</r>
+        <r p="140">0</r>
+        <r p="141">0</r>
+        <r p="142">0</r>
+        <r p="143">0</r>
+        <r p="144">0</r>
+        <r p="145">0</r>
+        <r p="146">0</r>
+        <r p="147">0</r>
+        <r p="148">0</r>
+        <r p="149">0</r>
+        <r p="150">0</r>
+        <r p="151">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="152">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="153">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="154">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="155">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="156">0</r>
+        <r p="157">0</r>
+        <r p="158">0,0,0,0,0,0,0,0</r>
+        <r p="159">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=BbProcessingResource">
+      <job jobId="nrcell"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber550Burst</measType>
+      <measType p="2">pmCounterNumber550Format</measType>
+      <measType p="3">pmCounterNumber550X2Fwd</measType>
+      <measType p="4">pmCounterNumber724</measType>
+      <measType p="5">pmCounterNumber725</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,BbProcessingResource=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=EUtranCellFDD">
+      <job jobId="nrcell"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber726</measType>
+      <measType p="2">pmCounterNumber727</measType>
+      <measType p="3">pmCounterNumber728</measType>
+      <measType p="4">pmCounterNumber729</measType>
+      <measType p="5">pmCounterNumber730</measType>
+      <measType p="6">pmCounterNumber731</measType>
+      <measType p="7">pmCounterNumber732</measType>
+      <measType p="8">pmCounterNumber733</measType>
+      <measType p="9">pmCounterNumber734</measType>
+      <measType p="10">pmCounterNumber735</measType>
+      <measType p="11">pmCounterNumber629CatMDrxNoSyncQci</measType>
+      <measType p="12">pmCounterNumber629CatMDrxSyncQci</measType>
+      <measType p="13">pmCounterNumber629CatMNoDrxNoSyncQci</measType>
+      <measType p="14">pmCounterNumber629CatMNoDrxSyncQci</measType>
+      <measType p="15">pmCounterNumber629DrxNoSyncQci</measType>
+      <measType p="16">pmCounterNumber629DrxSync</measType>
+      <measType p="17">pmCounterNumber629DrxSyncQci</measType>
+      <measType p="18">pmCounterNumber629NoDrxNoSyncQci</measType>
+      <measType p="19">pmCounterNumber629NoDrxSyncQci</measType>
+      <measType p="20">pmCounterNumber629Qci</measType>
+      <measType p="21">pmCounterNumber630CatMDrxNoSyncQci</measType>
+      <measType p="22">pmCounterNumber630CatMDrxSyncQci</measType>
+      <measType p="23">pmCounterNumber630CatMNoDrxNoSyncQci</measType>
+      <measType p="24">pmCounterNumber630CatMNoDrxSyncQci</measType>
+      <measType p="25">pmCounterNumber630DrxNoSyncQci</measType>
+      <measType p="26">pmCounterNumber630DrxSync</measType>
+      <measType p="27">pmCounterNumber630DrxSyncQci</measType>
+      <measType p="28">pmCounterNumber630NoDrxNoSyncQci</measType>
+      <measType p="29">pmCounterNumber630NoDrxSyncQci</measType>
+      <measType p="30">pmCounterNumber630Qci</measType>
+      <measType p="31">pmCounterNumber756</measType>
+      <measType p="32">pmCounterNumber756Qci</measType>
+      <measType p="33">pmCounterNumber758</measType>
+      <measType p="34">pmCounterNumber758Qci</measType>
+      <measType p="35">pmCounterNumber631Qci</measType>
+      <measType p="36">pmCounterNumber631UuQci</measType>
+      <measType p="37">pmCounterNumber762</measType>
+      <measType p="38">pmCounterNumber633Limitations</measType>
+      <measType p="39">pmCounterNumber633MissingPdus2Qci</measType>
+      <measType p="40">pmCounterNumber633Qci</measType>
+      <measType p="41">pmCounterNumber633RohcFail2Qci</measType>
+      <measType p="42">pmCounterNumber633SrbTooLarge</measType>
+      <measType p="43">pmCounterNumber768</measType>
+      <measType p="44">pmCounterNumber769</measType>
+      <measType p="45">pmCounterNumber770</measType>
+      <measType p="46">pmCounterNumber771</measType>
+      <measType p="47">pmCounterNumber771Qci</measType>
+      <measType p="48">pmCounterNumber634Qci</measType>
+      <measType p="49">pmCounterNumber635Qci</measType>
+      <measType p="50">pmCounterNumber775</measType>
+      <measType p="51">pmCounterNumber637Ca</measType>
+      <measType p="52">pmCounterNumber637LastTTICa</measType>
+      <measType p="53">pmCounterNumber637Qci</measType>
+      <measType p="54">pmCounterNumber637TransPlmn0</measType>
+      <measType p="55">pmCounterNumber637TransPlmn1</measType>
+      <measType p="56">pmCounterNumber637TransPlmn2</measType>
+      <measType p="57">pmCounterNumber637TransPlmn3</measType>
+      <measType p="58">pmCounterNumber637TransPlmn4</measType>
+      <measType p="59">pmCounterNumber637TransPlmn5</measType>
+      <measType p="60">pmCounterNumber637TransPlmn6</measType>
+      <measType p="61">pmCounterNumber637TransQci</measType>
+      <measType p="62">pmCounterNumber787</measType>
+      <measType p="63">pmCounterNumber641Trans</measType>
+      <measType p="64">pmCounterNumber789</measType>
+      <measType p="65">pmCounterNumber642Plmn0</measType>
+      <measType p="66">pmCounterNumber642Plmn1</measType>
+      <measType p="67">pmCounterNumber642Plmn2</measType>
+      <measType p="68">pmCounterNumber642Plmn3</measType>
+      <measType p="69">pmCounterNumber642Plmn4</measType>
+      <measType p="70">pmCounterNumber642Plmn5</measType>
+      <measType p="71">pmCounterNumber642Plmn6</measType>
+      <measType p="72">pmCounterNumber642Qci</measType>
+      <measType p="73">pmCounterNumber798</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=GNBCUUPFunction_GNBCUUP">
+      <job jobId="nrcell"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber799</measType>
+      <measType p="2">pmCounterNumber799Gtpu</measType>
+      <measType p="3">pmCounterNumber799NoCtxt</measType>
+      <measType p="4">pmCounterNumber802</measType>
+      <measType p="5">pmCounterNumber803</measType>
+      <measType p="6">pmCounterNumber804</measType>
+      <measType p="7">pmCounterNumber805</measType>
+      <measType p="8">pmCounterNumber806</measType>
+      <measType p="9">pmCounterNumber807</measType>
+      <measType p="10">pmCounterNumber808</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUUPFunction=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=NRCellCU_GNBCUCP">
+      <job jobId="nrcell"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmEndcUeCapabilityUlPdcpDelay</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=32">
+        <r p="1">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=31">
+        <r p="1">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=2">
+        <r p="1">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=1">
+        <r p="1">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=X2UTermination_GNBCUUP">
+      <job jobId="nrcell"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber802</measType>
+      <measType p="2">pmCounterNumber803</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUUPFunction=1,X2UTermination=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+      </measValue>
+    </measInfo>
+  </measData>
+  <fileFooter>
+    <measCollec endTime="2022-04-18T19:15:00+00:00"/>
+  </fileFooter>
+</measCollecFile>
diff --git a/pm-file-flow-demo/docker-proj/ne-files/pm.xml.gz b/pm-file-flow-demo/docker-proj/ne-files/pm.xml.gz
new file mode 100644
index 0000000..df90359
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/ne-files/pm.xml.gz
Binary files differ
diff --git a/pm-file-flow-demo/docker-proj/pm-files/pm.xml b/pm-file-flow-demo/docker-proj/pm-files/pm.xml
new file mode 100644
index 0000000..529f69f
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/pm-files/pm.xml
@@ -0,0 +1,4023 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="MeasDataCollection.xsl"?>
+<measCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec"
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                xsi:schemaLocation="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec">
+  <fileHeader fileFormatVersion="32.435 V10.0"
+              vendorName="Ericsson AB"
+              dnPrefix="SubNetwork=G3">
+    <fileSender     localDn="nodedntest"
+                elementType="RadioNode"/>
+    <measCollec beginTime="2022-04-18T19:00:00+00:00"/>
+  </fileHeader>
+  <measData>
+    <managedElement localDn="nodedntest"
+                    swVersion="CXP2010174_1 R44B17"/>
+    <measInfo measInfoId="PM=1,PmGroup=NRCellCU_GNBCUCP">
+      <job jobId="nr_all"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber0</measType>
+      <measType p="2">pmCounterNumber1</measType>
+      <measType p="3">pmCounterNumber2</measType>
+      <measType p="4">pmCounterNumber3</measType>
+      <measType p="5">pmCounterNumber4</measType>
+      <measType p="6">pmCounterNumber5</measType>
+      <measType p="7">pmCounterNumber6</measType>
+      <measType p="8">pmCounterNumber7</measType>
+      <measType p="9">pmCounterNumber8</measType>
+      <measType p="10">pmCounterNumber9</measType>
+      <measType p="11">pmCounterNumber10</measType>
+      <measType p="12">pmCounterNumber11</measType>
+      <measType p="13">pmCounterNumber12</measType>
+      <measType p="14">pmCounterNumber13</measType>
+      <measType p="15">pmCounterNumber14</measType>
+      <measType p="16">pmCounterNumber15</measType>
+      <measType p="17">pmCounterNumber16</measType>
+      <measType p="18">pmCounterNumber17</measType>
+      <measType p="19">pmCounterNumber18</measType>
+      <measType p="20">pmCounterNumber19</measType>
+      <measType p="21">pmCounterNumber20</measType>
+      <measType p="22">pmCounterNumber21</measType>
+      <measType p="23">pmCounterNumber22</measType>
+      <measType p="24">pmCounterNumber23</measType>
+      <measType p="25">pmCounterNumber24</measType>
+      <measType p="26">pmCounterNumber25</measType>
+      <measType p="27">pmCounterNumber26</measType>
+      <measType p="28">pmCounterNumber27</measType>
+      <measType p="29">pmCounterNumber28</measType>
+      <measType p="30">pmCounterNumber29</measType>
+      <measType p="31">pmCounterNumber30</measType>
+      <measType p="32">pmCounterNumber31</measType>
+      <measType p="33">pmCounterNumber32</measType>
+      <measType p="34">pmCounterNumber33</measType>
+      <measType p="35">pmCounterNumber34</measType>
+      <measType p="36">pmCounterNumber35</measType>
+      <measType p="37">pmCounterNumber36</measType>
+      <measType p="38">pmCounterNumber37</measType>
+      <measType p="39">pmCounterNumber38</measType>
+      <measType p="40">pmCounterNumber39</measType>
+      <measType p="41">pmCounterNumber40</measType>
+      <measType p="42">pmCounterNumber41</measType>
+      <measType p="43">pmCounterNumber42</measType>
+      <measType p="44">pmCounterNumber43</measType>
+      <measType p="45">pmCounterNumber44</measType>
+      <measType p="46">pmCounterNumber45</measType>
+      <measType p="47">pmCounterNumber46</measType>
+      <measType p="48">pmCounterNumber47</measType>
+      <measType p="49">pmCounterNumber48</measType>
+      <measType p="50">pmCounterNumber49</measType>
+      <measType p="51">pmCounterNumber50</measType>
+      <measType p="52">pmCounterNumber51</measType>
+      <measType p="53">pmCounterNumber51Act</measType>
+      <measType p="54">pmCounterNumber53</measType>
+      <measType p="55">pmCounterNumber53Act</measType>
+      <measType p="56">pmCounterNumber55</measType>
+      <measType p="57">pmCounterNumber56</measType>
+      <measType p="58">pmCounterNumber57</measType>
+      <measType p="59">pmCounterNumber58</measType>
+      <measType p="60">pmCounterNumber59</measType>
+      <measType p="61">pmCounterNumber60</measType>
+      <measType p="62">pmCounterNumber60IntgProt64kbps</measType>
+      <measType p="63">pmCounterNumber62</measType>
+      <measType p="64">pmCounterNumber63</measType>
+      <measType p="65">pmCounterNumber64</measType>
+      <measType p="66">pmCounterNumber65</measType>
+      <measType p="67">pmCounterNumber66</measType>
+      <measType p="68">pmCounterNumber67</measType>
+      <measType p="69">pmCounterNumber68</measType>
+      <measType p="70">pmCounterNumber69</measType>
+      <measType p="71">pmCounterNumber70</measType>
+      <measType p="72">pmCounterNumber71</measType>
+      <measType p="73">pmCounterNumber72</measType>
+      <measType p="74">pmCounterNumber73</measType>
+      <measType p="75">pmCounterNumber74</measType>
+      <measType p="76">pmCounterNumber75</measType>
+      <measType p="77">pmCounterNumber76</measType>
+      <measType p="78">pmCounterNumber77</measType>
+      <measType p="79">pmCounterNumber78</measType>
+      <measType p="80">pmCounterNumber79</measType>
+      <measType p="81">pmCounterNumber80</measType>
+      <measType p="82">pmCounterNumber81</measType>
+      <measType p="83">pmCounterNumber82</measType>
+      <measType p="84">pmCounterNumber83</measType>
+      <measType p="85">pmCounterNumber84</measType>
+      <measType p="86">pmCounterNumber84Em</measType>
+      <measType p="87">pmCounterNumber84EmFbInd</measType>
+      <measType p="88">pmCounterNumber87</measType>
+      <measType p="89">pmCounterNumber88</measType>
+      <measType p="90">pmCounterNumber89</measType>
+      <measType p="91">pmCounterNumber90</measType>
+      <measType p="92">pmCounterNumber91</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=32">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">180</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0</r>
+        <r p="81">0</r>
+        <r p="82">0</r>
+        <r p="83">0</r>
+        <r p="84">0</r>
+        <r p="85">0</r>
+        <r p="86">0</r>
+        <r p="87">0</r>
+        <r p="88">0</r>
+        <r p="89">0</r>
+        <r p="90">0</r>
+        <r p="91">0</r>
+        <r p="92">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=31">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">180</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0</r>
+        <r p="81">0</r>
+        <r p="82">0</r>
+        <r p="83">0</r>
+        <r p="84">0</r>
+        <r p="85">0</r>
+        <r p="86">0</r>
+        <r p="87">0</r>
+        <r p="88">0</r>
+        <r p="89">0</r>
+        <r p="90">0</r>
+        <r p="91">0</r>
+        <r p="92">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">180</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0</r>
+        <r p="81">0</r>
+        <r p="82">0</r>
+        <r p="83">0</r>
+        <r p="84">0</r>
+        <r p="85">0</r>
+        <r p="86">0</r>
+        <r p="87">0</r>
+        <r p="88">0</r>
+        <r p="89">0</r>
+        <r p="90">0</r>
+        <r p="91">0</r>
+        <r p="92">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">180</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0</r>
+        <r p="81">0</r>
+        <r p="82">0</r>
+        <r p="83">0</r>
+        <r p="84">0</r>
+        <r p="85">0</r>
+        <r p="86">0</r>
+        <r p="87">0</r>
+        <r p="88">0</r>
+        <r p="89">0</r>
+        <r p="90">0</r>
+        <r p="91">0</r>
+        <r p="92">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=NRCellDU_GNBDU">
+      <job jobId="nr_all"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber92</measType>
+      <measType p="2">pmCounterNumber93</measType>
+      <measType p="3">pmCounterNumber94</measType>
+      <measType p="4">pmCounterNumber95</measType>
+      <measType p="5">pmCounterNumber96</measType>
+      <measType p="6">pmCounterNumber97</measType>
+      <measType p="7">pmCounterNumber98</measType>
+      <measType p="8">pmCounterNumber99</measType>
+      <measType p="9">pmCounterNumber100</measType>
+      <measType p="10">pmCounterNumber101</measType>
+      <measType p="11">pmCounterNumber102</measType>
+      <measType p="12">pmCounterNumber103</measType>
+      <measType p="13">pmCounterNumber104</measType>
+      <measType p="14">pmCounterNumber105</measType>
+      <measType p="15">pmCounterNumber106</measType>
+      <measType p="16">pmCounterNumber107</measType>
+      <measType p="17">pmCounterNumber108</measType>
+      <measType p="18">pmCounterNumber108Init</measType>
+      <measType p="19">pmCounterNumber110</measType>
+      <measType p="20">pmCounterNumber110Init</measType>
+      <measType p="21">pmCounterNumber112</measType>
+      <measType p="22">pmCounterNumber112Init</measType>
+      <measType p="23">pmCounterNumber114</measType>
+      <measType p="24">pmCounterNumber114Init</measType>
+      <measType p="25">pmCounterNumber116</measType>
+      <measType p="26">pmCounterNumber116Init</measType>
+      <measType p="27">pmCounterNumber118</measType>
+      <measType p="28">pmCounterNumber118Init</measType>
+      <measType p="29">pmCounterNumber120</measType>
+      <measType p="30">pmCounterNumber120Init</measType>
+      <measType p="31">pmCounterNumber122</measType>
+      <measType p="32">pmCounterNumber122Init</measType>
+      <measType p="33">pmCounterNumber124</measType>
+      <measType p="34">pmCounterNumber125</measType>
+      <measType p="35">pmCounterNumber125Init</measType>
+      <measType p="36">pmCounterNumber127</measType>
+      <measType p="37">pmCounterNumber127Init</measType>
+      <measType p="38">pmCounterNumber129</measType>
+      <measType p="39">pmCounterNumber129Init</measType>
+      <measType p="40">pmCounterNumber131</measType>
+      <measType p="41">pmCounterNumber131Init</measType>
+      <measType p="42">pmCounterNumber133</measType>
+      <measType p="43">pmCounterNumber133Init</measType>
+      <measType p="44">pmCounterNumber135</measType>
+      <measType p="45">pmCounterNumber135Init</measType>
+      <measType p="46">pmCounterNumber137</measType>
+      <measType p="47">pmCounterNumber137Init</measType>
+      <measType p="48">pmCounterNumber139</measType>
+      <measType p="49">pmCounterNumber139Init</measType>
+      <measType p="50">pmCounterNumber141</measType>
+      <measType p="51">pmCounterNumber141Init</measType>
+      <measType p="52">pmCounterNumber143</measType>
+      <measType p="53">pmCounterNumber143Init</measType>
+      <measType p="54">pmCounterNumber145</measType>
+      <measType p="55">pmCounterNumber145Init</measType>
+      <measType p="56">pmCounterNumber147</measType>
+      <measType p="57">pmCounterNumber147Init</measType>
+      <measType p="58">pmCounterNumber149</measType>
+      <measType p="59">pmCounterNumber150</measType>
+      <measType p="60">pmCounterNumber150Init</measType>
+      <measType p="61">pmCounterNumber152</measType>
+      <measType p="62">pmCounterNumber152Init</measType>
+      <measType p="63">pmCounterNumber154</measType>
+      <measType p="64">pmCounterNumber154Init</measType>
+      <measType p="65">pmCounterNumber156</measType>
+      <measType p="66">pmCounterNumber156Init</measType>
+      <measType p="67">pmCounterNumber158</measType>
+      <measType p="68">pmCounterNumber158Ext</measType>
+      <measType p="69">pmCounterNumber160</measType>
+      <measType p="70">pmCounterNumber161</measType>
+      <measType p="71">pmCounterNumber162</measType>
+      <measType p="72">pmCounterNumber163</measType>
+      <measType p="73">pmCounterNumber164</measType>
+      <measType p="74">pmCounterNumber165</measType>
+      <measType p="75">pmCounterNumber166</measType>
+      <measType p="76">pmCounterNumber1666</measType>
+      <measType p="77">pmCounterNumber168</measType>
+      <measType p="78">pmCounterNumber169</measType>
+      <measType p="79">pmCounterNumber170</measType>
+      <measType p="80">pmCounterNumber171</measType>
+      <measType p="81">pmCounterNumber172</measType>
+      <measType p="82">pmCounterNumber173</measType>
+      <measType p="83">pmCounterNumber174</measType>
+      <measType p="84">pmCounterNumber175</measType>
+      <measType p="85">pmCounterNumber176</measType>
+      <measType p="86">pmCounterNumber177</measType>
+      <measType p="87">pmCounterNumber178</measType>
+      <measType p="88">pmCounterNumber179</measType>
+      <measType p="89">pmCounterNumber180</measType>
+      <measType p="90">pmCounterNumber181</measType>
+      <measType p="91">pmCounterNumber182</measType>
+      <measType p="92">pmCounterNumber183</measType>
+      <measType p="93">pmCounterNumber184</measType>
+      <measType p="94">pmCounterNumber185</measType>
+      <measType p="95">pmCounterNumber185Qos</measType>
+      <measType p="96">pmCounterNumber185Samp</measType>
+      <measType p="97">pmCounterNumber185SampQos</measType>
+      <measType p="98">pmCounterNumber189</measType>
+      <measType p="99">pmCounterNumber189Qos</measType>
+      <measType p="100">pmCounterNumber191</measType>
+      <measType p="101">pmCounterNumber191Qos</measType>
+      <measType p="102">pmCounterNumber193</measType>
+      <measType p="103">pmCounterNumber193Samp</measType>
+      <measType p="104">pmCounterNumber195</measType>
+      <measType p="105">pmCounterNumber195Ext</measType>
+      <measType p="106">pmCounterNumber197</measType>
+      <measType p="107">pmCounterNumber198</measType>
+      <measType p="108">pmCounterNumber199</measType>
+      <measType p="109">pmCounterNumber200</measType>
+      <measType p="110">pmCounterNumber200BsrGrant</measType>
+      <measType p="111">pmCounterNumber200PreemptGrant</measType>
+      <measType p="112">pmCounterNumber200PucchSrGrant</measType>
+      <measType p="113">pmCounterNumber204</measType>
+      <measType p="114">pmCounterNumber205</measType>
+      <measType p="115">pmCounterNumber206</measType>
+      <measType p="116">pmCounterNumber207</measType>
+      <measType p="117">pmCounterNumber208</measType>
+      <measType p="118">pmCounterNumber209</measType>
+      <measType p="119">pmCounterNumber210</measType>
+      <measType p="120">pmCounterNumber211</measType>
+      <measType p="121">pmCounterNumber212</measType>
+      <measType p="122">pmCounterNumber213</measType>
+      <measType p="123">pmCounterNumber214</measType>
+      <measType p="124">pmCounterNumber215</measType>
+      <measType p="125">pmCounterNumber216</measType>
+      <measType p="126">pmCounterNumber216MacCe</measType>
+      <measType p="127">pmCounterNumber218</measType>
+      <measType p="128">pmCounterNumber219</measType>
+      <measType p="129">pmCounterNumber220</measType>
+      <measType p="130">pmCounterNumber221</measType>
+      <measType p="131">pmCounterNumber222</measType>
+      <measType p="132">pmCounterNumber223</measType>
+      <measType p="133">pmCounterNumber224</measType>
+      <measType p="134">pmCounterNumber225</measType>
+      <measType p="135">pmCounterNumber226</measType>
+      <measType p="136">pmCounterNumber227</measType>
+      <measType p="137">pmCounterNumber228</measType>
+      <measType p="138">pmCounterNumber228Forced</measType>
+      <measType p="139">pmCounterNumber230</measType>
+      <measType p="140">pmCounterNumber231</measType>
+      <measType p="141">pmCounterNumber232</measType>
+      <measType p="142">pmCounterNumber233</measType>
+      <measType p="143">pmCounterNumber234</measType>
+      <measType p="144">pmCounterNumber235</measType>
+      <measType p="145">pmCounterNumber236</measType>
+      <measType p="146">pmCounterNumber237</measType>
+      <measType p="147">pmCounterNumber238</measType>
+      <measType p="148">pmCounterNumber239</measType>
+      <measType p="149">pmCounterNumber240</measType>
+      <measType p="150">pmCounterNumber241</measType>
+      <measType p="151">pmCounterNumber242</measType>
+      <measType p="152">pmCounterNumber243</measType>
+      <measType p="153">pmCounterNumber244</measType>
+      <measType p="154">pmCounterNumber245</measType>
+      <measType p="155">pmCounterNumber246</measType>
+      <measType p="156">pmCounterNumber247</measType>
+      <measType p="157">pmCounterNumber248</measType>
+      <measType p="158">pmCounterNumber249</measType>
+      <measType p="159">pmCounterNumber250</measType>
+      <measType p="160">pmCounterNumber251</measType>
+      <measType p="161">pmCounterNumber252</measType>
+      <measType p="162">pmCounterNumber252Qos</measType>
+      <measType p="163">pmCounterNumber254</measType>
+      <measType p="164">pmCounterNumber254Qos</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=32">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="12">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="13">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="14">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="15">0</r>
+        <r p="16">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">2880</r>
+        <r p="80">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="81">0,0,0,0,0,0,0,0</r>
+        <r p="82">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="83">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="84">0,0,0,0,0,0,0,0</r>
+        <r p="85">0,0,0,0,0,0,0,0</r>
+        <r p="86">0,0,0,0,0,0,0,0</r>
+        <r p="87">0,0,0,0,0,0,0,0</r>
+        <r p="88">0,0,0,0,0,0,0,0</r>
+        <r p="89">0,0,0,0,0,0,0,0</r>
+        <r p="90">0,0,0,0,0,0,0,0</r>
+        <r p="91">0,0,0,0,0,0,0,0</r>
+        <r p="92">0,0,0,0,0,0,0,0</r>
+        <r p="93">0</r>
+        <r p="94">0</r>
+        <r p="95">0</r>
+        <r p="96">0</r>
+        <r p="97">0</r>
+        <r p="98">0</r>
+        <r p="99">0</r>
+        <r p="100">0</r>
+        <r p="101">0</r>
+        <r p="102">0</r>
+        <r p="103">0</r>
+        <r p="104">0</r>
+        <r p="105">0</r>
+        <r p="106">0</r>
+        <r p="107">0</r>
+        <r p="108">0</r>
+        <r p="109">0</r>
+        <r p="110">0</r>
+        <r p="111">0</r>
+        <r p="112">0</r>
+        <r p="113">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="114">0</r>
+        <r p="115">0</r>
+        <r p="116">0</r>
+        <r p="117">179</r>
+        <r p="118">0</r>
+        <r p="119">0,0,0,0</r>
+        <r p="120">0,0,0,0</r>
+        <r p="121">0</r>
+        <r p="122">0</r>
+        <r p="123">0</r>
+        <r p="124">0</r>
+        <r p="125">0</r>
+        <r p="126">0</r>
+        <r p="127">0</r>
+        <r p="128">0</r>
+        <r p="129">0</r>
+        <r p="130">0</r>
+        <r p="131">0</r>
+        <r p="132">0</r>
+        <r p="133">0</r>
+        <r p="134">900,0,0,0,0</r>
+        <r p="135">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="136">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="137">1440001</r>
+        <r p="138">0</r>
+        <r p="139">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="140">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="141">0</r>
+        <r p="142">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="143">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="144">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="145">0</r>
+        <r p="146">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="147">0,0,0,0,0,0,0,0,0,0,0,1800001,0,0,0,0,0,0,0,0,0</r>
+        <r p="148">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="149">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="150">0,0,0,0,0,0,0,0</r>
+        <r p="151">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="152">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="153">0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="154">0</r>
+        <r p="155">0</r>
+        <r p="156">0</r>
+        <r p="157">0</r>
+        <r p="158">0</r>
+        <r p="159">0</r>
+        <r p="160">0</r>
+        <r p="161">0</r>
+        <r p="162">0</r>
+        <r p="163">0</r>
+        <r p="164">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=31">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="12">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="13">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="14">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="15">0</r>
+        <r p="16">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">5376</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="81">0,0,0,0,0,0,0,0</r>
+        <r p="82">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="83">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="84">0,0,0,0,0,0,0,0</r>
+        <r p="85">0,0,0,0,0,0,0,0</r>
+        <r p="86">0,0,0,0,0,0,0,0</r>
+        <r p="87">0,0,0,0,0,0,0,0</r>
+        <r p="88">0,0,0,0,0,0,0,0</r>
+        <r p="89">0,0,0,0,0,0,0,0</r>
+        <r p="90">0,0,0,0,0,0,0,0</r>
+        <r p="91">0,0,0,0,0,0,0,0</r>
+        <r p="92">0,0,0,0,0,0,0,0</r>
+        <r p="93">0</r>
+        <r p="94">0</r>
+        <r p="95">0</r>
+        <r p="96">0</r>
+        <r p="97">0</r>
+        <r p="98">0</r>
+        <r p="99">0</r>
+        <r p="100">0</r>
+        <r p="101">0</r>
+        <r p="102">0</r>
+        <r p="103">0</r>
+        <r p="104">0</r>
+        <r p="105">0</r>
+        <r p="106">0</r>
+        <r p="107">0</r>
+        <r p="108">0</r>
+        <r p="109">0</r>
+        <r p="110">0</r>
+        <r p="111">0</r>
+        <r p="112">0</r>
+        <r p="113">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="114">0</r>
+        <r p="115">0</r>
+        <r p="116">0</r>
+        <r p="117">179</r>
+        <r p="118">0</r>
+        <r p="119">0,0,0,0</r>
+        <r p="120">0,0,0,0</r>
+        <r p="121">0</r>
+        <r p="122">0</r>
+        <r p="123">0</r>
+        <r p="124">0</r>
+        <r p="125">0</r>
+        <r p="126">0</r>
+        <r p="127">0</r>
+        <r p="128">0</r>
+        <r p="129">0</r>
+        <r p="130">0</r>
+        <r p="131">0</r>
+        <r p="132">0</r>
+        <r p="133">0</r>
+        <r p="134">900,0,0,0,0</r>
+        <r p="135">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="136">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="137">1440001</r>
+        <r p="138">0</r>
+        <r p="139">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="140">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="141">0</r>
+        <r p="142">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="143">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="144">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="145">0</r>
+        <r p="146">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="147">0,0,0,0,0,0,0,0,0,0,0,1800001,0,0,0,0,0,0,0,0,0</r>
+        <r p="148">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="149">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="150">0,0,0,0,0,0,0,0</r>
+        <r p="151">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="152">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="153">0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="154">0</r>
+        <r p="155">0</r>
+        <r p="156">0</r>
+        <r p="157">0</r>
+        <r p="158">0</r>
+        <r p="159">0</r>
+        <r p="160">0</r>
+        <r p="161">0</r>
+        <r p="162">0</r>
+        <r p="163">0</r>
+        <r p="164">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="12">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="13">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="14">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="15">0</r>
+        <r p="16">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="81">0,0,0,0,0,0,0,0</r>
+        <r p="82">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="83">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="84">0,0,0,0,0,0,0,0</r>
+        <r p="85">0,0,0,0,0,0,0,0</r>
+        <r p="86">0,0,0,0,0,0,0,0</r>
+        <r p="87">0,0,0,0,0,0,0,0</r>
+        <r p="88">0,0,0,0,0,0,0,0</r>
+        <r p="89">0,0,0,0,0,0,0,0</r>
+        <r p="90">0,0,0,0,0,0,0,0</r>
+        <r p="91">0,0,0,0,0,0,0,0</r>
+        <r p="92">0,0,0,0,0,0,0,0</r>
+        <r p="93">0</r>
+        <r p="94">0</r>
+        <r p="95">0</r>
+        <r p="96">0</r>
+        <r p="97">0</r>
+        <r p="98">0</r>
+        <r p="99">0</r>
+        <r p="100">0</r>
+        <r p="101">0</r>
+        <r p="102">0</r>
+        <r p="103">0</r>
+        <r p="104">0</r>
+        <r p="105">0</r>
+        <r p="106">0</r>
+        <r p="107">0</r>
+        <r p="108">0</r>
+        <r p="109">0</r>
+        <r p="110">0</r>
+        <r p="111">0</r>
+        <r p="112">0</r>
+        <r p="113">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="114">0</r>
+        <r p="115">0</r>
+        <r p="116">0</r>
+        <r p="117">0</r>
+        <r p="118">0</r>
+        <r p="119">0,0,0,0</r>
+        <r p="120">0,0,0,0</r>
+        <r p="121">0</r>
+        <r p="122">0</r>
+        <r p="123">0</r>
+        <r p="124">0</r>
+        <r p="125">0</r>
+        <r p="126">0</r>
+        <r p="127">0</r>
+        <r p="128">0</r>
+        <r p="129">0</r>
+        <r p="130">0</r>
+        <r p="131">0</r>
+        <r p="132">0</r>
+        <r p="133">0</r>
+        <r p="134">0,0,0,0,0</r>
+        <r p="135">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="136">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="137">0</r>
+        <r p="138">0</r>
+        <r p="139">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="140">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="141">0</r>
+        <r p="142">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="143">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="144">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="145">0</r>
+        <r p="146">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="147">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="148">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="149">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="150">0,0,0,0,0,0,0,0</r>
+        <r p="151">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="152">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="153">0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="154">0</r>
+        <r p="155">0</r>
+        <r p="156">0</r>
+        <r p="157">0</r>
+        <r p="158">0</r>
+        <r p="159">0</r>
+        <r p="160">0</r>
+        <r p="161">0</r>
+        <r p="162">0</r>
+        <r p="163">0</r>
+        <r p="164">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="12">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="13">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="14">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="15">0</r>
+        <r p="16">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="81">0,0,0,0,0,0,0,0</r>
+        <r p="82">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="83">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="84">0,0,0,0,0,0,0,0</r>
+        <r p="85">0,0,0,0,0,0,0,0</r>
+        <r p="86">0,0,0,0,0,0,0,0</r>
+        <r p="87">0,0,0,0,0,0,0,0</r>
+        <r p="88">0,0,0,0,0,0,0,0</r>
+        <r p="89">0,0,0,0,0,0,0,0</r>
+        <r p="90">0,0,0,0,0,0,0,0</r>
+        <r p="91">0,0,0,0,0,0,0,0</r>
+        <r p="92">0,0,0,0,0,0,0,0</r>
+        <r p="93">0</r>
+        <r p="94">0</r>
+        <r p="95">0</r>
+        <r p="96">0</r>
+        <r p="97">0</r>
+        <r p="98">0</r>
+        <r p="99">0</r>
+        <r p="100">0</r>
+        <r p="101">0</r>
+        <r p="102">0</r>
+        <r p="103">0</r>
+        <r p="104">0</r>
+        <r p="105">0</r>
+        <r p="106">0</r>
+        <r p="107">0</r>
+        <r p="108">0</r>
+        <r p="109">0</r>
+        <r p="110">0</r>
+        <r p="111">0</r>
+        <r p="112">0</r>
+        <r p="113">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="114">0</r>
+        <r p="115">0</r>
+        <r p="116">0</r>
+        <r p="117">0</r>
+        <r p="118">0</r>
+        <r p="119">0,0,0,0</r>
+        <r p="120">0,0,0,0</r>
+        <r p="121">0</r>
+        <r p="122">0</r>
+        <r p="123">0</r>
+        <r p="124">0</r>
+        <r p="125">0</r>
+        <r p="126">0</r>
+        <r p="127">0</r>
+        <r p="128">0</r>
+        <r p="129">0</r>
+        <r p="130">0</r>
+        <r p="131">0</r>
+        <r p="132">0</r>
+        <r p="133">0</r>
+        <r p="134">0,0,0,0,0</r>
+        <r p="135">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="136">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="137">0</r>
+        <r p="138">0</r>
+        <r p="139">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="140">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="141">0</r>
+        <r p="142">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="143">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="144">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="145">0</r>
+        <r p="146">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="147">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="148">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="149">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="150">0,0,0,0,0,0,0,0</r>
+        <r p="151">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="152">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="153">0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="154">0</r>
+        <r p="155">0</r>
+        <r p="156">0</r>
+        <r p="157">0</r>
+        <r p="158">0</r>
+        <r p="159">0</r>
+        <r p="160">0</r>
+        <r p="161">0</r>
+        <r p="162">0</r>
+        <r p="163">0</r>
+        <r p="164">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=NRSectorCarrier_GNBDU">
+      <job jobId="nr_all"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber256</measType>
+      <measType p="2">pmCounterNumber257</measType>
+      <measType p="3">pmCounterNumber258</measType>
+      <measType p="4">pmCounterNumber259</measType>
+      <measType p="5">pmCounterNumber260</measType>
+      <measType p="6">pmCounterNumber261</measType>
+      <measType p="7">pmCounterNumber262</measType>
+      <measType p="8">pmCounterNumber263</measType>
+      <measType p="9">pmCounterNumber263On</measType>
+      <measType p="10">pmCounterNumber265</measType>
+      <measType p="11">pmCounterNumber266</measType>
+      <measType p="12">pmCounterNumber267</measType>
+      <measType p="13">pmCounterNumber267Auto</measType>
+      <measType p="14">pmCounterNumber267AutoCbrs</measType>
+      <measType p="15">pmCounterNumber267Man</measType>
+      <measType p="16">pmCounterNumber267ManCbrs</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRSectorCarrier=32">
+        <r p="1">0,0,0,0,0,0,0,0,0,15,0,0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="3">0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">10000</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRSectorCarrier=31">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,15,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="3">0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">15000</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRSectorCarrier=2">
+        <r p="1">15,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="3">0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRSectorCarrier=1">
+        <r p="1">15,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="3">0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=EUtranCellFDD">
+      <job jobId="stat"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber272</measType>
+      <measType p="2">pmCounterNumber273</measType>
+      <measType p="3">pmCounterNumber274</measType>
+      <measType p="4">pmCounterNumber275</measType>
+      <measType p="5">pmCounterNumber276</measType>
+      <measType p="6">pmCounterNumber277</measType>
+      <measType p="7">pmCounterNumber278</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=2">
+        <r p="1">0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="3">0,0,0,0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=1">
+        <r p="1">0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="3">0,0,0,0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=NRCellDU_GNBDU">
+      <job jobId="stat"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber279</measType>
+      <measType p="2">pmCounterNumber280</measType>
+      <measType p="3">pmCounterNumber281</measType>
+      <measType p="4">pmCounterNumber282</measType>
+      <measType p="5">pmCounterNumber283</measType>
+      <measType p="6">pmCounterNumber284</measType>
+      <measType p="7">pmCounterNumber285</measType>
+      <measType p="8">pmCounterNumber286</measType>
+      <measType p="9">pmCounterNumber287</measType>
+      <measType p="10">pmCounterNumber288</measType>
+      <measType p="11">pmCounterNumber289</measType>
+      <measType p="12">pmCounterNumber290</measType>
+      <measType p="13">pmCounterNumber291</measType>
+      <measType p="14">pmCounterNumber292</measType>
+      <measType p="15">pmCounterNumber293</measType>
+      <measType p="16">pmCounterNumber294</measType>
+      <measType p="17">pmCounterNumber295</measType>
+      <measType p="18">pmCounterNumber296</measType>
+      <measType p="19">pmCounterNumber274</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=32">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0</r>
+        <r p="3">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0,0,0,0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=31">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0</r>
+        <r p="3">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0,0,0,0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=2">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0</r>
+        <r p="3">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0,0,0,0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=1">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0</r>
+        <r p="3">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="4">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0,0,0,0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=EUtranCellFDD">
+      <job jobId="inter"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber297</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=2">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=1">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=NRCellDU_GNBDU">
+      <job jobId="inter"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber297F0Distr</measType>
+      <measType p="2">pmCounterNumber297F2Distr</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=32">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=31">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=2">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=1">
+        <r p="1">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=GNBCUCPFunction_GNBCUCP">
+      <job jobId="PREDEF_5GRC"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber300</measType>
+      <measType p="2">pmCounterNumber301</measType>
+      <measType p="3">pmCounterNumber302</measType>
+      <measType p="4">pmCounterNumber303</measType>
+      <measType p="5">pmCounterNumber304</measType>
+      <measType p="6">pmCounterNumber305</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">180</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=NRCellCU_GNBCUCP">
+      <job jobId="PREDEF_5GRC"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber306</measType>
+      <measType p="2">pmCounterNumber307</measType>
+      <measType p="3">pmCounterNumber308</measType>
+      <measType p="4">pmCounterNumber309</measType>
+      <measType p="5">pmCounterNumber310</measType>
+      <measType p="6">pmCounterNumber311</measType>
+      <measType p="7">pmCounterNumber312</measType>
+      <measType p="8">pmCounterNumber313</measType>
+      <measType p="9">pmCounterNumber314</measType>
+      <measType p="10">pmCounterNumber315</measType>
+      <measType p="11">pmCounterNumber316</measType>
+      <measType p="12">pmCounterNumber317</measType>
+      <measType p="13">pmCounterNumber318</measType>
+      <measType p="14">pmCounterNumber319</measType>
+      <measType p="15">pmCounterNumber320</measType>
+      <measType p="16">pmCounterNumber321</measType>
+      <measType p="17">pmCounterNumber322</measType>
+      <measType p="18">pmCounterNumber323</measType>
+      <measType p="19">pmCounterNumber324</measType>
+      <measType p="20">pmCounterNumber324Act</measType>
+      <measType p="21">pmCounterNumber326</measType>
+      <measType p="22">pmCounterNumber326Act</measType>
+      <measType p="23">pmCounterNumber328</measType>
+      <measType p="24">pmCounterNumber329</measType>
+      <measType p="25">pmCounterNumber330</measType>
+      <measType p="26">pmCounterNumber331</measType>
+      <measType p="27">pmCounterNumber332</measType>
+      <measType p="28">pmCounterNumber333</measType>
+      <measType p="29">pmCounterNumber334</measType>
+      <measType p="30">pmCounterNumber335</measType>
+      <measType p="31">pmCounterNumber336</measType>
+      <measType p="32">pmCounterNumber337</measType>
+      <measType p="33">pmCounterNumber338</measType>
+      <measType p="34">pmCounterNumber339</measType>
+      <measType p="35">pmCounterNumber340</measType>
+      <measType p="36">pmCounterNumber341</measType>
+      <measType p="37">pmCounterNumber342</measType>
+      <measType p="38">pmCounterNumber343</measType>
+      <measType p="39">pmCounterNumber343Mos</measType>
+      <measType p="40">pmCounterNumber345</measType>
+      <measType p="41">pmCounterNumber345Mos</measType>
+      <measType p="42">pmCounterNumber347</measType>
+      <measType p="43">pmCounterNumber348</measType>
+      <measType p="44">pmCounterNumber349</measType>
+      <measType p="45">pmCounterNumber350</measType>
+      <measType p="46">pmCounterNumber350Mos</measType>
+      <measType p="47">pmCounterNumber350Reatt</measType>
+      <measType p="48">pmCounterNumber350ReattMos</measType>
+      <measType p="49">pmCounterNumber354</measType>
+      <measType p="50">pmCounterNumber354Mos</measType>
+      <measType p="51">pmCounterNumber301</measType>
+      <measType p="52">pmCounterNumber302</measType>
+      <measType p="53">pmCounterNumber303</measType>
+      <measType p="54">pmCounterNumber304</measType>
+      <measType p="55">pmCounterNumber305</measType>
+      <measType p="56">pmCounterNumber356</measType>
+      <measType p="57">pmCounterNumber357</measType>
+      <measType p="58">pmCounterNumber358</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=32">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">180</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">180</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">180</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=31">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">180</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">180</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">180</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">180</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">180</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">180</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">180</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">180</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">180</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=GNBDUFunction_GNBDU">
+      <job jobId="PREDEF_5GRP"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber359</measType>
+      <measType p="2">pmCounterNumber360</measType>
+      <measType p="3">pmCounterNumber361</measType>
+      <measType p="4">pmCounterNumber362</measType>
+      <measType p="5">pmCounterNumber363</measType>
+      <measType p="6">pmCounterNumber364</measType>
+      <measType p="7">pmCounterNumber365</measType>
+      <measType p="8">pmCounterNumber366</measType>
+      <measType p="9">pmCounterNumber367</measType>
+      <measType p="10">pmCounterNumber368</measType>
+      <measType p="11">pmCounterNumber369</measType>
+      <measType p="12">pmCounterNumber370</measType>
+      <measType p="13">pmCounterNumber371</measType>
+      <measType p="14">pmCounterNumber372</measType>
+      <measType p="15">pmCounterNumber373</measType>
+      <measType p="16">pmCounterNumber374</measType>
+      <measType p="17">pmCounterNumber375</measType>
+      <measType p="18">pmCounterNumber376</measType>
+      <measType p="19">pmCounterNumber377</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">32</r>
+        <r p="6">16</r>
+        <r p="7">0</r>
+        <r p="8">16</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=NRCellDU_GNBDU">
+      <job jobId="PREDEF_5GRP"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber378</measType>
+      <measType p="2">pmCounterNumber379</measType>
+      <measType p="3">pmCounterNumber380</measType>
+      <measType p="4">pmCounterNumber381</measType>
+      <measType p="5">pmCounterNumber382</measType>
+      <measType p="6">pmCounterNumber383</measType>
+      <measType p="7">pmCounterNumber384</measType>
+      <measType p="8">pmCounterNumber385</measType>
+      <measType p="9">pmCounterNumber386</measType>
+      <measType p="10">pmCounterNumber306</measType>
+      <measType p="11">pmCounterNumber307</measType>
+      <measType p="12">pmCounterNumber307ual</measType>
+      <measType p="13">pmCounterNumber388</measType>
+      <measType p="14">pmCounterNumber389</measType>
+      <measType p="15">pmCounterNumber390</measType>
+      <measType p="16">pmCounterNumber391</measType>
+      <measType p="17">pmCounterNumber392</measType>
+      <measType p="18">pmCounterNumber393</measType>
+      <measType p="19">pmCounterNumber394</measType>
+      <measType p="20">pmCounterNumber395</measType>
+      <measType p="21">pmCounterNumber396</measType>
+      <measType p="22">pmCounterNumber397</measType>
+      <measType p="23">pmCounterNumber398</measType>
+      <measType p="24">pmCounterNumber399</measType>
+      <measType p="25">pmCounterNumber399Broadcasting</measType>
+      <measType p="26">pmCounterNumber401</measType>
+      <measType p="27">pmCounterNumber402</measType>
+      <measType p="28">pmCounterNumber403</measType>
+      <measType p="29">pmCounterNumber404</measType>
+      <measType p="30">pmCounterNumber405</measType>
+      <measType p="31">pmCounterNumber406</measType>
+      <measType p="32">pmCounterNumber407</measType>
+      <measType p="33">pmCounterNumber407Qos</measType>
+      <measType p="34">pmCounterNumber409</measType>
+      <measType p="35">pmCounterNumber410</measType>
+      <measType p="36">pmCounterNumber410Drb</measType>
+      <measType p="37">pmCounterNumber410DrbQos</measType>
+      <measType p="38">pmCounterNumber413</measType>
+      <measType p="39">pmCounterNumber413ResUe</measType>
+      <measType p="40">pmCounterNumber415</measType>
+      <measType p="41">pmCounterNumber416</measType>
+      <measType p="42">pmCounterNumber417</measType>
+      <measType p="43">pmCounterNumber418</measType>
+      <measType p="44">pmCounterNumber419</measType>
+      <measType p="45">pmCounterNumber420</measType>
+      <measType p="46">pmCounterNumber421</measType>
+      <measType p="47">pmCounterNumber422</measType>
+      <measType p="48">pmCounterNumber423</measType>
+      <measType p="49">pmCounterNumber424</measType>
+      <measType p="50">pmCounterNumber425</measType>
+      <measType p="51">pmCounterNumber426</measType>
+      <measType p="52">pmCounterNumber427</measType>
+      <measType p="53">pmCounterNumber428</measType>
+      <measType p="54">pmCounterNumber429</measType>
+      <measType p="55">pmCounterNumber430</measType>
+      <measType p="56">pmCounterNumber431</measType>
+      <measType p="57">pmCounterNumber432</measType>
+      <measType p="58">pmCounterNumber433</measType>
+      <measType p="59">pmCounterNumber434</measType>
+      <measType p="60">pmCounterNumber435</measType>
+      <measType p="61">pmCounterNumber436</measType>
+      <measType p="62">pmCounterNumber437</measType>
+      <measType p="63">pmCounterNumber438</measType>
+      <measType p="64">pmCounterNumber439</measType>
+      <measType p="65">pmCounterNumber440</measType>
+      <measType p="66">pmCounterNumber441</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=32">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">1800000</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">1800001</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">3032642268</r>
+        <r p="18">20160056</r>
+        <r p="19">15120000</r>
+        <r p="20">816482268</r>
+        <r p="21">0</r>
+        <r p="22">2880</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">3780540</r>
+        <r p="26">2520</r>
+        <r p="27">0</r>
+        <r p="28">900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="29">0</r>
+        <r p="30">900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">5760004</r>
+        <r p="41">0</r>
+        <r p="42">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="43">1440004</r>
+        <r p="44">0</r>
+        <r p="45">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="46">2,1,1,2,2,3,2,1,1,0,0,0</r>
+        <r p="47">15</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">60</r>
+        <r p="54">15</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">179</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=31">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">1800000</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">1800001</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">5110563822</r>
+        <r p="18">20160056</r>
+        <r p="19">15120000</r>
+        <r p="20">1375923822</r>
+        <r p="21">0</r>
+        <r p="22">5376</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">3780504</r>
+        <r p="26">2352</r>
+        <r p="27">0</r>
+        <r p="28">900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="29">0</r>
+        <r p="30">900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">5760004</r>
+        <r p="41">0</r>
+        <r p="42">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="43">1440004</r>
+        <r p="44">0</r>
+        <r p="45">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="46">3,1,2,1,2,0,3,2,0,0,0,0</r>
+        <r p="47">14</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">56</r>
+        <r p="54">14</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">179</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">900</r>
+        <r p="12">900</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="29">0</r>
+        <r p="30">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="46">0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBDUFunction=1,NRCellDU=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">900</r>
+        <r p="12">900</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="29">0</r>
+        <r p="30">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="46">0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=PpControlLink_GNBCUUP">
+      <job jobId="PREDEF_5GPP"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber310</measType>
+      <measType p="2">pmCounterNumber311</measType>
+      <measType p="3">pmCounterNumber312</measType>
+      <measType p="4">pmCounterNumber313</measType>
+      <measType p="5">pmCounterNumber314</measType>
+      <measType p="6">pmCounterNumber347</measType>
+      <measType p="7">pmCounterNumber348</measType>
+      <measType p="8">pmCounterNumber349</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUUPFunction=1,PpControlTermination=1,PpControlLink=internal">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">900</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">900</r>
+        <r p="8">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=EUtranCellFDD">
+      <job jobId="ltearq"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber442</measType>
+      <measType p="2">pmCounterNumber443</measType>
+      <measType p="3">pmCounterNumber444</measType>
+      <measType p="4">pmCounterNumber445</measType>
+      <measType p="5">pmCounterNumber446</measType>
+      <measType p="6">pmCounterNumber447</measType>
+      <measType p="7">pmCounterNumber448</measType>
+      <measType p="8">pmCounterNumber448PCell</measType>
+      <measType p="9">pmCounterNumber448SCell</measType>
+      <measType p="10">pmCounterNumber448Volte</measType>
+      <measType p="11">pmCounterNumber452</measType>
+      <measType p="12">pmCounterNumber453</measType>
+      <measType p="13">pmCounterNumber454</measType>
+      <measType p="14">pmCounterNumber455</measType>
+      <measType p="15">pmCounterNumber114</measType>
+      <measType p="16">pmCounterNumber456</measType>
+      <measType p="17">pmCounterNumber457</measType>
+      <measType p="18">pmCounterNumber458</measType>
+      <measType p="19">pmCounterNumber122</measType>
+      <measType p="20">pmCounterNumber459</measType>
+      <measType p="21">pmCounterNumber460</measType>
+      <measType p="22">pmCounterNumber461</measType>
+      <measType p="23">pmCounterNumber462</measType>
+      <measType p="24">pmCounterNumber131</measType>
+      <measType p="25">pmCounterNumber463</measType>
+      <measType p="26">pmCounterNumber464</measType>
+      <measType p="27">pmCounterNumber143</measType>
+      <measType p="28">pmCounterNumber145</measType>
+      <measType p="29">pmCounterNumber147</measType>
+      <measType p="30">pmCounterNumber14916qam</measType>
+      <measType p="31">pmCounterNumber149256Qam</measType>
+      <measType p="32">pmCounterNumber14964Qam</measType>
+      <measType p="33">pmCounterNumber149Iua16qam</measType>
+      <measType p="34">pmCounterNumber149IuaQpsk</measType>
+      <measType p="35">pmCounterNumber149Qpsk</measType>
+      <measType p="36">pmCounterNumber471</measType>
+      <measType p="37">pmCounterNumber472</measType>
+      <measType p="38">pmCounterNumber473</measType>
+      <measType p="39">pmCounterNumber474</measType>
+      <measType p="40">pmCounterNumber475</measType>
+      <measType p="41">pmCounterNumber476</measType>
+      <measType p="42">pmCounterNumber477</measType>
+      <measType p="43">pmCounterNumber478</measType>
+      <measType p="44">pmCounterNumber248</measType>
+      <measType p="45">pmCounterNumber249</measType>
+      <measType p="46">pmCounterNumber479</measType>
+      <measType p="47">pmCounterNumber250</measType>
+      <measType p="48">pmCounterNumber251</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=FieldReplaceableUnit">
+      <job jobId="PREDEF_Nc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber480</measType>
+      <measType p="2">pmCounterNumber481</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S3-1">
+        <r p="1">0</r>
+        <r p="2">4,4,4</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S2-1">
+        <r p="1">0</r>
+        <r p="2">4,4,4</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S1-1">
+        <r p="1">0</r>
+        <r p="2">4,4,4</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608">
+        <r p="1">0</r>
+        <r p="2"> , , </r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1">
+        <r p="1"> </r>
+        <r p="2">4,4,4</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=RiEthernetPort">
+      <job jobId="PREDEF_Nc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber482</measType>
+      <measType p="2">pmCounterNumber483</measType>
+      <measType p="3">pmCounterNumber484</measType>
+      <measType p="4">pmCounterNumber485</measType>
+      <measType p="5">pmCounterNumber486</measType>
+      <measType p="6">pmCounterNumber487</measType>
+      <measType p="7">pmCounterNumber488</measType>
+      <measType p="8">pmCounterNumber489</measType>
+      <measType p="9">pmCounterNumber490</measType>
+      <measType p="10">pmCounterNumber491</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,RiPort=P,RiEthernetPort=1">
+        <r p="1">0</r>
+        <r p="2">51885</r>
+        <r p="3">4628315</r>
+        <r p="4">9190</r>
+        <r p="5">0</r>
+        <r p="6">15493</r>
+        <r p="7">1956503</r>
+        <r p="8">7326</r>
+        <r p="9">0</r>
+        <r p="10"> </r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,RiPort=N,RiEthernetPort=1">
+        <r p="1">0</r>
+        <r p="2">37309</r>
+        <r p="3">2868954</r>
+        <r p="4">4551</r>
+        <r p="5">0</r>
+        <r p="6">915</r>
+        <r p="7">380361</r>
+        <r p="8">4549</r>
+        <r p="9">0</r>
+        <r p="10"> </r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,RiPort=B,RiEthernetPort=1">
+        <r p="1">0</r>
+        <r p="2">15490</r>
+        <r p="3">1512626</r>
+        <r p="4">7326</r>
+        <r p="5">0</r>
+        <r p="6">51883</r>
+        <r p="7">3492085</r>
+        <r p="8">9190</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,RiPort=A,RiEthernetPort=1">
+        <r p="1">0</r>
+        <r p="2">916</r>
+        <r p="3">260228</r>
+        <r p="4">4549</r>
+        <r p="5">0</r>
+        <r p="6">37309</r>
+        <r p="7">2097258</r>
+        <r p="8">4551</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=RiLink">
+      <job jobId="PREDEF_Nc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber492</measType>
+      <measType p="2">pmCounterNumber493</measType>
+      <measType p="3">pmCounterNumber494</measType>
+      <measType p="4">pmCounterNumber495</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,RiLink=S3-1">
+        <r p="1">1077</r>
+        <r p="2">1076</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,RiLink=S2-1">
+        <r p="1">450</r>
+        <r p="2">450</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,RiLink=S1-1">
+        <r p="1">427</r>
+        <r p="2">427</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,RiLink=R608-2">
+        <r p="1">0</r>
+        <r p="2">2147483647</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,RiLink=R608-1">
+        <r p="1">0</r>
+        <r p="2">2147483647</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=RiPort">
+      <job jobId="PREDEF_Nc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber496</measType>
+      <measType p="2">pmCounterNumber497</measType>
+      <measType p="3">pmCounterNumber498</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S3-1,RiPort=DATA_2">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S3-1,RiPort=DATA_1">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S2-1,RiPort=DATA_2">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S2-1,RiPort=DATA_1">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S1-1,RiPort=DATA_2">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S1-1,RiPort=DATA_1">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,RiPort=P">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,RiPort=N">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,RiPort=B">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,RiPort=A">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,RiPort=K">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,RiPort=C">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,RiPort=B">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,RiPort=A">
+        <r p="1">0,0,0,0,0,0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=SfpChannel">
+      <job jobId="PREDEF_Nc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber499</measType>
+      <measType p="2">pmCounterNumber500</measType>
+      <measType p="3">pmCounterNumber501</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,SfpModule=P,SfpChannel=1">
+        <r p="1">2951</r>
+        <r p="2">3600</r>
+        <r p="3">2922</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,SfpModule=N,SfpChannel=1">
+        <r p="1">3018</r>
+        <r p="2">4200</r>
+        <r p="3">2953</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,SfpModule=K,SfpChannel=1">
+        <r p="1">2809</r>
+        <r p="2">3500</r>
+        <r p="3">2812</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S3-1,SfpModule=DATA_2,SfpChannel=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S2-1,SfpModule=DATA_2,SfpChannel=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S1-1,SfpModule=DATA_2,SfpChannel=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S3-1,SfpModule=DATA_1,SfpChannel=1">
+        <r p="1">2810</r>
+        <r p="2">3100</r>
+        <r p="3">2830</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S2-1,SfpModule=DATA_1,SfpChannel=1">
+        <r p="1">2717</r>
+        <r p="2">3600</r>
+        <r p="3">2775</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S1-1,SfpModule=DATA_1,SfpChannel=1">
+        <r p="1">2700</r>
+        <r p="2">3900</r>
+        <r p="3">2773</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,SfpModule=C,SfpChannel=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,SfpModule=B,SfpChannel=1">
+        <r p="1">2744</r>
+        <r p="2">3200</r>
+        <r p="3">2775</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,SfpModule=B,SfpChannel=1">
+        <r p="1">2863</r>
+        <r p="2">3800</r>
+        <r p="3">2898</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,SfpModule=A,SfpChannel=1">
+        <r p="1">2684</r>
+        <r p="2">3900</r>
+        <r p="3">2737</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,SfpModule=A,SfpChannel=1">
+        <r p="1">2892</r>
+        <r p="2">4400</r>
+        <r p="3">2893</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=SfpModule">
+      <job jobId="PREDEF_Nc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber502</measType>
+      <measType p="2">pmCounterNumber503</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S3-1,SfpModule=DATA_2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S3-1,SfpModule=DATA_1">
+        <r p="1">1310</r>
+        <r p="2">32552</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S2-1,SfpModule=DATA_2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S2-1,SfpModule=DATA_1">
+        <r p="1">1430</r>
+        <r p="2">32904</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S1-1,SfpModule=DATA_2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S1-1,SfpModule=DATA_1">
+        <r p="1">1410</r>
+        <r p="2">33141</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,SfpModule=P">
+        <r p="1">1388</r>
+        <r p="2">32558</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,SfpModule=N">
+        <r p="1">1384</r>
+        <r p="2">32505</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,SfpModule=B">
+        <r p="1">1297</r>
+        <r p="2">32999</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,SfpModule=A">
+        <r p="1">1297</r>
+        <r p="2">33041</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,SfpModule=K">
+        <r p="1">1474</r>
+        <r p="2">32588</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,SfpModule=C">
+        <r p="1">0</r>
+        <r p="2">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,SfpModule=B">
+        <r p="1">1463</r>
+        <r p="2">32493</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,SfpModule=A">
+        <r p="1">1464</r>
+        <r p="2">32534</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=EthernetPort">
+      <job jobId="PREDEF_Rtn"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber482</measType>
+      <measType p="2">pmCounterNumber483</measType>
+      <measType p="3">pmCounterNumber484</measType>
+      <measType p="4">pmCounterNumber485</measType>
+      <measType p="5">pmCounterNumber486</measType>
+      <measType p="6">pmCounterNumber487</measType>
+      <measType p="7">pmCounterNumber488</measType>
+      <measType p="8">pmCounterNumber489</measType>
+      <measType p="9">pmCounterNumber504</measType>
+      <measType p="10">pmCounterNumber490</measType>
+      <measType p="11">pmCounterNumber505</measType>
+      <measType p="12">pmCounterNumber506</measType>
+      <measType p="13">pmCounterNumber507</measType>
+      <measType p="14">pmCounterNumber491</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,EthernetPort=TN_IDL_B_1">
+        <r p="1">22345</r>
+        <r p="2">1057</r>
+        <r p="3">2921772</r>
+        <r p="4">4472</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">9147991</r>
+        <r p="8">17099</r>
+        <r p="9">0</r>
+        <r p="10">7627</r>
+        <r p="11">3582</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=InterfaceIPv4">
+      <job jobId="PREDEF_Rtn"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber508</measType>
+      <measType p="2">pmCounterNumber509</measType>
+      <measType p="3">pmCounterNumber510</measType>
+      <measType p="4">pmCounterNumber511</measType>
+      <measType p="5">pmCounterNumber512</measType>
+      <measType p="6">pmCounterNumber513</measType>
+      <measType p="7">pmCounterNumber514</measType>
+      <measType p="8">pmCounterNumber515</measType>
+      <measType p="9">pmCounterNumber516</measType>
+      <measType p="10">pmCounterNumber517</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,Router=vr_OAM,InterfaceIPv4=1">
+        <r p="1">314834</r>
+        <r p="2">4561</r>
+        <r p="3">8697703</r>
+        <r p="4">16811</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,Router=vr_NR,InterfaceIPv4=1">
+        <r p="1">19900</r>
+        <r p="2">388</r>
+        <r p="3">1260</r>
+        <r p="4">30</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,Router=vr_LTE,InterfaceIPv4=1">
+        <r p="1">26656</r>
+        <r p="2">574</r>
+        <r p="3">14580</r>
+        <r p="4">243</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,Router=Node_Internal_F1,InterfaceIPv4=NRDU">
+        <r p="1"> </r>
+        <r p="2"> </r>
+        <r p="3"> </r>
+        <r p="4"> </r>
+        <r p="5"> </r>
+        <r p="6"> </r>
+        <r p="7"> </r>
+        <r p="8"> </r>
+        <r p="9"> </r>
+        <r p="10"> </r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,Router=Node_Internal_F1,InterfaceIPv4=NRCUCP">
+        <r p="1"> </r>
+        <r p="2"> </r>
+        <r p="3"> </r>
+        <r p="4"> </r>
+        <r p="5"> </r>
+        <r p="6"> </r>
+        <r p="7"> </r>
+        <r p="8"> </r>
+        <r p="9"> </r>
+        <r p="10"> </r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=SctpAssociation">
+      <job jobId="PREDEF_Rtn"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber518</measType>
+      <measType p="2">pmCounterNumber519</measType>
+      <measType p="3">pmCounterNumber520</measType>
+      <measType p="4">pmCounterNumber521</measType>
+      <measType p="5">pmCounterNumber522</measType>
+      <measType p="6">pmCounterNumber523</measType>
+      <measType p="7">pmCounterNumber524</measType>
+      <measType p="8">pmCounterNumber525</measType>
+      <measType p="9">pmCounterNumber526</measType>
+      <measType p="10">pmCounterNumber527</measType>
+      <measType p="11">pmCounterNumber528</measType>
+      <measType p="12">pmCounterNumber529</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,SctpEndpoint=F1_NRDU,SctpAssociation=38472-10.0.0.1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">833</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">87820</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">87820</r>
+        <r p="12">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,SctpEndpoint=F1_NRCUCP,SctpAssociation=38472-10.0.0.2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">833</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">87820</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">87820</r>
+        <r p="12">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=VlanPort">
+      <job jobId="PREDEF_Rtn"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber482</measType>
+      <measType p="2">pmCounterNumber483</measType>
+      <measType p="3">pmCounterNumber484</measType>
+      <measType p="4">pmCounterNumber485</measType>
+      <measType p="5">pmCounterNumber486</measType>
+      <measType p="6">pmCounterNumber487</measType>
+      <measType p="7">pmCounterNumber488</measType>
+      <measType p="8">pmCounterNumber489</measType>
+      <measType p="9">pmCounterNumber507</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,VlanPort=vr_OAM.IF1">
+        <r p="1">1996</r>
+        <r p="2">341</r>
+        <r p="3">657544</r>
+        <r p="4">4205</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">9067777</r>
+        <r p="8">16814</r>
+        <r p="9">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,VlanPort=vr_NR.IF1">
+        <r p="1">8457</r>
+        <r p="2">343</r>
+        <r p="3">711892</r>
+        <r p="4">33</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">2368</r>
+        <r p="8">37</r>
+        <r p="9">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Transport=1,VlanPort=vr_LTE.IF1">
+        <r p="1">11894</r>
+        <r p="2">343</r>
+        <r p="3">1006906</r>
+        <r p="4">234</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">20246</r>
+        <r p="8">248</r>
+        <r p="9">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=ConsumedEnergyMeasurement">
+      <job jobId="PREDEF_Apc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber530</measType>
+      <measType p="2">pmCounterNumber530Accumulated</measType>
+      <measType p="3">pmCounterNumber532</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,NodeSupport=1,ConsumedEnergyMeasurement=1">
+        <r p="1"> </r>
+        <r p="2"> </r>
+        <r p="3"> , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , </r>
+        <suspect>true</suspect>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=EnergyMeter">
+      <job jobId="PREDEF_Apc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber530</measType>
+      <measType p="2">pmCounterNumber530Accumulated</measType>
+      <measType p="3">pmCounterNumber532</measType>
+      <measType p="4">pmCounterNumber533</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,EnergyMeter=1">
+        <r p="1">83</r>
+        <r p="2">34846</r>
+        <r p="3">333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,334,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333</r>
+        <r p="4">52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S1-1,EnergyMeter=1">
+        <r p="1">12</r>
+        <r p="2">4947</r>
+        <r p="3">47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47</r>
+        <r p="4">53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S2-1,EnergyMeter=1">
+        <r p="1">13</r>
+        <r p="2">5394</r>
+        <r p="3">52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,51,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,51,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52</r>
+        <r p="4">54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=Radio-S3-1,EnergyMeter=1">
+        <r p="1">22</r>
+        <r p="2">9338</r>
+        <r p="3">89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89</r>
+        <r p="4">53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,52,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,52,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=R608,EnergyMeter=1">
+        <r p="1"> </r>
+        <r p="2"> </r>
+        <r p="3"> , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , </r>
+        <r p="4"> , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , </r>
+        <suspect>true</suspect>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=SupportUnit">
+      <job jobId="PREDEF_Apc"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber534</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,SupportUnit=2">
+        <r p="1">18,18,18</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,SupportUnit=1">
+        <r p="1">30,30,30</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=BbProcessingResource">
+      <job jobId="PREDEF_Lrat"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber535</measType>
+      <measType p="2">pmCounterNumber367</measType>
+      <measType p="3">pmCounterNumber368</measType>
+      <measType p="4">pmCounterNumber369</measType>
+      <measType p="5">pmCounterNumber370</measType>
+      <measType p="6">pmCounterNumber536</measType>
+      <measType p="7">pmCounterNumber537</measType>
+      <measType p="8">pmCounterNumber538</measType>
+      <measType p="9">pmCounterNumber539</measType>
+      <measType p="10">pmCounterNumber540</measType>
+      <measType p="11">pmCounterNumber541</measType>
+      <measType p="12">pmCounterNumber542</measType>
+      <measType p="13">pmCounterNumber543</measType>
+      <measType p="14">pmCounterNumber374</measType>
+      <measType p="15">pmCounterNumber375</measType>
+      <measType p="16">pmCounterNumber376</measType>
+      <measType p="17">pmCounterNumber377</measType>
+      <measType p="18">pmCounterNumber544</measType>
+      <measType p="19">pmCounterNumber545</measType>
+      <measType p="20">pmCounterNumber546</measType>
+      <measType p="21">pmCounterNumber547</measType>
+      <measType p="22">pmCounterNumber548</measType>
+      <measType p="23">pmCounterNumber549</measType>
+      <measType p="24">pmCounterNumber550</measType>
+      <measType p="25">pmCounterNumber551</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,BbProcessingResource=1">
+        <r p="1">0</r>
+        <r p="2">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="20">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=ENodeBFunction">
+      <job jobId="PREDEF_Lrat"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber359Aas</measType>
+      <measType p="2">pmCounterNumber360Aas</measType>
+      <measType p="3">pmCounterNumber554</measType>
+      <measType p="4">pmCounterNumber555</measType>
+      <measType p="5">pmCounterNumber365Actual</measType>
+      <measType p="6">pmCounterNumber366Actual</measType>
+      <measType p="7">pmCounterNumber558</measType>
+      <measType p="8">pmCounterNumber559</measType>
+      <measType p="9">pmCounterNumber560</measType>
+      <measType p="10">pmCounterNumber561</measType>
+      <measType p="11">pmCounterNumber562</measType>
+      <measType p="12">pmCounterNumber563</measType>
+      <measType p="13">pmCounterNumber564</measType>
+      <measType p="14">pmCounterNumber565</measType>
+      <measType p="15">pmCounterNumber566</measType>
+      <measType p="16">pmCounterNumber567</measType>
+      <measType p="17">pmCounterNumber568</measType>
+      <measType p="18">pmCounterNumber569</measType>
+      <measType p="19">pmCounterNumber570</measType>
+      <measType p="20">pmCounterNumber571</measType>
+      <measType p="21">pmCounterNumber572</measType>
+      <measType p="22">pmCounterNumber573</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">5</r>
+        <r p="8">900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">180</r>
+        <r p="10">0</r>
+        <r p="11">8000</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">10000</r>
+        <r p="15">1800</r>
+        <r p="16">10000</r>
+        <r p="17">1800</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=EUtranCellFDD">
+      <job jobId="PREDEF_Lrat"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber306</measType>
+      <measType p="2">pmCounterNumber307</measType>
+      <measType p="3">pmCounterNumber574</measType>
+      <measType p="4">pmCounterNumber575</measType>
+      <measType p="5">pmCounterNumber576</measType>
+      <measType p="6">pmCounterNumber577</measType>
+      <measType p="7">pmCounterNumber578</measType>
+      <measType p="8">pmCounterNumber579</measType>
+      <measType p="9">pmCounterNumber580</measType>
+      <measType p="10">pmCounterNumber581</measType>
+      <measType p="11">pmCounterNumber582</measType>
+      <measType p="12">pmCounterNumber33</measType>
+      <measType p="13">pmCounterNumber34</measType>
+      <measType p="14">pmCounterNumber329</measType>
+      <measType p="15">pmCounterNumber330</measType>
+      <measType p="16">pmCounterNumber583</measType>
+      <measType p="17">pmCounterNumber583Arp</measType>
+      <measType p="18">pmCounterNumber583Csfb</measType>
+      <measType p="19">pmCounterNumber583CsfbArp</measType>
+      <measType p="20">pmCounterNumber583CsfbQci</measType>
+      <measType p="21">pmCounterNumber583HoOngoing</measType>
+      <measType p="22">pmCounterNumber583HoOngoingArp</measType>
+      <measType p="23">pmCounterNumber583HoOngoingQci</measType>
+      <measType p="24">pmCounterNumber583Qci</measType>
+      <measType p="25">pmCounterNumber592</measType>
+      <measType p="26">pmCounterNumber592Arp</measType>
+      <measType p="27">pmCounterNumber594</measType>
+      <measType p="28">pmCounterNumber595</measType>
+      <measType p="29">pmCounterNumber596</measType>
+      <measType p="30">pmCounterNumber597</measType>
+      <measType p="31">pmCounterNumber598</measType>
+      <measType p="32">pmCounterNumber599</measType>
+      <measType p="33">pmCounterNumber599Arp</measType>
+      <measType p="34">pmCounterNumber599Qci</measType>
+      <measType p="35">pmCounterNumber602</measType>
+      <measType p="36">pmCounterNumber602Arp</measType>
+      <measType p="37">pmCounterNumber604</measType>
+      <measType p="38">pmCounterNumber605</measType>
+      <measType p="39">pmCounterNumber606</measType>
+      <measType p="40">pmCounterNumber607</measType>
+      <measType p="41">pmCounterNumber608</measType>
+      <measType p="42">pmCounterNumber609</measType>
+      <measType p="43">pmCounterNumber610</measType>
+      <measType p="44">pmCounterNumber611</measType>
+      <measType p="45">pmCounterNumber612</measType>
+      <measType p="46">pmCounterNumber613</measType>
+      <measType p="47">pmCounterNumber614</measType>
+      <measType p="48">pmCounterNumber615</measType>
+      <measType p="49">pmCounterNumber616</measType>
+      <measType p="50">pmCounterNumber617</measType>
+      <measType p="51">pmCounterNumber618</measType>
+      <measType p="52">pmCounterNumber619</measType>
+      <measType p="53">pmCounterNumber620</measType>
+      <measType p="54">pmCounterNumber621</measType>
+      <measType p="55">pmCounterNumber409</measType>
+      <measType p="56">pmCounterNumber622</measType>
+      <measType p="57">pmCounterNumber623</measType>
+      <measType p="58">pmCounterNumber624</measType>
+      <measType p="59">pmCounterNumber625</measType>
+      <measType p="60">pmCounterNumber626</measType>
+      <measType p="61">pmCounterNumber627</measType>
+      <measType p="62">pmCounterNumber413ResUe</measType>
+      <measType p="63">pmCounterNumber570</measType>
+      <measType p="64">pmCounterNumber213Ce</measType>
+      <measType p="65">pmCounterNumber629</measType>
+      <measType p="66">pmCounterNumber630</measType>
+      <measType p="67">pmCounterNumber631</measType>
+      <measType p="68">pmCounterNumber631Uu</measType>
+      <measType p="69">pmCounterNumber633</measType>
+      <measType p="70">pmCounterNumber634</measType>
+      <measType p="71">pmCounterNumber635</measType>
+      <measType p="72">pmCounterNumber636</measType>
+      <measType p="73">pmCounterNumber637</measType>
+      <measType p="74">pmCounterNumber637FiltQci</measType>
+      <measType p="75">pmCounterNumber637LastTTI</measType>
+      <measType p="76">pmCounterNumber637LastTTIQci</measType>
+      <measType p="77">pmCounterNumber641</measType>
+      <measType p="78">pmCounterNumber642</measType>
+      <measType p="79">pmCounterNumber643</measType>
+      <measType p="80">pmCounterNumber350</measType>
+      <measType p="81">pmCounterNumber350Ce</measType>
+      <measType p="82">pmCounterNumber350Dta</measType>
+      <measType p="83">pmCounterNumber350DtaCe</measType>
+      <measType p="84">pmCounterNumber350Reatt</measType>
+      <measType p="85">pmCounterNumber350ReattCe</measType>
+      <measType p="86">pmCounterNumber350ReattDta</measType>
+      <measType p="87">pmCounterNumber350ReattDtaCe</measType>
+      <measType p="88">pmCounterNumber650</measType>
+      <measType p="89">pmCounterNumber650ActiveUsers</measType>
+      <measType p="90">pmCounterNumber652</measType>
+      <measType p="91">pmCounterNumber652Ce</measType>
+      <measType p="92">pmCounterNumber654</measType>
+      <measType p="93">pmCounterNumber654Ce</measType>
+      <measType p="94">pmCounterNumber354</measType>
+      <measType p="95">pmCounterNumber354Ce</measType>
+      <measType p="96">pmCounterNumber354Dta</measType>
+      <measType p="97">pmCounterNumber354DtaCe</measType>
+      <measType p="98">pmCounterNumber354GummeiNative</measType>
+      <measType p="99">pmCounterNumber660</measType>
+      <measType p="100">pmCounterNumber661</measType>
+      <measType p="101">pmCounterNumber662</measType>
+      <measType p="102">pmCounterNumber663</measType>
+      <measType p="103">pmCounterNumber664</measType>
+      <measType p="104">pmCounterNumber664Ce</measType>
+      <measType p="105">pmCounterNumber664Dta</measType>
+      <measType p="106">pmCounterNumber664DtaCe</measType>
+      <measType p="107">pmCounterNumber664Em</measType>
+      <measType p="108">pmCounterNumber664Hpa</measType>
+      <measType p="109">pmCounterNumber664Mod</measType>
+      <measType p="110">pmCounterNumber664ModCe</measType>
+      <measType p="111">pmCounterNumber664Mos</measType>
+      <measType p="112">pmCounterNumber664Mta</measType>
+      <measType p="113">pmCounterNumber664MtaCe</measType>
+      <measType p="114">pmCounterNumber675</measType>
+      <measType p="115">pmCounterNumber675Ce</measType>
+      <measType p="116">pmCounterNumber677</measType>
+      <measType p="117">pmCounterNumber677Ce</measType>
+      <measType p="118">pmCounterNumber677Dta</measType>
+      <measType p="119">pmCounterNumber677DtaCe</measType>
+      <measType p="120">pmCounterNumber677Em</measType>
+      <measType p="121">pmCounterNumber677Hpa</measType>
+      <measType p="122">pmCounterNumber677Mod</measType>
+      <measType p="123">pmCounterNumber677ModCe</measType>
+      <measType p="124">pmCounterNumber677Mos</measType>
+      <measType p="125">pmCounterNumber677Mta</measType>
+      <measType p="126">pmCounterNumber677MtaCe</measType>
+      <measType p="127">pmCounterNumber688</measType>
+      <measType p="128">pmCounterNumber689</measType>
+      <measType p="129">pmCounterNumber690</measType>
+      <measType p="130">pmCounterNumber691</measType>
+      <measType p="131">pmCounterNumber692</measType>
+      <measType p="132">pmCounterNumber693</measType>
+      <measType p="133">pmCounterNumber694</measType>
+      <measType p="134">pmCounterNumber694Em</measType>
+      <measType p="135">pmCounterNumber696</measType>
+      <measType p="136">pmCounterNumber696Em</measType>
+      <measType p="137">pmCounterNumber698</measType>
+      <measType p="138">pmCounterNumber699</measType>
+      <measType p="139">pmCounterNumber699Em</measType>
+      <measType p="140">pmCounterNumber701</measType>
+      <measType p="141">pmCounterNumber701Em</measType>
+      <measType p="142">pmCounterNumber703</measType>
+      <measType p="143">pmCounterNumber704</measType>
+      <measType p="144">pmCounterNumber705</measType>
+      <measType p="145">pmCounterNumber706</measType>
+      <measType p="146">pmCounterNumber7062</measType>
+      <measType p="147">pmCounterNumber708</measType>
+      <measType p="148">pmCounterNumber709</measType>
+      <measType p="149">pmCounterNumber710</measType>
+      <measType p="150">pmCounterNumber711</measType>
+      <measType p="151">pmCounterNumber712</measType>
+      <measType p="152">pmCounterNumber713</measType>
+      <measType p="153">pmCounterNumber714</measType>
+      <measType p="154">pmCounterNumber715</measType>
+      <measType p="155">pmCounterNumber716</measType>
+      <measType p="156">pmCounterNumber717</measType>
+      <measType p="157">pmCounterNumber718</measType>
+      <measType p="158">pmCounterNumber719</measType>
+      <measType p="159">pmCounterNumber720</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=2">
+        <r p="1">0</r>
+        <r p="2">900</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0,0,0,0</r>
+        <r p="48">0,0,0,0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0,0,0,0</r>
+        <r p="54">0,0,0,0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="59">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0,0,0,0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0</r>
+        <r p="81">0,0,0,0</r>
+        <r p="82">0</r>
+        <r p="83">0,0,0,0</r>
+        <r p="84">0</r>
+        <r p="85">0,0,0,0</r>
+        <r p="86">0</r>
+        <r p="87">0,0,0,0</r>
+        <r p="88">0</r>
+        <r p="89">0</r>
+        <r p="90">0</r>
+        <r p="91">0,0,0,0</r>
+        <r p="92">0</r>
+        <r p="93">0,0,0,0</r>
+        <r p="94">0</r>
+        <r p="95">0,0,0,0</r>
+        <r p="96">0</r>
+        <r p="97">0,0,0,0</r>
+        <r p="98">0</r>
+        <r p="99">0</r>
+        <r p="100">0</r>
+        <r p="101">0</r>
+        <r p="102">0</r>
+        <r p="103">0</r>
+        <r p="104">0,0,0,0</r>
+        <r p="105">0</r>
+        <r p="106">0,0,0,0</r>
+        <r p="107">0</r>
+        <r p="108">0</r>
+        <r p="109">0</r>
+        <r p="110">0,0,0,0</r>
+        <r p="111">0</r>
+        <r p="112">0</r>
+        <r p="113">0,0,0,0</r>
+        <r p="114">0</r>
+        <r p="115">0,0,0,0</r>
+        <r p="116">0</r>
+        <r p="117">0,0,0,0</r>
+        <r p="118">0</r>
+        <r p="119">0,0,0,0</r>
+        <r p="120">0</r>
+        <r p="121">0</r>
+        <r p="122">0</r>
+        <r p="123">0,0,0,0</r>
+        <r p="124">0</r>
+        <r p="125">0</r>
+        <r p="126">0,0,0,0</r>
+        <r p="127">0</r>
+        <r p="128">0</r>
+        <r p="129">0</r>
+        <r p="130">0</r>
+        <r p="131">0</r>
+        <r p="132">0</r>
+        <r p="133">0</r>
+        <r p="134">0</r>
+        <r p="135">0</r>
+        <r p="136">0</r>
+        <r p="137">0</r>
+        <r p="138">0</r>
+        <r p="139">0</r>
+        <r p="140">0</r>
+        <r p="141">0</r>
+        <r p="142">0</r>
+        <r p="143">0</r>
+        <r p="144">0</r>
+        <r p="145">0</r>
+        <r p="146">0</r>
+        <r p="147">0</r>
+        <r p="148">0</r>
+        <r p="149">0</r>
+        <r p="150">0</r>
+        <r p="151">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="152">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="153">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="154">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="155">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="156">0</r>
+        <r p="157">0</r>
+        <r p="158">0,0,0,0,0,0,0,0</r>
+        <r p="159">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=1">
+        <r p="1">0</r>
+        <r p="2">900</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0,0,0,0</r>
+        <r p="48">0,0,0,0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0,0,0,0</r>
+        <r p="54">0,0,0,0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="59">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0,0,0,0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+        <r p="74">0</r>
+        <r p="75">0</r>
+        <r p="76">0</r>
+        <r p="77">0</r>
+        <r p="78">0</r>
+        <r p="79">0</r>
+        <r p="80">0</r>
+        <r p="81">0,0,0,0</r>
+        <r p="82">0</r>
+        <r p="83">0,0,0,0</r>
+        <r p="84">0</r>
+        <r p="85">0,0,0,0</r>
+        <r p="86">0</r>
+        <r p="87">0,0,0,0</r>
+        <r p="88">0</r>
+        <r p="89">0</r>
+        <r p="90">0</r>
+        <r p="91">0,0,0,0</r>
+        <r p="92">0</r>
+        <r p="93">0,0,0,0</r>
+        <r p="94">0</r>
+        <r p="95">0,0,0,0</r>
+        <r p="96">0</r>
+        <r p="97">0,0,0,0</r>
+        <r p="98">0</r>
+        <r p="99">0</r>
+        <r p="100">0</r>
+        <r p="101">0</r>
+        <r p="102">0</r>
+        <r p="103">0</r>
+        <r p="104">0,0,0,0</r>
+        <r p="105">0</r>
+        <r p="106">0,0,0,0</r>
+        <r p="107">0</r>
+        <r p="108">0</r>
+        <r p="109">0</r>
+        <r p="110">0,0,0,0</r>
+        <r p="111">0</r>
+        <r p="112">0</r>
+        <r p="113">0,0,0,0</r>
+        <r p="114">0</r>
+        <r p="115">0,0,0,0</r>
+        <r p="116">0</r>
+        <r p="117">0,0,0,0</r>
+        <r p="118">0</r>
+        <r p="119">0,0,0,0</r>
+        <r p="120">0</r>
+        <r p="121">0</r>
+        <r p="122">0</r>
+        <r p="123">0,0,0,0</r>
+        <r p="124">0</r>
+        <r p="125">0</r>
+        <r p="126">0,0,0,0</r>
+        <r p="127">0</r>
+        <r p="128">0</r>
+        <r p="129">0</r>
+        <r p="130">0</r>
+        <r p="131">0</r>
+        <r p="132">0</r>
+        <r p="133">0</r>
+        <r p="134">0</r>
+        <r p="135">0</r>
+        <r p="136">0</r>
+        <r p="137">0</r>
+        <r p="138">0</r>
+        <r p="139">0</r>
+        <r p="140">0</r>
+        <r p="141">0</r>
+        <r p="142">0</r>
+        <r p="143">0</r>
+        <r p="144">0</r>
+        <r p="145">0</r>
+        <r p="146">0</r>
+        <r p="147">0</r>
+        <r p="148">0</r>
+        <r p="149">0</r>
+        <r p="150">0</r>
+        <r p="151">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="152">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="153">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="154">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="155">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</r>
+        <r p="156">0</r>
+        <r p="157">0</r>
+        <r p="158">0,0,0,0,0,0,0,0</r>
+        <r p="159">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=BbProcessingResource">
+      <job jobId="nrcell"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber550Burst</measType>
+      <measType p="2">pmCounterNumber550Format</measType>
+      <measType p="3">pmCounterNumber550X2Fwd</measType>
+      <measType p="4">pmCounterNumber724</measType>
+      <measType p="5">pmCounterNumber725</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,Equipment=1,FieldReplaceableUnit=BB-1,BbProcessingResource=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=EUtranCellFDD">
+      <job jobId="nrcell"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber726</measType>
+      <measType p="2">pmCounterNumber727</measType>
+      <measType p="3">pmCounterNumber728</measType>
+      <measType p="4">pmCounterNumber729</measType>
+      <measType p="5">pmCounterNumber730</measType>
+      <measType p="6">pmCounterNumber731</measType>
+      <measType p="7">pmCounterNumber732</measType>
+      <measType p="8">pmCounterNumber733</measType>
+      <measType p="9">pmCounterNumber734</measType>
+      <measType p="10">pmCounterNumber735</measType>
+      <measType p="11">pmCounterNumber629CatMDrxNoSyncQci</measType>
+      <measType p="12">pmCounterNumber629CatMDrxSyncQci</measType>
+      <measType p="13">pmCounterNumber629CatMNoDrxNoSyncQci</measType>
+      <measType p="14">pmCounterNumber629CatMNoDrxSyncQci</measType>
+      <measType p="15">pmCounterNumber629DrxNoSyncQci</measType>
+      <measType p="16">pmCounterNumber629DrxSync</measType>
+      <measType p="17">pmCounterNumber629DrxSyncQci</measType>
+      <measType p="18">pmCounterNumber629NoDrxNoSyncQci</measType>
+      <measType p="19">pmCounterNumber629NoDrxSyncQci</measType>
+      <measType p="20">pmCounterNumber629Qci</measType>
+      <measType p="21">pmCounterNumber630CatMDrxNoSyncQci</measType>
+      <measType p="22">pmCounterNumber630CatMDrxSyncQci</measType>
+      <measType p="23">pmCounterNumber630CatMNoDrxNoSyncQci</measType>
+      <measType p="24">pmCounterNumber630CatMNoDrxSyncQci</measType>
+      <measType p="25">pmCounterNumber630DrxNoSyncQci</measType>
+      <measType p="26">pmCounterNumber630DrxSync</measType>
+      <measType p="27">pmCounterNumber630DrxSyncQci</measType>
+      <measType p="28">pmCounterNumber630NoDrxNoSyncQci</measType>
+      <measType p="29">pmCounterNumber630NoDrxSyncQci</measType>
+      <measType p="30">pmCounterNumber630Qci</measType>
+      <measType p="31">pmCounterNumber756</measType>
+      <measType p="32">pmCounterNumber756Qci</measType>
+      <measType p="33">pmCounterNumber758</measType>
+      <measType p="34">pmCounterNumber758Qci</measType>
+      <measType p="35">pmCounterNumber631Qci</measType>
+      <measType p="36">pmCounterNumber631UuQci</measType>
+      <measType p="37">pmCounterNumber762</measType>
+      <measType p="38">pmCounterNumber633Limitations</measType>
+      <measType p="39">pmCounterNumber633MissingPdus2Qci</measType>
+      <measType p="40">pmCounterNumber633Qci</measType>
+      <measType p="41">pmCounterNumber633RohcFail2Qci</measType>
+      <measType p="42">pmCounterNumber633SrbTooLarge</measType>
+      <measType p="43">pmCounterNumber768</measType>
+      <measType p="44">pmCounterNumber769</measType>
+      <measType p="45">pmCounterNumber770</measType>
+      <measType p="46">pmCounterNumber771</measType>
+      <measType p="47">pmCounterNumber771Qci</measType>
+      <measType p="48">pmCounterNumber634Qci</measType>
+      <measType p="49">pmCounterNumber635Qci</measType>
+      <measType p="50">pmCounterNumber775</measType>
+      <measType p="51">pmCounterNumber637Ca</measType>
+      <measType p="52">pmCounterNumber637LastTTICa</measType>
+      <measType p="53">pmCounterNumber637Qci</measType>
+      <measType p="54">pmCounterNumber637TransPlmn0</measType>
+      <measType p="55">pmCounterNumber637TransPlmn1</measType>
+      <measType p="56">pmCounterNumber637TransPlmn2</measType>
+      <measType p="57">pmCounterNumber637TransPlmn3</measType>
+      <measType p="58">pmCounterNumber637TransPlmn4</measType>
+      <measType p="59">pmCounterNumber637TransPlmn5</measType>
+      <measType p="60">pmCounterNumber637TransPlmn6</measType>
+      <measType p="61">pmCounterNumber637TransQci</measType>
+      <measType p="62">pmCounterNumber787</measType>
+      <measType p="63">pmCounterNumber641Trans</measType>
+      <measType p="64">pmCounterNumber789</measType>
+      <measType p="65">pmCounterNumber642Plmn0</measType>
+      <measType p="66">pmCounterNumber642Plmn1</measType>
+      <measType p="67">pmCounterNumber642Plmn2</measType>
+      <measType p="68">pmCounterNumber642Plmn3</measType>
+      <measType p="69">pmCounterNumber642Plmn4</measType>
+      <measType p="70">pmCounterNumber642Plmn5</measType>
+      <measType p="71">pmCounterNumber642Plmn6</measType>
+      <measType p="72">pmCounterNumber642Qci</measType>
+      <measType p="73">pmCounterNumber798</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=2">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,ENodeBFunction=1,EUtranCellFDD=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="6">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="7">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="8">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="9">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="10">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="11">0</r>
+        <r p="12">0</r>
+        <r p="13">0</r>
+        <r p="14">0</r>
+        <r p="15">0</r>
+        <r p="16">0</r>
+        <r p="17">0</r>
+        <r p="18">0</r>
+        <r p="19">0</r>
+        <r p="20">0</r>
+        <r p="21">0</r>
+        <r p="22">0</r>
+        <r p="23">0</r>
+        <r p="24">0</r>
+        <r p="25">0</r>
+        <r p="26">0</r>
+        <r p="27">0</r>
+        <r p="28">0</r>
+        <r p="29">0</r>
+        <r p="30">0</r>
+        <r p="31">0</r>
+        <r p="32">0</r>
+        <r p="33">0</r>
+        <r p="34">0</r>
+        <r p="35">0</r>
+        <r p="36">0</r>
+        <r p="37">0</r>
+        <r p="38">0</r>
+        <r p="39">0</r>
+        <r p="40">0</r>
+        <r p="41">0</r>
+        <r p="42">0,0,0,0,0,0,0,0,0,0</r>
+        <r p="43">0</r>
+        <r p="44">0</r>
+        <r p="45">0</r>
+        <r p="46">0</r>
+        <r p="47">0</r>
+        <r p="48">0</r>
+        <r p="49">0</r>
+        <r p="50">0</r>
+        <r p="51">0</r>
+        <r p="52">0</r>
+        <r p="53">0</r>
+        <r p="54">0</r>
+        <r p="55">0</r>
+        <r p="56">0</r>
+        <r p="57">0</r>
+        <r p="58">0</r>
+        <r p="59">0</r>
+        <r p="60">0</r>
+        <r p="61">0</r>
+        <r p="62">0</r>
+        <r p="63">0</r>
+        <r p="64">0</r>
+        <r p="65">0</r>
+        <r p="66">0</r>
+        <r p="67">0</r>
+        <r p="68">0</r>
+        <r p="69">0</r>
+        <r p="70">0</r>
+        <r p="71">0</r>
+        <r p="72">0</r>
+        <r p="73">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=GNBCUUPFunction_GNBCUUP">
+      <job jobId="nrcell"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber799</measType>
+      <measType p="2">pmCounterNumber799Gtpu</measType>
+      <measType p="3">pmCounterNumber799NoCtxt</measType>
+      <measType p="4">pmCounterNumber802</measType>
+      <measType p="5">pmCounterNumber803</measType>
+      <measType p="6">pmCounterNumber804</measType>
+      <measType p="7">pmCounterNumber805</measType>
+      <measType p="8">pmCounterNumber806</measType>
+      <measType p="9">pmCounterNumber807</measType>
+      <measType p="10">pmCounterNumber808</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUUPFunction=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+        <r p="3">0</r>
+        <r p="4">0</r>
+        <r p="5">0</r>
+        <r p="6">0</r>
+        <r p="7">0</r>
+        <r p="8">0</r>
+        <r p="9">0</r>
+        <r p="10">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=NRCellCU_GNBCUCP">
+      <job jobId="nrcell"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmEndcUeCapabilityUlPdcpDelay</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=32">
+        <r p="1">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=31">
+        <r p="1">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=2">
+        <r p="1">0</r>
+      </measValue>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUCPFunction=1,NRCellCU=1">
+        <r p="1">0</r>
+      </measValue>
+    </measInfo>
+    <measInfo measInfoId="PM=1,PmGroup=X2UTermination_GNBCUUP">
+      <job jobId="nrcell"/>
+      <granPeriod duration="PT900S"
+                  endTime="2022-04-18T19:15:00+00:00"/>
+      <repPeriod duration="PT900S"/>
+      <measType p="1">pmCounterNumber802</measType>
+      <measType p="2">pmCounterNumber803</measType>
+      <measValue measObjLdn="ManagedElement=nodedntest,GNBCUUPFunction=1,X2UTermination=1">
+        <r p="1">0</r>
+        <r p="2">0</r>
+      </measValue>
+    </measInfo>
+  </measData>
+  <fileFooter>
+    <measCollec endTime="2022-04-18T19:15:00+00:00"/>
+  </fileFooter>
+</measCollecFile>
diff --git a/pm-file-flow-demo/docker-proj/pm-files/pm.xml.gz b/pm-file-flow-demo/docker-proj/pm-files/pm.xml.gz
new file mode 100644
index 0000000..df90359
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/pm-files/pm.xml.gz
Binary files differ
diff --git a/pm-file-flow-demo/docker-proj/scripts/clean-ne-files.sh b/pm-file-flow-demo/docker-proj/scripts/clean-ne-files.sh
new file mode 100755
index 0000000..74f98d2
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/scripts/clean-ne-files.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+SD=$(dirname -- "$0")
+echo "script-home: "$SD
+
+cd $SD/..
+
+if [ -d "ne-files" ]; then
+    cd "ne-files"
+    if [ $? -eq 0 ]; then
+        if [[ "$PWD" == *"/ne-files" ]]; then
+            CNT=$(find . -maxdepth 2 -name 'A*' | wc -l)
+            echo " Deleting $CNT files in $PWD"
+            find . -maxdepth 2 -name 'A*' -delete
+        else
+            echo "Cannot determine if current dir is ne-files"
+            echo "Exiting..."
+            exit 1
+        fi
+    else
+        echo "Cannnot cd to ne-files"
+        echo "Exiting..."
+        exit 1
+    fi
+else
+    echo "Dir ne-files not found"
+    echo "Exiting..."
+    exit 1
+fi
+
+echo "DONE"
+exit 0
+
diff --git a/pm-file-flow-demo/docker-proj/scripts/clean-shared-volume.sh b/pm-file-flow-demo/docker-proj/scripts/clean-shared-volume.sh
new file mode 100755
index 0000000..6f937ab
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/scripts/clean-shared-volume.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+echo "Deleting files in shared volumes"
+SD=$(dirname -- "$0")
+echo " script-home: "$SD
+
+cd $SD/..
+
+if [ -d "shared-volume" ]; then
+    cd "shared-volume"
+    if [ $? -eq 0 ]; then
+        if [[ "$PWD" == *"/shared-volume" ]]; then
+            CNT=$(find . -maxdepth 2 -name 'A*' | wc -l)
+            echo " Deleting $CNT files in $PWD"
+            find . -maxdepth 2 -name 'A*' -delete
+        else
+            echo "Cannot determine if current dir is shared-volume"
+            echo "Exiting..."
+            exit 1
+        fi
+    else
+        echo "Cannnot cd to shared-volume"
+        echo "Exiting..."
+        exit 1
+    fi
+else
+    echo "Dir shared-volume not found"
+    echo "Exiting..."
+    exit 1
+fi
+
+echo "DONE"
+exit 0
diff --git a/pm-file-flow-demo/docker-proj/scripts/cont-stats.sh b/pm-file-flow-demo/docker-proj/scripts/cont-stats.sh
new file mode 100755
index 0000000..69cab82
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/scripts/cont-stats.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+while [ true ]; do
+    docker stats --no-stream > .tmp.stats;
+    clear
+    cat .tmp.stats
+done
+
diff --git a/pm-file-flow-demo/docker-proj/scripts/kafka-client-send-collected-file.sh b/pm-file-flow-demo/docker-proj/scripts/kafka-client-send-collected-file.sh
new file mode 100755
index 0000000..4a67774
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/scripts/kafka-client-send-collected-file.sh
@@ -0,0 +1,69 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+SD=$(dirname -- "$0")
+echo "script-home: "$SD
+cd $SD
+CWD=$PWD
+
+NODE_COUNT=$1
+EVT_COUNT=$2
+NODE_NAME_BASE=$3
+FILE_EXT=$4
+DIR=$5
+
+
+
+print_usage() {
+    echo "Usage: kafka-client-send-collected-file.sh <node-count> <num-of-events> <node-name-base> <file-extension> dir|no-dir"
+    exit 1
+}
+
+if [ $# -ne 5 ]; then
+    print_usage
+fi
+
+if [ $DIR == "dir" ]; then
+    :
+elif [ $DIR == "no-dir" ]; then
+    :
+else
+    print_usage
+fi
+
+rm .out.json
+touch .out.json
+
+for (( i=0; i<$EVT_COUNT; i++)); do
+
+    for (( j=0; j<$NODE_COUNT; j++)); do
+        NO="$NODE_NAME_BASE-$j"
+        FN="A20000626.2315+0200-2330+0200_$NO-$i.$FILE_EXT"
+        if [ $DIR == "dir" ]; then
+            FN=$NO/$FN
+        fi
+        echo "NODE "$NO
+        echo "FILENAME "$FN
+        EVT='{"productName":"RnNode","vendorName":"Ericsson","lastEpochMicrosec":151983,"sourceName":"'$NO'","startEpochMicrosec":15198378,"timeZoneOffset":"UTC+05:00","compression":"gzip","fileFormatType":"org.3GPP.32.435#measCollec","fileFormatVersion":"V10","name":"'$FN'","changeIdentifier":"PM_MEAS_FILES"}'
+        echo $EVT >> .out.json
+    done
+
+done
+cat .out.json| kafka-console-producer --topic collected-file --broker-list kafka-1:29092
+
diff --git a/pm-file-flow-demo/docker-proj/scripts/kafka-client-send-file-ready.sh b/pm-file-flow-demo/docker-proj/scripts/kafka-client-send-file-ready.sh
new file mode 100755
index 0000000..a62a9ab
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/scripts/kafka-client-send-file-ready.sh
@@ -0,0 +1,179 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+SD=$(dirname -- "$0")
+echo "script-home: "$SD
+cd $SD
+CWD=$PWD
+
+NODE_COUNT=$1
+EVT_COUNT=$2
+NODE_NAME_BASE=$3
+FILE_EXT=$4
+TYPE=$5
+SRV_COUNT=$6
+HIST=$7
+
+FTPES_PORT=2021
+SFTP_PORT=2022
+HTTPS_PORT=443
+
+print_usage() {
+    echo "Usage: kafka-client-send-file-ready.sh <node-count> <num-of-events> <node-name-base> <file-extension> sftp|ftpes|https <num-servers> [hist]"
+    exit 1
+}
+echo $@
+if [ $# -lt 6 ] && [ $# -gt 7 ]; then
+    print_usage
+fi
+
+if [ $TYPE == "sftp" ]; then
+    :
+elif [ $TYPE == "ftpes" ]; then
+    :
+elif [ $TYPE == "https" ]; then
+    :
+else
+    print_usage
+fi
+HIST_LEN=0
+if [ ! -z "$HIST" ]; then
+    if [ $HIST != "hist" ]; then
+        print_usage
+    fi
+    HIST_LEN=96
+fi
+
+BEGINTIME=1665146700
+CURTIME=$BEGINTIME
+
+BATCHSIZE=1000
+
+CNTR=0
+TCNTR=0
+
+for (( i=0; i<$EVT_COUNT; i++)); do
+
+    if [ $CNTR -eq 0 ]; then
+        rm .out.json
+        touch .out.json
+    fi
+
+    if [ "$HIST" == "" ]; then
+        echo "EVENT NO: $i for $NODE_COUNT NODES - 1 FILE PER EVENT"
+    else
+        echo "EVENT NO: $i for $NODE_COUNT NODES - $HIST_LEN FILES PER EVENT"
+    fi
+
+    ST=$(date -d @$CURTIME +'%Y%m%d.%H%M')
+    let CURTIME=CURTIME+900
+    ET=$(date -d @$CURTIME +'%H%M')
+
+    for (( j=0; j<$NODE_COUNT; j++)); do
+
+        if [ "$HIST" == "" ]; then
+            NO="$NODE_NAME_BASE-$j"
+
+            #FN="A20000626.2315+0200-2330+0200_$NO-$i.$FILE_EXT"
+            FN="A$ST+0200-$ET+0200_$NO-$i.$FILE_EXT"
+            let SRV_ID=$j%$SRV_COUNT
+            let SRV_ID=SRV_ID+1
+            echo "NODE "$NO
+            echo "FILENAME "$FN
+
+
+            if [ $TYPE == "sftp" ]; then
+                SRV="ftp-sftp-$SRV_ID"
+                echo "FTP SERVER "$SRV
+                URL="sftp://onap:pano@$SRV:$SFTP_PORT/$FN"
+            elif [ $TYPE == "ftpes" ]; then
+                SRV="ftp-ftpes-$SRV_ID"
+                echo "FTP SERVER "$SRV
+                URL="ftpes://onap:pano@$SRV:$FTPES_PORT/$FN"
+            elif [ $TYPE == "https" ]; then
+                SRV="pm-https-server-$SRV_ID"
+                echo "HTTP SERVER "$SRV
+                URL="https://$SRV:$HTTPS_PORT/files/$FN"
+            fi
+            EVT='{"event":{"commonEventHeader":{"sequence":0,"eventName":"Noti_RnNode-Ericsson_FileReady","sourceName":"'$NO'","lastEpochMicrosec":151983,"startEpochMicrosec":15198378,"timeZoneOffset":"UTC+05:00","changeIdentifier":"PM_MEAS_FILES"},"notificationFields":{"notificationFieldsVersion":"notificationFieldsVersion","changeType":"FileReady","changeIdentifier":"PM_MEAS_FILES","arrayOfNamedHashMap":[{"name":"'$FN'","hashMap":{"fileFormatType":"org.3GPP.32.435#measCollec","location":"'$URL'","fileFormatVersion":"V10","compression":"gzip"}}]}}}'
+            echo $EVT >> .out.json
+        else
+            NO="$NODE_NAME_BASE-$j"
+
+            let SRV_ID=$j%$SRV_COUNT
+            let SRV_ID=SRV_ID+1
+            echo "NODE "$NO
+
+            EVT_FRAG=""
+            for(( k=95; k>=0; k-- )); do
+
+                let FID=$i-k
+                CURTIME=$(($BEGINTIME+$FID*900))
+                ST=$(date -d @$CURTIME +'%Y%m%d.%H%M')
+                let CURTIME=CURTIME+900
+                ET=$(date -d @$CURTIME +'%H%M')
+                if [ $FID -lt 0 ]; then
+                    FN="NONEXISTING_$NO-$FID.$FILE_EXT"
+                else
+                    #FN="A20000626.2315+0200-2330+0200_$NO-$FID.$FILE_EXT"
+                    FN="A$ST+0200-$ET+0200_$NO-$FID.$FILE_EXT"
+                fi
+                echo "FILENAME "$FN
+                if [ $TYPE == "sftp" ]; then
+                    SRV="ftp-sftp-$SRV_ID"
+                    #echo "FTP SERVER "$SRV
+                    URL="sftp://onap:pano@$SRV:$SFTP_PORT/$FN"
+                elif [ $TYPE == "ftpes" ]; then
+                    SRV="ftp-ftpes-$SRV_ID"
+                    #echo "FTP SERVER "$SRV
+                    URL="ftpes://onap:pano@$SRV:$FTPES_PORT/$FN"
+                elif [ $TYPE == "https" ]; then
+                    SRV="pm-https-server-$SRV_ID"
+                    #echo "HTTP SERVER "$SRV
+                    URL="https://$SRV:$HTTPS_PORT/files/$FN"
+                fi
+                if [ "$EVT_FRAG" != "" ]; then
+                    EVT_FRAG=$EVT_FRAG","
+                fi
+                EVT_FRAG=$EVT_FRAG'{"name":"'$FN'","hashMap":{"fileFormatType":"org.3GPP.32.435#measCollec","location":"'$URL'","fileFormatVersion":"V10","compression":"gzip"}}'
+            done
+
+            EVT='{"event":{"commonEventHeader":{"sequence":0,"eventName":"Noti_RnNode-Ericsson_FileReady","sourceName":"'$NO'","lastEpochMicrosec":151983,"startEpochMicrosec":15198378,"timeZoneOffset":"UTC+05:00","changeIdentifier":"PM_MEAS_FILES"},"notificationFields":{"notificationFieldsVersion":"notificationFieldsVersion","changeType":"FileReady","changeIdentifier":"PM_MEAS_FILES","arrayOfNamedHashMap":['$EVT_FRAG']}}}'
+            echo $EVT >> .out.json
+
+        fi
+
+        let CNTR=CNTR+1
+        let TCNTR=TCNTR+1
+        if [ $CNTR -ge $BATCHSIZE ]; then
+            echo "Pushing batch of $CNTR events"
+            cat .out.json | kafka-console-producer --topic file-ready --broker-list kafka-1:29092
+            rm .out.json
+            touch .out.json
+            CNTR=0
+        fi
+    done
+
+done
+if [ $CNTR -ne 0 ]; then
+    echo "Pushing batch of $CNTR events"
+    cat .out.json | kafka-console-producer --topic file-ready --broker-list kafka-1:29092
+fi
+
+echo "Pushed $TCNTR events"
diff --git a/pm-file-flow-demo/docker-proj/scripts/list-topics.sh b/pm-file-flow-demo/docker-proj/scripts/list-topics.sh
new file mode 100755
index 0000000..a4d949b
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/scripts/list-topics.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+docker exec -it client \
+        bash -c 'kafka-topics --list --bootstrap-server kafka-1:29092'
diff --git a/pm-file-flow-demo/docker-proj/scripts/populate-ne-files.sh b/pm-file-flow-demo/docker-proj/scripts/populate-ne-files.sh
new file mode 100755
index 0000000..2250615
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/scripts/populate-ne-files.sh
@@ -0,0 +1,75 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+SD=$(dirname -- "$0")
+echo "script-home: "$SD
+cd $SD
+CWD=$PWD
+
+NODE_COUNT=$1
+FILE_COUNT=$2
+NODE_NAME_BASE=$3
+FILE_EXT=$4
+
+print_usage() {
+    echo "Usage: populate-ne-files.sh <node-count> <file-count> <node-name-base> <file-extension>"
+    exit 1
+}
+if [ $# -ne 4 ]; then
+    print_usage
+fi
+
+create_files() {
+    cp ../pm-files/pm.$FILE_EXT $DIR/pm.$FILE_EXT
+    if [ $? -ne 0 ]; then
+        echo "Copy base file: pm.$FILE_EXT to $DIR failed"
+        echo "Exiting..."
+        exit 1
+    fi
+
+    cd $DIR
+    CNT=0
+    for (( i=0; i<$NODE_COUNT; i++ )); do
+        for (( j=0; j<$FILE_COUNT; j++ )); do
+            ERR=$(ln -s pm.$FILE_EXT A20000626.2315+0200-2330+0200_$NODE_NAME_BASE-$i-$j.$FILE_EXT 2>&1)
+            if [ $? -ne 0 ]; then
+                if [[ "$ERR" != *"File exists"* ]]; then
+                    echo "Cannot create symbolic link in $DIR, err: $ERR"
+                    echo "Exiting..."
+                    exit 1
+                fi
+            fi
+            let CNT=CNT+1
+        done
+    done
+    echo " Created $CNT symlinks to pm.$FILE_EXT"
+}
+
+
+echo "Creating files for download"
+cd $CWD
+DIR="../ne-files"
+if [ ! -d "$DIR" ]; then
+    echo "Dir $DIR for ne-files not foud"
+    exit 1
+fi
+create_files
+
+echo "DONE"
+
diff --git a/pm-file-flow-demo/docker-proj/scripts/push-evt-to-topic.sh b/pm-file-flow-demo/docker-proj/scripts/push-evt-to-topic.sh
new file mode 100755
index 0000000..22baae5
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/scripts/push-evt-to-topic.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+print_usage() {
+        echo "Usage: push-evt-to-topic.sh <topic> <num-msgs> key|nokey <file-name>"
+        exit 1
+}
+
+if [ $# -ne 4 ]; then
+        print_usage
+fi
+
+retcode=0
+
+if [ $3 == "key" ]; then
+        docker exec -it client \
+                bash -c ' for (( i=0; i<'$2'; i++ )); do echo "a,{\"filename\":\"'$4'\"}"; done | kafka-console-producer --topic '$1' --broker-list kafka-1:29092 --property parse.key=true --property key.separator=,'
+        retcode=$?
+elif [ $3 == "nokey" ]; then
+        docker exec -it client \
+                bash -c ' for (( i=0; i<'$2'; i++ )); do echo "{\"filename\":\"'$4'\"}"; done | kafka-console-producer --topic '$1' --broker-list kafka-1:29092'
+        retcode=$?
+else
+        print_usage
+fi
+
+if [ $retcode -eq 0 ]; then
+        echo "Pushed $2 msgs to $1 using $3"
+else
+        echo "FAILED to push $2 msgs to $1 using $3"
+fi
diff --git a/pm-file-flow-demo/docker-proj/scripts/push-evt-to-topic2.sh b/pm-file-flow-demo/docker-proj/scripts/push-evt-to-topic2.sh
new file mode 100755
index 0000000..5a215ff
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/scripts/push-evt-to-topic2.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+print_usage() {
+        echo "Usage: push-evt-to-topic2.sh <topic> <num-msgs>" ## key|nokey <file-name>"
+        exit 1
+}
+
+if [ $# -ne 2 ]; then
+        print_usage
+fi
+
+
+D='{\"productName\":\"\",\"vendorName\":\"\",\"lastEpochMicrosec\":1650309300000,\"sourceName\":\"\",\"startEpochMicrosec\":1650308400000,\"timeZoneOffset\":\"\",\"location\":\"\",\"compression\":\"\",\"fileFormatType\":\"\",\"fileFormatVersion\":\"\",\"name\":\"pm.xml.gz\",\"changeIdentifier\":\"PM_MEAS_FILES\",\"internalLocation\":\"internalLocation\"}'
+docker exec -it client \
+                bash -c ' for (( i=0; i<'$2'; i++ )) ; do  echo "'$D'" ; done | kafka-console-producer --topic '$1' --broker-list kafka-1:29092'
+
+
+
diff --git a/pm-file-flow-demo/docker-proj/scripts/push-to-collected-file-topic.sh b/pm-file-flow-demo/docker-proj/scripts/push-to-collected-file-topic.sh
new file mode 100755
index 0000000..f3db76c
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/scripts/push-to-collected-file-topic.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+SD=$(dirname -- "$0")
+echo "${0##*/} script-home: "$SD
+cd $SD
+CWD=$PWD
+
+NODE_COUNT=$1
+EVT_COUNT=$2
+NODE_NAME_BASE=$3
+FILE_EXT=$4
+DIR=$5
+
+print_usage() {
+    echo "Usage: push-to-collected-file-topic.sh <node-count> <num-of-events> <node-name-base> <file-extension> dir|no-dir"
+    exit 1
+}
+
+if [ $# -ne 5 ]; then
+    print_usage
+fi
+
+if [ $DIR == "dir" ]; then
+    :
+elif [ $DIR == "no-dir" ]; then
+    :
+else
+    print_usage
+fi
+
+
+chmod +x kafka-client-send-collected-file.sh
+docker cp kafka-client-send-collected-file.sh client:/home/appuser
+
+docker exec -it client bash -c './kafka-client-send-collected-file.sh '$NODE_COUNT' '$EVT_COUNT' '$NODE_NAME_BASE' '$FILE_EXT' '$DIR
+
+echo done
diff --git a/pm-file-flow-demo/docker-proj/scripts/push-to-file-ready-topic.sh b/pm-file-flow-demo/docker-proj/scripts/push-to-file-ready-topic.sh
new file mode 100755
index 0000000..3e19071
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/scripts/push-to-file-ready-topic.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+SD=$(dirname -- "$0")
+echo "${0##*/} script-home: "$SD
+cd $SD
+CWD=$PWD
+
+
+NODE_COUNT=$1
+EVT_COUNT=$2
+NODE_NAME_BASE=$3
+FILE_EXT=$4
+TYPE=$5
+SRV_COUNT=$6
+HIST=$7
+
+print_usage() {
+    echo "Usage: push-to-file-ready-topic.sh <node-count> <num-of-events> <node-name-base> <file-extension> sftp|ftpes|https <num-servers> [hist]"
+    exit 1
+}
+if [ $# -lt 6 ] || [ $# -gt 7 ]; then
+    print_usage
+fi
+
+if [ $TYPE == "sftp" ]; then
+    :
+elif [ $TYPE == "ftpes" ]; then
+    :
+elif [ $TYPE == "https" ]; then
+    :
+else
+    print_usage
+fi
+
+if [ ! -z "$HIST" ]; then
+    if [ $HIST != "hist" ]; then
+        print_usage
+    fi
+fi
+
+chmod +x kafka-client-send-file-ready.sh
+docker cp kafka-client-send-file-ready.sh client:/home/appuser
+
+docker exec -it client bash -c './kafka-client-send-file-ready.sh '$NODE_COUNT' '$EVT_COUNT' '$NODE_NAME_BASE' '$FILE_EXT' '$TYPE' '$SRV_COUNT' '$HIST
+
+echo done
+
diff --git a/pm-file-flow-demo/docker-proj/scripts/push-to-ves-collector.sh b/pm-file-flow-demo/docker-proj/scripts/push-to-ves-collector.sh
new file mode 100755
index 0000000..a21baa6
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/scripts/push-to-ves-collector.sh
@@ -0,0 +1,177 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+SD=$(dirname -- "$0")
+echo "script-home: "$SD
+cd $SD
+CWD=$PWD
+
+NODE_COUNT=$1
+EVT_COUNT=$2
+NODE_NAME_BASE=$3
+FILE_EXT=$4
+TYPE=$5
+SRV_COUNT=$6
+HIST=$7
+
+FTPES_PORT=2021
+SFTP_PORT=2022
+HTTPS_PORT=443
+
+print_usage() {
+    echo "Usage: push-to-ves-collector.sh <node-count> <num-of-events> <node-name-base> <file-extension> sftp|ftpes|https <num-servers> [hist]"
+    exit 1
+}
+echo $@
+if [ $# -lt 6 ] || [ $# -gt 7 ]; then
+    print_usage
+fi
+
+if [ $TYPE == "sftp" ]; then
+    :
+elif [ $TYPE == "ftpes" ]; then
+    :
+elif [ $TYPE == "https" ]; then
+    :
+else
+    print_usage
+fi
+HIST_LEN=0
+if [ ! -z "$HIST" ]; then
+    if [ $HIST != "hist" ]; then
+        print_usage
+    fi
+    HIST_LEN=96
+fi
+
+rm .out.json
+touch .out.json
+
+BEGINTIME=1665146700
+CURTIME=$BEGINTIME
+
+for (( i=0; i<$EVT_COUNT; i++)); do
+
+    if [ "$HIST" == "" ]; then
+        echo "EVENT BATCH: $i of $EVT_COUNT events for $NODE_COUNT NODES - 1 FILE PER EVENT"
+    else
+        echo "EVENT BATCH: $i of $EVT_COUNT events for $NODE_COUNT NODES - $HIST_LEN FILES PER EVENT"
+    fi
+    echo '{"eventList": [' > .out.json
+    first=0
+
+    arch="$(uname -s)"
+    if [[ $arch == "Darwin"* ]]; then
+        ST=$(date -r $CURTIME +'%Y%m%d.%H%M')
+        let CURTIME=CURTIME+900
+        ET=$(date -r $CURTIME +'%H%M')
+    else
+        ST=$(date -d @$CURTIME +'%Y%m%d.%H%M')
+        let CURTIME=CURTIME+900
+        ET=$(date -d @$CURTIME +'%H%M')
+    fi
+
+    for (( j=0; j<$NODE_COUNT; j++)); do
+
+        if [ "$HIST" == "" ]; then
+            NO="$NODE_NAME_BASE-$j"
+            #FN="A20000626.2315+0200-2330+0200_$NO-$i.$FILE_EXT"
+            FN="A$ST+0200-$ET+0200_$NO-$i.$FILE_EXT"
+            let SRV_ID=$j%$SRV_COUNT
+            let SRV_ID=SRV_ID+1
+            #echo "NODE "$NO
+            echo "FILENAME "$FN
+            if [ $TYPE == "sftp" ]; then
+                SRV="ftp-sftp-$SRV_ID"
+                echo "FTP SERVER "$SRV
+                URL="sftp://onap:pano@$SRV:$SFTP_PORT/$FN"
+            elif [ $TYPE == "ftpes" ]; then
+                SRV="ftp-ftpes-$SRV_ID"
+                echo "FTP SERVER "$SRV
+                URL="ftpes://onap:pano@$SRV:$FTPES_PORT/$FN"
+            elif [ $TYPE == "https" ]; then
+                SRV="pm-https-server-$SRV_ID"
+                #echo "HTTP SERVER "$SRV
+                URL="https://$SRV:$HTTPS_PORT/files/$FN"
+            fi
+            EVT='{"commonEventHeader":{"startEpochMicrosec":15198378,"eventId":"FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1","timeZoneOffset":"UTC+05.30","internalHeaderFields":{"collectorTimeStamp":"Wed,0907202211:56:02GMT"},"priority":"Normal","version":"4.0.1","reportingEntityName":"'$NO'","sequence":0,"domain":"notification","lastEpochMicrosec":151983,"eventName":"Notification_gnb-Ericsson_FileReady","vesEventListenerVersion":"7.0.1","sourceName":"'$NO'"},"notificationFields":{"notificationFieldsVersion":"2.0","changeType":"FileReady","changeIdentifier":"PM_MEAS_FILES","arrayOfNamedHashMap":[{"name":"'$FN'","hashMap":{"location":"'$URL'","fileFormatType":"org.3GPP.32.435#measCollec","fileFormatVersion":"V10","compression":"gzip"}}]}}'
+            if [ $first -ne 0 ]; then
+                echo "," >> .out.json
+            fi
+            first=1
+            echo "$EVT" >> .out.json
+        else
+            NO="$NODE_NAME_BASE-$j"
+
+            let SRV_ID=$j%$SRV_COUNT
+            let SRV_ID=SRV_ID+1
+            #echo "NODE "$NO
+
+            EVT_FRAG=""
+            for(( k=95; k>=0; k-- )); do
+                let FID=$i-k
+                #FN="A20000626.2315+0200-2330+0200_$NO-$FID.$FILE_EXT"
+                CURTIME=$(($BEGINTIME+$FID*900))
+                if [[ $arch == "Darwin"* ]]; then
+                    ST=$(date -r $CURTIME +'%Y%m%d.%H%M')
+                    let CURTIME=CURTIME+900
+                    ET=$(date -r $CURTIME +'%H%M')
+                else
+                    ST=$(date -d @$CURTIME +'%Y%m%d.%H%M')
+                    let CURTIME=CURTIME+900
+                    ET=$(date -d @$CURTIME +'%H%M')
+                fi
+                if [ $FID -lt 0 ]; then
+                    FN="NONEXISTING_$NO-$FID.$FILE_EXT"
+                else
+                    #FN="A20000626.2315+0200-2330+0200_$NO-$FID.$FILE_EXT"
+                    FN="A$ST+0200-$ET+0200_$NO-$FID.$FILE_EXT"
+                fi
+                echo "FILENAME "$FN
+                if [ $TYPE == "sftp" ]; then
+                    SRV="ftp-sftp-$SRV_ID"
+                    #echo "FTP SERVER "$SRV
+                    URL="sftp://onap:pano@$SRV:$SFTP_PORT/$FN"
+                elif [ $TYPE == "ftpes" ]; then
+                    SRV="ftp-ftpes-$SRV_ID"
+                    #echo "FTP SERVER "$SRV
+                    URL="ftpes://onap:pano@$SRV:$FTPES_PORT/$FN"
+                elif [ $TYPE == "https" ]; then
+                    SRV="pm-https-server-$SRV_ID"
+                    #echo "HTTP SERVER "$SRV
+                    URL="https://$SRV:$HTTPS_PORT/files/$FN"
+                fi
+                if [ "$EVT_FRAG" != "" ]; then
+                    EVT_FRAG=$EVT_FRAG","
+                fi
+                EVT_FRAG=$EVT_FRAG'{"name":"'$FN'","hashMap":{"location":"'$URL'","fileFormatType":"org.3GPP.32.435#measCollec","fileFormatVersion":"V10","compression":"gzip"}}'
+            done
+            EVT='{"commonEventHeader":{"startEpochMicrosec":15198378,"eventId":"FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1","timeZoneOffset":"UTC+05.30","internalHeaderFields":{"collectorTimeStamp":"Wed,0907202211:56:02GMT"},"priority":"Normal","version":"4.0.1","reportingEntityName":"'$NO'","sequence":0,"domain":"notification","lastEpochMicrosec":151983,"eventName":"Notification_gnb-Ericsson_FileReady","vesEventListenerVersion":"7.0.1","sourceName":"'$NO'"},"notificationFields":{"notificationFieldsVersion":"2.0","changeType":"FileReady","changeIdentifier":"PM_MEAS_FILES","arrayOfNamedHashMap":['$EVT_FRAG']}}'
+            if [ $first -ne 0 ]; then
+                echo "," >> .out.json
+            fi
+            first=1
+            echo $EVT >> .out.json
+        fi
+    done
+    echo ']}' >> .out.json
+    RES=$(curl -s -X POST 'localhost:8080/eventListener/v7/eventBatch' --header 'Content-Type: application/json' --data-binary @.out.json)
+    echo $RES
+done
+
diff --git a/pm-file-flow-demo/docker-proj/scripts/read-from-topic.sh b/pm-file-flow-demo/docker-proj/scripts/read-from-topic.sh
new file mode 100755
index 0000000..bd9ceab
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/scripts/read-from-topic.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+print_usage() {
+   echo "Usage: read-from-topic.sh <topic-name> [timeout-milliseconds]"
+   exit 1
+}
+TOPIC=$1
+TO=15000
+if [ $# -eq 1 ]; then
+        :
+elif [ $# -eq 2 ]; then
+        TO=$2
+else
+        print_usage
+fi
+
+echo "Reading msgs on topic $TOPIC from beginning, $TO ms timeout"
+
+docker exec -it client \
+        bash -c 'kafka-console-consumer --timeout-ms '$TO' --topic '$TOPIC' --from-beginning --bootstrap-server kafka-1:29092'
+
+echo "Read msgs on topic $TOPIC from beginning, $TO ms timeout"
\ No newline at end of file
diff --git a/pm-file-flow-demo/docker-proj/setup-phase1.sh b/pm-file-flow-demo/docker-proj/setup-phase1.sh
new file mode 100755
index 0000000..7211862
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/setup-phase1.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+echo "Cleaning previously started containers..."
+
+./docker-tear-down.sh
+
+echo "Docker pruning"
+#echo "Docker pruning disabled"
+docker system prune -f
+docker volume prune -f
+
+echo "Creating dir for minio, kafka and zookeeper volume mappings"
+echo " ....may take time if cleaning is needed"
+
+mkdir -p /tmp/kafka-test
+
+mkdir -p /tmp/kafka-test/z1-log
+mkdir -p /tmp/kafka-test/z1-data
+
+mkdir -p /tmp/kafka-test/k1-data
+mkdir -p /tmp/kafka-test/k2-data
+mkdir -p /tmp/kafka-test/k3-data
+
+rm -rf /tmp/kafka-test/z1-log/*
+rm -rf /tmp/kafka-test/z1-data/*
+
+rm -rf /tmp/kafka-test/k1-data/*
+rm -rf /tmp/kafka-test/k2-data/*
+rm -rf /tmp/kafka-test/k3-data/*
+
+mkdir -p /tmp/minio-test
+mkdir -p /tmp/minio-test/0
+rm -rf /tmp/minio-test/0/*
+
+NW="nonrtric-docker-net"
+echo "Creating docker network"
+docker network inspect $NW 2> /dev/null 1> /dev/null
+if [ $? -ne 0 ]; then
+    docker network create $NW
+else
+    echo "  Network: $NW exits"
+fi
diff --git a/pm-file-flow-demo/docker-proj/setup-phase2.sh b/pm-file-flow-demo/docker-proj/setup-phase2.sh
new file mode 100755
index 0000000..9dc60d6
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/setup-phase2.sh
@@ -0,0 +1,96 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+print_usage() {
+    echo "Usage: setup-phase2.sh 1|3 file|minio data-mount|no-data-mount"
+    echo "Got: $@"
+    exit 1
+}
+
+if [ $# -ne 3 ]; then
+    print_usage $@
+    exit 1
+fi
+
+NUM=3
+
+if [ $1 == "1" ]; then
+    NUM=1
+elif [ $1 == "3" ]; then
+    NUM=3
+else
+    print_usage $@
+fi
+
+STORAGE_TYPE=$2
+if [ $2 == "file" ]; then
+    :
+elif [ $2 == "minio" ]; then
+    :
+else
+    print_usage $@
+fi
+
+if [ $3 == "data-mount" ]; then
+    :
+elif [ $3 == "no-data-mount" ]; then
+    :
+else
+    print_usage $@
+fi
+
+echo "Starting containers for: kafka, zookeeper, kafka client, kcat, callback, ics"
+
+if [ $NUM -eq 1 ]; then
+    envsubst < docker-compose-k1.yaml > docker-compose_gen-1.yaml
+else
+    envsubst < docker-compose-k3.yaml > docker-compose_gen-1.yaml
+fi
+
+if [ $3 == "data-mount" ]; then
+    cp docker-compose_gen-1.yaml docker-compose_gen.yaml
+else
+    cat docker-compose_gen-1.yaml | sed  '/#NO_DATA_VOLUME_MAP_LOCALHOST_START/,/#NO_DATA_VOLUME_MAP_LOCALHOST_STOP/d' > docker-compose_gen.yaml
+fi
+
+docker-compose -p common -f docker-compose_gen.yaml up -d
+
+if [ $STORAGE_TYPE == "minio" ]; then
+    envsubst < docker-compose-minio.yaml > docker-compose-minio_gen-1.yaml
+    if [ $3 == "data-mount" ]; then
+        cp docker-compose-minio_gen-1.yaml docker-compose-minio_gen.yaml
+    else
+        cat docker-compose-minio_gen-1.yaml | sed  '/#NO_DATA_VOLUME_MAP_LOCALHOST_START/,/#NO_DATA_VOLUME_MAP_LOCALHOST_STOP/d' > docker-compose-minio_gen.yaml
+    fi
+    docker-compose -p minio -f docker-compose-minio_gen.yaml up -d
+fi
+
+echo "Creating topics: $TOPICS, may take a while ..."
+for t in $TOPICS; do
+    retcode=1
+    rt=43200000
+    echo "Creating topic $t with retention $(($rt/1000)) seconds"
+    while [ $retcode -ne 0 ]; do
+        docker exec -it client \
+            bash -c 'kafka-topics --create --topic '$t' --config retention.ms='$rt'  --bootstrap-server kafka-1:29092'
+        retcode=$?
+        sleep 1
+    done
+done
+
diff --git a/pm-file-flow-demo/docker-proj/setup-phase3.sh b/pm-file-flow-demo/docker-proj/setup-phase3.sh
new file mode 100755
index 0000000..6d54a0c
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/setup-phase3.sh
@@ -0,0 +1,302 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+KP_NUM=$(callback_get_num_jobs_kp)
+KPM_NUM=$(callback_get_num_jobs_kpm)
+KPADP_NUM=$(callback_get_num_jobs_kpadp)
+
+KP_JOB_SUFFIX=$(callback_get_job_sufffix_kp)
+KPM_JOB_SUFFIX=$(callback_get_job_sufffix_kpm)
+KPADP_JOB_SUFFIX=$(callback_get_job_sufffix_kpadp)
+
+check_error() {
+    if [ $1 -ne 0 ]; then
+        echo "Failed $2"
+        echo "Exiting..."
+        exit 1
+    fi
+}
+STORAGE_TYPE=$1
+FTP_FLAG=$2
+
+print_usage() {
+    echo "Usage: setup-phase3.sh file|minio no-ftp|ftp"
+    echo "Got: $@"
+    exit 1
+}
+
+if [ $# -ne 2 ]; then
+    print_usage $@
+    exit 1
+fi
+
+if [ $1 == "file" ]; then
+    :
+elif [ $1 == "minio" ]; then
+    :
+else
+    print_usage $@
+fi
+
+if [ $2 == "no-ftp" ]; then
+    :
+elif [ $1 == "frp" ]; then
+    :
+else
+    print_usage $@
+fi
+
+
+echo "Setting up certs and dfc truststore"
+if [ $FTP_FLAG == "ftp" ]; then
+    ./config/ftpes/certs/gen-certs.sh $NUM_FTPES
+    check_error $?
+fi
+
+./config/https/certs/gen-certs.sh $NUM_HTTP
+check_error $?
+
+echo "Installing certs and dfc truststore"
+
+if [ $FTP_FLAG == "ftp" ]; then
+    RSTS=""
+    for (( i=1; i<=$NUM_FTPES; i++ )); do
+        SRV="ftp-ftpes-$i"
+        echo "Adding cert to $SRV"
+        docker cp ./config/ftpes/certs/ftpes-$i.crt $SRV:/etc/ssl/private/ftp.crt
+        check_error $?
+        docker cp ./config/ftpes/certs/ftpes-$i.key $SRV:/etc/ssl/private/ftp.key
+        check_error $?
+        docker cp ./config/ftpes/certs/ftpesca.crt $SRV:/etc/ssl/private/ftpesca.crt
+        check_error $?
+        RSTS="$RSTS $SRV"
+    done
+    echo "Restarting $RSTS"
+    docker restart $RSTS
+fi
+
+RSTS=""
+for (( i=1; i<=$NUM_HTTP; i++ )); do
+    SRV="pm-https-server-$i"
+    echo "Adding cert to $SRV"
+    docker cp ./config/https/certs/https-$i.crt $SRV:/certs/server.crt
+    check_error $?
+    docker cp ./config/https/certs/https-$i.key $SRV:/certs/server.key
+    check_error $?
+    RSTS="$RSTS $SRV"
+done
+echo "Restarting $RSTS"
+docker restart $RSTS
+
+cwd=$PWD
+for (( i=1; i<=$NUM_DFC; i++ )); do
+    echo "Updating dfc$i truststore"
+    cd $cwd/config/dfc$i
+    cp ../dfc-common/template-truststore.jks truststore.jks
+    check_error $?
+
+    if [ $FTP_FLAG == "ftp" ]; then
+        echo " Adding ftpes ca cert to dfc$i truststore"
+cat <<__EOF__ | keytool -importcert -alias ftpes -file $cwd/config/ftpes/certs/ftpesca.crt -keystore truststore.jks -storetype JKS -storepass $(< ../dfc-common/truststore.pass)
+yes
+__EOF__
+        check_error $?
+    fi
+
+    echo " Adding https ca cert to dfc$i truststore"
+cat <<__EOF__ | keytool -importcert -alias pm-https -file $cwd/config/https/certs/httpsca.crt -keystore truststore.jks -storetype JKS -storepass $(< ../dfc-common/truststore.pass)
+yes
+__EOF__
+    check_error $?
+    echo " Copying truststore to dfc container"
+    docker cp truststore.jks  dfc$i:/opt/app/datafile/config/truststore.jks
+    check_error $?
+    docker restart dfc$i
+done
+cd $cwd
+
+
+if [ $FTP_FLAG == "ftp" ]; then
+    echo "Creating users in ftpes servers"
+    for (( i=1; i<=$NUM_FTPES; i++ )); do
+        retcode=1
+        SRV=ftp-ftpes-$i
+        echo " Trying to get token from $SRV"
+        while [ $retcode -ne 0 ]; do
+            PORT=$(docker inspect $SRV |  jq -r .[0].NetworkSettings.Ports.\"8080/tcp\"[0].HostPort)
+            RES=$(curl -s -w '%{http_code}' http://admin:admin@localhost:$PORT/api/v2/token)
+            retcode=$?
+            if [ $retcode -eq 0 ]; then
+                status=${RES:${#RES}-3}
+                if [ $status -ne 200 ]; then
+                    retcode=1
+                fi
+            fi
+            if [ $retcode -ne 0 ]; then
+                echo "Retrying..."
+                sleep 1
+            fi
+        done
+        RES=${RES:0:${#RES}-3}
+        BEARER=$(echo $RES | jq -r .access_token)
+        echo " Got $SRV token"
+        echo " Trying to create user in $SRV"
+        retcode=1
+        while [ $retcode -ne 0 ]; do
+            RES=$(curl -s -w '%{http_code}' -X POST http://admin:admin@localhost:$PORT/api/v2/users -H "Authorization: Bearer $BEARER" -d'{"username":"onap","password":"pano","home_dir":"/srv/onap","permissions":{"/":["*"]},"status":1}')
+            retcode=$?
+            if [ $retcode -eq 0 ]; then
+                status=${RES:${#RES}-3}
+                if [ $status -ne 201 ]; then
+                    retcode=1
+                fi
+            fi
+            if [ $retcode -ne 0 ]; then
+                echo "Retrying..."
+                sleep 1
+            fi
+        done
+        echo " User created in $SRV"
+    done
+
+
+    #https://github.com/drakkan/sftpgo/blob/main/openapi/openapi.yaml
+    echo "Creating users in sftp servers"
+    for (( i=1; i<=$NUM_SFTP; i++ )); do
+        retcode=1
+        SRV=ftp-sftp-$i
+        echo " Trying to get token from $SRV"
+        while [ $retcode -ne 0 ]; do
+            PORT=$(docker inspect $SRV |  jq -r .[0].NetworkSettings.Ports.\"8080/tcp\"[0].HostPort)
+            RES=$(curl -s -w '%{http_code}' http://admin:admin@localhost:$PORT/api/v2/token)
+            retcode=$?
+            if [ $retcode -eq 0 ]; then
+                status=${RES:${#RES}-3}
+                if [ $status -ne 200 ]; then
+                    retcode=1
+                fi
+            fi
+            if [ $retcode -ne 0 ]; then
+                echo "Retrying..."
+                sleep 1
+            fi
+        done
+        RES=${RES:0:${#RES}-3}
+        BEARER=$(echo $RES | jq -r .access_token)
+        echo " Got $SRV token"
+        echo " Trying to create user in $SRV"
+        retcode=1
+        while [ $retcode -ne 0 ]; do
+            RES=$(curl -s -w '%{http_code}' -X POST http://admin:admin@localhost:$PORT/api/v2/users -H "Authorization: Bearer $BEARER" -d'{"username":"onap","password":"pano","home_dir":"/srv/onap","permissions":{"/":["*"]},"status":1}')
+            retcode=$?
+            if [ $retcode -eq 0 ]; then
+                status=${RES:${#RES}-3}
+                if [ $status -ne 201 ]; then
+                    retcode=1
+                fi
+            fi
+            if [ $retcode -ne 0 ]; then
+                echo "Retrying..."
+                sleep 1
+            fi
+        done
+        echo " User created in $SRV"
+    done
+fi
+
+echo "Creating job(s)..."
+for apps in {1..3}; do
+    if [ $apps == 1 ]; then
+        JOB_NUM=$KP_NUM
+        JOB_PRE=$KP_JOB_SUFFIX
+    elif [ $apps == 2 ]; then
+        JOB_NUM=$KPM_NUM
+        JOB_PRE=$KPM_JOB_SUFFIX
+    else
+        JOB_NUM=$KPADP_NUM
+        JOB_PRE=$KPADP_JOB_SUFFIX
+    fi
+    for ((i=1;i<=$JOB_NUM;i++)); do
+
+        rm .job.json 2> /dev/null
+        if [ $apps == 1 ]; then
+            callback_create_job_kp $i $STORAGE_TYPE
+        elif [ $apps == 2 ]; then
+            callback_create_job_kpm $i $STORAGE_TYPE
+        else
+            callback_create_job_kpadp $i $STORAGE_TYPE
+        fi
+
+        JOB=$(<.job.json)
+        echo $JOB
+        retcode=1
+        echo "Creating job-$JOB_PRE"'-'"$i"
+        while [ $retcode -ne 0 ]; do
+            STAT=$(curl -s -X PUT -w '%{http_code}' -H accept:application/json -H Content-Type:application/json http://localhost:8083/data-consumer/v1/info-jobs/job-$JOB_PRE"-"$i --data-binary @.job.json)
+            retcode=$?
+            echo "curl return code: $retcode"
+            if [ $retcode -eq 0 ]; then
+                status=${STAT:${#STAT}-3}
+                echo "http status code: "$status
+                if [ "$status" == "200" ]; then
+                    echo "Job created ok"
+                elif [ "$status" == "201" ]; then
+                    echo "Job created ok"
+                else
+                    retcode=1
+                fi
+            fi
+            sleep 1
+        done
+    done
+done
+
+
+echo "Check job status..."
+for apps in {1..3}; do
+    if [ $apps == 1 ]; then
+        JOB_NUM=$KP_NUM
+        JOB_PRE=$KP_JOB_SUFFIX
+    elif [ $apps == 2 ]; then
+        JOB_NUM=$KPM_NUM
+        JOB_PRE=$KPM_JOB_SUFFIX
+    else
+        JOB_NUM=$KPADP_NUM
+        JOB_PRE=$KPADP_JOB_SUFFIX
+    fi
+    for ((i=1;i<=$JOB_NUM;i++)); do
+        retcode=1
+        echo "job-$JOB_PRE"'-'"$i status?"
+        while [ $retcode -ne 0 ]; do
+            STAT=$(curl -s http://localhost:8083/data-consumer/v1/info-jobs/job-$JOB_PRE"-"$i/status)
+            retcode=$?
+            if [ $retcode -eq 0 ]; then
+                if [[ "$STAT" != '{"info_job_status":"ENABLED","producers":['* ]]; then
+                    retcode=1
+                    echo "Not expected status (retrying): $STAT"
+                else
+                    echo $STAT
+                    echo " job-$JOB_PRE"'-'"$i status ok"
+                fi
+            fi
+            sleep 1
+        done
+    done
+done
+
diff --git a/pm-file-flow-demo/docker-proj/shared-volume/dummy.txt b/pm-file-flow-demo/docker-proj/shared-volume/dummy.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/shared-volume/dummy.txt
diff --git a/pm-file-flow-demo/docker-proj/x-jobs.sh b/pm-file-flow-demo/docker-proj/x-jobs.sh
new file mode 100755
index 0000000..51a5045
--- /dev/null
+++ b/pm-file-flow-demo/docker-proj/x-jobs.sh
@@ -0,0 +1,151 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+# Script to set a series of topics and jobs/rapps to simulate a set of "real rapps" reciving filtered PM json
+
+print_args() {
+    echo "args: file|minio topics|no-topics jobs|rapps|none [<num-jobs>]"
+    exit 1
+}
+
+eval_cmd() {
+    RESP=$@
+    status=${RESP:${#RESP}-3}
+    if [ "$status" == "200" ]; then
+        echo "  Job created ok"
+    elif [ "$status" == "201" ]; then
+        echo "  Job created ok"
+    else
+        echo $@
+        echo "FAILED"
+        exit 1
+    fi
+}
+
+
+if [ "$1" == "file" ]; then
+    :
+elif [ "$1" == "minio" ]; then
+    :
+else
+    print_args
+fi
+
+if [ "$2" == "topics" ]; then
+    :
+elif [ "$2" == "no-topics" ]; then
+    :
+else
+    print_args
+fi
+
+if [ "$3" == "jobs" ]; then
+    :
+elif [ "$3" == "rapps" ]; then
+    :
+elif [ "$3" == "none" ]; then
+    :
+else
+    print_args
+fi
+
+NUM=$4
+if [ -z "$NUM" ]; then
+    print_args
+fi
+
+if [ "$2" == "topics" ]; then
+    echo "Creating $NUM topics"
+fi
+if [ "$3" == "jobs" ]; then
+    echo "Creating $NUM jobs in kafka-producer and $NUM jobs in dmaap-adapter"
+fi
+if [ "$3" == "rapps" ]; then
+    echo "Creating $NUM rapps with individual jobs in kafka-producer and $NUM rapps with individual jobs in dmaap-adapter"
+fi
+
+ID=0
+while [ $ID -lt $NUM ]; do
+
+    if [ "$2" == "topics" ]; then
+        echo " Creating topic: xa-topic-$ID"
+        docker exec -it client bash -c 'kafka-topics --if-not-exists  --create --topic xa-topic-'$ID'  --bootstrap-server kafka-1:29092'
+        if [ $? -ne 0 ]; then
+            echo "FAILED"
+            exit 1
+        fi
+        echo "  Topic ok"
+    fi
+
+    if [ "$3" == "jobs" ]; then
+        JOB='{"info_type_id": "PmData", "job_owner": "console","status_notification_uri": "http://callback:80/post","job_definition": {"kafkaOutputTopic":"xa-topic-'$ID'","filterType":"pmdata","filter":{"measTypes":["pmCounterNumber101"]}}}'
+        echo " Creating job: xa-$ID"
+        CMD=$(curl -s -w '%{http_code}' localhost:8083/data-consumer/v1/info-jobs/xa-$ID -X PUT -H 'Content-Type: application/json' --data-binary "$JOB")
+        eval_cmd "$CMD"
+        echo "  Job ok"
+    fi
+
+    if [ "$3" == "rapps" ]; then
+        docker run -d -l "dmaap_test=yes" --name pm-rapp-kpadp-$ID --network nonrtric-docker-net -e RAPPID=$ID -e KAFKA_SERVER=kafka-1:29092 -e TOPIC=xa-topic-$ID -e ICS=ics:8083 -e JOBTYPE=PmData pm-rapp:latest
+        if [ $? -ne 0 ]; then
+            echo "FAILED"
+            exit 1
+        fi
+        echo "  Rapp ok"
+    fi
+
+    if [ "$2" == "topics" ]; then
+        echo " Creating topic: xp-topic-$ID"
+        docker exec -it client bash -c 'kafka-topics --if-not-exists --create --topic xp-topic-'$ID'  --bootstrap-server kafka-1:29092'
+        if [ $? -ne 0 ]; then
+            echo "FAILED"
+            exit 1
+        fi
+        echo "  Topic ok"
+    fi
+
+    if [ "$3" == "jobs" ]; then
+        if [ $1 == "file" ]; then
+            JOB='{"info_type_id": "json-file-data", "job_owner": "console","status_notification_uri": "http://callback:80/post","job_definition": {"kafkaOutputTopic":"xp-topic-'$ID'","filterType":"pmdata","filter":{"measTypes":["pmCounterNumber101"]}}}'
+        else
+            JOB='{"info_type_id": "json-file-data-from-filestore", "job_owner": "console","status_notification_uri": "http://callback:80/post","job_definition": {"kafkaOutputTopic":"xp-topic-'$ID'","filterType":"pmdata","filter":{"measTypes":["pmCounterNumber101"]}}}'
+        fi
+        echo " Creating job: xp-$ID"
+        CMD=$(curl -s -w '%{http_code}' localhost:8083/data-consumer/v1/info-jobs/xp-$ID -X PUT -H 'Content-Type: application/json' --data-binary "$JOB")
+        eval_cmd "$CMD"
+        echo "  Job ok"
+    fi
+
+    if [ "$3" == "rapps" ]; then
+        if [ $1 == "file" ]; then
+            docker run -d -l "dmaap_test=yes" --name pm-rapp-kp-$ID --network nonrtric-docker-net -e RAPPID=$ID -e KAFKA_SERVER=kafka-1:29092 -e TOPIC=xp-topic-$ID -e ICS=ics:8083 -e JOBTYPE=json-file-data pm-rapp:latest
+        else
+            docker run -d -l "dmaap_test=yes" --name pm-rapp-kp-$ID --network nonrtric-docker-net -e RAPPID=$ID -e KAFKA_SERVER=kafka-1:29092 -e TOPIC=xp-topic-$ID -e ICS=ics:8083 -e JOBTYPE=json-file-data-from-filestore pm-rapp:latest
+        fi
+        if [ $? -ne 0 ]; then
+            echo "FAILED"
+            exit 1
+        fi
+        echo "  Rapp ok"
+    fi
+    let ID=ID+1
+
+done
+
+echo "DONE"
\ No newline at end of file
diff --git a/pm-file-flow-demo/https-server/Dockerfile b/pm-file-flow-demo/https-server/Dockerfile
new file mode 100644
index 0000000..1a7796c
--- /dev/null
+++ b/pm-file-flow-demo/https-server/Dockerfile
@@ -0,0 +1,37 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+FROM golang:1.19-bullseye AS build
+WORKDIR /app
+COPY go.mod .
+COPY go.sum .
+RUN go mod download
+COPY main.go .
+RUN go build -o /pm-https-server
+
+#Replaced distroless image with ubuntu for debug purposes
+#FROM gcr.io/distroless/base-debian11
+FROM ubuntu
+WORKDIR /
+## Copy from "build" stage
+COPY --from=build /pm-https-server .
+COPY certs/server.key /certs/server.key
+COPY certs/server.crt /certs/server.crt
+
+##Uncomment this when using distroless image
+#USER nonroot:nonroot
+ENTRYPOINT ["/pm-https-server"]
diff --git a/pm-file-flow-demo/https-server/build.sh b/pm-file-flow-demo/https-server/build.sh
new file mode 100755
index 0000000..4b24a59
--- /dev/null
+++ b/pm-file-flow-demo/https-server/build.sh
@@ -0,0 +1,81 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+#Build image from Dockerfile with/without custom image tag
+#Optionally push to external docker hub repo
+
+print_usage() {
+    echo "Usage: build.sh no-push|bm|<docker-hub-repo-name> [<image-tag>]"
+    exit 1
+}
+
+if [ $# -ne 1 ] && [ $# -ne 2 ]; then
+    print_usage
+fi
+
+IMAGE_NAME="pm-https-server"
+IMAGE_TAG="latest"
+REPO=""
+if [ $1 == "no-push" ]; then
+    echo "Only local image build"
+elif [ $1 == "bm" ]; then
+    REPO="bjornmagnussonest"
+    echo "Attempt to push built image to: "$REPO
+else
+    REPO=$1
+    echo "Attempt to push built image to: "$REPO
+fi
+
+if [ "$2" != "" ]; then
+    IMAGE_TAG=$2
+fi
+ echo "Setting image tag to: "$IMAGE_TAG
+
+IMAGE=$IMAGE_NAME:$IMAGE_TAG
+echo "Building image $IMAGE"
+docker build -t $IMAGE_NAME:$IMAGE_TAG .
+if [ $? -ne 0 ]; then
+    echo "BUILD FAILED"
+    exit 1
+fi
+echo "BUILD OK"
+
+if [ "$REPO" != "" ]; then
+    echo "Tagging image"
+    NEW_IMAGE=$REPO/$IMAGE_NAME:$IMAGE_TAG
+    docker tag $IMAGE $NEW_IMAGE
+    if [ $? -ne 0 ]; then
+        echo "RE-TAGGING FAILED"
+        exit 1
+    fi
+    echo "RE-TAG OK"
+
+    echo "Pushing image $NEW_IMAGE"
+    docker push $NEW_IMAGE
+    if [ $? -ne 0 ]; then
+        echo "PUSHED FAILED"
+        echo " Perhaps not logged into docker-hub repo $REPO?"
+        exit 1
+    fi
+    IMAGE=$NEW_IMAGE
+    echo "PUSH OK"
+fi
+
+echo "IMAGE OK: $IMAGE"
+echo "DONE"
diff --git a/pm-file-flow-demo/https-server/certs/server.crt b/pm-file-flow-demo/https-server/certs/server.crt
new file mode 100644
index 0000000..3fec650
--- /dev/null
+++ b/pm-file-flow-demo/https-server/certs/server.crt
@@ -0,0 +1,10 @@
+-----BEGIN CERTIFICATE-----
+MIIBYTCB6QIJAN2mIVs0HwRDMAoGCCqGSM49BAMCMBsxCzAJBgNVBAYTAlNFMQww
+CgYDVQQKDANFU1QwHhcNMjIwODMwMTEwNzE5WhcNMzIwODI3MTEwNzE5WjAbMQsw
+CQYDVQQGEwJTRTEMMAoGA1UECgwDRVNUMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE
+dZPhTZJ53kCBHz4qYgAXOuR6DykkJzcgy2isYLZS4KeYsGeOrtM2iWiF5Evqj09u
+q5RUtdcqK17egIlJsculZniRR7l0q8vG93uryWp8dwzFOiDe4tKpl20qqiG0RBha
+MAoGCCqGSM49BAMCA2cAMGQCMEGiwE8PIYVlDVymUfQg6zytCix+I2c65hlxRJhL
+NBuPDu7VmLsW+pjAxhcpmZyrywIwU6AUtH8EFxiwyAggdl7Wime9FveDl5nozWx+
+LGE45/Iq3DXvCTjeG9sAkCMnhcL4
+-----END CERTIFICATE-----
diff --git a/pm-file-flow-demo/https-server/certs/server.key b/pm-file-flow-demo/https-server/certs/server.key
new file mode 100644
index 0000000..92c9da6
--- /dev/null
+++ b/pm-file-flow-demo/https-server/certs/server.key
@@ -0,0 +1,9 @@
+-----BEGIN EC PARAMETERS-----
+BgUrgQQAIg==
+-----END EC PARAMETERS-----
+-----BEGIN EC PRIVATE KEY-----
+MIGkAgEBBDD2457suhRbAIRIyrZ7FuQO0RYYlcrkw4jyj8U8lFddbvgC9iHcCz3U
+BKg9HOegfFugBwYFK4EEACKhZANiAAT6b2dYjagRiQvQwbsyTmXFpYoyHOR/Cmh5
+42ZV4ry/PfZ7FJfcdu9Tc3/9ggU4QaqxdVlMm4jBm/Yio73djdvcLRodRnV50jty
+8u53dRa2LDJTn8DziZ+oMDoLRoDil6I=
+-----END EC PRIVATE KEY-----
diff --git a/pm-file-flow-demo/https-server/gen-cert.sh b/pm-file-flow-demo/https-server/gen-cert.sh
new file mode 100755
index 0000000..5061928
--- /dev/null
+++ b/pm-file-flow-demo/https-server/gen-cert.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+#Generate basic cert and key for web server
+
+openssl genrsa -out certs/server.key 2048
+openssl ecparam -genkey -name secp384r1 -out certs/server.key
+openssl req -new -x509 -sha256 -key certs/server.key -out certs/server.crt -days 3650
diff --git a/pm-file-flow-demo/https-server/go.mod b/pm-file-flow-demo/https-server/go.mod
new file mode 100644
index 0000000..a729797
--- /dev/null
+++ b/pm-file-flow-demo/https-server/go.mod
@@ -0,0 +1,13 @@
+module main
+
+go 1.19
+
+require github.com/gorilla/mux v1.8.0
+
+require github.com/sirupsen/logrus v1.9.0
+
+require (
+	github.com/stretchr/testify v1.7.1 // indirect
+	golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // indirect
+	gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
+)
diff --git a/pm-file-flow-demo/https-server/go.sum b/pm-file-flow-demo/https-server/go.sum
new file mode 100644
index 0000000..d960876
--- /dev/null
+++ b/pm-file-flow-demo/https-server/go.sum
@@ -0,0 +1,19 @@
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
+github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 h1:0A+M6Uqn+Eje4kHMK80dtF3JCXC4ykBgQG4Fe06QRhQ=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/pm-file-flow-demo/https-server/main.go b/pm-file-flow-demo/https-server/main.go
new file mode 100644
index 0000000..7ba9b79
--- /dev/null
+++ b/pm-file-flow-demo/https-server/main.go
@@ -0,0 +1,109 @@
+//  ============LICENSE_START===============================================
+//  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+//  ========================================================================
+//  Licensed 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.
+//  ============LICENSE_END=================================================
+//
+
+package main
+
+import (
+	"net/http"
+	"os"
+	"runtime"
+	"strconv"
+	"strings"
+	"time"
+
+	log "github.com/sirupsen/logrus"
+
+	"github.com/gorilla/mux"
+
+	"net/http/pprof"
+)
+
+//== Constants ==//
+
+const https_port = 443
+
+const shared_files = "/files"
+
+var always_return_file = os.Getenv("ALWAYS_RETURN")
+
+// get file
+func files(w http.ResponseWriter, req *http.Request) {
+	start := time.Now()
+	if req.Method != http.MethodGet {
+		w.WriteHeader(http.StatusMethodNotAllowed)
+		return
+	}
+
+	vars := mux.Vars(req)
+
+	if id, ok := vars["fileid"]; ok {
+		if strings.HasPrefix(id, "NONEXISTING") {
+			w.WriteHeader(http.StatusNotFound)
+		}
+		fn := shared_files + "/" + id
+		if always_return_file != "" {
+			fn = always_return_file
+		}
+		fileBytes, err := os.ReadFile(fn)
+		if err != nil {
+			w.WriteHeader(http.StatusNotFound)
+			return
+		}
+		w.WriteHeader(http.StatusOK)
+		w.Header().Set("Content-Type", "application/octet-stream")
+		w.Write(fileBytes)
+
+		log.Info("File retrieval : ", fn, " time:", time.Since(start).String())
+		return
+	}
+
+	w.WriteHeader(http.StatusNotFound)
+}
+
+// Simple alive check
+func alive(w http.ResponseWriter, req *http.Request) {
+	//Alive check
+}
+
+// == Main ==//
+func main() {
+
+	log.SetLevel(log.InfoLevel)
+
+	log.Info("Server starting...")
+
+	rtr := mux.NewRouter()
+	rtr.HandleFunc("/files/{fileid}", files)
+	rtr.HandleFunc("/", alive)
+
+	rtr.HandleFunc("/custom_debug_path/profile", pprof.Profile)
+
+	http.Handle("/", rtr)
+
+	// Run https
+	log.Info("Starting https service...")
+	err := http.ListenAndServeTLS(":"+strconv.Itoa(https_port), "certs/server.crt", "certs/server.key", nil)
+	if err != nil {
+		log.Fatal("Cannot setup listener on https: ", err)
+	}
+
+	//Wait until all go routines has exited
+	runtime.Goexit()
+
+	log.Warn("main routine exit")
+	log.Warn("server i stopping...")
+}
diff --git a/pm-file-flow-demo/kafka-pm-producer/Dockerfile b/pm-file-flow-demo/kafka-pm-producer/Dockerfile
new file mode 100644
index 0000000..b02e425
--- /dev/null
+++ b/pm-file-flow-demo/kafka-pm-producer/Dockerfile
@@ -0,0 +1,39 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+FROM golang:1.19-bullseye AS build
+WORKDIR /app
+COPY go.mod .
+COPY go.sum .
+RUN go mod download
+COPY main.go .
+RUN go build -o /kafka-pm-producer
+
+#Replaced distroless image with ubuntu for debug purpose
+#FROM gcr.io/distroless/base-debian11
+FROM ubuntu
+WORKDIR /
+## Copy from "build" stage
+COPY --from=build /kafka-pm-producer .
+COPY server.key /server.key
+COPY server.crt /server.crt
+
+COPY application_configuration.json /application_configuration.json
+
+##Uncomment this when using distroless image
+#USER nonroot:nonroot
+ENTRYPOINT ["/kafka-pm-producer"]
diff --git a/pm-file-flow-demo/kafka-pm-producer/application_configuration.json b/pm-file-flow-demo/kafka-pm-producer/application_configuration.json
new file mode 100644
index 0000000..7bf8018
--- /dev/null
+++ b/pm-file-flow-demo/kafka-pm-producer/application_configuration.json
@@ -0,0 +1,3 @@
+{
+  "types": []
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/kafka-pm-producer/build.sh b/pm-file-flow-demo/kafka-pm-producer/build.sh
new file mode 100755
index 0000000..ffb5bb1
--- /dev/null
+++ b/pm-file-flow-demo/kafka-pm-producer/build.sh
@@ -0,0 +1,81 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+#Build image from Dockerfile with/without custom image tag
+#Optionally push to external docker hub repo
+
+print_usage() {
+    echo "Usage: build.sh no-push|bm|<docker-hub-repo-name> [<image-tag>]"
+    exit 1
+}
+
+if [ $# -ne 1 ] && [ $# -ne 2 ]; then
+    print_usage
+fi
+
+IMAGE_NAME="kafka-pm-producer"
+IMAGE_TAG="latest"
+REPO=""
+if [ $1 == "no-push" ]; then
+    echo "Only local image build"
+elif [ $1 == "bm" ]; then
+    REPO="bjornmagnussonest"
+    echo "Attempt to push built image to: "$REPO
+else
+    REPO=$1
+    echo "Attempt to push built image to: "$REPO
+fi
+
+if [ "$2" != "" ]; then
+    IMAGE_TAG=$2
+fi
+ echo "Setting image tag to: "$IMAGE_TAG
+
+IMAGE=$IMAGE_NAME:$IMAGE_TAG
+echo "Building image $IMAGE"
+docker build -t $IMAGE_NAME:$IMAGE_TAG .
+if [ $? -ne 0 ]; then
+    echo "BUILD FAILED"
+    exit 1
+fi
+echo "BUILD OK"
+
+if [ "$REPO" != "" ]; then
+    echo "Tagging image"
+    NEW_IMAGE=$REPO/$IMAGE_NAME:$IMAGE_TAG
+    docker tag $IMAGE $NEW_IMAGE
+    if [ $? -ne 0 ]; then
+        echo "RE-TAGGING FAILED"
+        exit 1
+    fi
+    echo "RE-TAG OK"
+
+    echo "Pushing image $NEW_IMAGE"
+    docker push $NEW_IMAGE
+    if [ $? -ne 0 ]; then
+        echo "PUSHED FAILED"
+        echo " Perhaps not logged into docker-hub repo $REPO?"
+        exit 1
+    fi
+    IMAGE=$NEW_IMAGE
+    echo "PUSH OK"
+fi
+
+echo "IMAGE OK: $IMAGE"
+echo "DONE"
diff --git a/pm-file-flow-demo/kafka-pm-producer/gen-cert.sh b/pm-file-flow-demo/kafka-pm-producer/gen-cert.sh
new file mode 100755
index 0000000..b2ef105
--- /dev/null
+++ b/pm-file-flow-demo/kafka-pm-producer/gen-cert.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+#Generate basic cert and key for web server
+
+openssl genrsa -out server.key 2048
+openssl ecparam -genkey -name secp384r1 -out server.key
+openssl req -new -x509 -sha256 -key server.key -out server.crt -days 3650
diff --git a/pm-file-flow-demo/kafka-pm-producer/go.mod b/pm-file-flow-demo/kafka-pm-producer/go.mod
new file mode 100644
index 0000000..9a5bf80
--- /dev/null
+++ b/pm-file-flow-demo/kafka-pm-producer/go.mod
@@ -0,0 +1,29 @@
+module main
+
+go 1.19
+
+require (
+	github.com/confluentinc/confluent-kafka-go v1.9.2
+	github.com/gorilla/mux v1.8.0
+)
+
+require github.com/json-iterator/go v1.1.12
+
+require (
+	github.com/dustin/go-humanize v1.0.0 // indirect
+	github.com/google/uuid v1.3.0 // indirect
+	github.com/klauspost/compress v1.15.9 // indirect
+	github.com/klauspost/cpuid/v2 v2.1.0 // indirect
+	github.com/minio/md5-simd v1.1.2 // indirect
+	github.com/minio/minio-go/v7 v7.0.35 // indirect
+	github.com/minio/sha256-simd v1.0.0 // indirect
+	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
+	github.com/modern-go/reflect2 v1.0.2 // indirect
+	github.com/rs/xid v1.4.0 // indirect
+	github.com/sirupsen/logrus v1.9.0 // indirect
+	golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa // indirect
+	golang.org/x/net v0.0.0-20220722155237-a158d28d115b // indirect
+	golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect
+	golang.org/x/text v0.3.7 // indirect
+	gopkg.in/ini.v1 v1.66.6 // indirect
+)
diff --git a/pm-file-flow-demo/kafka-pm-producer/go.sum b/pm-file-flow-demo/kafka-pm-producer/go.sum
new file mode 100644
index 0000000..8fe283c
--- /dev/null
+++ b/pm-file-flow-demo/kafka-pm-producer/go.sum
@@ -0,0 +1,256 @@
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/actgardner/gogen-avro/v10 v10.1.0/go.mod h1:o+ybmVjEa27AAr35FRqU98DJu1fXES56uXniYFv4yDA=
+github.com/actgardner/gogen-avro/v10 v10.2.1/go.mod h1:QUhjeHPchheYmMDni/Nx7VB0RsT/ee8YIgGY/xpEQgQ=
+github.com/actgardner/gogen-avro/v9 v9.1.0/go.mod h1:nyTj6wPqDJoxM3qdnjcLv+EnMDSDFqE0qDpva2QRmKc=
+github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
+github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
+github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
+github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/confluentinc/confluent-kafka-go v1.9.1 h1:L3aW6KvTyrq/+BOMnDm9xJylhAEoAgqhoaJbMPe3GQI=
+github.com/confluentinc/confluent-kafka-go v1.9.1/go.mod h1:ptXNqsuDfYbAE/LBW6pnwWZElUoWxHoV8E43DCrliyo=
+github.com/confluentinc/confluent-kafka-go v1.9.2 h1:gV/GxhMBUb03tFWkN+7kdhg+zf+QUM+wVkI9zwh770Q=
+github.com/confluentinc/confluent-kafka-go v1.9.2/go.mod h1:ptXNqsuDfYbAE/LBW6pnwWZElUoWxHoV8E43DCrliyo=
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
+github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
+github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/frankban/quicktest v1.2.2/go.mod h1:Qh/WofXFeiAFII1aEBu529AtJo6Zg2VHscnEsbBnJ20=
+github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o=
+github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y=
+github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/google/go-cmp v0.2.1-0.20190312032427-6f77996f0c42/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/pprof v0.0.0-20211008130755-947d60d73cc0/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
+github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
+github.com/hamba/avro v1.5.6/go.mod h1:3vNT0RLXXpFm2Tb/5KC71ZRJlOroggq1Rcitb6k4Fr8=
+github.com/heetch/avro v0.3.1/go.mod h1:4xn38Oz/+hiEUTpbVfGVLfvOg0yKLlRP7Q9+gJJILgA=
+github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA=
+github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w=
+github.com/invopop/jsonschema v0.4.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0=
+github.com/jhump/gopoet v0.0.0-20190322174617-17282ff210b3/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI=
+github.com/jhump/gopoet v0.1.0/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI=
+github.com/jhump/goprotoc v0.5.0/go.mod h1:VrbvcYrQOrTi3i0Vf+m+oqQWk9l72mjkJCYo7UvLHRQ=
+github.com/jhump/protoreflect v1.11.0/go.mod h1:U7aMIjN0NWq9swDP7xDdoMfRHb35uiuTd3Z9nFXJf5E=
+github.com/jhump/protoreflect v1.12.0/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI=
+github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/juju/qthttptest v0.1.1/go.mod h1:aTlAv8TYaflIiTDIQYzxnl1QdPjAg8Q8qJMErpKy6A4=
+github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
+github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY=
+github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
+github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
+github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
+github.com/klauspost/cpuid/v2 v2.1.0 h1:eyi1Ad2aNJMW95zcSbmGg7Cg6cq3ADwLpMAP96d8rF0=
+github.com/klauspost/cpuid/v2 v2.1.0/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/linkedin/goavro v2.1.0+incompatible/go.mod h1:bBCwI2eGYpUI/4820s67MElg9tdeLbINjLjiM2xZFYM=
+github.com/linkedin/goavro/v2 v2.10.0/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA=
+github.com/linkedin/goavro/v2 v2.10.1/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA=
+github.com/linkedin/goavro/v2 v2.11.1/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA=
+github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
+github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
+github.com/minio/minio-go/v7 v7.0.35 h1:JuPPxWLdxQmNLSaS8AWZnO5HBadeI1xg6FGrEELQEVU=
+github.com/minio/minio-go/v7 v7.0.35/go.mod h1:nCrRzjoSUQh8hgKKtu3Y708OLvRLtuASMg2/nvmbarw=
+github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g=
+github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/nrwiersma/avro-benchmarks v0.0.0-20210913175520-21aec48c8f76/go.mod h1:iKyFMidsk/sVYONJRE372sJuX/QTRPacU7imPqqsu7g=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/rogpeppe/clock v0.0.0-20190514195947-2896927a307a/go.mod h1:4r5QyqhjIWCcK8DO4KMclc5Iknq5qVBAlbYYzAbUScQ=
+github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
+github.com/rs/xid v1.4.0 h1:qd7wPTDkN6KQx2VmMBLrpHkiyQwgFXRnkOLacUiaSNY=
+github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
+github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0=
+github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
+github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa h1:zuSxTR4o9y82ebqCUJYNGJbGPo6sKVl54f/TVDObg1c=
+golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
+golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
+golang.org/x/net v0.0.0-20220722155237-a158d28d115b h1:PxfKdU9lEEDYjdIzOtC4qFWgkU2rGHdKlKowJSMN9h0=
+golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 h1:0A+M6Uqn+Eje4kHMK80dtF3JCXC4ykBgQG4Fe06QRhQ=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s=
+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
+google.golang.org/genproto v0.0.0-20220503193339-ba3ae3f07e29/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
+google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
+google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
+google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
+google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
+google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/avro.v0 v0.0.0-20171217001914-a730b5802183/go.mod h1:FvqrFXt+jCsyQibeRv4xxEJBL5iG2DDW5aeJwzDiq4A=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/errgo.v1 v1.0.0/go.mod h1:CxwszS/Xz1C49Ucd2i6Zil5UToP1EmyrFhKaMVbg1mk=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/httprequest.v1 v1.2.1/go.mod h1:x2Otw96yda5+8+6ZeWwHIJTFkEHWP/qP8pJOzqEtWPM=
+gopkg.in/ini.v1 v1.66.6 h1:LATuAqN/shcYAOkv3wl2L4rkaKqkcgTBQjOyYDvcPKI=
+gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
+gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
+gopkg.in/retry.v1 v1.0.3/go.mod h1:FJkXmWiMaAo7xB+xhvDF59zhfjDWyzmyAxiT4dB688g=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff --git a/pm-file-flow-demo/kafka-pm-producer/main.go b/pm-file-flow-demo/kafka-pm-producer/main.go
new file mode 100644
index 0000000..a340007
--- /dev/null
+++ b/pm-file-flow-demo/kafka-pm-producer/main.go
@@ -0,0 +1,2145 @@
+//  ============LICENSE_START===============================================
+//  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+//  ========================================================================
+//  Licensed 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.
+//  ============LICENSE_END=================================================
+//
+
+package main
+
+import (
+	"bytes"
+	"compress/gzip"
+	"context"
+	"crypto/tls"
+	"encoding/json"
+	"encoding/xml"
+	"errors"
+	"fmt"
+	"io"
+	"net"
+	"os/signal"
+	"reflect"
+	"strings"
+	"sync"
+	"syscall"
+
+	"net/http"
+	"os"
+	"runtime"
+	"strconv"
+	"time"
+
+	"github.com/google/uuid"
+
+	log "github.com/sirupsen/logrus"
+
+	"github.com/gorilla/mux"
+
+	"net/http/pprof"
+
+	"github.com/confluentinc/confluent-kafka-go/kafka"
+	jsoniter "github.com/json-iterator/go"
+	"github.com/minio/minio-go/v7"
+	"github.com/minio/minio-go/v7/pkg/credentials"
+)
+
+//== Constants ==//
+
+const http_port = 80
+const https_port = 443
+const config_file = "application_configuration.json"
+const server_crt = "server.crt"
+const server_key = "server.key"
+
+const producer_name = "kafka-producer"
+
+const registration_delay_short = 5
+const registration_delay_long = 120
+
+const mutexLocked = 1
+
+const (
+	Init AppStates = iota
+	Running
+	Terminating
+)
+
+const reader_queue_length = 100 //Per type job
+const writer_queue_length = 100 //Per info job
+const parallelism_limiter = 100 //For all jobs
+
+//== Types ==//
+
+type AppStates int64
+
+type FilterParameters struct {
+	MeasuredEntityDns []string `json:"measuredEntityDns"`
+	MeasTypes         []string `json:"measTypes"`
+	MeasObjClass      []string `json:"measObjClass"`
+	MeasObjInstIds    []string `json:"measObjInstIds"`
+}
+
+type InfoJobDataType struct {
+	InfoJobData struct {
+		KafkaOutputTopic string           `json:"kafkaOutputTopic"`
+		FilterParams     FilterParameters `json:"filter"`
+	} `json:"info_job_data"`
+	InfoJobIdentity  string `json:"info_job_identity"`
+	InfoTypeIdentity string `json:"info_type_identity"`
+	LastUpdated      string `json:"last_updated"`
+	Owner            string `json:"owner"`
+	TargetURI        string `json:"target_uri"`
+}
+
+// Type for an infojob
+type InfoJobRecord struct {
+	job_info     InfoJobDataType
+	output_topic string
+
+	statistics *InfoJobStats
+}
+
+// Type for an infojob
+type TypeJobRecord struct {
+	InfoType        string
+	InputTopic      string
+	data_in_channel chan *KafkaPayload
+	reader_control  chan ReaderControl
+	job_control     chan JobControl
+	groupId         string
+	clientId        string
+
+	statistics *TypeJobStats
+}
+
+// Type for controlling the topic reader
+type ReaderControl struct {
+	command string
+}
+
+// Type for controlling the topic writer
+type WriterControl struct {
+	command string
+}
+
+// Type for controlling the job
+type JobControl struct {
+	command string
+	filter  Filter
+}
+
+type KafkaPayload struct {
+	msg   *kafka.Message
+	topic string
+	jobid string
+}
+
+type FilterMaps struct {
+	sourceNameMap     map[string]bool
+	measObjClassMap   map[string]bool
+	measObjInstIdsMap map[string]bool
+	measTypesMap      map[string]bool
+}
+
+type Filter struct {
+	JobId       string
+	OutputTopic string
+	filter      FilterMaps
+}
+
+// Type for info job statistics
+type InfoJobStats struct {
+	out_msg_cnt  int
+	out_data_vol int64
+}
+
+// Type for type job statistics
+type TypeJobStats struct {
+	in_msg_cnt  int
+	in_data_vol int64
+}
+
+// == API Datatypes ==//
+// Type for supported data types
+type DataType struct {
+	ID                 string `json:"id"`
+	KafkaInputTopic    string `json:"kafkaInputTopic"`
+	InputJobType       string `json:inputJobType`
+	InputJobDefinition struct {
+		KafkaOutputTopic string `json:kafkaOutputTopic`
+	} `json:inputJobDefinition`
+
+	ext_job         []byte
+	ext_job_created bool
+	ext_job_id      string
+}
+
+type DataTypes struct {
+	ProdDataTypes []DataType `json:"types"`
+}
+
+type Minio_buckets struct {
+	Buckets map[string]bool
+}
+
+//== External data types ==//
+
+// // Data type for event xml file download
+type XmlFileEventHeader struct {
+	ProductName        string `json:"productName"`
+	VendorName         string `json:"vendorName"`
+	Location           string `json:"location"`
+	Compression        string `json:"compression"`
+	SourceName         string `json:"sourceName"`
+	FileFormatType     string `json:"fileFormatType"`
+	FileFormatVersion  string `json:"fileFormatVersion"`
+	StartEpochMicrosec int64  `json:"startEpochMicrosec"`
+	LastEpochMicrosec  int64  `json:"lastEpochMicrosec"`
+	Name               string `json:"name"`
+	ChangeIdentifier   string `json:"changeIdentifier"`
+	InternalLocation   string `json:"internalLocation"`
+	TimeZoneOffset     string `json:"timeZoneOffset"`
+	//ObjectStoreBucket  string `json:"objectStoreBucket"`
+}
+
+// Data types for input xml file
+type MeasCollecFile struct {
+	XMLName        xml.Name `xml:"measCollecFile"`
+	Text           string   `xml:",chardata"`
+	Xmlns          string   `xml:"xmlns,attr"`
+	Xsi            string   `xml:"xsi,attr"`
+	SchemaLocation string   `xml:"schemaLocation,attr"`
+	FileHeader     struct {
+		Text              string `xml:",chardata"`
+		FileFormatVersion string `xml:"fileFormatVersion,attr"`
+		VendorName        string `xml:"vendorName,attr"`
+		DnPrefix          string `xml:"dnPrefix,attr"`
+		FileSender        struct {
+			Text        string `xml:",chardata"`
+			LocalDn     string `xml:"localDn,attr"`
+			ElementType string `xml:"elementType,attr"`
+		} `xml:"fileSender"`
+		MeasCollec struct {
+			Text      string `xml:",chardata"`
+			BeginTime string `xml:"beginTime,attr"`
+		} `xml:"measCollec"`
+	} `xml:"fileHeader"`
+	MeasData struct {
+		Text           string `xml:",chardata"`
+		ManagedElement struct {
+			Text      string `xml:",chardata"`
+			LocalDn   string `xml:"localDn,attr"`
+			SwVersion string `xml:"swVersion,attr"`
+		} `xml:"managedElement"`
+		MeasInfo []struct {
+			Text       string `xml:",chardata"`
+			MeasInfoId string `xml:"measInfoId,attr"`
+			Job        struct {
+				Text  string `xml:",chardata"`
+				JobId string `xml:"jobId,attr"`
+			} `xml:"job"`
+			GranPeriod struct {
+				Text     string `xml:",chardata"`
+				Duration string `xml:"duration,attr"`
+				EndTime  string `xml:"endTime,attr"`
+			} `xml:"granPeriod"`
+			RepPeriod struct {
+				Text     string `xml:",chardata"`
+				Duration string `xml:"duration,attr"`
+			} `xml:"repPeriod"`
+			MeasType []struct {
+				Text string `xml:",chardata"`
+				P    string `xml:"p,attr"`
+			} `xml:"measType"`
+			MeasValue []struct {
+				Text       string `xml:",chardata"`
+				MeasObjLdn string `xml:"measObjLdn,attr"`
+				R          []struct {
+					Text string `xml:",chardata"`
+					P    string `xml:"p,attr"`
+				} `xml:"r"`
+				Suspect string `xml:"suspect"`
+			} `xml:"measValue"`
+		} `xml:"measInfo"`
+	} `xml:"measData"`
+	FileFooter struct {
+		Text       string `xml:",chardata"`
+		MeasCollec struct {
+			Text    string `xml:",chardata"`
+			EndTime string `xml:"endTime,attr"`
+		} `xml:"measCollec"`
+	} `xml:"fileFooter"`
+}
+
+// Data type for json file
+// Splitted in sevreal part to allow add/remove in lists
+type MeasResults struct {
+	P      int    `json:"p"`
+	SValue string `json:"sValue"`
+}
+
+type MeasValues struct {
+	MeasObjInstID   string        `json:"measObjInstId"`
+	SuspectFlag     string        `json:"suspectFlag"`
+	MeasResultsList []MeasResults `json:"measResults"`
+}
+
+type SMeasTypes struct {
+	SMeasType string `json:"sMeasTypesList"`
+}
+
+type MeasInfoList struct {
+	MeasInfoID struct {
+		SMeasInfoID string `json:"sMeasInfoId"`
+	} `json:"measInfoId"`
+	MeasTypes struct {
+		SMeasTypesList []string `json:"sMeasTypesList"`
+	} `json:"measTypes"`
+	MeasValuesList []MeasValues `json:"measValuesList"`
+}
+
+type PMJsobFile struct {
+	Event struct {
+		CommonEventHeader struct {
+			Domain                  string `json:"domain"`
+			EventID                 string `json:"eventId"`
+			Sequence                int    `json:"sequence"`
+			EventName               string `json:"eventName"`
+			SourceName              string `json:"sourceName"`
+			ReportingEntityName     string `json:"reportingEntityName"`
+			Priority                string `json:"priority"`
+			StartEpochMicrosec      int64  `json:"startEpochMicrosec"`
+			LastEpochMicrosec       int64  `json:"lastEpochMicrosec"`
+			Version                 string `json:"version"`
+			VesEventListenerVersion string `json:"vesEventListenerVersion"`
+			TimeZoneOffset          string `json:"timeZoneOffset"`
+		} `json:"commonEventHeader"`
+		Perf3GppFields struct {
+			Perf3GppFieldsVersion string `json:"perf3gppFieldsVersion"`
+			MeasDataCollection    struct {
+				GranularityPeriod             int            `json:"granularityPeriod"`
+				MeasuredEntityUserName        string         `json:"measuredEntityUserName"`
+				MeasuredEntityDn              string         `json:"measuredEntityDn"`
+				MeasuredEntitySoftwareVersion string         `json:"measuredEntitySoftwareVersion"`
+				SMeasInfoList                 []MeasInfoList `json:"measInfoList"`
+			} `json:"measDataCollection"`
+		} `json:"perf3gppFields"`
+	} `json:"event"`
+}
+
+// Data type for converted json file message
+type FileDownloadedEvt struct {
+	Filename string `json:"filename"`
+}
+
+//== Variables ==//
+
+var AppState = Init
+
+// Lock for all internal data
+var datalock sync.Mutex
+
+var producer_instance_name string = producer_name
+
+// Keep all info type jobs, key == type id
+var TypeJobs map[string]TypeJobRecord = make(map[string]TypeJobRecord)
+
+// Keep all info jobs, key == job id
+var InfoJobs map[string]InfoJobRecord = make(map[string]InfoJobRecord)
+
+var InfoTypes DataTypes
+
+// Limiter - valid for all jobs
+var jobLimiterChan = make(chan struct{}, parallelism_limiter)
+
+// TODO: Config param?
+var bucket_location = "swe"
+
+// == Env variables ==//
+var bootstrapserver = os.Getenv("KAFKA_SERVER")
+var files_volume = os.Getenv("FILES_VOLUME")
+var ics_server = os.Getenv("ICS")
+var self = os.Getenv("SELF")
+var filestore_user = os.Getenv("FILESTORE_USER")
+var filestore_pwd = os.Getenv("FILESTORE_PWD")
+var filestore_server = os.Getenv("FILESTORE_SERVER")
+
+var data_out_channel = make(chan *KafkaPayload, writer_queue_length)
+var writer_control = make(chan WriterControl, 1)
+
+var minio_bucketlist map[string]Minio_buckets = make(map[string]Minio_buckets)
+
+// == Main ==//
+func main() {
+
+	//log.SetLevel(log.InfoLevel)
+	log.SetLevel(log.TraceLevel)
+
+	log.Info("Server starting...")
+
+	if self == "" {
+		log.Panic("Env SELF not configured")
+	}
+	if bootstrapserver == "" {
+		log.Panic("Env KAFKA_SERVER not set")
+	}
+	if ics_server == "" {
+		log.Panic("Env ICS not set")
+	}
+	if os.Getenv("KP") != "" {
+		producer_instance_name = producer_instance_name + "-" + os.Getenv("KP")
+	}
+
+	rtr := mux.NewRouter()
+	rtr.HandleFunc("/callbacks/job/"+producer_name, create_job)
+	rtr.HandleFunc("/callbacks/job/"+producer_name+"/{job_id}", delete_job)
+	rtr.HandleFunc("/callbacks/supervision/"+producer_name, supervise_job)
+	rtr.HandleFunc("/statistics", statistics)
+	rtr.HandleFunc("/logging/{level}", logging_level)
+	rtr.HandleFunc("/logging", logging_level)
+	rtr.HandleFunc("/", alive)
+
+	//For perf/mem profiling
+	rtr.HandleFunc("/custom_debug_path/profile", pprof.Profile)
+
+	http.Handle("/", rtr)
+
+	http_server := &http.Server{Addr: ":" + strconv.Itoa(http_port), Handler: nil}
+
+	cer, err := tls.LoadX509KeyPair(server_crt, server_key)
+	if err != nil {
+		log.Error("Cannot load key and cert - %v\n", err)
+		return
+	}
+	config := &tls.Config{Certificates: []tls.Certificate{cer}}
+	https_server := &http.Server{Addr: ":" + strconv.Itoa(https_port), TLSConfig: config, Handler: nil}
+
+	//TODO: Make http on/off configurable
+	// Run http
+	go func() {
+		log.Info("Starting http service...")
+		err := http_server.ListenAndServe()
+		if err == http.ErrServerClosed { // graceful shutdown
+			log.Info("http server shutdown...")
+		} else if err != nil {
+			log.Error("http server error: %v\n", err)
+		}
+	}()
+
+	//TODO: Make https on/off configurable
+	//  Run https
+	go func() {
+		log.Info("Starting https service...")
+		err := https_server.ListenAndServe()
+		if err == http.ErrServerClosed { // graceful shutdown
+			log.Info("https server shutdown...")
+		} else if err != nil {
+			log.Error("https server error: %v\n", err)
+		}
+	}()
+	check_tcp(strconv.Itoa(http_port))
+	check_tcp(strconv.Itoa(https_port))
+
+	go start_topic_writer(writer_control, data_out_channel)
+
+	//Setup proc for periodic type registration
+	var event_chan = make(chan int) //Channel for stopping the proc
+	go periodic_registration(event_chan)
+
+	//Wait for term/int signal do try to shut down gracefully
+	sigs := make(chan os.Signal, 1)
+	signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
+	go func() {
+		sig := <-sigs
+		fmt.Printf("Received signal %s - application will terminate\n", sig)
+		event_chan <- 0 // Stop periodic registration
+		datalock.Lock()
+		defer datalock.Unlock()
+		AppState = Terminating
+		http_server.Shutdown(context.Background())
+		https_server.Shutdown(context.Background())
+		// Stopping jobs
+		for key, _ := range TypeJobs {
+			log.Info("Stopping type job:", key)
+			for _, dp := range InfoTypes.ProdDataTypes {
+				if key == dp.ID {
+					remove_type_job(dp)
+				}
+			}
+		}
+	}()
+
+	AppState = Running
+
+	//Wait until all go routines has exited
+	runtime.Goexit()
+
+	fmt.Println("main routine exit")
+	fmt.Println("server stopped")
+}
+
+func check_tcp(port string) {
+	log.Info("Checking tcp port: ", port)
+	for true {
+		address := net.JoinHostPort("localhost", port)
+		// 3 second timeout
+		conn, err := net.DialTimeout("tcp", address, 3*time.Second)
+		if err != nil {
+			log.Info("Checking tcp port: ", port, " failed, retrying...")
+		} else {
+			if conn != nil {
+				log.Info("Checking tcp port: ", port, " - OK")
+				_ = conn.Close()
+				return
+			} else {
+				log.Info("Checking tcp port: ", port, " failed, retrying...")
+			}
+		}
+	}
+}
+
+//== Core functions ==//
+
+// Run periodic registration of producers
+func periodic_registration(evtch chan int) {
+	var delay int = registration_delay_short
+	for {
+		select {
+		case msg := <-evtch:
+			if msg == 0 { // Stop thread
+				return
+			}
+		case <-time.After(time.Duration(delay) * time.Second):
+			ok := register_producer()
+			if ok {
+				delay = registration_delay_long
+			} else {
+				if delay < registration_delay_long {
+					delay += registration_delay_short
+				} else {
+					delay = registration_delay_short
+				}
+			}
+		}
+	}
+}
+
+func register_producer() bool {
+
+	log.Info("Registering producer: ", producer_instance_name)
+
+	file, err := os.ReadFile(config_file)
+	if err != nil {
+		log.Error("Cannot read config file: ", config_file)
+		log.Error("Registering producer: ", producer_instance_name, " - failed")
+		return false
+	}
+	data := DataTypes{}
+	err = jsoniter.Unmarshal([]byte(file), &data)
+	if err != nil {
+		log.Error("Cannot parse config file: ", config_file)
+		log.Error("Registering producer: ", producer_instance_name, " - failed")
+		return false
+	}
+	var new_type_names []string
+
+	for i := 0; i < len(data.ProdDataTypes); i++ {
+		t1 := make(map[string]interface{})
+		t2 := make(map[string]interface{})
+
+		t2["schema"] = "http://json-schema.org/draft-07/schema#"
+		t2["title"] = data.ProdDataTypes[i].ID
+		t2["description"] = data.ProdDataTypes[i].ID
+		t2["type"] = "object"
+
+		t1["info_job_data_schema"] = t2
+
+		json, err := json.Marshal(t1)
+		if err != nil {
+			log.Error("Cannot create json for type: ", data.ProdDataTypes[i].ID)
+			log.Error("Registering producer: ", producer_instance_name, " - failed")
+			return false
+		} else {
+			//TODO: http/https should be configurable
+			ok := send_http_request(json, http.MethodPut, "http://"+ics_server+"/data-producer/v1/info-types/"+data.ProdDataTypes[i].ID, true)
+			if !ok {
+				log.Error("Cannot register type: ", data.ProdDataTypes[i].ID)
+				log.Error("Registering producer: ", producer_instance_name, " - failed")
+				return false
+			}
+			new_type_names = append(new_type_names, data.ProdDataTypes[i].ID)
+		}
+	}
+
+	log.Debug("Registering types: ", new_type_names)
+	m := make(map[string]interface{})
+	m["supported_info_types"] = new_type_names
+	//TODO: http/https should be configurable
+	m["info_job_callback_url"] = "http://" + self + "/callbacks/job/" + producer_name
+	//TODO: http/https should be configurable
+	m["info_producer_supervision_callback_url"] = "http://" + self + "/callbacks/supervision/job/" + producer_name
+
+	json, err := json.Marshal(m)
+	if err != nil {
+		log.Error("Cannot create json for producer: ", producer_instance_name)
+		log.Error("Registering producer: ", producer_instance_name, " - failed")
+		return false
+	}
+	ok := send_http_request(json, http.MethodPut, "http://"+ics_server+"/data-producer/v1/info-producers/"+producer_instance_name, true)
+	if !ok {
+		log.Error("Cannot register producer: ", producer_instance_name)
+		log.Error("Registering producer: ", producer_instance_name, " - failed")
+		return false
+	}
+	datalock.Lock()
+	defer datalock.Unlock()
+
+	var current_type_names []string
+	for _, v := range InfoTypes.ProdDataTypes {
+		current_type_names = append(current_type_names, v.ID)
+		if contains_str(new_type_names, v.ID) {
+			//Type exist
+			log.Debug("Type ", v.ID, " exists")
+			create_ext_job(v)
+		} else {
+			//Type is removed
+			log.Info("Removing type job for type: ", v.ID, " Type not in configuration")
+			remove_type_job(v)
+		}
+	}
+
+	for _, v := range data.ProdDataTypes {
+		if contains_str(current_type_names, v.ID) {
+			//Type exist
+			log.Debug("Type ", v.ID, " exists")
+			create_ext_job(v)
+		} else {
+			//Type is new
+			log.Info("Adding type job for type: ", v.ID, " Type added to configuration")
+			start_type_job(v)
+		}
+	}
+
+	InfoTypes = data
+	log.Debug("Datatypes: ", InfoTypes)
+
+	log.Info("Registering producer: ", producer_instance_name, " - OK")
+	return true
+}
+
+func remove_type_job(dp DataType) {
+	log.Info("Removing type job: ", dp.ID)
+	j, ok := TypeJobs[dp.ID]
+	if ok {
+		j.reader_control <- ReaderControl{"EXIT"}
+	}
+
+	if dp.ext_job_created == true {
+		dp.ext_job_id = dp.InputJobType + "_" + generate_uuid_from_type(dp.InputJobType)
+		//TODO: http/https should be configurable
+		ok := send_http_request(dp.ext_job, http.MethodDelete, "http://"+ics_server+"/data-consumer/v1/info-jobs/"+dp.ext_job_id, true)
+		if !ok {
+			log.Error("Cannot delete job: ", dp.ext_job_id)
+		}
+		dp.ext_job_created = false
+		dp.ext_job = nil
+	}
+
+}
+
+func start_type_job(dp DataType) {
+	log.Info("Starting type job: ", dp.ID)
+	job_record := TypeJobRecord{}
+
+	job_record.job_control = make(chan JobControl, 1)
+	job_record.reader_control = make(chan ReaderControl, 1)
+	job_record.data_in_channel = make(chan *KafkaPayload, reader_queue_length)
+	job_record.InfoType = dp.ID
+	job_record.InputTopic = dp.KafkaInputTopic
+	job_record.groupId = "kafka-procon-" + dp.ID
+	job_record.clientId = dp.ID + "-" + os.Getenv("KP")
+	var stats TypeJobStats
+	job_record.statistics = &stats
+
+	switch dp.ID {
+	case "xml-file-data-to-filestore":
+		go start_job_xml_file_data(dp.ID, job_record.job_control, job_record.data_in_channel, data_out_channel, "", "pm-files-json")
+	case "xml-file-data":
+		go start_job_xml_file_data(dp.ID, job_record.job_control, job_record.data_in_channel, data_out_channel, files_volume, "")
+	case "json-file-data-from-filestore":
+		go start_job_json_file_data(dp.ID, job_record.job_control, job_record.data_in_channel, data_out_channel, true)
+	case "json-file-data":
+		go start_job_json_file_data(dp.ID, job_record.job_control, job_record.data_in_channel, data_out_channel, false)
+	default:
+	}
+
+	go start_topic_reader(dp.KafkaInputTopic, dp.ID, job_record.reader_control, job_record.data_in_channel, job_record.groupId, job_record.clientId, &stats)
+
+	TypeJobs[dp.ID] = job_record
+
+	if dp.InputJobType != "" {
+		jb := make(map[string]interface{})
+		jb["info_type_id"] = dp.InputJobType
+		jb["job_owner"] = "console" //TODO:
+		jb["status_notification_uri"] = "http://callback:80/post"
+		jb1 := make(map[string]interface{})
+		jb["job_definition"] = jb1
+		jb1["kafkaOutputTopic"] = dp.InputJobDefinition.KafkaOutputTopic
+
+		json, err := json.Marshal(jb)
+		dp.ext_job_created = false
+		dp.ext_job = nil
+		if err != nil {
+			log.Error("Cannot create json for type: ", dp.InputJobType)
+
+		} else {
+
+			dp.ext_job = json
+
+			create_ext_job(dp)
+		}
+	}
+}
+
+func create_ext_job(dp DataType) {
+
+	log.Debug("create_ext_job ", dp.InputJobType)
+	if dp.ext_job != nil {
+		log.Debug("create_ext_job ext job not nil")
+	} else {
+		log.Debug("create_ext_job ext job  nil")
+	}
+
+	if dp.ext_job_created == false {
+		log.Debug("create_ext_job ext job  false")
+	} else {
+		log.Debug("create_ext_job ext job  true")
+	}
+	if dp.ext_job != nil && dp.ext_job_created == false {
+		dp.ext_job_id = dp.InputJobType + "_" + generate_uuid_from_type(dp.InputJobType)
+		//TODO: http/https should be configurable
+		ok := send_http_request(dp.ext_job, http.MethodPut, "http://"+ics_server+"/data-consumer/v1/info-jobs/"+dp.ext_job_id, true)
+		if !ok {
+			log.Error("Cannot register job: ", dp.InputJobType)
+			return
+		}
+		log.Error("Registered job ok: ", dp.InputJobType)
+		dp.ext_job_created = true
+	}
+}
+
+func remove_info_job(jobid string) {
+	log.Info("Removing info job: ", jobid)
+	filter := Filter{}
+	filter.JobId = jobid
+	jc := JobControl{}
+	jc.command = "REMOVE-FILTER"
+	jc.filter = filter
+	infoJob := InfoJobs[jobid]
+	typeJob := TypeJobs[infoJob.job_info.InfoTypeIdentity]
+	typeJob.job_control <- jc
+
+}
+
+// == Helper functions ==//
+
+// Function to check the status of a mutex lock
+func MutexLocked(m *sync.Mutex) bool {
+	state := reflect.ValueOf(m).Elem().FieldByName("state")
+	return state.Int()&mutexLocked == mutexLocked
+}
+
+// Test if slice contains a string
+func contains_str(s []string, e string) bool {
+	for _, a := range s {
+		if a == e {
+			return true
+		}
+	}
+	return false
+}
+
+// Send a http request with json (json may be nil)
+func send_http_request(json []byte, method string, url string, retry bool) bool {
+	// initialize http client
+	client := &http.Client{}
+
+	// set the HTTP method, url, and request body
+	var req *http.Request
+	var err error
+	if json == nil {
+		req, err = http.NewRequest(method, url, http.NoBody)
+	} else {
+		req, err = http.NewRequest(method, url, bytes.NewBuffer(json))
+	}
+	if err != nil {
+		log.Error("Cannot create http request method: ", method, " url: ", url)
+		return false
+	}
+	if json != nil {
+		// set the request header Content-Type for json
+		req.Header.Set("Content-Type", "application/json; charset=utf-8")
+	}
+
+	retries := 1
+	if retry {
+		retries = 5
+	}
+	sleep_time := 1
+	for i := retries; i > 0; i-- {
+		resp, err2 := client.Do(req)
+		if err2 != nil {
+			log.Error("Cannot send http request method: ", method, "url: ", url, " - retries left: ", i)
+
+			time.Sleep(time.Duration(sleep_time) * time.Second)
+			sleep_time = 2 * sleep_time
+		} else {
+			if resp.StatusCode == 200 || resp.StatusCode == 201 {
+				return true
+			}
+		}
+	}
+	return false
+}
+
+// Function to print memory details
+// https://pkg.go.dev/runtime#MemStats
+func PrintMemUsage() {
+	if log.IsLevelEnabled(log.DebugLevel) || log.IsLevelEnabled(log.TraceLevel) {
+		var m runtime.MemStats
+		runtime.ReadMemStats(&m)
+		fmt.Printf("Alloc = %v MiB", bToMb(m.Alloc))
+		fmt.Printf("\tTotalAlloc = %v MiB", bToMb(m.TotalAlloc))
+		fmt.Printf("\tSys = %v MiB", bToMb(m.Sys))
+		fmt.Printf("\tNumGC = %v\n", m.NumGC)
+		fmt.Printf("HeapSys = %v MiB", bToMb(m.HeapSys))
+		fmt.Printf("\tStackSys = %v MiB", bToMb(m.StackSys))
+		fmt.Printf("\tMSpanSys = %v MiB", bToMb(m.MSpanSys))
+		fmt.Printf("\tMCacheSys = %v MiB", bToMb(m.MCacheSys))
+		fmt.Printf("\tBuckHashSys = %v MiB", bToMb(m.BuckHashSys))
+		fmt.Printf("\tGCSys = %v MiB", bToMb(m.GCSys))
+		fmt.Printf("\tOtherSys = %v MiB\n", bToMb(m.OtherSys))
+	}
+}
+
+func bToMb(b uint64) uint64 {
+	return b / 1024 / 1024
+}
+
+func generate_uuid_from_type(s string) string {
+	if len(s) > 16 {
+		s = s[:16]
+	}
+	for len(s) < 16 {
+		s = s + "0"
+	}
+	b := []byte(s)
+	b = b[:16]
+	uuid, _ := uuid.FromBytes(b)
+	return uuid.String()
+}
+
+// Write gzipped data to a Writer
+func gzipWrite(w io.Writer, data *[]byte) error {
+	gw, err1 := gzip.NewWriterLevel(w, gzip.BestSpeed)
+
+	if err1 != nil {
+		return err1
+	}
+	defer gw.Close()
+	_, err2 := gw.Write(*data)
+	return err2
+}
+
+// Write gunzipped data from Reader to a Writer
+func gunzipReaderToWriter(w io.Writer, data io.Reader) error {
+	gr, err1 := gzip.NewReader(data)
+
+	if err1 != nil {
+		return err1
+	}
+	defer gr.Close()
+	data2, err2 := io.ReadAll(gr)
+	if err2 != nil {
+		return err2
+	}
+	_, err3 := w.Write(data2)
+	if err3 != nil {
+		return err3
+	}
+	return nil
+}
+
+func create_minio_bucket(mc *minio.Client, client_id string, bucket string) error {
+	tctx := context.Background()
+	err := mc.MakeBucket(tctx, bucket, minio.MakeBucketOptions{Region: bucket_location})
+	if err != nil {
+		// Check to see if we already own this bucket (which happens if you run this twice)
+		exists, errBucketExists := mc.BucketExists(tctx, bucket)
+		if errBucketExists == nil && exists {
+			log.Debug("Already own bucket:", bucket)
+			add_bucket(client_id, bucket)
+			return nil
+		} else {
+			log.Error("Cannot create or check bucket ", bucket, " in minio client", err)
+			return err
+		}
+	}
+	log.Debug("Successfully created bucket: ", bucket)
+	add_bucket(client_id, bucket)
+	return nil
+}
+
+func check_minio_bucket(mc *minio.Client, client_id string, bucket string) bool {
+	ok := bucket_exist(client_id, bucket)
+	if ok {
+		return true
+	}
+	tctx := context.Background()
+	exists, err := mc.BucketExists(tctx, bucket)
+	if err == nil && exists {
+		log.Debug("Already own bucket:", bucket)
+		return true
+	}
+	log.Error("Bucket does not exist, bucket ", bucket, " in minio client", err)
+	return false
+}
+
+func add_bucket(minio_id string, bucket string) {
+	datalock.Lock()
+	defer datalock.Unlock()
+
+	b, ok := minio_bucketlist[minio_id]
+	if !ok {
+		b = Minio_buckets{}
+		b.Buckets = make(map[string]bool)
+	}
+	b.Buckets[bucket] = true
+	minio_bucketlist[minio_id] = b
+}
+
+func bucket_exist(minio_id string, bucket string) bool {
+	datalock.Lock()
+	defer datalock.Unlock()
+
+	b, ok := minio_bucketlist[minio_id]
+	if !ok {
+		return false
+	}
+	_, ok = b.Buckets[bucket]
+	return ok
+}
+
+//== http api functions ==//
+
+// create/update job
+func create_job(w http.ResponseWriter, req *http.Request) {
+	log.Debug("Create job, http method: ", req.Method)
+	if req.Method != http.MethodPost {
+		log.Error("Create job, http method not allowed")
+		w.WriteHeader(http.StatusMethodNotAllowed)
+		return
+	}
+	ct := req.Header.Get("Content-Type")
+	if ct != "application/json" {
+		log.Error("Create job, bad content type")
+		http.Error(w, "Bad content type", http.StatusBadRequest)
+		return
+	}
+
+	var t InfoJobDataType
+	err := json.NewDecoder(req.Body).Decode(&t)
+	if err != nil {
+		log.Error("Create job, cannot parse json,", err)
+		http.Error(w, "Cannot parse json", http.StatusBadRequest)
+		return
+	}
+
+	datalock.Lock()
+	defer datalock.Unlock()
+
+	job_id := t.InfoJobIdentity
+	job_record, job_found := InfoJobs[job_id]
+	type_job_record, found_type := TypeJobs[t.InfoTypeIdentity]
+	if !job_found {
+		if !found_type {
+			log.Error("Type ", t.InfoTypeIdentity, " does not exist")
+			http.Error(w, "Type "+t.InfoTypeIdentity+" does not exist", http.StatusBadRequest)
+			return
+		}
+	} else if t.InfoTypeIdentity != job_record.job_info.InfoTypeIdentity {
+		log.Error("Job cannot change type")
+		http.Error(w, "Job cannot change type", http.StatusBadRequest)
+		return
+	} else if t.InfoJobData.KafkaOutputTopic != job_record.job_info.InfoJobData.KafkaOutputTopic {
+		log.Error("Job cannot change topic")
+		http.Error(w, "Job cannot change topic", http.StatusBadRequest)
+		return
+	} else if !found_type {
+		//Should never happen, if the type is removed then job is stopped
+		log.Error("Type ", t.InfoTypeIdentity, " does not exist")
+		http.Error(w, "Type "+t.InfoTypeIdentity+" does not exist", http.StatusBadRequest)
+		return
+	}
+
+	// // TODO: Create topics should be configurable....
+	// if kafka_admin_client == nil {
+	// 	kafka_admin_client = start_adminclient()
+	// }
+	// if kafka_admin_client != nil {
+	// 	ctx := context.Background()
+	// 	maxdur := time.Duration(30)
+	// 	_, err := kafka_admin_client.CreateTopics(
+	// 		ctx,
+	// 		// Multiple topics can be created simultaneously
+	// 		// by providing more TopicSpecification structs here.
+	// 		[]kafka.TopicSpecification{{
+	// 			Topic: job_record.output_topic}},
+	// 		// Admin options
+	// 		kafka.SetAdminOperationTimeout(maxdur))
+	// 	if err != nil {
+	// 		log.Warn("Cound not create topic: ", job_record.output_topic)
+	// 	}
+	// }
+
+	//TODO: Verify that job contains enough parameters...
+
+	if !job_found {
+		job_record = InfoJobRecord{}
+		job_record.job_info = t
+		output_topic := t.InfoJobData.KafkaOutputTopic
+		job_record.output_topic = t.InfoJobData.KafkaOutputTopic
+		log.Debug("Starting infojob ", job_id, ", type ", t.InfoTypeIdentity, ", output topic", output_topic)
+
+		var stats InfoJobStats
+		job_record.statistics = &stats
+
+		filter := Filter{}
+		filter.JobId = job_id
+		filter.OutputTopic = job_record.output_topic
+
+		jc := JobControl{}
+
+		jc.command = "ADD-FILTER"
+
+		//TODO: Refactor
+		if t.InfoTypeIdentity == "json-file-data-from-filestore" || t.InfoTypeIdentity == "json-file-data" {
+			fm := FilterMaps{}
+			fm.sourceNameMap = make(map[string]bool)
+			fm.measObjClassMap = make(map[string]bool)
+			fm.measObjInstIdsMap = make(map[string]bool)
+			fm.measTypesMap = make(map[string]bool)
+			if t.InfoJobData.FilterParams.MeasuredEntityDns != nil {
+				for _, v := range t.InfoJobData.FilterParams.MeasuredEntityDns {
+					fm.sourceNameMap[v] = true
+				}
+			}
+			if t.InfoJobData.FilterParams.MeasObjClass != nil {
+				for _, v := range t.InfoJobData.FilterParams.MeasObjClass {
+					fm.measObjClassMap[v] = true
+				}
+			}
+			if t.InfoJobData.FilterParams.MeasObjInstIds != nil {
+				for _, v := range t.InfoJobData.FilterParams.MeasObjInstIds {
+					fm.measObjInstIdsMap[v] = true
+				}
+			}
+			if t.InfoJobData.FilterParams.MeasTypes != nil {
+				for _, v := range t.InfoJobData.FilterParams.MeasTypes {
+					fm.measTypesMap[v] = true
+				}
+			}
+			filter.filter = fm
+		}
+
+		jc.filter = filter
+		InfoJobs[job_id] = job_record
+
+		type_job_record.job_control <- jc
+
+	} else {
+		//TODO
+		//Update job
+	}
+}
+
+// delete job
+func delete_job(w http.ResponseWriter, req *http.Request) {
+	if req.Method != http.MethodDelete {
+		w.WriteHeader(http.StatusMethodNotAllowed)
+		return
+	}
+	datalock.Lock()
+	defer datalock.Unlock()
+
+	vars := mux.Vars(req)
+
+	if id, ok := vars["job_id"]; ok {
+		if _, ok := InfoJobs[id]; ok {
+			remove_info_job(id)
+			w.WriteHeader(http.StatusNoContent)
+			log.Info("Job ", id, " deleted")
+			return
+		}
+	}
+	w.WriteHeader(http.StatusNotFound)
+}
+
+// job supervision
+func supervise_job(w http.ResponseWriter, req *http.Request) {
+	if req.Method != http.MethodGet {
+		w.WriteHeader(http.StatusMethodNotAllowed)
+		return
+	}
+	datalock.Lock()
+	defer datalock.Unlock()
+
+	vars := mux.Vars(req)
+
+	log.Debug("Supervising, job: ", vars["job_id"])
+	if id, ok := vars["job_id"]; ok {
+		if _, ok := InfoJobs[id]; ok {
+			log.Debug("Supervision ok, job", id)
+			return
+		}
+	}
+	w.WriteHeader(http.StatusNotFound)
+}
+
+// producer statictics, all jobs
+func statistics(w http.ResponseWriter, req *http.Request) {
+	if req.Method != http.MethodGet {
+		w.WriteHeader(http.StatusMethodNotAllowed)
+		return
+	}
+	m := make(map[string]interface{})
+	log.Debug("producer statictics, locked? ", MutexLocked(&datalock))
+	datalock.Lock()
+	defer datalock.Unlock()
+	req.Header.Set("Content-Type", "application/json; charset=utf-8")
+	m["number-of-jobs"] = len(InfoJobs)
+	m["number-of-types"] = len(InfoTypes.ProdDataTypes)
+	qm := make(map[string]interface{})
+	m["jobs"] = qm
+	for key, elem := range InfoJobs {
+		jm := make(map[string]interface{})
+		qm[key] = jm
+		jm["type"] = elem.job_info.InfoTypeIdentity
+		typeJob := TypeJobs[elem.job_info.InfoTypeIdentity]
+		jm["groupId"] = typeJob.groupId
+		jm["clientID"] = typeJob.clientId
+		jm["input topic"] = typeJob.InputTopic
+		jm["input queue length - job ("+fmt.Sprintf("%v", cap(typeJob.data_in_channel))+")"] = len(typeJob.data_in_channel)
+		jm["output topic"] = elem.output_topic
+		jm["output queue length - producer ("+fmt.Sprintf("%v", cap(data_out_channel))+")"] = len(data_out_channel)
+		jm["msg_in (type)"] = typeJob.statistics.in_msg_cnt
+		jm["msg_out (job)"] = elem.statistics.out_msg_cnt
+
+	}
+	json, err := json.Marshal(m)
+	if err != nil {
+		w.WriteHeader(http.StatusInternalServerError)
+		log.Error("Cannot marshal statistics json")
+		return
+	}
+	_, err = w.Write(json)
+	if err != nil {
+		w.WriteHeader(http.StatusInternalServerError)
+		log.Error("Cannot send statistics json")
+		return
+	}
+}
+
+// Simple alive check
+func alive(w http.ResponseWriter, req *http.Request) {
+	//Alive check
+}
+
+// Get/Set logging level
+func logging_level(w http.ResponseWriter, req *http.Request) {
+	vars := mux.Vars(req)
+	if level, ok := vars["level"]; ok {
+		if req.Method == http.MethodPut {
+			switch level {
+			case "trace":
+				log.SetLevel(log.TraceLevel)
+			case "debug":
+				log.SetLevel(log.DebugLevel)
+			case "info":
+				log.SetLevel(log.InfoLevel)
+			case "warn":
+				log.SetLevel(log.WarnLevel)
+			case "error":
+				log.SetLevel(log.ErrorLevel)
+			case "fatal":
+				log.SetLevel(log.FatalLevel)
+			case "panic":
+				log.SetLevel(log.PanicLevel)
+			default:
+				w.WriteHeader(http.StatusNotFound)
+			}
+		} else {
+			w.WriteHeader(http.StatusMethodNotAllowed)
+		}
+	} else {
+		if req.Method == http.MethodGet {
+			msg := "none"
+			if log.IsLevelEnabled(log.PanicLevel) {
+				msg = "panic"
+			} else if log.IsLevelEnabled(log.FatalLevel) {
+				msg = "fatal"
+			} else if log.IsLevelEnabled(log.ErrorLevel) {
+				msg = "error"
+			} else if log.IsLevelEnabled(log.WarnLevel) {
+				msg = "warn"
+			} else if log.IsLevelEnabled(log.InfoLevel) {
+				msg = "info"
+			} else if log.IsLevelEnabled(log.DebugLevel) {
+				msg = "debug"
+			} else if log.IsLevelEnabled(log.TraceLevel) {
+				msg = "trace"
+			}
+			w.Header().Set("Content-Type", "application/text")
+			w.Write([]byte(msg))
+		} else {
+			w.WriteHeader(http.StatusMethodNotAllowed)
+		}
+	}
+}
+
+func start_topic_reader(topic string, type_id string, control_ch chan ReaderControl, data_ch chan *KafkaPayload, gid string, cid string, stats *TypeJobStats) {
+
+	log.Info("Topic reader starting, topic: ", topic, " for type: ", type_id)
+
+	topic_ok := false
+	var c *kafka.Consumer = nil
+	running := true
+
+	for topic_ok == false {
+
+		select {
+		case reader_ctrl := <-control_ch:
+			if reader_ctrl.command == "EXIT" {
+				log.Info("Topic reader on topic: ", topic, " for type: ", type_id, " - stopped")
+				//TODO: Stop consumer if present?
+				data_ch <- nil //Signal to job handler
+				running = false
+				return
+			}
+		case <-time.After(1 * time.Second):
+			if !running {
+				return
+			}
+			if c == nil {
+				c = create_kafka_consumer(type_id, gid, cid)
+				if c == nil {
+					log.Info("Cannot start consumer on topic: ", topic, " for type: ", type_id, " - retrying")
+				} else {
+					log.Info("Consumer started on topic: ", topic, " for type: ", type_id)
+				}
+			}
+			if c != nil && topic_ok == false {
+				err := c.SubscribeTopics([]string{topic}, nil)
+				if err != nil {
+					log.Info("Topic reader cannot start subscribing on topic: ", topic, " for type: ", type_id, " - retrying --  error details: ", err)
+				} else {
+					log.Info("Topic reader subscribing on topic: ", topic, " for type: ", type_id)
+					topic_ok = true
+				}
+			}
+		}
+	}
+	log.Info("Topic reader ready on topic: ", topic, " for type: ", type_id)
+
+	var event_chan = make(chan int)
+	go func() {
+		for {
+			select {
+			case evt := <-c.Events():
+				//TODO: Handle these?
+				log.Debug("Dumping topic reader event on topic: ", topic, " for type: ", type_id, " evt: ", evt.String())
+			case msg := <-event_chan:
+				if msg == 0 {
+					return
+				}
+			case <-time.After(1 * time.Second):
+				if !running {
+					return
+				}
+			}
+		}
+	}()
+
+	go func() {
+		for {
+			maxDur := 1 * time.Second
+			for {
+				select {
+				case reader_ctrl := <-control_ch:
+					if reader_ctrl.command == "EXIT" {
+						event_chan <- 0
+						log.Debug("Topic reader on topic: ", topic, " for type: ", type_id, " - stopped")
+						data_ch <- nil //Signal to job handler
+						defer c.Close()
+						return
+					}
+				default:
+
+					msg, err := c.ReadMessage(maxDur)
+					if err == nil {
+						var kmsg KafkaPayload
+						kmsg.msg = msg
+
+						c.Commit() //TODO: Ok?
+
+						//TODO: Check for exception
+						data_ch <- &kmsg
+						stats.in_msg_cnt++
+						log.Debug("Reader msg: ", &kmsg)
+					} else {
+						log.Debug("Topic Reader for type: ", type_id, "  Nothing to consume on topic: ", topic, ", reason: ", err)
+					}
+
+				}
+			}
+		}
+	}()
+}
+
+func start_topic_writer(control_ch chan WriterControl, data_ch chan *KafkaPayload) {
+
+	var kafka_producer *kafka.Producer
+
+	running := true
+	log.Info("Topic writer starting")
+
+	// Wait for kafka producer to become available - and be prepared to exit the writer
+	for kafka_producer == nil {
+		select {
+		case writer_ctl := <-control_ch:
+			if writer_ctl.command == "EXIT" {
+				//ignore cmd
+			}
+		default:
+			kafka_producer = start_producer()
+			if kafka_producer == nil {
+				log.Debug("Could not start kafka producer - retrying")
+				time.Sleep(1 * time.Second)
+			} else {
+				log.Debug("Kafka producer started")
+				//defer kafka_producer.Close()
+			}
+		}
+	}
+
+	var event_chan = make(chan int)
+	go func() {
+		for {
+			select {
+			case evt := <-kafka_producer.Events():
+				//TODO: Handle this? Probably yes, look if the msg was delivered and if not, resend?
+				switch evt.(type) {
+				case *kafka.Message:
+					m := evt.(*kafka.Message)
+
+					if m.TopicPartition.Error != nil {
+						log.Debug("Dumping topic writer event, failed: ", m.TopicPartition.Error)
+					} else {
+						log.Debug("Dumping topic writer event,  message to topic: ", *m.TopicPartition.Topic, " at offset: ", m.TopicPartition.Partition, " at partiotion: ", m.TopicPartition.Offset)
+					}
+				case kafka.Error:
+					log.Debug("Dumping topic writer event, error: ", evt)
+
+				default:
+					log.Debug("Dumping topic writer event, unknown: ", evt)
+				}
+
+			case msg := <-event_chan:
+				if msg == 0 {
+					return
+				}
+			case <-time.After(1 * time.Second):
+				if !running {
+					return
+				}
+			}
+		}
+	}()
+	go func() {
+		for {
+			select {
+			case writer_ctl := <-control_ch:
+				if writer_ctl.command == "EXIT" {
+					// ignore - wait for channel signal
+				}
+
+			case kmsg := <-data_ch:
+				if kmsg == nil {
+					event_chan <- 0
+					// TODO: Close producer?
+					log.Info("Topic writer stopped by channel signal - start_topic_writer")
+					defer kafka_producer.Close()
+					return
+				}
+
+				retries := 10
+				msg_ok := false
+				var err error
+				for retry := 1; retry <= retries && msg_ok == false; retry++ {
+					err = kafka_producer.Produce(&kafka.Message{
+						TopicPartition: kafka.TopicPartition{Topic: &kmsg.topic, Partition: kafka.PartitionAny},
+						Value:          kmsg.msg.Value, Key: kmsg.msg.Key}, nil)
+
+					if err == nil {
+						incr_out_msg_cnt(kmsg.jobid)
+						msg_ok = true
+						log.Debug("Topic writer, msg sent ok")
+					} else {
+						log.Info("Topic writer failed to send message on topic: ", kmsg.topic, " - Retrying. Error details: ", err)
+						time.Sleep(time.Duration(retry) * time.Second)
+					}
+				}
+				if !msg_ok {
+					//TODO: Retry sending msg?
+					log.Error("Topic writer failed to send message on topic: ", kmsg.topic, " - Msg discarded. Error details: ", err)
+				}
+			case <-time.After(1000 * time.Millisecond):
+				if !running {
+					return
+				}
+			}
+		}
+	}()
+}
+
+func create_kafka_consumer(type_id string, gid string, cid string) *kafka.Consumer {
+	log.Info("Creating kafka consumer for type: ", type_id)
+	c, err := kafka.NewConsumer(&kafka.ConfigMap{
+		"bootstrap.servers":  bootstrapserver,
+		"group.id":           gid,
+		"client.id":          cid,
+		"auto.offset.reset":  "latest",
+		"enable.auto.commit": false,
+		//"auto.commit.interval.ms": 5000,
+	})
+
+	//TODO: How to handle autocommit or commit message by message
+	//TODO: Make arg to kafka configurable
+
+	if err != nil {
+		log.Error("Cannot create kafka consumer for type: ", type_id, ", error details: ", err)
+		return nil
+	}
+	c.Commit()
+	log.Info("Created kafka consumer for type: ", type_id, " OK")
+	return c
+}
+
+// Start kafka producer
+func start_producer() *kafka.Producer {
+	log.Info("Creating kafka producer")
+	p, err := kafka.NewProducer(&kafka.ConfigMap{"bootstrap.servers": bootstrapserver})
+	if err != nil {
+		log.Error("Cannot create kafka producer,", err)
+		return nil
+	}
+	return p
+}
+
+func start_adminclient() *kafka.AdminClient {
+	log.Info("Creating kafka admin client")
+	a, err := kafka.NewAdminClient(&kafka.ConfigMap{"bootstrap.servers": bootstrapserver})
+	if err != nil {
+		log.Error("Cannot create kafka admin client,", err)
+		return nil
+	}
+	return a
+}
+
+func create_minio_client(id string) (*minio.Client, *error) {
+	log.Debug("Get minio client")
+	minio_client, err := minio.New(filestore_server, &minio.Options{
+		Secure: false,
+		Creds:  credentials.NewStaticV4(filestore_user, filestore_pwd, ""),
+	})
+	if err != nil {
+		log.Error("Cannot create minio client, ", err)
+		return nil, &err
+	}
+	return minio_client, nil
+}
+
+func incr_out_msg_cnt(jobid string) {
+	j, ok := InfoJobs[jobid]
+	if ok {
+		j.statistics.out_msg_cnt++
+	}
+}
+
+func start_job_xml_file_data(type_id string, control_ch chan JobControl, data_in_ch chan *KafkaPayload, data_out_channel chan *KafkaPayload, fvolume string, fsbucket string) {
+
+	log.Info("Type job", type_id, " started")
+
+	filters := make(map[string]Filter)
+	topic_list := make(map[string]string)
+	var mc *minio.Client
+	const mc_id = "mc_" + "start_job_xml_file_data"
+	running := true
+	for {
+		select {
+		case job_ctl := <-control_ch:
+			log.Debug("Type job ", type_id, " new cmd received ", job_ctl.command)
+			switch job_ctl.command {
+			case "EXIT":
+				//ignore cmd - handled by channel signal
+			case "ADD-FILTER":
+				filters[job_ctl.filter.JobId] = job_ctl.filter
+				log.Debug("Type job ", type_id, " updated, topic: ", job_ctl.filter.OutputTopic, " jobid: ", job_ctl.filter.JobId)
+
+				tmp_topic_list := make(map[string]string)
+				for k, v := range topic_list {
+					tmp_topic_list[k] = v
+				}
+				tmp_topic_list[job_ctl.filter.JobId] = job_ctl.filter.OutputTopic
+				topic_list = tmp_topic_list
+			case "REMOVE-FILTER":
+				log.Debug("Type job ", type_id, " removing job: ", job_ctl.filter.JobId)
+
+				tmp_topic_list := make(map[string]string)
+				for k, v := range topic_list {
+					tmp_topic_list[k] = v
+				}
+				delete(tmp_topic_list, job_ctl.filter.JobId)
+				topic_list = tmp_topic_list
+			}
+
+		case msg := <-data_in_ch:
+			if msg == nil {
+				log.Info("Type job ", type_id, " stopped by channel signal -  start_job_xml_file_data")
+
+				running = false
+				return
+			}
+			if fsbucket != "" && fvolume == "" {
+				if mc == nil {
+					var err *error
+					mc, err = create_minio_client(mc_id)
+					if err != nil {
+						log.Debug("Cannot create minio client for type job: ", type_id)
+					}
+				}
+			}
+			//TODO: Sort processed file conversions in order (FIFO)
+			jobLimiterChan <- struct{}{}
+			go run_xml_job(type_id, msg, "gz", data_out_channel, topic_list, jobLimiterChan, fvolume, fsbucket, mc, mc_id)
+
+		case <-time.After(1 * time.Second):
+			if !running {
+				return
+			}
+		}
+	}
+	//}()
+}
+
+func run_xml_job(type_id string, msg *KafkaPayload, outputCompression string, data_out_channel chan *KafkaPayload, topic_list map[string]string, jobLimiterChan chan struct{}, fvolume string, fsbucket string, mc *minio.Client, mc_id string) {
+	defer func() {
+		<-jobLimiterChan
+	}()
+	PrintMemUsage()
+
+	if fvolume == "" && fsbucket == "" {
+		log.Error("Type job: ", type_id, " cannot run, neither file volume nor filestore is set - discarding message")
+		return
+	} else if (fvolume != "") && (fsbucket != "") {
+		log.Error("Type job: ", type_id, " cannot run with output to both file volume and filestore bucket - discarding message")
+		return
+	}
+
+	start := time.Now()
+	var evt_data XmlFileEventHeader
+
+	err := jsoniter.Unmarshal(msg.msg.Value, &evt_data)
+	if err != nil {
+		log.Error("Cannot parse XmlFileEventHeader for type job: ", type_id, " - discarding message, error details", err)
+		return
+	}
+	log.Debug("Unmarshal file-collect event for type job: ", type_id, " time: ", time.Since(start).String())
+
+	var reader io.Reader
+
+	//TODO -> config
+	INPUTBUCKET := "ropfiles"
+
+	filename := ""
+	if fvolume != "" {
+		filename = fvolume + "/" + evt_data.Name
+		fi, err := os.Open(filename)
+
+		if err != nil {
+			log.Error("File ", filename, " - cannot be opened for type job: ", type_id, " - discarding message, error details: ", err)
+			return
+		}
+		defer fi.Close()
+		reader = fi
+		//} else if evt_data.ObjectStoreBucket != "" {
+	} else {
+		filename = evt_data.Name
+		if mc != nil {
+			tctx := context.Background()
+			mr, err := mc.GetObject(tctx, INPUTBUCKET, filename, minio.GetObjectOptions{})
+			if err != nil {
+				log.Error("Cannot get: ", filename, " for type job: ", type_id, " - discarding message, error details: ", err)
+				return
+			}
+			if mr == nil {
+				log.Error("Cannot get: ", filename, " for type job: ", type_id, " - minio get object returned null reader -  discarding message, error details: ", err)
+				return
+			}
+			reader = mr
+			defer mr.Close()
+		} else {
+			log.Error("Cannot get: ", filename, " for type job: ", type_id, " - no minio client -  discarding message")
+			return
+		}
+	}
+
+	if reader == nil {
+		log.Error("Cannot get: ", filename, " - null reader")
+		return
+	}
+	var file_bytes []byte
+	if strings.HasSuffix(filename, "gz") {
+		start := time.Now()
+		var buf3 bytes.Buffer
+		errb := gunzipReaderToWriter(&buf3, reader)
+		if errb != nil {
+			log.Error("Cannot gunzip file ", filename, " - discarding message, ", errb)
+			return
+		}
+		file_bytes = buf3.Bytes()
+		log.Debug("Gunzip file: ", filename, "time:", time.Since(start).String(), "len: ", len(file_bytes))
+
+	} else {
+		var buf3 bytes.Buffer
+		_, err2 := io.Copy(&buf3, reader)
+		if err2 != nil {
+			log.Error("File ", filename, " - cannot be read, discarding message, ", err)
+			return
+		}
+		file_bytes = buf3.Bytes()
+	}
+	start = time.Now()
+	b, err := xml_to_json_conv(&file_bytes, &evt_data)
+	if err != nil {
+		log.Error("Cannot convert file ", evt_data.Name, " - discarding message, ", err)
+		return
+	}
+	log.Debug("Converted file to json: ", filename, " time", time.Since(start).String(), "len;", len(b))
+
+	new_fn := evt_data.Name + os.Getenv("KP") + ".json"
+	if outputCompression == "gz" {
+		new_fn = new_fn + ".gz"
+		start = time.Now()
+		var buf bytes.Buffer
+		err = gzipWrite(&buf, &b)
+		if err != nil {
+			log.Error("Cannot gzip file ", new_fn, " - discarding message, ", err)
+			return
+		}
+		b = buf.Bytes()
+		log.Debug("Gzip file:  ", new_fn, " time: ", time.Since(start).String(), "len:", len(file_bytes))
+
+	}
+	start = time.Now()
+
+	if fvolume != "" {
+		//Store on disk
+		err = os.WriteFile(fvolume+"/"+new_fn, b, 0644)
+		if err != nil {
+			log.Error("Cannot write file ", new_fn, " - discarding message,", err)
+			return
+		}
+		log.Debug("Write file to disk: "+new_fn, "time: ", time.Since(start).String(), " len: ", len(file_bytes))
+	} else if fsbucket != "" {
+		// Store in minio
+		objectName := new_fn
+		if mc != nil {
+
+			contentType := "application/json"
+			if strings.HasSuffix(objectName, ".gz") {
+				contentType = "application/gzip"
+			}
+
+			// Upload the xml file with PutObject
+			r := bytes.NewReader(b)
+			tctx := context.Background()
+			if check_minio_bucket(mc, mc_id, fsbucket) == false {
+				err := create_minio_bucket(mc, mc_id, fsbucket)
+				if err != nil {
+					log.Error("Cannot create bucket: ", fsbucket, ", ", err)
+					return
+				}
+			}
+			ok := false
+			for i := 1; i < 64 && ok == false; i = i * 2 {
+				info, err := mc.PutObject(tctx, fsbucket, objectName, r, int64(len(b)), minio.PutObjectOptions{ContentType: contentType})
+				if err != nil {
+
+					if i == 1 {
+						log.Warn("Cannot upload (first attempt): ", objectName, ", ", err)
+					} else {
+						log.Warn("Cannot upload (retry): ", objectName, ", ", err)
+					}
+					time.Sleep(time.Duration(i) * time.Second)
+				} else {
+					log.Debug("Store ", objectName, " in filestore, time: ", time.Since(start).String())
+					log.Debug("Successfully uploaded: ", objectName, " of size:", info.Size)
+					ok = true
+				}
+			}
+			if !ok {
+				log.Error("Cannot upload : ", objectName, ", ", err)
+			}
+		} else {
+			log.Error("Cannot upload: ", objectName, ", no client")
+		}
+	}
+
+	start = time.Now()
+	if fvolume == "" {
+		var fde FileDownloadedEvt
+		fde.Filename = new_fn
+		j, err := jsoniter.Marshal(fde)
+
+		if err != nil {
+			log.Error("Cannot marshal FileDownloadedEvt - discarding message, ", err)
+			return
+		}
+		msg.msg.Value = j
+	} else {
+		var fde FileDownloadedEvt
+		fde.Filename = new_fn
+		j, err := jsoniter.Marshal(fde)
+
+		if err != nil {
+			log.Error("Cannot marshal FileDownloadedEvt - discarding message, ", err)
+			return
+		}
+		msg.msg.Value = j
+	}
+	log.Debug("Marshal file-collect event ", time.Since(start).String())
+
+	for k, v := range topic_list {
+		var kmsg *KafkaPayload = new(KafkaPayload)
+		kmsg.msg = msg.msg
+		kmsg.topic = v
+		kmsg.jobid = k
+		data_out_channel <- kmsg
+	}
+}
+
+func xml_to_json_conv(f_byteValue *[]byte, xfeh *XmlFileEventHeader) ([]byte, error) {
+	var f MeasCollecFile
+	start := time.Now()
+	err := xml.Unmarshal(*f_byteValue, &f)
+	if err != nil {
+		return nil, errors.New("Cannot unmarshal xml-file")
+	}
+	log.Debug("Unmarshal xml file XmlFileEvent: ", time.Since(start).String())
+
+	start = time.Now()
+	var pmfile PMJsobFile
+
+	//TODO: Fill in more values
+	pmfile.Event.Perf3GppFields.Perf3GppFieldsVersion = "1.0"
+	pmfile.Event.Perf3GppFields.MeasDataCollection.GranularityPeriod = 900
+	pmfile.Event.Perf3GppFields.MeasDataCollection.MeasuredEntityUserName = ""
+	pmfile.Event.Perf3GppFields.MeasDataCollection.MeasuredEntityDn = f.FileHeader.FileSender.LocalDn
+	pmfile.Event.Perf3GppFields.MeasDataCollection.MeasuredEntitySoftwareVersion = f.MeasData.ManagedElement.SwVersion
+
+	for _, it := range f.MeasData.MeasInfo {
+		var mili MeasInfoList
+		mili.MeasInfoID.SMeasInfoID = it.MeasInfoId
+		for _, jt := range it.MeasType {
+			mili.MeasTypes.SMeasTypesList = append(mili.MeasTypes.SMeasTypesList, jt.Text)
+		}
+		for _, jt := range it.MeasValue {
+			var mv MeasValues
+			mv.MeasObjInstID = jt.MeasObjLdn
+			mv.SuspectFlag = jt.Suspect
+			if jt.Suspect == "" {
+				mv.SuspectFlag = "false"
+			}
+			for _, kt := range jt.R {
+				ni, _ := strconv.Atoi(kt.P)
+				nv := kt.Text
+				mr := MeasResults{ni, nv}
+				mv.MeasResultsList = append(mv.MeasResultsList, mr)
+			}
+			mili.MeasValuesList = append(mili.MeasValuesList, mv)
+		}
+
+		pmfile.Event.Perf3GppFields.MeasDataCollection.SMeasInfoList = append(pmfile.Event.Perf3GppFields.MeasDataCollection.SMeasInfoList, mili)
+	}
+
+	pmfile.Event.Perf3GppFields.MeasDataCollection.GranularityPeriod = 900
+
+	//TODO: Fill more values
+	pmfile.Event.CommonEventHeader.Domain = ""    //xfeh.Domain
+	pmfile.Event.CommonEventHeader.EventID = ""   //xfeh.EventID
+	pmfile.Event.CommonEventHeader.Sequence = 0   //xfeh.Sequence
+	pmfile.Event.CommonEventHeader.EventName = "" //xfeh.EventName
+	pmfile.Event.CommonEventHeader.SourceName = xfeh.SourceName
+	pmfile.Event.CommonEventHeader.ReportingEntityName = "" //xfeh.ReportingEntityName
+	pmfile.Event.CommonEventHeader.Priority = ""            //xfeh.Priority
+	pmfile.Event.CommonEventHeader.StartEpochMicrosec = xfeh.StartEpochMicrosec
+	pmfile.Event.CommonEventHeader.LastEpochMicrosec = xfeh.LastEpochMicrosec
+	pmfile.Event.CommonEventHeader.Version = ""                 //xfeh.Version
+	pmfile.Event.CommonEventHeader.VesEventListenerVersion = "" //xfeh.VesEventListenerVersion
+	pmfile.Event.CommonEventHeader.TimeZoneOffset = xfeh.TimeZoneOffset
+
+	log.Debug("Convert xml to json : ", time.Since(start).String())
+
+	start = time.Now()
+	json, err := jsoniter.Marshal(pmfile)
+	log.Debug("Marshal json : ", time.Since(start).String())
+
+	if err != nil {
+		return nil, errors.New("Cannot marshal converted json")
+	}
+	return json, nil
+}
+
+func start_job_json_file_data(type_id string, control_ch chan JobControl, data_in_ch chan *KafkaPayload, data_out_channel chan *KafkaPayload, objectstore bool) {
+
+	log.Info("Type job", type_id, " started")
+
+	filters := make(map[string]Filter)
+	filterParams_list := make(map[string]FilterMaps)
+	// ch_list := make(map[string]chan *KafkaPayload)
+	topic_list := make(map[string]string)
+	var mc *minio.Client
+	const mc_id = "mc_" + "start_job_json_file_data"
+	running := true
+	for {
+		select {
+		case job_ctl := <-control_ch:
+			log.Debug("Type job ", type_id, " new cmd received ", job_ctl.command)
+			switch job_ctl.command {
+			case "EXIT":
+				//ignore cmd - handled by channel signal
+			case "ADD-FILTER":
+				//TODO: Refactor...
+				filters[job_ctl.filter.JobId] = job_ctl.filter
+				log.Debug("Type job ", type_id, " updated, topic: ", job_ctl.filter.OutputTopic, " jobid: ", job_ctl.filter.JobId)
+
+				tmp_filterParams_list := make(map[string]FilterMaps)
+				for k, v := range filterParams_list {
+					tmp_filterParams_list[k] = v
+				}
+				tmp_filterParams_list[job_ctl.filter.JobId] = job_ctl.filter.filter
+				filterParams_list = tmp_filterParams_list
+
+				tmp_topic_list := make(map[string]string)
+				for k, v := range topic_list {
+					tmp_topic_list[k] = v
+				}
+				tmp_topic_list[job_ctl.filter.JobId] = job_ctl.filter.OutputTopic
+				topic_list = tmp_topic_list
+			case "REMOVE-FILTER":
+				//TODO: Refactor...
+				log.Debug("Type job ", type_id, " removing job: ", job_ctl.filter.JobId)
+
+				tmp_filterParams_list := make(map[string]FilterMaps)
+				for k, v := range filterParams_list {
+					tmp_filterParams_list[k] = v
+				}
+				delete(tmp_filterParams_list, job_ctl.filter.JobId)
+				filterParams_list = tmp_filterParams_list
+
+				tmp_topic_list := make(map[string]string)
+				for k, v := range topic_list {
+					tmp_topic_list[k] = v
+				}
+				delete(tmp_topic_list, job_ctl.filter.JobId)
+				topic_list = tmp_topic_list
+			}
+
+		case msg := <-data_in_ch:
+			if msg == nil {
+				log.Info("Type job ", type_id, " stopped by channel signal -  start_job_xml_file_data")
+
+				running = false
+				return
+			}
+			if objectstore {
+				if mc == nil {
+					var err *error
+					mc, err = create_minio_client(mc_id)
+					if err != nil {
+						log.Debug("Cannot create minio client for type job: ", type_id)
+					}
+				}
+			}
+			//TODO: Sort processed file conversions in order (FIFO)
+			jobLimiterChan <- struct{}{}
+			go run_json_job(type_id, msg, "", filterParams_list, topic_list, data_out_channel, jobLimiterChan, mc, mc_id, objectstore)
+
+		case <-time.After(1 * time.Second):
+			if !running {
+				return
+			}
+		}
+	}
+}
+
+func run_json_job(type_id string, msg *KafkaPayload, outputCompression string, filterList map[string]FilterMaps, topic_list map[string]string, data_out_channel chan *KafkaPayload, jobLimiterChan chan struct{}, mc *minio.Client, mc_id string, objectstore bool) {
+
+	//Release job limit
+	defer func() {
+		<-jobLimiterChan
+	}()
+
+	PrintMemUsage()
+
+	var evt_data FileDownloadedEvt
+	err := jsoniter.Unmarshal(msg.msg.Value, &evt_data)
+	if err != nil {
+		log.Error("Cannot parse FileDownloadedEvt for type job: ", type_id, " - discarding message, error details: ", err)
+		return
+	}
+	log.Debug("FileDownloadedEvt for job: ", type_id, " file: ", evt_data.Filename)
+
+	var reader io.Reader
+
+	//TODO -> config
+	//INPUTBUCKET := "json-file-ready"
+	INPUTBUCKET := "pm-files-json"
+	filename := ""
+	if objectstore == false {
+		filename = files_volume + "/" + evt_data.Filename
+		fi, err := os.Open(filename)
+
+		if err != nil {
+			log.Error("File: ", filename, "for type job: ", type_id, " - cannot be opened -discarding message - error details: ", err)
+			return
+		}
+		defer fi.Close()
+		reader = fi
+	} else {
+		filename = "/" + evt_data.Filename
+		if mc != nil {
+			if check_minio_bucket(mc, mc_id, INPUTBUCKET) == false {
+				log.Error("Bucket not available for reading in type job: ", type_id, "bucket: ", INPUTBUCKET)
+				return
+			}
+			tctx := context.Background()
+			mr, err := mc.GetObject(tctx, INPUTBUCKET, filename, minio.GetObjectOptions{})
+			if err != nil {
+				log.Error("Obj: ", filename, "for type job: ", type_id, " - cannot be fetched from bucket: ", INPUTBUCKET, " - discarding message, error details: ", err)
+				return
+			}
+			reader = mr
+			defer mr.Close()
+		} else {
+			log.Error("Cannot get obj: ", filename, "for type job: ", type_id, " from bucket: ", INPUTBUCKET, " - no client")
+			return
+		}
+	}
+
+	var data *[]byte
+	if strings.HasSuffix(filename, "gz") {
+		start := time.Now()
+		var buf2 bytes.Buffer
+		errb := gunzipReaderToWriter(&buf2, reader)
+		if errb != nil {
+			log.Error("Cannot decompress file/obj ", filename, "for type job: ", type_id, " - discarding message, error details", errb)
+			return
+		}
+		d := buf2.Bytes()
+		data = &d
+		log.Debug("Decompress file/obj ", filename, "for type job: ", type_id, " time:", time.Since(start).String())
+	} else {
+
+		start := time.Now()
+		d, err := io.ReadAll(reader)
+		if err != nil {
+			log.Error("Cannot read file/obj: ", filename, "for type job: ", type_id, " - discarding message, error details", err)
+			return
+		}
+		data = &d
+
+		log.Debug("Read file/obj: ", filename, "for type job: ", type_id, " time: ", time.Since(start).String())
+	}
+	var pmfile PMJsobFile
+	start := time.Now()
+	err = jsoniter.Unmarshal(*data, &pmfile)
+	log.Debug("Json unmarshal obj: ", filename, " time: ", time.Since(start).String())
+
+	if err != nil {
+		log.Error("Msg could not be unmarshalled - discarding message, obj: ", filename, " - error details:", err)
+		return
+	}
+	for k, v := range filterList {
+		var kmsg *KafkaPayload = new(KafkaPayload)
+		kmsg.msg = new(kafka.Message)
+		kmsg.msg.Key = nil
+
+		if len(v.sourceNameMap) > 0 || len(v.measObjInstIdsMap) > 0 || len(v.measTypesMap) > 0 || len(v.measObjClassMap) > 0 {
+			b := json_pm_filter(evt_data.Filename, &pmfile, v.sourceNameMap, v.measObjClassMap, v.measObjInstIdsMap, v.measTypesMap)
+			if b == nil {
+				log.Info("File/obj ", filename, "for job: ", k, " - empty after filering, discarding message ")
+				return
+			}
+			kmsg.msg.Value = *b
+		}
+		// if outputCompression == "json.gz" {
+		// 	start := time.Now()
+		// 	var buf bytes.Buffer
+		// 	err := gzipWrite(&buf, &kmsg.msg.Value)
+		// 	if err != nil {
+		// 		log.Error("Cannot compress file/obj ", filename, "for job: ", job_id, " - discarding message, error details", err)
+		// 		return
+
+		// 	}
+		// 	kmsg.msg.Value = buf.Bytes()
+		// 	log.Debug("Compress file/obj ", filename, "for job: ", job_id, " time:", time.Since(start).String())
+		// }
+
+		kmsg.msg.Key = nil
+
+		kmsg.topic = topic_list[k]
+		kmsg.jobid = k
+
+		data_out_channel <- kmsg
+	}
+
+}
+
+func json_pm_filter(resource string, data *PMJsobFile, sourceNameMap map[string]bool, measObjClassMap map[string]bool, measObjInstIdsMap map[string]bool, measTypesMap map[string]bool) *[]byte {
+
+	filter_req := true
+	start := time.Now()
+	if len(sourceNameMap) != 0 {
+		if !sourceNameMap[data.Event.CommonEventHeader.SourceName] {
+			filter_req = false
+			return nil
+		}
+	}
+	if filter_req {
+		modified := false
+		var temp_mil []MeasInfoList
+		for _, zz := range data.Event.Perf3GppFields.MeasDataCollection.SMeasInfoList {
+
+			check_cntr := false
+			var cnt_flags []bool
+			if len(measTypesMap) > 0 {
+				c_cntr := 0
+				var temp_mtl []string
+				for _, v := range zz.MeasTypes.SMeasTypesList {
+					if measTypesMap[v] {
+						cnt_flags = append(cnt_flags, true)
+						c_cntr++
+						temp_mtl = append(temp_mtl, v)
+					} else {
+						cnt_flags = append(cnt_flags, false)
+					}
+				}
+				if c_cntr > 0 {
+					check_cntr = true
+					zz.MeasTypes.SMeasTypesList = temp_mtl
+				} else {
+					modified = true
+					continue
+				}
+			}
+			keep := false
+			var temp_mvl []MeasValues
+			for _, yy := range zz.MeasValuesList {
+				keep_class := false
+				keep_inst := false
+				keep_cntr := false
+
+				dna := strings.Split(yy.MeasObjInstID, ",")
+				instName := dna[len(dna)-1]
+				cls := strings.Split(dna[len(dna)-1], "=")[0]
+
+				if len(measObjClassMap) > 0 {
+					if measObjClassMap[cls] {
+						keep_class = true
+					}
+				} else {
+					keep_class = true
+				}
+
+				if len(measObjInstIdsMap) > 0 {
+					if measObjInstIdsMap[instName] {
+						keep_inst = true
+					}
+				} else {
+					keep_inst = true
+				}
+
+				if check_cntr {
+					var temp_mrl []MeasResults
+					cnt_p := 1
+					for _, v := range yy.MeasResultsList {
+						if cnt_flags[v.P-1] {
+							v.P = cnt_p
+							cnt_p++
+							temp_mrl = append(temp_mrl, v)
+						}
+					}
+					yy.MeasResultsList = temp_mrl
+					keep_cntr = true
+				} else {
+					keep_cntr = true
+				}
+				if keep_class && keep_cntr && keep_inst {
+					keep = true
+					temp_mvl = append(temp_mvl, yy)
+				}
+			}
+			if keep {
+				zz.MeasValuesList = temp_mvl
+				temp_mil = append(temp_mil, zz)
+				modified = true
+			}
+
+		}
+		//Only if modified
+		if modified {
+			if len(temp_mil) == 0 {
+				log.Debug("Msg filtered, nothing found, discarding, obj: ", resource)
+				return nil
+			}
+			data.Event.Perf3GppFields.MeasDataCollection.SMeasInfoList = temp_mil
+		}
+	}
+	log.Debug("Filter: ", time.Since(start).String())
+
+	start = time.Now()
+	j, err := jsoniter.Marshal(&data)
+
+	log.Debug("Json marshal obj: ", resource, " time: ", time.Since(start).String())
+
+	if err != nil {
+		log.Error("Msg could not be marshalled discarding message, obj: ", resource, ", error details: ", err)
+		return nil
+	}
+
+	log.Debug("Filtered json obj: ", resource, " len: ", len(j))
+	return &j
+}
diff --git a/pm-file-flow-demo/kafka-pm-producer/server.crt b/pm-file-flow-demo/kafka-pm-producer/server.crt
new file mode 100644
index 0000000..bfadcd0
--- /dev/null
+++ b/pm-file-flow-demo/kafka-pm-producer/server.crt
@@ -0,0 +1,9 @@
+-----BEGIN CERTIFICATE-----
+MIIBRzCBzQIJAMUB5z+vkZd3MAoGCCqGSM49BAMCMA0xCzAJBgNVBAYTAlNWMB4X
+DTIyMDcwODAyNTU1MVoXDTMyMDcwNTAyNTU1MVowDTELMAkGA1UEBhMCU1YwdjAQ
+BgcqhkjOPQIBBgUrgQQAIgNiAASQpPx3X6Mt34+1CsvXHqT3x+4QITfVD4xHacuo
+Jsy3CHmmayORBrpf3gEc+lZZ4qW9jGO2HCc6aPu8TJtaZZtW+/FRk+1ULkxXQNu5
+a+n6ThVXnwCAnyXl92U/xBDzpcswCgYIKoZIzj0EAwIDaQAwZgIxANSn2wmiNLAV
+N/z3QXa7EXXwNj5t0fNSg8WbO9QK+6MIxaiyTzoNgETs3EtXUu21NAIxAL/O+PTd
+3Di0xJzTj3/Bg6WOmWhEmOcd7ohpk0wRIN1kD4VGvsLL4dTH9PxqQUqMeQ==
+-----END CERTIFICATE-----
diff --git a/pm-file-flow-demo/kafka-pm-producer/server.key b/pm-file-flow-demo/kafka-pm-producer/server.key
new file mode 100644
index 0000000..386f7cb
--- /dev/null
+++ b/pm-file-flow-demo/kafka-pm-producer/server.key
@@ -0,0 +1,9 @@
+-----BEGIN EC PARAMETERS-----
+BgUrgQQAIg==
+-----END EC PARAMETERS-----
+-----BEGIN EC PRIVATE KEY-----
+MIGkAgEBBDDGXu7K9Q48TDMXTgni66KtIyc6NZISg/XE7SgIzz6KvU0wM/4Djvxm
+m1F01DrCXoigBwYFK4EEACKhZANiAASQpPx3X6Mt34+1CsvXHqT3x+4QITfVD4xH
+acuoJsy3CHmmayORBrpf3gEc+lZZ4qW9jGO2HCc6aPu8TJtaZZtW+/FRk+1ULkxX
+QNu5a+n6ThVXnwCAnyXl92U/xBDzpcs=
+-----END EC PRIVATE KEY-----
diff --git a/pm-file-flow-demo/kube-proj/README.md b/pm-file-flow-demo/kube-proj/README.md
new file mode 100644
index 0000000..e26316d
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/README.md
@@ -0,0 +1,225 @@
+
+## Demo project in kubernetes
+
+A demo showing pm file flow from simlulates network elements to filtered pm data for rAPPs.
+
+The demo has been tested with kubernetes in local docker desktop as well as in remote multi-workernode kubernetes.
+
+Depending on running in local or remote kubernetes, some differnt config is neeed.
+
+IMPORTANT \
+If running on a remote kubernetes, a externally accessible image repo is needed -  for a example a free account at docker-hub
+
+
+The following env var must be set for running with local kubernetes.
+
+`export KHOST=localhost` \
+`export KUBECONFIG=` - this assumes that kubectl is configured to use your local kubernetes
+
+The following env var must be set for running with local kubernetes.
+
+`export KHOST=<ip-of-the-cluster>`  - run cmd "kubectl cluster-info" in you cloud instance to find the ip\
+`export KUBECONFIG=<config file for the instance>` - file can be downloaded from the cloud instance
+
+
+Note that  all script in this readme is intended to be executed from your local machine regardless if local or remote kubernetes is used.
+
+
+## Run in kuberetes - local or remote kubernetes
+
+### Clone the protoyping repo:
+
+`git clone https://gerrit.nordix.org/local/oransc/nonrtric-prototyping`
+
+### Build Datafile component
+
+`cd datafile`
+
+`mvn install docker:build -Dmaven.test.skip=true`
+
+If running in remote cluster, push the image to external image repo\
+`./prepare.sh <external-image-repo>`
+
+
+### Build Kafka pm producer
+
+`cd pm-file-flow-demo/kafka-pm-producer`
+
+Build for local kubernetes\
+`./build.sh no-push`
+
+Build for remote kubernetes\
+`./build.sh <external-image-repo>`
+
+### Build Https server
+
+`cd pm-file-flow-demo/https-server`
+
+Build for local kubernetes\
+`./build.sh no-push`
+
+Build for remote kubernetes\
+`./build.sh <external-image-repo>`
+
+### Build rapp
+
+`cd pm-file-flow-demo/rapp`
+
+Build for local kubernetes\
+`./build.sh no-push`
+
+Build for remote kubernetes\
+`./build.sh <external-image-repo>`
+
+### Start demo
+
+NOTE: Dirs/files are in some cases mounted from the file system.\
+If you run local kubernetes you need to change the env var HOST_MNT_PATH (see kube-setup.sh) to for example ./local-mnt.
+
+If you run remote kubernetes you need to change the env var HOST_MNT_PATH to a path (disk) available on all worker nodes. In the xerces cloud the current value of the env var, HOST_MNT_PATH="/dockerdata-nfs", should work fine, although disk space is very limited.
+
+`cd pm-file-flow-demo/docker-proj`
+
+There are several ways to start and run the demo, with file or minio file storage, single or multi instances of data-file collector and kafka.
+Additional configuration can be made in the setup script.
+
+Command usage: `kube-setup.sh -k 1 -f file|minio -nm <num-minio-servers> -ms HOSTPATH|EMPTYDIR -ipp Always|IfNotPresent|Never -repo local|<external-image-repo>`
+
+Paratameters: \
+-k - Number of kafka brokers, only 1 is currently supported \
+-f - Select minio or raw file storage for pm files (xml/json) \
+-nm - Number of minio servers in the minio cluster (1 is enough) \
+-ms - Minio backend storage, EMPTYDIR (temp disk for pod) or HOSTPATH (mounted file system)
+-ipp - Image pull policy, Always (for remote kube) or Never (for local kube) \
+-repo - Image repo, local for local kube and name of external report for remote kube \
+
+
+Example cmd: \
+`./kube-setup.sh -k 1 -f minio -nm 1 -ms EMPTYDIR -ipp Never -repo local`
+
+Let the script finish, the script may ask for a few actions that need to done during setup.
+
+If the script fails, make sure to clean the setup before attempting a new setup.
+
+`./kube-tear-down.sh`
+
+The following components can be scaled in runtime, up to 10 instances (see kubectl get sts). Load will be shared automatically between available instances.
+- nonrtric    kp
+- nonrtric    kpadp
+- nonrtric    kpm
+- onap        dfc
+
+
+### Tools for monitoring
+
+Open browser to kowl (kafka gui) - watch topics, messages etc\
+browser: `localhost:31767`
+
+Open brower to minio - available only if minio is given on the cmd line when starting the demo\
+user: admin pwd: adminadmin\
+browser: `localhost:31768`
+
+For the following, run curl from within a container with curl installed.\
+Eg. `kubectl exec -it minio-0 -n nonrtric -- bash`
+
+dfc statictics, replace dfc-0 with dfc-1 etc if more dfcs are started\
+`curl -k https://dfc-0.dfc.onap:8433/status`\
+
+kafka-producer (xml->json), replace kp-0 with kp-1 etc  if more dfcs are started\
+`kp-0.kp.nonrtric:80/statistics`
+
+kafka-producer (json->json), replace kpm-0 with kpm-1 etc  if more dfcs are started\
+`kpm-0.kpm.nonrtric:80/statistics`
+
+dmaap-adapter (json->json), replace kpadp-0 with kpadp-1 etc  if more dfcs are started\
+`kpadp-0.kpadp.nonrtric:8084/statistics`
+
+
+### Push data - basic
+
+The basic setup creates:
+- one job in a golang-kafka-producer (instance kp-0) for xml to json conversion
+- one job in a golang-kafka-producer (instance kpm-0)) json filtering
+- one job in a dmaap-adapter (kpadp-0) for json filtering
+
+For additional producer setup, see "Push data - extended below"
+
+`cd pm-file-flow-demo/kube-proj`
+
+File ready events can be pushed to the ves collector or pushed directly to the topic for file ready events (bypassing the ves collector).
+
+Push to ves collector:
+
+Usage: `push-to-ves-collector.sh <node-count> <num-of-events> <node-name-base> <file-extension> sftp|ftpes|https <num-servers> [hist]`
+
+Parameters:\
+node-count - number of unique NEs\
+num-of-events - number of events per NE\
+node-name-base - NE name prefix\
+file-extension - xml or xml.gz \
+https - use https for file download \
+num-servers - number of sftp/ftpes/https servers to simulate  NEs (10 is default) \
+hist - include 24h of historical ropfiles (96 files) in each event\
+
+
+Usage: ` push-to-file-ready-topic.sh <node-count> <num-of-events> <node-name-base> <file-extension> sftp|ftpes|https <num-servers> [hist]`
+
+Parameter: \
+Same as `push-to-ves-collector.sh`
+
+Once the events has been pushed the progress can be viewed in the monitoring tools described above.
+
+If several sets of data shall be pushed, just change the parameter `<node-name-base>` to make the new files unique.
+
+### Push data - extended
+
+#### Set of jobs/rapps
+
+To simulate a larger amount of jobs, a number of jobs can be set up to send filtered json to individual topics.
+
+`cd pm-file-flow-demo/kube-proj`
+
+Usage: `x-jobs.sh file|minio topics|no-topics jobs|rapps|none [<num-jobs>]`
+
+Parameter with * must match the parameters in the setup script
+
+Parameters/
+file* - raw file storage \
+minio* - file storage in minio \
+topics - create unique topics\
+no-topics - do not create unique topics. Topics will be autocreated by the jobs/rapps\
+jobs - create jobs\
+rapps - create rapps\
+none - do not create jobs or rapps
+num-job - number of jobs in each producer (there are two producer applicable)
+
+The parameters file and minio must match the parameters used in the kube-setup.sh script.
+
+Warning: The rapp parameter will create two docker pod for each job - bigger number may exhaust the docker resources on your machine if you run in local kubernetes
+
+#### Historical pm data
+
+A job can be setup to seach and filter historical pm files (previously downloaded).
+Certain requirements apply, see the script.
+
+`cd pm-file-flow-demo/kube-proj`
+
+Usage: `./hist-job.sh`
+
+No parameters needed
+
+
+### Clean up
+
+`cd pm-file-flow-demo/scripts`
+
+Run the script to remove all docker containers.
+
+`./docker-tear-down.sh`
+
+To also cleanup files.
+
+`./clean-shared-volume.sh`
+
+`./clean-ne-files.sh`
+
diff --git a/pm-file-flow-demo/kube-proj/config/dfc-common/template-truststore.jks b/pm-file-flow-demo/kube-proj/config/dfc-common/template-truststore.jks
new file mode 100644
index 0000000..50a0f9e
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/dfc-common/template-truststore.jks
Binary files differ
diff --git a/pm-file-flow-demo/kube-proj/config/dfc-common/truststore.pass b/pm-file-flow-demo/kube-proj/config/dfc-common/truststore.pass
new file mode 100755
index 0000000..b915b0f
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/dfc-common/truststore.pass
@@ -0,0 +1 @@
+policy_agent
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/config/dfc/application-template.yaml b/pm-file-flow-demo/kube-proj/config/dfc/application-template.yaml
new file mode 100644
index 0000000..e1c827b
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/dfc/application-template.yaml
@@ -0,0 +1,80 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+spring:
+  profiles:
+    active: prod
+management:
+  endpoints:
+    web:
+      exposure:
+        include: "loggers,logfile,health,info,metrics"
+server:
+  port: 8433
+  ssl:
+      key-store-type: JKS
+      key-store-password: policy_agent
+      key-store: config/keystore.jks
+      key-password: policy_agent
+      key-alias: policy_agent
+logging:
+  level:
+    ROOT: WARN
+    org.onap: WARN
+    org.springframework: WARN
+    #TRACE
+    org.springframework.data: WARN
+    org.springframework.web.reactive.function.client.ExchangeFunctions: WARN
+    org.onap.dcaegen2.collectors.datafile: WARN
+    #org.onap.dcaegen2.collectors.datafile: TRACE
+
+  file:
+    name: /var/log/ONAP/application.log
+app:
+  filepath: config/datafile_endpoints_test.json
+  collected-files-path: "/tmp/onap_datafile/"
+   # KAFKA boostrap servers. This is only needed if there are Information Types that uses a kafkaInputTopic
+  # several redundant boostrap servers can be specified, separated by a comma ','.
+  kafka:
+    bootstrap-servers: kafka-1.onap:9092
+    # output topic
+    collected-file-topic: collected-file
+    client-id: datafile-$DFC_IDX
+    # input topic
+    file-ready-event-topic: file-ready
+  sftp:
+    known-hosts-file-path:
+    strict-host-key-checking: false
+  ssl:
+     key-store-password-file: /opt/app/datafile/config/ftps_keystore.pass
+     key-store: /opt/app/datafile/config/ftps_keystore.p12
+     trust-store-password-file: /opt/app/datafile/config/truststore.pass
+     trust-store: /opt/app/datafile/config/truststore.jks
+  s3:
+    endpointOverride: $DFC_MINIO
+    accessKeyId: admin
+    secretAccessKey: adminadmin
+    bucket: ropfiles
+
+springdoc:
+  show-actuator: true
+  swagger-ui.disable-swagger-default-url: true
+################
+
+
+
+
diff --git a/pm-file-flow-demo/kube-proj/config/dfc/truststore.jks b/pm-file-flow-demo/kube-proj/config/dfc/truststore.jks
new file mode 100644
index 0000000..82d0700
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/dfc/truststore.jks
Binary files differ
diff --git a/pm-file-flow-demo/kube-proj/config/dmaapmr/mr/MsgRtrApi.properties b/pm-file-flow-demo/kube-proj/config/dmaapmr/mr/MsgRtrApi.properties
new file mode 100644
index 0000000..233b6d6
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/dmaapmr/mr/MsgRtrApi.properties
@@ -0,0 +1,168 @@
+# LICENSE_START=======================================================
+#  org.onap.dmaap
+#  ================================================================================
+#  Copyright © 2021 Nordix Foundation. All rights reserved.
+#  Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+#  ================================================================================
+#  Licensed 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.
+#  ============LICENSE_END=========================================================
+#
+#  ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+###############################################################################
+###############################################################################
+##
+## Cambria API Server config
+##
+## Default values are shown as commented settings.
+##
+###############################################################################
+##
+## HTTP service
+##
+## 3904 is standard as of 7/29/14.
+#
+## Zookeeper Connection
+##
+## Both Cambria and Kafka make use of Zookeeper.
+##
+config.zk.servers=zookeeper.onap:32181
+#zookeeper:2181
+
+###############################################################################
+##
+## Kafka Connection
+##
+##        Items below are passed through to Kafka's producer and consumer
+##        configurations (after removing "kafka.")
+##        if you want to change request.required.acks it can take this one value
+#kafka.metadata.broker.list=localhost:9092,localhost:9093
+#kafka.metadata.broker.list={{.Values.kafka.name}}:{{.Values.kafka.port}}
+kafka.metadata.broker.list=kafka-1.onap:9092
+#kafka-1:9092
+##kafka.request.required.acks=-1
+#kafka.client.zookeeper=${config.zk.servers}
+consumer.timeout.ms=100
+zookeeper.connection.timeout.ms=6000
+zookeeper.session.timeout.ms=20000
+zookeeper.sync.time.ms=2000
+auto.commit.interval.ms=1000
+fetch.message.max.bytes =1000000
+auto.commit.enable=false
+
+#(backoff*retries > zksessiontimeout)
+kafka.rebalance.backoff.ms=10000
+kafka.rebalance.max.retries=6
+
+###############################################################################
+##
+##        Secured Config
+##
+##        Some data stored in the config system is sensitive -- API keys and secrets,
+##        for example. to protect it, we use an encryption layer for this section
+##        of the config.
+##
+## The key is a base64 encode AES key. This must be created/configured for
+## each installation.
+#cambria.secureConfig.key=
+##
+## The initialization vector is a 16 byte value specific to the secured store.
+## This must be created/configured for each installation.
+#cambria.secureConfig.iv=
+
+## Southfield Sandbox
+cambria.secureConfig.key=b/7ouTn9FfEw2PQwL0ov/Q==
+cambria.secureConfig.iv=wR9xP5k5vbz/xD0LmtqQLw==
+authentication.adminSecret=fe3cCompound
+
+
+###############################################################################
+##
+## Consumer Caching
+##
+##        Kafka expects live connections from the consumer to the broker, which
+##        obviously doesn't work over connectionless HTTP requests. The Cambria
+##        server proxies HTTP requests into Kafka consumer sessions that are kept
+##        around for later re-use. Not doing so is costly for setup per request,
+##        which would substantially impact a high volume consumer's performance.
+##
+##        This complicates Cambria server failover, because we often need server
+##        A to close its connection before server B brings up the replacement.
+##
+
+## The consumer cache is normally enabled.
+#cambria.consumer.cache.enabled=true
+
+## Cached consumers are cleaned up after a period of disuse. The server inspects
+## consumers every sweepFreqSeconds and will clean up any connections that are
+## dormant for touchFreqMs.
+#cambria.consumer.cache.sweepFreqSeconds=15
+cambria.consumer.cache.touchFreqMs=120000
+##stickforallconsumerrequests=false
+## The cache is managed through ZK. The default value for the ZK connection
+## string is the same as config.zk.servers.
+#cambria.consumer.cache.zkConnect=${config.zk.servers}
+
+##
+## Shared cache information is associated with this node's name. The default
+## name is the hostname plus the HTTP service port this host runs on. (The
+## hostname is determined via InetAddress.getLocalHost ().getCanonicalHostName(),
+## which is not always adequate.) You can set this value explicitly here.
+##
+#cambria.api.node.identifier=<use-something-unique-to-this-instance>
+
+#cambria.rateLimit.maxEmptyPollsPerMinute=30
+#cambria.rateLimitActual.delay.ms=10
+
+###############################################################################
+##
+## Metrics Reporting
+##
+##        This server can report its metrics periodically on a topic.
+##
+#metrics.send.cambria.enabled=true
+#metrics.send.cambria.topic=cambria.apinode.metrics
+#msgrtr.apinode.metrics.dmaap
+#metrics.send.cambria.sendEverySeconds=60
+
+cambria.consumer.cache.zkBasePath=/fe3c/cambria/consumerCache
+consumer.timeout=17
+default.partitions=3
+default.replicas=1
+##############################################################################
+#100mb
+maxcontentlength=10000
+
+
+##############################################################################
+#AAF Properties
+msgRtr.namespace.aaf=org.onap.dmaap.mr.topic
+msgRtr.topicfactory.aaf=org.onap.dmaap.mr.topicFactory|:org.onap.dmaap.mr.topic:
+enforced.topic.name.AAF=org.onap.dmaap.mr
+forceAAF=false
+transidUEBtopicreqd=false
+defaultNSforUEB=org.onap.dmaap.mr
+##############################################################################
+#Mirror Maker Agent
+
+msgRtr.mirrormakeradmin.aaf=org.onap.dmaap.mr.mirrormaker|*|admin
+msgRtr.mirrormakeruser.aaf=org.onap.dmaap.mr.mirrormaker|*|user
+msgRtr.mirrormakeruser.aaf.create=org.onap.dmaap.mr.topicFactory|:org.onap.dmaap.mr.topic:
+msgRtr.mirrormaker.timeout=15000
+msgRtr.mirrormaker.topic=org.onap.dmaap.mr.mirrormakeragent
+msgRtr.mirrormaker.consumergroup=mmagentserver
+msgRtr.mirrormaker.consumerid=1
+
+kafka.max.poll.interval.ms=300000
+kafka.heartbeat.interval.ms=60000
+kafka.session.timeout.ms=240000
+kafka.max.poll.records=1000
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/config/dmaapmr/mr/cadi.properties b/pm-file-flow-demo/kube-proj/config/dmaapmr/mr/cadi.properties
new file mode 100644
index 0000000..75c782a
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/dmaapmr/mr/cadi.properties
@@ -0,0 +1,38 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2021 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+#Removed to be disable aaf in test env
+#aaf_locate_url=https://aaf-onap-test.osaaf.org:8095\
+aaf_url=https://AAF_LOCATE_URL/onap.org.osaaf.aaf.service:2.1
+aaf_env=DEV
+aaf_lur=org.onap.aaf.cadi.aaf.v2_0.AAFLurPerm
+
+#Removed to be disable aaf in test env
+# cadi_truststore=/appl/dmaapMR1/etc/org.onap.dmaap.mr.trust.jks
+# cadi_truststore_password=8FyfX+ar;0*oXchNX
+
+cadi_keyfile=/appl/dmaapMR1/etc/org.onap.dmaap.mr.keyfile
+
+cadi_alias=dmaapmr@mr.dmaap.onap.org
+cadi_keystore=/appl/dmaapMR1/etc/org.onap.dmaap.mr.p12
+cadi_keystore_password=GDQttV7)BlOvWMf6F7tz&cjy
+cadi_x509_issuers=CN=intermediateCA_1, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_7, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_9, OU=OSAAF, O=ONAP, C=US
+
+cadi_loglevel=INFO
+cadi_protocols=TLSv1.1,TLSv1.2
+cadi_latitude=37.78187
+cadi_longitude=-122.26147
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/config/https/certs/copy-certs.sh b/pm-file-flow-demo/kube-proj/config/https/certs/copy-certs.sh
new file mode 100755
index 0000000..07c3245
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/https/certs/copy-certs.sh
@@ -0,0 +1,21 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+# Script for pm-https-server initContainer
+SET_INDEX=${HOSTNAME##*-}
+cp /tmp/certs/https-$SET_INDEX.crt /certs/server.crt
+cp /tmp/certs/https-$SET_INDEX.key /certs/server.key
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/config/https/certs/gen-certs.sh b/pm-file-flow-demo/kube-proj/config/https/certs/gen-certs.sh
new file mode 100755
index 0000000..8cbca1e
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/https/certs/gen-certs.sh
@@ -0,0 +1,89 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+echo "Generating https certs"
+SD=$(dirname -- "$0")
+echo "script-home: "$SD
+
+cd $SD
+
+print_usage() {
+    echo "Usage: gen-certs.sh <num-certs>"
+    exit 1
+}
+
+check_error() {
+    if [ $1 -ne 0 ]; then
+        echo "Failed $2"
+        echo "Exiting..."
+        exit 1
+    fi
+}
+
+if [ $# -ne 1 ]; then
+    print_usage
+fi
+
+rm *.crt
+rm *.key
+
+echo "Generating ca cert and key"
+echo " Generating ca key"
+openssl genrsa 2048 > ca.key  2> /dev/null
+check_error $?
+
+echo " Generating ca cert"
+cat <<__EOF__ | openssl req -new -x509 -nodes -days 365000  -key ca.key  -out httpsca.crt 2> /dev/null
+SE
+.
+.
+EST
+EST
+$SRV
+.
+__EOF__
+check_error $?
+
+
+for (( i=0; i<${1}; i++ )); do
+    SRV="pm-https-server-$i.pm-https-server.ran"
+
+    echo " Generating cert and key  for server $SRV"
+cat <<__EOF__ | openssl req -newkey rsa:2048 -nodes -days 365000  -keyout https-$i.key -out https-req$i.crt 2> /dev/null
+SE
+.
+.
+ERIC
+ERIC
+$SRV
+.
+
+__EOF__
+    check_error $?
+
+    openssl x509 -req -days 365000 -set_serial 01 -in https-req$i.crt -out https-$i.crt -CA httpsca.crt -CAkey ca.key
+    check_error $?
+    echo " Verifying cert towards ca cert"
+    openssl verify -CAfile httpsca.crt httpsca.crt https-$i.crt
+    check_error $?
+
+done
+
+echo "DONE"
+exit 0
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/config/ics/application.yaml b/pm-file-flow-demo/kube-proj/config/ics/application.yaml
new file mode 100644
index 0000000..2434fa3
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/ics/application.yaml
@@ -0,0 +1,69 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+spring:
+  profiles:
+    active: prod
+  main:
+    allow-bean-definition-overriding: true
+  aop:
+    auto: false
+springdoc:
+  show-actuator: true
+management:
+  endpoints:
+    web:
+      exposure:
+        # Enabling of springboot actuator features. See springboot documentation.
+        include: "loggers,logfile,health,info,metrics,threaddump,heapdump"
+
+logging:
+  # Configuration of logging
+  level:
+    ROOT: ERROR
+    org.springframework: ERROR
+    org.springframework.data: ERROR
+    org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR
+    org.oransc.ics: DEBUG
+  file:
+    name: /var/log/information-coordinator-service/application.log
+server:
+   # Configuration of the HTTP/REST server. The parameters are defined and handeled by the springboot framework.
+   # See springboot documentation.
+   port : 8434
+   http-port: 8083
+   ssl:
+      key-store-type: JKS
+      key-store-password: policy_agent
+      key-store: /opt/app/information-coordinator-service/etc/cert/keystore.jks
+      key-password: policy_agent
+      key-alias: policy_agent
+app:
+  webclient:
+    # Configuration of the trust store used for the HTTP client (outgoing requests)
+    # The file location and the password for the truststore is only relevant if trust-store-used == true
+    # Note that the same keystore as for the server is used.
+    trust-store-used: false
+    trust-store-password: policy_agent
+    trust-store: /opt/app/information-coordinator-service/etc/cert/truststore.jks
+    # Configuration of usage of HTTP Proxy for the southbound accesses.
+    # The HTTP proxy (if configured) will only be used for accessing NearRT RIC:s
+    http.proxy-host:
+    http.proxy-port: 0
+  vardata-directory: /var/information-coordinator-service
+  # If the file name is empty, no authorzation token is sent
+  auth-token-file:
diff --git a/pm-file-flow-demo/kube-proj/config/kowl/config.yaml b/pm-file-flow-demo/kube-proj/config/kowl/config.yaml
new file mode 100644
index 0000000..8059c18
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/kowl/config.yaml
@@ -0,0 +1,20 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+kafka:
+  brokers:
+    - kafka-1.onap:9092
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/config/kp/application_configuration-file.json b/pm-file-flow-demo/kube-proj/config/kp/application_configuration-file.json
new file mode 100644
index 0000000..e549eca
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/kp/application_configuration-file.json
@@ -0,0 +1,12 @@
+{
+  "types": [
+    {
+      "id": "json-file-data",
+      "kafkaInputTopic": "json-file-ready-kp",
+      "inputJobType": "xml-file-data",
+      "inputJobDefinition": {
+        "kafkaOutputTopic": "json-file-ready-kp"
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/config/kp/application_configuration-minio.json b/pm-file-flow-demo/kube-proj/config/kp/application_configuration-minio.json
new file mode 100644
index 0000000..a4648c1
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/kp/application_configuration-minio.json
@@ -0,0 +1,12 @@
+{
+  "types": [
+    {
+      "id": "json-file-data-from-filestore",
+      "kafkaInputTopic": "json-file-ready-kp",
+      "inputJobType": "xml-file-data-to-filestore",
+      "inputJobDefinition": {
+        "kafkaOutputTopic": "json-file-ready-kp"
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/config/kp/application_configuration.json b/pm-file-flow-demo/kube-proj/config/kp/application_configuration.json
new file mode 100644
index 0000000..a4648c1
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/kp/application_configuration.json
@@ -0,0 +1,12 @@
+{
+  "types": [
+    {
+      "id": "json-file-data-from-filestore",
+      "kafkaInputTopic": "json-file-ready-kp",
+      "inputJobType": "xml-file-data-to-filestore",
+      "inputJobDefinition": {
+        "kafkaOutputTopic": "json-file-ready-kp"
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/config/kpadp/application-template-file.yaml b/pm-file-flow-demo/kube-proj/config/kpadp/application-template-file.yaml
new file mode 100644
index 0000000..64b7538
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/kpadp/application-template-file.yaml
@@ -0,0 +1,83 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2021-2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+spring:
+  profiles:
+    active: prod
+  main:
+    allow-bean-definition-overriding: true
+  aop:
+    auto: false
+management:
+  endpoints:
+    web:
+      exposure:
+        # Enabling of springboot actuator features. See springboot documentation.
+        include: "loggers,logfile,health,info,metrics,threaddump,heapdump"
+springdoc:
+  show-actuator: true
+logging:
+  # Configuration of logging
+  level:
+    ROOT: WARN
+    org.apache.kafka: WARN
+    org.springframework: ERROR
+    org.springframework.data: ERROR
+    org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR
+    org.oran.dmaapadapter: INFO
+
+  file:
+    name: /var/log/dmaap-adapter-service/application.log
+server:
+   # Configuration of the HTTP/REST server. The parameters are defined and handeled by the springboot framework.
+   # See springboot documentation.
+   port : 8435
+   http-port: 8084
+   ssl:
+      key-store-type: JKS
+      key-store-password: policy_agent
+      key-store: /opt/app/dmaap-adapter-service/etc/cert/keystore.jks
+      key-password: policy_agent
+      key-alias: policy_agent
+app:
+  webclient:
+    # Configuration of the trust store used for the HTTP client (outgoing requests)
+    # The file location and the password for the truststore is only relevant if trust-store-used == true
+    # Note that the same keystore as for the server is used.
+    trust-store-used: false
+    trust-store-password: policy_agent
+    trust-store: /opt/app/dmaap-adapter-service/etc/cert/truststore.jks
+    # Configuration of usage of HTTP Proxy for the southbound accesses.
+    # The HTTP proxy (if configured) will only be used for accessing NearRT RIC:s
+    http.proxy-host:
+    http.proxy-port: 0
+  ics-base-url: http://informationservice.nonrtric:8083
+  # Location of the component configuration file. The file will only be used if the Consul database is not used;
+  # configuration from the Consul will override the file.
+  configuration-filepath: /opt/app/dmaap-adapter-service/data/application_configuration.json
+  dmaap-base-url: http://dradmin:dradmin@localhost:2222
+  # The url used to adress this component. This is used as a callback url sent to other components.
+  dmaap-adapter-base-url: http://kpadp-$KPADP_IDX.kpadp.nonrtric:8084
+  # KAFKA boostrap servers. This is only needed if there are Information Types that uses a kafkaInputTopic
+  # several redundant boostrap servers can be specified, separated by a comma ','.
+  kafka:
+    bootstrap-servers: kafka-1.onap:9092
+    # The maximum number of records returned in a single call to poll() (default 100)
+    max-poll-records: 500
+  # If the file name is empty, no authorization token is used
+  auth-token-file:
+  pm-files-path: /pm-files
diff --git a/pm-file-flow-demo/kube-proj/config/kpadp/application-template-minio.yaml b/pm-file-flow-demo/kube-proj/config/kpadp/application-template-minio.yaml
new file mode 100644
index 0000000..970bd80
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/kpadp/application-template-minio.yaml
@@ -0,0 +1,89 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2021-2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+spring:
+  profiles:
+    active: prod
+  main:
+    allow-bean-definition-overriding: true
+  aop:
+    auto: false
+management:
+  endpoints:
+    web:
+      exposure:
+        # Enabling of springboot actuator features. See springboot documentation.
+        include: "loggers,logfile,health,info,metrics,threaddump,heapdump"
+springdoc:
+  show-actuator: true
+logging:
+  # Configuration of logging
+  level:
+    ROOT: WARN
+    org.apache.kafka: WARN
+    org.springframework: ERROR
+    org.springframework.data: ERROR
+    org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR
+    org.oran.dmaapadapter: INFO
+
+  file:
+    name: /var/log/dmaap-adapter-service/application.log
+server:
+   # Configuration of the HTTP/REST server. The parameters are defined and handeled by the springboot framework.
+   # See springboot documentation.
+   port : 8435
+   http-port: 8084
+   ssl:
+      key-store-type: JKS
+      key-store-password: policy_agent
+      key-store: /opt/app/dmaap-adapter-service/etc/cert/keystore.jks
+      key-password: policy_agent
+      key-alias: policy_agent
+app:
+  webclient:
+    # Configuration of the trust store used for the HTTP client (outgoing requests)
+    # The file location and the password for the truststore is only relevant if trust-store-used == true
+    # Note that the same keystore as for the server is used.
+    trust-store-used: false
+    trust-store-password: policy_agent
+    trust-store: /opt/app/dmaap-adapter-service/etc/cert/truststore.jks
+    # Configuration of usage of HTTP Proxy for the southbound accesses.
+    # The HTTP proxy (if configured) will only be used for accessing NearRT RIC:s
+    http.proxy-host:
+    http.proxy-port: 0
+  ics-base-url: http://informationservice.nonrtric:8083
+  # Location of the component configuration file. The file will only be used if the Consul database is not used;
+  # configuration from the Consul will override the file.
+  configuration-filepath: /opt/app/dmaap-adapter-service/data/application_configuration.json
+  dmaap-base-url: http://dradmin:dradmin@localhost:2222
+  # The url used to adress this component. This is used as a callback url sent to other components.
+  dmaap-adapter-base-url: http://kpadp-$KPADP_IDX.kpadp.nonrtric:8084
+  # KAFKA boostrap servers. This is only needed if there are Information Types that uses a kafkaInputTopic
+  # several redundant boostrap servers can be specified, separated by a comma ','.
+  kafka:
+    bootstrap-servers: kafka-1.onap:9092
+    # The maximum number of records returned in a single call to poll() (default 100)
+    max-poll-records: 500
+  # If the file name is empty, no authorization token is used
+  auth-token-file:
+  pm-files-path: /pm-files
+  s3:
+    endpointOverride: $KPX_MINIO
+    accessKeyId: admin
+    secretAccessKey: adminadmin
+    locksBucket: pm-files-json-locks
+    bucket: pm-files-json
diff --git a/pm-file-flow-demo/kube-proj/config/kpadp/application_configuration-file.json b/pm-file-flow-demo/kube-proj/config/kpadp/application_configuration-file.json
new file mode 100644
index 0000000..88b5ae2
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/kpadp/application_configuration-file.json
@@ -0,0 +1,14 @@
+{
+   "types": [
+      {
+         "id": "PmData",
+         "kafkaInputTopic": "json-file-ready-kpadp",
+         "useHttpProxy": false,
+         "dataType": "pmData",
+         "inputJobType": "xml-file-data",
+         "inputJobDefinition": {
+            "kafkaOutputTopic": "json-file-ready-kpadp"
+         }
+      }
+   ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/config/kpadp/application_configuration-minio.json b/pm-file-flow-demo/kube-proj/config/kpadp/application_configuration-minio.json
new file mode 100644
index 0000000..7c8a550
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/kpadp/application_configuration-minio.json
@@ -0,0 +1,14 @@
+{
+   "types": [
+      {
+         "id": "PmData",
+         "kafkaInputTopic": "json-file-ready-kpadp",
+         "useHttpProxy": false,
+         "dataType": "pmData",
+         "inputJobType": "xml-file-data-to-filestore",
+         "inputJobDefinition": {
+            "kafkaOutputTopic": "json-file-ready-kpadp"
+         }
+      }
+   ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/config/kpadp/application_configuration.json b/pm-file-flow-demo/kube-proj/config/kpadp/application_configuration.json
new file mode 100644
index 0000000..7c8a550
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/kpadp/application_configuration.json
@@ -0,0 +1,14 @@
+{
+   "types": [
+      {
+         "id": "PmData",
+         "kafkaInputTopic": "json-file-ready-kpadp",
+         "useHttpProxy": false,
+         "dataType": "pmData",
+         "inputJobType": "xml-file-data-to-filestore",
+         "inputJobDefinition": {
+            "kafkaOutputTopic": "json-file-ready-kpadp"
+         }
+      }
+   ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/config/kpm/application_configuration-file.json b/pm-file-flow-demo/kube-proj/config/kpm/application_configuration-file.json
new file mode 100644
index 0000000..4c4fb5c
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/kpm/application_configuration-file.json
@@ -0,0 +1,8 @@
+{
+  "types": [
+    {
+      "id": "xml-file-data",
+      "kafkaInputTopic": "collected-file"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/config/kpm/application_configuration-minio.json b/pm-file-flow-demo/kube-proj/config/kpm/application_configuration-minio.json
new file mode 100644
index 0000000..4c1bbdd
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/kpm/application_configuration-minio.json
@@ -0,0 +1,8 @@
+{
+  "types": [
+    {
+      "id": "xml-file-data-to-filestore",
+      "kafkaInputTopic": "collected-file"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/config/kpm/application_configuration.json b/pm-file-flow-demo/kube-proj/config/kpm/application_configuration.json
new file mode 100644
index 0000000..4c1bbdd
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/kpm/application_configuration.json
@@ -0,0 +1,8 @@
+{
+  "types": [
+    {
+      "id": "xml-file-data-to-filestore",
+      "kafkaInputTopic": "collected-file"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/config/ves-collector/collector.properties b/pm-file-flow-demo/kube-proj/config/ves-collector/collector.properties
new file mode 100644
index 0000000..3cd0a1d
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/ves-collector/collector.properties
@@ -0,0 +1,77 @@
+###############################################################################
+##
+## Collector Server config
+##
+##      - Default values are shown as commented settings.
+##
+###############################################################################
+##
+## HTTP(S) service
+##
+##      Normally:
+##
+##              - 8080 is http service
+##              - https is disabled by default
+##
+##              - At this time, the server always binds to 0.0.0.0
+##
+##
+collector.service.port=8080
+
+## Authentication is only supported via secure port
+## When enabled - require valid keystore defined
+collector.service.secure.port=8443
+
+# auth.method flags:
+#
+# noAuth - default option - no security (http)
+# certBasicAuth - auth by certificate and basic auth username / password (https)
+#auth.method=certBasicAuth
+auth.method=noAuth
+
+## Combination of userid,hashPassword encoded pwd list to be supported
+## userid and pwd comma separated; pipe delimitation between each pair
+## Password is generated by crypt-password library using BCrypt algorithm stored in dcaegen2/sdk package
+## or https://nexus.onap.org/#nexus-search;quick~crypt-password
+header.authlist=sample1,$2a$10$0buh.2WeYwN868YMwnNNEuNEAMNYVU9.FSMJGyIKV3dGET/7oGOi6
+
+## The keystore must be setup per installation when secure port is configured
+collector.keystore.file.location=etc/keystore
+collector.keystore.passwordfile=etc/passwordfile
+
+collector.cert.subject.matcher=etc/certSubjectMatcher.properties
+
+## The truststore must be setup per installation when mutual tls support is configured
+collector.truststore.file.location=etc/truststore
+collector.truststore.passwordfile=etc/trustpasswordfile
+
+## Schema Validation checkflag
+## default no validation checkflag (-1)
+## If enabled (1) - schemafile location must be specified
+collector.schema.checkflag=1
+collector.schema.file={\"v1\":\"./etc/CommonEventFormat_27.2.json\",\"v2\":\"./etc/CommonEventFormat_27.2.json\",\"v3\":\"./etc/CommonEventFormat_27.2.json\",\"v4\":\"./etc/CommonEventFormat_27.2.json\",\"v5\":\"./etc/CommonEventFormat_28.4.1.json\",\"v7\":\"./etc/CommonEventFormat_30.2.1_ONAP.json\"}
+
+## Schema StndDefinedFields Validation checkflag
+## default no validation checkflag (-1)
+## If enabled (1) - schema files locations must be specified, mapping file path must be specified, schema reference path
+## in event json must be specified, path to stndDefined data field in event json must be specified
+collector.externalSchema.checkflag=1
+collector.externalSchema.schemasLocation=./etc/externalRepo/
+collector.externalSchema.mappingFileLocation=./etc/externalRepo/schema-map.json
+event.externalSchema.schemaRefPath=$.event.stndDefinedFields.schemaReference
+event.externalSchema.stndDefinedDataPath=$.event.stndDefinedFields.data
+
+## List all streamid per domain to be supported. The streamid should match to channel name on dmaapfile
+collector.dmaap.streamid=fault=ves-fault|syslog=ves-syslog|heartbeat=ves-heartbeat|measurementsForVfScaling=ves-measurement|mobileFlow=ves-mobileflow|other=ves-other|stateChange=ves-statechange|thresholdCrossingAlert=ves-thresholdCrossingAlert|voiceQuality=ves-voicequality|sipSignaling=ves-sipsignaling|notification=ves-measurement|pnfRegistration=ves-pnfRegistration|3GPP-FaultSupervision=ves-3gpp-fault-supervision|3GPP-Heartbeat=ves-3gpp-heartbeat|3GPP-Provisioning=ves-3gpp-provisioning|3GPP-PerformanceAssurance=ves-3gpp-performance-assurance|o-ran-sc-du-hello-world-pm-streaming-oas3=ves-o-ran-sc-du-hello-world-pm-streaming-oas3
+collector.dmaapfile=etc/ves-dmaap-config.json
+
+## Path to the file containing description of api versions
+collector.description.api.version.location=etc/api_version_description.json
+
+## Event transformation Flag - when set expects configurable transformation
+## defined under ./etc/eventTransform.json
+## Enabled by default; to disable set to 0
+event.transform.flag=1
+
+# Describes at what frequency (measured in minutes) should application try to fetch config from CBS
+collector.dynamic.config.update.frequency=5
diff --git a/pm-file-flow-demo/kube-proj/config/ves-collector/ves-dmaap-config.json b/pm-file-flow-demo/kube-proj/config/ves-collector/ves-dmaap-config.json
new file mode 100644
index 0000000..b5138ea
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/config/ves-collector/ves-dmaap-config.json
@@ -0,0 +1,11 @@
+{
+
+  "ves-measurement": {
+    "type": "message_router",
+    "dmaap_info": {
+      "location": "mtl5",
+      "topic_url": "http://message-router.onap:3904/events/file-ready/",
+      "ORIGINAL-topic_url": "http://onap-dmaap:3904/events/unauthenticated.VES_MEASUREMENT_OUTPUT/"
+    }
+  }
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/hist-job.sh b/pm-file-flow-demo/kube-proj/hist-job.sh
new file mode 100755
index 0000000..5d4ecb8
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/hist-job.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+echo "Creating a job to filter historical pm files (json)"
+
+PORT=8083
+
+if [ "$KHOST" == "" ]; then
+    echo "Env var KHOST not set, assuming nodeports are available on localhost"
+    export KHOST=localhost
+else
+    echo "Env var KHOST set to $KHOST, assuming nodeports are available on this IP"
+    PORT=31764
+fi
+
+echo ""
+echo "The job assumes that pm files has been downloaded for node: HTTPS-0 "
+echo ""
+
+JOB='{"info_type_id": "PmData", "job_owner": "console","status_notification_uri": "http://callback:80/post","job_definition": {"kafkaOutputTopic":"a-hist","filterType":"pmdata","filter":{"pmRopStartTime": "1999-12-27T10:50:44.000-08:00","sourceNames":["HTTPS-0"],"measTypes":["pmCounterNumber101"]}}}'
+RESP=$(curl -s -w '%{http_code}' $KHOST:$PORT/data-consumer/v1/info-jobs/xa-hist -X PUT -H 'Content-Type: application/json' --data-binary "$JOB")
+status=${RESP:${#RESP}-3}
+if [ "$status" == "200" ]; then
+    echo "  Job created ok"
+elif [ "$status" == "201" ]; then
+    echo "  Job created ok"
+else
+    echo $RESP
+    echo "FAILED"
+    exit 1
+fi
+
+echo "DONE"
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/kd.yaml b/pm-file-flow-demo/kube-proj/kd.yaml
new file mode 100644
index 0000000..fd22c78
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/kd.yaml
@@ -0,0 +1,74 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+
+## Create token for kube dashboard
+##
+## apply this yaml: kubectl apply -f kd.yaml
+##
+## run the cmd below to get a token for dashboard access
+##
+## kubectl -n kubernetes-dashboard  describe secret $(kubectl -n kubernetes-dashboard get secret | (grep admin-user || echo "$_") | awk '{print $1}') | grep token: | awk '{print $2}'
+##
+## Find nodeport of service: kubectl get svc -n kubernetes-dashboard
+##
+## Find cluster-adr (run on master node):  kubectl cluster-info
+##
+## Open browser:  <cluster-adr>:<nodeport>
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: kd
+  namespace: kubernetes-dashboard
+  labels:
+    k8s-app: kubernetes-dashboard
+spec:
+  type: NodePort
+  ports:
+  - port: 443
+    protocol: TCP
+    targetPort: 8443
+    nodePort: 31750
+  selector:
+    k8s-app: kubernetes-dashboard
+  sessionAffinity: None
+  type: NodePort
+
+---
+
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: admin-user
+  namespace: kubernetes-dashboard
+
+---
+
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+  name: admin-user
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: ClusterRole
+  name: cluster-admin
+subjects:
+- kind: ServiceAccount
+  name: admin-user
+  namespace: kubernetes-dashboard
+
diff --git a/pm-file-flow-demo/kube-proj/kube-dfc-gen.yaml b/pm-file-flow-demo/kube-proj/kube-dfc-gen.yaml
new file mode 100644
index 0000000..bac82af
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/kube-dfc-gen.yaml
@@ -0,0 +1,180 @@
+
+
+# DFC
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: dfc
+  namespace: onap
+  labels:
+    run: dfc
+    prodtest: dfc
+spec:
+  clusterIP: None    # Headless service
+  selector:
+    run: dfc
+
+---
+
+# Expose 5 dfc's as individuals nodeports
+apiVersion: v1
+kind: Service
+metadata:
+  name: dfc0
+  namespace: onap
+  labels:
+    prodtest: dfc
+spec:
+  type: NodePort
+  ports:
+  - port: 8100
+    targetPort: 8100
+    protocol: TCP
+    name: http1
+    nodePort: 31770
+  selector:
+    statefulset.kubernetes.io/pod-name: dfc-0
+
+---
+
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: dfc1
+  namespace: onap
+  labels:
+    prodtest: dfc
+spec:
+  type: NodePort
+  ports:
+  - port: 8100
+    targetPort: 8100
+    protocol: TCP
+    name: http1
+    nodePort: 31771
+  selector:
+    statefulset.kubernetes.io/pod-name: dfc-1
+
+---
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: dfc2
+  namespace: onap
+  labels:
+    prodtest: dfc
+spec:
+  type: NodePort
+  ports:
+  - port: 8100
+    targetPort: 8100
+    protocol: TCP
+    name: http1
+    nodePort: 31772
+  selector:
+    statefulset.kubernetes.io/pod-name: dfc-2
+
+---
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: dfc3
+  namespace: onap
+  labels:
+    prodtest: dfc
+spec:
+  type: NodePort
+  ports:
+  - port: 8100
+    targetPort: 8100
+    protocol: TCP
+    name: http1
+    nodePort: 31773
+  selector:
+    statefulset.kubernetes.io/pod-name: dfc-3
+
+---
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: dfc4
+  namespace: onap
+  labels:
+    prodtest: dfc
+spec:
+  type: NodePort
+  ports:
+  - port: 8100
+    targetPort: 8100
+    protocol: TCP
+    name: http1
+    nodePort: 31774
+  selector:
+    statefulset.kubernetes.io/pod-name: dfc-4
+
+---
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: dfc
+  namespace: onap
+  labels:
+    run: dfc
+    prodtest: dfc
+spec:
+  replicas: 1
+  serviceName: dfc
+  selector:
+    matchLabels:
+      run: dfc
+  template:
+    metadata:
+      labels:
+        run: dfc
+        prodtest: dfc
+    spec:
+      volumes:
+        - name: config-truststore
+          configMap:
+            name: dfc-cm-truststore.jks
+        - name: config-cm
+          configMap:
+            name: dfc-cm
+        - name: config-cm-contr
+          emptyDir: {}
+      initContainers:
+      # Copy unique application.yaml to each replica
+      - name: init
+        image: alpine:latest
+        imagePullPolicy: IfNotPresent
+        command: ["ash","-c"]
+        args: ["cp /config-host/application-${HOSTNAME##*-}.yaml /opt/app/datafile/config/application.yaml"]
+        volumeMounts:
+        - name: config-cm
+          mountPath: /config-host
+        - name: config-cm-contr
+          mountPath: /opt/app/datafile/config
+      containers:
+      - name: dfc
+        securityContext:
+          runAsUser: 0     # Need to run as root - needed when writing to hostpath
+        image: onap/org.onap.dcaegen2.collectors.datafile.datafile-app-server:2.5.14
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: 8100
+        volumeMounts:
+        - name: config-truststore
+          mountPath: /opt/app/datafile/config/truststore.jks
+          subPath: truststore.jks
+        - name: config-cm-contr
+          mountPath: /opt/app/datafile/config/application.yaml
+          subPath: application.yaml
+
+
diff --git a/pm-file-flow-demo/kube-proj/kube-dfc.yaml b/pm-file-flow-demo/kube-proj/kube-dfc.yaml
new file mode 100644
index 0000000..9b66fc4
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/kube-dfc.yaml
@@ -0,0 +1,190 @@
+
+
+# DFC
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: dfc
+  namespace: onap
+  labels:
+    run: dfc
+    prodtest: dfc
+spec:
+  clusterIP: None    # Headless service
+  selector:
+    run: dfc
+
+---
+
+# Expose 5 dfc's as individuals nodeports
+apiVersion: v1
+kind: Service
+metadata:
+  name: dfc0
+  namespace: onap
+  labels:
+    prodtest: dfc
+spec:
+  type: NodePort
+  ports:
+  - port: 8100
+    targetPort: 8100
+    protocol: TCP
+    name: http1
+    nodePort: 31770
+  selector:
+    statefulset.kubernetes.io/pod-name: dfc-0
+
+---
+
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: dfc1
+  namespace: onap
+  labels:
+    prodtest: dfc
+spec:
+  type: NodePort
+  ports:
+  - port: 8100
+    targetPort: 8100
+    protocol: TCP
+    name: http1
+    nodePort: 31771
+  selector:
+    statefulset.kubernetes.io/pod-name: dfc-1
+
+---
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: dfc2
+  namespace: onap
+  labels:
+    prodtest: dfc
+spec:
+  type: NodePort
+  ports:
+  - port: 8100
+    targetPort: 8100
+    protocol: TCP
+    name: http1
+    nodePort: 31772
+  selector:
+    statefulset.kubernetes.io/pod-name: dfc-2
+
+---
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: dfc3
+  namespace: onap
+  labels:
+    prodtest: dfc
+spec:
+  type: NodePort
+  ports:
+  - port: 8100
+    targetPort: 8100
+    protocol: TCP
+    name: http1
+    nodePort: 31773
+  selector:
+    statefulset.kubernetes.io/pod-name: dfc-3
+
+---
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: dfc4
+  namespace: onap
+  labels:
+    prodtest: dfc
+spec:
+  type: NodePort
+  ports:
+  - port: 8100
+    targetPort: 8100
+    protocol: TCP
+    name: http1
+    nodePort: 31774
+  selector:
+    statefulset.kubernetes.io/pod-name: dfc-4
+
+---
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: dfc
+  namespace: onap
+  labels:
+    run: dfc
+    prodtest: dfc
+spec:
+  replicas: $NUM_DFC
+  serviceName: dfc
+  selector:
+    matchLabels:
+      run: dfc
+  template:
+    metadata:
+      labels:
+        run: dfc
+        prodtest: dfc
+    spec:
+      volumes:
+        - name: config-truststore
+          configMap:
+            name: dfc-cm-truststore.jks
+        - name: config-cm
+          configMap:
+            name: dfc-cm
+        - name: config-cm-contr
+          emptyDir: {}
+#DFC_SHARED_DIR_START
+        - name: shared-vol
+          hostPath:
+            path: $DFC_MNT
+            type: DirectoryOrCreate
+#DFC_SHARED_DIR_STOP
+      initContainers:
+      # Copy unique application.yaml to each replica
+      - name: init
+        image: alpine:latest
+        imagePullPolicy: IfNotPresent
+        command: ["ash","-c"]
+        args: ["cp /config-host/application-${HOSTNAME##*-}.yaml /opt/app/datafile/config/application.yaml"]
+        volumeMounts:
+        - name: config-cm
+          mountPath: /config-host
+        - name: config-cm-contr
+          mountPath: /opt/app/datafile/config
+      containers:
+      - name: dfc
+        securityContext:
+          runAsUser: 0     # Need to run as root - needed when writing to hostpath
+        image: $DFC_IMAGE
+        imagePullPolicy: $LOCAL_IMAGE_PULL_POLICY
+        ports:
+        - name: http
+          containerPort: 8100
+        volumeMounts:
+        - name: config-truststore
+          mountPath: /opt/app/datafile/config/truststore.jks
+          subPath: truststore.jks
+        - name: config-cm-contr
+          mountPath: /opt/app/datafile/config/application.yaml
+          subPath: application.yaml
+#DFC_SHARED_DIR_START
+        - name: shared-vol
+          mountPath: /tmp/onap_datafile
+#DFC_SHARED_DIR_STOP
+
+
diff --git a/pm-file-flow-demo/kube-proj/kube-gen.yaml b/pm-file-flow-demo/kube-proj/kube-gen.yaml
new file mode 100644
index 0000000..270fd0b
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/kube-gen.yaml
@@ -0,0 +1,250 @@
+# NodePorts
+# 31750 kubernetes dashboard
+# 31760 ves collector
+# 31761 ves collector https
+# 31764 ics
+# 31765 ics https
+# 31766 message-router
+# 31767 kowl
+# 31768 minio
+# 31770-79 dfc
+# 31785 message-router https
+# 31795 kafka http
+# 31796 kafka http2
+
+## Kafka-producer - xml to json
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: kpm
+  namespace: nonrtric
+  labels:
+    run: kpm
+    prodtest: kpm
+spec:
+  clusterIP: None          # Headless service
+  selector:
+    run: kpm
+
+---
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: kpm
+  namespace: nonrtric
+  labels:
+    run: kpm
+    prodtest: kpm
+spec:
+  replicas: 1
+  serviceName: kpm
+  selector:
+    matchLabels:
+      run: kpm
+  template:
+    metadata:
+      labels:
+        run: kpm
+        prodtest: kpm
+    spec:
+      initContainers:
+      - name: init
+        image: alpine:latest
+        imagePullPolicy: IfNotPresent
+        command: ["ash","-c"]
+        args: ["echo "]
+      containers:
+      - name: kpm
+        image: kafka-pm-producer:latest
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: 80
+        env:
+        - name: E1
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.name
+        - name: KP
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.name
+        - name: FILES_VOLUME
+          value: 
+        - name: KAFKA_SERVER
+          value: kafka-1.onap:9092
+        - name: ICS
+          value: informationservice.nonrtric:8083
+        - name: SELF
+          value: "$(E1).kpm.nonrtric:80"
+        - name: FILESTORE_USER
+          value: admin
+        - name: FILESTORE_PWD
+          value: adminadmin
+        - name: FILESTORE_SERVER
+          value: minio.nonrtric:9000
+        volumeMounts:
+        - mountPath: /application_configuration.json
+          subPath: application_configuration.json
+          name: kpm-conf
+      volumes:
+      - configMap:
+          defaultMode: 420
+          name: kpm-cm
+        name: kpm-conf
+
+---
+
+## Kafka-producer - json to json
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: kp
+  namespace: nonrtric
+  labels:
+    run: kp
+    prodtest: kp
+spec:
+  clusterIP: None          # Headless service
+  selector:
+    run: kp
+
+---
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: kp
+  namespace: nonrtric
+  labels:
+    run: kp
+    prodtest: kp
+spec:
+  replicas: 1
+  serviceName: kp
+  selector:
+    matchLabels:
+      run: kp
+  template:
+    metadata:
+      labels:
+        run: kp
+        prodtest: kp
+    spec:
+      containers:
+      - name: kp
+        image: kafka-pm-producer:latest
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: 80
+        env:
+        - name: E1
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.name
+        - name: KP
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.name
+        - name: FILES_VOLUME
+          value: 
+        - name: KAFKA_SERVER
+          value: kafka-1.onap:9092
+        - name: ICS
+          value: informationservice.nonrtric:8083
+        - name: SELF
+          value: "$(E1).kp.nonrtric:80"
+        - name: FILESTORE_USER
+          value: admin
+        - name: FILESTORE_PWD
+          value: adminadmin
+        - name: FILESTORE_SERVER
+          value: minio.nonrtric:9000
+        volumeMounts:
+        - mountPath: /application_configuration.json
+          subPath: application_configuration.json
+          name: kp-conf
+      volumes:
+      - configMap:
+          defaultMode: 420
+          name: kp-cm
+        name: kp-conf
+
+---
+
+## Dmaap adapter - json to json
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: kpadp
+  namespace: nonrtric
+  labels:
+    run: kpadp
+    prodtest: kpadp
+spec:
+  clusterIP: None          # Headless service
+  selector:
+    run: kpadp
+
+---
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: kpadp
+  namespace: nonrtric
+  labels:
+    run: kpadp
+    prodtest: kpadp
+spec:
+  replicas: 1
+  serviceName: kpadp
+  selector:
+    matchLabels:
+      run: kpadp
+  template:
+    metadata:
+      labels:
+        run: kpadp
+        prodtest: kpadp
+    spec:
+      initContainers:
+      # Copy unique application.yaml to each replica
+      - name: init
+        image: alpine:latest
+        imagePullPolicy: IfNotPresent
+        command: ["ash","-c"]
+        args: ["cp /config-host/application-${HOSTNAME##*-}.yaml /opt/app/dmaap-adapter-service/config/application.yaml"]
+        volumeMounts:
+        - name: config-cm
+          mountPath: /config-host
+        - name: config-cm-contr
+          mountPath: /opt/app/dmaap-adapter-service/config
+      containers:
+      - name: kpadp
+        image: nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-plt-dmaapadapter:1.2.0
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: 8084
+        volumeMounts:
+        - mountPath: /opt/app/dmaap-adapter-service/data/application_configuration.json
+          subPath: application_configuration.json
+          name: kpadp-cm-data
+        - mountPath: /opt/app/dmaap-adapter-service/config/application.yaml
+          subPath: application.yaml
+          name: config-cm-contr
+      volumes:
+        - name: kpadp-cm-data
+          configMap:
+            name: kpadp-data
+        - name: config-cm-contr
+          emptyDir: {}
+        - name: config-cm
+          configMap:
+            name: kpadp-cm
diff --git a/pm-file-flow-demo/kube-proj/kube-minio-gen.yaml b/pm-file-flow-demo/kube-proj/kube-minio-gen.yaml
new file mode 100644
index 0000000..621e27c
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/kube-minio-gen.yaml
@@ -0,0 +1,101 @@
+
+
+# Minio
+
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: minio
+  namespace: nonrtric
+  labels:
+    run: minio
+    prodtest: minio
+spec:
+  clusterIP: None
+  selector:
+    run: minio
+
+---
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: minio-ext
+  namespace: nonrtric
+  labels:
+    prodtest: minio
+spec:
+  type: NodePort
+  selector:
+    statefulset.kubernetes.io/pod-name: minio-0
+  ports:
+  - protocol: TCP
+    port: 9001
+    targetPort: 9001
+    nodePort: 31768
+
+---
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: minio
+  namespace: nonrtric
+  labels:
+    run: minio
+    prodtest: minio
+spec:
+  serviceName: minio
+  replicas: 1
+  selector:
+    matchLabels:
+      run: minio
+  template:
+    metadata:
+      labels:
+        run: minio
+        prodtest: minio
+    spec:
+      initContainers:
+      - name: init
+        image: alpine:latest
+        imagePullPolicy: IfNotPresent
+        command: ["ash","-c"]
+        args: ["IDX=${HOSTNAME##*-} && mkdir -p /data/ && rm -rf /data//*"]
+        volumeMounts:
+        - mountPath: /data
+          name: data-vol
+      containers:
+      - name: minio
+        image: minio/minio:latest
+        imagePullPolicy: IfNotPresent
+        args:
+        - server
+        - "--console-address"
+        - ":9001"
+        - /data/0/
+        # 
+        # 
+        # 
+        # 
+        # 
+        # 
+        # 
+        # 
+        # 
+        # 
+        env:
+        - name: MINIO_ROOT_USER
+          value: admin
+        - name: MINIO_ROOT_PASSWORD
+          value: adminadmin
+        volumeMounts:
+        - mountPath: /data
+          name: data-vol
+      volumes:
+      #MINIO_EMPTY_DIR_START
+        - name: data-vol
+          emptyDir: {}
+      #MINIO_EMPTY_DIR_STOP
+
diff --git a/pm-file-flow-demo/kube-proj/kube-minio.yaml b/pm-file-flow-demo/kube-proj/kube-minio.yaml
new file mode 100644
index 0000000..6cea998
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/kube-minio.yaml
@@ -0,0 +1,107 @@
+
+
+# Minio
+
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: minio
+  namespace: nonrtric
+  labels:
+    run: minio
+    prodtest: minio
+spec:
+  clusterIP: None
+  selector:
+    run: minio
+
+---
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: minio-ext
+  namespace: nonrtric
+  labels:
+    prodtest: minio
+spec:
+  type: NodePort
+  selector:
+    statefulset.kubernetes.io/pod-name: minio-0
+  ports:
+  - protocol: TCP
+    port: 9001
+    targetPort: 9001
+    nodePort: 31768
+
+---
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: minio
+  namespace: nonrtric
+  labels:
+    run: minio
+    prodtest: minio
+spec:
+  serviceName: minio
+  replicas: $NUM_MINIO
+  selector:
+    matchLabels:
+      run: minio
+  template:
+    metadata:
+      labels:
+        run: minio
+        prodtest: minio
+    spec:
+      initContainers:
+      - name: init
+        image: alpine:latest
+        imagePullPolicy: IfNotPresent
+        command: ["ash","-c"]
+        args: ["IDX=${HOSTNAME##*-} && mkdir -p /data/$IDX && rm -rf /data/$IDX/*"]
+        volumeMounts:
+        - mountPath: /data
+          name: data-vol
+      containers:
+      - name: minio
+        image: minio/minio:latest
+        imagePullPolicy: IfNotPresent
+        args:
+        - server
+        - "--console-address"
+        - ":9001"
+        - $MINIO_SERVER_CONF
+        # $MINIO_SERVER_0
+        # $MINIO_SERVER_1
+        # $MINIO_SERVER_2
+        # $MINIO_SERVER_3
+        # $MINIO_SERVER_4
+        # $MINIO_SERVER_5
+        # $MINIO_SERVER_6
+        # $MINIO_SERVER_7
+        # $MINIO_SERVER_8
+        # $MINIO_SERVER_9
+        env:
+        - name: MINIO_ROOT_USER
+          value: admin
+        - name: MINIO_ROOT_PASSWORD
+          value: adminadmin
+        volumeMounts:
+        - mountPath: /data
+          name: data-vol
+      volumes:
+      #MINIO_EMPTY_DIR_START
+        - name: data-vol
+          emptyDir: {}
+      #MINIO_EMPTY_DIR_STOP
+      #MINIO_HOSTPATH_DIR_START
+        - name: data-vol
+          hostPath:
+            path: $MINIO_MNT/minio
+            type: DirectoryOrCreate
+      #MINIO_HOSTPATH_DIR_STOP
+
diff --git a/pm-file-flow-demo/kube-proj/kube-plt-gen.yaml b/pm-file-flow-demo/kube-proj/kube-plt-gen.yaml
new file mode 100644
index 0000000..273f3e3
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/kube-plt-gen.yaml
@@ -0,0 +1,587 @@
+## Status callback server
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: callback
+  namespace: nonrtric
+  labels:
+    run: callback
+    prodtest: callback
+spec:
+  selector:
+    run: callback
+  ports:
+  - port: 80
+    name: http
+
+---
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: callback
+  namespace: nonrtric
+  labels:
+    prodtest: callback
+spec:
+  containers:
+  - name: callback
+    image: kennethreitz/httpbin
+    imagePullPolicy: IfNotPresent
+  ports:
+  - port: 80
+    name: http
+  restartPolicy: Always
+
+
+## Kafka client
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: client
+  namespace: nonrtric
+  labels:
+    run: client
+    prodtest: client
+spec:
+  clusterIP: None
+  selector:
+    run: client
+
+---
+
+apiVersion: v1
+kind: Pod
+metadata:
+  name: client
+  namespace: nonrtric
+  labels:
+    prodtest: client
+spec:
+  containers:
+  - name: client
+    image: confluentinc/cp-kafka:6.2.1
+    command: ['sh', '-c', 'while [ true ];do sleep 60;done']
+    imagePullPolicy: IfNotPresent
+  restartPolicy: Always
+
+---
+
+## https server sts
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: pm-https-server
+  namespace: ran
+  labels:
+    run: pm-https-server
+    prodtest: pm-https-server
+spec:
+  clusterIP: None
+  selector:
+    run: pm-https-server
+
+---
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: pm-https-server
+  namespace: ran
+  labels:
+    run: pm-https-server
+    prodtest: pm-https-server
+spec:
+  replicas: 10
+  serviceName: pm-https-server
+  selector:
+    matchLabels:
+      run: pm-https-server
+  template:
+    metadata:
+      labels:
+        run: pm-https-server
+        prodtest: pm-https-server
+    spec:
+      volumes:
+        - name: tmp-vol
+          configMap:
+            name: pm-https-server-cm
+        - name: cert-vol
+          emptyDir: {}
+        - name: ne-files-vol
+          configMap:
+            name: ne-files
+      initContainers:
+      - name: init
+        image: alpine:latest
+        imagePullPolicy: IfNotPresent
+        command: ["ash","-c"]
+        args: ["cp /tmp/certs/copy-certs.sh /tmp && cd /tmp && chmod u+x copy-certs.sh && ./copy-certs.sh"]
+        volumeMounts:
+        - name: tmp-vol
+          mountPath: /tmp/certs
+        - name: cert-vol
+          mountPath: /certs
+        securityContext:
+          runAsUser: 0
+      containers:
+      - name: pm-https-server
+        image: pm-https-server:latest
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: 80
+        - name: https
+          containerPort: 443
+        env:
+        - name: ALWAYS_RETURN
+          value: /ne-files/pm.xml.gz
+        volumeMounts:
+        - name: cert-vol
+          mountPath: /certs
+        - name: tmp-vol
+          mountPath: /tmp/certs
+        - name: ne-files-vol
+          mountPath: /ne-files
+
+---
+
+# VES collector
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: ves-collector
+  namespace: onap
+  labels:
+    run: ves-collector
+    prodtest: ves-collector
+spec:
+  type: NodePort
+  ports:
+  - port: 8080
+    targetPort: 8080
+    name: http
+    nodePort: 31760
+  - port: 8443
+    name: https
+    nodePort: 31761
+  selector:
+    run: ves-collector
+
+---
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: ves-collector
+  namespace: onap
+  labels:
+    run: ves-collector
+    prodtest: ves-collector
+spec:
+  selector:
+    matchLabels:
+      run: ves-collector
+  template:
+    metadata:
+      labels:
+        run: ves-collector
+        prodtest: ves-collector
+    spec:
+      volumes:
+        - name: conf-vol1
+          configMap:
+            name: ves-collector-collector.properties
+        - name: conf-vol2
+          configMap:
+            name: ves-collector-ves-dmaap-config.json
+      containers:
+      - name: ves-collector
+        image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.11.0
+        imagePullPolicy: IfNotPresent
+        env:
+        - name: DMAAPHOST
+          value: message-router.onap
+        ports:
+        - name: http
+          containerPort: 8080
+        - name: https
+          containerPort: 8443
+        volumeMounts:
+        - name: conf-vol1
+          mountPath: /opt/app/VESCollector/etc/collector.properties
+          subPath: collector.properties
+        - name: conf-vol2
+          mountPath: /opt/app/VESCollector/etc/ves-dmaap-config.json
+          subPath: ves-dmaap-config.json
+
+
+---
+
+## ICS
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: informationservice
+  namespace: nonrtric
+  labels:
+    run: informationservice
+    prodtest: informationservice
+spec:
+  type: NodePort
+  ports:
+  - port: 8083
+    targetPort: 8083
+    protocol: TCP
+    name: http
+    nodePort: 31764
+  - port: 8434
+    targetPort: 8434
+    protocol: TCP
+    name: https
+    nodePort: 31765
+  selector:
+    run: informationservice
+
+---
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: informationservice
+  namespace: nonrtric
+  labels:
+    run: informationservice
+    prodtest: informationservice
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: informationservice
+  template:
+    metadata:
+      labels:
+        run: informationservice
+        prodtest: informationservice
+    spec:
+      containers:
+      - name: informationservice
+        image: nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-plt-informationcoordinatorservice:1.4.0
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: 8083
+        - name: https
+          containerPort: 8434
+        volumeMounts:
+        - mountPath: /opt/app/information-coordinator-service/config/application.yaml
+          subPath: application.yaml
+          name: ics-conf-name
+      volumes:
+      - configMap:
+          defaultMode: 420
+          name: informationservice-cm
+        name: ics-conf-name
+
+---
+
+## KAFKA and DMAAP MR
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: zookeeper
+  namespace: onap
+  labels:
+    run: zookeeper
+    prodtest: zookeeper
+spec:
+  type: ClusterIP
+  ports:
+  - port: 32181
+    targetPort: 32181
+    protocol: TCP
+    name: http
+  selector:
+    run: zookeeper
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: kafka-1
+  namespace: onap
+  labels:
+    run: kafka-1
+    prodtest: kafka
+spec:
+  type: NodePort
+  ports:
+  - port: 9092
+    targetPort: 9092
+    protocol: TCP
+    name: http
+    nodePort: 31795
+  - port: 29092
+    targetPort: 29092
+    protocol: TCP
+    name: http2
+    nodePort: 31796
+  # - port: 30099
+  #   targetPort: 30099
+  #   protocol: TCP
+  #   name: http-external
+  #   nodePort:
+  selector:
+    run: kafka-1
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: message-router
+  namespace: onap
+  labels:
+    run: message-router
+    prodtest: message-router
+spec:
+  type: NodePort
+  ports:
+  - port: 3904
+    targetPort: 3904
+    protocol: TCP
+    name: http
+    nodePort: 31766
+  - port: 3905
+    targetPort: 3905
+    protocol: TCP
+    name: https
+    nodePort: 31785
+  selector:
+    run: message-router
+
+---
+
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: zookeeper
+  namespace: onap
+  labels:
+    run: zookeeper
+    prodtest: zookeeper
+spec:
+  selector:
+    matchLabels:
+      run: zookeeper
+  template:
+    metadata:
+      labels:
+        run: zookeeper
+        prodtest: zookeeper
+    spec:
+      containers:
+      - name: zookeeper
+        image: confluentinc/cp-zookeeper:6.2.1
+        imagePullPolicy: IfNotPresent
+        ports:
+        - name: http
+          containerPort: 32181
+        env:
+        - name: ZOOKEEPER_TICK_TIME
+          value: '2000'
+        - name: ZOOKEEPER_CLIENT_PORT
+          value: '32181'
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: kafka-1
+  namespace: onap
+  labels:
+    run: kafka-1
+    prodtest: kafka
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: kafka-1
+  template:
+    metadata:
+      labels:
+        run: kafka-1
+        prodtest: kafka
+    spec:
+      containers:
+      - name: kafka-1
+        image: confluentinc/cp-kafka:6.2.1
+        imagePullPolicy: IfNotPresent
+        ports:
+        - name: http
+          containerPort: 9092
+        ports:
+        - name: http2
+          containerPort: 29092
+        env:
+        - name: KAFKA_BROKER_ID
+          value: '1'
+        - name: KAFKA_ZOOKEEPER_CONNECT
+          value: 'zookeeper:32181'
+        - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
+          value: 'INTERNAL_PLAINTEXT:PLAINTEXT,EXTERNAL_PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
+        - name: KAFKA_ADVERTISED_LISTENERS
+          value: 'INTERNAL_PLAINTEXT://kafka-1.onap:9092,PLAINTEXT_HOST://localhost:29092'
+        - name: KAFKA_LISTENERS
+          value: 'INTERNAL_PLAINTEXT://0.0.0.0:9092,PLAINTEXT_HOST://0.0.0.0:29092'
+        - name: KAFKA_INTER_BROKER_LISTENER_NAME
+          value: INTERNAL_PLAINTEXT
+
+        - name: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR
+          value: '1'
+        - name: KAFKA_TRANSACTION_STATE_LOG_MIN_ISR
+          value: '1'
+        - name: KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR
+          value: '1'
+        - name: KAFKA_NUM_PARTITIONS
+          value: '10'
+
+
+
+        # volumeMounts:
+        # - mountPath: /etc/kafka/secrets/jaas/zk_client_jaas.conf
+        #   subPath: zk_client_jaas.conf
+        #   name: dmaapmr-zk-client-jaas
+      initContainers:
+      - name: init
+        image: alpine
+        imagePullPolicy: IfNotPresent
+        command: ['sh', '-c', 'until nslookup zookeeper.onap.svc.cluster.local; do echo waiting for zookeeper; sleep 2; done;']
+      # volumes:
+      # - configMap:
+      #     defaultMode: 420
+      #     name: dmaapmr-zk-client-jaas.conf
+      #   name: dmaapmr-zk-client-jaas
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: message-router
+  namespace: onap
+  labels:
+    run: message-router
+    prodtest: message-router
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: message-router
+  template:
+    metadata:
+      labels:
+        run: message-router
+        prodtest: message-router
+    spec:
+      containers:
+      - name: message-router
+        image: nexus3.onap.org:10002/onap/dmaap/dmaap-mr:1.3.0
+        imagePullPolicy: IfNotPresent
+        ports:
+        - name: http
+          containerPort: 3904
+        - name: https
+          containerPort: 3905
+        env:
+        - name: enableCadi
+          value: 'false'
+        volumeMounts:
+        - mountPath: /appl/dmaapMR1/bundleconfig/etc/appprops/MsgRtrApi.properties
+          subPath: MsgRtrApi.properties
+          name: dmaapmr-msg-rtr-api
+        - mountPath: /appl/dmaapMR1/etc/cadi.properties
+          subPath: cadi.properties
+          name: dmaapmr-cadi
+      initContainers:
+      - name: init
+        image: alpine:latest
+        imagePullPolicy: IfNotPresent
+        command: ['sh', '-c', 'until nslookup kafka-1.onap.svc.cluster.local; do echo waiting for kafka-1; sleep 2; done;']
+      volumes:
+      - configMap:
+          defaultMode: 420
+          name: dmaapmr-msgrtrapi.properties
+        name: dmaapmr-msg-rtr-api
+      - configMap:
+          defaultMode: 420
+          name: dmaapmr-cadi.properties
+        name: dmaapmr-cadi
+
+---
+
+## Kowl - kafka obs
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: kowl
+  namespace: onap
+  labels:
+    run: kowl
+    prodtest: kowl
+spec:
+  type: NodePort
+  selector:
+    run: kowl
+  ports:
+  - port: 8080
+    targetPort: 8080
+    protocol: TCP
+    name: http
+    nodePort: 31767
+
+---
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: kowl
+  namespace: onap
+  labels:
+    prodtest: kowl
+spec:
+  selector:
+    matchLabels:
+      run: kowl
+  template:
+    metadata:
+      labels:
+        run: kowl
+        prodtest: kowl
+    spec:
+      volumes:
+      - name: config-vol
+        configMap:
+          name: kowl-config-cm
+      containers:
+      - name: kowl
+        image: quay.io/cloudhut/kowl
+        imagePullPolicy: IfNotPresent
+        command: ["./kowl", "--config.filepath=/etc/kowl/config.yaml"]
+        volumeMounts:
+        - name: config-vol
+          mountPath: /etc/kowl/config.yaml
+          subPath: config.yaml
+        ports:
+        - name: http
+          containerPort: 8080
+      restartPolicy: Always
+
+---
+
+
+
+
diff --git a/pm-file-flow-demo/kube-proj/kube-plt.yaml b/pm-file-flow-demo/kube-proj/kube-plt.yaml
new file mode 100644
index 0000000..d34facf
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/kube-plt.yaml
@@ -0,0 +1,587 @@
+## Status callback server
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: callback
+  namespace: nonrtric
+  labels:
+    run: callback
+    prodtest: callback
+spec:
+  selector:
+    run: callback
+  ports:
+  - port: 80
+    name: http
+
+---
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: callback
+  namespace: nonrtric
+  labels:
+    prodtest: callback
+spec:
+  containers:
+  - name: callback
+    image: kennethreitz/httpbin
+    imagePullPolicy: IfNotPresent
+  ports:
+  - port: 80
+    name: http
+  restartPolicy: Always
+
+
+## Kafka client
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: client
+  namespace: nonrtric
+  labels:
+    run: client
+    prodtest: client
+spec:
+  clusterIP: None
+  selector:
+    run: client
+
+---
+
+apiVersion: v1
+kind: Pod
+metadata:
+  name: client
+  namespace: nonrtric
+  labels:
+    prodtest: client
+spec:
+  containers:
+  - name: client
+    image: confluentinc/cp-kafka:6.2.1
+    command: ['sh', '-c', 'while [ true ];do sleep 60;done']
+    imagePullPolicy: IfNotPresent
+  restartPolicy: Always
+
+---
+
+## https server sts
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: pm-https-server
+  namespace: ran
+  labels:
+    run: pm-https-server
+    prodtest: pm-https-server
+spec:
+  clusterIP: None
+  selector:
+    run: pm-https-server
+
+---
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: pm-https-server
+  namespace: ran
+  labels:
+    run: pm-https-server
+    prodtest: pm-https-server
+spec:
+  replicas: $NUM_HTTP
+  serviceName: pm-https-server
+  selector:
+    matchLabels:
+      run: pm-https-server
+  template:
+    metadata:
+      labels:
+        run: pm-https-server
+        prodtest: pm-https-server
+    spec:
+      volumes:
+        - name: tmp-vol
+          configMap:
+            name: pm-https-server-cm
+        - name: cert-vol
+          emptyDir: {}
+        - name: ne-files-vol
+          configMap:
+            name: ne-files
+      initContainers:
+      - name: init
+        image: alpine:latest
+        imagePullPolicy: IfNotPresent
+        command: ["ash","-c"]
+        args: ["cp /tmp/certs/copy-certs.sh /tmp && cd /tmp && chmod u+x copy-certs.sh && ./copy-certs.sh"]
+        volumeMounts:
+        - name: tmp-vol
+          mountPath: /tmp/certs
+        - name: cert-vol
+          mountPath: /certs
+        securityContext:
+          runAsUser: 0
+      containers:
+      - name: pm-https-server
+        image: $PM_HTTPSSERVER_IMAGE
+        imagePullPolicy: $LOCAL_IMAGE_PULL_POLICY
+        ports:
+        - name: http
+          containerPort: 80
+        - name: https
+          containerPort: 443
+        env:
+        - name: ALWAYS_RETURN
+          value: /ne-files/pm.xml.gz
+        volumeMounts:
+        - name: cert-vol
+          mountPath: /certs
+        - name: tmp-vol
+          mountPath: /tmp/certs
+        - name: ne-files-vol
+          mountPath: /ne-files
+
+---
+
+# VES collector
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: ves-collector
+  namespace: onap
+  labels:
+    run: ves-collector
+    prodtest: ves-collector
+spec:
+  type: NodePort
+  ports:
+  - port: 8080
+    targetPort: 8080
+    name: http
+    nodePort: 31760
+  - port: 8443
+    name: https
+    nodePort: 31761
+  selector:
+    run: ves-collector
+
+---
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: ves-collector
+  namespace: onap
+  labels:
+    run: ves-collector
+    prodtest: ves-collector
+spec:
+  selector:
+    matchLabels:
+      run: ves-collector
+  template:
+    metadata:
+      labels:
+        run: ves-collector
+        prodtest: ves-collector
+    spec:
+      volumes:
+        - name: conf-vol1
+          configMap:
+            name: ves-collector-collector.properties
+        - name: conf-vol2
+          configMap:
+            name: ves-collector-ves-dmaap-config.json
+      containers:
+      - name: ves-collector
+        image: $VES_COLLECTOR_IMAGE
+        imagePullPolicy: IfNotPresent
+        env:
+        - name: DMAAPHOST
+          value: message-router.onap
+        ports:
+        - name: http
+          containerPort: 8080
+        - name: https
+          containerPort: 8443
+        volumeMounts:
+        - name: conf-vol1
+          mountPath: /opt/app/VESCollector/etc/collector.properties
+          subPath: collector.properties
+        - name: conf-vol2
+          mountPath: /opt/app/VESCollector/etc/ves-dmaap-config.json
+          subPath: ves-dmaap-config.json
+
+
+---
+
+## ICS
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: informationservice
+  namespace: nonrtric
+  labels:
+    run: informationservice
+    prodtest: informationservice
+spec:
+  type: NodePort
+  ports:
+  - port: 8083
+    targetPort: 8083
+    protocol: TCP
+    name: http
+    nodePort: 31764
+  - port: 8434
+    targetPort: 8434
+    protocol: TCP
+    name: https
+    nodePort: 31765
+  selector:
+    run: informationservice
+
+---
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: informationservice
+  namespace: nonrtric
+  labels:
+    run: informationservice
+    prodtest: informationservice
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: informationservice
+  template:
+    metadata:
+      labels:
+        run: informationservice
+        prodtest: informationservice
+    spec:
+      containers:
+      - name: informationservice
+        image: nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-plt-informationcoordinatorservice:1.4.0
+        imagePullPolicy: $LOCAL_IMAGE_PULL_POLICY
+        ports:
+        - name: http
+          containerPort: 8083
+        - name: https
+          containerPort: 8434
+        volumeMounts:
+        - mountPath: /opt/app/information-coordinator-service/config/application.yaml
+          subPath: application.yaml
+          name: ics-conf-name
+      volumes:
+      - configMap:
+          defaultMode: 420
+          name: informationservice-cm
+        name: ics-conf-name
+
+---
+
+## KAFKA and DMAAP MR
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: zookeeper
+  namespace: onap
+  labels:
+    run: zookeeper
+    prodtest: zookeeper
+spec:
+  type: ClusterIP
+  ports:
+  - port: 32181
+    targetPort: 32181
+    protocol: TCP
+    name: http
+  selector:
+    run: zookeeper
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: kafka-1
+  namespace: onap
+  labels:
+    run: kafka-1
+    prodtest: kafka
+spec:
+  type: NodePort
+  ports:
+  - port: 9092
+    targetPort: 9092
+    protocol: TCP
+    name: http
+    nodePort: 31795
+  - port: 29092
+    targetPort: 29092
+    protocol: TCP
+    name: http2
+    nodePort: 31796
+  # - port: 30099
+  #   targetPort: 30099
+  #   protocol: TCP
+  #   name: http-external
+  #   nodePort:
+  selector:
+    run: kafka-1
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: message-router
+  namespace: onap
+  labels:
+    run: message-router
+    prodtest: message-router
+spec:
+  type: NodePort
+  ports:
+  - port: 3904
+    targetPort: 3904
+    protocol: TCP
+    name: http
+    nodePort: 31766
+  - port: 3905
+    targetPort: 3905
+    protocol: TCP
+    name: https
+    nodePort: 31785
+  selector:
+    run: message-router
+
+---
+
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: zookeeper
+  namespace: onap
+  labels:
+    run: zookeeper
+    prodtest: zookeeper
+spec:
+  selector:
+    matchLabels:
+      run: zookeeper
+  template:
+    metadata:
+      labels:
+        run: zookeeper
+        prodtest: zookeeper
+    spec:
+      containers:
+      - name: zookeeper
+        image: confluentinc/cp-zookeeper:6.2.1
+        imagePullPolicy: IfNotPresent
+        ports:
+        - name: http
+          containerPort: 32181
+        env:
+        - name: ZOOKEEPER_TICK_TIME
+          value: '2000'
+        - name: ZOOKEEPER_CLIENT_PORT
+          value: '32181'
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: kafka-1
+  namespace: onap
+  labels:
+    run: kafka-1
+    prodtest: kafka
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: kafka-1
+  template:
+    metadata:
+      labels:
+        run: kafka-1
+        prodtest: kafka
+    spec:
+      containers:
+      - name: kafka-1
+        image: confluentinc/cp-kafka:6.2.1
+        imagePullPolicy: IfNotPresent
+        ports:
+        - name: http
+          containerPort: 9092
+        ports:
+        - name: http2
+          containerPort: 29092
+        env:
+        - name: KAFKA_BROKER_ID
+          value: '1'
+        - name: KAFKA_ZOOKEEPER_CONNECT
+          value: 'zookeeper:32181'
+        - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
+          value: 'INTERNAL_PLAINTEXT:PLAINTEXT,EXTERNAL_PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
+        - name: KAFKA_ADVERTISED_LISTENERS
+          value: 'INTERNAL_PLAINTEXT://kafka-1.onap:9092,PLAINTEXT_HOST://localhost:29092'
+        - name: KAFKA_LISTENERS
+          value: 'INTERNAL_PLAINTEXT://0.0.0.0:9092,PLAINTEXT_HOST://0.0.0.0:29092'
+        - name: KAFKA_INTER_BROKER_LISTENER_NAME
+          value: INTERNAL_PLAINTEXT
+
+        - name: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR
+          value: '1'
+        - name: KAFKA_TRANSACTION_STATE_LOG_MIN_ISR
+          value: '1'
+        - name: KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR
+          value: '1'
+        - name: KAFKA_NUM_PARTITIONS
+          value: '${KAFKA_NUM_PARTITIONS}'
+
+
+
+        # volumeMounts:
+        # - mountPath: /etc/kafka/secrets/jaas/zk_client_jaas.conf
+        #   subPath: zk_client_jaas.conf
+        #   name: dmaapmr-zk-client-jaas
+      initContainers:
+      - name: init
+        image: alpine
+        imagePullPolicy: IfNotPresent
+        command: ['sh', '-c', 'until nslookup zookeeper.onap.svc.cluster.local; do echo waiting for zookeeper; sleep 2; done;']
+      # volumes:
+      # - configMap:
+      #     defaultMode: 420
+      #     name: dmaapmr-zk-client-jaas.conf
+      #   name: dmaapmr-zk-client-jaas
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: message-router
+  namespace: onap
+  labels:
+    run: message-router
+    prodtest: message-router
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: message-router
+  template:
+    metadata:
+      labels:
+        run: message-router
+        prodtest: message-router
+    spec:
+      containers:
+      - name: message-router
+        image: nexus3.onap.org:10002/onap/dmaap/dmaap-mr:1.3.0
+        imagePullPolicy: IfNotPresent
+        ports:
+        - name: http
+          containerPort: 3904
+        - name: https
+          containerPort: 3905
+        env:
+        - name: enableCadi
+          value: 'false'
+        volumeMounts:
+        - mountPath: /appl/dmaapMR1/bundleconfig/etc/appprops/MsgRtrApi.properties
+          subPath: MsgRtrApi.properties
+          name: dmaapmr-msg-rtr-api
+        - mountPath: /appl/dmaapMR1/etc/cadi.properties
+          subPath: cadi.properties
+          name: dmaapmr-cadi
+      initContainers:
+      - name: init
+        image: alpine:latest
+        imagePullPolicy: IfNotPresent
+        command: ['sh', '-c', 'until nslookup kafka-1.onap.svc.cluster.local; do echo waiting for kafka-1; sleep 2; done;']
+      volumes:
+      - configMap:
+          defaultMode: 420
+          name: dmaapmr-msgrtrapi.properties
+        name: dmaapmr-msg-rtr-api
+      - configMap:
+          defaultMode: 420
+          name: dmaapmr-cadi.properties
+        name: dmaapmr-cadi
+
+---
+
+## Kowl - kafka obs
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: kowl
+  namespace: onap
+  labels:
+    run: kowl
+    prodtest: kowl
+spec:
+  type: NodePort
+  selector:
+    run: kowl
+  ports:
+  - port: 8080
+    targetPort: 8080
+    protocol: TCP
+    name: http
+    nodePort: 31767
+
+---
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: kowl
+  namespace: onap
+  labels:
+    prodtest: kowl
+spec:
+  selector:
+    matchLabels:
+      run: kowl
+  template:
+    metadata:
+      labels:
+        run: kowl
+        prodtest: kowl
+    spec:
+      volumes:
+      - name: config-vol
+        configMap:
+          name: kowl-config-cm
+      containers:
+      - name: kowl
+        image: quay.io/cloudhut/kowl
+        imagePullPolicy: IfNotPresent
+        command: ["./kowl", "--config.filepath=/etc/kowl/config.yaml"]
+        volumeMounts:
+        - name: config-vol
+          mountPath: /etc/kowl/config.yaml
+          subPath: config.yaml
+        ports:
+        - name: http
+          containerPort: 8080
+      restartPolicy: Always
+
+---
+
+
+
+
diff --git a/pm-file-flow-demo/kube-proj/kube-rapps.yaml b/pm-file-flow-demo/kube-proj/kube-rapps.yaml
new file mode 100644
index 0000000..5e37e44
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/kube-rapps.yaml
@@ -0,0 +1,66 @@
+
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: rapp
+  namespace: rapps
+  labels:
+    run: kpm
+    prodtest: rapp
+spec:
+  clusterIP: None          # Headless service
+  selector:
+    run: rapp
+
+---
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: rapp
+  namespace: rapps
+  labels:
+    run: rapp
+    prodtest: rapp
+spec:
+  replicas: $NUM_RAPP
+  serviceName: rapp
+  selector:
+    matchLabels:
+      run: rapp
+  template:
+    metadata:
+      labels:
+        run: rapp
+        prodtest: rapp
+    spec:
+      initContainers:
+      - name: init
+        image: alpine:latest
+        imagePullPolicy: IfNotPresent
+        command: ["ash","-c"]
+        args: ["echo $HOSTNAME"]
+      containers:
+      - name: rapp
+        image: $RAPP_IMAGE
+        imagePullPolicy: $LOCAL_IMAGE_PULL_POLICY
+        ports:
+        - name: http
+          containerPort: 80
+        env:
+        - name: E1
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.name
+        - name: KP
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.name
+        - name: KAFKA_SERVER
+          value: kafka-1.onap:9092
+        - name: ICS
+          value: informationservice.nonrtric:8083
+        - name: SELF
+          value: "$(E1).rapp.rapps:80"
+
diff --git a/pm-file-flow-demo/kube-proj/kube-setup.sh b/pm-file-flow-demo/kube-proj/kube-setup.sh
new file mode 100755
index 0000000..de37a6b
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/kube-setup.sh
@@ -0,0 +1,458 @@
+#!/bin/bash
+
+print_usage() {
+    #echo "Usage: kube-setup.sh [Always]"
+    echo "Usage: kube-setup.sh -k 1 -f file|minio -nm <num-minio-servers> -ms HOSTPATH|EMPTYDIR -ipp Always|IfNotPresent|Never -repo local|<external-image-repo"
+    exit 1
+}
+
+if [ $# -ne 12 ]; then
+    print_usage
+fi
+
+NUM_KAFKA=
+NRT_STORAGE=
+LOCAL_IMAGE_PULL_POLICY=
+MINIO_STORAGE=
+NUM_MINIO=
+EXT_IMAGE_REPO=
+
+while [ $# -gt 0 ]; do
+    case $1 in
+        -k)
+        shift
+        if [ $1 -lt 1 ] || [ $1 -gt 1 ]; then
+            print_usage
+        fi
+        export NUM_KAFKA=$1
+        echo "Setting $1 kafka broker(s)"
+        shift
+        ;;
+        -f)
+        shift
+        if [ $1 == "file" ]; then
+            echo "Setting raw file volume storage"
+        elif [ $1 == "minio" ]; then
+            echo "Setting minio object storage"
+        else
+            print_usage
+        fi
+        export NRT_STORAGE=$1
+        shift
+        ;;
+        -ipp)
+        shift
+        if [ $1 == "Always" ]; then
+            echo "Setting pull policy 'Always' for locally built images pull from external repo"
+        elif [ $1 == "IfNotPresent" ]; then
+            echo "Setting pull policy 'IfNotPresent' for locally built images pull from external repo"
+            echo "  Multinode cluster only: This may not work if image is not present in the node image repos"
+        elif [ $1 == "Never" ]; then
+            echo "Setting pull policy 'Never' for locally built images pull from local repo"
+            echo "  Only works for local kubernetes like docker desktop etc"
+        else
+            print_usage
+        fi
+        export LOCAL_IMAGE_PULL_POLICY=$1
+        shift
+        ;;
+        -ms)
+        shift
+        if [ $1 == "HOSTPATH" ]; then
+            echo "Setting minio hostpath storage "
+        elif [ $1 == "EMPTYDIR" ]; then
+            echo "Setting minio emptydir storage"
+        else
+            print_usage
+        fi
+        export MINIO_STORAGE=$1
+        shift
+        ;;
+        -nm)
+        shift
+        # Min 1, Max 10
+        echo "Setting $1 minio servers"
+        export NUM_MINIO=$1
+        shift
+        ;;
+        -repo)
+        shift
+        if [ $1 == "local" ]; then
+            echo "Setting local repo for kubernetes (for docker desktop etc)"
+            export EXT_IMAGE_REPO=""
+        else
+            echo "Setting $1 as external image repo (for remote cluster and/or multinode kubernetes)"
+            export EXT_IMAGE_REPO=$1"/"
+        fi
+        shift
+        ;;
+        *)
+        print_usage
+    esac
+done
+
+if [[ -z "$NUM_KAFKA" ]] || [[ -z "$NRT_STORAGE" ]] || [[ -z "$LOCAL_IMAGE_PULL_POLICY" ]] || [[ -z "$MINIO_STORAGE" ]] ; then
+    print_usage
+fi
+
+if [[ -z "$NUM_MINIO" ]] ; then
+    print_usage
+fi
+# EXT_IMAGE_REPO May be empty
+
+if [ "$KHOST" == "" ]; then
+    echo "Env var KHOST not set, assuming nodeports are available on localhost"
+    export KHOST=localhost
+else
+    echo "Env var KHOST set to $KHOST, assuming nodeports are available on this IP"
+fi
+
+if [ "$KUBECONFIG" == "" ]; then
+    echo "Env var KUBECONFIG not set, using current settings for kubectl"
+else
+    echo "Env var KUBECONFIG set to $KUBECONFIG"
+fi
+
+
+# Dir mounted to all kubernetes nodes
+HOST_MNT_PATH="/dockerdata-nfs"
+
+echo "Manually clean shared dir - $HOST_MNT_PATH - (for raw file storage and/or minio storage) on host"
+read -p "Enter when done"
+
+check_error() {
+    if [ $1 -ne 0 ]; then
+        echo "Failed $2"
+        echo "Exiting..."
+        exit 1
+    fi
+}
+
+create_ics_job() {
+    JOB=$(<.job.json)
+    echo $JOB
+    retcode=1
+    echo "Creating job-$1"'-'"$2"
+    while [ $retcode -ne 0 ]; do
+        STAT=$(curl -s -X PUT -w '%{http_code}' -H accept:application/json -H Content-Type:application/json http://$KHOST:$(kube_get_nodeport informationservice nonrtric http)/data-consumer/v1/info-jobs/job-$1"-"$2 --data-binary @.job.json)
+        retcode=$?
+        echo "curl return code: $retcode"
+        if [ $retcode -eq 0 ]; then
+            status=${STAT:${#STAT}-3}
+            echo "http status code: "$status
+            if [ "$status" == "200" ]; then
+                echo "Job created ok"
+            elif [ "$status" == "201" ]; then
+                echo "Job created ok"
+            else
+                retcode=1
+            fi
+        fi
+        sleep 1
+    done
+}
+
+wait_for_server_ok() {
+    echo "Wating for server ok from: $1 - $2"
+    retcode=1
+    while [ $retcode -ne 0 ]; do
+        STAT=$(curl -s -w '%{http_code}' $1)
+        retcode=$?
+        echo "curl return code: $retcode"
+        if [ $retcode -eq 0 ]; then
+            status=${STAT:${#STAT}-3}
+            echo "http status code: "$status
+            if [ "$status" == "200" ]; then
+                echo "Response ok"
+            elif [ "$status" == "201" ]; then
+                echo "Response ok"
+            else
+                echo "Retrying..."
+                retcode=1
+            fi
+        else
+            echo "Retrying..."
+        fi
+        sleep 1
+    done
+}
+
+. scripts/kube_get_nodeport.sh
+
+
+kubectl apply -f kube0.yaml
+
+export PM_HTTPSSERVER_IMAGE=$EXT_IMAGE_REPO"pm-https-server:latest"
+export NUM_HTTP=10
+
+export VES_COLLECTOR_IMAGE=nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.11.0
+
+#                                 | onap in name removed due to docker hub limitations
+if [ -z "$EXT_IMAGE_REPO" ]; then
+    export DFC_IMAGE="onap/org.onap.dcaegen2.collectors.datafile.datafile-app-server:2.5.14"
+else
+    export DFC_IMAGE=$EXT_IMAGE_REPO"org.onap.dcaegen2.collectors.datafile.datafile-app-server:2.5.14"
+fi
+
+export NUM_DFC=1      #Max 10
+export DFC_MNT="$HOST_MNT_PATH/shared-vol"
+export DFC_MINIO="http://minio.nonrtric:9000"
+if [ $NRT_STORAGE == "file" ]; then
+    export DFC_MINIO=
+fi
+
+export KPX_IMAGE=$EXT_IMAGE_REPO"kafka-pm-producer:latest"
+export NUM_KPM=1      # Max == Number of kafka partions
+
+export NUM_KP=1       # Max == Number of kafka partions
+
+export KPADP_IMAGE="nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-plt-dmaapadapter:1.2.0"
+export NUM_KPADP=1     #Max 10
+
+export KPX_MNT="\"\""
+export KPX_CNTR_VOL=
+if [ $NRT_STORAGE == "file" ]; then
+    export KPX_MNT="$HOST_MNT_PATH/shared-vol"
+    export KPX_CNTR_VOL="/pm-files"
+fi
+
+export KPX_MINIO="http://minio.nonrtric:9000"
+if [ $NRT_STORAGE == "file" ]; then
+    export KPX_MINIO=
+fi
+
+export KAFKA_NUM_PARTITIONS=10
+
+## This common dir/disk must be mounted and shared by all worker nodes. Only needed if hostpath is configured for minio further down
+export MINIO_MNT="$HOST_MNT_PATH"
+#export NUM_MINIO=1     # Min 1, Max 10
+
+./config/https/certs/gen-certs.sh $NUM_HTTP
+check_error $?
+
+cwd=$PWD
+echo "Updating dfc truststore"
+cd $cwd/config/dfc
+cp ../dfc-common/template-truststore.jks truststore.jks
+check_error $?
+
+echo " Adding https ca cert to dfc truststore"
+cat <<__EOF__ | keytool -importcert -alias pm-https -file $cwd/config/https/certs/httpsca.crt -keystore truststore.jks -storetype JKS -storepass $(< ../dfc-common/truststore.pass)
+yes
+__EOF__
+cd $cwd
+
+#arg: <cm-name> <ns> <file> <label>
+create_config_map_from_file() {
+    kubectl create cm $1 -n $2 --from-file=$3 --dry-run=client -o yaml | kubectl apply -f -
+    check_error $?
+    kubectl label cm  $1 -n $2 --overwrite prodtest=$4
+    check_error $?
+}
+create_config_map_from_file pm-https-server-cm ran config/https/certs pm-https-server
+
+create_config_map_from_file ne-files ran ../docker-proj/pm-files/pm.xml.gz pm-https-server
+
+create_config_map_from_file ves-collector-ves-dmaap-config.json onap config/ves-collector/ves-dmaap-config.json ves-collector
+
+create_config_map_from_file ves-collector-collector.properties onap config/ves-collector/collector.properties ves-collector
+
+create_config_map_from_file informationservice-cm nonrtric config/ics/application.yaml informationservice
+
+create_config_map_from_file dmaapmr-msgrtrapi.properties onap config/dmaapmr/mr/MsgRtrApi.properties message-router
+
+create_config_map_from_file dmaapmr-cadi.properties onap config/dmaapmr/mr/cadi.properties message-router
+
+create_config_map_from_file kowl-config-cm onap config/kowl/config.yaml kowl
+
+create_config_map_from_file dfc-cm-truststore.jks onap config/dfc/truststore.jks dfc
+
+for (( i=0; i<10; i++ )); do
+    export DFC_IDX=$i
+    envsubst < config/dfc/application-template.yaml > config/dfc/application-$i.yaml
+done
+
+create_config_map_from_file dfc-cm onap config/dfc dfc
+
+create_config_map_from_file dfc-cm-truststore.jks onap config/dfc/truststore.jks dfc
+
+if [ $NRT_STORAGE == "file" ]; then
+    cp config/kpm/application_configuration-file.json config/kpm/application_configuration.json
+    #create_config_map_from_file kpm-cm nonrtric config/kpm/application_configuration.json kpm
+else
+    cp config/kpm/application_configuration-minio.json config/kpm/application_configuration.json
+fi
+create_config_map_from_file kpm-cm nonrtric config/kpm/application_configuration.json kpm
+
+if [ $NRT_STORAGE == "file" ]; then
+    cp config/kp/application_configuration-file.json config/kp/application_configuration.json
+    #create_config_map_from_file kp-cm nonrtric config/kp/application_configuration.json kp
+else
+    cp config/kp/application_configuration-minio.json config/kp/application_configuration.json
+fi
+create_config_map_from_file kp-cm nonrtric config/kp/application_configuration.json kp
+
+
+if [ $NRT_STORAGE == "file" ]; then
+    cp config/kpadp/application_configuration-file.json config/kpadp/application_configuration.json
+    #create_config_map_from_file kpadp-data nonrtric config/kpadp/application_configuration.json kpadp
+else
+    cp config/kpadp/application_configuration-minio.json config/kpadp/application_configuration.json
+fi
+create_config_map_from_file kpadp-data nonrtric config/kpadp/application_configuration.json kpadp
+
+for (( i=0; i<10; i++ )); do
+    export KPADP_IDX=$i
+    if [ $NRT_STORAGE == "file" ]; then
+        envsubst < config/kpadp/application-template-file.yaml > config/kpadp/application-$i.yaml
+    else
+        envsubst < config/kpadp/application-template-minio.yaml > config/kpadp/application-$i.yaml
+    fi
+done
+
+create_config_map_from_file kpadp-cm nonrtric config/kpadp kpadp
+
+# for (( i=0; i<10; i++ )); do
+#     if [ $i -lt $NUM_MINIO ]; then
+#         #Format content according to yaml item
+#         if [ $NUM_MINIO -eq 1 ]; then
+#             export "MINIO_SERVER_$i"="- /data/$i/"
+#         else
+#             export "MINIO_SERVER_$i"="- http://minio-$i.minio.nonrtric.svc.cluster.local/data/$i/"
+#         fi
+#     else
+#         export "MINIO_SERVER_$i"=""
+#     fi
+# done
+if [ $NUM_MINIO -eq 1 ]; then
+    export MINIO_SERVER_CONF="/data/0/"
+else
+    export MINIO_SERVER_CONF="http://minio-{0...$((NUM_MINIO-1))}.minio.nonrtric.svc.cluster.local/data/{0...$((NUM_MINIO-1))}/"
+fi
+
+
+envsubst < kube-plt.yaml > kube-plt-gen.yaml
+check_error $?
+
+kubectl apply -f kube-plt-gen.yaml
+check_error $?
+
+if [ $NRT_STORAGE == "minio" ]; then
+    if [ $MINIO_STORAGE == "EMPTYDIR" ]; then
+        cat kube-minio.yaml | sed  '/#MINIO_HOSTPATH_DIR_START/,/#MINIO_HOSTPATH_DIR_STOP/d' > kube-minio.yaml.tmp
+    else
+        cat kube-minio.yaml | sed  '/#MINIO_EMPTY_DIR_START/,/#MINIO_EMPTY_DIR_STOP/d' > kube-minio.yaml.tmp
+    fi
+
+    envsubst < kube-minio.yaml.tmp > kube-minio-gen.yaml
+    check_error $?
+
+    kubectl apply -f kube-minio-gen.yaml
+    check_error $?
+fi
+
+wait_for_server_ok http://$KHOST:$(kube_get_nodeport informationservice nonrtric http)/status "ics"
+wait_for_server_ok http://$KHOST:$(kube_get_nodeport message-router onap http)/topics "mr topics"
+
+export TOPICS="file-ready collected-file json-file-ready json-file-ready-kp json-file-ready-kpadp"
+echo "Creating topics: $TOPICS, may take a while ..."
+for t in $TOPICS; do
+    retcode=1
+    rt=43200000
+    echo "Creating topic $t with retention $(($rt/1000)) seconds"
+    while [ $retcode -ne 0 ]; do
+        status=$(kubectl exec client -n nonrtric -- bash -c 'kafka-topics --create --topic '$t' --config retention.ms='$rt'  --bootstrap-server kafka-1.onap:9092')
+        retcode=$?
+        if [ $retcode -eq 0 ]; then
+            echo "Topic $t created"
+        elif [[ "$status" == *"already exists."* ]]; then
+            echo "Topic $t already exists"
+            retcode=0
+        fi
+        if [ $retcode -ne 0 ]; then
+            sleep 1
+        fi
+    done
+done
+
+if [ $NRT_STORAGE == "minio" ]; then
+    read -p "Check that minio server(s) is/are up"
+fi
+
+if [ $NRT_STORAGE != "file" ]; then
+    # Remove volume mount for shared volume
+    cat kube-dfc.yaml | sed  '/#DFC_SHARED_DIR_START/,/#DFC_SHARED_DIR_STOP/d' > kube-dfc.yaml.tmp
+    check_error $?
+    envsubst < kube-dfc.yaml.tmp > kube-dfc-gen.yaml
+    check_error $?
+else
+    envsubst < kube-dfc.yaml > kube-dfc-gen.yaml
+    check_error $?
+fi
+
+kubectl apply -f kube-dfc-gen.yaml
+check_error $?
+
+if [ $NRT_STORAGE != "file" ]; then
+    # Remove volume mount for shared volume
+    cat kube.yaml | sed  '/#KPX_SHARED_DIR_START/,/#KPX_SHARED_DIR_STOP/d' > kube.yaml.tmp
+    check_error $?
+    envsubst < kube.yaml.tmp > kube-gen.yaml
+    check_error $?
+else
+    envsubst < kube.yaml > kube-gen.yaml
+    check_error $?
+fi
+
+kubectl apply -f kube-gen.yaml
+check_error $?
+
+# if [ $NRT_STORAGE == "file" ]; then
+#     JOB='{"info_type_id": "xml-file-data", "job_owner": "console","status_notification_uri": "http://callback:80/post","job_definition": {
+#     "kafkaOutputTopic":"json-file-ready","filterType":"pmdata","filter":{"inputCompression":"xml.gz", "outputCompression":"none"}
+#     }}'
+# else
+#     JOB='{"info_type_id": "xml-file-data-to-filestore", "job_owner": "console","status_notification_uri": "http://callback:80/post","job_definition": {
+#     "kafkaOutputTopic":"json-file-ready","filestore-output-bucket": "pm-files-json", "filterType":"pmdata","filter":{"inputCompression":"xml.gz", "outputCompression":"none"}
+#     }}'
+# fi
+# echo $JOB > .job.json
+# create_ics_job xml 0
+
+
+if [ $NRT_STORAGE == "file" ]; then
+    # Store in file system
+    JOB='{"info_type_id": "json-file-data", "job_owner": "console","status_notification_uri": "http://callback.nonrtric:80/post","job_definition": {
+    "kafkaOutputTopic":"rapp-topic-1","filterType":"pmdata","filter":{"measTypes":["pmCounterNumber101"]}
+    }}'
+    echo $JOB > .job.json
+fi
+
+if [ $NRT_STORAGE == "minio" ]; then
+    #Store in filestore
+    JOB='{"info_type_id": "json-file-data-from-filestore", "job_owner": "console","status_notification_uri": "http://callback.nonrtric:80/post","job_definition": {
+    "kafkaOutputTopic":"rapp-topic-1","filterType":"pmdata","filter":{"measTypes":["pmCounterNumber101"]}
+    }}'
+    echo $JOB > .job.json
+fi
+# if [ $NRT_STORAGE == "file" ]; then
+#     JOB='{"info_type_id": "json-file-data", "job_owner": "console","status_notification_uri": "http://callback:80/post","job_definition": {
+#     "kafkaOutputTopic":"rapp-topic-1","filterType":"pmdata","filter":{"measTypes":["pmCounterNumber101"], "inputCompression":"none", "outputCompression":"none"}
+#     }}'
+# else
+#     JOB='{"info_type_id": "json-file-data-from-filestore", "job_owner": "console","status_notification_uri": "http://callback:80/post","job_definition": {
+#     "kafkaOutputTopic":"rapp-topic-1","filterType":"pmdata","filter":{"measTypes":["pmCounterNumber101"], "inputCompression":"none", "outputCompression":"none"}
+#     }}'
+# fi
+echo $JOB > .job.json
+create_ics_job kp-json 0
+
+# JOB='{"info_type_id": "PmData", "job_owner": "console","status_notification_uri": "http://callback:80/post","job_definition": {
+# "kafkaOutputTopic":"rapp-topic-2","filterType":"pmdata","filter":{"measTypes":["pmCounterNumber101"]}
+# }}'
+# echo $JOB > .job.json
+JOB='{"info_type_id": "PmData", "job_owner": "console","status_notification_uri": "http://callback.nonrtric:80/post","job_definition": {
+"kafkaOutputTopic":"rapp-topic-2","filterType":"pmdata","filter":{"measTypes":["pmCounterNumber101"]}
+}}'
+echo $JOB > .job.json
+create_ics_job kpadp-json 0
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/kube-tear-down.sh b/pm-file-flow-demo/kube-proj/kube-tear-down.sh
new file mode 100755
index 0000000..0a5f0c0
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/kube-tear-down.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+if [ "$KUBECONFIG" == "" ]; then
+    echo "Env var KUBECONFIG not set, using current settings for kubectl"
+else
+    echo "Env var KUBECONFIG set to $KUBECONFIG"
+fi
+
+kubectl delete -f kube-gen.yaml
+
+kubectl delete -f kube-plt-gen.yaml
+
+kubectl delete -f kube-dfc-gen.yaml
+
+kubectl delete -f kube-minio-gen.yaml
+
+kubectl delete cm -A -l prodtest
+
+kubectl delete pods -n nonrtric -l dmaap_test
diff --git a/pm-file-flow-demo/kube-proj/kube.yaml b/pm-file-flow-demo/kube-proj/kube.yaml
new file mode 100644
index 0000000..2422ffd
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/kube.yaml
@@ -0,0 +1,280 @@
+# NodePorts
+# 31750 kubernetes dashboard
+# 31760 ves collector
+# 31761 ves collector https
+# 31764 ics
+# 31765 ics https
+# 31766 message-router
+# 31767 kowl
+# 31768 minio
+# 31770-79 dfc
+# 31785 message-router https
+# 31795 kafka http
+# 31796 kafka http2
+
+## Kafka-producer - xml to json
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: kpm
+  namespace: nonrtric
+  labels:
+    run: kpm
+    prodtest: kpm
+spec:
+  clusterIP: None          # Headless service
+  selector:
+    run: kpm
+
+---
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: kpm
+  namespace: nonrtric
+  labels:
+    run: kpm
+    prodtest: kpm
+spec:
+  replicas: $NUM_KPM
+  serviceName: kpm
+  selector:
+    matchLabels:
+      run: kpm
+  template:
+    metadata:
+      labels:
+        run: kpm
+        prodtest: kpm
+    spec:
+      initContainers:
+      - name: init
+        image: alpine:latest
+        imagePullPolicy: IfNotPresent
+        command: ["ash","-c"]
+        args: ["echo $HOSTNAME"]
+      containers:
+      - name: kpm
+        image: $KPX_IMAGE
+        imagePullPolicy: $LOCAL_IMAGE_PULL_POLICY
+        ports:
+        - name: http
+          containerPort: 80
+        env:
+        - name: E1
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.name
+        - name: KP
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.name
+        - name: FILES_VOLUME
+          value: $KPX_CNTR_VOL
+        - name: KAFKA_SERVER
+          value: kafka-1.onap:9092
+        - name: ICS
+          value: informationservice.nonrtric:8083
+        - name: SELF
+          value: "$(E1).kpm.nonrtric:80"
+        - name: FILESTORE_USER
+          value: admin
+        - name: FILESTORE_PWD
+          value: adminadmin
+        - name: FILESTORE_SERVER
+          value: minio.nonrtric:9000
+        volumeMounts:
+        - mountPath: /application_configuration.json
+          subPath: application_configuration.json
+          name: kpm-conf
+#KPX_SHARED_DIR_START
+        - name: shared-vol
+          mountPath: $KPX_CNTR_VOL
+#KPX_SHARED_DIR_STOP
+      volumes:
+      - configMap:
+          defaultMode: 420
+          name: kpm-cm
+        name: kpm-conf
+#KPX_SHARED_DIR_START
+      - name: shared-vol
+        hostPath:
+          path: $KPX_MNT
+          type: DirectoryOrCreate
+#KPX_SHARED_DIR_STOP
+
+---
+
+## Kafka-producer - json to json
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: kp
+  namespace: nonrtric
+  labels:
+    run: kp
+    prodtest: kp
+spec:
+  clusterIP: None          # Headless service
+  selector:
+    run: kp
+
+---
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: kp
+  namespace: nonrtric
+  labels:
+    run: kp
+    prodtest: kp
+spec:
+  replicas: $NUM_KP
+  serviceName: kp
+  selector:
+    matchLabels:
+      run: kp
+  template:
+    metadata:
+      labels:
+        run: kp
+        prodtest: kp
+    spec:
+      containers:
+      - name: kp
+        image: $KPX_IMAGE
+        imagePullPolicy: $LOCAL_IMAGE_PULL_POLICY
+        ports:
+        - name: http
+          containerPort: 80
+        env:
+        - name: E1
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.name
+        - name: KP
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.name
+        - name: FILES_VOLUME
+          value: $KPX_CNTR_VOL
+        - name: KAFKA_SERVER
+          value: kafka-1.onap:9092
+        - name: ICS
+          value: informationservice.nonrtric:8083
+        - name: SELF
+          value: "$(E1).kp.nonrtric:80"
+        - name: FILESTORE_USER
+          value: admin
+        - name: FILESTORE_PWD
+          value: adminadmin
+        - name: FILESTORE_SERVER
+          value: minio.nonrtric:9000
+        volumeMounts:
+        - mountPath: /application_configuration.json
+          subPath: application_configuration.json
+          name: kp-conf
+#KPX_SHARED_DIR_START
+        - name: shared-vol
+          mountPath: $KPX_CNTR_VOL
+#KPX_SHARED_DIR_STOP
+      volumes:
+      - configMap:
+          defaultMode: 420
+          name: kp-cm
+        name: kp-conf
+#KPX_SHARED_DIR_START
+      - name: shared-vol
+        hostPath:
+          path: $KPX_MNT
+          type: DirectoryOrCreate
+#KPX_SHARED_DIR_STOP
+
+---
+
+## Dmaap adapter - json to json
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: kpadp
+  namespace: nonrtric
+  labels:
+    run: kpadp
+    prodtest: kpadp
+spec:
+  clusterIP: None          # Headless service
+  selector:
+    run: kpadp
+
+---
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: kpadp
+  namespace: nonrtric
+  labels:
+    run: kpadp
+    prodtest: kpadp
+spec:
+  replicas: $NUM_KPADP
+  serviceName: kpadp
+  selector:
+    matchLabels:
+      run: kpadp
+  template:
+    metadata:
+      labels:
+        run: kpadp
+        prodtest: kpadp
+    spec:
+      initContainers:
+      # Copy unique application.yaml to each replica
+      - name: init
+        image: alpine:latest
+        imagePullPolicy: IfNotPresent
+        command: ["ash","-c"]
+        args: ["cp /config-host/application-${HOSTNAME##*-}.yaml /opt/app/dmaap-adapter-service/config/application.yaml"]
+        volumeMounts:
+        - name: config-cm
+          mountPath: /config-host
+        - name: config-cm-contr
+          mountPath: /opt/app/dmaap-adapter-service/config
+      containers:
+      - name: kpadp
+        image: $KPADP_IMAGE
+        imagePullPolicy: $LOCAL_IMAGE_PULL_POLICY
+        ports:
+        - name: http
+          containerPort: 8084
+        volumeMounts:
+        - mountPath: /opt/app/dmaap-adapter-service/data/application_configuration.json
+          subPath: application_configuration.json
+          name: kpadp-cm-data
+        - mountPath: /opt/app/dmaap-adapter-service/config/application.yaml
+          subPath: application.yaml
+          name: config-cm-contr
+#KPX_SHARED_DIR_START
+        - name: shared-vol
+          mountPath: $KPX_CNTR_VOL
+#KPX_SHARED_DIR_STOP
+      volumes:
+        - name: kpadp-cm-data
+          configMap:
+            name: kpadp-data
+        - name: config-cm-contr
+          emptyDir: {}
+        - name: config-cm
+          configMap:
+            name: kpadp-cm
+#KPX_SHARED_DIR_START
+        - name: shared-vol
+          hostPath:
+            path: $KPX_MNT
+            type: DirectoryOrCreate
+#KPX_SHARED_DIR_STOP
diff --git a/pm-file-flow-demo/kube-proj/kube0.yaml b/pm-file-flow-demo/kube-proj/kube0.yaml
new file mode 100644
index 0000000..1e043d2
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/kube0.yaml
@@ -0,0 +1,34 @@
+
+kind: Namespace
+apiVersion: v1
+metadata:
+  name: ran
+  labels:
+    prodtest: ns-ran
+
+---
+
+kind: Namespace
+apiVersion: v1
+metadata:
+  name: onap
+  labels:
+    prodtest: ns-onap
+---
+
+kind: Namespace
+apiVersion: v1
+metadata:
+  name: nonrtric
+  labels:
+    prodtest: ns-nonrtric
+
+---
+
+kind: Namespace
+apiVersion: v1
+metadata:
+  name: rapps
+  labels:
+    prodtest: ns-rapps
+
diff --git a/pm-file-flow-demo/kube-proj/ne-files/dummy.txt b/pm-file-flow-demo/kube-proj/ne-files/dummy.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/ne-files/dummy.txt
diff --git a/pm-file-flow-demo/kube-proj/prepare.sh b/pm-file-flow-demo/kube-proj/prepare.sh
new file mode 100755
index 0000000..4f88342
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/prepare.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+# Push local images to repo availble to external kube cluster
+
+if [ "$1" == "bm" ]; the
+    REPO="bjornmagnussonest"
+elif [ ! -z "$1" ]; then
+    REPO=$1
+else
+    echo "Usage: ./prepare.sh <repo-name>"
+    exit 1
+fi
+
+DFC_IM="onap/org.onap.dcaegen2.collectors.datafile.datafile-app-server:2.5.14"
+# Note, 'onap' is removed due to docker hub limitations
+export DFC_IMAGE=/$REPO/org.onap.dcaegen2.collectors.datafile.datafile-app-server:2.5.14
+docker tag $DFC_IM $DFC_IMAGE
+docker push $DFC_IMAGE
diff --git a/pm-file-flow-demo/kube-proj/scripts/kafka-client-send-file-ready.sh b/pm-file-flow-demo/kube-proj/scripts/kafka-client-send-file-ready.sh
new file mode 100755
index 0000000..8e17ae1
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/scripts/kafka-client-send-file-ready.sh
@@ -0,0 +1,178 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+SD=$(dirname -- "$0")
+echo "script-home: "$SD
+cd $SD
+CWD=$PWD
+
+NODE_COUNT=$1
+EVT_COUNT=$2
+NODE_NAME_BASE=$3
+FILE_EXT=$4
+TYPE=$5
+SRV_COUNT=$6
+HIST=$7
+
+FTPES_PORT=2021
+SFTP_PORT=2022
+HTTPS_PORT=443
+
+print_usage() {
+    echo "Usage: kafka-client-send-file-ready.sh <node-count> <num-of-events> <node-name-base> <file-extension> sftp|ftpes|https <num-servers> [hist]"
+    exit 1
+}
+echo $@
+if [ $# -lt 6 ] && [ $# -gt 7 ]; then
+    print_usage
+fi
+
+if [ $TYPE == "sftp" ]; then
+    echo "sftp servers not yet supported"
+elif [ $TYPE == "ftpes" ]; then
+    echo "ftpes servers not yet supported"
+elif [ $TYPE == "https" ]; then
+    :
+else
+    print_usage
+fi
+HIST_LEN=0
+if [ ! -z "$HIST" ]; then
+    if [ $HIST != "hist" ]; then
+        print_usage
+    fi
+    HIST_LEN=96
+fi
+
+BEGINTIME=1665146700
+CURTIME=$BEGINTIME
+
+BATCHSIZE=1000
+
+CNTR=0
+TCNTR=0
+
+for (( i=0; i<$EVT_COUNT; i++)); do
+
+    if [ $CNTR -eq 0 ]; then
+        rm .out.json
+        touch .out.json
+    fi
+
+    if [ "$HIST" == "" ]; then
+        echo "EVENT NO: $i for $NODE_COUNT NODES - 1 FILE PER EVENT"
+    else
+        echo "EVENT NO: $i for $NODE_COUNT NODES - $HIST_LEN FILES PER EVENT"
+    fi
+
+    ST=$(date -d @$CURTIME +'%Y%m%d.%H%M')
+    let CURTIME=CURTIME+900
+    ET=$(date -d @$CURTIME +'%H%M')
+
+    for (( j=0; j<$NODE_COUNT; j++)); do
+
+        if [ "$HIST" == "" ]; then
+            NO="$NODE_NAME_BASE-$j"
+
+            #FN="A20000626.2315+0200-2330+0200_$NO-$i.$FILE_EXT"
+            FN="A$ST+0200-$ET+0200_$NO-$i.$FILE_EXT"
+            let SRV_ID=$j%$SRV_COUNT
+            let SRV_ID=SRV_ID+1
+            echo "NODE "$NO
+            echo "FILENAME "$FN
+
+
+            if [ $TYPE == "sftp" ]; then
+                SRV="ftp-sftp-$SRV_ID"
+                echo "FTP SERVER "$SRV
+                URL="sftp://onap:pano@$SRV:$SFTP_PORT/$FN"
+            elif [ $TYPE == "ftpes" ]; then
+                SRV="ftp-ftpes-$SRV_ID"
+                echo "FTP SERVER "$SRV
+                URL="ftpes://onap:pano@$SRV:$FTPES_PORT/$FN"
+            elif [ $TYPE == "https" ]; then
+                SRV="pm-https-server-$SRV_ID.pm-https-server.ran"
+                echo "HTTP SERVER "$SRV
+                URL="https://$SRV:$HTTPS_PORT/files/$FN"
+            fi
+            EVT='{"event":{"commonEventHeader":{"sequence":0,"eventName":"Noti_RnNode-Ericsson_FileReady","sourceName":"'$NO'","lastEpochMicrosec":151983,"startEpochMicrosec":15198378,"timeZoneOffset":"UTC+05:00","changeIdentifier":"PM_MEAS_FILES"},"notificationFields":{"notificationFieldsVersion":"notificationFieldsVersion","changeType":"FileReady","changeIdentifier":"PM_MEAS_FILES","arrayOfNamedHashMap":[{"name":"'$FN'","hashMap":{"fileFormatType":"org.3GPP.32.435#measCollec","location":"'$URL'","fileFormatVersion":"V10","compression":"gzip"}}]}}}'
+            echo $EVT >> .out.json
+        else
+            NO="$NODE_NAME_BASE-$j"
+
+            let SRV_ID=$j%$SRV_COUNT
+            let SRV_ID=SRV_ID+1
+            echo "NODE "$NO
+
+            EVT_FRAG=""
+            for(( k=95; k>=0; k-- )); do
+
+                let FID=$i-k
+                CURTIME=$(($BEGINTIME+$FID*900))
+                ST=$(date -d @$CURTIME +'%Y%m%d.%H%M')
+                let CURTIME=CURTIME+900
+                ET=$(date -d @$CURTIME +'%H%M')
+                if [ $FID -lt 0 ]; then
+                    FN="NONEXISTING_$NO-$FID.$FILE_EXT"
+                else
+                    #FN="A20000626.2315+0200-2330+0200_$NO-$FID.$FILE_EXT"
+                    FN="A$ST+0200-$ET+0200_$NO-$FID.$FILE_EXT"
+                fi
+                echo "FILENAME "$FN
+                if [ $TYPE == "sftp" ]; then
+                    SRV="ftp-sftp-$SRV_ID"
+                    #echo "FTP SERVER "$SRV
+                    URL="sftp://onap:pano@$SRV:$SFTP_PORT/$FN"
+                elif [ $TYPE == "ftpes" ]; then
+                    SRV="ftp-ftpes-$SRV_ID"
+                    #echo "FTP SERVER "$SRV
+                    URL="ftpes://onap:pano@$SRV:$FTPES_PORT/$FN"
+                elif [ $TYPE == "https" ]; then
+                    SRV="pm-https-server-$SRV_ID.pm-https-server.ran"
+                    #echo "HTTP SERVER "$SRV
+                    URL="https://$SRV:$HTTPS_PORT/files/$FN"
+                fi
+                if [ "$EVT_FRAG" != "" ]; then
+                    EVT_FRAG=$EVT_FRAG","
+                fi
+                EVT_FRAG=$EVT_FRAG'{"name":"'$FN'","hashMap":{"fileFormatType":"org.3GPP.32.435#measCollec","location":"'$URL'","fileFormatVersion":"V10","compression":"gzip"}}'
+            done
+
+            EVT='{"event":{"commonEventHeader":{"sequence":0,"eventName":"Noti_RnNode-Ericsson_FileReady","sourceName":"'$NO'","lastEpochMicrosec":151983,"startEpochMicrosec":15198378,"timeZoneOffset":"UTC+05:00","changeIdentifier":"PM_MEAS_FILES"},"notificationFields":{"notificationFieldsVersion":"notificationFieldsVersion","changeType":"FileReady","changeIdentifier":"PM_MEAS_FILES","arrayOfNamedHashMap":['$EVT_FRAG']}}}'
+            echo $EVT >> .out.json
+
+        fi
+
+        let CNTR=CNTR+1
+        let TCNTR=TCNTR+1
+        if [ $CNTR -ge $BATCHSIZE ]; then
+            echo "Pushing batch of $CNTR events"
+            cat .out.json | kafka-console-producer --topic file-ready --broker-list kafka-1.onap:9092
+            rm .out.json
+            touch .out.json
+            CNTR=0
+        fi
+    done
+done
+if [ $CNTR -ne 0 ]; then
+    echo "Pushing batch of $CNTR events"
+    cat .out.json | kafka-console-producer --topic file-ready --broker-list kafka-1.onap:9092
+fi
+
+echo "Pushed $TCNTR events"
diff --git a/pm-file-flow-demo/kube-proj/scripts/kube_get_nodeport.sh b/pm-file-flow-demo/kube-proj/scripts/kube_get_nodeport.sh
new file mode 100755
index 0000000..5b9e1a3
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/scripts/kube_get_nodeport.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+# args: <service-name> <ns> <port-name>
+kube_get_nodeport() {
+	if [ $# -ne 3 ]; then
+    	echo"kube_get_nodeport need 3 args, <service-name> <ns> <port-name>" $@
+		exit 1
+	fi
+
+	for timeout in {1..60}; do
+		port=$(kubectl get svc $1  -n $2 -o jsonpath='{...ports[?(@.name=="'$3'")].nodePort}')
+		if [ $? -eq 0 ]; then
+			if [ ! -z "$port" ]; then
+				echo $port
+				return 0
+			fi
+		fi
+		sleep 0.5
+	done
+	echo "0"
+	return 1
+}
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/scripts/list-topics.sh b/pm-file-flow-demo/kube-proj/scripts/list-topics.sh
new file mode 100755
index 0000000..e45e00d
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/scripts/list-topics.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+if [ "$KUBECONFIG" == "" ]; then
+    echo "Env var KUBECONFIG not set, using current settings for kubectl"
+else
+    echo "Env var KUBECONFIG set to $KUBECONFIG"
+fi
+
+kubectl exec -it client -n nonrtric -- \
+        bash -c 'kafka-topics --list --bootstrap-server kafka-1.onap:9092'
diff --git a/pm-file-flow-demo/kube-proj/scripts/local-populate-ne-files.sh b/pm-file-flow-demo/kube-proj/scripts/local-populate-ne-files.sh
new file mode 100755
index 0000000..e02ecbf
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/scripts/local-populate-ne-files.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+SD=$(dirname -- "$0")
+cd $SD
+
+NODE_COUNT=$1
+FILE_COUNT=$2
+NODE_NAME_BASE=$3
+FILE_EXT=$4
+NUM_SRV=$5
+
+print_usage() {
+    echo "Usage: local-populate-ne-files.sh <node-count> <file-count> <node-name-base> <file-extension> <num-servers"
+    exit 1
+}
+if [ $# -ne 5 ]; then
+    print_usage
+fi
+
+CNT=0
+for (( i=0; i<$NODE_COUNT; i++ )); do
+    for (( j=0; j<$FILE_COUNT; j++ )); do
+        ERR=$(ln -s pm.$FILE_EXT A20000626.2315+0200-2330+0200_$NODE_NAME_BASE-$i-$j.$FILE_EXT 2>&1)
+        if [ $? -ne 0 ]; then
+            if [[ "$ERR" != *"File exists"* ]]; then
+                echo "Cannot create symbolic link in $DIR, err: $ERR"
+                echo "Exiting..."
+                exit 1
+            fi
+        fi
+        let CNT=CNT+1
+    done
+done
+echo " Created $CNT symlinks to pm.$FILE_EXT"
+
+
+# echo "Creating files for download"
+# cd $CWD
+# DIR="../ne-files"
+# if [ ! -d "$DIR" ]; then
+#     echo "Dir $DIR for ne-files not foud"
+#     exit 1
+# fi
+# create_files
+
+# echo "DONE"
+
diff --git a/pm-file-flow-demo/kube-proj/scripts/populate-ne-files.sh b/pm-file-flow-demo/kube-proj/scripts/populate-ne-files.sh
new file mode 100755
index 0000000..1125578
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/scripts/populate-ne-files.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+SD=$(dirname -- "$0")
+echo "script-home: "$SD
+cd $SD
+CWD=$PWD
+
+NODE_COUNT=$1
+FILE_COUNT=$2
+NODE_NAME_BASE=$3
+FILE_EXT=$4
+NUM_SRV=$5
+
+print_usage() {
+    echo "Usage: populate-ne-files.sh <node-count> <file-count> <node-name-base> <file-extension> <num-servers"
+    exit 1
+}
+if [ $# -ne 5 ]; then
+    print_usage
+fi
+
+if [ "$KUBECONFIG" == "" ]; then
+    echo "Env var KUBECONFIG not set, using current settings for kubectl"
+else
+    echo "Env var KUBECONFIG set to $KUBECONFIG"
+fi
+
+for (( i=0; i<$NUM_SRV; i++ )); do
+    echo "Populating server: pm-https-server-$i"
+    kubectl exec -n ran pm-https-server-$i -c pm-https-server -- mkdir -p /files
+    kubectl cp ../../docker-proj/pm-files/pm.xml.gz ran/pm-https-server-$i:/files/pm.xml.gz -c pm-https-server
+    kubectl cp local-populate-ne-files.sh ran/pm-https-server-$i:/files/local-populate-ne-files.sh -c pm-https-server
+    kubectl exec -n ran pm-https-server-$i -c pm-https-server -- /files/local-populate-ne-files.sh $1 $2 $3 $4 $5
+done
+
+echo "DONE"
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/scripts/push-to-file-ready-topic.sh b/pm-file-flow-demo/kube-proj/scripts/push-to-file-ready-topic.sh
new file mode 100755
index 0000000..108fac0
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/scripts/push-to-file-ready-topic.sh
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+SD=$(dirname -- "$0")
+echo "${0##*/} script-home: "$SD
+cd $SD
+CWD=$PWD
+
+
+NODE_COUNT=$1
+EVT_COUNT=$2
+NODE_NAME_BASE=$3
+FILE_EXT=$4
+TYPE=$5
+SRV_COUNT=$6
+HIST=$7
+
+print_usage() {
+    echo "Usage: push-to-file-ready-topic.sh <node-count> <num-of-events> <node-name-base> <file-extension> sftp|ftpes|https <num-servers> [hist]"
+    exit 1
+}
+if [ $# -lt 6 ] || [ $# -gt 7 ]; then
+    print_usage
+fi
+
+if [ $TYPE == "sftp" ]; then
+    echo "sftp servers not yet supported"
+elif [ $TYPE == "ftpes" ]; then
+    echo "ftpes servers not yet supported"
+elif [ $TYPE == "https" ]; then
+    :
+else
+    print_usage
+fi
+
+if [ ! -z "$HIST" ]; then
+    if [ $HIST != "hist" ]; then
+        print_usage
+    fi
+fi
+
+if [ "$KUBECONFIG" == "" ]; then
+    echo "Env var KUBECONFIG not set, using current settings for kubectl"
+else
+    echo "Env var KUBECONFIG set to $KUBECONFIG"
+fi
+
+chmod +x kafka-client-send-file-ready.sh
+kubectl cp kafka-client-send-file-ready.sh nonrtric/client:/home/appuser
+
+kubectl exec client -n nonrtric -- bash -c './kafka-client-send-file-ready.sh '$NODE_COUNT' '$EVT_COUNT' '$NODE_NAME_BASE' '$FILE_EXT' '$TYPE' '$SRV_COUNT' '$HIST
+
+echo done
+
diff --git a/pm-file-flow-demo/kube-proj/scripts/push-to-ves-collector.sh b/pm-file-flow-demo/kube-proj/scripts/push-to-ves-collector.sh
new file mode 100755
index 0000000..a2c5427
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/scripts/push-to-ves-collector.sh
@@ -0,0 +1,210 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+SD=$(dirname -- "$0")
+echo "script-home: "$SD
+cd $SD
+CWD=$PWD
+
+. kube_get_nodeport.sh
+
+NODE_COUNT=$1
+EVT_COUNT=$2
+NODE_NAME_BASE=$3
+FILE_EXT=$4
+TYPE=$5
+SRV_COUNT=$6
+HIST=$7
+
+FTPES_PORT=2021
+SFTP_PORT=2022
+HTTPS_PORT=443
+
+print_usage() {
+    echo "Usage: push-to-ves-collector.sh <node-count> <num-of-events> <node-name-base> <file-extension> sftp|ftpes|https <num-servers> [hist]"
+    exit 1
+}
+echo $@
+if [ $# -lt 6 ] || [ $# -gt 7 ]; then
+    print_usage
+fi
+
+if [ $TYPE == "sftp" ]; then
+    echo "sftp servers not yet supported"
+elif [ $TYPE == "ftpes" ]; then
+    echo "ftpes servers not yet supported"
+elif [ $TYPE == "https" ]; then
+    :
+else
+    print_usage
+fi
+HIST_LEN=0
+if [ ! -z "$HIST" ]; then
+    if [ $HIST != "hist" ]; then
+        print_usage
+    fi
+    HIST_LEN=96
+fi
+
+if [ "$KHOST" == "" ]; then
+    echo "Env var KHOST not set, assuming nodeports are available on localhost"
+    export KHOST=localhost
+else
+    echo "Env var KHOST set to $KHOST, assuming nodeports are available on this IP"
+fi
+
+BEGINTIME=1665146700
+CURTIME=$BEGINTIME
+
+BATCHSIZE=5
+
+CNTR=0
+TCNTR=0
+
+for (( i=0; i<$EVT_COUNT; i++)); do
+
+    if [ "$HIST" == "" ]; then
+        echo "EVENT BATCH: $i of $EVT_COUNT events for $NODE_COUNT NODES - 1 FILE PER EVENT"
+    else
+        echo "EVENT BATCH: $i of $EVT_COUNT events for $NODE_COUNT NODES - $HIST_LEN FILES PER EVENT"
+    fi
+
+    arch="$(uname -s)"
+    if [[ $arch == "Darwin"* ]]; then
+        ST=$(date -r $CURTIME +'%Y%m%d.%H%M')
+        let CURTIME=CURTIME+900
+        ET=$(date -r $CURTIME +'%H%M')
+    else
+        ST=$(date -d @$CURTIME +'%Y%m%d.%H%M')
+        let CURTIME=CURTIME+900
+        ET=$(date -d @$CURTIME +'%H%M')
+    fi
+
+    for (( j=0; j<$NODE_COUNT; j++)); do
+
+        if [ "$HIST" == "" ]; then
+            NO="$NODE_NAME_BASE-$j"
+            #FN="A20000626.2315+0200-2330+0200_$NO-$i.$FILE_EXT"
+            FN="A$ST+0200-$ET+0200_$NO-$i.$FILE_EXT"
+            let SRV_ID=$j%$SRV_COUNT
+            let SRV_ID=SRV_ID+1
+            #echo "NODE "$NO
+            echo "FILENAME "$FN
+            if [ $TYPE == "sftp" ]; then
+                SRV="ftp-sftp-$SRV_ID"
+                echo "FTP SERVER "$SRV
+                URL="sftp://onap:pano@$SRV:$SFTP_PORT/$FN"
+            elif [ $TYPE == "ftpes" ]; then
+                SRV="ftp-ftpes-$SRV_ID"
+                echo "FTP SERVER "$SRV
+                URL="ftpes://onap:pano@$SRV:$FTPES_PORT/$FN"
+            elif [ $TYPE == "https" ]; then
+                SRV="pm-https-server-$SRV_ID.pm-https-server.ran"
+                #echo "HTTP SERVER "$SRV
+                URL="https://$SRV:$HTTPS_PORT/files/$FN"
+            fi
+            EVT='{"commonEventHeader":{"startEpochMicrosec":15198378,"eventId":"FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1","timeZoneOffset":"UTC+05.30","internalHeaderFields":{"collectorTimeStamp":"Wed,0907202211:56:02GMT"},"priority":"Normal","version":"4.0.1","reportingEntityName":"'$NO'","sequence":0,"domain":"notification","lastEpochMicrosec":151983,"eventName":"Notification_gnb-Ericsson_FileReady","vesEventListenerVersion":"7.0.1","sourceName":"'$NO'"},"notificationFields":{"notificationFieldsVersion":"2.0","changeType":"FileReady","changeIdentifier":"PM_MEAS_FILES","arrayOfNamedHashMap":[{"name":"'$FN'","hashMap":{"location":"'$URL'","fileFormatType":"org.3GPP.32.435#measCollec","fileFormatVersion":"V10","compression":"gzip"}}]}}'
+            if [ $CNTR -eq 0 ]; then
+                rm .out.json
+                touch .out.json
+                echo '{"eventList": [' > .out.json
+            else
+                echo "," >> .out.json
+            fi
+            echo "$EVT" >> .out.json
+        else
+            NO="$NODE_NAME_BASE-$j"
+
+            let SRV_ID=$j%$SRV_COUNT
+            let SRV_ID=SRV_ID+1
+            #echo "NODE "$NO
+
+            EVT_FRAG=""
+            for(( k=95; k>=0; k-- )); do
+                let FID=$i-k
+                #FN="A20000626.2315+0200-2330+0200_$NO-$FID.$FILE_EXT"
+                CURTIME=$(($BEGINTIME+$FID*900))
+                if [[ $arch == "Darwin"* ]]; then
+                    ST=$(date -r $CURTIME +'%Y%m%d.%H%M')
+                    let CURTIME=CURTIME+900
+                    ET=$(date -r $CURTIME +'%H%M')
+                else
+                    ST=$(date -d @$CURTIME +'%Y%m%d.%H%M')
+                    let CURTIME=CURTIME+900
+                    ET=$(date -d @$CURTIME +'%H%M')
+                fi
+                if [ $FID -lt 0 ]; then
+                    FN="NONEXISTING_$NO-$FID.$FILE_EXT"
+                else
+                    #FN="A20000626.2315+0200-2330+0200_$NO-$FID.$FILE_EXT"
+                    FN="A$ST+0200-$ET+0200_$NO-$FID.$FILE_EXT"
+                fi
+                echo "FILENAME "$FN
+                if [ $TYPE == "sftp" ]; then
+                    SRV="ftp-sftp-$SRV_ID"
+                    #echo "FTP SERVER "$SRV
+                    URL="sftp://onap:pano@$SRV:$SFTP_PORT/$FN"
+                elif [ $TYPE == "ftpes" ]; then
+                    SRV="ftp-ftpes-$SRV_ID"
+                    #echo "FTP SERVER "$SRV
+                    URL="ftpes://onap:pano@$SRV:$FTPES_PORT/$FN"
+                elif [ $TYPE == "https" ]; then
+                    SRV="pm-https-server-$SRV_ID"
+                    #echo "HTTP SERVER "$SRV
+                    URL="https://$SRV:$HTTPS_PORT/files/$FN"
+                fi
+                if [ "$EVT_FRAG" != "" ]; then
+                    EVT_FRAG=$EVT_FRAG","
+                fi
+                EVT_FRAG=$EVT_FRAG'{"name":"'$FN'","hashMap":{"location":"'$URL'","fileFormatType":"org.3GPP.32.435#measCollec","fileFormatVersion":"V10","compression":"gzip"}}'
+            done
+            EVT='{"commonEventHeader":{"startEpochMicrosec":15198378,"eventId":"FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1","timeZoneOffset":"UTC+05.30","internalHeaderFields":{"collectorTimeStamp":"Wed,0907202211:56:02GMT"},"priority":"Normal","version":"4.0.1","reportingEntityName":"'$NO'","sequence":0,"domain":"notification","lastEpochMicrosec":151983,"eventName":"Notification_gnb-Ericsson_FileReady","vesEventListenerVersion":"7.0.1","sourceName":"'$NO'"},"notificationFields":{"notificationFieldsVersion":"2.0","changeType":"FileReady","changeIdentifier":"PM_MEAS_FILES","arrayOfNamedHashMap":['$EVT_FRAG']}}'
+            if [ $CNTR -eq 0 ]; then
+                rm .out.json
+                touch .out.json
+                echo '{"eventList": [' > .out.json
+            else
+                echo "," >> .out.json
+            fi
+            echo $EVT >> .out.json
+        fi
+
+        let CNTR=CNTR+1
+        let TCNTR=TCNTR+1
+        if [ $CNTR -ge $BATCHSIZE ]; then
+            echo "Pushing batch of $CNTR events"
+            echo ']}' >> .out.json
+            RES=$(curl -s -X POST $KHOST:$(kube_get_nodeport ves-collector onap http)/eventListener/v7/eventBatch --header 'Content-Type: application/json' --data-binary @.out.json)
+            echo $RES
+            rm .out.json
+            touch .out.json
+            CNTR=0
+        fi
+
+    done
+done
+
+if [ $CNTR -ne 0 ]; then
+    echo "Pushing batch of $CNTR events"
+    echo ']}' >> .out.json
+    RES=$(curl -s -X POST $KHOST:$(kube_get_nodeport ves-collector onap http)/eventListener/v7/eventBatch --header 'Content-Type: application/json' --data-binary @.out.json)
+    echo $RES
+fi
+
+echo "Pushed $TCNTR events"
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/scripts/read-from-topic.sh b/pm-file-flow-demo/kube-proj/scripts/read-from-topic.sh
new file mode 100755
index 0000000..b55d93b
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/scripts/read-from-topic.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+print_usage() {
+   echo "Usage: read-from-topic.sh <topic-name> [timeout-milliseconds]"
+   exit 1
+}
+
+if [ "$KUBECONFIG" == "" ]; then
+    echo "Env var KUBECONFIG not set, using current settings for kubectl"
+else
+    echo "Env var KUBECONFIG set to $KUBECONFIG"
+fi
+
+TOPIC=$1
+TO=15000
+if [ $# -eq 1 ]; then
+        :
+elif [ $# -eq 2 ]; then
+        TO=$2
+else
+        print_usage
+fi
+
+echo "Reading msgs on topic $TOPIC from beginning, $TO ms timeout"
+
+kubectl exec -it client -n nonrtric -- \
+        bash -c 'kafka-console-consumer --timeout-ms '$TO' --topic '$TOPIC' --from-beginning --bootstrap-server kafka-1.onap:9092'
+
+echo "Read msgs on topic $TOPIC from beginning, $TO ms timeout"
\ No newline at end of file
diff --git a/pm-file-flow-demo/kube-proj/x-jobs.sh b/pm-file-flow-demo/kube-proj/x-jobs.sh
new file mode 100755
index 0000000..84acf60
--- /dev/null
+++ b/pm-file-flow-demo/kube-proj/x-jobs.sh
@@ -0,0 +1,173 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+# Script to set a series of topics and jobs/rapps to simulate a set of "real rapps" reciving filtered PM json
+
+if [ "$KUBECONFIG" == "" ]; then
+    echo "Env var KUBECONFIG not set, using current settings for kubectl"
+else
+    echo "Env var KUBECONFIG set to $KUBECONFIG"
+fi
+
+if [ "$KHOST" == "" ]; then
+    echo "Env var KHOST not set, assuming nodeports are available on localhost"
+    export KHOST=localhost
+else
+    echo "Env var KHOST set to $KHOST, assuming nodeports are available on this IP"
+fi
+
+. scripts/kube_get_nodeport.sh
+ICS_PORT=$(kube_get_nodeport informationservice nonrtric http)
+
+print_args() {
+    echo "args: file|minio topics|no-topics jobs|rapps|none [<num-jobs>]"
+    exit 1
+}
+
+eval_cmd() {
+    RESP=$@
+    status=${RESP:${#RESP}-3}
+    if [ "$status" == "200" ]; then
+        echo "  Job created ok"
+    elif [ "$status" == "201" ]; then
+        echo "  Job created ok"
+    else
+        echo $@
+        echo "FAILED"
+        exit 1
+    fi
+}
+
+
+if [ "$1" == "file" ]; then
+    :
+elif [ "$1" == "minio" ]; then
+    :
+else
+    print_args
+fi
+
+if [ "$2" == "topics" ]; then
+    :
+elif [ "$2" == "no-topics" ]; then
+    :
+else
+    print_args
+fi
+
+if [ "$3" == "jobs" ]; then
+    :
+elif [ "$3" == "rapps" ]; then
+    :
+elif [ "$3" == "none" ]; then
+    :
+else
+    print_args
+fi
+
+NUM=$4
+if [ -z "$NUM" ]; then
+    print_args
+fi
+
+if [ "$2" == "topics" ]; then
+    echo "Creating $NUM topics"
+fi
+if [ "$3" == "jobs" ]; then
+    echo "Creating $NUM jobs in kafka-producer and $NUM jobs in dmaap-adapter"
+fi
+if [ "$3" == "rapps" ]; then
+    echo "Creating $NUM rapps with individual jobs in kafka-producer and $NUM rapps with individual jobs in dmaap-adapter"
+fi
+
+ID=0
+while [ $ID -lt $NUM ]; do
+
+    if [ "$2" == "topics" ]; then
+        echo " Creating topic: xa-topic-$ID"
+        kubectl exec -it client -n nonrtric -- bash -c 'kafka-topics --if-not-exists  --create --topic xa-topic-'$ID'  --bootstrap-server kafka-1.onap:9092'
+        if [ $? -ne 0 ]; then
+            echo "FAILED"
+            exit 1
+        fi
+        echo "  Topic ok"
+    fi
+
+    if [ "$3" == "jobs" ]; then
+        JOB='{"info_type_id": "PmData", "job_owner": "console","status_notification_uri": "http://callback:80/post","job_definition": {"kafkaOutputTopic":"xa-topic-'$ID'","filterType":"pmdata","filter":{"measTypes":["pmCounterNumber101"]}}}'
+        echo " Creating job: xa-$ID"
+        CMD=$(curl -s -w '%{http_code}' $KHOST:$ICS_PORT/data-consumer/v1/info-jobs/xa-$ID -X PUT -H 'Content-Type: application/json' --data-binary "$JOB")
+        eval_cmd "$CMD"
+        echo "  Job ok"
+    fi
+
+    if [ "$3" == "rapps" ]; then
+        ##docker run -d -l "dmaap_test=yes" --name pm-rapp-kpadp-$ID --network nonrtric-docker-net -e RAPPID=$ID -e KAFKA_SERVER=kafka-1:29092 -e TOPIC=xp-topic-98 -e ICS=ics:$ICS_PORT -e JOBTYPE=PmData pm-rapp:latest
+        kubectl run pm-rapp-kpadp-$ID -n nonrtric --env "RAPPID=$ID" --env "KAFKA_SERVER=kafka-1.onap:9092" --env "TOPIC=xa-topic-$ID" --env "ICS=informationservice.nonrtric:8083" --env "JOBTYPE=PmData" --image bjornmagnussonest/pm-rapp:latest
+        kubectl label pods pm-rapp-kpadp-$ID -n nonrtric dmaap_test=yes
+        if [ $? -ne 0 ]; then
+            echo "FAILED"
+            exit 1
+        fi
+        echo "  Rapp ok"
+    fi
+
+    if [ "$2" == "topics" ]; then
+        echo " Creating topic: xp-topic-$ID"
+        kubectl exec -it client -n nonrtric -- bash -c 'kafka-topics --if-not-exists --create --topic xp-topic-'$ID'  --bootstrap-server kafka-1.onap:9092'
+        if [ $? -ne 0 ]; then
+            echo "FAILED"
+            exit 1
+        fi
+        echo "  Topic ok"
+    fi
+
+    if [ "$3" == "jobs" ]; then
+        if [ $1 == "file" ]; then
+            JOB='{"info_type_id": "json-file-data", "job_owner": "console","status_notification_uri": "http://callback:80/post","job_definition": {"kafkaOutputTopic":"xp-topic-'$ID'","filterType":"pmdata","filter":{"measTypes":["pmCounterNumber101"]}}}'
+        else
+            JOB='{"info_type_id": "json-file-data-from-filestore", "job_owner": "console","status_notification_uri": "http://callback:80/post","job_definition": {"kafkaOutputTopic":"xp-topic-'$ID'","filterType":"pmdata","filter":{"measTypes":["pmCounterNumber101"]}}}'
+        fi
+        echo " Creating job: xp-$ID"
+        CMD=$(curl -s -w '%{http_code}' $KHOST:$ICS_PORT/data-consumer/v1/info-jobs/xp-$ID -X PUT -H 'Content-Type: application/json' --data-binary "$JOB")
+        eval_cmd "$CMD"
+        echo "  Job ok"
+    fi
+
+    if [ "$3" == "rapps" ]; then
+        if [ $1 == "file" ]; then
+            kubectl run pm-rapp-kp-$ID -n nonrtric --env "RAPPID=$ID" --env "KAFKA_SERVER=kafka-1.onap:9092" --env "TOPIC=xp-topic-$ID" --env "ICS=informationservice.nonrtric:8083" --env "JOBTYPE=json-file-data" --image bjornmagnussonest/pm-rapp:latest
+            kubectl label pods pm-rapp-kp-$ID -n nonrtric dmaap_test=yes
+            #docker run -d -l "dmaap_test=yes" --name pm-rapp-kp-$ID --network nonrtric-docker-net -e RAPPID=$ID -e KAFKA_SERVER=kafka-1:29092 -e TOPIC=xp-topic-98 -e ICS=ics:$ICS_PORT -e JOBTYPE=json-file-data pm-rapp:latest
+        else
+            kubectl run pm-rapp-kp-$ID -n nonrtric --env "RAPPID=$ID" --env "KAFKA_SERVER=kafka-1.onap:9092" --env "TOPIC=xp-topic-$ID" --env "ICS=informationservice.nonrtric:8083" --env "JOBTYPE=json-file-data-from-filestore" --image bjornmagnussonest/pm-rapp:latest
+            kubectl label pods pm-rapp-kp-$ID -n nonrtric dmaap_test=yes
+            #docker run -d -l "dmaap_test=yes" --name pm-rapp-kp-$ID --network nonrtric-docker-net -e RAPPID=$ID -e KAFKA_SERVER=kafka-1:29092 -e TOPIC=xp-topic-98 -e ICS=ics:$ICS_PORT -e JOBTYPE=json-file-data-from-filestore pm-rapp:latest
+        fi
+        if [ $? -ne 0 ]; then
+            echo "FAILED"
+            exit 1
+        fi
+        echo "  Rapp ok"
+    fi
+    let ID=ID+1
+
+done
+
+echo "DONE"
\ No newline at end of file
diff --git a/pm-file-flow-demo/rapp/Dockerfile b/pm-file-flow-demo/rapp/Dockerfile
new file mode 100644
index 0000000..d525831
--- /dev/null
+++ b/pm-file-flow-demo/rapp/Dockerfile
@@ -0,0 +1,35 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+FROM golang:1.19-bullseye AS build
+WORKDIR /app
+COPY go.mod .
+COPY go.sum .
+RUN go mod download
+COPY main.go .
+RUN go build -o /pm-rapp
+
+#Replaced distroless image with ubuntu for debug purposes
+#FROM gcr.io/distroless/base-debian11
+FROM ubuntu
+WORKDIR /
+## Copy from "build" stage
+COPY --from=build /pm-rapp .
+
+##Uncomment this when using distroless image
+#USER nonroot:nonroot
+ENTRYPOINT ["/pm-rapp"]
diff --git a/pm-file-flow-demo/rapp/build.sh b/pm-file-flow-demo/rapp/build.sh
new file mode 100755
index 0000000..7871dea
--- /dev/null
+++ b/pm-file-flow-demo/rapp/build.sh
@@ -0,0 +1,81 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+#Build image from Dockerfile with/without custom image tag
+#Optionally push to external docker hub repo
+
+print_usage() {
+    echo "Usage: build.sh no-push|bm|<docker-hub-repo-name> [<image-tag>]"
+    exit 1
+}
+
+if [ $# -ne 1 ] && [ $# -ne 2 ]; then
+    print_usage
+fi
+
+IMAGE_NAME="pm-rapp"
+IMAGE_TAG="latest"
+REPO=""
+if [ $1 == "no-push" ]; then
+    echo "Only local image build"
+elif [ $1 == "bm" ]; then
+    REPO="bjornmagnussonest"
+    echo "Attempt to push built image to: "$REPO
+else
+    REPO=$1
+    echo "Attempt to push built image to: "$REPO
+fi
+
+if [ "$2" != "" ]; then
+    IMAGE_TAG=$2
+fi
+ echo "Setting image tag to: "$IMAGE_TAG
+
+IMAGE=$IMAGE_NAME:$IMAGE_TAG
+echo "Building image $IMAGE"
+docker build -t $IMAGE_NAME:$IMAGE_TAG .
+if [ $? -ne 0 ]; then
+    echo "BUILD FAILED"
+    exit 1
+fi
+echo "BUILD OK"
+
+if [ "$REPO" != "" ]; then
+    echo "Tagging image"
+    NEW_IMAGE=$REPO/$IMAGE_NAME:$IMAGE_TAG
+    docker tag $IMAGE $NEW_IMAGE
+    if [ $? -ne 0 ]; then
+        echo "RE-TAGGING FAILED"
+        exit 1
+    fi
+    echo "RE-TAG OK"
+
+    echo "Pushing image $NEW_IMAGE"
+    docker push $NEW_IMAGE
+    if [ $? -ne 0 ]; then
+        echo "PUSHED FAILED"
+        echo " Perhaps not logged into docker-hub repo $REPO?"
+        exit 1
+    fi
+    IMAGE=$NEW_IMAGE
+    echo "PUSH OK"
+fi
+
+echo "IMAGE OK: $IMAGE"
+echo "DONE"
diff --git a/pm-file-flow-demo/rapp/go.mod b/pm-file-flow-demo/rapp/go.mod
new file mode 100644
index 0000000..3eae716
--- /dev/null
+++ b/pm-file-flow-demo/rapp/go.mod
@@ -0,0 +1,15 @@
+module main
+
+go 1.19
+
+require (
+	github.com/confluentinc/confluent-kafka-go v1.9.2
+	github.com/json-iterator/go v1.1.11
+	github.com/sirupsen/logrus v1.9.0
+)
+
+require (
+	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
+	github.com/modern-go/reflect2 v1.0.1 // indirect
+	golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // indirect
+)
diff --git a/pm-file-flow-demo/rapp/go.sum b/pm-file-flow-demo/rapp/go.sum
new file mode 100644
index 0000000..d774ccb
--- /dev/null
+++ b/pm-file-flow-demo/rapp/go.sum
@@ -0,0 +1,222 @@
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/actgardner/gogen-avro/v10 v10.1.0/go.mod h1:o+ybmVjEa27AAr35FRqU98DJu1fXES56uXniYFv4yDA=
+github.com/actgardner/gogen-avro/v10 v10.2.1/go.mod h1:QUhjeHPchheYmMDni/Nx7VB0RsT/ee8YIgGY/xpEQgQ=
+github.com/actgardner/gogen-avro/v9 v9.1.0/go.mod h1:nyTj6wPqDJoxM3qdnjcLv+EnMDSDFqE0qDpva2QRmKc=
+github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
+github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
+github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
+github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/confluentinc/confluent-kafka-go v1.9.2 h1:gV/GxhMBUb03tFWkN+7kdhg+zf+QUM+wVkI9zwh770Q=
+github.com/confluentinc/confluent-kafka-go v1.9.2/go.mod h1:ptXNqsuDfYbAE/LBW6pnwWZElUoWxHoV8E43DCrliyo=
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
+github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/frankban/quicktest v1.2.2/go.mod h1:Qh/WofXFeiAFII1aEBu529AtJo6Zg2VHscnEsbBnJ20=
+github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o=
+github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y=
+github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/google/go-cmp v0.2.1-0.20190312032427-6f77996f0c42/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/pprof v0.0.0-20211008130755-947d60d73cc0/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
+github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
+github.com/hamba/avro v1.5.6/go.mod h1:3vNT0RLXXpFm2Tb/5KC71ZRJlOroggq1Rcitb6k4Fr8=
+github.com/heetch/avro v0.3.1/go.mod h1:4xn38Oz/+hiEUTpbVfGVLfvOg0yKLlRP7Q9+gJJILgA=
+github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA=
+github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w=
+github.com/invopop/jsonschema v0.4.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0=
+github.com/jhump/gopoet v0.0.0-20190322174617-17282ff210b3/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI=
+github.com/jhump/gopoet v0.1.0/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI=
+github.com/jhump/goprotoc v0.5.0/go.mod h1:VrbvcYrQOrTi3i0Vf+m+oqQWk9l72mjkJCYo7UvLHRQ=
+github.com/jhump/protoreflect v1.11.0/go.mod h1:U7aMIjN0NWq9swDP7xDdoMfRHb35uiuTd3Z9nFXJf5E=
+github.com/jhump/protoreflect v1.12.0/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI=
+github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ=
+github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/juju/qthttptest v0.1.1/go.mod h1:aTlAv8TYaflIiTDIQYzxnl1QdPjAg8Q8qJMErpKy6A4=
+github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/linkedin/goavro v2.1.0+incompatible/go.mod h1:bBCwI2eGYpUI/4820s67MElg9tdeLbINjLjiM2xZFYM=
+github.com/linkedin/goavro/v2 v2.10.0/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA=
+github.com/linkedin/goavro/v2 v2.10.1/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA=
+github.com/linkedin/goavro/v2 v2.11.1/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
+github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/nrwiersma/avro-benchmarks v0.0.0-20210913175520-21aec48c8f76/go.mod h1:iKyFMidsk/sVYONJRE372sJuX/QTRPacU7imPqqsu7g=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/rogpeppe/clock v0.0.0-20190514195947-2896927a307a/go.mod h1:4r5QyqhjIWCcK8DO4KMclc5Iknq5qVBAlbYYzAbUScQ=
+github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
+github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0=
+github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
+github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
+golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
+golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 h1:0A+M6Uqn+Eje4kHMK80dtF3JCXC4ykBgQG4Fe06QRhQ=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
+google.golang.org/genproto v0.0.0-20220503193339-ba3ae3f07e29/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
+google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
+google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
+google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
+google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
+google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/avro.v0 v0.0.0-20171217001914-a730b5802183/go.mod h1:FvqrFXt+jCsyQibeRv4xxEJBL5iG2DDW5aeJwzDiq4A=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/errgo.v1 v1.0.0/go.mod h1:CxwszS/Xz1C49Ucd2i6Zil5UToP1EmyrFhKaMVbg1mk=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/httprequest.v1 v1.2.1/go.mod h1:x2Otw96yda5+8+6ZeWwHIJTFkEHWP/qP8pJOzqEtWPM=
+gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
+gopkg.in/retry.v1 v1.0.3/go.mod h1:FJkXmWiMaAo7xB+xhvDF59zhfjDWyzmyAxiT4dB688g=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff --git a/pm-file-flow-demo/rapp/main.go b/pm-file-flow-demo/rapp/main.go
new file mode 100644
index 0000000..99d742a
--- /dev/null
+++ b/pm-file-flow-demo/rapp/main.go
@@ -0,0 +1,180 @@
+//  ============LICENSE_START===============================================
+//  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+//  ========================================================================
+//  Licensed 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.
+//  ============LICENSE_END=================================================
+//
+
+package main
+
+import (
+	"bytes"
+	"encoding/json"
+	"fmt"
+	"net/http"
+	"os"
+	"runtime"
+	"time"
+
+	"github.com/confluentinc/confluent-kafka-go/kafka"
+	log "github.com/sirupsen/logrus"
+)
+
+var rapp_id = os.Getenv("RAPPID")
+
+var bootstrapserver = os.Getenv("KAFKA_SERVER")
+
+var topic = os.Getenv("TOPIC")
+
+var ics_server = os.Getenv("ICS")
+
+var job_type = os.Getenv("JOBTYPE")
+
+var gid string = "pm-rapp-" + job_type + "-" + rapp_id
+var cid = gid
+
+// == Main ==//
+func main() {
+
+	log.SetLevel(log.InfoLevel)
+
+	log.Info("Server starting...")
+
+	if rapp_id == "" {
+		log.Error("Env RAPPID not set")
+		os.Exit(1)
+	}
+
+	if bootstrapserver == "" {
+		log.Error("Env KAFKA_SERVER not set")
+		os.Exit(1)
+	}
+
+	if topic == "" {
+		log.Error("Env TOPIC not set")
+		os.Exit(1)
+	}
+
+	if ics_server == "" {
+		log.Error("Env ICS not set")
+		os.Exit(1)
+	}
+
+	if job_type == "" {
+		log.Error("Env JOBTYPE not set")
+		os.Exit(1)
+	}
+
+	jobid := "rapp-job-" + job_type + "-" + rapp_id
+
+	json_str := ""
+	switch job_type {
+	case "PmData":
+		json_str = "{\"info_type_id\": \"PmData\", \"job_owner\": \"console\",\"status_notification_uri\": \"http://callback:80/post\",\"job_definition\": {\"kafkaOutputTopic\":\"" + topic + "\",\"filterType\":\"pmdata\",\"filter\":{\"measTypes\":[\"pmCounterNumber101\"]}}}"
+	case "json-file-data":
+		json_str = "{\"info_type_id\": \"json-file-data\", \"job_owner\": \"console\",\"status_notification_uri\": \"http://callback:80/post\",\"job_definition\": {\"kafkaOutputTopic\":\"" + topic + "\",\"filterType\":\"pmdata\",\"filter\":{\"measTypes\":[\"pmCounterNumber101\"]}}}"
+	case "json-file-data-from-filestore":
+		json_str = "{\"info_type_id\": \"json-file-data-from-filestore\", \"job_owner\": \"console\",\"status_notification_uri\": \"http://callback:80/post\",\"job_definition\": {\"kafkaOutputTopic\":\"" + topic + "\",\"filterType\":\"pmdata\",\"filter\":{\"measTypes\":[\"pmCounterNumber101\"]}}}"
+	default:
+		log.Error("Unknown job type: ", job_type)
+		os.Exit(1)
+	}
+
+	ok := false
+	for !ok {
+		ok = send_http_request([]byte(json_str), http.MethodPut, "http://"+ics_server+"/data-consumer/v1/info-jobs/"+jobid)
+		if !ok {
+			log.Info("Failed to register job: ", jobid, " - retrying")
+			time.Sleep(time.Second)
+		}
+	}
+
+	go read_kafka_messages()
+
+	//Wait until all go routines has exited
+	runtime.Goexit()
+
+	log.Warn("main routine exit")
+	log.Warn("server is stopping...")
+}
+
+func send_http_request(json []byte, method string, url string) bool {
+
+	client := &http.Client{}
+
+	var req *http.Request
+	var err error
+	req, err = http.NewRequest(method, url, bytes.NewBuffer(json))
+	if err != nil {
+		log.Error("Cannot create http request method: ", method, " url: ", url)
+		return false
+	}
+	req.Header.Set("Content-Type", "application/json; charset=utf-8")
+
+	resp, err2 := client.Do(req)
+	if err2 != nil {
+		log.Error("Cannot send http request, method: ", method, "url: ", url)
+	} else {
+		if resp.StatusCode == 200 || resp.StatusCode == 201 {
+			return true
+		}
+	}
+	return false
+
+}
+
+func read_kafka_messages() {
+	var c *kafka.Consumer = nil
+	log.Info("Creating kafka consumer ")
+	var err error
+	for c == nil {
+		c, err = kafka.NewConsumer(&kafka.ConfigMap{
+			"bootstrap.servers": bootstrapserver,
+			"group.id":          gid,
+			"client.id":         cid,
+			"auto.offset.reset": "latest",
+		})
+		if err != nil {
+			log.Warning("Cannot create kafka consumer - retyring")
+		}
+	}
+
+	log.Info("Creating kafka consumer - ok")
+	log.Info("Start subscribing to topic: ", topic)
+	topic_ok := false
+	for !topic_ok {
+		err = c.SubscribeTopics([]string{topic}, nil)
+		if err != nil {
+			log.Info("Topic reader cannot start subscribing on topic: ", topic, " - retrying --  error details: ", err)
+		} else {
+			log.Info("Topic reader subscribing on topic: ", topic)
+			topic_ok = true
+		}
+	}
+
+	maxDur := 1 * time.Second
+	for {
+		msg, err := c.ReadMessage(maxDur)
+		if err == nil {
+			buf := &bytes.Buffer{}
+			if err := json.Indent(buf, msg.Value, "", " "); err != nil {
+				log.Warning("Received msg not json?")
+			} else {
+				fmt.Println(buf.String())
+			}
+			c.Commit()
+		} else {
+			log.Debug(" Nothing to consume on topic: ", topic, ", reason: ", err)
+		}
+	}
+}