we are committed to delivering innovative solutions that drive growth and add value to our clients. With a team of experienced professionals and a passion for excellence.

Follow us

Inbound vs Outbound Change Sets in Salesforce Deployment

Inbound vs Outbound Change Sets in Salesforce Deployment

Images
Authored by
Nitish Jadhav
Date Released
July 2, 2026
Comments
No Comments

INTRODUCTION

In Salesforce development lifecycle management, deployment is the critical bridge between development and production. Yet many admins and developers approach change sets with incomplete understanding of how they work, leading to failed deployments, missing dependencies, and production issues. The distinction between inbound and outbound change sets is fundamental to successful deployment strategy. This post demystifies these concepts, explores the deployment pipeline, and provides best practices for smooth, controlled releases.


THE DEPLOYMENT CHALLENGE

Why Deployment Is Critical and Complex

Salesforce deployment isn’t simply copying code. It’s a carefully orchestrated process that must:

Key Challenges:

  • Dependency Management – Ensuring all dependencies are included and in correct order
  • Test Coverage – Maintaining code coverage and passing required tests
  • Data Integrity – Not corrupting existing production data
  • Validation – Checking for conflicts and issues before deployment
  • Rollback Capability – Having a way to undo if something goes wrong
  • Zero Downtime – Deploying without interrupting user access
  • Audit Trail – Maintaining records of what was deployed and when
  • Stakeholder Communication – Coordinating across teams and getting approvals

Change sets are Salesforce’s native deployment mechanism, and understanding inbound vs outbound is essential to leveraging them effectively.


OUTBOUND CHANGE SETS

Creating and Sending Changes from Source Org

An outbound change set is created in the source organization (typically a sandbox or development environment) and sent to a target organization.

What is an Outbound Change Set?

Definition:
A package of metadata components and their dependencies created in a source org, ready to be sent to a target org for validation and deployment.

Characteristics:

  • Created in source org only
  • Represents changes made in development environment
  • Contains selected components (Apex, Flows, Objects, Fields, etc.)
  • Ready to upload and deploy
  • Acts as a deployment package

Creating an Outbound Change Set

Step 1: Access Change Sets

Setup → Deploy → Outbound Change Sets

Step 2: Create New Change Set

Button: Create New

Details to configure:

– Name: Descriptive, following naming convention

– Description: Document what’s included and why

– Optional: API Version for backward compatibility

Step 3: Add Components

Options to add:

– Add a component from the list

– Search for specific components

– Browse by component type

– Review component size and dependencies

Components in Outbound Change Sets

Metadata Types Supported:

  • Apex Classes and Triggers
  • Lightning Web Components (LWC)
  • Aura Components
  • Visualforce Pages
  • Custom Objects and Fields
  • Record Types
  • Validation Rules
  • Workflows and Flows
  • Permission Sets
  • Profiles
  • Custom Settings
  • Custom Metadata Types
  • Static Resources
  • And many more…

Dependency Handling:
When you add a component, Salesforce automatically identifies dependencies:

  • If you add a Visualforce page that references an Apex class, the class is automatically included
  • If you add a field, the custom object is automatically included
  • If you add a flow, all referenced components are automatically included

Manual Component Selection:

Example Change Set: “New Service Cloud Features”

Components to add:

  1. Custom Object: “Service_Request__c”
    • Automatically includes related fields
  1. Apex Class: “ServiceRequestHandler”
    • Automatically includes referenced classes
  1. Flow: “Service_Request_Creation_Flow”
    • Automatically includes all referenced objects/fields
  2. Permission Set: “Service_Team_Access”
  3. Custom Metadata Type: “Service_Config”

Salesforce will auto-include:

– Related custom fields

– Referenced Apex classes

– Objects and fields used by flows

– Any other dependencies detected

Outbound Change Set Best Practices

Practice 1: Logical Grouping

Group related components:

– Don’t mix unrelated features

– Create change sets around functional areas

– Example: One for “Inventory Updates”, one for “Reporting”

– Makes rollback easier if issues occur

Practice 2: Clear Naming

Naming Convention:

[Date]-[Team]-[Feature]-[Version]

Examples:

– 2024-01-15-Sales-QuoteEnhancements-v1

