code: private JsonSimple publish(JsonSimple message, String oid)
  			throws TransactionException {
  		log.debug("Publishing '{}'", oid);
  		JsonSimple response = new JsonSimple();
  		try {
  			DigitalObject object = storage.getObject(oid);
  			Properties metadata = object.getMetadata();
  			// Already published?
  			if (!metadata.containsKey(PUBLISH_PROPERTY)) {
  				metadata.setProperty(PUBLISH_PROPERTY, "true");
  				storeProperties(object, metadata);
  				log.info("Publication flag set '{}'", oid);
  				audit(response, oid, "Publication flag set");
  			} else {
  				log.info("Publication flag is already set '{}'", oid);
  			}
  		} catch (StorageException ex) {
  			throw new TransactionException("Error setting publish property: ",
  					ex);
  		}
  
  		// Make a final pass through the curation tool(s),
  		// allows for external publication. eg. VITAL
  		JsonSimple itemConfig = getConfigFromStorage(oid);
  		if (itemConfig == null) {
  			log.error("Error accessing item configuration!");
  		} else {
  			List<String> list = itemConfig.getStringList("transformer",
  					"curation");
  
  			if (list != null && !list.isEmpty()) {
  				for (String id : list) {
  					JsonObject order = newTransform(response, id, oid);
  					JsonObject config = (JsonObject) order.get("config");
  					JsonObject overrides = itemConfig.getObject(
  							"transformerOverrides", id);
  					if (overrides != null) {
  						config.putAll(overrides);
  					}
  				}
  			}
  		}
  
  		// Don't forget to publish children
  		publishRelations(response, oid);
  		return response;
  	}
docs: Get the requested object ready for publication. This would typically just
  involve setting a flag
  
  @param message
  The incoming message
  @param oid
  The object identifier to publish
  @return JsonSimple The response object
  @throws TransactionException
  If an error occurred