diff --git a/vnfm-simulator/packages/docker/pom.xml b/vnfm-simulator/packages/docker/pom.xml
new file mode 100644
index 0000000..5d67d57
--- /dev/null
+++ b/vnfm-simulator/packages/docker/pom.xml
@@ -0,0 +1,168 @@
+<!-- ============LICENSE_START======================================================= 
+	Copyright (C) 2019 Nordix Foundation. ================================================================================ 
+	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========================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.onap.svnfm</groupId>
+		<artifactId>packages</artifactId>
+		<version>1.0.0-SNAPSHOT</version>
+	</parent>
+
+	<packaging>pom</packaging>
+	<artifactId>docker</artifactId>
+	<name>Docker Images</name>
+	<description>Docker Images</description>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+		<svnfm.project.version>${project.version}</svnfm.project.version>
+		<docker.skip>false</docker.skip>
+		<docker.skip.build>false</docker.skip.build>
+		<docker.skip.push>false</docker.skip.push>
+		<docker.pull.registry>nexus3.onap.org:10001</docker.pull.registry>
+		<docker.push.registry>nexus3.onap.org:10003</docker.push.registry>
+		<maven.build.timestamp.format>yyyyMMdd'T'HHmm</maven.build.timestamp.format>
+	</properties>
+
+	<build>
+		<finalName>${project.artifactId}-${project.version}</finalName>
+		<plugins>
+			<plugin>
+				<groupId>org.codehaus.groovy.maven</groupId>
+				<artifactId>gmaven-plugin</artifactId>
+				<version>1.0</version>
+				<executions>
+					<execution>
+						<phase>validate</phase>
+						<goals>
+							<goal>execute</goal>
+						</goals>
+						<configuration>
+							<source>
+								println 'Project version: ' +
+								project.properties['svnfm.project.version'];
+								def versionArray;
+								if
+								(
+								project.properties['svnfm.project.version'] != null ) {
+								versionArray =
+								project.properties['svnfm.project.version'].split('-');
+								}
+
+								if (
+								project.properties['svnfm.project.version'].endsWith("-SNAPSHOT")
+								)
+								{
+								project.properties['project.docker.latesttag.version']=versionArray[0]
+								+ "-SNAPSHOT-latest";
+								} else {
+								project.properties['project.docker.latesttag.version']=versionArray[0]
+								+ "-STAGING-latest";
+								}
+
+								println 'New tag for docker: ' +
+								project.properties['project.docker.latesttag.version'];
+							</source>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>io.fabric8</groupId>
+				<artifactId>docker-maven-plugin</artifactId>
+				<version>0.19.1</version>
+
+				<configuration>
+					<verbose>true</verbose>
+					<apiVersion>1.23</apiVersion>
+					<pullRegistry>${docker.pull.registry}</pullRegistry>
+					<pushRegistry>${docker.push.registry}</pushRegistry>
+
+					<images>
+						<image>
+							<name>onap/svnfm/simulator</name>
+							<build>
+								<cleanup>try</cleanup>
+								<dockerFile>Dockerfile</dockerFile>
+								<tags>
+									<tag>${project.version}</tag>
+									<tag>${project.version}-${maven.build.timestamp}</tag>
+									<tag>${project.docker.latesttag.version}</tag>
+								</tags>
+								<assembly>
+									<inline>
+										<dependencySets>
+											<dependencySet>
+												<includes>
+													<include>org.onap.svnfm:simulator</include>
+												</includes>
+												<outputFileNameMapping>app.jar</outputFileNameMapping>
+											</dependencySet>
+										</dependencySets>
+									</inline>
+								</assembly>
+							</build>
+						</image>
+					</images>
+				</configuration>
+
+				<executions>
+					<execution>
+						<id>clean-images</id>
+						<phase>pre-clean</phase>
+						<goals>
+							<goal>remove</goal>
+						</goals>
+						<configuration>
+							<removeAll>true</removeAll>
+						</configuration>
+					</execution>
+
+					<execution>
+						<id>generate-images</id>
+						<phase>generate-sources</phase>
+						<goals>
+							<goal>build</goal>
+						</goals>
+					</execution>
+
+					<execution>
+						<id>push-images</id>
+						<phase>deploy</phase>
+						<goals>
+							<goal>build</goal>
+							<goal>push</goal>
+						</goals>
+						<configuration>
+							<image>onap/svnfm/simulator</image>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-deploy-plugin</artifactId>
+				<version>2.8</version>
+				<configuration>
+					<skip>true</skip>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
