Review of document registrar
Few points:


Try to avoid long or nested if/else 
Sub-divide tasks in smaller functions(clean and more readable code + easier unit testing)
Minimize variable scope(try to declare variables in the scope where you really need them)
Think about Exception in context of your business domain, may be using builder pattern (like HrsDocumentBuilder) can be useful to have consistent logging message for same type of exception(override toString() method).


We can refactor the method registerDocument() like this:

You may replace  

final long start = System.currentTimeMillis();


with StopWatch

@Transactional
@Override
public void registerDocument(String submissionId) {
final long start = System.currentTimeMillis();    
final List&lt;HermesItem&gt; items = submissionDAO.getSubmissionItems(submissionId);

if (!hasItems(items)) //extract else to method
    return;

final HrsDocumentBuilder builder = ...builder.setMailType(HermesMailType.INTERNAL);//stays the same
try {
      // minimized the scope of local variable, you need regSummary in try block so declare it here.
        RegistrationSummary regSummary = client.registerDocument(builder.buildDocument()); // will rename buildDocument() -&gt; build() 
        update(regSummary);

} catch (final ClientException e) { 

       //To standarized log message we can refactor it like :
        ClientExceptionBuilder b = new ClientExceptionBuilder(e).submissionId(submissionId).build();// override toString()
        LOG.error(b.getMessage());
}
}//function registerDocument() end here


Since all other method can be easily extracted from else blocks, i am posting only the update(regSummary) because this function can be further subdivide into two smaller functions like this:

void update(regSummary) {

    if(!hasSummary()) //extract else to method 
        return 

    final String hermesDocId = regSummary.getHermesDocumentId();
    /* Update the DB with the documentID received from Hermes. */
    final int update = submissionDAO.updateSubmission(submissionId, hermesDocId, SubmissionStatus.HRS_REGISTERED.name());

    if (update &lt; 1) 
        LOG.error("update error");

}