diff --git a/openecomp-ui/src/nfvo-components/loader/LoaderConstants.js b/openecomp-ui/src/nfvo-components/loader/LoaderConstants.js
index 3f2e1c1..be07fa7 100644
--- a/openecomp-ui/src/nfvo-components/loader/LoaderConstants.js
+++ b/openecomp-ui/src/nfvo-components/loader/LoaderConstants.js
@@ -1,24 +1,27 @@
-/*
- * Copyright © 2016-2017 European Support Limited
+/*!
+ * Copyright © 2016-2018 European Support Limited
  *
  * 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
+ * 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.
+ * 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.
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    SHOW: null,
-    HIDE: null,
+export const actionTypes = keyMirror(
+    {
+        SHOW: null,
+        HIDE: null,
 
-    SEND_REQUEST: 'SEND_REQUEST',
-    RECEIVE_RESPONSE: 'RECEIVE_RESPONSE'
-});
+        SEND_REQUEST: null,
+        RECEIVE_RESPONSE: null
+    },
+    'loader'
+);
diff --git a/openecomp-ui/src/nfvo-components/modal/GlobalModalConstants.js b/openecomp-ui/src/nfvo-components/modal/GlobalModalConstants.js
index e9c1853..8bac377 100644
--- a/openecomp-ui/src/nfvo-components/modal/GlobalModalConstants.js
+++ b/openecomp-ui/src/nfvo-components/modal/GlobalModalConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,13 +15,16 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    GLOBAL_MODAL_SHOW: null,
-    GLOBAL_MODAL_CLOSE: null,
-    GLOBAL_MODAL_ERROR: null,
-    GLOBAL_MODAL_WARNING: null,
-    GLOBAL_MODAL_SUCCESS: null
-});
+export const actionTypes = keyMirror(
+    {
+        GLOBAL_MODAL_SHOW: null,
+        GLOBAL_MODAL_CLOSE: null,
+        GLOBAL_MODAL_ERROR: null,
+        GLOBAL_MODAL_WARNING: null,
+        GLOBAL_MODAL_SUCCESS: null
+    },
+    'globalModal'
+);
 
 export const typeEnum = {
     DEFAULT: 'default',
diff --git a/openecomp-ui/src/nfvo-components/notification/NotificationsConstants.js b/openecomp-ui/src/nfvo-components/notification/NotificationsConstants.js
index 329c557..328e046 100644
--- a/openecomp-ui/src/nfvo-components/notification/NotificationsConstants.js
+++ b/openecomp-ui/src/nfvo-components/notification/NotificationsConstants.js
@@ -16,8 +16,8 @@
 import UUID from 'uuid-js';
 
 export const actionTypes = {
-    ADD_NOTIFICATION: 'ADD_NOTIFICATION',
-    REMOVE_NOTIFICATION: 'REMOVE_NOTIFICATION'
+    ADD_NOTIFICATION: 'notifications/ADD_NOTIFICATION',
+    REMOVE_NOTIFICATION: 'notifications/REMOVE_NOTIFICATION'
 };
 
 export const notificationActions = {
diff --git a/openecomp-ui/src/nfvo-utils/KeyMirror.js b/openecomp-ui/src/nfvo-utils/KeyMirror.js
index dc351af..c83b759 100644
--- a/openecomp-ui/src/nfvo-utils/KeyMirror.js
+++ b/openecomp-ui/src/nfvo-utils/KeyMirror.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,10 +13,11 @@
  * or implied. See the License for the specific language governing
  * permissions and limitations under the License.
  */
