Exploring the Microsoft Exchange Server Open Specifications

Applies to: Exchange Server

In this article
What are the Microsoft Exchange Server Open Specifications?
What topics do the Microsoft Exchange Server Open Specifications cover?
Where should I start?
What will I find in a Microsoft Exchange Server Open Specification?
What else should I know?
Now what?

By Kim Brandl

So, you’re a software developer building an application that will integrate with Microsoft® Exchange Server in a way that transcends the Exchange Server application programming interfaces (APIs)? Very impressive! In the not so distant past, achieving such integration might have been a daunting task. Luckily for you, though, the Microsoft Exchange Server Open Specifications now provide a wealth of information to help you in this endeavor. In this article, we’ll review the types of protocols, structures, algorithms, and standards that the Microsoft Exchange Server Open Specifications define, discuss how to get started using the specifications, explore the content that you’ll find in various types of specifications, and address some key points to help you derive the maximize benefit from these specifications.

What are the Microsoft Exchange Server Open Specifications?

The Microsoft Exchange Server Open Specifications provide detailed technical information about the Microsoft protocols (including extensions to industry-standard protocols), structures, and algorithms that Exchange Server uses to communicate with other Microsoft products. You can view and download these specifications from the MSDN Library at no charge. (Rights under Microsoft patents covering these specifications are available separately. For more information about Microsoft patent programs, see the Microsoft Open Specifications Programs.) These specifications provide the information you need to create applications that communicate with Exchange Server and search, consume, or process information that is produced by Exchange Server. And, remember, you are not required to use Microsoft tools to create your applications and the applications you create don't have to run on a Microsoft operating system.

What topics do the Microsoft Exchange Server Open Specifications cover?

The Microsoft Exchange Server Open Specifications contain information about a broad range of functional categories. The following diagram lists the entire set of specifications (as of June 2011), grouped by category.

Figure 1: Microsoft Exchange Server Open Specifications

Microsoft Exchange Server Open Specifications

In the preceding diagram, each specification is identified by its short name, which is an abbreviated way of referring to a specification. Every specification has both a short name and a long name. A few specifications and their associated short names are listed as examples in the following table.

Short name

Long name

[MS-OXCRPC]

Wire Format Protocol Specification

[MS-OXWSGTRM]

Get Rooms List Web Services Protocol Specification

[MS-ASEMAIL]

ActiveSync E-Mail Class Protocol Specification

In addition to providing an abbreviated method of referring to a specification, a specification’s short name also offers clues about the category of the specification, as indicated in the following table.

Short name

Category

[MS-OX*]

Outlook-Exchange

[MS-AS*]

ActiveSync

[MS-OXWS*]

Exchange Web Services

[MS-STAN*]

Standards

[MS-XWD*]

WebDAV

Where should I start?

Hopefully, by now you’re excited to hear about the wealth of information available in the Microsoft Exchange Server Open Specifications, and optimistic that you can use these specifications to help you build an application that communicates with Exchange Server. While Figure 1 clearly illustrates how the Microsoft Exchange Server Open Specifications are allocated across several different functional categories, the specification short names probably don’t mean much to you just yet. So, how do you figure out which specifications are likely to contain the information that you’re interested in?

If you’re new to using the Microsoft Exchange Server Open Specifications, do not pass Go, do not collect $200! Proceed directly to [MS-OXPROTO]: Exchange Server Protocols System Overview. [MS-OXPROTO] provides the context that you’ll need to effectively utilize the Microsoft Exchange Server Open Specifications. It includes descriptions of all of the specifications (grouped by functional category), as well as use cases and examples that illustrate how various specifications can be used to facilitate real-life scenarios.

