private boolean processGPSDSLookup(PDSConfigurationVo conf) {
    if (gps == null || gps.size() == 0) return true;
    // WDEV-23281

    createSystemLogEntry(
        SystemLogType.SDS,
        SystemLogLevel.INFORMATION,
        "Start Process of GP Full SDS Job - Number of records to process = " + gps.size());

    DomainFactoryBridge factory = getDomainFactory();

    Iterator<Gp> it = gps.iterator();

    while (it.hasNext()) {
      Gp gp = it.next();
      if (gp == null) continue;

      String sdsId = "";
      String gpCode = "";

      if (gp.getCodeMappings() != null) {
        for (int j = 0; j < gp.getCodeMappings().size(); j++) {
          Object mapping = gp.getCodeMappings().get(j);

          if (mapping instanceof TaxonomyMap) {
            if (((TaxonomyMap) mapping).getTaxonomyName() != null
                && (TaxonomyType.SDSID.getID()
                    == ((TaxonomyMap) mapping).getTaxonomyName().getId())) {
              sdsId = ((TaxonomyMap) mapping).getTaxonomyCode();
            }

            if (((TaxonomyMap) mapping).getTaxonomyName() != null
                && (TaxonomyType.NAT_GP_CODE.getID()
                    == ((TaxonomyMap) mapping).getTaxonomyName().getId())) {
              gpCode = ((TaxonomyMap) mapping).getTaxonomyCode();
            }
          }
        }
      }

      if ((sdsId != null && sdsId.length() > 0) || (gpCode != null && gpCode.length() > 0)) {
        TotalGPsNo++;

        SdsRequestHelper sdsHelper = new SdsRequestHelper(conf);

        Gp gpNew = null;

        try {
          gpNew = sdsHelper.processGPSdsRequest(gp, conf.getSDSHost(), conf.getSDSPort());

          try {
            if ((gpNew != null && gpNew.getName() != null)
                && (gp != null && gp.getName() != null)) {

              // get the Gp record again and update

              // Only update retrieved gp domain object from db from query on list, not the gp
              // instance returned from the sds request
              gp.getName().setForename(gpNew.getName().getForename());
              gp.getName()
                  .setUpperForename(
                      gpNew.getName().getForename() != null
                          ? gpNew.getName().getForename().toUpperCase()
                          : null);
              gp.getName().setSurname(gpNew.getName().getSurname());
              gp.getName()
                  .setUpperSurname(
                      gpNew.getName().getSurname() != null
                          ? gpNew.getName().getSurname().toUpperCase()
                          : null);
              gp.getName().setMiddleName(gpNew.getName().getMiddleName());
              gp.getName().setTitle(gpNew.getName().getTitle());

              //							if(updatedGps == null)
              //							{
              //								updatedGps = new HashSet<Gp>();
              //							}
              //
              //							updatedGps.add(gp);

              if (factory == null) factory = getDomainFactory();

              factory.save(gp);

              if (TotalGPsNo % 100 == 0) {
                createSystemLogEntry(
                    SystemLogType.SDS,
                    SystemLogLevel.INFORMATION,
                    "Commit tranaction GP Full SDS Job - Number of records processed = "
                        + TotalGPsNo);
                factory.commitTransaction();
              }
            }

          } catch (Exception e) {
            // trace("Error during saving updates for GP '" + gp.getName().toString()  + "': " +
            // e.getMessage());

            if (gp != null && gp.getName() != null)
              createSystemLogEntry(
                  SystemLogType.SDS,
                  SystemLogLevel.ERROR,
                  "Error during saving updates for GP '"
                      + gp.getName().toString()
                      + "': "
                      + e.getMessage());
            else if (gp != null)
              createSystemLogEntry(
                  SystemLogType.SDS,
                  SystemLogLevel.ERROR,
                  "Error during saving updates for GP '" + gp.getName() + "': " + e.getMessage());
            FailedNoSavingGPs++;
            continue;
          }

          SuccessfulGPssNo++;

        } catch (Exception e) {
          if (e.getCause() instanceof ConnectException
              || e.getCause() instanceof SocketException
              || e.getCause() instanceof UnknownHostException) {
            return false;
          }

          // trace("Error processing SDS request for GP '" + gp.getName().toString()  + "': " +
          // e.getMessage());
          if (gp != null && gp.getName() != null)
            createSystemLogEntry(
                SystemLogType.SDS,
                SystemLogLevel.ERROR,
                "Error processing SDS request for GP '"
                    + gp.getName().toString()
                    + "': "
                    + e.getMessage());
          else if (gp != null)
            createSystemLogEntry(
                SystemLogType.SDS,
                SystemLogLevel.ERROR,
                "Error processing SDS request for GP '" + gp.getName() + "': " + e.getMessage());
          FailedNoProcessingGPs++;
          continue;
        }

        //				if(gpNew != null)
        //				{
        //					if(updatedGps == null)
        //					{
        //						updatedGps = new HashSet<Gp>();
        //					}
        //
        //					//Only update retrieved gp domain object from db from query on list, not the gp
        // instance returned from the sds request
        //	        		gp.getName().setForename(gpNew.getName().getForename());
        //	            	gp.getName().setUpperForename(gpNew.getName().getForename() != null ?
        // gpNew.getName().getForename().toUpperCase() : null);
        //	            	gp.getName().setSurname(gpNew.getName().getForename());
        //	            	gp.getName().setUpperSurname(gpNew.getName().getSurname() != null ?
        // gpNew.getName().getSurname().toUpperCase() : null);
        //	            	gp.getName().setMiddleName(gpNew.getName().getMiddleName());
        //	            	gp.getName().setTitle(gpNew.getName().getTitle());
        //
        //					updatedGps.add(gp);
        //				}
      }
    }
    // WDEV-23281

    return true;
  }
  // WDEV-23281
  private void processPracticeSDSLookup(PDSConfigurationVo conf) {
    if (practices == null || practices.size() == 0) return;

    createSystemLogEntry(
        SystemLogType.SDS,
        SystemLogLevel.INFORMATION,
        "Start Process of Practice Full SDS Job - Number of records to process = "
            + practices.size());

    Iterator<Organisation> it = practices.iterator();
    while (it.hasNext()) {

      Organisation practice = it.next();

      DomainFactoryBridge factory = getDomainFactory();

      if (practice == null) continue;

      String sdsOrgId = getTaxonomyCode(practice, TaxonomyType.ICAB);

      if (sdsOrgId == null || sdsOrgId.length() == 0) {
        sdsOrgId = getTaxonomyCode(practice, TaxonomyType.NAT_LOC_CODE);
      }

      if (sdsOrgId != null && sdsOrgId.length() > 0) {
        TotalPracticesNo++;

        SdsRequestHelper sdsHelper = new SdsRequestHelper(conf);

        Organisation updatedPractice = null;

        try {
          updatedPractice =
              sdsHelper.processPracticeSdsRequest(practice, conf.getSDSHost(), conf.getSDSPort());

          if (updatedPractice != null && practice != null) {
            practice.setName(updatedPractice.getName());
            practice.setUpperName(updatedPractice.getUpperName());
            practice.setAddress(updatedPractice.getAddress());
            practice.setIsActive(updatedPractice.isIsActive());
            practice.setPctCode(updatedPractice.getPctCode());

            try {
              factory.save(practice);
              if (TotalPracticesNo % 100 == 0) {
                createSystemLogEntry(
                    SystemLogType.SDS,
                    SystemLogLevel.INFORMATION,
                    "Commit tranaction Practice Full SDS Job - Number of records processed = "
                        + TotalPracticesNo);
                factory.commitTransaction();
              }
            } catch (Exception e) {
              // trace("Error saving SDS request for Practice '" + practice.getName()  + "': " +
              // e.getMessage());
              if (practice != null)
                createSystemLogEntry(
                    SystemLogType.SDS,
                    SystemLogLevel.ERROR,
                    "Error saving SDS request for Practice '"
                        + practice.getName()
                        + "': "
                        + e.getMessage());
              FailedNoSavingPractices++;
              continue;
            }
          }

        } catch (Exception e) {
          // trace("Error processing SDS request for Practice '" + practice.getName()  + "': " +
          // e.getMessage());
          if (practice != null)
            createSystemLogEntry(
                SystemLogType.SDS,
                SystemLogLevel.ERROR,
                "Error processing SDS request for Practice '"
                    + practice.getName()
                    + "': "
                    + e.getMessage());
          FailedNoProcessingPractices++;
          continue;
        }

        //				if(updatedPractice != null)
        //				{
        //					if(updatedPractices == null)
        //					{
        //						updatedPractices = new HashSet<Organisation>();
        //					}
        //
        //					updatedPractices.add(updatedPractice);
        //				}
      }
    }
  }