public void fireClientStatusChangeEvent(ClientVersionBean cvb, ClientStatus oldStatus) {
        if (oldStatus == cvb.getStatus()) {
            LOGGER.debug("Old status and new status same {0} => {1}", cvb.getId(), cvb.getStatus());
            return;
        }

        ClientBean cb = cvb.getClient();
        ApimanEventHeaders headers = ApimanEventHeaders
             .builder()
             .setId(UUID.randomUUID().toString().substring(8))
             .setSource(URI.create("/apiman/events/clients"))
             .setSubject("status.change")
             .build();

        var event = ClientVersionStatusEvent
             .builder()
             .setHeaders(headers)
             .setClientOrgId(cb.getOrganization().getId())
             .setClientId(cvb.getClient().getId())
             .setClientVersion(cvb.getVersion())
             .setPreviousStatus(oldStatus)
             .setNewStatus(cvb.getStatus())
             .build();

        eventService.fireEvent(event);
        LOGGER.debug("Sending client status change event: {0}");
    }
Gets the client version internally
which lets callers dictate whether the user has clientView permission for the org.
@param organizationId the organizationId
@param clientId the clientId
@param version the version
@return the client version
@throws ClientVersionNotFoundException if client not found
manager/api/rest-impl/src/main/java/io/apiman/manager/api/service/ClientAppService.java