/**
   * @param manifestPlatformRfcs
   * @param userId
   */
  private void processPlatformRfcs(ManifestRfcContainer manifestPlatformRfcs, String userId) {

    long t1 = System.currentTimeMillis();
    /** *** Handle root RFC and relations ***** */
    CmsRfcCI rootRfc = null;
    if (manifestPlatformRfcs.getRootRfcRelTouple().getRfcCI() != null) {
      rootRfc =
          rfcProcessor.createAndfetchRfcCINoCheck(
              manifestPlatformRfcs.getRootRfcRelTouple().getRfcCI(), userId);
      if (rootRfc.getCiState() == null) {
        rootRfc.setCiState("default");
      }
    } else {
      rootRfc = manifestPlatformRfcs.getManifestPlatformRfc();
    }

    for (CmsRfcRelation toRfcRelation :
        manifestPlatformRfcs.getRootRfcRelTouple().getToRfcRelation()) {
      toRfcRelation.setToCiId(rootRfc.getCiId());
      rfcProcessor.createRfcRelationNoCheck(toRfcRelation, userId);
    }

    for (CmsRfcRelation fromRfcRelation :
        manifestPlatformRfcs.getRootRfcRelTouple().getFromRfcRelation()) {
      fromRfcRelation.setFromCiId(rootRfc.getCiId());
      rfcProcessor.createRfcRelationNoCheck(fromRfcRelation, userId);
    }

    /** Handle DependsOn and other pack relations ** */
    for (ManifestRfcRelationTriplet rfcRelTriplet : manifestPlatformRfcs.getRfcRelTripletList()) {

      CmsRfcRelation rfcRelation = rfcRelTriplet.getRfcRelation();
      if (rfcRelation.getRfcAction() == null) {
        rfcRelation.setRfcAction("add");
      }

      CmsRfcCI toRfcCI = rfcRelTriplet.getToRfcCI();
      if (toRfcCI != null) {
        if (toRfcCI.getRfcAction() == null) {
          toRfcCI.setRfcAction("add");
        }
        manifestRfcProcessor.setCiId(toRfcCI);
        if (toRfcCI.getRfcId() == 0 && toRfcCI.getCiId() == 0) {
          toRfcCI = rfcProcessor.createAndfetchRfcCINoCheck(toRfcCI, userId);
        }
        rfcRelation.setToCiId(toRfcCI.getCiId());
      }

      CmsRfcCI fromRfcCI = rfcRelTriplet.getFromRfcCI();
      if (fromRfcCI != null) {
        if (fromRfcCI.getRfcAction() == null) {
          fromRfcCI.setRfcAction("add");
        }
        manifestRfcProcessor.setCiId(fromRfcCI);
        if (fromRfcCI.getRfcId() == 0 && fromRfcCI.getCiId() == 0) {
          fromRfcCI = rfcProcessor.createAndfetchRfcCINoCheck(fromRfcCI, userId);
        }
        rfcRelation.setFromCiId(fromRfcCI.getCiId());
      }

      if ("manifest.Entrypoint".equals(rfcRelation.getRelationName())) {
        rfcRelation.setFromCiId(rootRfc.getCiId());
      }

      manifestRfcProcessor.setCiRelationId(rfcRelation);
      rfcProcessor.createRfcRelationNoCheck(rfcRelation, userId);
    }

    /** Handle Requires relations ** */
    for (ManifestRootRfcContainer rfcRelTouple : manifestPlatformRfcs.getRfcRelToupleList()) {
      CmsRfcCI newRfc;
      if (rfcRelTouple.getRfcCI().getRfcId() == 0) {
        newRfc = rfcProcessor.createAndfetchRfcCINoCheck(rfcRelTouple.getRfcCI(), userId);
      } else {
        newRfc = rfcRelTouple.getRfcCI();
      }
      for (CmsRfcRelation rfcRel : rfcRelTouple.getToRfcRelation()) {
        if (rfcRel.getRfcAction() == null) {
          rfcRel.setRfcAction("add");
        }

        if ("manifest.Requires".equals(rfcRel.getRelationName()) && rfcRel.getFromCiId() == 0) {
          rfcRel.setFromCiId(rootRfc.getCiId());
        }
        rfcRel.setToCiId(newRfc.getCiId());
        rfcProcessor.createRfcRelationNoCheck(rfcRel, userId);
      }
      for (CmsRfcRelation rfcRel : rfcRelTouple.getFromRfcRelation()) {
        if (rfcRel.getRfcAction() == null) {
          rfcRel.setRfcAction("add");
        }

        if (rfcRel.getToCiId() == 0) {
          rfcRel.setToCiId(rootRfc.getCiId());
        }
        rfcRel.setFromCiId(newRfc.getCiId());
        rfcProcessor.createRfcRelationNoCheck(rfcRel, userId);
      }
    }

    for (CmsRfcCI rfc : manifestPlatformRfcs.getRfcList()) {
      rfcProcessor.createRfcCINoCheck(rfc, userId);
    }

    for (CmsRfcRelation rfcRelation : manifestPlatformRfcs.getRfcRelationList()) {
      if (rfcRelation.getFromCiId() == 0) {
        if ("base.Consumes".equals(rfcRelation.getRelationName())) {
          rfcRelation.setFromCiId(rootRfc.getCiId());
        } else {
          rfcRelation.setFromCiId(rootRfc.getCiId());
        }
      }
      if (rfcRelation.getRfcAction() == null) {
        rfcRelation.setRfcAction("add");
      }

      rfcProcessor.createRfcRelationNoCheck(rfcRelation, userId);
    }

    for (Long delCiId : manifestPlatformRfcs.getDeleteCiIdList()) {
      cmRfcMrgProcessor.requestCiDeleteCascadeNoRelsRfcs(delCiId, userId, 0);
    }

    for (CmsRfcRelation delRelation : manifestPlatformRfcs.getRfcDeleteRelationList()) {
      cmRfcMrgProcessor.requestRelationDelete(delRelation.getCiRelationId(), userId);
    }
    long t2 = System.currentTimeMillis();
    logger.info(
        " processPlatformRfcs  "
            + manifestPlatformRfcs.getManifestPlatformRfc().getNsPath()
            + " completed in  "
            + (t2 - t1));
  }