[SDC-29] Amdocs OnBoard 1707 initial commit.

Change-Id: Ie4d12a3f574008b792899b368a0902a8b46b5370
Signed-off-by: AviZi <avi.ziv@amdocs.com>
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js
index 631597a..fe95b03 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js
@@ -1,40 +1,35 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
+/*!
  * Copyright (C) 2017 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
- * 
+ *
+ * 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=========================================================
+ * 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 RestAPIUtil from 'nfvo-utils/RestAPIUtil.js';
 import Configuration from 'sdc-app/config/Configuration.js';
 import {actionTypes as entitlementPoolsActionTypes } from './EntitlementPoolsConstants.js';
 import LicenseModelActionHelper from 'sdc-app/onboarding/licenseModel/LicenseModelActionHelper.js';
 
-function baseUrl(licenseModelId) {
+function baseUrl(licenseModelId, version) {
 	const restPrefix = Configuration.get('restPrefix');
-	return `${restPrefix}/v1.0/vendor-license-models/${licenseModelId}/entitlement-pools`;
+	const {id: versionId} = version;
+	return `${restPrefix}/v1.0/vendor-license-models/${licenseModelId}/versions/${versionId}/entitlement-pools`;
 }
 
-function fetchEntitlementPoolsList(licenseModelId, version) {
-	let versionQuery = version ? `?version=${version}` : '';
-	return RestAPIUtil.fetch(`${baseUrl(licenseModelId)}${versionQuery}`);
+function fetchEntitlementPoolsList(licenseModelId, version) {	
+	return RestAPIUtil.fetch(`${baseUrl(licenseModelId, version)}`);
 }
 
-function postEntitlementPool(licenseModelId, entitlementPool) {
-	return RestAPIUtil.create(baseUrl(licenseModelId), {
+function postEntitlementPool(licenseModelId, entitlementPool, version) {
+	return RestAPIUtil.post(baseUrl(licenseModelId, version), {
 		name: entitlementPool.name,
 		description: entitlementPool.description,
 		thresholdValue: entitlementPool.thresholdValue,
@@ -49,8 +44,8 @@
 }
 
 
-function putEntitlementPool(licenseModelId, previousEntitlementPool, entitlementPool) {
-	return RestAPIUtil.save(`${baseUrl(licenseModelId)}/${entitlementPool.id}`, {
+function putEntitlementPool(licenseModelId, previousEntitlementPool, entitlementPool, version) {
+	return RestAPIUtil.put(`${baseUrl(licenseModelId, version)}/${entitlementPool.id}`, {
 		name: entitlementPool.name,
 		description: entitlementPool.description,
 		thresholdValue: entitlementPool.thresholdValue,
@@ -64,8 +59,8 @@
 	});
 }
 
-function deleteEntitlementPool(licenseModelId, entitlementPoolId) {
-	return RestAPIUtil.destroy(`${baseUrl(licenseModelId)}/${entitlementPoolId}`);
+function deleteEntitlementPool(licenseModelId, entitlementPoolId, version) {
+	return RestAPIUtil.destroy(`${baseUrl(licenseModelId, version)}/${entitlementPoolId}`);
 }
 
 
@@ -84,8 +79,8 @@
 		});
 	},
 
-	deleteEntitlementPool(dispatch, {licenseModelId, entitlementPoolId}) {
-		return deleteEntitlementPool(licenseModelId, entitlementPoolId).then(() => {
+	deleteEntitlementPool(dispatch, {licenseModelId, entitlementPoolId, version}) {
+		return deleteEntitlementPool(licenseModelId, entitlementPoolId, version).then(() => {
 			dispatch({
 				type: entitlementPoolsActionTypes.DELETE_ENTITLEMENT_POOL,
 				entitlementPoolId
@@ -106,9 +101,9 @@
 		});
 	},
 
-	saveEntitlementPool(dispatch, {licenseModelId, previousEntitlementPool, entitlementPool}) {
+	saveEntitlementPool(dispatch, {licenseModelId, previousEntitlementPool, entitlementPool, version}) {
 		if (previousEntitlementPool) {
-			return putEntitlementPool(licenseModelId, previousEntitlementPool, entitlementPool).then(() => {
+			return putEntitlementPool(licenseModelId, previousEntitlementPool, entitlementPool, version).then(() => {
 				dispatch({
 					type: entitlementPoolsActionTypes.EDIT_ENTITLEMENT_POOL,
 					entitlementPool
@@ -116,11 +111,12 @@
 			});
 		}
 		else {
-			return postEntitlementPool(licenseModelId, entitlementPool).then(response => {
+			return postEntitlementPool(licenseModelId, entitlementPool, version).then(response => {
 				dispatch({
 					type: entitlementPoolsActionTypes.ADD_ENTITLEMENT_POOL,
 					entitlementPool: {
 						...entitlementPool,
+						referencingFeatureGroups: [],
 						id: response.value
 					}
 				});
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsConfirmationModal.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsConfirmationModal.jsx
deleted file mode 100644
index 04f038f..0000000
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsConfirmationModal.jsx
+++ /dev/null
@@ -1,51 +0,0 @@
-import React from 'react';
-import {connect} from 'react-redux';
-import ConfirmationModalView from 'nfvo-components/confirmations/ConfirmationModalView.jsx';
-import EntitlementPoolsActionHelper from './EntitlementPoolsActionHelper.js';
-import i18n from 'nfvo-utils/i18n/i18n.js';
-
-function renderMsg(entitlementPoolToDelete) {
-	let poolName = entitlementPoolToDelete ? entitlementPoolToDelete.name : '';
-	let msg = i18n('Are you sure you want to delete "{poolName}"?', {poolName});
-	let subMsg = entitlementPoolToDelete
-	&& entitlementPoolToDelete.referencingFeatureGroups
-	&& entitlementPoolToDelete.referencingFeatureGroups.length > 0 ?
-		i18n('This entitlement pool is associated with one or more feature groups') :
-		'';
-	return (
-		<div>
-			<p>{msg}</p>
-			<p>{subMsg}</p>
-		</div>
-	);
-};
-
-const mapStateToProps = ({licenseModel: {entitlementPool}}, {licenseModelId}) => {
-	let {entitlementPoolToDelete} = entitlementPool;
-	const show = entitlementPoolToDelete !== false;
-	return {
-		show,
-		title: 'Warning!',
-		type: 'warning',
-		msg: renderMsg(entitlementPoolToDelete),
-		confirmationDetails: {entitlementPoolToDelete, licenseModelId}
-	};
-};
-
-const mapActionsToProps = (dispatch) => {
-	return {
-		onConfirmed: ({entitlementPoolToDelete, licenseModelId}) => {
-			EntitlementPoolsActionHelper.deleteEntitlementPool(dispatch, {
-				licenseModelId,
-				entitlementPoolId: entitlementPoolToDelete.id
-			});
-			EntitlementPoolsActionHelper.hideDeleteConfirm(dispatch);
-		},
-		onDeclined: () => {
-			EntitlementPoolsActionHelper.hideDeleteConfirm(dispatch);
-		}
-	};
-};
-
-export default connect(mapStateToProps, mapActionsToProps)(ConfirmationModalView);
-
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 8a85507..ba0b238 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsConstants.js
@@ -1,25 +1,21 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
+/*!
  * Copyright (C) 2017 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
- * 
+ *
+ * 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=========================================================
+ * 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({
 
@@ -27,7 +23,6 @@
 	ADD_ENTITLEMENT_POOL: null,
 	EDIT_ENTITLEMENT_POOL: null,
 	DELETE_ENTITLEMENT_POOL: null,
-	ENTITLEMENT_POOLS_DELETE_CONFIRM: null,
 
 	entitlementPoolsEditor: {
 		OPEN: null,
@@ -107,6 +102,14 @@
 	]
 };
 
+export const extractValue = (item) => {
+	if (item === undefined) {return '';} //TODO fix it later
+	return  item ? item.choice === optionInputOther.OTHER ? item.other : InputOptions.getTitleByName(optionsInputValues, item.choice) : '';
+};
 
+export const extractUnits = (units) => {
+	if (units === undefined) {return '';} //TODO fix it later
+	return units === 'Absolute' ? '' : '%';
+};
 
-
+export const SP_ENTITLEMENT_POOL_FORM = 'SPENTITLEMENTPOOL';
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditor.js
index d5bd07e..f89cf8f 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditor.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditor.js
@@ -1,52 +1,60 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
+/*!
  * Copyright (C) 2017 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
- * 
+ *
+ * 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=========================================================
+ * 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 {connect} from 'react-redux';
 import EntitlementPoolsActionHelper from './EntitlementPoolsActionHelper.js';
 import EntitlementPoolsEditorView from './EntitlementPoolsEditorView.jsx';
+import ValidationHelper from 'sdc-app/common/helpers/ValidationHelper.js';
 
 const mapStateToProps = ({licenseModel: {entitlementPool}}) => {
 
 
-	let {data} = entitlementPool.entitlementPoolEditor;
-	
-	let previousData;
+	let {data, genericFieldInfo, formReady} = entitlementPool.entitlementPoolEditor;
+
+	let isFormValid = ValidationHelper.checkFormValid(genericFieldInfo);
+
+	let previousData, EPNames = {};
 	const entitlementPoolId = data ? data.id : null;
 	if(entitlementPoolId) {
 		previousData = entitlementPool.entitlementPoolsList.find(entitlementPool => entitlementPool.id === entitlementPoolId);
 	}
 
+	const list = entitlementPool.entitlementPoolsList;
+	for (let i = 0; i < list.length; i++) {
+		EPNames[list[i].name] = list[i].id;
+	}
+
 	return {
 		data,
-		previousData
+		genericFieldInfo,
+		previousData,
+		isFormValid,
+		formReady,
+		EPNames
 	};
 };
 
-const mapActionsToProps = (dispatch, {licenseModelId}) => {
+const mapActionsToProps = (dispatch, {licenseModelId, version}) => {
 	return {
-		onDataChanged: deltaData => EntitlementPoolsActionHelper.entitlementPoolsEditorDataChanged(dispatch, {deltaData}),
+		onDataChanged: (deltaData, formName, customValidations) => ValidationHelper.dataChanged(dispatch, {deltaData, formName, customValidations}),
 		onCancel: () => EntitlementPoolsActionHelper.closeEntitlementPoolsEditor(dispatch),
 		onSubmit: ({previousEntitlementPool, entitlementPool}) => {
 			EntitlementPoolsActionHelper.closeEntitlementPoolsEditor(dispatch);
-			EntitlementPoolsActionHelper.saveEntitlementPool(dispatch, {licenseModelId, previousEntitlementPool, entitlementPool});
-		}
+			EntitlementPoolsActionHelper.saveEntitlementPool(dispatch, {licenseModelId, previousEntitlementPool, entitlementPool, version});
+		},
+		onValidateForm: (formName) => ValidationHelper.validateForm(dispatch, formName)
 	};
 };
 
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorReducer.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorReducer.js
index 86e97ec..db1a3a9 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorReducer.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorReducer.js
@@ -1,30 +1,79 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
+/*!
  * Copyright (C) 2017 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
- * 
+ *
+ * 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=========================================================
+ * 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 {actionTypes, defaultState} from './EntitlementPoolsConstants.js';
+import {actionTypes, defaultState, SP_ENTITLEMENT_POOL_FORM} from './EntitlementPoolsConstants.js';
 
 export default (state = {}, action) => {
 	switch (action.type) {
 		case actionTypes.entitlementPoolsEditor.OPEN:
 			return {
 				...state,
+				formReady: null,
+				formName: SP_ENTITLEMENT_POOL_FORM,
+				genericFieldInfo: {
+					'name' : {
+						isValid: true,
+						errorText: '',
+						validations: [{type: 'required', data: true}, {type: 'maxLength', data: 120}]
+					},
+					'description' : {
+						isValid: true,
+						errorText: '',
+						validations: [{type: 'required', data: true}, {type: 'maxLength', data: 1000}]
+					},
+					'manufacturerReferenceNumber' : {
+						isValid: true,
+						errorText: '',
+						validations: [{type: 'required', data: true}, {type: 'maxLength', data: 100}]
+					},
+					'increments' : {
+						isValid: true,
+						errorText: '',
+						validations: [{type: 'maxLength', data: 120}]
+					},
+					'operationalScope' : {
+						isValid: true,
+						errorText: '',
+						validations: [{type: 'required', data: true}]
+					},
+					'thresholdUnits' : {
+						isValid: true,
+						errorText: '',
+						validations: [{type: 'required', data: true}]
+					},
+					'thresholdValue' : {
+						isValid: true,
+						errorText: '',
+						validations: [{type: 'required', data: true}]
+					},
+					'entitlementMetric' : {
+						isValid: true,
+						errorText: '',
+						validations: [{type: 'required', data: true}]
+					},
+					'aggregationFunction' : {
+						isValid: true,
+						errorText: '',
+						validations: [{type: 'required', data: true}]
+					},
+					'time' : {
+						isValid: true,
+						errorText: '',
+						validations: [{type: 'required', data: true}]
+					}
+				},
 				data: action.entitlementPool ? {...action.entitlementPool} : defaultState.ENTITLEMENT_POOLS_EDITOR_DATA
 			};
 		case actionTypes.entitlementPoolsEditor.DATA_CHANGED:
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorView.jsx
index 77c5a12..d484437 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorView.jsx
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorView.jsx
@@ -1,14 +1,31 @@
+/*!
+ * Copyright (C) 2017 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.
+ */
 import React from 'react';
 
