code: private <T extends IEntity> IntuitMessage prepareCDCQuery(List<? extends IEntity> entities, String changedSince) throws FMSException {
          IntuitMessage intuitMessage = new IntuitMessage();
          RequestElements requestElements = intuitMessage.getRequestElements();
  
          //set the request params
          Map<String, String> requestParameters = requestElements.getRequestParameters();
          requestParameters.put(RequestElements.REQ_PARAM_METHOD_TYPE, MethodType.GET.toString());
          if (entities != null) {
              StringBuffer entityParam = new StringBuffer();
              for (IEntity entity : entities) {
                  entityParam.append(entity.getClass().getSimpleName()).append(",");
              }
              entityParam.delete(entityParam.length() - 1, entityParam.length());
              requestParameters.put(RequestElements.REQ_PARAM_ENTITIES, entityParam.toString());
          }
  
          String cdcChangedSinceParam = null;
          String cdcAction = null;
          cdcChangedSinceParam = RequestElements.REQ_PARAM_CHANGED_SINCE;
          cdcAction = OperationType.CDCQUERY.toString();
          
          if (StringUtils.hasText(changedSince)) {
              requestParameters.put(cdcChangedSinceParam, changedSince);
          }
          requestElements.setAction(cdcAction);
  
          requestElements.setContext(context);
  
          return intuitMessage;
      }
docs: Common method to prepare the request params for CDC query operation for both sync and async calls
  
  @param entities
  the list of entities
  @param changedSince
  the date where the entities should be listed from the last changed date
  @return IntuitMessage the intuit message
  @throws FMSException