protected KapuaId createManagementOperation(KapuaId scopeId, KapuaId deviceId, KapuaId operationId, int totalCheckpoints, KapuaRequestMessage<?, ?> requestMessage) throws KapuaException {
DeviceManagementOperationCreator deviceManagementOperationCreator = DEVICE_MANAGEMENT_OPERATION_FACTORY.newCreator(scopeId);
deviceManagementOperationCreator.setDeviceId(deviceId);
deviceManagementOperationCreator.setOperationId(operationId);
deviceManagementOperationCreator.setStartedOn(new Date());
deviceManagementOperationCreator.setAppId(requestMessage.getChannel().getAppName().getValue());
deviceManagementOperationCreator.setAction(requestMessage.getChannel().getMethod());
deviceManagementOperationCreator.setResource(!requestMessage.getChannel().getSemanticParts().isEmpty() ? requestMessage.getChannel().getSemanticParts().get(0) : null);
deviceManagementOperationCreator.setStatus(OperationStatus.RUNNING);
deviceManagementOperationCreator.setInputProperties(extractInputProperties(requestMessage));
DeviceManagementOperation deviceManagementOperation = KapuaSecurityUtils.doPrivileged(() -> DEVICE_MANAGEMENT_OPERATION_REGISTRY_SERVICE.create(deviceManagementOperationCreator));
return deviceManagementOperation.getId();
}