schema:
             $ref: 'components.yaml#/components/schemas/RestDmiPluginRegistration'
     responses:
-      201:
-        $ref: 'components.yaml#/components/responses/Created'
+      204:
+        $ref: 'components.yaml#/components/responses/NoContent'
       400:
         $ref: 'components.yaml#/components/responses/BadRequest'
       401:
 
 /*
  *  ============LICENSE_START=======================================================
  *  Copyright (C) 2021 Bell Canada
+ *  Modifications Copyright (C) 2022 Nordix Foundation
  *  ================================================================================
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
  *  You may obtain a copy of the License at
  *
  *        http://www.apache.org/licenses/LICENSE-2.0
+ *
  *  Unless required by applicable law or agreed to in writing, software
  *  distributed under the License is distributed on an "AS IS" BASIS,
  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import javax.validation.Valid;
+import lombok.RequiredArgsConstructor;
 import org.onap.cps.ncmp.api.NetworkCmProxyDataService;
 import org.onap.cps.ncmp.api.models.DmiPluginRegistration;
 import org.onap.cps.ncmp.rest.api.NetworkCmProxyInventoryApi;
 
 @RestController
 @RequestMapping("${rest.api.ncmp-inventory-base-path}")
+@RequiredArgsConstructor
 public class NetworkCmProxyInventoryController implements NetworkCmProxyInventoryApi {
 
     private final NetworkCmProxyDataService networkCmProxyDataService;
     private final ObjectMapper objectMapper;
 
-    /**
-     * Constructor Injection for Dependencies.
-     * @param networkCmProxyDataService Data Service Interface
-     * @param objectMapper Object Mapper
-     */
-    public NetworkCmProxyInventoryController(final NetworkCmProxyDataService networkCmProxyDataService,
-        final ObjectMapper objectMapper) {
-        this.networkCmProxyDataService = networkCmProxyDataService;
-        this.objectMapper = objectMapper;
-    }
-
     /**
      * Update DMI Plugin Registration (used for first registration also).
      * @param restDmiPluginRegistration the registration data
         final DmiPluginRegistration dmiPluginRegistration =
             convertRestObjectToJavaApiObject(restDmiPluginRegistration);
         networkCmProxyDataService.updateDmiRegistrationAndSyncModule(dmiPluginRegistration);
-        return new ResponseEntity<>(HttpStatus.CREATED);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
     }
 
     private DmiPluginRegistration convertRestObjectToJavaApiObject(
         final RestDmiPluginRegistration restDmiPluginRegistration) {
         return objectMapper.convertValue(restDmiPluginRegistration, DmiPluginRegistration.class);
     }
-
 }
 
 import org.onap.cps.ncmp.api.impl.exception.NcmpException;
 import org.onap.cps.ncmp.api.impl.exception.ServerNcmpException;
 import org.onap.cps.ncmp.rest.controller.NetworkCmProxyController;
+import org.onap.cps.ncmp.rest.controller.NetworkCmProxyInventoryController;
 import org.onap.cps.ncmp.rest.model.ErrorMessage;
 import org.onap.cps.spi.exceptions.CpsException;
+import org.onap.cps.spi.exceptions.DataValidationException;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.ExceptionHandler;
  * Exception handler with error message return.
  */
 @Slf4j
-@RestControllerAdvice(assignableTypes = {NetworkCmProxyController.class})
+@RestControllerAdvice(assignableTypes = {NetworkCmProxyController.class, NetworkCmProxyInventoryController.class})
 @NoArgsConstructor(access = AccessLevel.PACKAGE)
 public class NetworkCmProxyRestExceptionHandler {
 
         return buildErrorResponse(HttpStatus.BAD_REQUEST, exception);
     }
 
