@Override
  public UpdateRigStatusResponse updateRigStatus(UpdateRigStatus request) {
    /* Request parameters. */
    UpdateRigType upRig = request.getUpdateRigStatus();
    StatusType status = upRig.getStatus();
    this.logger.debug(
        "Received "
            + this.getClass().getSimpleName()
            + "#updateRigStatus with parameters: name="
            + upRig.getName()
            + ", isOnline="
            + status.getIsOnline()
            + ", offlineReason="
            + status.getOfflineReason()
            + '.');

    /* Response parameters. */
    UpdateRigStatusResponse response = new UpdateRigStatusResponse();
    ProviderResponse providerResp = new ProviderResponse();
    response.setUpdateRigStatusResponse(providerResp);

    UpdateLocalRigStatus updater = new UpdateLocalRigStatus();
    if (updater.updateStatus(upRig.getName(), status.getIsOnline(), status.getOfflineReason())) {
      providerResp.setSuccessful(true);
      providerResp.setIdentityToken(
          IdentityTokenRegister.getInstance().getOrGenerateIdentityToken(upRig.getName()));
    } else {
      providerResp.setSuccessful(false);
      providerResp.setErrorReason(updater.getFailedReason());
    }

    updater.getSession().close();
    return response;
  }