-var keyMirror = function(obj) {
-    var ret = {};
-    var key;
-    var val;
+import UUID from 'uuid-js';
+const keyMirror = (obj, namespace) => {
+    let ret = {};
+    let key;
+    let val;
     if (!(obj instanceof Object && !Array.isArray(obj))) {
         throw new Error('keyMirror(...): Argument must be an object.');
     }
@@ -24,11 +25,11 @@
         if (obj.hasOwnProperty(key)) {
             val = obj[key];
             if (val instanceof Object) {
-                ret[key] = keyMirror(obj[key]);
+                ret[key] = keyMirror(obj[key], namespace);
             } else if (val !== null && val !== undefined) {
                 ret[key] = val;
             } else {
-                ret[key] = Symbol(key);
+                ret[key] = `${namespace ? namespace : UUID.create()}/${key}`;
             }
         }
     }
diff --git a/openecomp-ui/src/sdc-app/common/merge/MergeEditorConstants.js b/openecomp-ui/src/sdc-app/common/merge/MergeEditorConstants.js
index bb25a1a..14745e2 100644
--- a/openecomp-ui/src/sdc-app/common/merge/MergeEditorConstants.js
+++ b/openecomp-ui/src/sdc-app/common/merge/MergeEditorConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,15 +13,17 @@
  * or implied. See the License for the specific language governing
  * permissions and limitations under the License.
  */
-
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    LOAD_CONFLICTS: null,
-    ADD_ACTIONS: null,
-    LOAD_CONFLICT: null,
-    DATA_PROCESSED: null
-});
+export const actionTypes = keyMirror(
+    {
+        LOAD_CONFLICTS: null,
+        ADD_ACTIONS: null,
+        LOAD_CONFLICT: null,
+        DATA_PROCESSED: null
+    },
+    'mergeEditor'
+);
 
 export const rules = {
     SKIP: 'skip',
diff --git a/openecomp-ui/src/sdc-app/common/reducers/JSONSchemaReducerConstants.js b/openecomp-ui/src/sdc-app/common/reducers/JSONSchemaReducerConstants.js
index 439613d..8863d3c 100644
--- a/openecomp-ui/src/sdc-app/common/reducers/JSONSchemaReducerConstants.js
+++ b/openecomp-ui/src/sdc-app/common/reducers/JSONSchemaReducerConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,9 +15,12 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    DATA_LOADED: null,
-    DATA_CHANGED: null,
-    VALIDATE_FORM: null,
-    VALIDATE_DATA: null
-});
+export const actionTypes = keyMirror(
+    {
+        DATA_LOADED: null,
+        DATA_CHANGED: null,
+        VALIDATE_FORM: null,
+        VALIDATE_DATA: null
+    },
+    'JSONSchema/'
+);
diff --git a/openecomp-ui/src/sdc-app/common/reducers/PlainDataReducerConstants.js b/openecomp-ui/src/sdc-app/common/reducers/PlainDataReducerConstants.js
index 8c38483..b87ed23 100644
--- a/openecomp-ui/src/sdc-app/common/reducers/PlainDataReducerConstants.js
+++ b/openecomp-ui/src/sdc-app/common/reducers/PlainDataReducerConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,8 +15,11 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    DATA_CHANGED: null,
-    VALIDATE_FORM: null,
-    VALIDATE_DATA: null
-});
+export const actionTypes = keyMirror(
+    {
+        DATA_CHANGED: null,
+        VALIDATE_FORM: null,
+        VALIDATE_DATA: null
+    },
+    'plainDataReducer'
+);
diff --git a/openecomp-ui/src/sdc-app/features/FeaturesConstants.js b/openecomp-ui/src/sdc-app/features/FeaturesConstants.js
index 314e86a..c596c2f 100644
--- a/openecomp-ui/src/sdc-app/features/FeaturesConstants.js
+++ b/openecomp-ui/src/sdc-app/features/FeaturesConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright © 2016-2017 European Support Limited
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,9 +15,12 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    FEATURES_LIST_LOADED: null
-});
+export const actionTypes = keyMirror(
+    {
+        FEATURES_LIST_LOADED: null
+    },
+    'features'
+);
 
 export const featureToggleNames = {
     ARCHIVE_ITEM: 'ARCHIVE_ITEM',
diff --git a/openecomp-ui/src/sdc-app/flows/FlowsConstants.js b/openecomp-ui/src/sdc-app/flows/FlowsConstants.js
index 4dcd840..ea6d963 100644
--- a/openecomp-ui/src/sdc-app/flows/FlowsConstants.js
+++ b/openecomp-ui/src/sdc-app/flows/FlowsConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,22 +15,25 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    OPEN_FLOW_DETAILS_EDITOR: null,
-    CLOSE_FLOW_DETAILS_EDITOR: null,
+export const actionTypes = keyMirror(
+    {
+        OPEN_FLOW_DETAILS_EDITOR: null,
+        CLOSE_FLOW_DETAILS_EDITOR: null,
 
-    OPEN_FLOW_DIAGRAM_EDITOR: null,
-    CLOSE_FLOW_DIAGRAM_EDITOR: null,
+        OPEN_FLOW_DIAGRAM_EDITOR: null,
+        CLOSE_FLOW_DIAGRAM_EDITOR: null,
 
-    FLOW_LIST_LOADED: null,
-    ADD_OR_UPDATE_FLOW: null,
-    ARTIFACT_LOADED: null,
-    DELETE_FLOW: null,
+        FLOW_LIST_LOADED: null,
+        ADD_OR_UPDATE_FLOW: null,
+        ARTIFACT_LOADED: null,
+        DELETE_FLOW: null,
 
-    CURRENT_FLOW_DATA_CHANGED: null,
+        CURRENT_FLOW_DATA_CHANGED: null,
 
-    RESET: null
-});
+        RESET: null
+    },
+    'flow'
+);
 
 export const enums = {
     WORKFLOW: 'WORKFLOW',
diff --git a/openecomp-ui/src/sdc-app/onboarding/OnboardingConstants.js b/openecomp-ui/src/sdc-app/onboarding/OnboardingConstants.js
index 8e07765..97e82ef 100644
--- a/openecomp-ui/src/sdc-app/onboarding/OnboardingConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/OnboardingConstants.js
@@ -17,14 +17,17 @@
 
 export const DATE_FORMAT = 'MM/DD/YYYY';
 
-export const actionTypes = keyMirror({
-    SET_CURRENT_SCREEN: 'SET_CURRENT_SCREEN',
-    SET_CURRENT_LICENSE_MODEL: null,
-    SET_CURRENT_SCREEN_VERSION: null,
-    UPDATE_CURRENT_SCREEN_PROPS: 'UPDATE_CURRENT_SCREEN_PROPS',
-    UPDATE_ITEM_STATUS: 'UPDATE_ITEM_STATUS',
-    UPDATE_ITEM_ARCHIVE_STATUS: 'UPDATE_ITEM_ARCHIVE_STATUS'
-});
+export const actionTypes = keyMirror(
+    {
+        SET_CURRENT_SCREEN: null,
+        SET_CURRENT_LICENSE_MODEL: null,
+        SET_CURRENT_SCREEN_VERSION: null,
+        UPDATE_CURRENT_SCREEN_PROPS: null,
+        UPDATE_ITEM_STATUS: null,
+        UPDATE_ITEM_ARCHIVE_STATUS: null
+    },
+    'onboardingMain'
+);
 
 export const screenTypes = keyMirror({
     LICENSE_MODEL: null,
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelConstants.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelConstants.js
index 93e9348..61fdae8 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelConstants.js
@@ -16,13 +16,16 @@
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 import i18n from 'nfvo-utils/i18n/i18n.js';
 
-export const actionTypes = keyMirror({
-    LICENSE_MODEL_LOADED: null,
-    LICENSE_MODELS_LIST_LOADED: null,
-    FINALIZED_LICENSE_MODELS_LIST_LOADED: null,
-    ARCHIVED_LICENSE_MODELS_LIST_LOADED: null,
-    EDIT_LICENSE_MODEL: null
-});
+export const actionTypes = keyMirror(
+    {
+        LICENSE_MODEL_LOADED: null,
+        LICENSE_MODELS_LIST_LOADED: null,
+        FINALIZED_LICENSE_MODELS_LIST_LOADED: null,
+        ARCHIVED_LICENSE_MODELS_LIST_LOADED: null,
+        EDIT_LICENSE_MODEL: null
+    },
+    'licenseModel'
+);
 
 export const thresholdUnitType = {
     ABSOLUTE: 'Absolute',
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationConstants.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationConstants.js
index 1cd61a9..6406183 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationConstants.js
@@ -1,24 +1,27 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * Copyright © 2016-2018 European Support Limited
  *
  * 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
- *
+ * 
+ *      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.
+ * 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.
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    OPEN: null,
-    CLOSE: null,
-    LICENSE_MODEL_CREATED: null
-});
+export const actionTypes = keyMirror(
+    {
+        OPEN: null,
+        CLOSE: null,
+        LICENSE_MODEL_CREATED: null
+    },
+    'licenseModelCreation'
+);
 
 export const LICENSE_MODEL_CREATION_FORM_NAME = 'LMCREATIONFORM';
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsConstants.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsConstants.js
index ab0f3dd..d4a2f09 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsConstants.js
@@ -19,15 +19,18 @@
     other as optionInputOther
 } from 'nfvo-components/input/validation/InputOptions.jsx';
 
-export const actionTypes = keyMirror({
-    ENTITLEMENT_POOLS_LIST_LOADED: 'ENTITLEMENT_POOLS_LIST_LOADED',
-    entitlementPoolsEditor: {
-        OPEN: 'epEditor/OPEN',
-        CLOSE: 'epEditor/CLOSE',
-        DATA_CHANGED: 'epEditor/DATA_CHANGED',
-        LIMITS_LIST_LOADED: 'epEditor/LIMITS_LIST_LOADED'
-    }
-});
+export const actionTypes = keyMirror(
+    {
+        ENTITLEMENT_POOLS_LIST_LOADED: null,
+        entitlementPoolsEditor: {
+            OPEN: null,
+            CLOSE: null,
+            DATA_CHANGED: null,
+            LIMITS_LIST_LOADED: null
+        }
+    },
+    'entitlementPoolsEditor'
+);
 
 export const enums = keyMirror({
     SELECTED_FEATURE_GROUP_TAB: {
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsConstants.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsConstants.js
index feeb5b6..5c3c254 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsConstants.js
@@ -15,21 +15,24 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    FEATURE_GROUPS_LIST_LOADED: null,
-    ADD_FEATURE_GROUPS: null,
-    EDIT_FEATURE_GROUPS: null,
-    DELETE_FEATURE_GROUPS: null,
+export const actionTypes = keyMirror(
+    {
+        FEATURE_GROUPS_LIST_LOADED: null,
+        ADD_FEATURE_GROUPS: null,
+        EDIT_FEATURE_GROUPS: null,
+        DELETE_FEATURE_GROUPS: null,
 
-    ENTITLEMENT_POOLS_LIST_LOADED: null,
+        ENTITLEMENT_POOLS_LIST_LOADED: null,
 
-    featureGroupsEditor: {
-        OPEN: null,
-        CLOSE: null,
-        DATA_CHANGED: null,
-        SELECT_TAB: null
-    }
-});
+        featureGroupsEditor: {
+            OPEN: null,
+            CLOSE: null,
+            DATA_CHANGED: null,
+            SELECT_TAB: null
+        }
+    },
+    'featureGroups'
+);
 
 export const FG_EDITOR_FORM = 'FG_EDITOR_FORM';
 
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementConstants.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementConstants.js
index 65a4534..78c127a 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,17 +19,20 @@
     other as optionInputOther
 } from 'nfvo-components/input/validation/InputOptions.jsx';
 
-export const actionTypes = keyMirror({
-    LICENSE_AGREEMENT_LIST_LOADED: null,
-    DELETE_LICENSE_AGREEMENT: null,
+export const actionTypes = keyMirror(
+    {
+        LICENSE_AGREEMENT_LIST_LOADED: null,
+        DELETE_LICENSE_AGREEMENT: null,
 
-    licenseAgreementEditor: {
-        OPEN: null,
-        CLOSE: null,
-        DATA_CHANGED: null,
-        SELECT_TAB: null
-    }
-});
+        licenseAgreementEditor: {
+            OPEN: null,
+            CLOSE: null,
+            DATA_CHANGED: null,
+            SELECT_TAB: null
+        }
+    },
+    'licenseAgreement'
+);
 
 export const LA_EDITOR_FORM = 'LA_EDITOR_FORM';
 
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsConstants.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsConstants.js
index 7ab8a4f..b9369b4 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsConstants.js
@@ -19,16 +19,19 @@
     other as optionInputOther
 } from 'nfvo-components/input/validation/InputOptions.jsx';
 