In an ideal world, you’ll get a cup of coffee and settle in for a couple of hours to carefully and thoroughly read [MS-OXPROTO] from start to finish. If you have time for that, terrific! But, if not, here are some highlights of [MS-OXPROTO] that you won’t want to miss:

  • Section 2.2 Protocol Summary: Browse specification names and descriptions, identifying specifications that may be relevant to your scenario.

  • Section 2.5 Use Cases: Browse use cases for scenarios that are similar to the scenarios that you’re looking to enable.

  • Section 3 Examples: Browse examples for tasks that are similar to the tasks that you’re looking to implement.

Think of [MS-OXPROTO] as your roadmap to the world of the Microsoft Exchange Server Open Specifications. Use it at the start of your journey to map out your plan (that is, to identify which specifications are likely to be relevant to your requirements), and consult it periodically when you need more information about the Microsoft Exchange Server Open Specifications landscape.

In addition to [MS-OXPROTO], there are a handful of supporting documents and specifications that you’ll likely find useful regardless of which specific protocol areas are of interest to you. The following table lists and describes these documents and specifications. There’s no need to read these documents and specifications ahead of time; just consult them whenever necessary to understand the information in the specifications that you’re reading.

Long name

Short name

Purpose

Exchange Server Protocols Master Glossary

[MS-OXGLOS]

Provides an A-to-Z list of common terminology used in the specifications.

Exchange Server Protocols Master Property List

[MS-OXPROPS]

Lists all properties used for communication between clients and servers. Provides basic reference information about each property and links to the documents that specify value ranges and semantics for each property.

Exchange Server Protocols Master Reference

[MS-OXREF]

Provides an A-to-Z list of all references cited in the specifications.

Data Structures

[MS-OXCDATA]

Specifies common data structures that are used by multiple protocol areas. Includes structure and semantics.

Windows Data Types

[MS-DTYP]

Specifies common data types used in the protocol specifications. (This specification is part of the Microsoft Windows Protocols documentation set.)

What will I find in a Microsoft Exchange Server Open Specification?

There are several different types of specifications and, as you might expect, the kind of information that you’ll find in a specification depends largely upon its type. The following table lists the types of specifications that are currently found in the Microsoft Exchange Server Open Specifications documentation set and the kind of information that you will find in each one.

Specification type

Purpose

Overview

Describes the functional architecture of the system, including the protocols, structures, and algorithms that are included in the system and the relationship between the protocols, structures, and algorithms; describes the coordinated use of the protocols, structures, and algorithms to accomplish specific goals and scenarios. Also contains information about versioning, error handling, and system dependencies.

Packet-based

Specifies the format of data packets used to exchange information over networks.

Remote procedure call (RPC)

Specifies method-based and request-response protocols that use RPC as their communication mechanism.

Simple Object Access Protocol (SOAP)

Specifies protocols that use SOAP and a Web Services Description Language (WSDL) file in a request-response style of interaction.

Structure

Specifies a common structure that is used by multiple protocols.

Algorithm

Specifies an algorithm that is used by multiple protocols; an algorithm has no data structure and does not send data over the wire.

Standards

Specifies how Microsoft software implements/supports certain standards.

By no means do you need to memorize this information – I promise that you won’t be quizzed on it later! It’s merely important to recognize that the structure of the specifications varies according to the specification type. So, don’t be surprised when you notice that some specifications contain different top-level sections than others, as illustrated in the following diagram.

Figure 2: Top-level table of contents by specification type

Top-level table of contents by specification type

Now that we’ve explored the basic structure of the different specification types, let’s discuss the type of information that you can expect to find in specific sections of the specifications. As you can see by looking at Figure 2, some sections are common across multiple types of specifications, while other sections are specific to only one type of specification.

Introduction

All specification types contain an Introduction. This section provides information that sets the stage for understanding the detailed system, protocol, structure, algorithm, or standards information that is contained in the remainder of the specification. Some of the key components of the Introduction include:

  • Glossary – Defines important terms that are used in the specification.

  • References – Lists normative references (references that are required in order to understand or implement the technology in the specification) and informative references (references that provide additional, optional information that is relevant to the specification).

  • Overview – In all protocol specifications (packet-based, RPC, and SOAP), structure specifications, and algorithm specifications, this section describes the problem or scenario that the protocol, structure, or algorithm addresses.