-
 import i18n from 'nfvo-utils/i18n/i18n.js';
+import Validator from 'nfvo-utils/Validator.js';
 
-import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx';
-import ValidationInput from 'nfvo-components/input/validation/ValidationInput.jsx';
-import {optionsInputValues as  EntitlementPoolsOptionsInputValues, thresholdUnitType}  from  './EntitlementPoolsConstants.js';
+import Input from 'nfvo-components/input/validation/Input.jsx';
+import InputOptions from 'nfvo-components/input/validation/InputOptions.jsx';
+import Form from 'nfvo-components/input/validation/Form.jsx';
+import GridSection from 'nfvo-components/grid/GridSection.jsx';
+import GridItem from 'nfvo-components/grid/GridItem.jsx';
+import {optionsInputValues as  EntitlementPoolsOptionsInputValues, thresholdUnitType, SP_ENTITLEMENT_POOL_FORM}  from  './EntitlementPoolsConstants.js';
 import {other as optionInputOther} from 'nfvo-components/input/inputOptions/InputOptions.jsx';
 
-
 const EntitlementPoolPropType = React.PropTypes.shape({
 	id: React.PropTypes.string,
 	name: React.PropTypes.string,
@@ -33,11 +50,172 @@
 	})
 });
 
+const EntitlementPoolsFormContent = ({data, genericFieldInfo, onDataChanged, validateName, validateChoiceWithOther, validateTimeOtherValue, thresholdValueValidation}) => {
+	let {
+		name, description, manufacturerReferenceNumber, operationalScope , aggregationFunction,  thresholdUnits, thresholdValue,
+		increments, time, entitlementMetric} = data;
+
+	return (
+		<GridSection>
+			<GridItem colSpan={2}>
+				<Input
+					onChange={name => onDataChanged({name}, SP_ENTITLEMENT_POOL_FORM, {name: validateName})}
+					isValid={genericFieldInfo.name.isValid}
+					isRequired={true}
+					errorText={genericFieldInfo.name.errorText}
+					label={i18n('Name')}
+					value={name}
+					data-test-id='create-ep-name'
+					type='text'/>
+			</GridItem>
+			<GridItem colSpan={2}>
+				<InputOptions
+					onInputChange={()=>{}}
+					isMultiSelect={true}
+
+					isRequired={true}
+					onEnumChange={operationalScope => onDataChanged({operationalScope:{choices: operationalScope, other: ''}},
+						SP_ENTITLEMENT_POOL_FORM, {operationalScope: validateChoiceWithOther})}
+					onOtherChange={operationalScope => onDataChanged({operationalScope:{choices: [optionInputOther.OTHER],
+						other: operationalScope}}, SP_ENTITLEMENT_POOL_FORM, {operationalScope: validateChoiceWithOther})}
+					label={i18n('Operational Scope')}
+					data-test-id='create-ep-operational-scope'
+					type='select'
+					multiSelectedEnum={operationalScope && operationalScope.choices}
+					otherValue={operationalScope && operationalScope.other}
+					values={EntitlementPoolsOptionsInputValues.OPERATIONAL_SCOPE}
+					isValid={genericFieldInfo.operationalScope.isValid}
+					errorText={genericFieldInfo.operationalScope.errorText} />
+			</GridItem>
+			<GridItem colSpan={2} stretch>
+				<Input
+					onChange={description => onDataChanged({description}, SP_ENTITLEMENT_POOL_FORM)}
+					isValid={genericFieldInfo.description.isValid}
+					errorText={genericFieldInfo.description.errorText}
+					label={i18n('Description')}
+					value={description}
+					isRequired={true}
+					data-test-id='create-ep-description'
+					type='textarea'/>
+			</GridItem>
+			<GridItem colSpan={2}>
+				<div className='threshold-section'>
+					<Input
+						isRequired={true}
+						onChange={e => {
+							// setting the unit to the correct value
+							const selectedIndex = e.target.selectedIndex;
+							const val = e.target.options[selectedIndex].value;
+							onDataChanged({thresholdUnits: val}, SP_ENTITLEMENT_POOL_FORM);
+							// TODO make sure that the value is valid too
+							onDataChanged({thresholdValue: thresholdValue}, SP_ENTITLEMENT_POOL_FORM,{thresholdValue : thresholdValueValidation});}
+
+						}
+						value={thresholdUnits}
+						label={i18n('Threshold Units')}
+						data-test-id='create-ep-threshold-units'
+						isValid={genericFieldInfo.thresholdUnits.isValid}
+						errorText={genericFieldInfo.thresholdUnits.errorText}
+						groupClassName='bootstrap-input-options'
+						className='input-options-select'
+						type='select' >
+						{EntitlementPoolsOptionsInputValues.THRESHOLD_UNITS.map(mtype =>
+							<option key={mtype.enum} value={mtype.enum}>{`${mtype.title}`}</option>)}
+					</Input>
+
+					<Input
+						className='entitlement-pools-form-row-threshold-value'
+						onChange={thresholdValue => onDataChanged({thresholdValue}, SP_ENTITLEMENT_POOL_FORM,
+							{thresholdValue : thresholdValueValidation})}
+						label={i18n('Threshold Value')}
+						isValid={genericFieldInfo.thresholdValue.isValid}
+						errorText={genericFieldInfo.thresholdValue.errorText}
+						data-test-id='create-ep-threshold-value'
+						value={thresholdValue}
+						isRequired={true}
+						type='text'/>
+				</div>
+				<InputOptions
+					onInputChange={()=>{}}
+					isMultiSelect={false}
+					isRequired={true}
+					onEnumChange={entitlementMetric => onDataChanged({entitlementMetric:{choice: entitlementMetric, other: ''}},
+						SP_ENTITLEMENT_POOL_FORM, {entitlementMetric: validateChoiceWithOther})}
+					onOtherChange={entitlementMetric => onDataChanged({entitlementMetric:{choice: optionInputOther.OTHER,
+						other: entitlementMetric}}, SP_ENTITLEMENT_POOL_FORM, {entitlementMetric: validateChoiceWithOther})}
+					label={i18n('Entitlement Metric')}
+					data-test-id='create-ep-entitlement-metric'
+					type='select'
+					required={true}
+					selectedEnum={entitlementMetric && entitlementMetric.choice}
+					otherValue={entitlementMetric && entitlementMetric.other}
+					values={EntitlementPoolsOptionsInputValues.ENTITLEMENT_METRIC}
+					isValid={genericFieldInfo.entitlementMetric.isValid}
+					errorText={genericFieldInfo.entitlementMetric.errorText} />
+				<InputOptions
+					onInputChange={()=>{}}
+					isMultiSelect={false}
+					isRequired={true}
+					onEnumChange={aggregationFunction => onDataChanged({aggregationFunction:{choice: aggregationFunction, other: ''}},
+						SP_ENTITLEMENT_POOL_FORM, {aggregationFunction: validateChoiceWithOther})}
+					onOtherChange={aggregationFunction => onDataChanged({aggregationFunction:{choice: optionInputOther.OTHER,
+						other: aggregationFunction}}, SP_ENTITLEMENT_POOL_FORM, {aggregationFunction: validateChoiceWithOther})}
+					label={i18n('Aggregate Function')}
+					data-test-id='create-ep-aggregate-function'
+					type='select'
+					required={true}
+					selectedEnum={aggregationFunction && aggregationFunction.choice}
+					otherValue={aggregationFunction && aggregationFunction.other}
+					values={EntitlementPoolsOptionsInputValues.AGGREGATE_FUNCTION}
+					isValid={genericFieldInfo.aggregationFunction.isValid}
+					errorText={genericFieldInfo.aggregationFunction.errorText} />
+			</GridItem>
+			<GridItem colSpan={2}>
+				<Input
+					onChange={manufacturerReferenceNumber => onDataChanged({manufacturerReferenceNumber}, SP_ENTITLEMENT_POOL_FORM)}
+					label={i18n('Manufacturer Reference Number')}
+					value={manufacturerReferenceNumber}
+					isRequired={true}
+					data-test-id='create-ep-reference-number'
+					type='text'/>
+			</GridItem>
+			<GridItem colSpan={2}>
+				<InputOptions
+					onInputChange={()=>{}}
+					isMultiSelect={false}
+					isRequired={true}
+					onEnumChange={time => onDataChanged({time:{choice: time, other: ''}},
+						SP_ENTITLEMENT_POOL_FORM, {time: validateChoiceWithOther})}
+					onOtherChange={time => onDataChanged({time:{choice: optionInputOther.OTHER,
+						other: time}}, SP_ENTITLEMENT_POOL_FORM, {time: validateTimeOtherValue})}
+					label={i18n('Time')}
+					data-test-id='create-ep-time'
+					type='select'
+					required={true}
+					selectedEnum={time && time.choice}
+					otherValue={time && time.other}
+					values={EntitlementPoolsOptionsInputValues.TIME}
+					isValid={genericFieldInfo.time.isValid}
+					errorText={genericFieldInfo.time.errorText} />
+			</GridItem>
+			<GridItem colSpan={2}>
+				<Input
+					onChange={increments => onDataChanged({increments}, SP_ENTITLEMENT_POOL_FORM)}
+					label={i18n('Increments')}
+					value={increments}
+					data-test-id='create-ep-increments'
+					type='text'/>
+			</GridItem>
+		</GridSection>
+	);
+};
+
 class EntitlementPoolsEditorView extends React.Component {
 
 	static propTypes = {
 		data: EntitlementPoolPropType,
 		previousData: EntitlementPoolPropType,
+		EPNames: React.PropTypes.object,
 		isReadOnlyMode: React.PropTypes.bool,
 		onDataChanged: React.PropTypes.func.isRequired,
 		onSubmit: React.PropTypes.func.isRequired,
@@ -49,112 +227,34 @@
 	};
 
 	render() {
-		let {data = {}, onDataChanged, isReadOnlyMode} = this.props;
-		let {
-			name, description, manufacturerReferenceNumber, operationalScope, aggregationFunction, thresholdUnits, thresholdValue,
-			increments, time, entitlementMetric} = data;
-		let thresholdValueValidation = thresholdUnits === thresholdUnitType.PERCENTAGE ? {numeric: true, required: true, maxValue: 100} : {numeric: true, required: true};
-		let timeValidation = time && time.choice === optionInputOther.OTHER ? {numeric: true, required: true} : {required: true};
+		let {data = {}, onDataChanged, isReadOnlyMode, genericFieldInfo} = this.props;
+
 
 		return (
-			<ValidationForm
-				ref='validationForm'
-				hasButtons={true}
-				onSubmit={ () => this.submit() }
-				onReset={ () => this.props.onCancel() }
-				labledButtons={true}
-				isReadOnlyMode={isReadOnlyMode}
-				className='entitlement-pools-form'>
-				<div className='entitlement-pools-form-row'>
-					<ValidationInput
-						onChange={name => onDataChanged({name})}
-						label={i18n('Name')}
-						value={name}
-						validations={{maxLength: 120, required: true}}
-						type='text'/>
-
-					<ValidationInput
-						isMultiSelect={true}
-						onEnumChange={operationalScope => onDataChanged({operationalScope:{choices: operationalScope, other: ''}})}
-						onOtherChange={operationalScope => onDataChanged({operationalScope:{choices: [optionInputOther.OTHER], other: operationalScope}})}
-						multiSelectedEnum={operationalScope && operationalScope.choices}
-						label={i18n('Operational Scope')}
-						otherValue={operationalScope && operationalScope.other}
-						validations={{required: true}}
-						values={EntitlementPoolsOptionsInputValues.OPERATIONAL_SCOPE}/>
-
-				</div>
-				<div className='entitlement-pools-form-row'>
-					<ValidationInput
-						onChange={description => onDataChanged({description})}
-						label={i18n('Description')}
-						value={description}
-						validations={{maxLength: 1000, required: true}}
-						type='textarea'/>
-					<div className='entitlement-pools-form-row-group'>
-						<div className='entitlement-pools-form-row'>
-							<ValidationInput
-								onEnumChange={thresholdUnits => onDataChanged({thresholdUnits})}
-								selectedEnum={thresholdUnits}
-								label={i18n('Threshold Value')}
-								type='select'
-								values={EntitlementPoolsOptionsInputValues.THRESHOLD_UNITS}
-								validations={{required: true}}/>
-							<ValidationInput
-								className='entitlement-pools-form-row-threshold-value'
-								onChange={thresholdValue => onDataChanged({thresholdValue})}
-								value={thresholdValue}
-								validations={thresholdValueValidation}
-								type='text'/>
-						</div>
-
-						<ValidationInput
-							onEnumChange={entitlementMetric => onDataChanged({entitlementMetric:{choice: entitlementMetric, other: ''}})}
-							onOtherChange={entitlementMetric => onDataChanged({entitlementMetric:{choice: optionInputOther.OTHER, other: entitlementMetric}})}
-							selectedEnum={entitlementMetric && entitlementMetric.choice}
-							otherValue={entitlementMetric && entitlementMetric.other}
-							label={i18n('Entitlement Metric')}
-							validations={{required: true}}
-							values={EntitlementPoolsOptionsInputValues.ENTITLEMENT_METRIC}/>
-						<ValidationInput
-							onEnumChange={aggregationFunction => onDataChanged({aggregationFunction:{choice: aggregationFunction, other: ''}})}
-							onOtherChange={aggregationFunction => onDataChanged({aggregationFunction:{choice: optionInputOther.OTHER, other: aggregationFunction}})}
-							selectedEnum={aggregationFunction && aggregationFunction.choice}
-							otherValue={aggregationFunction && aggregationFunction.other}
-							validations={{required: true}}
-							label={i18n('Aggregate Function')}
-							values={EntitlementPoolsOptionsInputValues.AGGREGATE_FUNCTION}/>
-
-					</div>
-				</div>
-				<div className='entitlement-pools-form-row'>
-
-					<ValidationInput
-						onChange={manufacturerReferenceNumber => onDataChanged({manufacturerReferenceNumber})}
-						label={i18n('Manufacturer Reference Number')}
-						value={manufacturerReferenceNumber}
-						validations={{maxLength: 100, required: true}}
-						type='text'/>
-
-					<ValidationInput
-						onEnumChange={time => onDataChanged({time:{choice: time, other: ''}})}
-						onOtherChange={time => onDataChanged({time:{choice: optionInputOther.OTHER, other: time}})}
-						selectedEnum={time && time.choice}
-						otherValue={time && time.other}
-						validations={timeValidation}
-						label={i18n('Time')}
-						values={EntitlementPoolsOptionsInputValues.TIME}/>
-				</div>
-				<div className='entitlement-pools-form-row'>
-					<ValidationInput
-						onChange={increments => onDataChanged({increments})}
-						label={i18n('Increments')}
-						value={increments}
-						validations={{maxLength: 120}}
-						type='text'/>
-
-				</div>
-			</ValidationForm>
+			<div>
+				{
+					genericFieldInfo && <Form
+						ref='validationForm'
+						hasButtons={true}
+						onSubmit={ () => this.submit() }
+						onReset={ () => this.props.onCancel() }
+						labledButtons={true}
+						isReadOnlyMode={isReadOnlyMode}
+						isValid={this.props.isFormValid}
+						formReady={this.props.formReady}
+						onValidateForm={() => this.props.onValidateForm(SP_ENTITLEMENT_POOL_FORM) }
+						className='entitlement-pools-form'>
+						<EntitlementPoolsFormContent
+							data={data}
+							genericFieldInfo={genericFieldInfo}
+							onDataChanged={onDataChanged}
+							validateName={(value)=> this.validateName(value)}
+							validateTimeOtherValue ={(value)=> this.validateTimeOtherValue(value)}
+							validateChoiceWithOther={(value)=> this.validateChoiceWithOther(value)}
+							thresholdValueValidation={(value, state)=> this.thresholdValueValidation(value, state)}/>
+					</Form>
+				}
+			</div>
 		);
 	}
 
@@ -162,6 +262,53 @@
 		const {data: entitlementPool, previousData: previousEntitlementPool} = this.props;
 		this.props.onSubmit({entitlementPool, previousEntitlementPool});
 	}