– 2024-01-15-Service-SLATracking-v2

– 2024-01-15-Integration-APIUpdates-v1

Benefits:

– Easy to identify what was deployed

– Chronological ordering

– Version tracking

– Team accountability

Practice 3: Document Dependencies

In Change Set Description:

“This change set includes:

– 3 custom objects: Order, OrderItem, Fulfillment

– 5 Apex classes: OrderProcessor, FulfillmentHandler, etc.

– 2 Flows: Order Creation, Fulfillment Tracking

– 1 Custom Metadata: Order Configuration

Dependencies:

– Requires Order__c custom object

– Requires Integration User profile

– Requires custom settings: ‘OrderConfig’

Testing Requirements:

– Run TestOrderProcessor (95% coverage)

– Run TestFulfillmentHandler (90% coverage)

– Manual testing: Create sample order end-to-end”

Practice 4: Validate Before Uploading

In Sandbox (source org):

  1. Create change set
  2. Test all components locally
  3. Run test classes: Ensure 75%+ coverage
  4. Check for errors in components
  5. Review dependencies
  6. Only then upload to target

INBOUND CHANGE SETS

Receiving and Deploying Changes in Target Org

An inbound change set is received in the target organization (typically production or another sandbox) and is available for validation and deployment.

What is an Inbound Change Set?

Definition:
A package of metadata components received in a target org from a source org, pending validation and deployment.

Characteristics:

  • Received in target org
  • Represents incoming changes from source org
  • Available for validation before deployment
  • Can be deployed or rejected
  • Acts as a deployment staging area

Inbound Change Set Workflow

Step 1: Receive from Source Org

Once uploaded in source org outbound change set:

– Change set appears in target org’s “Inbound Change Sets” list

– Status: “Pending”

– Ready for validation

Step 2: Access Inbound Change Sets

Setup → Deploy → Inbound Change Sets

View:

– Change set name and description

– Source org

– Created date

– Components included

– Status (Pending, Validated, Failed, etc.)

Step 3: Validate Deployment

Before deploying:

Button: “Validate Deployment”

– Runs validation without actually deploying

– Checks all test classes (must pass)

– Verifies dependencies exist

– Identifies potential conflicts

– Returns validation report

– Checks for code coverage (must be 75%+)

Step 4: Deploy to Production

After validation passes:

Button: “Deploy” or “Rollback” (if previous deployment)

– Deploys validated change set

– Turns on switch in production

– Makes changes live to all users

– Sends confirmation email

– Records in deployment history

Validation Process

What Validation Checks:

  1. Test Execution

– Runs all test classes in target org

– Must pass all tests

– Must achieve 75%+ code coverage

– If any test fails: Deployment cannot proceed

  1. Dependency Verification

– Confirms all dependencies exist in target org

– Checks for required objects, fields, profiles

– Verifies custom settings are configured

– Confirms no missing components

  1. Conflict Detection

– Checks for conflicting customizations

– Identifies if component was modified in target

– Alerts to overwrite scenarios

– Flags potential data issues

  1. Code Coverage Analysis

– Calculates test coverage of Apex

– Ensures minimum 75% coverage

– Identifies untested code paths

– Reports coverage percentage

Deployment Process

Pre-Deployment Checklist:

Before clicking Deploy:

□ Validation passed successfully

□ All tests passed

□ Code coverage is 75%+

□ No conflicts identified

□ Stakeholders approved

□ Maintenance window scheduled

□ Rollback plan ready

□ Communication sent to users

□ Backup of current state

Post-Deployment Actions:

After deployment succeeds:

□ Verify changes in production

□ Run smoke tests on deployed features

□ Check error logs for issues

□ Monitor system performance

□ Notify stakeholders of success

□ Update documentation

□ Close deployment ticket

□ Conduct post-deployment review


OUTBOUND VS INBOUND – COMPARISON

Key Differences Side-by-Side

