How to create a service integration add-in for Windows Server Essentials Experience

[Today’s post comes to us courtesy of Zachary Yang and Rui Ling from Sustained Engineering]

Several Microsoft online services, such as Office 365, Windows Azure Backup, and Dynamics CRM Online, use Windows Azure Active Directory (Windows Azure AD) as the identity provider. With the Windows Server Essentials Experience role on Windows Server 2012 R2, we provide Windows Azure AD integration and a set of APIs for third-party add-ins.

Third parties whose services are built on top of Windows Azure AD can integrate their online services into Windows Server Essentials Experience via these APIs. This allows administrators to have a unified view across all their available online services from within the Windows Server Essentials Dashboard.

The Dynamics CRM Online add-in, developed by one of our ISV partners, Wicresoft, is a very typical add-in for service integration. This add-in was recently released and is available for download from Pinpoint. Using this as an example, developing a service integration add-in usually consists of the following parts:

1. Create a Get Started task

After installation, third-party integration add-ins are usually disabled by default. A Get Started task on the HOME page of the Windows Server Essentials Dashboard is a very good entry point to make the add-in more discoverable. For more details about how to create a Get Started task, see the MSDN page Extend setup, Quick Status, and Help. Note that if the Windows Azure AD integration is not already enabled on the Windows Server Essentials server (in other words, if no other services that use Windows Azure AD have been installed previously), the third-party Get Started task should enable it before their own integration is initiated.

clip_image001

2. Create a Dashboard tab

The Windows Server Essentials Dashboard allows you to create a top-level tab in the navigation bar for an add-in, which often contains additional sub-tabs that show relevant information and handle business functionality for the service integration scenarios. We highly recommend creating at least an overview tab for the service. For example, in the following screenshot, a new top-level tab CRM ONLINE is created with sub-tabs for different functional areas, such as CRM Business Units.

For more details about creating tabs, see our previous post How to create a Dashboard UI add-in.

clip_image002

3. Extend the Users tab

The Windows Azure AD integration module in Windows Server Essentials Experience provides critical identity management features, such as managing online users and groups via the on-premises user accounts. In addition, an online service built on top of Windows Azure AD identities may also have their own user definitions and properties. It is therefore recommended that you create an extension for the USERS tab in the Dashboard. For example, in the Dynamics CRM Online add-in, additional information includes CRM Business Unit, CRM Teams, and CRM Roles. With the add-in installed, these properties should display as new columns on the Users sub-tab. This is implemented by defining new business objects as a PageAdorner.

clip_image003

4. Run a backend service

We recommend running a backend service to sync the online data. Depending on your scenario, you could opt to:

  • Create a provider, which can run within a Windows Service. For more details, see the MSDN page Creating a Provider. This is preferred if your backend logic is relatively complex and heavy.
  • Create a cache mechanism to use certain features of the add-in even while the CRM Online service is unavailable.
  • Monitor the connection to report the connection status. This can be used to show an alert/warning on the service’s overview page and provide a hyperlink to diagnose and troubleshoot connectivity issues.

Thanks for reading! We hope this post will help you better understand the development of service integration add-ins for Windows Server Essentials Experience. We would like to encourage you to join the community forum and to develop more useful service integration add-ins!