+
+	validateName(value) {
+		const {data: {id}, EPNames} = this.props;
+		const isExists = Validator.isItemNameAlreadyExistsInList({itemId: id, itemName: value, list: EPNames});
+
+		return !isExists ?  {isValid: true, errorText: ''} :
+		{isValid: false, errorText: i18n('Entitlement pool by the name \'' + value + '\' already exists. Entitlement pool name must be unique')};
+	}
+
+	validateTimeOtherValue(value) {
+		return Validator.validate('time', value.other, [{type: 'required', data: true}, {type: 'numeric', data: true}]);
+	}
+
+	validateChoiceWithOther(value) {
+		let chosen = value.choice;
+		// if we have an empty multiple select we have a problem since it's required
+		if (value.choices) {
+			if (value.choices.length === 0) {
+				return  Validator.validate('field', '', [{type: 'required', data: true}]);
+			} else {
+				// continuing validation with the first chosen value in case we have the 'Other' field
+				chosen = value.choices[0];
+			}
+		}
+		if (chosen !== optionInputOther.OTHER) {
+			return  Validator.validate('field', chosen, [{type: 'required', data: true}]);
+		} else { // when 'Other' was chosen, validate other value
+			return  Validator.validate('field', value.other, [{type: 'required', data: true}]);
+		}
+	}
+
+	thresholdValueValidation(value, state) {
+
+		let  unit = state.data.thresholdUnits;
+		if (unit === thresholdUnitType.PERCENTAGE) {
+			return Validator.validate('thresholdValue', value, [
+				{type: 'required', data: true},
+				{type: 'numeric', data: true},
+				{type: 'maximum', data: 100},
+				{type: 'minimum', data: 0}]);
+		} else {
+			return Validator.validate('thresholdValue', value, [
+				{type: 'numeric', data: true},
+				{type: 'required', data: true}]);
+		}
+	}
+
 }
 
 export default EntitlementPoolsEditorView;
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js
index 4b21a2f..993ed48 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js
@@ -1,27 +1,24 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
+/*!
  * Copyright (C) 2017 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
- * 
+ *
+ * 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=========================================================
+ * 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 {connect} from 'react-redux';
+import i18n from 'nfvo-utils/i18n/i18n.js'; 
 import EntitlementPoolsActionHelper from './EntitlementPoolsActionHelper.js';
-import EntitlementPoolsListEditorView from './EntitlementPoolsListEditorView.jsx';
+import EntitlementPoolsListEditorView, {generateConfirmationMsg} from './EntitlementPoolsListEditorView.jsx';
 import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js';
+import {actionTypes as globalMoadlActions}  from 'nfvo-components/modal/GlobalModalConstants.js';
 
 const mapStateToProps = ({licenseModel: {entitlementPool, licenseModelEditor}}) => {
 	let {entitlementPoolsList} = entitlementPool;
@@ -39,13 +36,21 @@
 	};
 };
 
-const mapActionsToProps = (dispatch, {licenseModelId}) => {
+const mapActionsToProps = (dispatch, {licenseModelId, version}) => {
 	return {
 		onAddEntitlementPoolClick: () => EntitlementPoolsActionHelper.openEntitlementPoolsEditor(dispatch),
 		onEditEntitlementPoolClick: entitlementPool => EntitlementPoolsActionHelper.openEntitlementPoolsEditor(dispatch, {entitlementPool}),
-		onDeleteEntitlementPool: entitlementPool => EntitlementPoolsActionHelper.openDeleteEntitlementPoolConfirm(dispatch, {
-			licenseModelId,
-			entitlementPool
+		onDeleteEntitlementPool: entitlementPool => dispatch({
+			type: globalMoadlActions.GLOBAL_MODAL_WARNING,
+			data:{
+				msg: generateConfirmationMsg(entitlementPool),				
+				title: i18n('Warning'),				
+				onConfirmed: ()=>EntitlementPoolsActionHelper.deleteEntitlementPool(dispatch, {
+					licenseModelId,
+					entitlementPoolId: entitlementPool.id,
+					version
+				})
+			}
 		})
 	};
 };
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditorView.jsx
index 52df102..07a6f21 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditorView.jsx
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditorView.jsx
@@ -1,3 +1,18 @@
+/*!
+ * Copyright (C) 2017 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.
+ */
 import React from 'react';
 
 import i18n from 'nfvo-utils/i18n/i18n.js';
