@Override
  public FilterRpcResponse execute(
      SectioningStatusFilterRpcRequest request, SessionContext context) {
    try {
      boolean online = "true".equals(request.getOption("online"));

      if (context.isAuthenticated()) {
        request.setOption("user", context.getUser().getExternalUserId());
        if (context.getUser().getCurrentAuthority() != null
            && context.getUser().getCurrentAuthority().hasRight(Right.ConsentApproval))
          request.setOption("approval", "true");
      }

      if (online) {
        Long sessionId = getStatusPageSessionId(context);

        OnlineSectioningServer server =
            solverServerService
                .getOnlineStudentSchedulingContainer()
                .getSolver(sessionId.toString());
        if (server == null) throw new SectioningException(MSG.exceptionBadSession());

        context.checkPermission(
            server.getAcademicSession().getUniqueId(), "Session", Right.SchedulingDashboard);
        request.setSessionId(server.getAcademicSession().getUniqueId());

        return server.execute(
            server.createAction(SectioningStatusFilterAction.class).forRequest(request),
            currentUser(context));
      } else {
        OnlineSectioningServer server = studentSectioningSolverService.getSolver();
        if (server == null) throw new SectioningException(MSG.exceptionNoSolver());

        context.checkPermission(
            server.getAcademicSession().getUniqueId(),
            "Session",
            Right.StudentSectioningSolverDashboard);
        request.setSessionId(server.getAcademicSession().getUniqueId());

        return server.execute(
            server.createAction(SectioningStatusFilterAction.class).forRequest(request),
            currentUser(context));
      }
    } catch (PageAccessException e) {
      throw e;
    } catch (SectioningException e) {
      throw e;
    } catch (Exception e) {
      sLog.error(e.getMessage(), e);
      throw new SectioningException(MSG.exceptionUnknown(e.getMessage()), e);
    }
  }