-export const actionTypes = keyMirror({
-    LICENSE_KEY_GROUPS_LIST_LOADED: 'LICENSE_KEY_GROUPS_LIST_LOADED',
-    LICENSE_KEY_GROUPS_DELETE_CONFIRM: 'LICENSE_KEY_GROUPS_DELETE_CONFIRM',
-    licenseKeyGroupsEditor: {
-        OPEN: 'licenseKeyGroupsEditor/OPEN',
-        CLOSE: 'licenseKeyGroupsEditor/CLOSE',
-        DATA_CHANGED: 'licenseKeyGroupsEditor/DATA_CHANGED',
-        LIMITS_LIST_LOADED: 'licenseKeyGroupsEditor/LIMITS_LIST_LOADED'
-    }
-});
+export const actionTypes = keyMirror(
+    {
+        LICENSE_KEY_GROUPS_LIST_LOADED: 'LICENSE_KEY_GROUPS_LIST_LOADED',
+        LICENSE_KEY_GROUPS_DELETE_CONFIRM: 'LICENSE_KEY_GROUPS_DELETE_CONFIRM',
+        licenseKeyGroupsEditor: {
+            OPEN: 'licenseKeyGroupsEditor/OPEN',
+            CLOSE: 'licenseKeyGroupsEditor/CLOSE',
+            DATA_CHANGED: 'licenseKeyGroupsEditor/DATA_CHANGED',
+            LIMITS_LIST_LOADED: 'licenseKeyGroupsEditor/LIMITS_LIST_LOADED'
+        }
+    },
+    'licenseKeyGroups'
+);
 
 export const defaultState = {
     licenseKeyGroupsEditor: {
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/limits/LimitEditorConstants.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/limits/LimitEditorConstants.js
index a916b95..a26dd19 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/limits/LimitEditorConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/limits/LimitEditorConstants.js
@@ -1,12 +1,29 @@
+/*!
+ * Copyright © 2016-2018 European Support Limited
+ *
+ * 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.
+ */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 import i18n from 'nfvo-utils/i18n/i18n.js';
-// import InputOptions, {other as optionInputOther} from 'nfvo-components/input/inputOptions/InputOptions.jsx';
 
-export const actionTypes = keyMirror({
-    OPEN: null,
-    CLOSE: null,
-    DATA_CHANGED: null
-});
+export const actionTypes = keyMirror(
+    {
+        OPEN: null,
+        CLOSE: null,
+        DATA_CHANGED: null
+    },
+    'limitEditor'
+);
 
 export const LIMITS_FORM_NAME = 'LIMITSFORM';
 
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/LicenseModelOverviewConstants.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/LicenseModelOverviewConstants.js
index b05da58..d2e9394 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/LicenseModelOverviewConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/LicenseModelOverviewConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -29,10 +29,13 @@
     LICENSE_KEY_GROUP: 'License Key Group'
 });
 
