protected SingleLogoutRequestContext createLogoutRequest(final String ticketId,
                                                             final WebApplicationService selectedService,
                                                             final RegisteredService registeredService,
                                                             final SingleLogoutUrl logoutUrl,
                                                             final SingleLogoutExecutionRequest context) {
        val logoutRequest = DefaultSingleLogoutRequestContext.builder()
            .ticketId(ticketId)
            .service(selectedService)
            .logoutUrl(FunctionUtils.doUnchecked(() -> new URI(logoutUrl.getUrl()).toURL()))
            .logoutType(logoutUrl.getLogoutType())
            .registeredService(registeredService)
            .executionRequest(context)
            .properties(logoutUrl.getProperties())
            .build();

        LOGGER.trace("Logout request [{}] created for [{}] and ticket id [{}]", logoutRequest, selectedService, ticketId);
        if (logoutRequest.getLogoutType() == RegisteredServiceLogoutType.BACK_CHANNEL) {
            if (performBackChannelLogout(logoutRequest)) {
                logoutRequest.setStatus(LogoutRequestStatus.SUCCESS);
            } else {
                logoutRequest.setStatus(LogoutRequestStatus.FAILURE);
                LOGGER.warn("Logout message is not sent to [{}]; Continuing processing...", selectedService);
            }
        } else {
            LOGGER.trace("Logout operation is not yet attempted for [{}] given logout type is set to [{}]",
                selectedService, logoutRequest.getLogoutType());
            logoutRequest.setStatus(LogoutRequestStatus.NOT_ATTEMPTED);
        }
        return logoutRequest;
    }
This is {@link BaseSingleLogoutServiceMessageHandler}.

@author Misagh Moayyed
@since 6.0.0
core/cas-server-core-logout-api/src/main/java/org/apereo/cas/logout/slo/BaseSingleLogoutServiceMessageHandler.java