Aspect  Outbound Change Set  Inbound Change Set 
Location  Created in source org  Received in target org 
Purpose  Package components for deployment  Receive and prepare for deployment 
Action  Send/Upload to target  Validate and Deploy 
Created By  Developer/Admin in source org  System (auto-created when received) 
Naming  Developer decides name  Same name as source outbound set 
Testing Location  Test in source org  Validation in target org 
Test Classes  Verify locally  Must pass in target org environment 
Dependencies  Auto-detected in source  Re-verified in target 
Deployment Control  Upload/Send  Validate before deploy 
Status Tracking  Creation, upload status  Validation, deployment status 
Rollback  Upload alternate change set  Deploy previous version/rollback 

STEP-BY-STEP DEPLOYMENT EXAMPLE

Complete Deployment Walkthrough

Scenario: Deploying new Service Cloud features from Sandbox to Production

Phase 1: Development (Source Org – Sandbox)

Day 1-5: Development

– Developer creates custom object: Service_Request__c

– Developer creates Apex class: ServiceRequestHandler

– Developer creates Flow: Service_Request_Workflow

– Developer creates Permission Set: Service_Team_Access

– Local testing: All tests pass, 85% coverage

Day 6: Create Outbound Change Set

Location: Setup → Deploy → Outbound Change Sets

Create New:

  Name: 2024-01-15-Service-CloudFeatures-v1

  Description: “New Service Cloud features including…

               – Service Request object with automation

               – Team access permission set

               – Workflow for case handling”

Add Components:

  1. Custom Object: Service_Request__c

     ✓ Auto-includes fields

  1. Apex Class: ServiceRequestHandler
  2. Flow: Service_Request_Workflow
  3. Permission Set: Service_Team_Access

Review:

  ✓ All dependencies included

  ✓ All tests pass (85% coverage)

  ✓ No conflicts

  ✓ Ready to upload

Upload to Target: Production Org

Status: Uploaded 

Phase 2: Receiving (Target Org – Production)

Immediately after upload:

Change set appears in Production’s Inbound Change Sets

Status: Pending

Location: Setup → Deploy → Inbound Change Sets

View:

  Name: 2024-01-15-Service-CloudFeatures-v1

  Source: Sandbox org

  Status: Pending

  Components: 4

  Created: Today 10:30 AM

Phase 3: Validation (Target Org – Production)

Day 7: Validation Phase

Location: Inbound Change Sets → Select Change Set → Validate Deployment

Validation Process:

  1. Run test classes in production environment

     ✓ TestServiceRequestHandler: PASSED (82% coverage)

     ✓ TestServiceWorkflow: PASSED (88% coverage)

  1. Verify dependencies

     ✓ Profile: Service_Team exists

     ✓ Custom Settings: All required settings configured

  1. Check for conflicts

     ✓ No conflicting customizations detected

     ✓ No component overwrites

  1. Code coverage check

     ✓ Overall coverage: 85%

     ✓ Minimum requirement: 75%

     ✓ All tests passed

Validation Result: SUCCESS 

Status: Ready to Deploy

Phase 4: Deployment (Target Org – Production)

Day 7: Deployment Phase (During maintenance window, 2 AM – 4 AM)

Pre-deployment checklist:

  ✓ Validation passed

  ✓ Stakeholders approved

  ✓ Users notified

  ✓ Rollback plan ready

  ✓ Support team on standby

Deployment:

  Location: Inbound Change Sets → Select Change Set → Deploy

  Button: Deploy

  Confirm: Yes, deploy this change set

Deployment Status:

  Starting deployment…

  Creating custom object…

  Deploying Apex class…

  Deploying Flow…

  Assigning Permission Set…

  Deployment completed successfully 

Time: 2:45 AM (15 minutes)

Success: YES 

Post-deployment:

  ✓ Changes are live in production

  ✓ Users can now access Service Request

  ✓ All workflows active

  ✓ Confirmation email sent

  ✓ Deployment recorded in history

Phase 5: Post-Deployment Verification

Day 7: Verification (4 AM – 5 AM)

Smoke Tests:

  ✓ Service Request object accessible

  ✓ Create new Service Request: SUCCESS

  ✓ Workflow triggered correctly

  ✓ Permission Set assigned to test user

  ✓ Reports show new data

Monitoring:

  ✓ Error logs: No Apex errors

  ✓ Debug logs: No issues

  ✓ System performance: Normal

  ✓ User access: Working

  ✓ API endpoints: Responding