-export const actionTypes = keyMirror({
-    LICENSE_MODEL_OVERVIEW_TAB_SELECTED: null,
-    LM_DATA_CHANGED: null
-});
+export const actionTypes = keyMirror(
+    {
+        LICENSE_MODEL_OVERVIEW_TAB_SELECTED: null,
+        LM_DATA_CHANGED: null
+    },
+    'licenseModelOverview'
+);
 
 export const selectedButton = {
     VLM_LIST_VIEW: 'VLM_LIST_VIEW',
diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardConstants.js b/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardConstants.js
index fc34f74..fc09d66 100644
--- a/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,10 +25,13 @@
     CATALOG: ''
 };
 
-export const actionTypes = keyMirror({
-    CHANGE_ACTIVE_ONBOARD_TAB: null,
-    CHANGE_SEARCH_VALUE: null,
-    CLEAR_SEARCH_VALUE: null,
-    RESET_ONBOARD_STORE: null,
-    VSP_MIGRATION: null
-});
+export const actionTypes = keyMirror(
+    {
+        CHANGE_ACTIVE_ONBOARD_TAB: null,
+        CHANGE_SEARCH_VALUE: null,
+        CLEAR_SEARCH_VALUE: null,
+        RESET_ONBOARD_STORE: null,
+        VSP_MIGRATION: null
+    },
+    'onboard'
+);
diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/filter/FilterConstants.js b/openecomp-ui/src/sdc-app/onboarding/onboard/filter/FilterConstants.js
index 9dce52d..b719c50 100644
--- a/openecomp-ui/src/sdc-app/onboarding/onboard/filter/FilterConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/onboard/filter/FilterConstants.js
@@ -16,7 +16,10 @@
 
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    FILTER_DATA_CHANGED: null,
-    UPDATE_FILTERED_LIST: null
-});
+export const actionTypes = keyMirror(
+    {
+        FILTER_DATA_CHANGED: null,
+        UPDATE_FILTERED_LIST: null
+    },
+    'filter'
+);
diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogConstants.js b/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogConstants.js
index f0cefdc..717f49d 100644
--- a/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogConstants.js
@@ -47,10 +47,13 @@
     OLD_VERSION: 'True'
 };
 
