diff --git a/checkstyle-suppressions.xml b/checkstyle-suppressions.xml
new file mode 100644
index 0000000..e8e2e8b
--- /dev/null
+++ b/checkstyle-suppressions.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!--
+   ============LICENSE_START=======================================================
+   sdc/dcae-d/dt-be-property
+   ================================================================================
+   Copyright (C) 2019 Nokia. All rights reserved.
+   ================================================================================
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+   ============LICENSE_END=========================================================
+  -->
+
+<!DOCTYPE suppressions PUBLIC
+        "-//Checkstyle//DTD SuppressionFilter Configuration 1.0//EN"
+        "https://checkstyle.org/dtds/suppressions_1_0.dtd">
+
+<suppressions>
+    <suppress checks=".*" files="\.java" lines="1-20"/>
+    <suppress checks=".*" files="\.properties"/>
+    <suppress checks="javadoc" files="\.java"/>
+    <suppress checks="LineLength" files="\.java"/>
+    <suppress checks="HiddenField" files="\.java"/>
+    <suppress checks="FinalClass" files="\.java"/>
+    <suppress checks="FinalParameters" files="\.java"/>
+    <suppress checks="AvoidInlineConditionals" files="\.java"/>
+    <suppress checks="DesignForExtension" files="\.java"/>
+    <suppress checks="ImportOrder" files="\.java"/>
+    <suppress checks="LocalVariableName" files="\.java"/>
+    <suppress checks="AbbreviationAsWordInName" files="\.java"/>
+</suppressions>
diff --git a/pom.xml b/pom.xml
index 02740e5..0183299 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,6 +6,14 @@
 	<version>1.3.0-SNAPSHOT</version>
 	<name>sdc-dcae-d-dt-be-property</name>
 	<description>System Properties</description>
+
+	<parent>
+		<groupId>org.onap.oparent</groupId>
+		<artifactId>oparent</artifactId>
+		<version>2.0.0</version>
+		<relativePath/>
+	</parent>
+
 	<properties>
 		<!--nexus-->
 		<nexus.proxy>https://nexus.onap.org</nexus.proxy>
@@ -162,6 +170,15 @@
 					<serverId>ecomp-staging</serverId>
 				</configuration>
 			</plugin>
+
+			<plugin>
+				<artifactId>maven-checkstyle-plugin</artifactId>
+				<version>2.17</version>
+				<configuration>
+					<suppressionsLocation>checkstyle-suppressions.xml</suppressionsLocation>
+					<suppressionsFileExpression>checkstyle.suppressions.file</suppressionsFileExpression>
+				</configuration>
+			</plugin>
 		</plugins>
 	</build>
 	<repositories>
diff --git a/src/main/java/org/onap/sdc/common/onaplog/OnapLogConfiguration.java b/src/main/java/org/onap/sdc/common/onaplog/OnapLogConfiguration.java
index bd34a5a..1ffdd4a 100644
--- a/src/main/java/org/onap/sdc/common/onaplog/OnapLogConfiguration.java
+++ b/src/main/java/org/onap/sdc/common/onaplog/OnapLogConfiguration.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.common.onaplog;
 
 public class OnapLogConfiguration {
@@ -28,4 +48,4 @@
     public static String MDC_OPT_FIELD2 = "CustomField2";
     public static String MDC_OPT_FIELD3 = "CustomField3";
     public static String MDC_OPT_FIELD4 = "CustomField4";
-}
\ No newline at end of file
+}
diff --git a/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerAudit.java b/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerAudit.java
index 1057234..fefcd25 100644
--- a/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerAudit.java
+++ b/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerAudit.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.common.onaplog;
 
 import org.onap.sdc.common.onaplog.enums.LogMarkers;
diff --git a/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerDebug.java b/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerDebug.java
index 23ede18..5f58f08 100644
--- a/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerDebug.java
+++ b/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerDebug.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.common.onaplog;
 
 import org.onap.sdc.common.onaplog.enums.LogLevel;
diff --git a/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerError.java b/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerError.java
index 472b99b..41460e3 100644
--- a/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerError.java
+++ b/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerError.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.common.onaplog;
 
 import org.onap.sdc.common.onaplog.enums.LogLevel;