+    @ExceptionHandler({DataValidationException.class})
+    public static ResponseEntity<Object> handleDataValidatedExceptions(final DataValidationException exception) {
+        return buildErrorResponse(HttpStatus.BAD_REQUEST, exception);
+    }
+
     private static ResponseEntity<Object> buildErrorResponse(final HttpStatus status, final Exception exception) {
         if (exception.getCause() != null || !(exception instanceof CpsException)) {
             log.error("Exception occurred", exception);
 
  *  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.
             ).andReturn().response
         then: 'the cm handles are registered with the service'
             1 * mockNetworkCmProxyDataService.updateDmiRegistrationAndSyncModule(_)
-        and: 'response status is created'
-            response.status == HttpStatus.CREATED.value()
+        and: 'response status is No Content'
+            response.status == HttpStatus.NO_CONTENT.value()
     }
 
     def 'Dmi plugin registration with #scenario' () {
 
  *  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.
 
 import groovy.json.JsonSlurper
 import org.modelmapper.ModelMapper
+import org.onap.cps.TestUtils
 import org.onap.cps.ncmp.api.NetworkCmProxyDataService
 import org.onap.cps.ncmp.api.impl.exception.DmiRequestException
 import org.onap.cps.ncmp.api.impl.exception.ServerNcmpException
 import org.onap.cps.spi.exceptions.CpsException
+import org.onap.cps.spi.exceptions.DataValidationException
 import org.onap.cps.utils.JsonObjectMapper
 import org.spockframework.spring.SpringBean
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.beans.factory.annotation.Value
 import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
+import org.springframework.http.MediaType
 import org.springframework.test.web.servlet.MockMvc
 import spock.lang.Shared
 import spock.lang.Specification
 
+import static org.onap.cps.ncmp.rest.exceptions.NetworkCmProxyRestExceptionHandlerSpec.ApiType.NCMP
+import static org.onap.cps.ncmp.rest.exceptions.NetworkCmProxyRestExceptionHandlerSpec.ApiType.NCMPINVENTORY
 import static org.springframework.http.HttpStatus.BAD_REQUEST
 import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post
 
 @WebMvcTest
 class NetworkCmProxyRestExceptionHandlerSpec extends Specification {
     JsonObjectMapper jsonObjectMapper = Stub()
 
     @Value('${rest.api.ncmp-base-path}')
-    def basePath
+    def basePathNcmp
+
+    @Value('${rest.api.ncmp-inventory-base-path}')
+    def basePathNcmpInventory
 
-    def dataNodeBaseEndpoint
+    def dataNodeBaseEndpointNcmp
+    def dataNodeBaseEndpointNcmpInventory
 
     @Shared
     def errorMessage = 'some error message'
     def errorDetails = 'some error details'
 
     def setup() {
-        dataNodeBaseEndpoint = "$basePath/v1"
+        dataNodeBaseEndpointNcmp = "$basePathNcmp/v1"
+        dataNodeBaseEndpointNcmpInventory = "$basePathNcmpInventory/v1"
     }
 
     def 'Get request with generic #scenario exception returns correct HTTP Status.'() {
         when: 'an exception is thrown by the service'
-            setupTestException(exception)
-            def response = performTestRequest()
+            setupTestException(exception, NCMP)
+            def response = performTestRequest(NCMP)
         then: 'an HTTP response is returned with correct message and details'
             assertTestResponse(response, expectedErrorCode, errorMessage, expectedErrorDetails)
         where:
             'other'       | new IllegalStateException(errorMessage)             || null                 | INTERNAL_SERVER_ERROR
     }
 
-    def setupTestException(exception){
-        mockNetworkCmProxyDataService.getYangResourcesModuleReferences('testCmHandle')>>
-                { throw exception}
+    def 'Post request with exception returns correct HTTP Status.'() {
+        given: 'the service throws data validation exception'
+            def exception = new DataValidationException(errorMessage, errorDetails)
+            setupTestException(exception, NCMPINVENTORY)
+        when: 'the HTTP request is made'
+            def response = performTestRequest(NCMPINVENTORY)
+        then: 'an HTTP response is returned with correct message and details'
+            assertTestResponse(response, BAD_REQUEST, errorMessage, errorDetails)
     }
 
-    def performTestRequest(){
-        return mvc.perform(get("$dataNodeBaseEndpoint/ch/testCmHandle/modules")).andReturn().response
+    def setupTestException(exception, apiType) {
+        if (NCMP.equals(apiType)) {
+            mockNetworkCmProxyDataService.getYangResourcesModuleReferences(*_) >> { throw exception }
+        }
+        mockNetworkCmProxyDataService.updateDmiRegistrationAndSyncModule(*_) >> { throw exception }
+    }
+
+    def performTestRequest(apiType) {
+        if (NCMP.equals(apiType)) {
+            return mvc.perform(get("$dataNodeBaseEndpointNcmp/ch/testCmHandle/modules")).andReturn().response
+        }
+        def jsonData = TestUtils.getResourceFileContent('dmi-registration.json')
+        return mvc.perform(post("$dataNodeBaseEndpointNcmpInventory/ch").contentType(MediaType.APPLICATION_JSON).content(jsonData)).andReturn().response
     }
 
     static void assertTestResponse(response, expectedStatus , expectedErrorMessage , expectedErrorDetails) {
         assert content['message'] == expectedErrorMessage
         assert expectedErrorDetails == null || content['details'] == expectedErrorDetails
     }
+
+    enum ApiType {
+        NCMP,
+        NCMPINVENTORY;
+    }
 }
 
             }
         } catch (final JsonProcessingException | DataNodeNotFoundException e) {
             final String errorMessage = String.format(
-                    "Error occurred while processing the CM-handle registration request [%s] ,caused by : [%s]",
-                    dmiPluginRegistration, e.getMessage());
+                    "Error occurred while processing the CM-handle registration request, caused by : [%s]",
+                    e.getMessage());
             throw new DataValidationException(errorMessage, e.getMessage(), e);
         }
     }
 
     ${uri}=              Set Variable       ${ncmpInventoryBasePath}/v1/ch
     ${headers}=          Create Dictionary  Content-Type=application/json   Authorization=${auth}
     ${response}=         POST On Session    CPS_URL   ${uri}   headers=${headers}   data=${jsonData}
