-[A] You should put that in the SDK
-[B] The SDK? But I’m using the SDK, I’m calling the webservice. Do you want me to put it in a plug-in or something?
-[A] No, just put it in the written SDK
-[B] Oh, you mean on the onLoad event of the form
-[A] No, the SDK, the documentation
This type of conversations happen quite often even within the CRM product team :/ We often use the term SDK interchangeably to refer to different things. I’m sure almost everybody in the IT community has heard the term SDK at least once; but what does it mean? More importantly for the CRM community, what does it mean in our context?
SDK stands for “Software Development Kit” and it usually refers to any type of documentation or tools that enable programmers to develop software for a specific system. As you can see, this is a very broad definition which I will try to narrow a little bit in the context of Microsoft Dynamics CRM.
In theory, for Dynamics CRM 3.0, the acronym SDK should always refer to the collection of documents, samples and extra help files that illustrates:
How to use the server side API, constituted of the two CRM Web Services: CrmService.asmx and MetadataService.asmx
How to customize CRM UI via isv.config and sitemap
How to integrate custom applications and pages into your installation
How to use workflow and workflow assemblies
How to use the ‘Eventing framework’; which are basically events that fire-up on certain operations such as pre-create of entities
How to use callouts which are basically dot net assemblies attached to events
How to create custom reports
Now comes the confusing part. The term SDK is also used, perhaps erroneously, to refer to the actual API’s available in CRM.
Therefore you will hear the CRM community refer to the “server side SDK” as being the backend/webservices part of CRM (sometimes also known as “platform”) which is understandable since the classes themselves have “sdk” as part of their namespace. Others may also refer to the “client SDK” as being the client side API.
To be honest it will be quite difficult to argue what actually constitutes an SDK so my only recommendation is that whenever you refer to an SDK make sure to clarify what you mean by it J