diff --git a/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerFactory.java b/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerFactory.java
index 6c5d879..fae12fb 100644
--- a/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerFactory.java
+++ b/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerFactory.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.common.onaplog;
 
 /**
diff --git a/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerMetric.java b/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerMetric.java
index 95c0ef4..ea94a96 100644
--- a/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerMetric.java
+++ b/src/main/java/org/onap/sdc/common/onaplog/OnapLoggerMetric.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.common.onaplog;
 
 import org.onap.sdc.common.onaplog.enums.LogMarkers;
diff --git a/src/main/java/org/onap/sdc/common/onaplog/OnapMDCWrapper.java b/src/main/java/org/onap/sdc/common/onaplog/OnapMDCWrapper.java
index 9fbcabd..a9b7887 100644
--- a/src/main/java/org/onap/sdc/common/onaplog/OnapMDCWrapper.java
+++ b/src/main/java/org/onap/sdc/common/onaplog/OnapMDCWrapper.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.common.onaplog;
 
 import org.onap.sdc.common.onaplog.enums.Severity;
@@ -263,4 +283,4 @@
     public String getHostAddress() {
         return hostAddress;
     }
-}
\ No newline at end of file
+}
diff --git a/src/main/java/org/onap/sdc/common/onaplog/Stopwatch.java b/src/main/java/org/onap/sdc/common/onaplog/Stopwatch.java
index 3c6c0da..7955c32 100644
--- a/src/main/java/org/onap/sdc/common/onaplog/Stopwatch.java
+++ b/src/main/java/org/onap/sdc/common/onaplog/Stopwatch.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.common.onaplog;
 
 import org.onap.sdc.common.onaplog.interfaces.IStopWatch;
@@ -55,4 +75,4 @@
         return String.valueOf(LocalDateTime.now(Clock.systemUTC()));
     }
 
-}
\ No newline at end of file
+}
diff --git a/src/main/java/org/onap/sdc/common/onaplog/enums/LogLevel.java b/src/main/java/org/onap/sdc/common/onaplog/enums/LogLevel.java
index 609b5a3..0a5dead 100644
--- a/src/main/java/org/onap/sdc/common/onaplog/enums/LogLevel.java
+++ b/src/main/java/org/onap/sdc/common/onaplog/enums/LogLevel.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.common.onaplog.enums;
 
 public enum LogLevel {
diff --git a/src/main/java/org/onap/sdc/common/onaplog/enums/LogMarkers.java b/src/main/java/org/onap/sdc/common/onaplog/enums/LogMarkers.java
index 032066a..81e87ef 100644
--- a/src/main/java/org/onap/sdc/common/onaplog/enums/LogMarkers.java
+++ b/src/main/java/org/onap/sdc/common/onaplog/enums/LogMarkers.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.common.onaplog.enums;
 
 public enum LogMarkers {
diff --git a/src/main/java/org/onap/sdc/common/onaplog/enums/OnapLoggerErrorCode.java b/src/main/java/org/onap/sdc/common/onaplog/enums/OnapLoggerErrorCode.java
index 219a929..c3dc8bc 100644
--- a/src/main/java/org/onap/sdc/common/onaplog/enums/OnapLoggerErrorCode.java
+++ b/src/main/java/org/onap/sdc/common/onaplog/enums/OnapLoggerErrorCode.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.common.onaplog.enums;
 
 public enum OnapLoggerErrorCode {
diff --git a/src/main/java/org/onap/sdc/common/onaplog/enums/Severity.java b/src/main/java/org/onap/sdc/common/onaplog/enums/Severity.java
index 580e263..c264112 100644
--- a/src/main/java/org/onap/sdc/common/onaplog/enums/Severity.java
+++ b/src/main/java/org/onap/sdc/common/onaplog/enums/Severity.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.common.onaplog.enums;
 
 public enum Severity {
diff --git a/src/main/java/org/onap/sdc/common/onaplog/enums/StatusCode.java b/src/main/java/org/onap/sdc/common/onaplog/enums/StatusCode.java
index bc8f33a..9654de9 100644
--- a/src/main/java/org/onap/sdc/common/onaplog/enums/StatusCode.java
+++ b/src/main/java/org/onap/sdc/common/onaplog/enums/StatusCode.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.common.onaplog.enums;
 
 public enum StatusCode {
diff --git a/src/main/java/org/onap/sdc/common/onaplog/interfaces/IOnapLogger.java b/src/main/java/org/onap/sdc/common/onaplog/interfaces/IOnapLogger.java
index 4891a73..918eee9 100644
--- a/src/main/java/org/onap/sdc/common/onaplog/interfaces/IOnapLogger.java
+++ b/src/main/java/org/onap/sdc/common/onaplog/interfaces/IOnapLogger.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.common.onaplog.interfaces;
 
 import org.onap.sdc.common.onaplog.enums.LogLevel;
diff --git a/src/main/java/org/onap/sdc/common/onaplog/interfaces/IOnapMdcWrapper.java b/src/main/java/org/onap/sdc/common/onaplog/interfaces/IOnapMdcWrapper.java
index 661761c..a2cac24 100644
--- a/src/main/java/org/onap/sdc/common/onaplog/interfaces/IOnapMdcWrapper.java
+++ b/src/main/java/org/onap/sdc/common/onaplog/interfaces/IOnapMdcWrapper.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.common.onaplog.interfaces;
 
 import org.onap.sdc.common.onaplog.OnapMDCWrapper;
diff --git a/src/main/java/org/onap/sdc/common/onaplog/interfaces/IStopWatch.java b/src/main/java/org/onap/sdc/common/onaplog/interfaces/IStopWatch.java
index dc1cb81..d18372f 100644
--- a/src/main/java/org/onap/sdc/common/onaplog/interfaces/IStopWatch.java
+++ b/src/main/java/org/onap/sdc/common/onaplog/interfaces/IStopWatch.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.common.onaplog.interfaces;
 
 public interface IStopWatch {
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/Assignment.java b/src/main/java/org/onap/sdc/dcae/composition/model/Assignment.java
index de1da01..d7ad3a7 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/Assignment.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/Assignment.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/Capability.java b/src/main/java/org/onap/sdc/dcae/composition/model/Capability.java
index 36e147f..97fbaf9 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/Capability.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/Capability.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/Capability_.java b/src/main/java/org/onap/sdc/dcae/composition/model/Capability_.java
index fcb1136..006c124 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/Capability_.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/Capability_.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/Capability__.java b/src/main/java/org/onap/sdc/dcae/composition/model/Capability__.java
index 8ef044a..a904379 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/Capability__.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/Capability__.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/Data.java b/src/main/java/org/onap/sdc/dcae/composition/model/Data.java
index 6852b08..74f60be 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/Data.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/Data.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/DcaeCapabilitiesStreamSubscribe.java b/src/main/java/org/onap/sdc/dcae/composition/model/DcaeCapabilitiesStreamSubscribe.java
index 233fb1c..5852cbd 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/DcaeCapabilitiesStreamSubscribe.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/DcaeCapabilitiesStreamSubscribe.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/Error.java b/src/main/java/org/onap/sdc/dcae/composition/model/Error.java
index 6802593..6786956 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/Error.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/Error.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/Format.java b/src/main/java/org/onap/sdc/dcae/composition/model/Format.java
index 1a07275..a9824a5 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/Format.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/Format.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/Model.java b/src/main/java/org/onap/sdc/dcae/composition/model/Model.java
index adcd1bd..dc1faa3 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/Model.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/Model.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/ModelDcae.java b/src/main/java/org/onap/sdc/dcae/composition/model/ModelDcae.java
index 8b3cd5b..99fa20e 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/ModelDcae.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/ModelDcae.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/Node.java b/src/main/java/org/onap/sdc/dcae/composition/model/Node.java
index 12cbfeb..79e547a 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/Node.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/Node.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/NodeFilter.java b/src/main/java/org/onap/sdc/dcae/composition/model/NodeFilter.java
index 9a79148..4528c39 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/NodeFilter.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/NodeFilter.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/Property.java b/src/main/java/org/onap/sdc/dcae/composition/model/Property.java
index eb871cd..9236655 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/Property.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/Property.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/Property_.java b/src/main/java/org/onap/sdc/dcae/composition/model/Property_.java
index 15a3145..720953a 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/Property_.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/Property_.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/Relationship.java b/src/main/java/org/onap/sdc/dcae/composition/model/Relationship.java
index b7b0e24..841cc25 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/Relationship.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/Relationship.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/Requirement.java b/src/main/java/org/onap/sdc/dcae/composition/model/Requirement.java
index 905de99..262c1a3 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/Requirement.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/Requirement.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/Type.java b/src/main/java/org/onap/sdc/dcae/composition/model/Type.java
index 2549af6..66f5fdd 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/Type.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/Type.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/Value.java b/src/main/java/org/onap/sdc/dcae/composition/model/Value.java
index 7b8da57..153e277 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/Value.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/Value.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/Version.java b/src/main/java/org/onap/sdc/dcae/composition/model/Version.java
index 753f82c..c945b7d 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/Version.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/Version.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.model;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/deserializer/RequirementDeserializer.java b/src/main/java/org/onap/sdc/dcae/composition/model/deserializer/RequirementDeserializer.java
index ca2deef..fbffb22 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/deserializer/RequirementDeserializer.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/deserializer/RequirementDeserializer.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model.deserializer;
 
 import java.lang.reflect.Type;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/model/deserializer/ValueDeserializer.java b/src/main/java/org/onap/sdc/dcae/composition/model/deserializer/ValueDeserializer.java
index 4b2951a..ed02a86 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/model/deserializer/ValueDeserializer.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/model/deserializer/ValueDeserializer.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model.deserializer;
 
 import java.lang.reflect.Type;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/AttachVFCMTServiceRequest.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/AttachVFCMTServiceRequest.java
index bb25713..9154e21 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/AttachVFCMTServiceRequest.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/AttachVFCMTServiceRequest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/Composition.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/Composition.java
index 9997f52..0a92448 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/Composition.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/Composition.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/CompositionRequest.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/CompositionRequest.java
index edb6a2a..52d9399 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/CompositionRequest.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/CompositionRequest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import java.io.Serializable;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/CreateMcResponse.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/CreateMcResponse.java
index e6bda39..b91e48b 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/CreateMcResponse.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/CreateMcResponse.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/CreateVFCMTRequest.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/CreateVFCMTRequest.java
index d6f2403..b529dc0 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/CreateVFCMTRequest.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/CreateVFCMTRequest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/DcaeMinimizedService.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/DcaeMinimizedService.java
index 7e53a38..5c291b2 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/DcaeMinimizedService.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/DcaeMinimizedService.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 public class DcaeMinimizedService {
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ImportVFCMTRequest.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ImportVFCMTRequest.java
index cb3dd8e..02996db 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ImportVFCMTRequest.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ImportVFCMTRequest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 public class ImportVFCMTRequest extends CreateVFCMTRequest {
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/MessageResponse.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/MessageResponse.java
index df87ea5..265116b 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/MessageResponse.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/MessageResponse.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/MonitoringComponent.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/MonitoringComponent.java
index 2372836..66490fe 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/MonitoringComponent.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/MonitoringComponent.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import org.onap.sdc.dcae.composition.restmodels.sdc.ResourceDetailed;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ReferenceUUID.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ReferenceUUID.java
index 54bfa6d..4955708 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ReferenceUUID.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ReferenceUUID.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/VfcmtData.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/VfcmtData.java
index e0a038a..a84efc2 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/VfcmtData.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/VfcmtData.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/canvas/DcaeComponentCatalog.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/canvas/DcaeComponentCatalog.java
index ed1eb20..62d21b4 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/canvas/DcaeComponentCatalog.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/canvas/DcaeComponentCatalog.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.canvas;
 
 import org.onap.sdc.dcae.composition.restmodels.sdc.Resource;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/health/ComponentsInfo.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/health/ComponentsInfo.java
index 2c9a16a..1bebe65 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/health/ComponentsInfo.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/health/ComponentsInfo.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.health;
 
 import com.google.gson.annotations.Expose;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/health/HealthResponse.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/health/HealthResponse.java
index 56d6cf0..2504d75 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/health/HealthResponse.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/health/HealthResponse.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.health;
 
 import java.util.List;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ActionDeserializer.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ActionDeserializer.java
index b8bfae5..21cbbe1 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ActionDeserializer.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ActionDeserializer.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import com.google.gson.*;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ActionTypeEnum.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ActionTypeEnum.java
index 30d0da4..c554c71 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ActionTypeEnum.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ActionTypeEnum.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import java.util.Arrays;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ApplyFilterRequest.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ApplyFilterRequest.java
index 1c08a73..a13f27c 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ApplyFilterRequest.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ApplyFilterRequest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/BaseAction.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/BaseAction.java
index 78c66b0..0d68033 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/BaseAction.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/BaseAction.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.apache.commons.lang3.StringUtils;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/BaseCondition.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/BaseCondition.java
index dd10b9b..16398b3 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/BaseCondition.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/BaseCondition.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import java.util.Objects;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/BaseCopyAction.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/BaseCopyAction.java
index bf2b2b7..d07c668 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/BaseCopyAction.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/BaseCopyAction.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.apache.commons.lang3.StringUtils;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/Condition.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/Condition.java
index ea5850d..7a07025 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/Condition.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/Condition.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import java.util.ArrayList;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionDeserializer.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionDeserializer.java
index e7757c1..5af71c0 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionDeserializer.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionDeserializer.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import com.google.gson.*;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionGroup.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionGroup.java
index cf132ef..786f883 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionGroup.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionGroup.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import java.util.List;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/DateFormatterAction.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/DateFormatterAction.java
index b291862..9b24380 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/DateFormatterAction.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/DateFormatterAction.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import java.util.Objects;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/EventTypeDefinitionUI.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/EventTypeDefinitionUI.java
index 4b2139f..847e6b4 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/EventTypeDefinitionUI.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/EventTypeDefinitionUI.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import java.util.List;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/EventTypesByVersionUI.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/EventTypesByVersionUI.java
index 56ac7d9..136d001 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/EventTypesByVersionUI.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/EventTypesByVersionUI.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import java.util.Set;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/HpMetricAction.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/HpMetricAction.java
index f8b2513..4db09b2 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/HpMetricAction.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/HpMetricAction.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import java.util.Objects;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ImportPhaseRequest.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ImportPhaseRequest.java
index 445f081..35d74ad 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ImportPhaseRequest.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ImportPhaseRequest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 public class ImportPhaseRequest extends RuleEditorRequest {
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/LogEventAction.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/LogEventAction.java
index 909e6c9..4781dd5 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/LogEventAction.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/LogEventAction.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import java.util.Objects;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/LogTextAction.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/LogTextAction.java
index 97f3744..d0b9ef5 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/LogTextAction.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/LogTextAction.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import java.util.Objects;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/MapAction.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/MapAction.java
index 7790737..f4346af 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/MapAction.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/MapAction.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import java.util.List;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/MappingRules.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/MappingRules.java
index a284293..3ce3a52 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/MappingRules.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/MappingRules.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import java.util.LinkedHashMap;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/MappingRulesResponse.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/MappingRulesResponse.java
index 8087aa3..95f9053 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/MappingRulesResponse.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/MappingRulesResponse.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ReplaceTextAction.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ReplaceTextAction.java
index f765563..29014a6 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ReplaceTextAction.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ReplaceTextAction.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import java.util.Objects;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/Rule.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/Rule.java
index 60e58df..342b401 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/Rule.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/Rule.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/RuleEditorRequest.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/RuleEditorRequest.java
index 6e20abd..2e48f1c 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/RuleEditorRequest.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/RuleEditorRequest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 public class RuleEditorRequest {
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/SchemaInfo.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/SchemaInfo.java
index a6678c8..09bbbd3 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/SchemaInfo.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/SchemaInfo.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/StringTransformAction.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/StringTransformAction.java
index 66db1bd..5736826 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/StringTransformAction.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/StringTransformAction.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.apache.commons.lang3.StringUtils;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/TopoSearchAction.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/TopoSearchAction.java
index 9045ae4..c6a7378 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/TopoSearchAction.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/TopoSearchAction.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.apache.commons.lang3.StringUtils;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/TranslateRequest.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/TranslateRequest.java
index 4d3bef8..d6ab4e2 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/TranslateRequest.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/TranslateRequest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/UnaryFieldAction.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/UnaryFieldAction.java
index c13d101..bafefbf 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/UnaryFieldAction.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/UnaryFieldAction.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.springframework.util.CollectionUtils;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Artifact.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Artifact.java
index 012ed9c..f150cf7 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Artifact.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Artifact.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Asset.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Asset.java
index 39c115b..39a88a5 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Asset.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Asset.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Data.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Data.java
index 5b96ea2..2a9884d 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Data.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Data.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/DcaeComponents.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/DcaeComponents.java
index ff2c411..468d7b0 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/DcaeComponents.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/DcaeComponents.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Element.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Element.java
index c3aa95a..4e3739b 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Element.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Element.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Error.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Error.java
index a935a46..23ffbfd 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Error.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Error.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/ExternalReferencesMap.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/ExternalReferencesMap.java
index 3340502..e0b7040 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/ExternalReferencesMap.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/ExternalReferencesMap.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import java.util.HashMap;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Item.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Item.java
index 6f52e11..cd93bfb 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Item.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Item.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Model.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Model.java
index 0a251f0..20df146 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Model.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Model.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Resource.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Resource.java
index 48bbb76..bb845d5 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Resource.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Resource.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceDetailed.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceDetailed.java
index fedb3bb..5884afb 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceDetailed.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceDetailed.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceInstance.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceInstance.java
index 3132665..4991969 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceInstance.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceInstance.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import java.util.List;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Service.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Service.java
index 49a7aa0..f388182 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Service.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/Service.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/ServiceDetailed.java b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/ServiceDetailed.java
index 3352756..3970fe4 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/ServiceDetailed.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/restmodels/sdc/ServiceDetailed.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/services/Artifact.java b/src/main/java/org/onap/sdc/dcae/composition/services/Artifact.java
index 1b9c469..f395297 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/services/Artifact.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/services/Artifact.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.services;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/services/Model.java b/src/main/java/org/onap/sdc/dcae/composition/services/Model.java
index 6e64f56..603f3e6 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/services/Model.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/services/Model.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.services;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/services/Resource.java b/src/main/java/org/onap/sdc/dcae/composition/services/Resource.java
index dd75f49..6b549ed 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/services/Resource.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/services/Resource.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.services;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/services/Service.java b/src/main/java/org/onap/sdc/dcae/composition/services/Service.java
index b36856f..a74400f 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/services/Service.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/services/Service.java
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
 package org.onap.sdc.dcae.composition.services;
 
diff --git a/src/main/java/org/onap/sdc/dcae/composition/services/ThinService.java b/src/main/java/org/onap/sdc/dcae/composition/services/ThinService.java
index 7bfa282..2a4d3d5 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/services/ThinService.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/services/ThinService.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.services;
 
 import com.google.gson.annotations.Expose;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/util/DcaeBeConstants.java b/src/main/java/org/onap/sdc/dcae/composition/util/DcaeBeConstants.java
index 8d8e437..9d47065 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/util/DcaeBeConstants.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/util/DcaeBeConstants.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.util;
 
 public class DcaeBeConstants {
@@ -42,4 +62,4 @@
 	           return null;
 	     }
 	}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/org/onap/sdc/dcae/composition/util/DcaeFeConstants.java b/src/main/java/org/onap/sdc/dcae/composition/util/DcaeFeConstants.java
index 4525429..f88cf95 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/util/DcaeFeConstants.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/util/DcaeFeConstants.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.util;
 
 public class DcaeFeConstants {
diff --git a/src/main/java/org/onap/sdc/dcae/composition/util/SystemProperties.java b/src/main/java/org/onap/sdc/dcae/composition/util/SystemProperties.java
index 4014639..6ddd01b 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/util/SystemProperties.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/util/SystemProperties.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.util;
 
 import java.util.Properties;
diff --git a/src/main/java/org/onap/sdc/dcae/composition/vfcmt/Vfcmt.java b/src/main/java/org/onap/sdc/dcae/composition/vfcmt/Vfcmt.java
index 429db1d..1e723dc 100644
--- a/src/main/java/org/onap/sdc/dcae/composition/vfcmt/Vfcmt.java
+++ b/src/main/java/org/onap/sdc/dcae/composition/vfcmt/Vfcmt.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.vfcmt;
 
 import com.google.gson.annotations.Expose;
@@ -127,4 +147,4 @@
 		this.description = description;
 	}
 
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/common/onaplog/OnapLoggerAuditTest.java b/src/test/java/org/onap/sdc/common/onaplog/OnapLoggerAuditTest.java
index 676ab4e..6b36e3f 100644
--- a/src/test/java/org/onap/sdc/common/onaplog/OnapLoggerAuditTest.java
+++ b/src/test/java/org/onap/sdc/common/onaplog/OnapLoggerAuditTest.java
@@ -219,4 +219,4 @@
         assertNotNull(MDC.get(OnapLogConfiguration.MDC_END_TIMESTAMP));
         assertNotNull(MDC.get(OnapLogConfiguration.MDC_ELAPSED_TIME));
     }
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/AssignmentTest.java b/src/test/java/org/onap/sdc/dcae/composition/model/AssignmentTest.java
index 3124011..6614181 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/AssignmentTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/AssignmentTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Assignment.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/CapabilityTest.java b/src/test/java/org/onap/sdc/dcae/composition/model/CapabilityTest.java
index 3c3321d..c5cd97b 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/CapabilityTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/CapabilityTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Capability.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/Capability_Test.java b/src/test/java/org/onap/sdc/dcae/composition/model/Capability_Test.java
index 9ca7b32..9894433 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/Capability_Test.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/Capability_Test.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Capability_.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/Capability__Test.java b/src/test/java/org/onap/sdc/dcae/composition/model/Capability__Test.java
index 583cca8..0aede91 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/Capability__Test.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/Capability__Test.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Capability__.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/DataTest.java b/src/test/java/org/onap/sdc/dcae/composition/model/DataTest.java
index 4e92ce2..99eca82 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/DataTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/DataTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Data.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/DcaeCapabilitiesStreamSubscribeTest.java b/src/test/java/org/onap/sdc/dcae/composition/model/DcaeCapabilitiesStreamSubscribeTest.java
index b075dca..18614e6 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/DcaeCapabilitiesStreamSubscribeTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/DcaeCapabilitiesStreamSubscribeTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(DcaeCapabilitiesStreamSubscribe.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/FormatTest.java b/src/test/java/org/onap/sdc/dcae/composition/model/FormatTest.java
index 3620cd4..e548af0 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/FormatTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/FormatTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Format.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/ModelDcaeTest.java b/src/test/java/org/onap/sdc/dcae/composition/model/ModelDcaeTest.java
index 7f60f3e..d1add51 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/ModelDcaeTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/ModelDcaeTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(ModelDcae.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/ModelTest.java b/src/test/java/org/onap/sdc/dcae/composition/model/ModelTest.java
index a7cd97d..bc76776 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/ModelTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/ModelTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Model.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/NodeFilterTest.java b/src/test/java/org/onap/sdc/dcae/composition/model/NodeFilterTest.java
index 2e6a568..4c981cb 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/NodeFilterTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/NodeFilterTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(NodeFilter.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/NodeTest.java b/src/test/java/org/onap/sdc/dcae/composition/model/NodeTest.java
index 92f7628..15e5f29 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/NodeTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/NodeTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Node.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/PropertyTest.java b/src/test/java/org/onap/sdc/dcae/composition/model/PropertyTest.java
index da51975..73aaf06 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/PropertyTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/PropertyTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Property.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/Property_Test.java b/src/test/java/org/onap/sdc/dcae/composition/model/Property_Test.java
index 8cc0cdc..2da50ba 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/Property_Test.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/Property_Test.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Property_.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/RelationshipTest.java b/src/test/java/org/onap/sdc/dcae/composition/model/RelationshipTest.java
index 39d027c..dcbb0f9 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/RelationshipTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/RelationshipTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Relationship.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/RequirementTest.java b/src/test/java/org/onap/sdc/dcae/composition/model/RequirementTest.java
index 1cd62c2..0b16a02 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/RequirementTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/RequirementTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Requirement.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/TypeTest.java b/src/test/java/org/onap/sdc/dcae/composition/model/TypeTest.java
index b0e3983..6189917 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/TypeTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/TypeTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Type.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/ValueTest.java b/src/test/java/org/onap/sdc/dcae/composition/model/ValueTest.java
index 2dad232..39a348f 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/ValueTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/ValueTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Value.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/model/VersionTest.java b/src/test/java/org/onap/sdc/dcae/composition/model/VersionTest.java
index b3dbd15..881bc76 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/model/VersionTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/model/VersionTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.model;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Version.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/AttachVFCMTServiceRequestTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/AttachVFCMTServiceRequestTest.java
index 75dca65..5b23ed5 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/AttachVFCMTServiceRequestTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/AttachVFCMTServiceRequestTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(AttachVFCMTServiceRequest.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/CompositionRequestTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/CompositionRequestTest.java
index 126634e..b3d0cb5 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/CompositionRequestTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/CompositionRequestTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(CompositionRequest.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/CompositionTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/CompositionTest.java
index 32e5e67..ba298fa 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/CompositionTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/CompositionTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Composition.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/CreateMcResponseTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/CreateMcResponseTest.java
index 859e802..6222aa0 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/CreateMcResponseTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/CreateMcResponseTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(CreateMcResponse.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/CreateVFCMTRequestTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/CreateVFCMTRequestTest.java
index fa8f807..cb07224 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/CreateVFCMTRequestTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/CreateVFCMTRequestTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(CreateVFCMTRequest.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/DcaeMinimizedServiceTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/DcaeMinimizedServiceTest.java
index 7930602..58febfb 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/DcaeMinimizedServiceTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/DcaeMinimizedServiceTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import org.junit.Before;
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ImportVFCMTRequestTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ImportVFCMTRequestTest.java
index 90cd300..46dbb82 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ImportVFCMTRequestTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ImportVFCMTRequestTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(ImportVFCMTRequest.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/MessageResponseTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/MessageResponseTest.java
index f6680c5..92ca778 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/MessageResponseTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/MessageResponseTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(MessageResponse.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/MonitoringComponentTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/MonitoringComponentTest.java
index c601052..a85af66 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/MonitoringComponentTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/MonitoringComponentTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import org.junit.Test;
@@ -26,4 +46,4 @@
 	public void checkHashCodeFor() {
 		assertThat(MonitoringComponent.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ReferenceUUIDTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ReferenceUUIDTest.java
index 384cb3e..88c33a6 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ReferenceUUIDTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ReferenceUUIDTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(ReferenceUUID.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/VfcmtDataTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/VfcmtDataTest.java
index 3b22405..68902b5 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/VfcmtDataTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/VfcmtDataTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(VfcmtData.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/canvas/DcaeComponentCatalogTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/canvas/DcaeComponentCatalogTest.java
index 1bca510..09777b7 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/canvas/DcaeComponentCatalogTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/canvas/DcaeComponentCatalogTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.canvas;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(DcaeComponentCatalog.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/canvas/SubCategoryFolderTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/canvas/SubCategoryFolderTest.java
index 708f2d0..deddf72 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/canvas/SubCategoryFolderTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/canvas/SubCategoryFolderTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.canvas;
 
 import org.junit.Test;
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/health/ComponentsInfoTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/health/ComponentsInfoTest.java
index 5bcb860..9c9a8ba 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/health/ComponentsInfoTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/health/ComponentsInfoTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.health;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(ComponentsInfo.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/health/HealthResponseTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/health/HealthResponseTest.java
index 7cc9613..261ab44 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/health/HealthResponseTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/health/HealthResponseTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.health;
 
 import org.junit.Test;
@@ -24,4 +44,4 @@
 	public void checkHashCodeFor() {
 		assertThat(HealthResponse.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ApplyFilterRequestTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ApplyFilterRequestTest.java
index 03dd15d..c3e6d00 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ApplyFilterRequestTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ApplyFilterRequestTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.junit.Test;
@@ -24,4 +44,4 @@
 	public void checkHashCodeFor() {
 		assertThat(ApplyFilterRequest.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionDeserializerTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionDeserializerTest.java
index 42c2ecb..a97c009 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionDeserializerTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionDeserializerTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import com.google.gson.Gson;
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionGroupTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionGroupTest.java
index c171350..c606047 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionGroupTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionGroupTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.junit.Test;
@@ -27,4 +47,4 @@
 	public void checkHashCodeFor() {
 		assertThat(ConditionGroup.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionTest.java
index 5059d40..9625601 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ConditionTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.junit.Test;
@@ -27,4 +47,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Condition.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/DateFormatterActionTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/DateFormatterActionTest.java
index defec7f..fd29f51 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/DateFormatterActionTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/DateFormatterActionTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.junit.Test;
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/EventTypeDefinitionUITest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/EventTypeDefinitionUITest.java
index df583d4..c0596ba 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/EventTypeDefinitionUITest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/EventTypeDefinitionUITest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(EventTypeDefinitionUI.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/EventTypesByVersionUITest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/EventTypesByVersionUITest.java
index e845ab2..1ff4d37 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/EventTypesByVersionUITest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/EventTypesByVersionUITest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(EventTypesByVersionUI.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/HpMetricActionTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/HpMetricActionTest.java
index f8bc8ec..6a7dc31 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/HpMetricActionTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/HpMetricActionTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.junit.Test;
@@ -26,4 +46,4 @@
 	public void checkHashCodeFor() {
 		assertThat(HpMetricAction.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ImportPhaseRequestTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ImportPhaseRequestTest.java
index a8d2df1..439a2ca 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ImportPhaseRequestTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ImportPhaseRequestTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(ImportPhaseRequest.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/LogEventActionTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/LogEventActionTest.java
index 52437f7..7a69ced 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/LogEventActionTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/LogEventActionTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.junit.Test;
@@ -26,4 +46,4 @@
 	public void checkHashCodeFor() {
 		assertThat(LogEventAction.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/LogTextActionTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/LogTextActionTest.java
index 3fde15f..806f557 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/LogTextActionTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/LogTextActionTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.junit.Test;
@@ -26,4 +46,4 @@
 	public void checkHashCodeFor() {
 		assertThat(LogTextAction.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/MappingRulesTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/MappingRulesTest.java
index ae87b57..200a3d4 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/MappingRulesTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/MappingRulesTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.junit.Before;
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ReplaceTextActionTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ReplaceTextActionTest.java
index 97428d9..cf9d487 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ReplaceTextActionTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/ReplaceTextActionTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.junit.Test;
@@ -26,4 +46,4 @@
 	public void checkHashCodeFor() {
 		assertThat(ReplaceTextAction.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/RuleEditorRequestTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/RuleEditorRequestTest.java
index d9161fb..f7b0bd7 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/RuleEditorRequestTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/RuleEditorRequestTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(RuleEditorRequest.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/RuleTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/RuleTest.java
index 27f8185..550b092 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/RuleTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/RuleTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.junit.Test;
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/SchemaInfoTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/SchemaInfoTest.java
index 6241d46..7b06ce5 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/SchemaInfoTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/SchemaInfoTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(SchemaInfo.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/TranslateRequestTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/TranslateRequestTest.java
index 30cda9e..0c7408d 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/TranslateRequestTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/ruleeditor/TranslateRequestTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.ruleeditor;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(TranslateRequest.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ArtifactTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ArtifactTest.java
index aca4838..4898c69 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ArtifactTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ArtifactTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import org.junit.Test;
@@ -20,4 +40,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Artifact.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/DataTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/DataTest.java
index 7e68de0..7ff8a85 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/DataTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/DataTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Data.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/DcaeComponentsTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/DcaeComponentsTest.java
index 6487d81..4878489 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/DcaeComponentsTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/DcaeComponentsTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import org.junit.Test;
@@ -24,4 +44,4 @@
 	public void checkHashCodeFor() {
 		assertThat(DcaeComponents.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ElementTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ElementTest.java
index d35c189..ca66fce 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ElementTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ElementTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Element.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ItemTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ItemTest.java
index 87ea18f..9b1d22e 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ItemTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ItemTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Item.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ModelTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ModelTest.java
index f443dbf..38c8cee 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ModelTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ModelTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Model.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceDetailedTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceDetailedTest.java
index 854c4d0..4136efa 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceDetailedTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceDetailedTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(ResourceDetailed.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceInstanceTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceInstanceTest.java
index 516debe..7e2fcbc 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceInstanceTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceInstanceTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(ResourceInstance.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceTest.java
index ddcd6cb..c6f3697 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ResourceTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Resource.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ServiceDetailedTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ServiceDetailedTest.java
index 4b2a0e9..51601b4 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ServiceDetailedTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ServiceDetailedTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(ServiceDetailed.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ServiceTest.java b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ServiceTest.java
index b68d46d..e20f55c 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ServiceTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/restmodels/sdc/ServiceTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.restmodels.sdc;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Service.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/services/ArtifactTest.java b/src/test/java/org/onap/sdc/dcae/composition/services/ArtifactTest.java
index 8431043..4ca3055 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/services/ArtifactTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/services/ArtifactTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.services;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Artifact.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/services/ModelTest.java b/src/test/java/org/onap/sdc/dcae/composition/services/ModelTest.java
index 0018ab1..5d7248a 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/services/ModelTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/services/ModelTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.services;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Model.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/services/ResourceTest.java b/src/test/java/org/onap/sdc/dcae/composition/services/ResourceTest.java
index 7fb24c2..b8a17cf 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/services/ResourceTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/services/ResourceTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.services;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Resource.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/services/ServiceTest.java b/src/test/java/org/onap/sdc/dcae/composition/services/ServiceTest.java
index d90f288..96f8677 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/services/ServiceTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/services/ServiceTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.services;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Service.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/services/ThinServiceTest.java b/src/test/java/org/onap/sdc/dcae/composition/services/ThinServiceTest.java
index 580623d..33f4859 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/services/ThinServiceTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/services/ThinServiceTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.services;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(ThinService.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/onap/sdc/dcae/composition/vfcmt/VfcmtTest.java b/src/test/java/org/onap/sdc/dcae/composition/vfcmt/VfcmtTest.java
index 6bc8b6f..9a28206 100644
--- a/src/test/java/org/onap/sdc/dcae/composition/vfcmt/VfcmtTest.java
+++ b/src/test/java/org/onap/sdc/dcae/composition/vfcmt/VfcmtTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * sdc-dcae-d-dt-be-property
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.sdc.dcae.composition.vfcmt;
 
 import org.junit.Test;
@@ -23,4 +43,4 @@
 	public void checkHashCodeFor() {
 		assertThat(Vfcmt.class, hasValidBeanHashCodeFor());
 	}
-}
\ No newline at end of file
+}