-export const actionTypes = keyMirror({
-    ONBOARDING_CATALOG_OPEN_VENDOR_PAGE: null,
-    CHANGE_ACTIVE_CATALOG_TAB: null,
-    CHANGE_SEARCH_VALUE: null,
-    CHANGE_VSP_OVERLAY: null,
-    CLOSE_VSP_OVERLAY: null
-});
+export const actionTypes = keyMirror(
+    {
+        ONBOARDING_CATALOG_OPEN_VENDOR_PAGE: null,
+        CHANGE_ACTIVE_CATALOG_TAB: null,
+        CHANGE_SEARCH_VALUE: null,
+        CHANGE_VSP_OVERLAY: null,
+        CLOSE_VSP_OVERLAY: null
+    },
+    'onboardingCatalog'
+);
diff --git a/openecomp-ui/src/sdc-app/onboarding/permissions/PermissionsConstants.js b/openecomp-ui/src/sdc-app/onboarding/permissions/PermissionsConstants.js
index 686aaaf..4b23b0f 100644
--- a/openecomp-ui/src/sdc-app/onboarding/permissions/PermissionsConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/permissions/PermissionsConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,9 +15,12 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    ITEM_USERS_LOADED: null
-});
+export const actionTypes = keyMirror(
+    {
+        ITEM_USERS_LOADED: null
+    },
+    'permissions'
+);
 
 export const permissionTypes = {
     OWNER: 'Owner',
diff --git a/openecomp-ui/src/sdc-app/onboarding/revisions/RevisionsConstants.js b/openecomp-ui/src/sdc-app/onboarding/revisions/RevisionsConstants.js
index dc1845c..3498bf3 100644
--- a/openecomp-ui/src/sdc-app/onboarding/revisions/RevisionsConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/revisions/RevisionsConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,6 +15,9 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    ITEM_REVISIONS_LOADED: null
-});
+export const actionTypes = keyMirror(
+    {
+        ITEM_REVISIONS_LOADED: null
+    },
+    'revisions'
+);
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js
index 711bbf8..e132250 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js
@@ -15,25 +15,28 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    SOFTWARE_PRODUCT_LOADED: null,
-    SOFTWARE_PRODUCT_LIST_LOADED: null,
-    ARCHIVED_SOFTWARE_PRODUCT_LIST_LOADED: null,
-    FINALIZED_SOFTWARE_PRODUCT_LIST_LOADED: null,
-    SOFTWARE_PRODUCT_LIST_EDIT: null,
-    SOFTWARE_PRODUCT_CATEGORIES_LOADED: null,
-    SOFTWARE_PRODUCT_QUESTIONNAIRE_UPDATE: null,
-    LOAD_LICENSING_VERSIONS_LIST: null,
-    TOGGLE_NAVIGATION_ITEM: null,
-    CANDIDATE_IN_PROCESS: null,
+export const actionTypes = keyMirror(
+    {
+        SOFTWARE_PRODUCT_LOADED: null,
+        SOFTWARE_PRODUCT_LIST_LOADED: null,
+        ARCHIVED_SOFTWARE_PRODUCT_LIST_LOADED: null,
+        FINALIZED_SOFTWARE_PRODUCT_LIST_LOADED: null,
+        SOFTWARE_PRODUCT_LIST_EDIT: null,
+        SOFTWARE_PRODUCT_CATEGORIES_LOADED: null,
+        SOFTWARE_PRODUCT_QUESTIONNAIRE_UPDATE: null,
+        LOAD_LICENSING_VERSIONS_LIST: null,
+        TOGGLE_NAVIGATION_ITEM: null,
+        CANDIDATE_IN_PROCESS: null,
 
-    softwareProductEditor: {
-        OPEN: null,
-        CLOSE: null,
-        DATA_CHANGED: null,
-        IS_VALIDITY_DATA_CHANGED: null
-    }
-});
+        softwareProductEditor: {
+            OPEN: null,
+            CLOSE: null,
+            DATA_CHANGED: null,
+            IS_VALIDITY_DATA_CHANGED: null
+        }
+    },
+    'softwareProduct'
+);
 
 export const onboardingMethod = {
     MANUAL: 'Manual',
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsConstants.js
index aff0a3d..337b07d 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +20,9 @@
     VALIDATION: 2
 };
 
