Simple Object Designer Documentation
Index

Dual-App Deployment

Deploying Dual-App requires specific order and considerations. This page explains the deployment process.

Deployment Order

Critical: App 1 First

Apps must be deployed in order:

  1. Deploy App 1 (tables)
  2. Wait for completion
  3. Deploy App 2 (pages)

App 2 depends on App 1. Installing App 2 without App 1 fails.

Why Order Matters

App 2 references → App 1 objects
                   (must exist first)

If App 1 isn't installed, App 2 can't resolve its dependencies.

Deployment Methods

Direct Publish

When publishing from SOD:

  1. SOD publishes App 1
  2. Waits for completion
  3. Publishes App 2
  4. Reports final status

SOD handles the ordering automatically.

Manual Installation

When you choose to download instead of publish, SOD produces a single ZIP archive containing both .app files (one for App 1, one for App 2). To install manually:

  1. Download the ZIP
  2. Extract both .app files
  3. Install App 1 via Extension Management
  4. Wait for App 1 to complete
  5. Install App 2 via Extension Management
  6. Wait for App 2 to complete

Updating Dual-Apps

Update Process

When updating customizations:

  1. SOD updates App 1 (if needed)
  2. Waits for App 1 deployment
  3. Updates App 2 (if needed)
  4. Reports completion

Version Considerations

  • Update App 1 first if it has changes
  • Update App 2 after App 1 completes
  • Keep versions coordinated

Object Number Reshuffling on Republish

In Dual-App mode, object numbers can be shuffled between App 1 and App 2 when you republish. Because of that reshuffling, an object — an API page, typically — can end up defined in both apps across versions, and deployment fails:

The application object of type 'Page' with the ID '<number>' is defined in multiple apps.
The apps are: <App name> <version>; <App name> <version>.

Resolution: uninstall App 2, then republish.

This is a known quirk of Dual-App mode: it is sometimes simply necessary to uninstall App 2 before publishing. App 2 is always safe to uninstall — it contains page extensions, API pages and page-level logic, it depends on App 1, and nothing depends on it.

If the collision is not Dual-App related, another installed extension may be using the object number; the ToolBox app's Object Inspector will show what holds it.

Removing a field that App 2 references

App 2 holds page extensions, report extensions and API pages; App 1 holds the table extensions. App 2 therefore references fields defined in App 1.

When you remove a field from a table in App 1, App 2 still references it and compilation fails during publish.

Before republishing after removing a field, uninstall App 2 first, then publish.

The reference clean-up requirement is exactly the same as in Single-App mode — the field must still be removed from every page, report and API reference in SOD. Uninstalling App 2 does not substitute for that. See Create New Fields and Force Mode.

Uninstalling Dual-Apps

Uninstall Order

Reverse of installation:

  1. Uninstall App 2 first
  2. Wait for completion
  3. Uninstall App 1

Why This Order

App 2 depends on App 1:

  • Can't uninstall App 1 while App 2 uses it
  • Uninstall dependent app first

Deployment Environments

Sandbox Deployment

In sandbox:

  • Automatic ordering by SOD
  • Schema sync defaults to Synchronize; switch to Force Sync only when a deployment is blocked by a destructive change
  • Faster deployment

Production Deployment

In production:

  • Consider deployment window
  • Communicate to users
  • Follow change management
  • Test in sandbox first

Multi-Environment Deployment

Using .app Files

For consistent multi-environment deployment:

  1. Generate .app files in sandbox
  2. Download both .app files
  3. Deploy to other environments in order

Ensuring Consistency

  • Same versions across environments
  • Same deployment order
  • Document which version where

Troubleshooting Deployment

App 2 Fails with Dependency Error

Cause: App 1 not installed or not completed

Solution:

  1. Check App 1 deployment status
  2. Wait for App 1 completion
  3. Retry App 2

Schema Sync Issues

If App 1 sync fails:

  1. Review error message
  2. May need Force Sync mode
  3. Fix and retry

If App 2 sync fails:

  1. Verify App 1 is fully installed
  2. Review error details
  3. May indicate object conflicts

Version Mismatch

If updating causes issues:

  1. Ensure both apps updated together
  2. Versions should be compatible
  3. Consider clean install if problematic

Rollback Strategy

If Deployment Fails

  1. Note which app failed
  2. Review error messages
  3. Fix issues
  4. Retry deployment

If Rollback Needed

  1. Uninstall App 2 (if installed)
  2. Uninstall App 1 (if needed)
  3. Install previous versions (if available)
  4. Verify system works

Best Practices

Always Test First

  • Deploy to sandbox before production
  • Verify both apps work together
  • Test key functionality

Coordinate Deployments

  • Deploy both apps in same maintenance window
  • Don't leave partially updated
  • Communicate with users

Keep Versions Aligned

  • Update both apps together when possible
  • Document version relationships
  • Track what's deployed where

Monitor Deployment

  • Check status after each app
  • Don't proceed until completion
  • Review any warnings