Customized DataManager does not take effect

I am exploring the integration with MongoDB. The method I am using is to replace the corresponding DataManager in EngineConfigurationConfigurer bean.

    @Bean
    public EngineConfigurationConfigurer<SpringProcessEngineConfiguration> customProcessEngineConfigurer() {
        return configuration -> {
            log.info("enter customProcessEngineConfigurer>>>>>");
            configuration.setEngineName("bpmn");
            configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE);
            configuration.setIdGenerator(idGenerator());
            configuration.setEnableExecutionRelationshipCounts(false);
            configuration.setEnableProcessDefinitionHistoryLevel(false);

            MongoDbSessionFactory mongoDbSessionFactory = new MongoDbSessionFactory(this.mongoClient, this.mongoDatabase);
            configuration.setCustomSessionFactories(Collections.singletonList(mongoDbSessionFactory));

            ExecutionDataManager executionDataManger = new MongoDbExecutionDataManager(configuration.getProcessEngineConfiguration());
            configuration.setExecutionDataManager(executionDataManger);
            configuration.setExecutionEntityManager(new WedaExecutionEntityManagerImpl(configuration.getProcessEngineConfiguration(), executionDataManger));

            configuration.initIdentityLinkServiceConfiguration(); // produces NPE if not inited
            IdentityLinkServiceConfiguration identityLinkServiceConfiguration = configuration.getIdentityLinkServiceConfiguration();
            IdentityLinkDataManager identityLinkDataManager = new MongoDbIdentityLinkDataManager(identityLinkServiceConfiguration);
            identityLinkServiceConfiguration.setIdentityLinkDataManager(identityLinkDataManager);
            identityLinkServiceConfiguration.setIdentityLinkEntityManager(new IdentityLinkEntityManagerImpl(identityLinkServiceConfiguration, identityLinkDataManager));
            configuration.setIdentityLinkServiceConfiguration(identityLinkServiceConfiguration);
        };
    }

I’s using flowable-v6.7.0 & flowable-spring-boot-starter
Flowable engine configurations are as follow

flowable:
  history-level: none
  async-executor-activate: true
  eventregistry:
    enabled: false
  app:
    enabled: false
  idm:
    enabled: false
  cmmn:
    enabled: false
  dmn:
    enabled: false
  form:
    enabled: false

The problem is that the persistence of IdentityLinkEntity still goes to the default MybatisDataManager.
However the ExecutionDataManager above works as expected.
Is there any issue with my approach?

Best regards
sanbai

After looking into the source code, I find that EngineConfigurationConfigurer was called before ProcessEngineConfigurationImpl.buildProcessEngine which initiated IdentityLinkServiceConfiguration again and replaced my custom DataManager.
So the only solution is to inherit ProcessEngineConfigurationImpl and override the instantiateServiceConfiguration methods, and then manually create the engine instance. Is that correct?

Thanks.