@@ -6,10 +21,7 @@
 import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx';
 
 import EntitlementPoolsEditor from './EntitlementPoolsEditor.js';
-import InputOptions, {other as optionInputOther} from 'nfvo-components/input/inputOptions/InputOptions.jsx';
-import {optionsInputValues} from './EntitlementPoolsConstants';
-import EntitlementPoolsConfirmationModal from './EntitlementPoolsConfirmationModal.jsx';
-
+import {extractUnits, extractValue} from './EntitlementPoolsConstants';
 
 class EntitlementPoolsListEditorView extends React.Component {
 	static propTypes = {
@@ -33,35 +45,33 @@
 	};
 
 	render() {
-		let {licenseModelId, vendorName, isReadOnlyMode, isDisplayModal, isModalInEditMode} = this.props;
+		let {licenseModelId, vendorName, isReadOnlyMode, isDisplayModal, isModalInEditMode, version} = this.props;
 		let {onAddEntitlementPoolClick} = this.props;
 		const {localFilter} = this.state;
 
 		return (
 			<div className='entitlement-pools-list-editor'>
 				<ListEditorView
-					title={i18n('Entitlement Pools for {vendorName} License Model', {vendorName})}
+					title={i18n('Entitlement Pools', {vendorName})}
 					plusButtonTitle={i18n('Add Entitlement Pool')}
 					onAdd={onAddEntitlementPoolClick}
 					filterValue={localFilter}
-					onFilter={filter => this.setState({localFilter: filter})}
+					onFilter={value => this.setState({localFilter: value})}
 					isReadOnlyMode={isReadOnlyMode}>
 					{this.filterList().map(entitlementPool => this.renderEntitlementPoolListItem(entitlementPool, isReadOnlyMode))}
 				</ListEditorView>
-				<Modal show={isDisplayModal} bsSize='large' animation={true} className='entitlement-pools-modal'>
+				<Modal show={isDisplayModal} bsSize='large' animation={true} className='onborading-modal entitlement-pools-modal'>
 					<Modal.Header>
 						<Modal.Title>{`${isModalInEditMode ? i18n('Edit Entitlement Pool') : i18n('Create New Entitlement Pool')}`}</Modal.Title>
 					</Modal.Header>
 					<Modal.Body>
 						{
 							isDisplayModal && (
-								<EntitlementPoolsEditor  licenseModelId={licenseModelId} isReadOnlyMode={isReadOnlyMode}/>
+								<EntitlementPoolsEditor version={version} licenseModelId={licenseModelId} isReadOnlyMode={isReadOnlyMode}/>
 							)
 						}
 					</Modal.Body>
 				</Modal>
-
-				<EntitlementPoolsConfirmationModal licenseModelId={licenseModelId}/>
 			</div>
 		);
 	}
@@ -92,14 +102,15 @@
 				className='list-editor-item-view'
 				isReadOnlyMode={isReadOnlyMode}>
 				<div className='list-editor-item-view-field'>
+
 					<div className='title'>{i18n('Name')}</div>
-					<div className='text name'>{name}</div>
+					<div ><div className='textEllipses text name'>{name}</div></div>
 				</div>
 
 				<div className='list-editor-item-view-field'>
 					<div className='title'>{i18n('Entitlement')}</div>
-					<div className='entitlement-parameters'>{`${this.extractValue(aggregationFunction)} ${this.extractValue(entitlementMetric)} per  ${this.extractValue(time)}`}</div>
-					<div className='entitlement-pools-count'>{`${thresholdValue ? thresholdValue : ''} ${this.extractUnits(thresholdUnits)}`}</div>
+					<div className='entitlement-parameters'>{`${extractValue(aggregationFunction)} ${extractValue(entitlementMetric)} per  ${extractValue(time)}`}</div>
+					<div className='entitlement-pools-count'>{`${thresholdValue ? thresholdValue : ''} ${extractUnits(thresholdUnits)}`}</div>
 				</div>
 
 				<div className='list-editor-item-view-field'>
@@ -115,18 +126,22 @@
 		);
 	}
 
