Exchange ActiveSync Provisioning

EAS Provisioning is a means to download and apply devices on an activesync device.
The provisioning process on a client will generally occur when the server requests
that the provisioning is necessary. If a client specifically requests provisioning, this
will take extra bandwidth that is not needed, not only because provisioning may not
be necessary. The provisioning process is a 4 phase process and is not merely a
request/response 2-step process as are other activesync commands.

Let's see how this process occurs:

A client wants to synchornize the entire folder hierarchy (grab every folder in the mailbox).
The client will issue a FolderSync command with a SyncKey of 0 (sync folder hierarchy).
Once this happens the server will kick back a status code of 449 indicating to the client that
the server does not accept the client's command because it feels as it does not have the
latest policy. Therefore, the client will then issue a Provision command. In response, the
server will kick back a response with a temporary SyncKey. The corporate policy is also provided along with this synckey. Once the client applies the policies requested by the
server, the client will send back another Provision command with the temporary SyncKey
in the request. This is a receipt that informs the server that we accepted the policies and have applied them. In response, the server sends the client a "final key" that will be used
for all subsequent commincations. Thus, the client can reissue the foldersync command with
the final sync key and all should work well.

Here is an overview of the process:

1. Client attempts command / server responds with status code 449.
2. Client sends provision / server responds with temp key
3. Client sends temp key / server responds with final key
4. Client reissues failed command / server responds successfully

It's also important to note that the synckey is not a guid of any kind, it is a unique random integer presented to the client as a string. It is up to the client to store this synckey after
receiving the final key from the server. It *will* be necessary to re-provision again sometime
in the near future, so the client has to be constantly looking out for the status code 449.