Algorithm
writeDataJob(dataJobId, DataJobMetadata, DataJobWriteRequest) { Map<ProducerKey, Collection> producerKeyMap = new HashMap() FOR writeRequest in DataJobWriteRequest dataNode = inventoryPersistence.getCmHandleDataNodeByLongestMatchAlternateId(writeOperation.path()) ProducerKey prodKey = new ProducerKey( dataNode.dmiServiceName, dataProducerIdentifier) SubJob sjwr = createSubJob(DataJobMetadata, dataNode, dataJobId) // method to create the request if (producerKeyMap.contains(prodKey) // update the Map's collection with the new request else producerKeyMap.put(prodKey, sjwr) END FOR FOR value in producerKeyMap dmiUrl = DmiServiceUrlBuilder.createUrlForSubJob() // new method dmiRestClient.postOperation( value ) // send each collection of subjobs to the right DMI plugin END FOR }