ABC Space Bridge
ABC Space Bridge moves selected HumHub Spaces between sites with their Custom Pages, Posts, Calendar entries, Wiki pages, files, profile images, banners, module activation and settings. It creates portable migration packages for backup, staging, consolidation and controlled restores without touching unrelated Spaces or existing target-site data.
ABC Space Bridge is a practical migration and backup module for HumHub sites. It was developed from real-world migration work where selected Spaces had to be moved safely from one HumHub installation into another without damaging existing data on the receiving site.
Unlike a full database dump, ABC Space Bridge focuses on selected Spaces. You can export one Space, several Spaces, or groups of Spaces and move them into another HumHub installation through a portable ZIP package. This makes it useful for site consolidation, staging-to-production moves, customer onboarding, partial backups, controlled restores, and transferring community projects between HumHub platforms.
The module currently supports the most important HumHub Space data:
Core Space data
ABC Space Bridge exports and imports the Space record, content container, GUID structure, URL, title, description, module activation, content container settings, and basic admin membership. During import, it repairs the critical HumHub relationship between space.guid, contentcontainer.guid, and contentcontainer.pk, so imported Spaces behave like native Spaces.
Custom Pages
Custom Pages are moved with their page records, page settings, URLs, targets, visibility settings, and related HumHub content records.
Dashboard / Stream Posts
Space posts are exported with their content records and restored into the correct Space stream, including publication state and visibility handling.
Calendar Entries
Calendar events are moved with their linked content records. The importer preserves event titles, descriptions, dates, times, recurrence-related fields where possible, and connects them to the correct new Space.
Wiki Pages
Wiki pages and revisions are exported and restored, including the related content records and parent-page mapping where possible.
Files and Images
ABC Space Bridge handles both database file records and physical upload folders. It also moves standard HumHub Space profile images and banner images while keeping them in HumHub’s normal upload locations. This is important because images remain normal HumHub images and do not depend on ABC Space Bridge after import.
The module also creates internal transfer and mapping records, so administrators can trace which old Space, page, post, calendar entry, wiki page, or file became which new object on the receiving site. This makes migrations auditable and easier to repair if something needs adjustment later.
ABC Space Bridge is designed to be extendable through adapters. The next planned adapters are for further official HumHub modules such as Gallery, CFiles, Linklist, Polls, and ShareBetween, followed by optional adapters for ABC Suite modules.
This first version is ideal for administrators who need a safer, cleaner alternative to manual SQL migrations when moving selected HumHub Spaces between sites.
—
ABC Space Bridge — Complete User Manual
Version covered: abcspacebridge v26.05.25.4
Module ID: abcspacebridge
Purpose: Move selected HumHub Spaces from one HumHub site to another without replacing or damaging the receiving site’s existing Spaces.
1. What ABC Space Bridge does
ABC Space Bridge is a HumHub migration and backup module for selected Spaces. It was created from the real Phuket Proms → Phuketer migration workflow, where selected Spaces, their custom pages, stream posts, calendar entries, wiki pages, profile images, banner images, and attached files had to be moved safely into another existing HumHub site.
The important point is this:
ABC Space Bridge does not simply copy a whole database over another database. It exports selected Space data into a portable ZIP package and imports it into the receiving site as new Spaces.
This protects existing Spaces, existing users, existing modules, and existing content on the receiving HumHub installation.
2. Current feature set in this version
This version can export and import:
-
Core Space records
-
Space name
-
Space description
-
Space about text, if available
-
Space URL/slug, with a safe prefix on import
-
Space type ID, if the receiving database supports it
-
Visibility/status fields
-
Content container record
-
Space-level module activation records
-
Space-level content container settings
-
New admin membership for the importing administrator
-
-
Custom Pages
-
Space menu pages
-
Page title, icon, URL, content, abstract, iframe attributes, visibility, sort order, target, CSS class
-
Custom page settings, if used
-
Internal links are rewritten from old Space URLs to new Space URLs
-
-
Dashboard / Stream Posts
-
Post records
-
Related HumHub content records
-
Stream visibility can be forced public during import
-
Stream sort date, state, hidden/archive flags, and published state are normalized so the posts can appear in the new Space stream
-
-
Calendar entries
-
Calendar event records
-
Related HumHub content records
-
Participants, if the table exists
-
Reminders, if the table exists
-
Recurring-event fields are copied when both source and receiver support them
-
-
Wiki pages
-
Wiki page records
-
Related HumHub content records
-
Wiki revisions
-
Parent relationships are remapped after import
-
-
Files and images
-
File database records attached to supported objects
-
Physical file folders from
/uploads/file/<first-letter>/<second-letter>/<guid>/ -
File GUIDs are preserved so existing
file-guid:...references in posts and wiki text continue to work -
Space profile images from
/uploads/profile_image/ -
Space banner images from
/uploads/profile_image/banner/ -
Space profile and banner images are renamed to the new Space GUID during import
-
3. What this version does not yet migrate
The first public test version focuses on the core migration path and the adapters already tested successfully.
The following adapters are planned next, but are not yet part of this version’s complete data migration:
-
Gallery
-
CFiles
-
Linklist
-
Polls
-
ShareBetween
-
Reviews and other third-party modules
-
Comments, likes, activities, and notifications as independent history tables
-
Full user account migration
-
Full membership migration for all old Space members
Important: the module can copy Space-level module activation rows for modules that exist and are enabled on the receiver, but that is not the same as migrating each module’s own content tables. For example, enabling gallery in a Space does not yet mean all gallery records are moved by this version.
4. The two-site concept: sender and receiver
ABC Space Bridge should be installed on both sites:
-
Sending site: the old site that contains the Spaces you want to export.
-
Receiving site: the new or main site where the Spaces will be imported.
Example from the first real migration:
-
Sender: Phuket Proms
-
Receiver: Phuketer
-
Imported URLs used the prefix
proms- -
Source Space
kru-richie-bandbecameproms-kru-richie-band
The prefix is important because it prevents URL collisions. If the receiver already has a Space with the same URL, ABC Space Bridge adds a numeric suffix automatically.
Example:
old URL: kru-richie-band requested import prefix: proms- new URL: proms-kru-richie-band
If proms-kru-richie-band already exists, the module will try:
proms-kru-richie-band-1 proms-kru-richie-band-2 proms-kru-richie-band-3
until it finds a free URL.
5. Installation
5.1 Upload the module
Upload the module folder to:
protected/modules/abcspacebridge
The module folder must contain module.json, Module.php, controllers, services, models, migrations, and the other module files.
5.2 Enable the module
Go to:
Administration → Modules
Find ABC Space Bridge and enable it.
During enable/install, the module creates its own management tables.
Representative SQL structure:
CREATE TABLE abcspacebridge_transfer (...); CREATE TABLE abcspacebridge_space_map (...); CREATE TABLE abcspacebridge_log (...);
The most important tables are:
-
abcspacebridge_transfer— one row per export or import job -
abcspacebridge_space_map— old Space IDs/URLs mapped to new Space IDs/URLs -
abcspacebridge_log— readable transfer messages, warnings, and errors
5.3 Confirm that the admin page opens
Open:
https://your-site.example/abcspacebridge/admin/index
You should see the transfer overview page with buttons for export and import.
If you get a database-table error, the migrations did not run. Disable and enable the module again, or run HumHub migrations from the console.
6. Preparing both HumHub sites
Before exporting or importing, check these points.
6.1 Make a backup
Always back up both:
-
The database
-
The upload folders
Important upload folders include:
uploads/file uploads/profile_image uploads/profile_image/banner
A Space migration touches database records and files. A backup is the fastest way back if something unexpected happens.
6.2 Install the same content modules on both sites
For this version, the receiver should have these modules installed if you want to import their data:
custom_pages calendar wiki post/content stream file handling
The receiver does not need every module from the sender, but a module must exist and be enabled if you want its Space-level module activation to be copied.
Internally, ABC Space Bridge checks the receiving site’s module_enabled table before inserting Space module activation rows. This avoids activating missing modules inside imported Spaces.
Representative query:
SELECT module_id FROM module_enabled;
Then it inserts only module IDs that exist on the receiver.
6.3 Know the receiving admin user ID
During import, ABC Space Bridge adds the selected admin as the administrator of each imported Space. This is necessary because the original users may not exist on the receiving site.
To find admin users, you can use:
SELECT id, username, email, status FROM `user` ORDER BY id;
In the Phuket Proms → Phuketer migration, the receiving admin user ID was 9.
6.4 Check file permissions
After import, uploaded files must be readable by the web server user.
Example commands, adjusted to the server user used on the Phuketer system:
chown -R hub-school:hub-school /home/hub-school/public_html/uploads/file
chown -R hub-school:hub-school /home/hub-school/public_html/uploads/profile_image
find /home/hub-school/public_html/uploads/file -type d -exec chmod 755 {} ;
find /home/hub-school/public_html/uploads/file -type f -exec chmod 644 {} ;
find /home/hub-school/public_html/uploads/profile_image -type d -exec chmod 755 {} ;
find /home/hub-school/public_html/uploads/profile_image -type f -exec chmod 644 {} ;
Use the correct Linux user for the receiving site. Do not blindly copy hub-school if the site uses another account.
7. Exporting Spaces from the sending site
7.1 Open the export page
On the sending site, open:
ABC Space Bridge → Export
or directly:
https://your-sending-site.example/abcspacebridge/admin/export
7.2 Choose Spaces by URL
You can export one or more specific Spaces by entering their Space URLs.
Example:
miniheartband kru-richie-band absound
Use the Space URL part only, not the full URL.
Correct:
miniheartband
Not needed:
https://phuketproms.com/s/miniheartband
7.3 Choose Spaces by Space Type
If your HumHub site uses the space_type_id column, you can export groups of Spaces by type.
Example:
8,9,12
This is useful when one site contains Bands, Artists, Groups, Churches, Schools, Companies, or other structured Space groups.
7.4 Export only active Spaces
The export form has an option for active Spaces only. This is recommended for normal migrations because archived or inactive Spaces are often old test data.
Internally this behaves like:
SELECT * FROM space WHERE status = 1;
combined with the selected Space URLs and/or Space Type IDs.
7.5 Choose adapters
Adapters are the parts of the module that know how to export and import a specific content type.
Current adapters:
-
Core Spaces
-
Custom Pages
-
Posts
-
Calendar
-
Wiki
-
Files
For a complete current migration, keep all available adapters selected.
7.6 Create the export package
Click:
Create Export Package
The module creates a ZIP file. The ZIP contains JSONL data files and copied physical files.
The package is stored in the module runtime export folder and can be downloaded from the transfer overview.
8. What is inside an export package
The export package is a portable ZIP file.
Typical structure:
manifest.json data/space.jsonl data/contentcontainer.jsonl data/contentcontainer_module.jsonl data/contentcontainer_setting.jsonl modules/custom_pages/pages.jsonl modules/custom_pages/page_setting.jsonl modules/post/post.jsonl modules/post/content.jsonl modules/calendar/entry.jsonl modules/calendar/content.jsonl modules/calendar/participant.jsonl modules/calendar/reminder.jsonl modules/wiki/page.jsonl modules/wiki/revision.jsonl modules/wiki/content.jsonl modules/file/file.jsonl files/file/<guid>/file files/file/<guid>/preview-image files/profile_image/<space-guid>.jpg files/profile_image/banner/<space-guid>.jpg
JSONL means “one JSON record per line”. This format is safer for large exports than one huge JSON array because the system can read records line by line.
The manifest.json contains basic metadata such as source site, export time, selected adapters, and package information.
9. Importing into the receiving site
9.1 Open the import page
On the receiving site, open:
ABC Space Bridge → Import
or directly:
https://your-receiving-site.example/abcspacebridge/admin/import
9.2 Upload the ZIP package
Choose the export ZIP from the sending site.
The receiving site extracts the ZIP into a temporary work directory and reads the manifest.
9.3 Choose the receiving admin user ID
Enter the user ID of the admin who should own/manage the imported Spaces.
This admin will be inserted into space_membership as Space admin for every imported Space.
Representative insert:
INSERT INTO space_membership
(space_id, user_id, originator_user_id, status, group_id, created_at, created_by, updated_at, updated_by)
VALUES
(:newSpaceId, :adminUserId, :adminUserId, 3, 'admin', NOW(), :adminUserId, NOW(), :adminUserId);
9.4 Choose a URL prefix
Use a clear prefix to show where the imported Spaces came from and to avoid collisions.
Examples:
proms- school- church- backup-
For Phuket Proms imported into Phuketer, the prefix was:
proms-
9.5 Choose status and visibility
Recommended normal import settings:
Status: Active Visibility: Public Force default content visibility: Yes Force content public: Yes, when old private stream posts should become visible on the receiving public site
These settings help imported Spaces appear normally in the receiver.
9.6 Start import
Click the import button. The module then imports in adapter order:
-
Core Spaces
-
Custom Pages
-
Posts
-
Calendar entries
-
Wiki pages
-
Files and images
The order matters. Files need the imported post/wiki/calendar/custom-page IDs so they can attach to the new target objects.
10. What happens during import
10.1 Core Space import
For every exported Space, the module creates a new content container and a new Space.
Representative process:
INSERT INTO contentcontainer
(guid, class, pk, owner_user_id)
VALUES
(:newGuid, 'humhub\modules\space\models\Space', 0, :adminUserId);
Then it creates the Space:
INSERT INTO space
(guid, url, contentcontainer_id, name, description, ...)
VALUES
(:newGuid, :newUrl, :newContentcontainerId, :name, :description, ...);
Then it fixes the content container so it points to the new Space:
UPDATE contentcontainer
SET pk = :newSpaceId,
guid = :newGuid
WHERE id = :newContentcontainerId;
This GUID alignment is very important in HumHub. The Space GUID and content container GUID must match. During the manual Phuket Proms migration, this was one of the key lessons learned.
10.2 Space module activation import
The module reads the exported contentcontainer_module rows and inserts only modules that are installed/enabled on the receiving site.
Representative SQL:
INSERT INTO contentcontainer_module
(contentcontainer_id, module_id, module_state)
VALUES
(:newContentcontainerId, :moduleId, :moduleState);
Duplicates are ignored safely.
10.3 Space settings import
Space-level settings from contentcontainer_setting are copied to the new content container.
Examples include module settings for Custom Pages, Linklist, ABC Header, or other Space-level options.
Representative SQL:
INSERT INTO contentcontainer_setting
(module_id, contentcontainer_id, name, value)
VALUES
(:moduleId, :newContentcontainerId, :name, :value);
10.4 Custom Pages import
Custom Pages are imported into custom_pages_page. Their related content records are inserted into content and connected to the new content container.
Internal links are rewritten using the Space URL map.
Example:
/s/kru-richie-band/page/facebook
becomes:
/s/proms-kru-richie-band/page/facebook
External links, such as Facebook or YouTube links, remain external.
10.5 Post import
Posts are imported into the post table. Their content rows are imported into the content table.
The module can normalize stream fields so posts appear correctly:
UPDATE content
SET stream_channel = 'default',
stream_sort_date = COALESCE(stream_sort_date, created_at),
state = 1,
hidden = 0,
archived = 0,
was_published = 1,
scheduled_at = NULL;
In practice, this is why old dashboard posts can appear in the receiving Space stream after import.
10.6 Calendar import
Calendar records are imported into calendar_entry, with content records added to content.
If available, participants and reminders are also copied:
calendar_entry calendar_entry_participant calendar_reminder
The import uses old-to-new entry maps so related rows point to the new calendar entry IDs.
10.7 Wiki import
Wiki pages are imported into wiki_page, their revisions into wiki_page_revision, and their content rows into content.
Parent page relationships are repaired after the new Wiki page IDs are known.
Example:
Old wiki page 19 → New wiki page 214
The final link then becomes:
/s/proms-absound/wiki/214/im-walking-here-beside-your-little-feet
10.8 File and image import
File records from the source file table are imported only when their target object was imported.
Supported file target objects in this version:
humhubmodulesspacemodelsSpace humhubmodulespostmodelsPost humhubmoduleswikimodelsWikiPage humhubmodulescalendarmodelsCalendarEntry humhubmodulescustom_pagesmodelsCustomPage
For normal uploaded files, the file GUID is kept. This is intentional because content may contain references like:
file-guid:87390665-e702-4cda-a59a-0f0656357e98
If the GUID stayed the same and the physical folder is copied, those references continue to work.
For Space profile and banner images, the old Space GUID is replaced with the new Space GUID because HumHub stores profile and banner images by Space GUID.
Example:
uploads/profile_image/<old-space-guid>.jpg
becomes:
uploads/profile_image/<new-space-guid>.jpg
and:
uploads/profile_image/banner/<old-space-guid>.jpg
becomes:
uploads/profile_image/banner/<new-space-guid>.jpg
11. Post-import checks
After import, check the result before announcing the migration as finished.
11.1 Check transfer status
SELECT id, guid, mode, status, source_site, target_site, started_at, finished_at FROM abcspacebridge_transfer ORDER BY id DESC LIMIT 10;
Expected status:
finished
11.2 Check imported Space map
Replace 123 with the transfer ID.
SELECT old_space_id, old_url, new_space_id, new_url, status FROM abcspacebridge_space_map WHERE transfer_id = 123 ORDER BY old_url;
This shows exactly which old Space became which new Space.
11.3 Check GUID alignment
This is one of the most important checks.
SELECT
s.id,
s.url,
s.guid AS space_guid,
cc.guid AS contentcontainer_guid,
CASE
WHEN s.guid = cc.guid THEN 'OK_MATCH'
ELSE 'BROKEN_MISMATCH'
END AS guid_status
FROM space s
JOIN contentcontainer cc
ON cc.id = s.contentcontainer_id
JOIN abcspacebridge_space_map m
ON m.new_space_id = s.id
WHERE m.transfer_id = 123;
Expected result:
OK_MATCH
If GUIDs do not match, Space pages can fail with “Could not find requested page”. Current ABC Space Bridge creates matching GUIDs automatically.
11.4 Check imported content totals
SELECT c.object_model, COUNT(*) AS total FROM content c JOIN abcspacebridge_space_map m ON m.new_contentcontainer_id = c.contentcontainer_id WHERE m.transfer_id = 123 GROUP BY c.object_model ORDER BY total DESC;
Expected object models may include:
humhubmodulescustom_pagesmodelsCustomPage humhubmodulespostmodelsPost humhubmodulescalendarmodelsCalendarEntry humhubmoduleswikimodelsWikiPage
11.5 Check Space module activation
SELECT s.url, cm.module_id, cm.module_state FROM space s JOIN abcspacebridge_space_map m ON m.new_space_id = s.id LEFT JOIN contentcontainer_module cm ON cm.contentcontainer_id = s.contentcontainer_id WHERE m.transfer_id = 123 ORDER BY s.url, cm.module_id;
This shows which modules are active in each imported Space.
11.6 Check file records
SELECT object_model, COUNT(*) AS files FROM file GROUP BY object_model ORDER BY files DESC;
To check a known file GUID:
SELECT id, guid, file_name, object_model, object_id FROM file WHERE guid = '87390665-e702-4cda-a59a-0f0656357e98';
11.7 Check physical file access
Open a copied file URL in the browser or use curl:
curl -I -L https://your-site.example/uploads/profile_image/<new-space-guid>.jpg curl -I -L https://your-site.example/uploads/profile_image/banner/<new-space-guid>.jpg
Expected result:
HTTP/2 200 content-type: image/jpeg
12. Clearing cache and assets
After a larger import, clear HumHub cache and public assets.
From the HumHub root folder:
cd /home/your-site/public_html rm -rf assets/*
If your console commands are healthy, also run:
cd /home/your-site/public_html/protected php yii cache/flush-all
If a module causes console errors, fix that module first. During the Phuket migration, one module accessed yiiconsoleRequest::pathInfo, which is a web-only request property. That type of module bug can break console maintenance commands.
13. Import by command line
For larger imports, command line import can be more stable than browser upload.
Example:
cd /home/your-site/public_html/protected php yii abcspacebridge/import --package=/path/to/abcspacebridge-export.zip --adminUserId=9 --urlPrefix=proms- --visibility=2 --status=1 --forceContentPublic=1
Typical options:
-
--package— full path to the export ZIP -
--adminUserId— receiving admin user ID -
--urlPrefix— prefix for imported Space URLs -
--visibility— receiving visibility value -
--status— receiving status value -
--forceContentPublic— sets imported content visibility public when needed
14. Practical example: moving one artist Space
Goal:
Move miniheartband from Phuket Proms into Phuketer.
On sending site:
-
Open ABC Space Bridge → Export.
-
Enter Space URL:
miniheartband
-
Select adapters:
Core Spaces Custom Pages Posts Calendar Wiki Files
-
Click Create Export Package.
-
Download the ZIP.
On receiving site:
-
Open ABC Space Bridge → Import.
-
Upload the ZIP.
-
Set admin user ID, for example:
9
-
Set URL prefix:
proms-
-
Import.
-
Open:
https://phuketer.com/s/proms-miniheartband
Then check:
-
Space opens
-
Title and description show
-
Profile image shows
-
Banner image shows
-
Stream posts appear
-
Wiki pages open
-
Calendar entries appear
-
Files/images inside content load
15. Understanding safety behavior
ABC Space Bridge is designed to be additive.
That means:
-
It creates new Spaces.
-
It creates new content containers.
-
It creates new content rows.
-
It creates maps between old and new IDs.
-
It does not overwrite existing Space URLs.
-
It does not delete existing receiving-site content.
-
It does not replace the receiving database.
The safest normal import strategy is:
Always use a prefix. Always import into new Space URLs. Check the result. Only then manually clean or merge if needed.
16. Troubleshooting
16.1 “Table abcspacebridge_transfer does not exist”
The module tables were not created.
Fix:
-
Disable and enable the module again.
-
Confirm migrations ran.
-
Check that the database user has permission to create tables.
16.2 Duplicate GUID error in abcspacebridge_transfer
Older early builds missed automatic GUID generation for transfer rows. Current builds create the GUID before saving. Update to the latest package and reinstall/upgrade the module.
16.3 PHP compile error about adapter method signature
All adapters must implement the same method signature as TransferAdapterInterface.
Correct adapter method:
public function export(Transfer $transfer, string $workDir, array $spaceRows, array $options = []): array
If an adapter misses = [], PHP rejects it.
16.4 Imported Space shows “Could not find requested page”
Check GUID alignment:
SELECT s.id, s.url, s.guid, cc.guid FROM space s JOIN contentcontainer cc ON cc.id = s.contentcontainer_id WHERE s.url = 'proms-example';
The Space GUID and content container GUID must match. Current ABC Space Bridge creates them correctly.
16.5 Space opens, but posts do not appear
Check imported content rows:
SELECT c.object_model, c.visibility, c.state, c.hidden, c.archived, c.was_published, COUNT(*) AS total FROM content c JOIN space s ON s.contentcontainer_id = c.contentcontainer_id WHERE s.url = 'proms-example' GROUP BY c.object_model, c.visibility, c.state, c.hidden, c.archived, c.was_published;
For public Space stream posts, you normally want:
visibility = 1 state = 1 hidden = 0 archived = 0 was_published = 1
16.6 Images are in the database but do not show
Check physical files and permissions:
ls -lah /home/your-site/public_html/uploads/file ls -lah /home/your-site/public_html/uploads/profile_image
Then repair ownership and permissions if needed:
chown -R your-web-user:your-web-group /home/your-site/public_html/uploads/file
chown -R your-web-user:your-web-group /home/your-site/public_html/uploads/profile_image
find /home/your-site/public_html/uploads/file -type d -exec chmod 755 {} ;
find /home/your-site/public_html/uploads/file -type f -exec chmod 644 {} ;
find /home/your-site/public_html/uploads/profile_image -type d -exec chmod 755 {} ;
find /home/your-site/public_html/uploads/profile_image -type f -exec chmod 644 {} ;
16.7 Module activation copied, but module content missing
This means the module activation row was copied, but there is not yet an adapter for that module’s own tables.
Example:
-
gallerymodule may be enabled in the imported Space. -
But gallery content is not fully migrated until a Gallery adapter exists.
Planned next adapters:
Gallery CFiles Linklist Polls ShareBetween
17. Recommended workflow for real migrations
Use this order for production migrations:
-
Update both sites to compatible HumHub/module versions.
-
Back up both databases.
-
Back up both upload folders.
-
Install ABC Space Bridge on both sites.
-
Confirm module tables exist.
-
Confirm target modules exist on the receiving site.
-
Export one test Space first.
-
Import that one test Space.
-
Check Space page, stream, custom pages, wiki, calendar, profile image, banner image, and files.
-
Only after the test is successful, export/import a larger group.
-
Check
abcspacebridge_transfer,abcspacebridge_space_map, and content counts. -
Clear assets/cache.
-
Browse the imported Spaces manually.
18. Why this module matters
HumHub Spaces are not simple rows in one table. A Space is connected to:
-
space -
contentcontainer -
contentcontainer_module -
contentcontainer_setting -
space_membership -
content -
module-specific tables
-
file -
physical upload folders
-
profile image and banner folders
A normal SQL copy can easily break GUIDs, content container IDs, file references, or module relationships. ABC Space Bridge handles these mappings step by step and records the old-to-new relationships so the migration can be checked and extended.
This makes it useful not only for moving a whole community section from one site to another, but also for selective backups, selective restores, project merges, and future cross-site Space exchange between compatible HumHub installations.
19. Current development roadmap
Next useful adapters:
-
Gallery
-
CFiles
-
Linklist
-
Polls
-
ShareBetween
-
Comments and likes
-
Activity history
-
Reviews and other ABC modules
-
Optional full membership/user mapping
-
Remote sender/receiver mode, where two sites communicate directly instead of manually uploading ZIP packages
The long-term goal is a safe Space migration framework where each module can register its own adapter and move its own tables without breaking existing data.