All clear – Deployment successful!

Notify Stakeholders:

  Email: “Service Cloud features deployed successfully

          Production is ready for user access”


COMMON MISTAKES AND SOLUTIONS

Deployment Pitfalls and How to Avoid Them

Mistake 1: Including Too Many Unrelated Components

WRONG:

– Create one massive change set

– Mix Service Cloud, Sales Cloud, and reporting features

– 50+ components in single deployment

– If anything fails, entire deployment fails

PROBLEM:

– Difficult to identify issue if deployment fails

– Risky rollback (loses all changes)

– Hard to debug

– Testing becomes complex

CORRECT:

– Create logical, smaller change sets

– Group related components only

– 5-15 components per change set

– Easier to manage, test, and rollback

Mistake 2: Not Testing in Target Org Environment

WRONG:

– Test only in source (sandbox) environment

– Assume tests will pass in production

– Deploy without validation

– Trust that components are correct

PROBLEM:

– Different org configuration causes test failures

– Production data affects test execution

– Deployment fails when tests run in production

– Changes don’t go live

CORRECT:

– Always run validation in target org

– Let Salesforce re-run tests in production environment

– Check for code coverage in production context

– Verify all dependencies exist in target

Mistake 3: Missing Dependencies

WRONG:

– Manually select only main components

– Forget to include related objects/fields

– Don’t review auto-included dependencies

– Assume all dependencies are included

PROBLEM:

– Deployment fails: “Required field not found”

– Changes don’t work: “Referenced object missing”

– Validation fails: “Dependency error”

– Requires redeployment with missing components

CORRECT:

– Review auto-included dependencies carefully

– Test locally to ensure all dependencies are correct

– When adding a component, check what it depends on

– Validate shows dependency errors

Mistake 4: Poor Naming Conventions

WRONG:

– Name: “ChangeSet1”

– Name: “Updates”

– Name: “New_Stuff_Final_v3”

– Name: “CS20240115”

PROBLEM:

– Impossible to identify what was deployed

– Hard to track which version is which

– Confusing for team coordination

– Difficult troubleshooting

CORRECT:

– Use: 2024-01-15-Service-SLAUpdates-v1

– Include: Date-Team-Feature-Version

– Clear, descriptive naming

– Easy to track and find

Mistake 5: Deploying During Peak Usage

WRONG:

– Deploy at 2 PM (peak usage time)

– Don’t notify users

– Don’t schedule maintenance window

– Hope everything works

PROBLEM:

– Users experience errors during deployment

– Performance issues for active users

– Support team overwhelmed with questions

– Bad user experience

– Potential data inconsistency

CORRECT:

– Deploy during low-usage window (nights/weekends)

– Schedule maintenance window

– Notify users in advance

– Have support team on standby

– Monitor for issues

Mistake 6: Not Reviewing Validation Errors

WRONG:

– See validation warnings and ignore them

– Try to deploy with validation warnings

– Don’t understand error messages

– Hope deployment works anyway

PROBLEM:

– Deployment fails even though you deployed

– Changes don’t go live

– Users affected

– Credibility damaged

CORRECT:

– Read all validation error messages carefully

– Fix issues before deploying

– Understand what each error means

– Don’t deploy with errors or critical warnings


FINAL THOUGHTS

Inbound and outbound change sets represent Salesforce’s native approach to deployment, and mastering them is essential for any administrator or developer working with Salesforce. The distinction is simple but critical: outbound change sets are what you send, inbound change sets are what you receive and deploy.

The key to successful deployment isn’t just understanding these concepts—it’s establishing a disciplined process around them. Create thoughtfully grouped, well-documented change sets. Always validate before deploying. Run all tests. Check dependencies. Deploy during scheduled maintenance windows. And maintain comprehensive documentation and rollback plans.

Deployments can be high-stress events, but they don’t have to be. With proper planning, clear procedures, and adherence to best practices, deployments become predictable, safe, and routine. A well-executed deployment strategy means fewer errors, safer releases, happier users, and confident teams. That’s the power of understanding and properly implementing inbound and outbound change sets.

 

Leave a Reply

Your email address will not be published. Required fields are marked *