anchor.diff:  is a good fit to better know the subtleties of implementing a change data capture integration application.
   The dynamic nature of change event body fields, high level replication steps as well as security considerations could be of interest.
   
  -== Examples
  -
  -=== Uploading a document to a ContentWorkspace
  -
  -Create the ContentVersion in Java, using a Processor instance:
  -
  -[source,java]
  -----
  -public class ContentProcessor implements Processor {
  -    public void process(Exchange exchange) throws Exception {
  -        Message message = exchange.getIn();
  -
  -        ContentVersion cv = new ContentVersion();
  -        ContentWorkspace cw = getWorkspace(exchange);
  -        cv.setFirstPublishLocationId(cw.getId());
  -        cv.setTitle("test document");
  -        cv.setPathOnClient("test_doc.html");
  -        byte[] document = message.getBody(byte[].class);
  -        ObjectMapper mapper = new ObjectMapper();
  -        String enc = mapper.convertValue(document, String.class);
  -        cv.setVersionDataUrl(enc);
  -        message.setBody(cv);
  -    }
  -
  -    protected ContentWorkspace getWorkSpace(Exchange exchange) {
  -        // Look up the content workspace somehow, maybe use enrich() to add it to a
  -        // header that can be extracted here
  -        ....
  -    }
  -} 
  -----
  -
  -Give the output from the processor to the Salesforce component:
  -
  -[source,java]
  -----
  -from("file:///home/camel/library")
  -    .to(new ContentProcessor())     // convert bytes from the file into a ContentVersion SObject 
  -                                    // for the salesforce component
  -    .to("salesforce:createSObject"); 
  -----
   
   == Using Salesforce Limits API
   
  
positive.code:         .setBody(constant("Used up Salesforce API limits, leaving 10% for critical routes"))
      .endChoice()
  ----
  
  == Working with approvals
  
  
negative.code: accountSObject.getFieldsToNull().add("Site");
  ----
  
  == Uploading a document to a ContentWorkspace
  
  Create the ContentVersion in Java, using a Processor instance:
  
  [source,java]
  ----
  public class ContentProcessor implements Processor {
      public void process(Exchange exchange) throws Exception {
          Message message = exchange.getIn();
  
          ContentVersion cv = new ContentVersion();
          ContentWorkspace cw = getWorkspace(exchange);
          cv.setFirstPublishLocationId(cw.getId());
          cv.setTitle("test document");
          cv.setPathOnClient("test_doc.html");
          byte[] document = message.getBody(byte[].class);
          ObjectMapper mapper = new ObjectMapper();
          String enc = mapper.convertValue(document, String.class);
          cv.setVersionDataUrl(enc);
          message.setBody(cv);
      }
  
      protected ContentWorkspace getWorkSpace(Exchange exchange) {
          // Look up the content workspace somehow, maybe use enrich() to add it to a
          // header that can be extracted here
          ....
      }
  }
  ----
  
  Give the output from the processor to the Salesforce component:
  
  [source,java]
  ----
  from("file:///home/camel/library")
      .to(new ContentProcessor())     // convert bytes from the file into a ContentVersion SObject
                                      // for the salesforce component
      .to("salesforce:createSObject");
  ----
  
  == Generating SOQL query strings
  
  `org.apache.camel.component.salesforce.api.utils.QueryHelper` contains helper
  