diff --git a/packages/base/pom.xml b/packages/base/pom.xml
index 9f24c60..7da4f7c 100755
--- a/packages/base/pom.xml
+++ b/packages/base/pom.xml
@@ -7,9 +7,9 @@
   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.
@@ -168,7 +168,7 @@
 								</artifactItem>
 							</artifactItems>
 						</configuration>
-					</execution>			
+					</execution>
 				</executions>
 			</plugin>
 			<plugin>
@@ -190,7 +190,7 @@
 			</plugin>
 		</plugins>
 	</build>
-	
+
 	<profiles>
 		<profile>
 			<id>unix_pe_version</id>
@@ -200,29 +200,6 @@
 				</os>
 			</activation>
 			<build>
-				<plugins>
-					<plugin>
-						<groupId>org.codehaus.mojo</groupId>
-						<artifactId>exec-maven-plugin</artifactId>
-						<version>1.5.0</version>
-						<executions>
-							<execution>
-								<id>create-version-file</id>
-								<goals>
-									<goal>exec</goal>
-								</goals>
-								<phase>prepare-package</phase>
-								<configuration>
-									<executable>/bin/bash</executable>
-									<arguments>
-										<argument>-c</argument>
-										<argument>mkdir -p target ; echo -e 'version="${project.version}"\ndescription="Open ONAP Policy Engine"\nbuildTag="'"${BUILD_TAG}"'"\ncommit="'"${GIT_COMMIT}"'"\ntimestamp="${maven.build.timestamp}"' >target/build.info</argument>
-									</arguments>
-								</configuration>
-							</execution>
-						</executions>
-					</plugin>
-				</plugins>
 			</build>
 		</profile>
 	</profiles>
diff --git a/pom.xml b/pom.xml
index 7d7f979..fb58856 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
 		<project.source.version>1.8</project.source.version>
 		<project.target.version>1.8</project.target.version>
 		<project.encoding>UTF-8</project.encoding>
-		
+
 		<sonar.language>java</sonar.language>
 		<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
 		<sonar.surefire.reportsPath>${project.build.directory}/surefire-reports</sonar.surefire.reportsPath>
@@ -143,52 +143,6 @@
 				<artifactId>maven-clean-plugin</artifactId>
 				<version>2.4.1</version>
 			</plugin>
-			<!-- license plugin Run mvn clean before running from the command line 
-				mvn license:update-file-header -->
-			<plugin>
-				<groupId>org.codehaus.mojo</groupId>
-				<artifactId>license-maven-plugin</artifactId>
-				<version>1.9</version>
-				<configuration>
-					<extraExtensions>
-						<!-- Used to add or change the header style <fileTypeYouAreMapping> 
-							fileTypeMappedInto </fileTypeYouAreMapping> -->
-						<drl>java</drl>
-						<ccf>properties</ccf>
-
-						<!-- Because the typical sql comment type confuses the update algorithm -->
-						<sql>java</sql>
-					</extraExtensions>
-					<licenseName>apache_v2</licenseName>
-
-					<inceptionYear>2017</inceptionYear>
-					<organizationName>AT&amp;T Intellectual Property. All rights
-						reserved.</organizationName>
-
-					<!-- Once you have established the tags and delimiter, they cannot be 
-						changed -->
-					<processStartTag>============LICENSE_START=======================================================</processStartTag>
-					<processEndTag>============LICENSE_END=========================================================</processEndTag>
-					<sectionDelimiter>================================================================================</sectionDelimiter>
-					<addJavaLicenseAfterPackage>false</addJavaLicenseAfterPackage>
-					<canUpdateCopyright>true</canUpdateCopyright>
-					<canUpdateDescription>true</canUpdateDescription>
-					<canUpdateLicense>true</canUpdateLicense>
-					<emptyLineAfterHeader>true</emptyLineAfterHeader>
-					<roots>
-						<!-- Default is src, target/generated-sources, target/processed-sources -->
-
-						<!-- Everything except the files in the excludes section -->
-						<root>/</root>
-					</roots>
-					<excludes>
-						<!-- Files which are to be excluded. The pom.xml is excluded because 
-							the start/end tags and the delimiters are in the body of the file. This confuses 
-							the algorithm. So, this file must be manually updated with a license header. -->
-						<exclude>pom.xml</exclude>
-					</excludes>
-				</configuration>
-			</plugin>
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-compiler-plugin</artifactId>
@@ -215,7 +169,7 @@
 					<failOnMissingWebXml>false</failOnMissingWebXml>
 				</configuration>
 			</plugin>
-			<!-- The Jetty plugin allows us to easily test the development build by 
+			<!-- The Jetty plugin allows us to easily test the development build by
 				running jetty:run on the command line. -->
 
 			<plugin>