Messages

All protocol specifications (packet-based, RPC, and SOAP), provide information about data transport and message syntax in the Messages section. If your application needs to exchange or process messages across a network with Exchange Server, this section is a must-read.

Structures and Structure Examples

Structure specifications provide details about structure syntax in the Structures section. The Structure Examples section provides one or more examples of data using the structures specified in the Structures section. If the protocol(s) you’re interested in utilize a common data structure, you’ll find information in these sections of the structure specification very useful when it comes to protocol implementation.

Protocol Details and Protocol Examples

All protocol specifications (packet-based, RPC, and SOAP), provide details about protocol behavior in the Protocol Details section. This section contains information about the abstract data model, timers, initialization, events related to the protocol, and message processing. If the protocol has different classes of functionality (for example, client and server), the specification may use multiple subsections within the Protocol Details section to convey class-specific protocol behavior information (for example, Section 3.x Client Details and Section 3.y Server Details). The Protocol Examples section demonstrates one or more protocol operations that illustrate how the protocol functions.

Algorithm Details and Algorithm Examples

Algorithm specifications provide detailed information about the abstract data model, initialization, and processing rules in the Algorithm Details section. If the algorithm has different classes of functionality (for example, compression and decompression), the specification may use multiple subsections within the Algorithm Details section to convey class-specific algorithm information (for example, section 2.x Compression Algorithm Details and section 2.y Decompression Algorithm Details). The Algorithm Examples section walks you through one or more common usage scenarios for the algorithm. If the protocol(s) you’re interested in utilize an algorithm, you’ll find information in these sections of the algorithm specification very useful when it comes to protocol implementation.

Security

All protocol specifications (packet-based, RPC, and SOAP), structure specifications, and algorithm specifications contain a Security section. This section describes security considerations that are not discussed elsewhere in the specification and provides an index of sections that describe security parameters for the protocol, structure, or algorithm. The Security section of a specification provides important information for protocol implementers, so be sure to pay close attention to this section.

Product Behavior

All protocol specifications (packet-based, RPC, and SOAP), structure specifications, and algorithm specifications contain a Product Behavior Appendix. This section is absolutely critical to understanding and implementing a protocol, structure, or algorithm because it lists the applicable Microsoft products for each specification and provides endnotes that specify behavioral differences between product versions.

Other Details

All types of specifications conclude with a Change Tracking section and an Index. As you might expect, the Change Tracking section enumerates the changes that were made to a specification in the most recent publication, and the Index section simply provides an index of document contents.

What else should I know?

Up to this point, we’ve talked about the topics that the Microsoft Exchange Server Open Specifications cover, discussed how to get started using the specifications, and explored the content that you’ll find in various types of specifications. Before we wrap up, let’s touch on a few additional points that’ll help you to derive the maximum benefit from these specifications.

Understanding Product Behavior

As previously discussed, the Product Behavior Appendix lists the applicable Microsoft products for each specification and provides endnotes that specify behavioral differences between product versions. A specification uses the information in the Product Behavior Appendix, in conjunction with normative language (as described in [RFC 2119]) in the body of the specification, to convey product behavior. Understanding the meaning of the normative terms "MAY", "SHOULD", and "MUST" in the context of the specifications is key to understanding how the specified behavior affects interoperability. The following table explains the meaning of each term when it’s used with an endnote, and when it’s used without an endnote.

Term

Endnote

Meaning

MAY

No

Item is optional.
No in-scope versions of Office/Exchange implement the behavior.

MAY

Yes

Item is optional.
At least one in-scope version of Office/Exchange implements the behavior.

SHOULD

No

