code: private static void startTenantFlow() {
          Stack<TenantContextDataHolder> contextDataStack = parentHolderInstanceStack.get();
          contextDataStack.push(holderInstance.get());
          holderInstance.remove();
      }
docs: Starts a tenant flow. This will stack the current TenantContext and begin a new nested flow
  which can have an entirely different context. This is ideal for scenarios where multiple
  super-tenant and sub-tenant phases are required within as a single block of execution.
  This method starts a new tenant flow, and creates a new holder for tenant data.
  Thereafter, until endTenantFlow is called, the getTenantContext() methods will return the data related
  to the newly created tenant data holder.
  Once startTenantFlow is called, set the tenant itself and tenant specific data.
  See TenantContextDataHolder#startTenantFlow()