class ConfigAssignVnf {

    public void preProcessAbstractCDSProcessing(BuildingBlockExecution execution) {
        logger.info("Start preProcessAbstractCDSProcessing ");
        try {
            GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
            ServiceInstance serviceInstance =
                    extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
            ConfigAssignPropertiesForVnf configAssignPropertiesForVnf = new ConfigAssignPropertiesForVnf();
            configAssignPropertiesForVnf.setServiceInstanceId(serviceInstance.getServiceInstanceId());
            configAssignPropertiesForVnf
                    .setServiceModelUuid(serviceInstance.getModelInfoServiceInstance().getModelUuid());
            configAssignPropertiesForVnf
                    .setVnfCustomizationUuid(genericVnf.getModelInfoGenericVnf().getModelCustomizationUuid());
            configAssignPropertiesForVnf.setVnfId(genericVnf.getVnfId());
            configAssignPropertiesForVnf.setVnfName(genericVnf.getVnfName());
            setUserParamsInConfigAssignPropertiesForVnf(configAssignPropertiesForVnf,
                    execution.getGeneralBuildingBlock().getRequestContext().getRequestParameters().getUserParams(),
                    genericVnf);
            ConfigAssignRequestVnf configAssignRequestVnf = new ConfigAssignRequestVnf();
            configAssignRequestVnf.setResolutionKey(genericVnf.getVnfName());
            configAssignRequestVnf.setConfigAssignPropertiesForVnf(configAssignPropertiesForVnf);

            String blueprintName = genericVnf.getModelInfoGenericVnf().getBlueprintName();
            String blueprintVersion = genericVnf.getModelInfoGenericVnf().getBlueprintVersion();
            logger.debug(" BlueprintName : " + blueprintName + " BlueprintVersion : " + blueprintVersion);

            AbstractCDSPropertiesBean abstractCDSPropertiesBean = new AbstractCDSPropertiesBean();

            abstractCDSPropertiesBean.setBlueprintName(blueprintName);
            abstractCDSPropertiesBean.setBlueprintVersion(blueprintVersion);
            abstractCDSPropertiesBean.setRequestObject(configAssignRequestVnf.toString());

            GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();

            abstractCDSPropertiesBean.setOriginatorId(ORIGINATOR_ID);
            abstractCDSPropertiesBean.setRequestId(gBBInput.getRequestContext().getMsoRequestId());
            abstractCDSPropertiesBean.setSubRequestId(UUID.randomUUID().toString());
            abstractCDSPropertiesBean.setActionName(ACTION_NAME);
            abstractCDSPropertiesBean.setMode(MODE);
            execution.setVariable("executionObject", abstractCDSPropertiesBean);
        } catch (Exception ex) {
            logger.error("An exception occurred when creating ConfigAssignPropertiesForVnf for CDS request", ex);
            exceptionBuilder.buildAndThrowWorkflowException(execution, 7000, ex);
        }
    }

    @Autowired public  ConfigAssignVnf(ExtractPojosForBB extractPojosForBB, ExceptionBuilder exceptionBuilder);

}