Item is strongly recommended, but not required.
All in-scope versions of Office/Exchange implement the behavior.

SHOULD

Yes

Item is strongly recommended, but not required.
At least one in-scope version of Office/Exchange does not implement the behavior.

SHOULD NOT

No

Item is strongly not recommended to the implementer.
No in-scope versions of Office/Exchange implement the behavior.

SHOULD NOT

Yes

Item is strongly not recommended to the implementer.
At least one in-scope version of Office/Exchange implements the behavior.

MUST

-

Item is required by the protocol for proper functionality.

MUST NOT

-

Item is prohibited; invoking the item will break the protocol.

When reading a specification, keep in mind that all statements of optional behavior use the normative terms "MAY", "SHOULD", or "SHOULD NOT". Any statement of behavior that does not use "MAY", "SHOULD", or "SHOULD NOT" implies that the behavior is required (that is, as if the term "MUST" were used explicitly).

Identifying what’s changed in a release

We update the Microsoft Exchange Server Open Specifications in the MSDN Library on a fairly regular basis (currently, approximately once per quarter). When a new version of the specifications is released, you’ll likely be curious about what’s changed since the prior release, so that you can determine whether any of the changes impact your application.

For a high-level summary of which documents have changed since the prior release, check out the Exchange Protocols Change Tracking document ([MS-OXCHGTR]). This document contains a summary of the changes made to the full set of specifications since the prior release, and characterizes the type of changes made in each specification. To access [MS-OXCHGTR], you can either download it from the MSDN Library as part of the full set of specifications, or download the individual document (find it by searching MSDN for "[MS-OXCHGTR]").

Note

The Exchange Standards Change Tracking document ([MS-STANOXCHGTR]) contains summary-level change information for the standards specifications.

For detailed information about changes made to a certain specification, you’ll want to look at the specification itself. The Revision Summary table located near the beginning of each specification provides summary-level revision history, as shown in the following screenshot.

Figure 3: Revision Summary table

Revision Summary table

The Change Tracking section located near the end of each specification contains detailed information about the specific changes that have been made in the document since the prior release, as shown in the following screenshot.

Figure 4: Change Tracking section

Change Tracking section

Finding and viewing specifications

All of the Microsoft Exchange Server Open Specifications are published online in the MSDN Library, so if you know the name of the specification you’re looking for, the quickest way to find it is by using a simple online search, as shown in the following image.

Figure 5: Online search

Online search

Alternatively, you can browse the entire set of Microsoft Exchange Server Open Specifications in the MSDN Library to find the specification(s) that you’re interested in.

Once you find one or more specifications that you’re interested in, you can either view the specifications online in the MSDN Library, download the specifications individually in .pdf format (from the MSDN Library), or download the entire set of specifications (as a .zip file containing the specifications in .pdf format).

Now what?

Now that you’re familiar with the topics that the Microsoft Exchange Server Open Specifications cover, understand how to get started using the specifications, know what kind of content to expect in various types of specifications, and are well-equipped to understand product behavior, identify what’s changed in a release, and find/view the specifications, the sky’s the limit when it comes to programming interoperability with Exchange Server. Access the Exchange Server Protocols specifications and the Microsoft Exchange Server and Outlook Standards (MSDN) specifications in the MSDN Library and, if you haven’t already done so, be sure to visit the Open Specifications Developer Center for a comprehensive list of resources related to Microsoft Open Specifications of all kinds. Finally, if you run into any issues along the way, check out the Using the Exchange Server Protocols forum and the Documentation on Standards forum, where you can review previously asked/answered questions and solicit feedback on questions of your own.

See Also

Other Resources

Open Specifications Developer Center

Open Specifications (MSDN)

Exchange Server Protocols (MSDN)

Microsoft Exchange Server and Outlook Standards (MSDN)

Open Specifications forums

Using the Open Specifications forum

Using the Exchange Server Protocols forum

Documentation on Standards forum