WSDL in Salesforce: Enterprise vs Partner WSDL Explained
What is WSDL in Salesforce?
WSDL stands for Web Services Description Language.
It’s an XML-based document that describes how to connect to and interact with a web service.
In Salesforce, a WSDL file acts like a contract between Salesforce and another system, telling it:
- What functions/methods are available
- What inputs (parameters) are needed
- What outputs (responses) to expect
- The endpoint URL of the service
Types of WSDL in Salesforce:
There are two main types: Enterprise WSDL and Partner WSDL. While they both allow integration, they differ in structure, flexibility, and use cases.
Let’s break it down in detail:
1. Enterprise WSDL
Definition:
Enterprise WSDL is a strongly typed WSDL generated for a specific Salesforce org. It contains metadata about all objects and fields in that org.
Key Characteristics:
Feature | Enterprise WSDL |
Type | Strongly typed |
Org-Specific | Yes, tied to a single Salesforce org |
Fields/Objects | Includes all custom fields and objects in that org |
Stability | Changes in org (adding/deleting fields) require regenerating WSDL |
Use Case | Best for internal integrations where the org schema is known and stable |
Ease of Use | Easier to work with in strongly typed languages like Java or C# because classes map directly to Salesforce objects |
Example:
If you have a Contact object with custom field Custom_Field__c, the generated class will include that field explicitly.
2. Partner WSDL
Definition:
Partner WSDL is a loosely typed WSDL that works with any Salesforce org. It uses generic data structures like sObject instead of specific object classes.
Key Characteristics:
Feature | Partner WSDL |
Type | Loosely typed |
Org-Specific | No, works across multiple orgs |
Fields/Objects | Does not include org-specific fields; uses sObject to represent objects |
Stability | More flexible; changes in org schema do not require regenerating WSDL |
Use Case | Best for applications integrating with multiple orgs or when object schema may change |
Ease of Use | More complex to work with in strongly typed languages because you have to handle fields dynamically |
Example:
Contact object would be represented as a generic sObject. Fields are accessed dynamically using key-value pairs instead of predefined class members.
-
Key Differences
Aspect | Enterprise WSDL | Partner WSDL |
Typing | Strongly typed | Loosely typed |
Org Dependency | Tied to one org | Works with any org |
Schema Changes | Requires regenerating WSDL if schema changes | No regeneration needed |
Ease of Use | Easier for coding, compile-time checking | More flexible, runtime handling required |
Best For | Internal integrations with fixed schema | Multi-org apps or dynamic integrations |
-
Choosing Between Them
- Use Enterprise WSDL when:
- You know the object structure in advance.
- You’re building internal apps for a single org.
- You want compile-time checks and easier development.
- Use Partner WSDL when:
- You’re building apps that need to work with multiple Salesforce orgs.
- The object schema might change over time.
- You need more flexibility in handling objects dynamically.