Problem Statement
Our application has been running as a multi-tenant OutSystems solution for several years. Each tenant's data is isolated through the built-in Tenant Identifier mechanism.
A new business requirement has emerged where data from Tenant A must be merged into Tenant B. After the merge, all records belonging to Tenant A should become part of Tenant B while maintaining data integrity and relationships.
Challenges
Proposed Solution
So we are going to create a dedicated Tenant Migration Tool implemented in a non-multi-tenant module.
Approach
SET Tenant_Id = 334 WHERE Tenant_Id = 335;
Your approach is technicaly possible in OutSystems 11 and using a separate non multi tenant administration module is fine.
However, cross tenant access only happens after enabling show/expose TenantId on the consumed entities. Once enabled, automatic tenant isolation is disabled for those entities so every query and write must explicitly filter or assign the correct TenantId.
Updating TenantId keeps the application record Ids unchanged but it should not be considered a complete tenant merge. You need to check unique key conflicts, duplicate data
Freeze writes during the migration and keep an audit and rollback log and after that validate table coutns, relationships, and orphan records
If Tenant B is empty and there are no conflicts, a controlled TenantId update may be reasonable. For overlapping data, copying, mapping, and deduplicating records is safer. For production, I would also validate the plan with OutSystems Support.