class BundleService {

    public String enqueueBundleRequest(final String organisationIdentification, final String deviceIdentification,
            final List<ActionRequest> actionList, final int messagePriority, final boolean bypassRetry)
            throws FunctionalException {

        final Organisation organisation = this.domainHelperService.findOrganisation(organisationIdentification);
        final Device device = this.domainHelperService.findActiveDevice(deviceIdentification);

        LOGGER.info("Bundle request called with organisation {}", organisationIdentification);
        this.checkIfBundleIsAllowed(actionList, organisation, device);

        final String correlationUid = this.correlationIdProviderService.getCorrelationId(organisationIdentification,
                deviceIdentification);

        final DeviceMessageMetadata deviceMessageMetadata = new DeviceMessageMetadata(deviceIdentification,
                organisationIdentification, correlationUid, MessageType.HANDLE_BUNDLED_ACTIONS.name(), messagePriority);
        deviceMessageMetadata.setBypassRetry(bypassRetry);

        final SmartMeteringRequestMessage message = new SmartMeteringRequestMessage.Builder().deviceMessageMetadata(
                deviceMessageMetadata).request(new BundleMessageRequest(actionList)).build();

        this.smartMeteringRequestMessageSender.send(message);

        return correlationUid;
    }

    public  BundleService();

}