diff --git a/docs/sections/services/dfc/troubleshooting.rst b/docs/sections/services/dfc/troubleshooting.rst
index a4c10a7..4e44b06 100644
--- a/docs/sections/services/dfc/troubleshooting.rst
+++ b/docs/sections/services/dfc/troubleshooting.rst
@@ -6,31 +6,37 @@
 
 In order to find the origin of an error, we suggest to use the logs resulting from tracing, which needs to be activated.
 
-Activate tracing: Spring actuator
-"""""""""""""""""""""""""""""""""
+Using the DFC REST API
+""""""""""""""""""""""
+The DFC supports a REST API which includes features to facilitate troubleshooting.
 
-So far, only a few spring boot actuators have been enabled: loggers, logfile, health, info, metrics
+One REST primitive, **status**, returns statistics and status information for the DFC processing.
+Here follows an example on how to use (here curl is used, but a web-browser can also be used. If you are
+logged in to a container, wget can probably be used):
 
-loggers - is used to control the logging level on different loggers (so you can enabled debug tracing on a certain
+``curl http://127.0.0.1:8100/status  -i -X GET``
+
+The following features are implemented by enabling so called 'actuators' in the Springboot framework used:
+
+**loggers** - is used to control the logging level on different loggers (so you can enabled debug tracing on a certain
 logger.
 
-logfile - read the logfile
+**logfile** - get logged information.
 
-health - get health check info, there is currently no info here. But the endpoint is enabled.
+**health** - get health check info, there is currently no info here. But the endpoint is enabled.
 
-metrics - read metrics from the Java execution environment; such as memory consumption, number of threads, open file
+**metrics** - read metrics from the Java execution environment; such as memory consumption, number of threads, open file
 descriptors etc.
 
-Here are some examples on how to use the REST API  (here curl is used, but a web-browser can also be used. If you are
-logged in to a container, wget can probably be used)  :
+Here follow some examples:
 Activate debug tracing on all classes in the DFC:
 
-    ``curl http://127.0.0.1:8100/actuator/loggers/org.onap.dcaegen2.collectors.datafile -i -X POST  -H 'Content-Type:
+    ``curl http://127.0.0.1:8100/actuator/loggers/org.onap.dcaegen2.collectors.datafile -i -X POST  -H 'Content-Type:
     application/json' -d '{"configuredLevel":"debug"}'``
 
 Read the log file:
 
-    ``curl http://127.0.0.1:8100/actuator/logfile  -i -X GET``
+    ``curl http://127.0.0.1:8100/actuator/logfile  -i -X GET``
 
 Get build information:
 
@@ -38,11 +44,11 @@
 
 Get metric from the JVM. This lists the metrics that are available:
 
-    ``curl http://127.0.0.1:8100/actuator/metrics  -i -X GET``
+    ``curl http://127.0.0.1:8100/actuator/metrics  -i -X GET``
 
 To see the value of a particular metric, just add \/[nameOfTheMetric] in the end of address, for example:
 
-    ``curl http://127.0.0.1:8100/actuator/metrics/process.cpu.usage  -i -X GET``
+    ``curl http://127.0.0.1:8100/actuator/metrics/process.cpu.usage  -i -X GET``
 
 
 Certificate failure
@@ -71,8 +77,7 @@
 .. "Exception during getting configuration from CONSUL/CONFIG_BINDING_SERVICE"
 
 
-The file datafile_endpoints.json allows to set different configuration parameters. You can find below the kind of reply
-you get if any parameter is not valid:
+DFC uses a number of configuration parameters. You can find below the kind of reply you get if any parameter is not valid:
 
 
 -Wrong trustedCaPassword:
@@ -151,125 +156,3 @@
 
 -Consumer dmaapProtocol:
 Not configurable.
-
-.. Wrong consumer dmaapUserName:
-.. No issue with the simulator, to be checked in cloud40.
-
-.. Wrong consumer dmaapUserPassword:
-.. No issue with the simulator, to be checked in cloud40.
-
--Consumer dmaapContentType:
-Not configurable.
-
--Wrong consumer consumerId:
-
-.. code-block:: json
-
-    org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks     |2019-04-24T15:10:13.485Z     |ERROR     |Polling for file ready message failed, exception: java.lang.RuntimeException: DmaaPConsumer HTTP 404 NOT_FOUND, config: DmaapConsumerConfiguration{**consumerId=C12WRONG**, consumerGroup=OpenDcae-c12, timeoutMs=-1, messageLimit=1, dmaapHostName=localhost, dmaapPortNumber=2222, dmaapTopicName=/events/unauthenticated.VES_NOTIFICATION_OUTPUT, dmaapProtocol=http, dmaapUserName=, dmaapUserPassword=, dmaapContentType=application/json, trustStorePath=change it, trustStorePasswordPath=change it, keyStorePath=change it, keyStorePasswordPath=change it, enableDmaapCertAuth=false}     |RequestID=138acd07-c519-41ef-8dcb-08d78af2d914     |     |     |reactor-http-epoll-4     |
-    \...     |ERROR     |Polling for file ready message failed, exception: java.lang.RuntimeException: DmaaPConsumer HTTP 404 NOT_FOUND, config: DmaapConsumerConfiguration{consumerId=*C12WRONG*, ...}     ...
-    \...     |ERROR     |Polling for file ready message failed, exception: java.lang.RuntimeException: DmaaPConsumer HTTP 404 NOT_FOUND, config: DmaapConsumerConfiguration{consumerId=*C12WRONG*, ...}     ...
-    \...     |ERROR     |Polling for file ready message failed, exception: java.lang.RuntimeException: DmaaPConsumer HTTP 404 NOT_FOUND, config: DmaapConsumerConfiguration{consumerId=*C12WRONG*, ...}     ...
-    \...     |ERROR     |Polling for file ready message failed, exception: java.lang.RuntimeException: DmaaPConsumer HTTP 404 NOT_FOUND, config: DmaapConsumerConfiguration{consumerId=*C12WRONG*, ...}     ...
-    \...     |ERROR     |Polling for file ready message failed, exception: java.lang.RuntimeException: DmaaPConsumer HTTP 404 NOT_FOUND, config: DmaapConsumerConfiguration{consumerId=*C12WRONG*, ...}     ...
-
--Wrong consumer consumerGroup:
-
-.. code-block:: json
-
-    org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks     |2019-04-24T15:15:51.869Z     |ERROR     |Polling for file ready message failed, exception: java.lang.RuntimeException: DmaaPConsumer HTTP 404 NOT_FOUND, config: DmaapConsumerConfiguration{consumerId=C12, **consumerGroup=OpenDcae-c12WRONG**, timeoutMs=-1, messageLimit=1, dmaapHostName=localhost, dmaapPortNumber=2222, dmaapTopicName=/events/unauthenticated.VES_NOTIFICATION_OUTPUT, dmaapProtocol=http, dmaapUserName=, dmaapUserPassword=, dmaapContentType=application/json, trustStorePath=change it, trustStorePasswordPath=change it, keyStorePath=change it, keyStorePasswordPath=change it, enableDmaapCertAuth=false}     |RequestID=880c4593-dc3f-422e-b9d7-4aeca8cbd0bf     |     |     |reactor-http-epoll-4     |
-    \...     |ERROR     |Polling for file ready message failed, exception: java.lang.RuntimeException: DmaaPConsumer HTTP 404 NOT_FOUND, config: DmaapConsumerConfiguration{..., consumerGroup=*OpenDcae-c12WRONG*, ...}     ...
-    \...     |ERROR     |Polling for file ready message failed, exception: java.lang.RuntimeException: DmaaPConsumer HTTP 404 NOT_FOUND, config: DmaapConsumerConfiguration{..., consumerGroup=*OpenDcae-c12WRONG*, ...}     ...
-    \...     |ERROR     |Polling for file ready message failed, exception: java.lang.RuntimeException: DmaaPConsumer HTTP 404 NOT_FOUND, config: DmaapConsumerConfiguration{..., consumerGroup=*OpenDcae-c12WRONG*, ...}     ...
-    \...     |ERROR     |Polling for file ready message failed, exception: java.lang.RuntimeException: DmaaPConsumer HTTP 404 NOT_FOUND, config: DmaapConsumerConfiguration{..., consumerGroup=*OpenDcae-c12WRONG*, ...}     ...
-    \...     |ERROR     |Polling for file ready message failed, exception: java.lang.RuntimeException: DmaaPConsumer HTTP 404 NOT_FOUND, config: DmaapConsumerConfiguration{..., consumerGroup=*OpenDcae-c12WRONG*, ...}     ...
-
--Wrong consumer timeoutMs (not a numeric value):
-
-.. code-block:: json
-
-    org.onap.dcaegen2.collectors.datafile.configuration.AppConfig     |2019-04-24T15:23:04.674Z     |ERROR     |Problem with loading configuration, file: /opt/app/datafile/config/datafile_endpoints.json     |RequestID=215c39ed-d54e-44a2-9a10-08539e645801     |java.lang.NumberFormatException: **For input string: "WRONG"**\n\tat java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)\n\tat java.lang.Integer.parseInt(Integer.java:580)\n\tat java.lang.Integer.parseInt(Integer.java:615)\n\tat com.google.gson.JsonPrimitive.getAsInt(JsonPrimitive.java:264)\n\tat com.google.gson.internal.bind.JsonTreeReader.nextInt(JsonTreeReader.java:243)\n\tat com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:226)\n\t... 20 common frames omitted\nWrapped by: com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: **For input string: "WRONG"**\n\tat com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:228)\n\tat com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:218)\n\tat org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.GsonAdaptersDmaapConsumerConfiguration$DmaapConsumerConfigurationTypeAdapter.readInTimeoutMs(GsonAdaptersDmaapConsumerConfiguration.java:219)\n\tat org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.GsonAdaptersDmaapConsumerConfiguration$DmaapConsumerConfigurationTypeAdapter.eachAttribute(GsonAdaptersDmaapConsumerConfiguration.java:138)\n\tat org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.GsonAdaptersDmaapConsumerConfiguration$DmaapConsumerConfigurationTypeAdapter.readDmaapConsumerConfiguration(GsonAdaptersDmaapConsumerConfiguration.java:116)\n\tat org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.GsonAdaptersDmaapConsumerConfiguration$DmaapConsumerConfigurationTypeAdapter.read(GsonAdaptersDmaapConsumerConfiguration.java:66)\n\tat org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.GsonAdaptersDmaapConsumerConfiguration$DmaapConsumerConfigurationTypeAdapter.read(GsonAdaptersDmaapConsumerConfiguration.java:31)\n\tat com.google.gson.Gson.fromJson(Gson.java:927)\n\tat com.google.gson.Gson.fromJson(Gson.java:994)\n\tat com.google.gson.Gson.fromJson(Gson.java:967)\n\tat org.onap.dcaegen2.collectors.datafile.configuration.AppConfig.deserializeType(AppConfig.java:130)\n\tat org.onap.dcaegen2.collectors.datafile.configuration.AppConfig.loadConfigurationFromFile(AppConfig.java:96)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks.executeDatafileMainTask(ScheduledTasks.java:91)\n\tat org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n     |     |pool-3-thread-1     |
-    org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks     |2019-04-24T15:23:04.677Z     |ERROR     |Unexpected exception: java.lang.NullPointerException     |RequestID=215c39ed-d54e-44a2-9a10-08539e645801     |java.lang.NullPointerException: null\n\tat org.onap.dcaegen2.collectors.datafile.service.DmaapWebClient.fromConfiguration(DmaapWebClient.java:54)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.DMaaPMessageConsumer.createHttpClient(DMaaPMessageConsumer.java:74)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.DMaaPMessageConsumer.<init>(DMaaPMessageConsumer.java:48)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks.createConsumerTask(ScheduledTasks.java:157)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks.fetchMoreFileReadyMessages(ScheduledTasks.java:247)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks.createMainTask(ScheduledTasks.java:108)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks.executeDatafileMainTask(ScheduledTasks.java:92)\n\tat org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n     |     |pool-3-thread-1     |
-    \...configuration.AppConfig     ...     |ERROR     |Problem with loading configuration, file: /opt/app/datafile/config/datafile_endpoints.json     ...     |java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ... java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ...
-    \...tasks.ScheduledTasks     ...     |ERROR     |Unexpected exception: java.lang.NullPointerException     ...
-    \...configuration.AppConfig     ...     |ERROR     |Problem with loading configuration, file: /opt/app/datafile/config/datafile_endpoints.json     ...     |java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ... java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ...
-    \...tasks.ScheduledTasks     ...     |ERROR     |Unexpected exception: java.lang.NullPointerException     ...
-    \...configuration.AppConfig     ...     |ERROR     |Problem with loading configuration, file: /opt/app/datafile/config/datafile_endpoints.json     ...     |java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ... java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ...
-    \...tasks.ScheduledTasks     ...     |ERROR     |Unexpected exception: java.lang.NullPointerException     ...
-    \...configuration.AppConfig     ...     |ERROR     |Problem with loading configuration, file: /opt/app/datafile/config/datafile_endpoints.json     ...     |java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ... java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ...
-    \...tasks.ScheduledTasks     ...     |ERROR     |Unexpected exception: java.lang.NullPointerException     ...
-    \...configuration.AppConfig     ...     |ERROR     |Problem with loading configuration, file: /opt/app/datafile/config/datafile_endpoints.json     ...     |java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ... java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ...
-    \...tasks.ScheduledTasks     ...     |ERROR     |Unexpected exception: java.lang.NullPointerException     ...
-
--Wrong consumer messageLimit:
-
-.. code-block:: json
-
-    org.onap.dcaegen2.collectors.datafile.configuration.AppConfig     |2019-04-24T15:27:40.433Z     |ERROR     |Problem with loading configuration, file: /opt/app/datafile/config/datafile_endpoints.json     |RequestID=69974429-d80a-4333-a16c-eae7588905a9     |java.lang.NumberFormatException: **For input string: "WRONG"**\n\tat java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)\n\tat java.lang.Integer.parseInt(Integer.java:580)\n\tat java.lang.Integer.parseInt(Integer.java:615)\n\tat com.google.gson.JsonPrimitive.getAsInt(JsonPrimitive.java:264)\n\tat com.google.gson.internal.bind.JsonTreeReader.nextInt(JsonTreeReader.java:243)\n\tat com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:226)\n\t... 20 common frames omitted\nWrapped by: com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: **For input string: "WRONG"**\n\tat com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:228)\n\tat com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:218)\n\tat org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.GsonAdaptersDmaapConsumerConfiguration$DmaapConsumerConfigurationTypeAdapter.readInMessageLimit(GsonAdaptersDmaapConsumerConfiguration.java:225)\n\tat org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.GsonAdaptersDmaapConsumerConfiguration$DmaapConsumerConfigurationTypeAdapter.eachAttribute(GsonAdaptersDmaapConsumerConfiguration.java:152)\n\tat org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.GsonAdaptersDmaapConsumerConfiguration$DmaapConsumerConfigurationTypeAdapter.readDmaapConsumerConfiguration(GsonAdaptersDmaapConsumerConfiguration.java:116)\n\tat org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.GsonAdaptersDmaapConsumerConfiguration$DmaapConsumerConfigurationTypeAdapter.read(GsonAdaptersDmaapConsumerConfiguration.java:66)\n\tat org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.config.GsonAdaptersDmaapConsumerConfiguration$DmaapConsumerConfigurationTypeAdapter.read(GsonAdaptersDmaapConsumerConfiguration.java:31)\n\tat com.google.gson.Gson.fromJson(Gson.java:927)\n\tat com.google.gson.Gson.fromJson(Gson.java:994)\n\tat com.google.gson.Gson.fromJson(Gson.java:967)\n\tat org.onap.dcaegen2.collectors.datafile.configuration.AppConfig.deserializeType(AppConfig.java:130)\n\tat org.onap.dcaegen2.collectors.datafile.configuration.AppConfig.loadConfigurationFromFile(AppConfig.java:96)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks.executeDatafileMainTask(ScheduledTasks.java:91)\n\tat org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n     |     |pool-3-thread-1     |
-    org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks     |2019-04-24T15:27:40.436Z     |ERROR     |Unexpected exception: java.lang.NullPointerException     |RequestID=69974429-d80a-4333-a16c-eae7588905a9     |java.lang.NullPointerException: null\n\tat org.onap.dcaegen2.collectors.datafile.service.DmaapWebClient.fromConfiguration(DmaapWebClient.java:54)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.DMaaPMessageConsumer.createHttpClient(DMaaPMessageConsumer.java:74)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.DMaaPMessageConsumer.<init>(DMaaPMessageConsumer.java:48)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks.createConsumerTask(ScheduledTasks.java:157)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks.fetchMoreFileReadyMessages(ScheduledTasks.java:247)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks.createMainTask(ScheduledTasks.java:108)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks.executeDatafileMainTask(ScheduledTasks.java:92)\n\tat org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n     |     |pool-3-thread-1     |
-    \...configuration.AppConfig     ...     |ERROR     |Problem with loading configuration, file: /opt/app/datafile/config/datafile_endpoints.json     ...     |java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ... java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ...
-    \...tasks.ScheduledTasks     ...     |ERROR     |Unexpected exception: java.lang.NullPointerException     ...
-    \...configuration.AppConfig     ...     |ERROR     |Problem with loading configuration, file: /opt/app/datafile/config/datafile_endpoints.json     ...     |java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ... java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ...
-    \...tasks.ScheduledTasks     ...     |ERROR     |Unexpected exception: java.lang.NullPointerException     ...
-    \...configuration.AppConfig     ...     |ERROR     |Problem with loading configuration, file: /opt/app/datafile/config/datafile_endpoints.json     ...     |java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ... java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ...
-    \...tasks.ScheduledTasks     ...     |ERROR     |Unexpected exception: java.lang.NullPointerException     ...
-    \...configuration.AppConfig     ...     |ERROR     |Problem with loading configuration, file: /opt/app/datafile/config/datafile_endpoints.json     ...     |java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ... java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ...
-    \...tasks.ScheduledTasks     ...     |ERROR     |Unexpected exception: java.lang.NullPointerException     ...
-    \...configuration.AppConfig     ...     |ERROR     |Problem with loading configuration, file: /opt/app/datafile/config/datafile_endpoints.json     ...     |java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ... java.lang.NumberFormatException: For input string: *"WRONG"*\n\tat ...
-    \...tasks.ScheduledTasks     ...     |ERROR     |Unexpected exception: java.lang.NullPointerException     ...
-
--Wrong producer dmaapHostName:
-
-.. code-block:: json
-
-    org.onap.dcaegen2.collectors.datafile.tasks.PublishedChecker     |2019-04-24T15:33:00.097Z     |WARN     |Unable to check if file has been published, file: A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |RequestID=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |java.net.UnknownHostException: **WRONGlocalhost**: Try again\n\tat java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)\n\tat java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:929)\n\tat java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1324)\n\tat java.net.InetAddress.getAllByName0(InetAddress.java:1277)\n\tat java.net.InetAddress.getAllByName(InetAddress.java:1193)\n\tat java.net.InetAddress.getAllByName(InetAddress.java:1127)\n\tat org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45)\n\tat org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$InternalAddressResolver.resolveRemoteAddress(PoolingNHttpClientConnectionManager.java:664)\n\tat org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$InternalAddressResolver.resolveRemoteAddress(PoolingNHttpClientConnectionManager.java:635)\n\tat org.apache.http.nio.pool.AbstractNIOConnPool.processPendingRequest(AbstractNIOConnPool.java:474)\n\tat org.apache.http.nio.pool.AbstractNIOConnPool.lease(AbstractNIOConnPool.java:280)\n\tat org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.requestConnection(PoolingNHttpClientConnectionManager.java:295)\n\tat org.apache.http.impl.nio.client.AbstractClientExchangeHandler.requestConnection(AbstractClientExchangeHandler.java:377)\n\tat org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.start(DefaultClientExchangeHandlerImpl.java:129)\n\tat org.apache.http.impl.nio.client.InternalHttpAsyncClient.execute(InternalHttpAsyncClient.java:141)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:75)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:108)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:92)\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithCustomTimeout(DmaapProducerHttpClient.java:119)\n\t... 23 common frames omitted\nWrapped by: java.util.concurrent.ExecutionException: java.net.UnknownHostException: **WRONGlocalhost**: Try again\n\tat org.apache.http.concurrent.BasicFuture.getResult(BasicFuture.java:71)\n\tat org.apache.http.concurrent.BasicFuture.get(BasicFuture.java:84)\n\tat org.apache.http.impl.nio.client.FutureWrapper.get(FutureWrapper.java:70)\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithCustomTimeout(DmaapProducerHttpClient.java:120)\n\t... 23 common frames omitted\nWrapped by: org.onap.dcaegen2.collectors.datafile.exceptions.DatafileTaskException: Unable to create web client.\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithCustomTimeout(DmaapProducerHttpClient.java:124)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.PublishedChecker.isFilePublished(PublishedChecker.java:82)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks.shouldBePublished(ScheduledTasks.java:194)\n\tat reactor.core.publisher.FluxFilter$FilterSubscriber.onNext(FluxFilter.java:93)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmitScalar(FluxFlatMap.java:449)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:384)\n\tat reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:192)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:664)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:540)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapInner.onSubscribe(FluxFlatMap.java:924)\n\tat reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:139)\n\tat reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:63)\n\tat reactor.core.publisher.Flux.subscribe(Flux.java:7743)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:389)\n\tat reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.runAsync(FluxPublishOn.java:398)\n\tat reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.run(FluxPublishOn.java:484)\n\tat reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)\n\tat reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n     |     |FileCollectorWorker-2     |
-    org.onap.dcaegen2.collectors.datafile.ftp.FtpsClient     |2019-04-24T15:33:00.275Z     |WARN     |Local file /tmp/onap_datafile/A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz already created     |RequestID=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |     |     |FileCollectorWorker-2     |
-    org.onap.dcaegen2.collectors.datafile.tasks.DataRouterPublisher     |2019-04-24T15:33:00.429Z     |WARN     |Unable to send file to DataRouter. Data: /tmp/onap_datafile/A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |RequestID=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |java.net.UnknownHostException: **WRONGlocalhost**\n\tat java.net.InetAddress.getAllByName0(InetAddress.java:1281)\n\tat java.net.InetAddress.getAllByName(InetAddress.java:1193)\n\tat java.net.InetAddress.getAllByName(InetAddress.java:1127)\n\tat org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45)\n\tat org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$InternalAddressResolver.resolveRemoteAddress(PoolingNHttpClientConnectionManager.java:664)\n\tat org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$InternalAddressResolver.resolveRemoteAddress(PoolingNHttpClientConnectionManager.java:635)\n\tat org.apache.http.nio.pool.AbstractNIOConnPool.processPendingRequest(AbstractNIOConnPool.java:474)\n\tat org.apache.http.nio.pool.AbstractNIOConnPool.lease(AbstractNIOConnPool.java:280)\n\tat org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.requestConnection(PoolingNHttpClientConnectionManager.java:295)\n\tat org.apache.http.impl.nio.client.AbstractClientExchangeHandler.requestConnection(AbstractClientExchangeHandler.java:377)\n\tat org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.start(DefaultClientExchangeHandlerImpl.java:129)\n\tat org.apache.http.impl.nio.client.InternalHttpAsyncClient.execute(InternalHttpAsyncClient.java:141)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:75)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:108)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:92)\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithRedirect(DmaapProducerHttpClient.java:92)\n\t... 61 common frames omitted\nWrapped by: java.util.concurrent.ExecutionException: java.net.UnknownHostException: **WRONGlocalhost**\n\tat org.apache.http.concurrent.BasicFuture.getResult(BasicFuture.java:71)\n\tat org.apache.http.concurrent.BasicFuture.get(BasicFuture.java:84)\n\tat org.apache.http.impl.nio.client.FutureWrapper.get(FutureWrapper.java:70)\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithRedirect(DmaapProducerHttpClient.java:93)\n\t... 61 common frames omitted\nWrapped by: org.onap.dcaegen2.collectors.datafile.exceptions.DatafileTaskException: Unable to create web client.\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithRedirect(DmaapProducerHttpClient.java:97)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.DataRouterPublisher.publishFile(DataRouterPublisher.java:102)\n\tat reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:118)\n\tat reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1505)\n\tat reactor.core.publisher.MonoProcessor.onNext(MonoProcessor.java:389)\n\tat reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2070)\n\tat reactor.core.publisher.MonoProcessor.onSubscribe(MonoProcessor.java:399)\n\tat reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.MonoProcessor.add(MonoProcessor.java:531)\n\tat reactor.core.publisher.MonoProcessor.subscribe(MonoProcessor.java:444)\n\tat reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:60)\n\tat reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:60)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:85)\n\tat reactor.core.publisher.MonoRetryWhen.subscribe(MonoRetryWhen.java:50)\n\tat reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:389)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmit(FluxFlatMap.java:501)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapInner.onNext(FluxFlatMap.java:943)\n\tat reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:73)\n\tat reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:89)\n\tat reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onNext(FluxRetryWhen.java:145)\n\tat reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1505)\n\tat reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:144)\n\tat reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1505)\n\tat reactor.core.publisher.MonoProcessor.onNext(MonoProcessor.java:389)\n\tat reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2070)\n\tat reactor.core.publisher.MonoProcessor.onSubscribe(MonoProcessor.java:399)\n\tat reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.MonoProcessor.add(MonoProcessor.java:531)\n\tat reactor.core.publisher.MonoProcessor.subscribe(MonoProcessor.java:444)\n\tat reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:60)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:85)\n\tat reactor.core.publisher.MonoRetryWhen.subscribe(MonoRetryWhen.java:50)\n\tat reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:389)\n\tat reactor.core.publisher.FluxFilter$FilterSubscriber.onNext(FluxFilter.java:107)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmitScalar(FluxFlatMap.java:449)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:384)\n\tat reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:192)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:664)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:540)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapInner.onSubscribe(FluxFlatMap.java:924)\n\tat reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:139)\n\tat reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:63)\n\tat reactor.core.publisher.Flux.subscribe(Flux.java:7743)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:389)\n\tat reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.runAsync(FluxPublishOn.java:398)\n\tat reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.run(FluxPublishOn.java:484)\n\tat reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)\n\tat reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n     |     |FileCollectorWorker-2     |
-    \...tasks.DataRouterPublisher     ...     |WARN     |Unable to send file to DataRouter. Data: ...     |java.net.UnknownHostException: *WRONGlocalhost*\n\tat ... java.net.UnknownHostException: *WRONGlocalhost*\n\tat ... Unable to create web client.\n\tat ...
-    \...tasks.DataRouterPublisher     ...     |WARN     |Unable to send file to DataRouter. Data: ...     |java.net.UnknownHostException: *WRONGlocalhost*\n\tat ... java.net.UnknownHostException: *WRONGlocalhost*\n\tat ... Unable to create web client.\n\tat ...
-    org.onap.dcaegen2.collectors.datafile.tasks.DataRouterPublisher     |2019-04-24T15:33:18.558Z     |WARN     |Unable to send file to DataRouter. Data: /tmp/onap_datafile/A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |RequestID=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |java.net.UnknownHostException: **WRONGlocalhost**: Try again\n\tat java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)\n\tat java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:929)\n\tat java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1324)\n\tat java.net.InetAddress.getAllByName0(InetAddress.java:1277)\n\tat java.net.InetAddress.getAllByName(InetAddress.java:1193)\n\tat java.net.InetAddress.getAllByName(InetAddress.java:1127)\n\tat org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45)\n\tat org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$InternalAddressResolver.resolveRemoteAddress(PoolingNHttpClientConnectionManager.java:664)\n\tat org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$InternalAddressResolver.resolveRemoteAddress(PoolingNHttpClientConnectionManager.java:635)\n\tat org.apache.http.nio.pool.AbstractNIOConnPool.processPendingRequest(AbstractNIOConnPool.java:474)\n\tat org.apache.http.nio.pool.AbstractNIOConnPool.lease(AbstractNIOConnPool.java:280)\n\tat org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.requestConnection(PoolingNHttpClientConnectionManager.java:295)\n\tat org.apache.http.impl.nio.client.AbstractClientExchangeHandler.requestConnection(AbstractClientExchangeHandler.java:377)\n\tat org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.start(DefaultClientExchangeHandlerImpl.java:129)\n\tat org.apache.http.impl.nio.client.InternalHttpAsyncClient.execute(InternalHttpAsyncClient.java:141)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:75)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:108)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:92)\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithRedirect(DmaapProducerHttpClient.java:92)\n\t... 20 common frames omitted\nWrapped by: java.util.concurrent.ExecutionException: java.net.UnknownHostException: **WRONGlocalhost**: Try again\n\tat org.apache.http.concurrent.BasicFuture.getResult(BasicFuture.java:71)\n\tat org.apache.http.concurrent.BasicFuture.get(BasicFuture.java:84)\n\tat org.apache.http.impl.nio.client.FutureWrapper.get(FutureWrapper.java:70)\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithRedirect(DmaapProducerHttpClient.java:93)\n\t... 20 common frames omitted\nWrapped by: org.onap.dcaegen2.collectors.datafile.exceptions.DatafileTaskException: Unable to create web client.\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithRedirect(DmaapProducerHttpClient.java:97)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.DataRouterPublisher.publishFile(DataRouterPublisher.java:102)\n\tat reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:118)\n\tat reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1505)\n\tat reactor.core.publisher.MonoProcessor.subscribe(MonoProcessor.java:457)\n\tat reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:60)\n\tat reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:60)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.resubscribe(FluxRetryWhen.java:183)\n\tat reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onNext(FluxRetryWhen.java:229)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmit(FluxFlatMap.java:501)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapInner.onNext(FluxFlatMap.java:943)\n\tat reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:117)\n\tat reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:50)\n\tat reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:27)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n     |     |parallel-204     |
-    \...tasks.DataRouterPublisher     ...     |WARN     |Unable to send file to DataRouter. Data: ...     |java.net.UnknownHostException: *WRONGlocalhost*\n\tat ... java.net.UnknownHostException: *WRONGlocalhost*\n\tat ... Unable to create web client.\n\tat ...
-    \...tasks.DataRouterPublisher     ...     |WARN     |Unable to send file to DataRouter. Data: ...     |java.net.UnknownHostException: *WRONGlocalhost*: Try again\n\tat ... java.net.UnknownHostException: *WRONGlocalhost*: Try again\n\tat ... Unable to create web client.\n\tat ...
-    org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks     |2019-04-24T15:33:57.340Z     |ERROR     |File publishing failed: FilePublishInformation{productName=RnNode, vendorName=Ericsson, lastEpochMicrosec=8745745764578, sourceName=PNF0, startEpochMicrosec=8745745764578, timeZoneOffset=UTC+05.30, name=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz, location=ftps://onap:pano@localhost:21/A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz, internalLocation=/tmp/onap_datafile/A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz, compression=gzip, fileFormatType=org.3GPP.32.435#measCollec, fileFormatVersion=V10, context={RequestID=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz}}     |RequestID=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |     |     |parallel-206     |
-
--Wrong producer dmaapPortNumber:
-
-.. code-block:: json
-
-    org.onap.dcaegen2.collectors.datafile.tasks.PublishedChecker     |2019-04-24T15:38:24.806Z     |WARN     |Unable to check if file has been published, file: A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |RequestID=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |java.net.ConnectException: Connection refused\n\tat sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)\n\tat sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)\n\tat org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvent(DefaultConnectingIOReactor.java:171)\n\tat org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvents(DefaultConnectingIOReactor.java:145)\n\tat org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:348)\n\tat org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:221)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64)\n\t... 1 common frames omitted\nWrapped by: java.util.concurrent.ExecutionException: java.net.ConnectException: Connection refused\n\tat org.apache.http.concurrent.BasicFuture.getResult(BasicFuture.java:71)\n\tat org.apache.http.concurrent.BasicFuture.get(BasicFuture.java:84)\n\tat org.apache.http.impl.nio.client.FutureWrapper.get(FutureWrapper.java:70)\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithCustomTimeout(DmaapProducerHttpClient.java:120)\n\t... 23 common frames omitted\nWrapped by: org.onap.dcaegen2.collectors.datafile.exceptions.DatafileTaskException: Unable to create web client.\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithCustomTimeout(DmaapProducerHttpClient.java:124)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.PublishedChecker.isFilePublished(PublishedChecker.java:82)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks.shouldBePublished(ScheduledTasks.java:194)\n\tat reactor.core.publisher.FluxFilter$FilterSubscriber.onNext(FluxFilter.java:93)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmitScalar(FluxFlatMap.java:449)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:384)\n\tat reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:192)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:664)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:540)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapInner.onSubscribe(FluxFlatMap.java:924)\n\tat reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:139)\n\tat reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:63)\n\tat reactor.core.publisher.Flux.subscribe(Flux.java:7743)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:389)\n\tat reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.runAsync(FluxPublishOn.java:398)\n\tat reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.run(FluxPublishOn.java:484)\n\tat reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)\n\tat reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n     |     |FileCollectorWorker-2     |
-    org.onap.dcaegen2.collectors.datafile.ftp.FtpsClient     |2019-04-24T15:38:24.972Z     |WARN     |Local file /tmp/onap_datafile/A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz already created     |RequestID=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |     |     |FileCollectorWorker-2     |
-    org.onap.dcaegen2.collectors.datafile.tasks.DataRouterPublisher     |2019-04-24T15:38:25.146Z     |WARN     |Unable to send file to DataRouter. Data: /tmp/onap_datafile/A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |RequestID=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |java.net.ConnectException: Connection refused\n\tat sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)\n\tat sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)\n\tat org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvent(DefaultConnectingIOReactor.java:171)\n\tat org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvents(DefaultConnectingIOReactor.java:145)\n\tat org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:348)\n\tat org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:221)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64)\n\t... 1 common frames omitted\nWrapped by: java.util.concurrent.ExecutionException: java.net.ConnectException: Connection refused\n\tat org.apache.http.concurrent.BasicFuture.getResult(BasicFuture.java:71)\n\tat org.apache.http.concurrent.BasicFuture.get(BasicFuture.java:84)\n\tat org.apache.http.impl.nio.client.FutureWrapper.get(FutureWrapper.java:70)\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithRedirect(DmaapProducerHttpClient.java:93)\n\t... 61 common frames omitted\nWrapped by: org.onap.dcaegen2.collectors.datafile.exceptions.DatafileTaskException: Unable to create web client.\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithRedirect(DmaapProducerHttpClient.java:97)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.DataRouterPublisher.publishFile(DataRouterPublisher.java:102)\n\tat reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:118)\n\tat reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1505)\n\tat reactor.core.publisher.MonoProcessor.onNext(MonoProcessor.java:389)\n\tat reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2070)\n\tat reactor.core.publisher.MonoProcessor.onSubscribe(MonoProcessor.java:399)\n\tat reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.MonoProcessor.add(MonoProcessor.java:531)\n\tat reactor.core.publisher.MonoProcessor.subscribe(MonoProcessor.java:444)\n\tat reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:60)\n\tat reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:60)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:85)\n\tat reactor.core.publisher.MonoRetryWhen.subscribe(MonoRetryWhen.java:50)\n\tat reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:389)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmit(FluxFlatMap.java:501)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapInner.onNext(FluxFlatMap.java:943)\n\tat reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:73)\n\tat reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:89)\n\tat reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onNext(FluxRetryWhen.java:145)\n\tat reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1505)\n\tat reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:144)\n\tat reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1505)\n\tat reactor.core.publisher.MonoProcessor.onNext(MonoProcessor.java:389)\n\tat reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2070)\n\tat reactor.core.publisher.MonoProcessor.onSubscribe(MonoProcessor.java:399)\n\tat reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.MonoProcessor.add(MonoProcessor.java:531)\n\tat reactor.core.publisher.MonoProcessor.subscribe(MonoProcessor.java:444)\n\tat reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:60)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:85)\n\tat reactor.core.publisher.MonoRetryWhen.subscribe(MonoRetryWhen.java:50)\n\tat reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:389)\n\tat reactor.core.publisher.FluxFilter$FilterSubscriber.onNext(FluxFilter.java:107)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmitScalar(FluxFlatMap.java:449)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:384)\n\tat reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:192)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:664)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:540)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapInner.onSubscribe(FluxFlatMap.java:924)\n\tat reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:139)\n\tat reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:63)\n\tat reactor.core.publisher.Flux.subscribe(Flux.java:7743)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:389)\n\tat reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.runAsync(FluxPublishOn.java:398)\n\tat reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.run(FluxPublishOn.java:484)\n\tat reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)\n\tat reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n     |     |FileCollectorWorker-2     |
-    \...tasks.DataRouterPublisher     ...     |WARN     |Unable to send file to DataRouter. Data: ...     |java.net.ConnectException: Connection refused\n\tat ... Connection refused\n\tat ... Unable to create web client.\n\tat ...
-    \...tasks.DataRouterPublisher     ...     |WARN     |Unable to send file to DataRouter. Data: ...     |java.net.ConnectException: Connection refused\n\tat ... Connection refused\n\tat ... Unable to create web client.\n\tat ...
-    \...tasks.DataRouterPublisher     ...     |WARN     |Unable to send file to DataRouter. Data: ...     |java.net.ConnectException: Connection refused\n\tat ... Connection refused\n\tat ... Unable to create web client.\n\tat ...
-    \...tasks.DataRouterPublisher     ...     |WARN     |Unable to send file to DataRouter. Data: ...     |java.net.ConnectException: Connection refused\n\tat ... Connection refused\n\tat ... Unable to create web client.\n\tat ...
-    \...tasks.DataRouterPublisher     ...     |WARN     |Unable to send file to DataRouter. Data: ...     |java.net.ConnectException: Connection refused\n\tat ... Connection refused\n\tat ... Unable to create web client.\n\tat ...
-    org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks     |2019-04-24T15:39:38.121Z     |ERROR     |File publishing failed: FilePublishInformation{productName=RnNode, vendorName=Ericsson, lastEpochMicrosec=8745745764578, sourceName=PNF0, startEpochMicrosec=8745745764578, timeZoneOffset=UTC+05.30, name=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz, location=ftps://onap:pano@localhost:21/A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz, internalLocation=/tmp/onap_datafile/A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz, compression=gzip, fileFormatType=org.3GPP.32.435#measCollec, fileFormatVersion=V10, context={RequestID=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz}}     |RequestID=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |     |     |parallel-206     |
-
--Producer dmaapTopicName:
-Not configurable.
-
--Wrong producer dmaapProtocol:
-
-.. code-block:: json
-
-    org.onap.dcaegen2.collectors.datafile.tasks.PublishedChecker     |2019-04-24T15:47:45.906Z     |WARN     |Unable to check if file has been published, file: A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |RequestID=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |org.apache.http.conn.UnsupportedSchemeException: **WRONGhttps** protocol is not supported\n\tat org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.requestConnection(PoolingNHttpClientConnectionManager.java:291)\n\tat org.apache.http.impl.nio.client.AbstractClientExchangeHandler.requestConnection(AbstractClientExchangeHandler.java:377)\n\tat org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.start(DefaultClientExchangeHandlerImpl.java:129)\n\tat org.apache.http.impl.nio.client.InternalHttpAsyncClient.execute(InternalHttpAsyncClient.java:141)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:75)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:108)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:92)\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithCustomTimeout(DmaapProducerHttpClient.java:119)\n\t... 23 common frames omitted\nWrapped by: java.util.concurrent.ExecutionException: org.apache.http.conn.UnsupportedSchemeException: **WRONGhttps** protocol is not supported\n\tat org.apache.http.concurrent.BasicFuture.getResult(BasicFuture.java:71)\n\tat org.apache.http.concurrent.BasicFuture.get(BasicFuture.java:84)\n\tat org.apache.http.impl.nio.client.FutureWrapper.get(FutureWrapper.java:70)\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithCustomTimeout(DmaapProducerHttpClient.java:120)\n\t... 23 common frames omitted\nWrapped by: org.onap.dcaegen2.collectors.datafile.exceptions.DatafileTaskException: Unable to create web client.\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithCustomTimeout(DmaapProducerHttpClient.java:124)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.PublishedChecker.isFilePublished(PublishedChecker.java:82)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks.shouldBePublished(ScheduledTasks.java:194)\n\tat reactor.core.publisher.FluxFilter$FilterSubscriber.onNext(FluxFilter.java:93)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmitScalar(FluxFlatMap.java:449)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:384)\n\tat reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:192)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:664)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:540)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapInner.onSubscribe(FluxFlatMap.java:924)\n\tat reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:139)\n\tat reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:63)\n\tat reactor.core.publisher.Flux.subscribe(Flux.java:7743)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:389)\n\tat reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.runAsync(FluxPublishOn.java:398)\n\tat reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.run(FluxPublishOn.java:484)\n\tat reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)\n\tat reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n     |     |FileCollectorWorker-2     |
-    org.onap.dcaegen2.collectors.datafile.ftp.FtpsClient     |2019-04-24T15:47:46.102Z     |WARN     |Local file /tmp/onap_datafile/A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz already created     |RequestID=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |     |     |FileCollectorWorker-2     |
-    org.onap.dcaegen2.collectors.datafile.tasks.DataRouterPublisher     |2019-04-24T15:47:46.227Z     |WARN     |Unable to send file to DataRouter. Data: /tmp/onap_datafile/A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |RequestID=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |org.apache.http.conn.UnsupportedSchemeException: **WRONGhttps** protocol is not supported\n\tat org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.requestConnection(PoolingNHttpClientConnectionManager.java:291)\n\tat org.apache.http.impl.nio.client.AbstractClientExchangeHandler.requestConnection(AbstractClientExchangeHandler.java:377)\n\tat org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.start(DefaultClientExchangeHandlerImpl.java:129)\n\tat org.apache.http.impl.nio.client.InternalHttpAsyncClient.execute(InternalHttpAsyncClient.java:141)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:75)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:108)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:92)\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithRedirect(DmaapProducerHttpClient.java:92)\n\t... 61 common frames omitted\nWrapped by: java.util.concurrent.ExecutionException: org.apache.http.conn.UnsupportedSchemeException: **WRONGhttps** protocol is not supported\n\tat org.apache.http.concurrent.BasicFuture.getResult(BasicFuture.java:71)\n\tat org.apache.http.concurrent.BasicFuture.get(BasicFuture.java:84)\n\tat org.apache.http.impl.nio.client.FutureWrapper.get(FutureWrapper.java:70)\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithRedirect(DmaapProducerHttpClient.java:93)\n\t... 61 common frames omitted\nWrapped by: org.onap.dcaegen2.collectors.datafile.exceptions.DatafileTaskException: Unable to create web client.\n\tat org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient.getDmaapProducerResponseWithRedirect(DmaapProducerHttpClient.java:97)\n\tat org.onap.dcaegen2.collectors.datafile.tasks.DataRouterPublisher.publishFile(DataRouterPublisher.java:102)\n\tat reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:118)\n\tat reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1505)\n\tat reactor.core.publisher.MonoProcessor.onNext(MonoProcessor.java:389)\n\tat reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2070)\n\tat reactor.core.publisher.MonoProcessor.onSubscribe(MonoProcessor.java:399)\n\tat reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.MonoProcessor.add(MonoProcessor.java:531)\n\tat reactor.core.publisher.MonoProcessor.subscribe(MonoProcessor.java:444)\n\tat reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:60)\n\tat reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:60)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:85)\n\tat reactor.core.publisher.MonoRetryWhen.subscribe(MonoRetryWhen.java:50)\n\tat reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:389)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmit(FluxFlatMap.java:501)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapInner.onNext(FluxFlatMap.java:943)\n\tat reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:73)\n\tat reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:89)\n\tat reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onNext(FluxRetryWhen.java:145)\n\tat reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1505)\n\tat reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:144)\n\tat reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1505)\n\tat reactor.core.publisher.MonoProcessor.onNext(MonoProcessor.java:389)\n\tat reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2070)\n\tat reactor.core.publisher.MonoProcessor.onSubscribe(MonoProcessor.java:399)\n\tat reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.MonoProcessor.add(MonoProcessor.java:531)\n\tat reactor.core.publisher.MonoProcessor.subscribe(MonoProcessor.java:444)\n\tat reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:60)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:85)\n\tat reactor.core.publisher.MonoRetryWhen.subscribe(MonoRetryWhen.java:50)\n\tat reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44)\n\tat reactor.core.publisher.Mono.subscribe(Mono.java:3695)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:389)\n\tat reactor.core.publisher.FluxFilter$FilterSubscriber.onNext(FluxFilter.java:107)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmitScalar(FluxFlatMap.java:449)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:384)\n\tat reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:192)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:664)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:540)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapInner.onSubscribe(FluxFlatMap.java:924)\n\tat reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:139)\n\tat reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:63)\n\tat reactor.core.publisher.Flux.subscribe(Flux.java:7743)\n\tat reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:389)\n\tat reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.runAsync(FluxPublishOn.java:398)\n\tat reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.run(FluxPublishOn.java:484)\n\tat reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)\n\tat reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n     |     |FileCollectorWorker-2     |
-    \...tasks.DataRouterPublisher     ...     |WARN     |Unable to send file to DataRouter. Data: ...     |org.apache.http.conn.UnsupportedSchemeException: *WRONGhttps* protocol is not supported\n\tat ... *WRONGhttps* protocol is not supported\n\tat ... Unable to create web client.\n\tat ...
-    \...tasks.DataRouterPublisher     ...     |WARN     |Unable to send file to DataRouter. Data: ...     |org.apache.http.conn.UnsupportedSchemeException: *WRONGhttps* protocol is not supported\n\tat ... *WRONGhttps* protocol is not supported\n\tat ... Unable to create web client.\n\tat ...
-    \...tasks.DataRouterPublisher     ...     |WARN     |Unable to send file to DataRouter. Data: ...     |org.apache.http.conn.UnsupportedSchemeException: *WRONGhttps* protocol is not supported\n\tat ... *WRONGhttps* protocol is not supported\n\tat ... Unable to create web client.\n\tat ...
-    \...tasks.DataRouterPublisher     ...     |WARN     |Unable to send file to DataRouter. Data: ...     |org.apache.http.conn.UnsupportedSchemeException: *WRONGhttps* protocol is not supported\n\tat ... *WRONGhttps* protocol is not supported\n\tat ... Unable to create web client.\n\tat ...
-    \...tasks.DataRouterPublisher     ...     |WARN     |Unable to send file to DataRouter. Data: ...     |org.apache.http.conn.UnsupportedSchemeException: *WRONGhttps* protocol is not supported\n\tat ... *WRONGhttps* protocol is not supported\n\tat ... Unable to create web client.\n\tat ...
-    org.onap.dcaegen2.collectors.datafile.tasks.ScheduledTasks     |2019-04-24T15:48:42.406Z     |ERROR     |File publishing failed: FilePublishInformation{productName=RnNode, vendorName=Ericsson, lastEpochMicrosec=8745745764578, sourceName=PNF0, startEpochMicrosec=8745745764578, timeZoneOffset=UTC+05.30, name=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz, location=ftps://onap:pano@localhost:21/A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz, internalLocation=/tmp/onap_datafile/A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz, compression=gzip, fileFormatType=org.3GPP.32.435#measCollec, fileFormatVersion=V10, context={RequestID=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz}}     |RequestID=A20000626.2315+0200-2330+0200_PNF0-0-1MB.tar.gz     |     |     |parallel-206     |
-
-.. Wrong producer dmaapUserName:
-.. No issue with the simulator, to be checked in cloud40.
-
-.. Wrong producer dmaapUserPassword:
-.. No issue with the simulator, to be checked in cloud40.
-
--Producer dmaapContentType:
-Not configurable.
-
--Security parameters:
-Not in use.
