Getting tenant Id as null from 'TenantAwareDataSource' in multi tenancy mode

@joram, I am getting similar exception and I am not using flowable rest

org.flowable.common.engine.api.FlowableException: Could not find a dataSource for tenant null
at org.flowable.common.engine.impl.cfg.multitenant.TenantAwareDataSource.getCurrentDataSource(TenantAwareDataSource.java:68) ~[flowable-engine-common-6.5.0.jar:6.5.0]
at org.flowable.common.engine.impl.cfg.multitenant.TenantAwareDataSource.getConnection(TenantAwareDataSource.java:56) ~[flowable-engine-common-6.5.0.jar:6.5.0]
at org.apache.ibatis.transaction.jdbc.JdbcTransaction.openConnection(JdbcTransaction.java:138) ~[mybatis-3.5.3.jar:3.5.3]
at org.apache.ibatis.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:60) ~[mybatis-3.5.3.jar:3.5.3]
at org.apache.ibatis.session.defaults.DefaultSqlSession.getConnection(DefaultSqlSession.java:297) ~[mybatis-3.5.3.jar:3.5.3]
at org.flowable.common.engine.impl.db.DbSqlSessionFactory.openSession(DbSqlSessionFactory.java:96) ~[flowable-engine-common-6.5.0.jar:6.5.0]
at org.flowable.common.engine.impl.interceptor.CommandContext.getSession(CommandContext.java:246) ~[flowable-engine-common-6.5.0.jar:6.5.0]
at org.flowable.common.engine.impl.cfg.standalone.StandaloneMybatisTransactionContext.(StandaloneMybatisTransactionContext.java:48) ~[flowable-engine-common-6.5.0.jar:6.5.0]
at org.flowable.common.engine.impl.cfg.standalone.StandaloneMybatisTransactionContextFactory.openTransactionContext(StandaloneMybatisTransactionContextFactory.java:26) ~[flowable-engine-common-6.5.0.jar:6.5.0]
at org.flowable.common.engine.impl.interceptor.TransactionContextInterceptor.execute(TransactionContextInterceptor.java:47) ~[flowable-engine-common-6.5.0.jar:6.5.0]
at org.flowable.common.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:72) ~[flowable-engine-common-6.5.0.jar:6.5.0]
at org.flowable.common.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:30) ~[flowable-engine-common-6.5.0.jar:6.5.0]
at org.flowable.common.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:56) ~[flowable-engine-common-6.5.0.jar:6.5.0]
at org.flowable.common.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:51) ~[flowable-engine-common-6.5.0.jar:6.5.0]
at org.flowable.engine.impl.RuntimeServiceImpl.startProcessInstance(RuntimeServiceImpl.java:732) ~[flowable-engine-6.5.0.jar:6.5.0]
at org.flowable.engine.impl.runtime.ProcessInstanceBuilderImpl.start(ProcessInstanceBuilderImpl.java:205) ~[flowable-engine-6.5.0.jar:6.5.0]
at com.swapstech.galaxy.workflow.service.WorkFlowServiceImpl.startWorkFlowAsync(WorkFlowServiceImpl.java:51) ~[classes/:na]
at com.swapstech.galaxy.workflow.service.WorkFlowServiceImpl$$FastClassBySpringCGLIB$$6873dbe7.invoke() ~[classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771) ~[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) ~[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115) ~[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_181]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_181]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_181]
at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_181]

Here is the code I am invoking it

processInstance = processEngine.getRuntimeService().createProcessInstanceBuilder()
.variables(workFlowModelMap)
.processDefinitionKey(processInstanceKey)
.predefineProcessInstanceId(processInstId)
.tenantId(tenant)
.start();

My engine configuration

@Bean
public MultiSchemaMultiTenantProcessEngineConfiguration processEngineConfigurationImpl() {
BankOSTenantHolder tenantInfoHolder= new BankOSTenantHolder();
tenantInfoHolder.addTenant(tenants);

	MultiSchemaMultiTenantProcessEngineConfiguration config= new MultiSchemaMultiTenantProcessEngineConfiguration(tenantInfoHolder);
	
	config.setDatabaseType(MultiSchemaMultiTenantProcessEngineConfiguration.DATABASE_TYPE_MYSQL);
    config.setDatabaseSchemaUpdate(MultiSchemaMultiTenantProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
    config.setAsyncExecutorActivate(true);
    config.setDisableIdmEngine(true);
    config.setDisableEventRegistry(true);
    config.setJpaEntityManagerFactory(localContainerEntityManagerFactoryBean.getObject());

    if (sharedExecutor) {
        config.setAsyncExecutor(new SharedExecutorServiceAsyncExecutor(tenantInfoHolder));
    } else {
        config.setAsyncExecutor(new ExecutorPerTenantAsyncExecutor(tenantInfoHolder));
    }
    return config;
}

@Bean
public ProcessEngine buildProcessEngine(MultiSchemaMultiTenantProcessEngineConfiguration config) {
for (String tenant : tenants) {
config.registerTenant(tenant,createDataSource(tenant));
}
return config.buildProcessEngine();
}