summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
Diffstat (limited to 'services')
-rw-r--r--services/pom.xml17
-rw-r--r--services/services-engine/pom.xml17
-rw-r--r--services/services-engine/src/site-docs/adoc/fragments/config-example.adoc103
-rw-r--r--services/services-engine/src/site-docs/adoc/fragments/config-general-format.adoc65
-rw-r--r--services/services-engine/src/site-docs/adoc/fragments/config-interfaces-general.adoc124
-rw-r--r--services/services-engine/src/site-docs/adoc/fragments/config-service-parameters.adoc47
-rw-r--r--services/services-engine/src/site/asciidoc/config-example.adoc14
-rw-r--r--services/services-engine/src/site/asciidoc/config-general-format.adoc14
-rw-r--r--services/services-engine/src/site/asciidoc/config-interfaces-general.adoc14
-rw-r--r--services/services-engine/src/site/asciidoc/config-service-parameters.adoc14
-rw-r--r--services/services-engine/src/site/css/site.css100
-rw-r--r--services/services-engine/src/site/images/logos.pngbin0 -> 162383 bytes
-rw-r--r--services/services-engine/src/site/site.xml32
-rw-r--r--services/src/site/css/site.css100
-rw-r--r--services/src/site/images/logos.pngbin0 -> 162383 bytes
-rw-r--r--services/src/site/site.xml27
16 files changed, 688 insertions, 0 deletions
diff --git a/services/pom.xml b/services/pom.xml
index 031dd9c78..141cf6b9e 100644
--- a/services/pom.xml
+++ b/services/pom.xml
@@ -37,4 +37,21 @@
<modules>
<module>services-engine</module>
</modules>
+
+ <profiles>
+ <profile>
+ <id>apexSite</id>
+ <activation>
+ <property>
+ <name>apexSite</name>
+ </property>
+ </activation>
+ <distributionManagement>
+ <site>
+ <id>${project.artifactId}-site</id>
+ <url>${apex.adsite.prefix}/modules/${project.artifactId}/</url>
+ </site>
+ </distributionManagement>
+ </profile>
+ </profiles>
</project> \ No newline at end of file
diff --git a/services/services-engine/pom.xml b/services/services-engine/pom.xml
index 84765da4c..6ad0f5006 100644
--- a/services/services-engine/pom.xml
+++ b/services/services-engine/pom.xml
@@ -78,4 +78,21 @@
</resource>
</resources>
</build>
+
+ <profiles>
+ <profile>
+ <id>apexSite</id>
+ <activation>
+ <property>
+ <name>apexSite</name>
+ </property>
+ </activation>
+ <distributionManagement>
+ <site>
+ <id>${project.artifactId}-site</id>
+ <url>${apex.adsite.prefix}/modules/${project.parent.artifactId}/${project.artifactId}/</url>
+ </site>
+ </distributionManagement>
+ </profile>
+ </profiles>
</project> \ No newline at end of file
diff --git a/services/services-engine/src/site-docs/adoc/fragments/config-example.adoc b/services/services-engine/src/site-docs/adoc/fragments/config-example.adoc
new file mode 100644
index 000000000..dfbc397e9
--- /dev/null
+++ b/services/services-engine/src/site-docs/adoc/fragments/config-example.adoc
@@ -0,0 +1,103 @@
+//
+// ============LICENSE_START=======================================================
+// Copyright (C) 2016-2018 Ericsson. All rights reserved.
+// ================================================================================
+// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE
+// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode
+//
+// SPDX-License-Identifier: CC-BY-4.0
+// ============LICENSE_END=========================================================
+//
+// @author Sven van der Meer (sven.van.der.meer@ericsson.com)
+//
+
+== A configuration example
+
+The following example loads all available plug-ins.
+
+Events are consumed from a Websocket, APEX as client.
+Consumed event format is JSON.
+
+Events are produced to Kafka.
+Produced event format is XML.
+
+[source%nowrap,json]
+----
+{
+ "engineServiceParameters" : {
+ "name" : "MyApexEngine",
+ "version" : "0.0.1",
+ "id" : 45,
+ "instanceCount" : 4,
+ "deploymentPort" : 12345,
+ "policyModelFileName" : "examples/models/some-model.json",
+ "engineParameters" : {
+ "executorParameters" : {
+ "JAVASCRIPT" : {
+ "parameterClassName" :
+ "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters"
+ },
+ "JYTHON" : {
+ "parameterClassName" :
+ "org.onap.policy.apex.plugins.executor.jython.JythonExecutorParameters"
+ },
+ "JRUBY" : {
+ "parameterClassName" :
+ "org.onap.policy.apex.plugins.executor.jruby.JrubyExecutorParameters"
+ },
+ "JAVA" : {
+ "parameterClassName" :
+ "org.onap.policy.apex.plugins.executor.java.JavaExecutorParameters"
+ },
+ "MVEL" : {
+ "parameterClassName" :
+ "org.onap.policy.apex.plugins.executor.mvel.MVELExecutorParameters"
+ }
+ },
+ "contextParameters" : {
+ "parameterClassName" :
+ "org.onap.policy.apex.context.parameters.ContextParameters",
+ "schemaParameters" : {
+ "Avro":{
+ "parameterClassName" :
+ "org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters"
+ }
+ }
+ }
+ }
+ },
+ "producerCarrierTechnologyParameters" : {
+ "carrierTechnology" : "KAFKA",
+ "parameterClassName" :
+ "org.onap.policy.apex.plugins.event.carrier.kafka.KAFKACarrierTechnologyParameters",
+ "parameters" : {
+ "bootstrapServers" : "localhost:49092",
+ "acks" : "all",
+ "retries" : 0,
+ "batchSize" : 16384,
+ "lingerTime" : 1,
+ "bufferMemory" : 33554432,
+ "producerTopic" : "apex-out",
+ "keySerializer" : "org.apache.kafka.common.serialization.StringSerializer",
+ "valueSerializer" : "org.apache.kafka.common.serialization.StringSerializer"
+ }
+ },
+ "producerEventProtocolParameters" : {
+ "eventProtocol" : "XML",
+ "parameterClassName" :
+ "org.onap.policy.apex.plugins.event.protocol.xml.XMLEventProtocolParameters"
+ },
+ "consumerCarrierTechnologyParameters" : {
+ "carrierTechnology" : "WEBSOCKET",
+ "parameterClassName" :
+ "org.onap.policy.apex.plugins.event.carrier.websocket.WEBSOCKETCarrierTechnologyParameters",
+ "parameters" : {
+ "host" : "localhost",
+ "port" : 88888
+ }
+ },
+ "consumerEventProtocolParameters" : {
+ "eventProtocol" : "JSON"
+ }
+}
+----
diff --git a/services/services-engine/src/site-docs/adoc/fragments/config-general-format.adoc b/services/services-engine/src/site-docs/adoc/fragments/config-general-format.adoc
new file mode 100644
index 000000000..27e076701
--- /dev/null
+++ b/services/services-engine/src/site-docs/adoc/fragments/config-general-format.adoc
@@ -0,0 +1,65 @@
+//
+// ============LICENSE_START=======================================================
+// Copyright (C) 2016-2018 Ericsson. All rights reserved.
+// ================================================================================
+// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE
+// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode
+//
+// SPDX-License-Identifier: CC-BY-4.0
+// ============LICENSE_END=========================================================
+//
+// @author Sven van der Meer (sven.van.der.meer@ericsson.com)
+//
+
+== General Configuration Format
+
+The APEX configuration file is a JSON file containing a few main blocks for different parts of the configuration.
+Each block then holds the configuration details.
+The following code shows the main blocks:
+
+[source%nowrap,json]
+----
+{
+ "engineServiceParameters":{
+ ... // <1>
+ "engineParameters":{ <2>
+ "engineParameters":{...}, <3>
+ "contextParameters":{...} <4>
+ }
+ },
+ "eventInputParameters":{ <5>
+ "input1":{ <6>
+ "carrierTechnologyParameters":{...},
+ "eventProtocolParameters":{...}
+ },
+ "input2":{...}, <7>
+ "carrierTechnologyParameters":{...},
+ "eventProtocolParameters":{...}
+ },
+ ... // <8>
+ },
+ "eventOutputParameters":{ <9>
+ "output1":{ <10>
+ "carrierTechnologyParameters":{...},
+ "eventProtocolParameters":{...}
+ },
+ "output2":{ <11>
+ "carrierTechnologyParameters":{...},
+ "eventProtocolParameters":{...}
+ },
+ ... // <12>
+ }
+}
+----
+<1> main engine configuration
+<2> engine parameters for plugin configurations (execution environments and context handling)
+<3> engine specific parameters, mainly for executor plugins
+<4> context specific parameters, e.g. for context schemas, persistence, etc.
+<5> configuration of the input interface
+<6> an example input called `input1` with carrier technology and event protocol
+<7> an example input called `input2` with carrier technology and event protocol
+<8> any further input configuration
+<9> configuration of the output interface
+<10> an example output called `output1` with carrier technology and event protocol
+<11> an example output called `output2` with carrier technology and event protocol
+<12> any further output configuration
diff --git a/services/services-engine/src/site-docs/adoc/fragments/config-interfaces-general.adoc b/services/services-engine/src/site-docs/adoc/fragments/config-interfaces-general.adoc
new file mode 100644
index 000000000..54ffcca1a
--- /dev/null
+++ b/services/services-engine/src/site-docs/adoc/fragments/config-interfaces-general.adoc
@@ -0,0 +1,124 @@
+//
+// ============LICENSE_START=======================================================
+// Copyright (C) 2016-2018 Ericsson. All rights reserved.
+// ================================================================================
+// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE
+// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode
+//
+// SPDX-License-Identifier: CC-BY-4.0
+// ============LICENSE_END=========================================================
+//
+// @author Sven van der Meer (sven.van.der.meer@ericsson.com)
+//
+
+== Input and Output Interfaces
+
+An APEX engine has two main interfaces:
+
+- An _input_ interface to receive events: also known as ingress interface or consumer, receiving (consuming) events commonly named triggers, and
+- An _output_ interface to publish produced events: also known as egress interface or producer, sending (publishing) events commonly named actions or action events.
+
+The input and output interface is configured in terms of inputs and outputs, respectively.
+Each input and output is a combination of a carrier technology and an event protocol.
+Carrier technologies and event protocols are provided by plugins, each with its own specific configuration.
+Most carrier technologies can be configured for input as well as output.
+Most event protocols can be used for all carrier technologies.
+One exception is the JMS object event protocol, which can only be used for the JMS carrier technology.
+Some further restrictions apply (for instance for carrier technologies using bi- or uni-directional modes).
+
+Input and output interface can be configured separately, in isolation, with any number of carrier technologies.
+The resulting general configuration options are:
+
+- Input interface with one or more inputs
+ ** each input with a carrier technology and an event protocol
+ ** some inputs with optional synchronous mode
+ ** some event protocols with additional parameters
+- Output interface with one or more outputs
+ ** each output with a carrier technology and an event encoding
+ ** some outputs with optional synchronous mode
+ ** some event protocols with additional parameters
+
+The configuration for input and output is contained in `eventInputParameters` and `eventOutputParameters`, respectively.
+Inside here, one can configure any number of inputs and outputs.
+Each of them needs to have a unique identifier (name), the content of the name is free form.
+The example below shows a configuration for two inputs and two outputs.
+
+[source%nowrap,json]
+----
+"eventInputParameters": { <1>
+ "FirstConsumer": { <2>
+ "carrierTechnologyParameters" : {...}, <3>
+ "eventProtocolParameters":{...}, <4>
+ ... <5>
+ },
+ "SecondConsumer": { <6>
+ "carrierTechnologyParameters" : {...}, <7>
+ "eventProtocolParameters":{...}, <8>
+ ... <9>
+ },
+},
+"eventOutputParameters": { <10>
+ "FirstProducer": { <11>
+ "carrierTechnologyParameters":{...}, <12>
+ "eventProtocolParameters":{...}, <13>
+ ... <14>
+ },
+ "SecondProducer": { <15>
+ "carrierTechnologyParameters":{...}, <16>
+ "eventProtocolParameters":{...}, <17>
+ ... <18>
+ }
+}
+----
+<1> input interface configuration, APEX input plugins
+<2> first input called `FirstConsumer`
+<3> carrier technology for plugin
+<4> event protocol for plugin
+<5> any other input configuration (e.g. event name filter, see below)
+<6> second input called `SecondConsumer`
+<7> carrier technology for plugin
+<8> event protocol for plugin
+<9> any other plugin configuration
+<10> output interface configuration, APEX output plugins
+<11> first output called `FirstProducer`
+<12> carrier technology for plugin
+<13> event protocol for plugin
+<14> any other plugin configuration
+<15> second output called `SecondProducer`
+<16> carrier technology for plugin
+<17> event protocol for plugin
+<18> any other output configuration (e.g. event name filter, see below)
+
+=== Event Filters
+
+APEX will always send an event after a policy execution is finished.
+For a successful execution, the event sent is the output event created by the policy.
+In case the policy does not create an output event, APEX will create a new event with all input event fields plus an additional field `exceptionMessage` with an exception message.
+
+There are situations in which this auto-generated error event might not be required or wanted:
+
+* when a policy failing should not result in an event send out via an output interface
+* when the auto-generated event goes back in an APEX engine (or the same APEX engine), this can create endless loops
+* the auto-generated event should go to a special output interface or channel
+
+All of these situations are supported by a filter option using a wildecard (regular expression) configuration on APEX I/O interfaces.
+The parameter is called `eventNameFilter` and the value are link:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html[Java regular expressions] (a link:http://www.vogella.com/tutorials/JavaRegularExpressions/article.html[tutorial]).
+The following code shows some examples:
+
+[source%nowrap,json]
+----
+"eventInputParameters": {
+ "Input1": {
+ "carrierTechnologyParameters" : {...},
+ "eventProtocolParameters":{...},
+ "eventNameFilter" : "^E[Vv][Ee][Nn][Tt][0-9]004$" <1>
+ }
+},
+"eventOutputParameters": {
+ "Output1": {
+ "carrierTechnologyParameters":{...},
+ "eventProtocolParameters":{...},
+ "eventNameFilter" : "^E[Vv][Ee][Nn][Tt][0-9]104$" <2>
+ }
+}
+----
diff --git a/services/services-engine/src/site-docs/adoc/fragments/config-service-parameters.adoc b/services/services-engine/src/site-docs/adoc/fragments/config-service-parameters.adoc
new file mode 100644
index 000000000..d1b3fa3b9
--- /dev/null
+++ b/services/services-engine/src/site-docs/adoc/fragments/config-service-parameters.adoc
@@ -0,0 +1,47 @@
+//
+// ============LICENSE_START=======================================================
+// Copyright (C) 2016-2018 Ericsson. All rights reserved.
+// ================================================================================
+// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE
+// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode
+//
+// SPDX-License-Identifier: CC-BY-4.0
+// ============LICENSE_END=========================================================
+//
+// @author Sven van der Meer (sven.van.der.meer@ericsson.com)
+//
+
+== Engine Service Parameters
+
+The configuration provides a number of parameters to configure the engine.
+An example configuration with explanations of all options is shown below.
+
+[source%nowrap,json]
+----
+"engineServiceParameters" : {
+ "name" : "AADMApexEngine", // <1>
+ "version" : "0.0.1", // <2>
+ "id" : 45, // <3>
+ "instanceCount" : 4, // <4>
+ "deploymentPort" : 12345, // <5>
+ "policyModelFileName" : "examples/models/VPN/VPNPolicyModelJava.json", // <6>
+ "periodicEventPeriod": 1000, <7>
+ "engineParameters":{ <8>
+ "engineParameters":{...}, <9>
+ "contextParameters":{...} <10>
+ }
+}
+----
+<1> a name for the engine. The engine name is used to create a key in a runtime engine. An name matching the following regular expression can be used here: `[A-Za-z0-9\\-_\\.]+`
+<2> a version of the engine, use semantic versioning as explained here: link:http://semver.org/[Semantic Versioning]. This version is used in a runtime engine to create a version of the engine. For that reason, the version must match the following regular expression `[A-Z0-9.]+`
+<3> a numeric identifier for the engine
+<4> the number of threads (policy instances executed in parallel) the engine should use, use `1` for single threaded engines
+<5> the port for the deployment Websocket connection to the engine
+<6> the model file to load into the engine on startup (optional)
+<7> an optional timer for periodic policies, in milliseconds (a defined periodic policy will be executed every `X` milliseconds), not used of not set or `0`
+<8> engine parameters for plugin configurations (execution environments and context handling)
+<9> engine specific parameters, mainly for executor plugins
+<10> context specific parameters, e.g. for context schemas, persistence, etc.
+
+The model file is optional, it can also be specified via command line.
+In any case, make sure all execution and other required plug-ins for the loaded model are loaded as required.
diff --git a/services/services-engine/src/site/asciidoc/config-example.adoc b/services/services-engine/src/site/asciidoc/config-example.adoc
new file mode 100644
index 000000000..d429d2fb6
--- /dev/null
+++ b/services/services-engine/src/site/asciidoc/config-example.adoc
@@ -0,0 +1,14 @@
+//
+// ============LICENSE_START=======================================================
+// Copyright (C) 2016-2018 Ericsson. All rights reserved.
+// ================================================================================
+// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE
+// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode
+//
+// SPDX-License-Identifier: CC-BY-4.0
+// ============LICENSE_END=========================================================
+//
+// @author Sven van der Meer (sven.van.der.meer@ericsson.com)
+//
+
+include::{adsite-services-engine-dir}/site-docs/adoc/fragments/config-example.adoc[] \ No newline at end of file
diff --git a/services/services-engine/src/site/asciidoc/config-general-format.adoc b/services/services-engine/src/site/asciidoc/config-general-format.adoc
new file mode 100644
index 000000000..d7b0f50f0
--- /dev/null
+++ b/services/services-engine/src/site/asciidoc/config-general-format.adoc
@@ -0,0 +1,14 @@
+//
+// ============LICENSE_START=======================================================
+// Copyright (C) 2016-2018 Ericsson. All rights reserved.
+// ================================================================================
+// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE
+// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode
+//
+// SPDX-License-Identifier: CC-BY-4.0
+// ============LICENSE_END=========================================================
+//
+// @author Sven van der Meer (sven.van.der.meer@ericsson.com)
+//
+
+include::{adsite-services-engine-dir}/site-docs/adoc/fragments/config-general-format.adoc[] \ No newline at end of file
diff --git a/services/services-engine/src/site/asciidoc/config-interfaces-general.adoc b/services/services-engine/src/site/asciidoc/config-interfaces-general.adoc
new file mode 100644
index 000000000..d82894de7
--- /dev/null
+++ b/services/services-engine/src/site/asciidoc/config-interfaces-general.adoc
@@ -0,0 +1,14 @@
+//
+// ============LICENSE_START=======================================================
+// Copyright (C) 2016-2018 Ericsson. All rights reserved.
+// ================================================================================
+// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE
+// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode
+//
+// SPDX-License-Identifier: CC-BY-4.0
+// ============LICENSE_END=========================================================
+//
+// @author Sven van der Meer (sven.van.der.meer@ericsson.com)
+//
+
+include::{adsite-services-engine-dir}/site-docs/adoc/fragments/config-interfaces-general.adoc[] \ No newline at end of file
diff --git a/services/services-engine/src/site/asciidoc/config-service-parameters.adoc b/services/services-engine/src/site/asciidoc/config-service-parameters.adoc
new file mode 100644
index 000000000..b12c84a7d
--- /dev/null
+++ b/services/services-engine/src/site/asciidoc/config-service-parameters.adoc
@@ -0,0 +1,14 @@
+//
+// ============LICENSE_START=======================================================
+// Copyright (C) 2016-2018 Ericsson. All rights reserved.
+// ================================================================================
+// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE
+// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode
+//
+// SPDX-License-Identifier: CC-BY-4.0
+// ============LICENSE_END=========================================================
+//
+// @author Sven van der Meer (sven.van.der.meer@ericsson.com)
+//
+
+include::{adsite-services-engine-dir}/site-docs/adoc/fragments/config-service-parameters.adoc[] \ No newline at end of file
diff --git a/services/services-engine/src/site/css/site.css b/services/services-engine/src/site/css/site.css
new file mode 100644
index 000000000..ef8bd4d15
--- /dev/null
+++ b/services/services-engine/src/site/css/site.css
@@ -0,0 +1,100 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.0/css/font-awesome.css);
+
+
+/*************** Table definitions *******************/
+
+tableblock > .title, .tableblock > caption { line-height: 1.4; color: #7a2518; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; }
+
+.tableblock > caption { text-align: left; font-weight: bold; white-space: nowrap; overflow: visible; max-width: 0; }
+
+table.tableblock { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; }
+table.tableblock thead, table.tableblock tfoot { background: whitesmoke; font-weight: bold; }
+table.tableblock thead tr th, table.tableblock thead tr td, table tfoot tr th, table tfoot tr td { padding: 0.5em 0.625em 0.625em; font-size: inherit; color: #222222; text-align: left; }
+table.tableblock tr th, table.tableblock tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #222222; }
+table.tableblock tr.even, table.tableblock tr.alt, table.tableblock tr:nth-of-type(even) { background: #f9f9f9; }
+table.tableblock thead tr th, table.tableblock tfoot tr th, table.tableblock tbody tr td, table.tableblock tr td, table.tableblock tfoot tr td { display: table-cell; line-height: 1.6; }
+
+table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; }
+
+table.tableblock.grid-all { border-collapse: separate; border-spacing: 1px; -webkit-border-radius: 4px; border-radius: 4px; border-top: 1px solid #dddddd; border-bottom: 1px solid #dddddd; }
+
+table.tableblock.frame-topbot, table.tableblock.frame-none { border-left: 0; border-right: 0; }
+
+table.tableblock.frame-sides, table.tableblock.frame-none { border-top: 0; border-bottom: 0; }
+
+table.tableblock td .paragraph:last-child p, table.tableblock td > p:last-child { margin-bottom: 0; }
+
+th.tableblock.halign-left, td.tableblock.halign-left { text-align: left; }
+
+th.tableblock.halign-right, td.tableblock.halign-right { text-align: right; }
+
+th.tableblock.halign-center, td.tableblock.halign-center { text-align: center; }
+
+th.tableblock.valign-top, td.tableblock.valign-top { vertical-align: top; }
+
+th.tableblock.valign-bottom, td.tableblock.valign-bottom { vertical-align: bottom; }
+
+th.tableblock.valign-middle, td.tableblock.valign-middle { vertical-align: middle; }
+
+p.tableblock.header { color: #222222; font-weight: bold; }
+
+
+
+/*************** KBD Macro definitions *******************/
+
+kbd.keyseq { color: #555555; }
+
+kbd:not(.keyseq) { display: inline-block; color: #222222; font-size: 0.75em; line-height: 1.4; background-color: #F7F7F7; border: 1px solid #ccc; -webkit-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; margin: -0.15em 0.15em 0 0.15em; padding: 0.2em 0.6em 0.2em 0.5em; vertical-align: middle; white-space: nowrap; }
+
+kbd kbd:first-child { margin-left: 0; }
+
+kbd kbd:last-child { margin-right: 0; }
+
+
+/*************** Admontion Blocks definitions *******************/
+.admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .videoblock > .title, .listingblock > .title, .literalblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-align: left; font-weight: bold; }
+
+.admonitionblock > table { border: 0; background: none; width: 100%; margin-top: 1em; margin-bottom: 1em;}
+.admonitionblock > table td.icon { text-align: center; width: 80px; }
+.admonitionblock > table td.icon img { max-width: none; }
+.admonitionblock > table td.icon .title { font-weight: bold; text-transform: uppercase; }
+.admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #6f6f6f; }
+.admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; }
+
+.admonitionblock td.icon [class^="fa icon-"]:before {font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
+.admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #005498; color: #003f72; }
+.admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; }
+.admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; }
+.admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; }
+.admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; }
+
+
+
+/*************** Misc definitions *******************/
+
+*:not(pre) > code { font-size: 0.9375em; padding: 1px 3px 0; white-space: nowrap; background-color: #f2f2f2; border: 1px solid #cccccc; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: none; }
+
+pre, pre > code { line-height: 1.4; color: inherit; font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; }
+
+code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; color: #6d180b; }
+
diff --git a/services/services-engine/src/site/images/logos.png b/services/services-engine/src/site/images/logos.png
new file mode 100644
index 000000000..915d6e59d
--- /dev/null
+++ b/services/services-engine/src/site/images/logos.png
Binary files differ
diff --git a/services/services-engine/src/site/site.xml b/services/services-engine/src/site/site.xml
new file mode 100644
index 000000000..c9a70a66e
--- /dev/null
+++ b/services/services-engine/src/site/site.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ============LICENSE_START=======================================================
+ Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ ================================================================================
+ This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE
+ Full license text at https://creativecommons.org/licenses/by/4.0/legalcode
+
+ SPDX-License-Identifier: CC-BY-4.0
+ ============LICENSE_END=========================================================
+
+ @author Sven van der Meer (sven.van.der.meer@ericsson.com)
+
+-->
+
+<project name="APEX Services Engine">
+ <body>
+ <menu name="APEX Services Engine">
+ <item href="config-general-format.html" name="General Configuration Format" />
+ <item href="config-service-parameters.html" name="Engine Service Parameters" />
+ <item href="config-interfaces-general.html" name="Input and Output Interfaces" />
+ <item href="config-example.html" name="Configuration Example" />
+ <item href="javadocs/index.html" name="API Doc" />
+ </menu>
+ <menu ref="reports" inherit="top" />
+ <menu ref="modules" />
+
+ <breadcrumbs>
+ <item name="Engine" href="index.html" />
+ </breadcrumbs>
+ </body>
+</project> \ No newline at end of file
diff --git a/services/src/site/css/site.css b/services/src/site/css/site.css
new file mode 100644
index 000000000..ef8bd4d15
--- /dev/null
+++ b/services/src/site/css/site.css
@@ -0,0 +1,100 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.0/css/font-awesome.css);
+
+
+/*************** Table definitions *******************/
+
+tableblock > .title, .tableblock > caption { line-height: 1.4; color: #7a2518; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; }
+
+.tableblock > caption { text-align: left; font-weight: bold; white-space: nowrap; overflow: visible; max-width: 0; }
+
+table.tableblock { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; }
+table.tableblock thead, table.tableblock tfoot { background: whitesmoke; font-weight: bold; }
+table.tableblock thead tr th, table.tableblock thead tr td, table tfoot tr th, table tfoot tr td { padding: 0.5em 0.625em 0.625em; font-size: inherit; color: #222222; text-align: left; }
+table.tableblock tr th, table.tableblock tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #222222; }
+table.tableblock tr.even, table.tableblock tr.alt, table.tableblock tr:nth-of-type(even) { background: #f9f9f9; }
+table.tableblock thead tr th, table.tableblock tfoot tr th, table.tableblock tbody tr td, table.tableblock tr td, table.tableblock tfoot tr td { display: table-cell; line-height: 1.6; }
+
+table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; }
+
+table.tableblock.grid-all { border-collapse: separate; border-spacing: 1px; -webkit-border-radius: 4px; border-radius: 4px; border-top: 1px solid #dddddd; border-bottom: 1px solid #dddddd; }
+
+table.tableblock.frame-topbot, table.tableblock.frame-none { border-left: 0; border-right: 0; }
+
+table.tableblock.frame-sides, table.tableblock.frame-none { border-top: 0; border-bottom: 0; }
+
+table.tableblock td .paragraph:last-child p, table.tableblock td > p:last-child { margin-bottom: 0; }
+
+th.tableblock.halign-left, td.tableblock.halign-left { text-align: left; }
+
+th.tableblock.halign-right, td.tableblock.halign-right { text-align: right; }
+
+th.tableblock.halign-center, td.tableblock.halign-center { text-align: center; }
+
+th.tableblock.valign-top, td.tableblock.valign-top { vertical-align: top; }
+
+th.tableblock.valign-bottom, td.tableblock.valign-bottom { vertical-align: bottom; }
+
+th.tableblock.valign-middle, td.tableblock.valign-middle { vertical-align: middle; }
+
+p.tableblock.header { color: #222222; font-weight: bold; }
+
+
+
+/*************** KBD Macro definitions *******************/
+
+kbd.keyseq { color: #555555; }
+
+kbd:not(.keyseq) { display: inline-block; color: #222222; font-size: 0.75em; line-height: 1.4; background-color: #F7F7F7; border: 1px solid #ccc; -webkit-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; margin: -0.15em 0.15em 0 0.15em; padding: 0.2em 0.6em 0.2em 0.5em; vertical-align: middle; white-space: nowrap; }
+
+kbd kbd:first-child { margin-left: 0; }
+
+kbd kbd:last-child { margin-right: 0; }
+
+
+/*************** Admontion Blocks definitions *******************/
+.admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .videoblock > .title, .listingblock > .title, .literalblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-align: left; font-weight: bold; }
+
+.admonitionblock > table { border: 0; background: none; width: 100%; margin-top: 1em; margin-bottom: 1em;}
+.admonitionblock > table td.icon { text-align: center; width: 80px; }
+.admonitionblock > table td.icon img { max-width: none; }
+.admonitionblock > table td.icon .title { font-weight: bold; text-transform: uppercase; }
+.admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #6f6f6f; }
+.admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; }
+
+.admonitionblock td.icon [class^="fa icon-"]:before {font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
+.admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #005498; color: #003f72; }
+.admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; }
+.admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; }
+.admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; }
+.admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; }
+
+
+
+/*************** Misc definitions *******************/
+
+*:not(pre) > code { font-size: 0.9375em; padding: 1px 3px 0; white-space: nowrap; background-color: #f2f2f2; border: 1px solid #cccccc; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: none; }
+
+pre, pre > code { line-height: 1.4; color: inherit; font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; }
+
+code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; color: #6d180b; }
+
diff --git a/services/src/site/images/logos.png b/services/src/site/images/logos.png
new file mode 100644
index 000000000..915d6e59d
--- /dev/null
+++ b/services/src/site/images/logos.png
Binary files differ
diff --git a/services/src/site/site.xml b/services/src/site/site.xml
new file mode 100644
index 000000000..5572584ed
--- /dev/null
+++ b/services/src/site/site.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ============LICENSE_START=======================================================
+ Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ ================================================================================
+ This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE
+ Full license text at https://creativecommons.org/licenses/by/4.0/legalcode
+
+ SPDX-License-Identifier: CC-BY-4.0
+ ============LICENSE_END=========================================================
+
+ @author Sven van der Meer (sven.van.der.meer@ericsson.com)
+
+-->
+
+<project name="APEX Services">
+ <body>
+ <menu name="APEX Services">
+ </menu>
+ <menu ref="reports" inherit="top" />
+ <menu ref="modules" />
+
+ <breadcrumbs>
+ <item name="Services" href="index.html" />
+ </breadcrumbs>
+ </body>
+</project> \ No newline at end of file