/** Transfers a record. If the result returned is not null an error occured. */
  public ims.dto.Result transferData(String action) {
    if (action.length() == 0)
      return new ims.dto.Result("Invalid action name", "DTO.Client.Go_mdt_hcps.TransferData");

    ims.dto.Result reLoginResult = Connection.reLogin();
    if (reLoginResult != null)
      return new ims.dto.Result(reLoginResult.getMessage(), "DTO.Client.Go_mdt_hcps.TransferData");

    if (DataCollection.count() == 0)
      return new ims.dto.Result("No data to transfer", "DTO.Client.Go_mdt_hcps.TransferData");

    if (DataCollection.count() > 1)
      return new ims.dto.Result(
          "Multiple objects not allowed", "DTO.Client.Go_mdt_hcps.TransferData");

    ims.dto.Result result =
        Connection.transferData(serviceName, encodeNASMessage(), action.toUpperCase());
    if (result != null) return result;

    DataCollection.clear();
    decodeNASMessageWithRepeatingGroups();

    return null;
  }