In BizTalk orchestrations, type definitions (i.e. Port Type, Correlation Type, Multipart Message Type, or Role Link Type) are stored within the orchestration you created them in. If you then use that type in another orchestration, a reference is made to the orchestration defining the type. Later, if you delete the orchestration that originally defined the type, you'll lose the type and have to recreate it in another orchestration. Also, if you want to change the properties of the shared type, you have to hunt for the orchestration where it is defined.
One way around this is to create an empty (no-shape) orchestration that contains your shared orchestration type definitions (or indeed, all your type definitions). This confers several advantages:
- All your type information is stored in one place. When you need to change properties of a type, you can easily find the definition of the type instead of trying to remember in which orchestration that type is defined (the Go to Definition feature does not work for Types).
- You can delete orchestrations without deleting that type information that is used by other orchestrations.
- You can copy orchestrations without duplicating type information.
You just have to remember to create all your orchestration types in this Type Definition orchestration (or cut and paste your type there after creating it). The only ugliness is now you have an additional, empty orchestration whose only purpose is to house type definitions.
If you go this route, the Type Definition orchestration you make is deployed, but never needs to be enlisted or started.