-export const actionTypes = keyMirror({
-    SET_ACTIVE_TAB: null
-});
+export const actionTypes = keyMirror(
+    {
+        SET_ACTIVE_TAB: null
+    },
+    'softwareProductAttachments'
+);
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupConstants.js
index ff53fad..c87e956 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,22 +15,25 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    ARTIFACT_LIST_CHANGE: null,
-    ADD_ALL_UNASSIGNED_TO_ARTIFACTS: null,
-    ADD_ALL_ARTIFACTS_TO_UNASSIGNED: null,
+export const actionTypes = keyMirror(
+    {
+        ARTIFACT_LIST_CHANGE: null,
+        ADD_ALL_UNASSIGNED_TO_ARTIFACTS: null,
+        ADD_ALL_ARTIFACTS_TO_UNASSIGNED: null,
 
-    ADD_MODULE: null,
-    REMOVE_MODULE: null,
-    RENAME_MODULE: null,
-    FILL_HEAT_SETUP_CACHE: null,
-    FILE_ASSIGN_CHANGED: null,
+        ADD_MODULE: null,
+        REMOVE_MODULE: null,
+        RENAME_MODULE: null,
+        FILL_HEAT_SETUP_CACHE: null,
+        FILE_ASSIGN_CHANGED: null,
 
-    MANIFEST_LOADED: null,
+        MANIFEST_LOADED: null,
 
-    GO_TO_VALIDATION: null,
-    IN_VALIDATION: null
-});
+        GO_TO_VALIDATION: null,
+        IN_VALIDATION: null
+    },
+    'heatSetup'
+);
 
 export const fileTypes = {
     YAML: { label: 'yaml', regex: /(yaml|yml)/g },
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/validation/HeatValidationConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/validation/HeatValidationConstants.js
index 8c9f54b..f461cbd 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/validation/HeatValidationConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/validation/HeatValidationConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,11 +16,14 @@
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 import i18n from 'nfvo-utils/i18n/i18n.js';
 
-export const actionTypes = keyMirror({
-    TOGGLE_EXPANDED: null,
-    SELECTED_NODE: null,
-    UNSELECTED_NODE: null
-});
+export const actionTypes = keyMirror(
+    {
+        TOGGLE_EXPANDED: null,
+        SELECTED_NODE: null,
+        UNSELECTED_NODE: null
+    },
+    'heatValidation'
+);
 
 export const errorTypes = keyMirror({
     MISSING_FILE_IN_ZIP: i18n('missing file in zip'),
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsConstants.js
index cc120d3..3462445 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,17 +15,20 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    COMPONENTS_LIST_UPDATE: null,
-    COMPONENTS_LIST_EDIT: null,
-    COMPONENT_UPDATE: null,
-    COMPONENT_DATA_CHANGED: null,
-    COMPONENT_DATA_CLEAR: null,
-    COMPONENT_QUESTIONNAIRE_UPDATE: null,
-    COMPONENT_DELETE: null,
-    COMPONENT_LOAD: null,
-    COMPONENT_CREATE_OPEN: null
-});
+export const actionTypes = keyMirror(
+    {
+        COMPONENTS_LIST_UPDATE: null,
+        COMPONENTS_LIST_EDIT: null,
+        COMPONENT_UPDATE: null,
+        COMPONENT_DATA_CHANGED: null,
+        COMPONENT_DATA_CLEAR: null,
+        COMPONENT_QUESTIONNAIRE_UPDATE: null,
+        COMPONENT_DELETE: null,
+        COMPONENT_LOAD: null,
+        COMPONENT_CREATE_OPEN: null
+    },
+    'softwareProductComponents'
+);
 
 export const storageConstants = keyMirror({
     backupType: {
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/computeComponents/computeFlavor/ComputeFlavorConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/computeComponents/computeFlavor/ComputeFlavorConstants.js
index 58c27c6..5d4a94f 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/computeComponents/computeFlavor/ComputeFlavorConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/computeComponents/computeFlavor/ComputeFlavorConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,20 +13,22 @@
  * or implied. See the License for the specific language governing
  * permissions and limitations under the License.
  */
-
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
 export const COMPUTE_FLAVOR_FORM = 'COMPUTE_FLAVOR_FORM';
 
-export const actionTypes = keyMirror({
-    ADD_COMPUTE: null,
-    COMPUTE_FLAVORS_LIST_LOADED: null,
-    COMPUTE_LIST_EDIT: null,
-    EDIT_COMPUTE_FLAVOR: null,
-    DELETE_COMPUTE: null,
-    CONFIRM_DELETE_COMPUTE: null,
-    computeEditor: {
-        LOAD_EDITOR_DATA: null,
-        CLEAR_DATA: null
-    }
-});
+export const actionTypes = keyMirror(
+    {
+        ADD_COMPUTE: null,
+        COMPUTE_FLAVORS_LIST_LOADED: null,
+        COMPUTE_LIST_EDIT: null,
+        EDIT_COMPUTE_FLAVOR: null,
+        DELETE_COMPUTE: null,
+        CONFIRM_DELETE_COMPUTE: null,
+        computeEditor: {
+            LOAD_EDITOR_DATA: null,
+            CLEAR_DATA: null
+        }
+    },
+    'computeFlavor'
+);
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/images/SoftwareProductComponentsImageConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/images/SoftwareProductComponentsImageConstants.js
index 300b289..890c0b1 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/images/SoftwareProductComponentsImageConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/images/SoftwareProductComponentsImageConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,13 +15,16 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    IMAGES_LIST_UPDATE: null,
+export const actionTypes = keyMirror(
+    {
+        IMAGES_LIST_UPDATE: null,
 
-    ImageEditor: {
-        CLOSE: null,
-        OPEN: null
-    }
-});
+        ImageEditor: {
+            CLOSE: null,
+            OPEN: null
+        }
+    },
+    'componentImages'
+);
 
 export const IMAGE_QUESTIONNAIRE = 'image';
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringConstants.js
index 10049d6..b144965 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,11 +16,14 @@
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 import i18n from 'nfvo-utils/i18n/i18n.js';
 
-export const actionTypes = keyMirror({
-    MONITOR_FILES_DATA_CHANGE: null,
-    MONITOR_UPLOADED: null,
-    MONITOR_DELETED: null
-});
+export const actionTypes = keyMirror(
+    {
+        MONITOR_FILES_DATA_CHANGE: null,
+        MONITOR_UPLOADED: null,
+        MONITOR_DELETED: null
+    },
+    'componentsMonitoring'
+);
 
 export const fileTypes = {
     SNMP_TRAP: 'SNMP_TRAP',
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkConstants.js
index 4e361bb..c36e84e 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,20 +15,23 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    NIC_LIST_EDIT: null,
-    NIC_LIST_UPDATE: null,
+export const actionTypes = keyMirror(
+    {
+        NIC_LIST_EDIT: null,
+        NIC_LIST_UPDATE: null,
 
-    NICEditor: {
-        FILL_DATA: null,
-        CLEAR_DATA: null
+        NICEditor: {
+            FILL_DATA: null,
+            CLEAR_DATA: null
+        },
+        NICCreation: {
+            OPEN: null,
+            CLEAR_DATA: null,
+            DATA_CHANGED: null
+        }
     },
-    NICCreation: {
-        OPEN: null,
-        CLEAR_DATA: null,
-        DATA_CHANGED: null
-    }
-});
+    'componentsNetwork'
+);
 
 export const networkTypes = {
     EXTERNAL: 'External',
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesConstants.js
index e3ce4f8..82192f6 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,15 +15,18 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    ADD_SOFTWARE_PRODUCT_COMPONENTS_PROCESS: null,
-    EDIT_SOFTWARE_PRODUCT_COMPONENTS_PROCESS: null,
-    DELETE_SOFTWARE_PRODUCT_COMPONENTS_PROCESS: null,
-    SOFTWARE_PRODUCT_PROCESS_COMPONENTS_EDITOR_OPEN: null,
-    SOFTWARE_PRODUCT_PROCESS_COMPONENTS_EDITOR_CLOSE: null,
-    FETCH_SOFTWARE_PRODUCT_COMPONENTS_PROCESSES: null,
-    SOFTWARE_PRODUCT_PROCESS_DELETE_COMPONENTS_CONFIRM: null
-});
+export const actionTypes = keyMirror(
+    {
+        ADD_SOFTWARE_PRODUCT_COMPONENTS_PROCESS: null,
+        EDIT_SOFTWARE_PRODUCT_COMPONENTS_PROCESS: null,
+        DELETE_SOFTWARE_PRODUCT_COMPONENTS_PROCESS: null,
+        SOFTWARE_PRODUCT_PROCESS_COMPONENTS_EDITOR_OPEN: null,
+        SOFTWARE_PRODUCT_PROCESS_COMPONENTS_EDITOR_CLOSE: null,
+        FETCH_SOFTWARE_PRODUCT_COMPONENTS_PROCESSES: null,
+        SOFTWARE_PRODUCT_PROCESS_DELETE_COMPONENTS_CONFIRM: null
+    },
+    'componentProcesses'
+);
 
 export const optionsInputValues = {
     PROCESS_TYPE: [
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationConstants.js
index 128b3ed..e977faf 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,11 +15,14 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    OPEN: null,
-    RESET_DATA: null,
-    SOFTWARE_PRODUCT_CREATED: null,
-    VENDOR_LIST_LOADED: null
-});
+export const actionTypes = keyMirror(
+    {
+        OPEN: null,
+        RESET_DATA: null,
+        SOFTWARE_PRODUCT_CREATED: null,
+        VENDOR_LIST_LOADED: null
+    },
+    'softwareProductCreation'
+);
 
 export const SP_CREATION_FORM_NAME = 'SPCREATIONFORM';
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/dependencies/SoftwareProductDependenciesConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/dependencies/SoftwareProductDependenciesConstants.js
index 32c7387..9c1605c 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/dependencies/SoftwareProductDependenciesConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/dependencies/SoftwareProductDependenciesConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,11 +15,14 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    SOFTWARE_PRODUCT_DEPENDENCIES_LIST_UPDATE: null,
-    ADD_SOFTWARE_PRODUCT_DEPENDENCY: null,
-    UPDATE_NEW_SOFTWARE_PRODUCT_DEPENDENCY: null
-});
+export const actionTypes = keyMirror(
+    {
+        SOFTWARE_PRODUCT_DEPENDENCIES_LIST_UPDATE: null,
+        ADD_SOFTWARE_PRODUCT_DEPENDENCY: null,
+        UPDATE_NEW_SOFTWARE_PRODUCT_DEPENDENCY: null
+    },
+    'softwareProductDependencies'
+);
 
 export const relationTypes = {
     DEPENDS_ON: 'dependsOn'
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/deployment/SoftwareProductDeploymentConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/deployment/SoftwareProductDeploymentConstants.js
index 6c0d3ef..6f026cd 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/deployment/SoftwareProductDeploymentConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/deployment/SoftwareProductDeploymentConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,14 +15,17 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    FETCH_SOFTWARE_PRODUCT_DEPLOYMENT_FLAVORS: null,
+export const actionTypes = keyMirror(
+    {
+        FETCH_SOFTWARE_PRODUCT_DEPLOYMENT_FLAVORS: null,
 
-    deploymentFlavorEditor: {
-        DATA_CHANGED: null,
-        SOFTWARE_PRODUCT_DEPLOYMENT_FILL_DATA: null,
-        SOFTWARE_PRODUCT_DEPLOYMENT_CLEAR_DATA: null
-    }
-});
+        deploymentFlavorEditor: {
+            DATA_CHANGED: null,
+            SOFTWARE_PRODUCT_DEPLOYMENT_FILL_DATA: null,
+            SOFTWARE_PRODUCT_DEPLOYMENT_CLEAR_DATA: null
+        }
+    },
+    'softwareProductDeployment'
+);
 
 export const DEPLOYMENT_FLAVORS_FORM_NAME = 'DEPLOYMENT_FLAVORS_FORM_NAME';
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksConstants.js
index 17e4bdf..b06409a 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,6 +15,9 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    FETCH_SOFTWARE_PRODUCT_NETWORKS: null
-});
+export const actionTypes = keyMirror(
+    {
+        FETCH_SOFTWARE_PRODUCT_NETWORKS: null
+    },
+    'softwareProductNetworks'
+);
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesConstants.js
index 7f09ea8..89e54dc 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,15 +15,18 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    ADD_SOFTWARE_PRODUCT_PROCESS: null,
-    EDIT_SOFTWARE_PRODUCT_PROCESS: null,
-    DELETE_SOFTWARE_PRODUCT_PROCESS: null,
-    SOFTWARE_PRODUCT_PROCESS_EDITOR_OPEN: null,
-    SOFTWARE_PRODUCT_PROCESS_EDITOR_CLOSE: null,
-    FETCH_SOFTWARE_PRODUCT_PROCESSES: null,
-    SOFTWARE_PRODUCT_PROCESS_DELETE_CONFIRM: null
-});
+export const actionTypes = keyMirror(
+    {
+        ADD_SOFTWARE_PRODUCT_PROCESS: null,
+        EDIT_SOFTWARE_PRODUCT_PROCESS: null,
+        DELETE_SOFTWARE_PRODUCT_PROCESS: null,
+        SOFTWARE_PRODUCT_PROCESS_EDITOR_OPEN: null,
+        SOFTWARE_PRODUCT_PROCESS_EDITOR_CLOSE: null,
+        FETCH_SOFTWARE_PRODUCT_PROCESSES: null,
+        SOFTWARE_PRODUCT_PROCESS_DELETE_CONFIRM: null
+    },
+    'softwareProductProcesses'
+);
 
 export const optionsInputValues = {
     PROCESS_TYPE: [
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/vnfMarketPlace/VNFImportConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/vnfMarketPlace/VNFImportConstants.js
index e4540dd..e0aa481 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/vnfMarketPlace/VNFImportConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/vnfMarketPlace/VNFImportConstants.js
@@ -1,21 +1,24 @@
-/*
- * Copyright 2017 Huawei Technologies Co., Ltd.
+/*!
+ * Copyright © 2016-2018 European Support Limited
  *
  * 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
+ * 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.
+ * 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.
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    OPEN: null,
-    RESET_DATA: null
-});
+export const actionTypes = keyMirror(
+    {
+        OPEN: null,
+        RESET_DATA: null
+    },
+    'VNFImport'
+);
diff --git a/openecomp-ui/src/sdc-app/onboarding/userNotifications/UserNotificationsConstants.js b/openecomp-ui/src/sdc-app/onboarding/userNotifications/UserNotificationsConstants.js
index b2466f1..a208248 100644
--- a/openecomp-ui/src/sdc-app/onboarding/userNotifications/UserNotificationsConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/userNotifications/UserNotificationsConstants.js
@@ -1,13 +1,31 @@
+/*!
+ * Copyright © 2016-2018 European Support Limited
+ *
+ * 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.
+ */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    NOTIFICATION: null,
-    LOAD_NOTIFICATIONS: null,
-    LOAD_PREV_NOTIFICATIONS: null,
-    UPDATE_READ_NOTIFICATION: null,
-    RESET_NEW_NOTIFICATIONS: null,
-    TOGGLE_OVERLAY: null
-});
+export const actionTypes = keyMirror(
+    {
+        NOTIFICATION: null,
+        LOAD_NOTIFICATIONS: null,
+        LOAD_PREV_NOTIFICATIONS: null,
+        UPDATE_READ_NOTIFICATION: null,
+        RESET_NEW_NOTIFICATIONS: null,
+        TOGGLE_OVERLAY: null
+    },
+    'userNotifications'
+);
 
 export const notificationType = keyMirror({
     PERMISSION_CHANGED: 'PermissionChanged',
diff --git a/openecomp-ui/src/sdc-app/onboarding/users/UsersConstants.js b/openecomp-ui/src/sdc-app/onboarding/users/UsersConstants.js
index 216d28a..090a6ec 100644
--- a/openecomp-ui/src/sdc-app/onboarding/users/UsersConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/users/UsersConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,10 +13,12 @@
  * or implied. See the License for the specific language governing
  * permissions and limitations under the License.
  */
-
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    USERS_LIST_LOADED: null,
-    GOT_USER_INFO: null
-});
+export const actionTypes = keyMirror(
+    {
+        USERS_LIST_LOADED: null,
+        GOT_USER_INFO: null
+    },
+    'users'
+);
diff --git a/openecomp-ui/src/sdc-app/onboarding/versionsPage/VersionsPageConstants.js b/openecomp-ui/src/sdc-app/onboarding/versionsPage/VersionsPageConstants.js
index 3a3879d..74afde5 100644
--- a/openecomp-ui/src/sdc-app/onboarding/versionsPage/VersionsPageConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/versionsPage/VersionsPageConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,11 +15,14 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    VERSIONS_LOADED: null,
-    SELECT_VERSION: null,
-    SELECT_NONE: null
-});
+export const actionTypes = keyMirror(
+    {
+        VERSIONS_LOADED: null,
+        SELECT_VERSION: null,
+        SELECT_NONE: null
+    },
+    'versionPage'
+);
 
 export const itemTypes = {
     LICENSE_MODEL: 'vendor-license-models',
diff --git a/openecomp-ui/src/sdc-app/onboarding/versionsPage/creation/VersionsPageCreationConstants.js b/openecomp-ui/src/sdc-app/onboarding/versionsPage/creation/VersionsPageCreationConstants.js
index e761232..2d4af64 100644
--- a/openecomp-ui/src/sdc-app/onboarding/versionsPage/creation/VersionsPageCreationConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/versionsPage/creation/VersionsPageCreationConstants.js
@@ -1,5 +1,5 @@
 /*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,11 +15,14 @@
  */
 import keyMirror from 'nfvo-utils/KeyMirror.js';
 
-export const actionTypes = keyMirror({
-    OPEN: null,
-    CLOSE: null,
-    VERSION_CREATED: null
-});
+export const actionTypes = keyMirror(
+    {
+        OPEN: null,
+        CLOSE: null,
+        VERSION_CREATED: null
+    },
+    'versionPageCreation'
+);
 
 export const VERSION_CREATION_FORM_NAME = 'VCREATIONFORM';
 