-
-
-	extractUnits(units) {
-		if (units === undefined) {return '';} //TODO fix it later
-		return units === 'Absolute' ? '' : '%';
-	}
-
-	extractValue(item) {
-		if (item === undefined) {return '';} //TODO fix it later
-
-		return  item ? item.choice === optionInputOther.OTHER ? item.other : InputOptions.getTitleByName(optionsInputValues, item.choice) : '';
-	}
 }
 
 export default EntitlementPoolsListEditorView;
+
+export function generateConfirmationMsg(entitlementPoolToDelete) {
+	let poolName = entitlementPoolToDelete ? entitlementPoolToDelete.name : '';
+	let msg = i18n('Are you sure you want to delete "{poolName}"?', {poolName});
+	let subMsg = entitlementPoolToDelete
+	&& entitlementPoolToDelete.referencingFeatureGroups
+	&& entitlementPoolToDelete.referencingFeatureGroups.length > 0 ?
+		i18n('This entitlement pool is associated with one or more feature groups') :
+		'';
+	return (
+		<div>
+			<p>{msg}</p>
+			<p>{subMsg}</p>
+		</div>
+	);
+}
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListReducer.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListReducer.js
index 63e351f..fefd823 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListReducer.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListReducer.js
@@ -1,23 +1,18 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
+/*!
  * Copyright (C) 2017 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
- * 
+ *
+ * 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=========================================================
+ * 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 {actionTypes} from './EntitlementPoolsConstants';
 export default (state = [], action) => {
 	switch (action.type) {