A while back, we released the App Orchestration Self-Service SDK documentation. This SDK allows third parties to integrate self-service control panels and portals with the App Orchestration engine.

The Self-Service SDK was designed to be REST-like, so that it can be used from any computer, any programming language, any OS, and can easily traverse firewalls. However if you are writing code on Windows using a .NET language, we can offer a better developer experience than raw HTTP messages.

To that end, I’m pleased to present the App Orchestration Self-Service SDK Client for .NET.

I’d like to also explain in a bit more about how a 3rd party can integrate with App Orchestration using this SDK.

If you have a control panel, portal, onboarding page, or even a simple script that helps with the task of bringing tenants’ users into your organization and setting up XenApp to deliver apps and desktops to those users, then you can use this SDK along with App Orchestration to simplify the process.

General workflows

Bringing a new tenant onboard

When a new tenant wishes to use hosted apps and desktops backed by App Orchestration and XenApp, they must be Imported into App Orchestration. See the API: Tenants.Import()

Offering applications and desktops to a tenant which they can subscribe to using a self-service portal

You can query all of the available advertisements in App Orchestration and offer them through your own UI. See the API: Advertisements.Get()

Of course, users love pictures as well, and most users associate more with icons of their favorite apps than with those apps’ names. You can query the icon as a PNG for display in your UI using: Icons.Get()

Managing user subscriptions to an application or desktop offering

Once your tenant or end-user decides on the applications they want, they can choose to subscribe to them. Doing so is as easy as calling: Subscriptions.Create()

If the tenant already has a subscription to that application for some users, you can add more users by calling: Subscriptions.AddUser()

Sometimes users’ needs change, or they move on to other organizations. You can withdraw those users’ access to applications and desktops using: Subscriptions.RemoveUser()

Putting it together: value in automation

Imagine you want to remove a user from every app she may have subscribed to. While this may be a tedious task to look through all of the subscriptions by hand and remove her from each one, it becomes 7 lines of code using this SDK:

var context = new RestContext("https://server.fqdn/cam/v1", null);
var tenant = context.Tenants.GetByName("Joe Tenant");
var subscriptions = context.Subscriptions.GetByTenantId(tenant.Id);
    .SelectMany(sub => sub.Users)
    .Where(user => user.Name == @"DOMAIN\user")
    .ForEach(user => context.Subscriptions.RemoveUser(user.Id));

I have only touched on about a small subset of the APIs available thru the Self-Service SDK. Check out the included documentation for the full set of APIs. Enjoy!