diff --git a/project-configs/maven/conf/settings.xml b/project-configs/maven/conf/settings.xml
index 226451b..4a6efbe 100644
--- a/project-configs/maven/conf/settings.xml
+++ b/project-configs/maven/conf/settings.xml
@@ -8,9 +8,9 @@
   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.
@@ -20,146 +20,145 @@
   -->
 
 
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor 
-	license agreements. See the NOTICE file distributed with this work for additional 
-	information regarding copyright ownership. The ASF licenses this file to 
-	you 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 
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
+	license agreements. See the NOTICE file distributed with this work for additional
+	information regarding copyright ownership. The ASF licenses this file to
+	you 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. -->
 
 
 <!-- Special settings file for the maven installation on AT&T central Jenkins -->
 
 
-<!-- | This is the configuration file for Maven. It can be specified at two 
-	levels: | | 1. User Level. This settings.xml file provides configuration 
-	for a single user, | and is normally provided in ${user.home}/.m2/settings.xml. 
-	| | NOTE: This location can be overridden with the CLI option: | | -s /path/to/user/settings.xml 
-	| | 2. Global Level. This settings.xml file provides configuration for all 
-	Maven | users on a machine (assuming they're all using the same Maven | installation). 
-	It's normally provided in | ${maven.home}/conf/settings.xml. | | NOTE: This 
-	location can be overridden with the CLI option: | | -gs /path/to/global/settings.xml 
-	| | The sections in this sample file are intended to give you a running start 
-	at | getting the most out of your Maven installation. Where appropriate, 
-	the default | values (values used when the setting is not specified) are 
+<!-- | This is the configuration file for Maven. It can be specified at two
+	levels: | | 1. User Level. This settings.xml file provides configuration
+	for a single user, | and is normally provided in ${user.home}/.m2/settings.xml.
+	| | NOTE: This location can be overridden with the CLI option: | | -s /path/to/user/settings.xml
+	| | 2. Global Level. This settings.xml file provides configuration for all
+	Maven | users on a machine (assuming they're all using the same Maven | installation).
+	It's normally provided in | ${maven.home}/conf/settings.xml. | | NOTE: This
+	location can be overridden with the CLI option: | | -gs /path/to/global/settings.xml
+	| | The sections in this sample file are intended to give you a running start
+	at | getting the most out of your Maven installation. Where appropriate,
+	the default | values (values used when the setting is not specified) are
 	provided. | | -->
 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
-	<!-- localRepository | The path to the local repository maven will use to 
+	<!-- localRepository | The path to the local repository maven will use to
 		store artifacts. | | Default: ${user.home}/.m2/repository <localRepository>/path/to/local/repo</localRepository> -->
-		
-	<!-- interactiveMode | This will determine whether maven prompts you when 
-		it needs input. If set to false, | maven will use a sensible default value, 
-		perhaps based on some other setting, for | the parameter in question. | | 
+
+	<!-- interactiveMode | This will determine whether maven prompts you when
+		it needs input. If set to false, | maven will use a sensible default value,
+		perhaps based on some other setting, for | the parameter in question. | |
 		Default: true <interactiveMode>true</interactiveMode> -->
 
-	<!-- offline | Determines whether maven should attempt to connect to the 
-		network when executing a build. | This will have an effect on artifact downloads, 
+	<!-- offline | Determines whether maven should attempt to connect to the
+		network when executing a build. | This will have an effect on artifact downloads,
 		artifact deployment, and others. | | Default: false <offline>false</offline> -->
 
-	<!-- pluginGroups | This is a list of additional group identifiers that 
-		will be searched when resolving plugins by their prefix, i.e. | when invoking 
-		a command line like "mvn prefix:goal". Maven will automatically add the group 
-		identifiers | "org.apache.maven.plugins" and "org.codehaus.mojo" if these 
-		are not already contained in the list. | -->
+	<!-- pluginGroups | This is a list of additional group identifiers that
+		will be searched when resolving plugins by their prefix, i.e. | when invoking
+		a command line like "mvn prefix:goal". Maven will automatically add the group
+		identifier | "org.apache.maven.plugins" this is not already contained in
+		the list. | -->
 	<pluginGroups>
-		<!-- pluginGroup | Specifies a further group identifier to use for plugin 
+		<!-- pluginGroup | Specifies a further group identifier to use for plugin
 			lookup. <pluginGroup>com.your.plugins</pluginGroup> -->
 	</pluginGroups>
 
-	<!-- proxies | This is a list of proxies which can be used on this machine 
-		to connect to the network. | Unless otherwise specified (by system property 
-		or command-line switch), the first proxy | specification in this list marked 
+	<!-- proxies | This is a list of proxies which can be used on this machine
+		to connect to the network. | Unless otherwise specified (by system property
+		or command-line switch), the first proxy | specification in this list marked
 		as active will be used. | -->
 
-	<!-- servers | This is a list of authentication profiles, keyed by the server-id 
-		used within the system. | Authentication profiles can be used whenever maven 
+	<!-- servers | This is a list of authentication profiles, keyed by the server-id
+		used within the system. | Authentication profiles can be used whenever maven
 		must make a connection to a remote server. | -->
 	<servers>
-		<!-- server | Specifies the authentication information to use when connecting 
-			to a particular server, identified by | a unique name within the system (referred 
-			to by the 'id' attribute below). | | NOTE: You should either specify username/password 
-			OR privateKey/passphrase, since these pairings are | used together. | <server> 
-			<id>deploymentRepo</id> <username>repouser</username> <password>repopwd</password> 
+		<!-- server | Specifies the authentication information to use when connecting
+			to a particular server, identified by | a unique name within the system (referred
+			to by the 'id' attribute below). | | NOTE: You should either specify username/password
+			OR privateKey/passphrase, since these pairings are | used together. | <server>
+			<id>deploymentRepo</id> <username>repouser</username> <password>repopwd</password>
 			</server> -->
 
-		<!-- Another sample, using keys to authenticate. <server> <id>siteServer</id> 
-			<privateKey>/path/to/private/key</privateKey> <passphrase>optional; leave 
+		<!-- Another sample, using keys to authenticate. <server> <id>siteServer</id>
+			<privateKey>/path/to/private/key</privateKey> <passphrase>optional; leave
 			empty if not used.</passphrase> </server> -->
 	</servers>
 
-	<!-- mirrors | This is a list of mirrors to be used in downloading artifacts 
-		from remote repositories. | | It works like this: a POM may declare a repository 
-		to use in resolving certain artifacts. | However, this repository may have 
-		problems with heavy traffic at times, so people have mirrored | it to several 
-		places. | | That repository definition will have a unique id, so we can create 
-		a mirror reference for that | repository, to be used as an alternate download 
-		site. The mirror site will be the preferred | server for that repository. 
+	<!-- mirrors | This is a list of mirrors to be used in downloading artifacts
+		from remote repositories. | | It works like this: a POM may declare a repository
+		to use in resolving certain artifacts. | However, this repository may have
+		problems with heavy traffic at times, so people have mirrored | it to several
+		places. | | That repository definition will have a unique id, so we can create
+		a mirror reference for that | repository, to be used as an alternate download
+		site. The mirror site will be the preferred | server for that repository.
 		| -->
 	<mirrors>
-		<!-- mirror | Specifies a repository mirror site to use instead of a given 
-			repository. The repository that | this mirror serves has an ID that matches 
-			the mirrorOf element of this mirror. IDs are used | for inheritance and direct 
+		<!-- mirror | Specifies a repository mirror site to use instead of a given
+			repository. The repository that | this mirror serves has an ID that matches
+			the mirrorOf element of this mirror. IDs are used | for inheritance and direct
 			lookup purposes, and must be unique across the set of mirrors. | -->
 
 
 	</mirrors>
 
-	<!-- profiles | This is a list of profiles which can be activated in a variety 
-		of ways, and which can modify | the build process. Profiles provided in the 
-		settings.xml are intended to provide local machine- | specific paths and 
-		repository locations which allow the build to work in the local environment. 
-		| | For example, if you have an integration testing plugin - like cactus 
-		- that needs to know where | your Tomcat instance is installed, you can provide 
-		a variable here such that the variable is | dereferenced during the build 
-		process to configure the cactus plugin. | | As noted above, profiles can 
-		be activated in a variety of ways. One way - the activeProfiles | section 
-		of this document (settings.xml) - will be discussed later. Another way essentially 
-		| relies on the detection of a system property, either matching a particular 
-		value for the property, | or merely testing its existence. Profiles can also 
-		be activated by JDK version prefix, where a | value of '1.4' might activate 
-		a profile when the build is executed on a JDK version of '1.4.2_07'. | Finally, 
-		the list of active profiles can be specified directly from the command line. 
-		| | NOTE: For profiles defined in the settings.xml, you are restricted to 
-		specifying only artifact | repositories, plugin repositories, and free-form 
-		properties to be used as configuration | variables for plugins in the POM. 
+	<!-- profiles | This is a list of profiles which can be activated in a variety
+		of ways, and which can modify | the build process. Profiles provided in the
+		settings.xml are intended to provide local machine- | specific paths and
+		repository locations which allow the build to work in the local environment.
+		| | For example, if you have an integration testing plugin - like cactus
+		- that needs to know where | your Tomcat instance is installed, you can provide
+		a variable here such that the variable is | dereferenced during the build
+		process to configure the cactus plugin. | | As noted above, profiles can
+		be activated in a variety of ways. One way - the activeProfiles | section
+		of this document (settings.xml) - will be discussed later. Another way essentially
+		| relies on the detection of a system property, either matching a particular
+		value for the property, | or merely testing its existence. Profiles can also
+		be activated by JDK version prefix, where a | value of '1.4' might activate
+		a profile when the build is executed on a JDK version of '1.4.2_07'. | Finally,
+		the list of active profiles can be specified directly from the command line.
+		| | NOTE: For profiles defined in the settings.xml, you are restricted to
+		specifying only artifact | repositories, plugin repositories, and free-form
+		properties to be used as configuration | variables for plugins in the POM.
 		| | -->
 	<profiles>
-		<!-- profile | Specifies a set of introductions to the build process, to 
-			be activated using one or more of the | mechanisms described above. For inheritance 
-			purposes, and to activate profiles via <activatedProfiles/> | or the command 
-			line, profiles have to have an ID that is unique. | | An encouraged best 
-			practice for profile identification is to use a consistent naming convention 
-			| for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 
-			'user-brett', etc. | This will make it more intuitive to understand what 
-			the set of introduced profiles is attempting | to accomplish, particularly 
-			when you only have a list of profile id's for debug. | | This profile example 
-			uses the JDK version to trigger activation, and provides a JDK-specific repo. 
-			<profile> <id>jdk-1.4</id> <activation> <jdk>1.4</jdk> </activation> <repositories> 
-			<repository> <id>jdk14</id> <name>Repository for JDK 1.4 builds</name> <url>http://www.myhost.com/maven/jdk14</url> 
-			<layout>default</layout> <snapshotPolicy>always</snapshotPolicy> </repository> 
+		<!-- profile | Specifies a set of introductions to the build process, to
+			be activated using one or more of the | mechanisms described above. For inheritance
+			purposes, and to activate profiles via <activatedProfiles/> | or the command
+			line, profiles have to have an ID that is unique. | | An encouraged best
+			practice for profile identification is to use a consistent naming convention
+			| for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey',
+			'user-brett', etc. | This will make it more intuitive to understand what
+			the set of introduced profiles is attempting | to accomplish, particularly
+			when you only have a list of profile id's for debug. | | This profile example
+			uses the JDK version to trigger activation, and provides a JDK-specific repo.
+			<profile> <id>jdk-1.4</id> <activation> <jdk>1.4</jdk> </activation> <repositories>
+			<repository> <id>jdk14</id> <name>Repository for JDK 1.4 builds</name> <url>http://www.myhost.com/maven/jdk14</url>
+			<layout>default</layout> <snapshotPolicy>always</snapshotPolicy> </repository>
 			</repositories> </profile> -->
 
-		<!-- | Here is another profile, activated by the system property 'target-env' 
-			with a value of 'dev', | which provides a specific path to the Tomcat instance. 
-			To use this, your plugin configuration | might hypothetically look like: 
-			| | ... | <plugin> | <groupId>org.myco.myplugins</groupId> | <artifactId>myplugin</artifactId> 
-			| | <configuration> | <tomcatLocation>${tomcatPath}</tomcatLocation> | </configuration> 
-			| </plugin> | ... | | NOTE: If you just wanted to inject this configuration 
-			whenever someone set 'target-env' to | anything, you could just leave off 
-			the <value/> inside the activation-property. | <profile> <id>env-dev</id> 
-			<activation> <property> <name>target-env</name> <value>dev</value> </property> 
-			</activation> <properties> <tomcatPath>/path/to/tomcat/instance</tomcatPath> 
+		<!-- | Here is another profile, activated by the system property 'target-env'
+			with a value of 'dev', | which provides a specific path to the Tomcat instance.
+			To use this, your plugin configuration | might hypothetically look like:
+			| | ... | <plugin> | <groupId>org.myco.myplugins</groupId> | <artifactId>myplugin</artifactId>
+			| | <configuration> | <tomcatLocation>${tomcatPath}</tomcatLocation> | </configuration>
+			| </plugin> | ... | | NOTE: If you just wanted to inject this configuration
+			whenever someone set 'target-env' to | anything, you could just leave off
+			the <value/> inside the activation-property. | <profile> <id>env-dev</id>
+			<activation> <property> <name>target-env</name> <value>dev</value> </property>
+			</activation> <properties> <tomcatPath>/path/to/tomcat/instance</tomcatPath>
 			</properties> </profile> -->
 	</profiles>
 
-	<!-- activeProfiles | List of profiles that are active for all builds. | 
-		<activeProfiles> <activeProfile>alwaysActiveProfile</activeProfile> <activeProfile>anotherAlwaysActiveProfile</activeProfile> 
+	<!-- activeProfiles | List of profiles that are active for all builds. |
+		<activeProfiles> <activeProfile>alwaysActiveProfile</activeProfile> <activeProfile>anotherAlwaysActiveProfile</activeProfile>
 		</activeProfiles> -->
 </settings>
-
