Best Practices - What is supported and not.
The issue of supportability comes up a lot. I would like cover it in this blog post. When we get cases from customers we look at the servers, software and APIs involved. In addition, the development scenarios and configurations are taken into considerations.
A lot of customers run outdated versions of Exchange and Outlook - such as RTM Exchange even though they would need to be at SP3 to be supported... I guess they don't care about the many years of fixes and improvements which MS did for Exchange 2010 and would rather troubleshoot issues which might have had fixes released years ago. Some want to test with the oldest versions of things their code runs against but don't understand that they should also test with the latest bits if they run into an issue and end up fighting an issue which has already been fixed and end up opening a support case when patching to the latest updates (even ones years old) might have resolved the issue.
I sometimes even see customers doing things which they should not - such as using Extended MAPI under .NET, changing traffic to Exchange using an ISAPI component running in an Exchange worker process and have seen some go much further and inject their code into Exchanges processes in order to alter its behavior. When we run into issues such as these there is nothing we really can do other then explain that the code needs to be changed to use a supported API or method. In some cases products are built and deployed for many years without an issue... then it happens.... MS releases fixes or changes and their application breaks... so, they troubleshoot and open a support case for help. The problem is that in many/most cases there is nothing we can really help with as they were relying on something which should never have built an application to use. Some ISVs end up in a very bad place having built apps which they had been selling to find out that their code won't work any more and there is no way to get it to work since they had chosen to take a risk in writing code in a way which MS would not provide support. When I talk to customers who do this they knew they were taking a risk from the start.
For customer's with a Premier software agreement we have a path to request functionality be added in so that customer software can be written against it and be supported - this is called a Design Change Request (DCR). With a DCR there is a shot on getting the interfaces or changes they want. However, such things need to be filed early on since such changes usually take a lot of time since planning and development for MS products can be a very long process. The bar for accepting a change request is usually pretty high.
There are a lot of things which MS documents to an extreme. However, not everything is documented publically... yeah proprietary stuff. Well, most all software companies do. Some developers decide to take it upon themselves to reverse engineer code they don't own and then don't resist the temptation to hook into an app in a way it was never intended to, was never deigned to and never tested for. So, when their application has issues they get pretty excited though they had made the choice to go down that path themselves.
Lets define what unsupported means:
What Does "Unsupported" Mean?
https://blogs.msdn.com/b/pcreehan/archive/2007/05/04/what-does-unsupported-mean.aspx
Microsoft Support Lifecycle:
Microsoft Support Lifecycle Policy FAQ
https://support.microsoft.com/en-us/gp/lifepolicy
Windows lifecycle fact sheet
https://windows.microsoft.com/en-us/windows/lifecycle
Microsoft Support Lifecycle
https://support.microsoft.com/en-us/lifecycle#gp/gp_lifecycle_servicepacksupport
Microsoft Support Lifecycle Database:
Microsoft Support Lifecycle - Exchange
https://support.microsoft.com/en-us/lifecycle/search?sort=PN&alpha=Microsoft%20Exchange%20server&Filter=FilterNO
Microsoft Support Lifecycle - Outlook
https://support.microsoft.com/en-us/lifecycle/search?sort=PN&alpha=Outlook&Filter=FilterNO
Microsoft Support Lifecycle - Internet Explorer
https://support.microsoft.com/en-us/lifecycle/search?sort=PN&alpha=Internet%20Explorer&Filter=FilterNO
Microsoft Support Lifecycle - .NET
https://support.microsoft.com/en-us/lifecycle/search?sort=PN&alpha=Microsoft%20.NET%20Framework%20&Filter=FilterNO
Microsoft Support Lifecycle - Visual Studio
https://support.microsoft.com/en-us/lifecycle/search?sort=PN&alpha=Visual%20Studio&Filter=FilterNO
Support policies - software:
Support policy for Microsoft software that runs on non-Microsoft hardware virtualization software
https://support.microsoft.com/en-us/kb/897615/
Stay up-to-date with Internet Explorer
https://blogs.msdn.com/b/ie/archive/2014/08/07/stay-up-to-date-with-internet-explorer.aspx
Support policies - Development:
Developer support limitations for public protocols
https://support.microsoft.com/en-us/kb/2269506/en-us
"Enhancing Exchange" via unsupported methods.
https://blogs.msdn.com/b/webdav_101/archive/2013/06/13/quot-enhancing-exchange-quot-via-unsupported-methods.aspx
OWA Single-sign-on support
https://blogs.msdn.com/b/webdav_101/archive/2012/08/07/owa-single-sign-on-support.aspx
Using ISAPI Extensions to change-out OWA Credential is not supported
https://blogs.msdn.com/b/webdav_101/archive/2007/05/04/using-isapi-extensions-to-change-out-owa-credential-is-not-supported.aspx
Microsoft does not support using ISAPI extensions or filters to modify Outlook Web Access credentials on a server that is running Exchange Server
https://support.microsoft.com/kb/938609
Microsoft support policy for the customization of Outlook Web Access for Exchange
https://support.microsoft.com/kb/327178
Building VCALENDAR content without an Microsoft API is not supported by MS.
https://blogs.msdn.com/b/webdav_101/archive/2008/02/26/building-vcalendar-and-ical-is-not-supported-by-ms.aspx
HOWTO: Read unmounted Exchange EDB files.
https://blogs.msdn.com/b/webdav_101/archive/2008/09/03/howto-read-unmounted-exchange-edb-files.aspx
What's not supported with WebDAV?
https://blogs.msdn.com/b/webdav_101/archive/2008/05/01/whats-not-supported-with-webdav.aspx
Drag and Drop with Outlook
https://blogs.msdn.com/b/webdav_101/archive/2008/04/01/drag-and-drop-with-outlook.aspx
FYI: Why are MAPI and CDO 1.21 not supported in managed (.NET) code?
https://blogs.msdn.com/b/mstehle/archive/2007/10/03/fyi-why-are-mapi-and-cdo-1-21-not-supported-in-managed-net-code.aspx
Save The Date - End of Exchange 2010, Windows 7 and 2008 Mainstream Support – T Minus 6 Months
https://blogs.technet.com/b/rmilne/archive/2014/07/24/save-the-date-_2d00_-end-of-exchange-2010_2c00_-windows-7-and-2008-mainstream-support-_1320_-t-minus-6-months.aspx
Support Ending for the .NET Framework 4, 4.5 and 4.5.1
https://blogs.msdn.com/b/dotnet/archive/2015/12/09/support-ending-for-the-net-framework-4-4-5-and-4-5-1.aspx
.NET Framework Versions and Dependencies
https://msdn.microsoft.com/en-us/library/bb822049(v=vs.110).aspx
Please Note:
Microsoft Developer Support does not write or maintain customer production code.
https://blogs.msdn.com/b/webdav_101/archive/2011/09/29/microsoft-developer-support-does-not-write-or-maintain-customer-production-code.aspx
Also see:
About: Messaging APIs
https://blogs.msdn.com/b/webdav_101/archive/2015/08/07/about-messaging-apis.aspx