public Document getDocument() throws Exception {
		Document doc = Utilities.createDocument();
		
		Map<String, String> namespaces = this.initializeDocument(doc);
		
		Element root = this.createTransactionElement(doc, namespaces);
		
		Element payloadElem = doc.createElementNS(DEFAULT_NAMESPACE, XMLLabels.ELEM_SERVICE_GETDATABYSUBJECT);
		root.appendChild(payloadElem);
		
		Element subjectsElem = doc.createElementNS(DEFAULT_NAMESPACE, XMLLabels.ELEM_SUBJECTIDS);
		payloadElem.appendChild(subjectsElem);

		for(SubjectID subject : this.subjects) {
			
			Contributor contributor = subject.getContributor();
			if(contributor != null) {
				Element subjectElem = doc.createElementNS(DEFAULT_NAMESPACE, XMLLabels.ELEM_SUBJECTID);
				subjectElem.setTextContent(subject.getValue());
				Attr attr = doc.createAttribute(XMLLabels.ATTR_TYPE);
				attr.setValue(contributor.getDomain());
				subjectElem.setAttributeNodeNS(attr);
				subjectsElem.appendChild(subjectElem);
			} else {
				logger.warn("Unable to add subject \'" + subject.getValue() + "\', due to unknown contributor.");
			}
		}
		
		this.injectLogs(doc, payloadElem);
		this.injectParameters(doc, payloadElem);
		
		return doc;
	}