-    Should Be Equal As Strings              ${response.status_code}   201
+    Should Be Equal As Strings              ${response.status_code}   204
 
 Get modules for registered data node
     ${uri}=              Set Variable       ${ncmpBasePath}/v1/ch/PNFDemo/modules
 
               $ref: '#/components/schemas/RestDmiPluginRegistration'
         required: true
       responses:
-        "201":
-          description: Created
+        "204":
+          description: No Content
           content: {}
         "400":
           description: Bad Request
 
    - `CPS-741 <https://jira.onap.org/browse/CPS-741>`_  Re sync after removing cm handles
    - `CPS-777 <https://jira.onap.org/browse/CPS-777>`_  Ensure all DMI operations use POST method
    - `CPS-780 <https://jira.onap.org/browse/CPS-780>`_  Add examples for parameters, request and response in openapi yaml for cps-core
+   - `CPS-837 <https://jira.onap.org/browse/CPS-837>`_  Add Remove and Update properties (DMI and Public) as part of CM Handle Registration update
 
 Bug Fixes
 ---------
    - `CPS-841 <https://jira.onap.org/browse/CPS-841>`_ Upgrade log4j to 2.17.1 as recommended by ONAP SECCOM
    - `CPS-867 <https://jira.onap.org/browse/CPS-867>`_ Database port made configurable through env variable DB_PORT
    - `CPS-856 <https://jira.onap.org/browse/CPS-856>`_ Retry mechanism not working for concurrent CmHandle registration
+   - `CPS-892 <https://jira.onap.org/browse/CPS-892>`_ Fixed the response code during CM-Handle Registration from 201 CREATED to 204 NO_CONTENT
 
 Known Limitations, Issues and Workarounds
 -----------------------------------------