public RegistryResponseType provideAndRegisterDocumentSetB(
      ProvideAndRegisterDocumentSetRequestType msg, AssertionType assertion) {
    LOG.debug("Begin provideAndRegisterDocumentSetb()");
    XDRHelper helper = new XDRHelper();
    RegistryErrorList errorList = helper.validateDocumentMetaData(msg);

    RegistryResponseType result = null;

    if (errorList.getHighestSeverity().equals(NhincConstants.XDS_REGISTRY_ERROR_SEVERITY_ERROR)) {
      result = helper.createErrorResponse(errorList);
    } else {
      LOG.info(" Request contained " + msg.getDocument().size() + " documents.");
      LOG.info(" Request Id: " + msg.getSubmitObjectsRequest().getId());

      List<String> recips = helper.getIntendedRecepients(msg);

      if (recips != null) {
        List<String> xdrBeans = helper.getRoutingBeans(recips);
        RoutingObjectFactory factory = new RoutingObjectFactory();

        for (String bean : xdrBeans) {
          LOG.debug("Bean name = " + bean);
          XDRRouting proxy = factory.getNhinXDRRouting(bean);
          result = proxy.provideAndRegisterDocumentSetB(msg, assertion);
        }
      } else {
        LOG.debug("No beans to forward the message to");
        result = helper.createPositiveAck();
      }
    }
    return result;
  }