import org.onap.cps.spi.model.DataNode;
 import org.onap.cps.spi.model.ModuleReference;
 import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
             cmHandleJsonData, NO_TIMESTAMP);
 
         for (final PersistenceCmHandle persistenceCmHandle : persistenceCmHandlesList.getPersistenceCmHandles()) {
-            createAnchorAndSyncModel(persistenceCmHandle);
+            syncModulesAndCreateAnchor(persistenceCmHandle);
         }
     }
 
-    protected void createAnchorAndSyncModel(final PersistenceCmHandle persistenceCmHandle) {
-        createAnchor(persistenceCmHandle);
+    protected void syncModulesAndCreateAnchor(final PersistenceCmHandle persistenceCmHandle) {
         fetchAndSyncModules(persistenceCmHandle);
+        createAnchor(persistenceCmHandle);
     }
 
     private static PersistenceCmHandle toPersistenceCmHandle(final String dmiPluginService,
 
     private List<ModuleReference> fetchModuleReferencesFromDmi(final PersistenceCmHandle persistenceCmHandle,
                                                                final Map<String, String> cmHandlePropertiesAsMap) {
-        final GenericRequestBody requestBodyObject = GenericRequestBody.builder()
-                .operation(GenericRequestBody.OperationEnum.READ)
+        final GenericRequestBody genericRequestBody = GenericRequestBody.builder()
                 .cmHandleProperties(cmHandlePropertiesAsMap)
                 .build();
-        final String jsonBody = prepareOperationBody(requestBodyObject);
+        final String jsonBodyWithOnlyCmHandleProperties = prepareOperationBody(genericRequestBody);
         final ResponseEntity<String> dmiFetchModulesResponseEntity =
             dmiOperations.getResourceFromDmiWithJsonData(persistenceCmHandle.getDmiServiceName(),
-                    jsonBody, persistenceCmHandle.getId(), "modules");
+                    jsonBodyWithOnlyCmHandleProperties, persistenceCmHandle.getId(), "modules");
         return toModuleReferences(dmiFetchModulesResponseEntity);
     }
 
         final JsonArray moduleReferencesAsJson = getModuleReferencesAsJson(unknownModuleReferences);
         final JsonObject data = new JsonObject();
         data.add("modules", moduleReferencesAsJson);
-        final GenericRequestBody dmiRequestBodyObject = GenericRequestBody.builder()
-                .operation(GenericRequestBody.OperationEnum.READ)
-                .dataType(MediaType.APPLICATION_JSON_VALUE)
-                .data(data.toString())
-                .cmHandleProperties(cmHandlePropertiesAsMap)
-                .build();
-        return prepareOperationBody(dmiRequestBodyObject);
+        final JsonObject jsonRequestObject = new JsonObject();
+        jsonRequestObject.add("data", data);
+        final Gson gson = new Gson();
+        jsonRequestObject.add("cmHandleProperties", gson.toJsonTree(cmHandlePropertiesAsMap));
+        return jsonRequestObject.toString();
     }
 
     private static JsonArray getModuleReferencesAsJson(final List<ModuleReference> unknownModuleReferences) {
     private Map<String, String> getNewYangResourcesFromDmi(final PersistenceCmHandle persistenceCmHandle,
                                                            final List<ModuleReference> unknownModuleReferences,
                                                            final Map<String, String> cmHandlePropertiesAsMap) {
-        final String jsonData = getRequestBodyToFetchYangResourceFromDmi(
+        final String jsonDataWithDataAndCmHandleProperties = getRequestBodyToFetchYangResourceFromDmi(
                 unknownModuleReferences, cmHandlePropertiesAsMap);
 
         final ResponseEntity<String> moduleResourcesAsJsonString =  dmiOperations.getResourceFromDmiWithJsonData(
                 persistenceCmHandle.getDmiServiceName(),
-                jsonData,
+                jsonDataWithDataAndCmHandleProperties,
                 persistenceCmHandle.getId(),
                 "moduleResources");
 
 
             }
         and: 'dmi operations returns some module references'
             def jsonData = TestUtils.getResourceFileContent('cmHandleModules.json')
-            def expectedJsonBody = '{"operation":"read","cmHandleProperties":' + expectedJsonForAdditionalProperties + '}'
+            def expectedJsonBody = '{"cmHandleProperties":' + expectedJsonForAdditionalProperties + '}'
             mockDmiProperties.getAuthUsername() >> 'someUser'
             mockDmiProperties.getAuthPassword() >> 'somePassword'
             def moduleReferencesFromCmHandleAsJson = new ResponseEntity<String>(jsonData, HttpStatus.OK)
             mockCpsModuleService.getYangResourceModuleReferences(_) >> [knownModule1, knownOtherModule]
         and: 'DMI-Plugin returns resource(s) for "new" module(s)'
             def moduleResources = new ResponseEntity<String>(sdncReponseBody, HttpStatus.OK)
-            def jsonDataToFetchYangResource = '{"operation":"read","dataType":"application/json","data":"{\\"modules\\":[{\\"name\\":\\"module2\\",\\"revision\\":\\"1\\"}]}","cmHandleProperties":' + expectedJsonForAdditionalProperties + '}'
+            def jsonDataToFetchYangResource = '{"data":{"modules":[{"name":"module2","revision":"1"}]},"cmHandleProperties":' + expectedJsonForAdditionalProperties + '}'
             mockDmiOperations.getResourceFromDmiWithJsonData('some service name', jsonDataToFetchYangResource, 'some cm handle', 'moduleResources') >> moduleResources
         when: 'module Sync is triggered'
-            objectUnderTest.createAnchorAndSyncModel(cmHandleForModelSync)
+            objectUnderTest.syncModulesAndCreateAnchor(cmHandleForModelSync)
         then: 'the CPS module service is called once with the correct parameters'
             1 * mockCpsModuleService.createSchemaSetFromModules(expectedDataspaceName, cmHandleForModelSync.getId(), expectedYangResourceToContentMap, [knownModule1])
         and: 'admin service create anchor method has been called with correct parameters'
             1 * mockCpsModuleService.getYangResourcesModuleReferences('NFP-Operational','some cm handle')
     }
 
+    def 'Create the request body to get yang resources from DMI.'() {
+        given: 'the expected json request'
+            def expectedRequestBody = '{"data":{"modules":[{"name":"module1","revision":"1"},{"name":"module2","revision":"2"}]},"cmHandleProperties":{"name1":"value1"}}'
+        and: 'module references and cm handle properties'
+            def moduleReferences = [new ModuleReference('module1', '1'),new ModuleReference('module2', '2')]
+            def cmHandleProperties = ['name1':'value1']
+        when: 'get request body to fetch yang resources from DMI is called'
+            def result = objectUnderTest.getRequestBodyToFetchYangResourceFromDmi(moduleReferences, cmHandleProperties)
+        then: 'the result is the same as the expected request body'
+            result == expectedRequestBody
+    }
+
     def getObjectUnderTestWithModelSyncDisabled() {
         def objectUnderTest = Spy(new NetworkCmProxyDataServiceImpl(mockDmiOperations, mockCpsModuleService,
                 mockCpsDataService, mockCpsQueryService, mockCpsAdminService, spyObjectMapper))
-        objectUnderTest.createAnchorAndSyncModel(_) >> null
+        objectUnderTest.syncModulesAndCreateAnchor(_) >> null
         return objectUnderTest
     }