@Override
  @CoreDataModificationStatus(
      modificationType = ModificationType.UPDATE,
      entityClass = OrgPartDO.class)
  public void deleteIfExists(ServiceContext context, Long orgId) {

    OrgPartDO orgPartDO = null;
    ScopeDO scopeDO = null;

    try {
      orgPartDO = orgPartDAO.findOrgPart(orgId, context.getScopeId());
      scopeDO = scopeDAO.getById(context.getScopeId());

      if (orgPartDO != null) {
        List<OrgPartDO> descendants =
            orgPartDAO.findParticipatingDescendantOrgParts(
                orgPartDO.getScope().getScopeId(), orgPartDO.getOrg().getOrgId());
        if (descendants != null && descendants.size() > 0) {
          if (!configService.isBooleanActive(
              context, scopeDO.getScopeId(), ConfigService.ORG_PART_DESCENDANT_CASCADE_DELETE)) {
            FaultInfo faultInfo = new FaultInfo();
            String errorMessage =
                messageSource.getMessage("validation.orgPart.childOrgsParticipating", null, null);
            faultInfo.setMessage(errorMessage);
            faultInfo.setAttributeErrors(Lists.<ValidationError>newArrayList());
            throw new ValidationServiceException(errorMessage, faultInfo);
          }
          List<Long> orgPartIds = Lists.newArrayList();
          for (OrgPartDO descendantDO : descendants) {
            orgPartIds.add(descendantDO.getOrgPartId());
          }
          try {
            orgPartDAO.deleteOrgParts(orgPartIds);
          } catch (Exception e) { // safe to catch all exceptions
            // here because any failure is
            // treated the same.
            FaultInfo faultInfo = new FaultInfo();
            String errorMessage =
                messageSource.getMessage("validation.orgPart.childOrgsParticipating", null, null);
            faultInfo.setMessage(errorMessage);
            faultInfo.setAttributeErrors(Lists.<ValidationError>newArrayList());
            throw new ValidationServiceException(errorMessage, faultInfo);
          }
        }
      }
    } catch (EmptyResultDataAccessException e) {
      // no action to take.
    }
  }