class ControllerExecutionDE extends AbstractControllerExecution<DelegateExecution> implements JavaDelegate {

    protected String getControllerActor(DelegateExecution execution, String controllerScope,
            String resourceCustomizationUuid, String controllerAction) {

        /**
         * Firstly, check the execution context for actor parameter.
         */
        String controllerActor = getParameterFromExecution(execution, CONTROLLER_ACTOR_PARAM);

        /**
         * If no meaningful controller actor value found in the execution context and the value is not SO-REF-DATA.
         */
        if (Strings.isNullOrEmpty(controllerActor) && !isSoRefControllerActor(controllerActor)) {

            /**
             * secondly, if no meaningful actor from execution context, getting from resource table in database.
             */
            if (isPnfResourceScope(controllerScope)) {
                PnfResourceCustomization pnfResourceCustomization =
                        catalogDbClient.getPnfResourceCustomizationByModelCustomizationUUID(resourceCustomizationUuid);
                controllerActor = pnfResourceCustomization.getControllerActor();
            } else if (isVnfResourceScope(controllerScope)) {
                VnfResourceCustomization vnfResourceCustomization =
                        catalogDbClient.getVnfResourceCustomizationByModelCustomizationUUID(resourceCustomizationUuid);
                controllerActor = vnfResourceCustomization.getControllerActor();
            } else {
                logger.warn("Unrecognized scope: {}", controllerScope);
            }
        }

        /**
         * Lastly, can NOT find the controller actor information from resource customization table or value is
         * SO-REF-DATA
         */
        if (Strings.isNullOrEmpty(controllerActor) || isSoRefControllerActor(controllerActor)) {
            String resourceType = getParameterFromExecution(execution, RESOURCE_TYPE_PARAM);
            ControllerSelectionReference reference = catalogDbClient
                    .getControllerSelectionReferenceByVnfTypeAndActionCategory(resourceType, controllerAction);
            controllerActor = reference.getControllerName();
        }

        return controllerActor;
    }

}