I was working on the plugin where logic had to work differently depending on the type of the instance, i.e. if code is executed in Sandbox environment – do A, if code is executed in Production – do B. I never developed anything similar before and search engines did not bring anything valuable. After research I found RetrieveOrganizationInfo message with correspond request and response classes. After few tests and poking around I came up with following code that could be used (to make code shorter and easier to read I dropped part of it where IOrganizationService was instantiated):
var instanceSettings =
if (instanceSettings.organizationInfo.InstanceType == OrganizationType.Customer ||
instanceSettings.organizationInfo.InstanceType == OrganizationType.Secondary)
//this instance is production - run this logic here
else if (instanceSettings.organizationInfo.InstanceType == OrganizationType.CustomerTest)
//this instance is sandbox - run this logic here
//this is some other type of the instance
//add required code here if you want to handle this situation as well
If you’re interested what are other types you should check the description of OrganizationType enumeration. I checked few instances I had an access to and value of InstanceType for it was either Customer or Secondary – I don’t know what’s the difference between those 2 and if you have an explanation – please leave a comment under this post. Sandboxes I checked returned CustomerTest value.
If you need to get this information not from .Net code or from .Net code where SDK assemblies are not available for some reason – you can use WebApi and RetrieveOrganizationInfo function.