Answered by:
Exchange sync provider?

Question
-
I can't believe it! I'm in the middle of spec'ing out a bespoke sync. solution for my company...i knew nothing about this framework until today and hopefully now that i've discovered it i will be able to save a hell of a lot of time!
So question is: will MS be releasing a sync. provider for Exchange or will i need to roll my own? Is there a place where i can keep abreast of what providers are in the pipeline and expected release dates?
Thanks guys
Thursday, November 8, 2007 6:19 PM
Answers
-
Shifter & Elfmanne, I hope I can answer both of your questions together.
Using the Microsoft Sync Framework you are able to connect both Outlook / Exchange to a database application whether that database is SQL Server or some other database. The core issue is whether you can get programatic access to the data in the database as well as the information in Outlook. From the database side I am sure you will have access to the information in some way unless this application was written by some third party and you were not given user access to the data. On the Outlook side, yes you can also get programatic access to the data so you should be able to integrate those two endpoints together. As I mentioned, we are working on submitting a sample of accessing Outlook to the MSDN but it will take a little time before we can submit it since we want to make sure the technique is solid.
In general, to synchronize information using the Microsoft Sync Framework, you not only need programatic access to the data, but you also need some place to store the metadata (which is all the change information required for synchronization). In the best case, you would store this in the database, but sometimes that might not be possible so you might alternatively store the metadata in files on the files system. I say the database is the best place because you might also be able to build a system to update the metadata with change updates as they happen (perhaps through triggers) and this will make synchronization go a lot quicker because you do not need to update the metadata before synchronization starts.
We talk about this more in the following whitepaper:
http://msdn2.microsoft.com/en-us/sync/bb821992.aspx
I should point out that we have not released a provider for Outlook yet, which means if you wanted to tie into this you would need to create your own Outlook provider to access the data within Outlook. The provider would sit on top of the Microsoft Sync Framework. We discuss the concept of a provider more in the above whitepaper.
Also included in the Microsoft Sync Framework CTP1 download is a sample called NTFSSample which shows how to set up synchronization and stores the changes in files. You could use this as a basis for creating your Outlook providers if you like.
I hope that helps,
Liam
Monday, November 12, 2007 6:45 PM -
Here is what I used at the time, but again this was almost 9 months ago... so by now the web service API may be more complete as the goal of MSFT was to move away from the WEBDAV to the Web Services.
http://msdn.microsoft.com/en-us/library/aa566050.aspx
and this book
http://books.barnesandnoble.com/search/results.aspx?WRD=inside+exchange+server+2007+web+services
Yann
Thursday, December 4, 2008 4:58 PM
All replies
-
Can you expand on what you would want the Exchange provider to support? For example, are you looking to do Peer to Peer synchronziation of Contacts and Calendars in Outlook or are you actually looking to synchronize specific information in the Exchange server down to a mobile device?
As a coincedence one of the demonstrations of our technolgy that we are showing at TechEd in Barcelona and DevConnections in Las Vegas this week is a set of providers that we created for Vista Contacts, Windows Mobile Contacts, VCard File System Contacts, SQL Server database table contacts and Outlook Contacts. All of the information kept in sync using the Microsoft Sync Framework.
We are planning on taking components of this code including the Outlook provider and adding it to our MSDN Sync Developer Center soon.
In any case, please give me more details on what you are looking to implement and what devices you are looking to target and I will see if I can add additional details.
Liam
Thursday, November 8, 2007 6:32 PM -
Thanks for replying Liam.
One thing we want is to sync. changes to certain fields in contact records in our database with a users personal contacts even when they are offline.
We also have database enabled group calendars and we also want to sync. changes to appoinments in those calendars with a users personal calendar.
The only devices involved are BlackBerry's.
The TechEd demo sounds great shame I won't be there, will the demo be available online post event?
Friday, November 9, 2007 9:52 AM -
OK, I think maybe it is too close to the weekend, but I am not sure I completely follow. Let me know if what I am saying is correct.
You have database enabled group calendars and contacts (in Exchange Server) that you want to synchronize down to a users personal calendar and contacts. I assume this is in their Outlook running on a users laptop or windows mobile device, but since you mention BlackBerry perhaps you are looking to move the information from Exchange Server to the BlackBerry contact and calendar?
Please let me know and I appologize for the confusion.
Liam
Friday, November 9, 2007 4:53 PM -
You're right it was too close to the weekend and I wasn't being clear. Let me try again.
I think I can break it down into 2 parts. The first part is to do with Contacts both in our database and in Exchange (a users personal contacts). A user will be able to add a contact from the database to their personal contacts and from that point on changes made at either source will sync. with the other. The BES will take care of synchronising changes to the personal contact with the Blackberry.
The second part is to do with appointments. We use this - http://www.sqlview.net so from a users perspective the calendar is in Outlook but the appointments are actually stored in a database. What we want here is for appointment changes to be synchronised with a users personal calendar which again the BES will take care of as far as the BB is concerned.
The goal is for people to be able to keep their personal contacts and calendars up to date with the database regardless of whether they have a BB and also for BB users to be able to access that data on their device. All of this synchronising will be subscription based, i.e. only those interested in the changes will get them therefore if one person makes a change to a contact in the database the other n subscribers will also get the change synchronised with their personal contact but only them.
Monday, November 12, 2007 12:17 PM -
I have a similer need for an Exchange sync provider.
My need is to have a 2 way sync for contacts and task data between Exchange and our CRM application.
So, if the data is added/updated by the client system those changes will need to be sync'd with exchange and if the data is added/updated by, lets say Outlook, the data would need to be synced with the SQL Server db.
Does this seem possible with framework?
Also, what version's of MS Exchange will be targeted? My need is for 2000 and newer...Monday, November 12, 2007 2:53 PM -
Shifter & Elfmanne, I hope I can answer both of your questions together.
Using the Microsoft Sync Framework you are able to connect both Outlook / Exchange to a database application whether that database is SQL Server or some other database. The core issue is whether you can get programatic access to the data in the database as well as the information in Outlook. From the database side I am sure you will have access to the information in some way unless this application was written by some third party and you were not given user access to the data. On the Outlook side, yes you can also get programatic access to the data so you should be able to integrate those two endpoints together. As I mentioned, we are working on submitting a sample of accessing Outlook to the MSDN but it will take a little time before we can submit it since we want to make sure the technique is solid.
In general, to synchronize information using the Microsoft Sync Framework, you not only need programatic access to the data, but you also need some place to store the metadata (which is all the change information required for synchronization). In the best case, you would store this in the database, but sometimes that might not be possible so you might alternatively store the metadata in files on the files system. I say the database is the best place because you might also be able to build a system to update the metadata with change updates as they happen (perhaps through triggers) and this will make synchronization go a lot quicker because you do not need to update the metadata before synchronization starts.
We talk about this more in the following whitepaper:
http://msdn2.microsoft.com/en-us/sync/bb821992.aspx
I should point out that we have not released a provider for Outlook yet, which means if you wanted to tie into this you would need to create your own Outlook provider to access the data within Outlook. The provider would sit on top of the Microsoft Sync Framework. We discuss the concept of a provider more in the above whitepaper.
Also included in the Microsoft Sync Framework CTP1 download is a sample called NTFSSample which shows how to set up synchronization and stores the changes in files. You could use this as a basis for creating your Outlook providers if you like.
I hope that helps,
Liam
Monday, November 12, 2007 6:45 PM -
Hi Elfmanne,
I have uploaded a sample that shows contact synchronization to Outlook. I would be very interested in your feedback if you have a chance to take a look at it.
Sync Code Gallery - Outlook Sync
Thanks,
Liam
Tuesday, March 11, 2008 5:55 PM -
Hi Liam,
I am starting today to build an Exchange Server Provider. Do you have any recomendation to get started? I just downloaded your Outlook Provider as an example but I really need an Exchange one.
I need to Sync Mail, Contacts, Calendar and Tasks between an Exchange Server 2007 and an Offline Application (wich as no access to Outlook! ) and Of course in a bidirectional way. I will try to build that using the Exchange Web Service.
Thank you for your advises,
Yann
Tuesday, March 25, 2008 2:00 PM -
Nice, can you share some tips / code / examples?Friday, April 25, 2008 8:01 AM
-
Hi Yann,
From our Sync Framework perspective if you can provide the information through Exchange Web Services then things should be fairly straightforward. I have to admit that I have never worked with Exchange Web Services so I am not sure how customizable these are. However, if you can you might want to see if you can add certain capabilities to the web services such as the ability to just provide changes based on an Anchor provided my the sync framework. Although this is not required it does make sync much more efficient because otherwise the web services will provide all contacts and you will download them and then the sync framework client will be tasked with enumerating the changes.
If you get a chance, email me at FirstName.LastName@microsoft.com and perhaps we can discuss this further and I will also see if there are any Exchange resources I can get to help you get started.
Liam Cavanagh
Friday, April 25, 2008 3:39 PM -
Hello Liam and Yann,
It seems my time is growing near and I too will begin development of an Exchange to CRM database sync solution. It's a little perplexing that information on this subject is so hard to come by. Clearly synchronizing Exchange to a 3rd party db is the one thing everybody must have. You know what I mean, the gift that keeps on giving... So why is it that I can't find a single report of someone successfully building such a MSF solution? I'm a little worried I won't like the answer.
Anyway, I wanted to find out how Yann's project is going and if Liam knows of anyone who has successfully created a MSF solution based on this scenario.
Best regards
Thursday, December 4, 2008 1:33 AM -
Hi KatakaH,
I did build a working concept but I had to stop my work on it because I realized that you cannot manage the user's Rules and few other things thrue Exchange Webservice. Which was a requirement for me...
I cannot provide you with any piece of code for NDA reasons but I am sure that Liam will be more helpfull than me anyway.
Good luck,
Yann
Thursday, December 4, 2008 2:20 AM -
Thanks Yann,
Do you know where to find the information regarding these limitations with Exchange Webservice?
Thursday, December 4, 2008 4:48 PM -
Here is what I used at the time, but again this was almost 9 months ago... so by now the web service API may be more complete as the goal of MSFT was to move away from the WEBDAV to the Web Services.
http://msdn.microsoft.com/en-us/library/aa566050.aspx
and this book
http://books.barnesandnoble.com/search/results.aspx?WRD=inside+exchange+server+2007+web+services
Yann
Thursday, December 4, 2008 4:58 PM