Sunday, January 12, 2014

Executing a Service Provider Licensing Agreement (SPLA) for Windows Azure VM Remote Desktop Services

As noted in my earlier Microsoft Finally Licenses Remote Desktop Services (RDS) on Windows Azure Virtual Machines article, last updated 12/17/2013, organizations providing customers access to Windows Applications running on Windows Azure Virtual Machines (WAVMs) via Remote Desktop Services (RDS), with or without RDWeb access, must enter into an indirect Microsoft Service Provider Licensing Agreement (SPLA) and purchase Subscriber Access Licenses (SALs) from a reseller appointed by Microsoft. The only prerequisites for an SPLA are your firm must be a Registered (or higher) Microsoft Partner and have a Microsoft (Live) ID.

When this post was written in mid-January 2014, Microsoft had appointed eight US and seven Canadian resellers in the US. I chose Dell Computer, Inc. as OakLeaf’s reseller because they offered this simple sign-up procedure:

1. Send a message to or with your Partner organization name, ID number and physical location (city or state/province,) as well as the name of the individual having authority to sign the SPLA.

2. A Dell representative will acknowledge your request.

3. A few hours later, you’ll receive a message with Action Required: Your Microsoft License Agreement is ready for electronic signature{~########:1~} as the subject from with the following information:

Dear Roger Jennings,

Your Microsoft Volume Licensing Agreement has been created by your Microsoft Channel Partner and is ready for acceptance and electronic signature.

  • Contract Package Number: PKG#########
  • Agreement Number: ########
  • Customer Number: XXXX####

Action Required

Please click the link below in order to review and sign the agreements on behalf of your company. If you no longer have signing authority, please notify your Channel Partner immediately and do not use the below link.

Note: You will be prompted to sign into eAgreements using a valid Windows Live ID. If you do not have a Windows Live ID, you are required to create one and will be prompted to do so after you click the link below.

Clicking the provided URL opens the following Volume Licensing Welcome page:


Sign in with your Windows Live ID to open the eAgreements Registration page:


Click each of the four Document Name links, download the following Word documents and review them or route them to your company’s legal department for review and approval:

  • Microsoft Business and Services Agreement: MBSA Agreement.docx
  • Service Provider License Agreement (Indirect): Master Agreement.docx (form is prefilled)
  • Signature Form: Signature Form.docx
  • End User License Terms: SPLA End User License Terms.docx

After review and approval of the four documents, select the I Confirm option button to expand the bottom section. Type the signatory’s name, job title and, optionally, purchase order number, as shown here:


Click Submit to send the electronically signed form to Microsoft. Click OK to acknowledge the success message:


Tip: If you receive an error message after clicking submit, try again at least once.

You’ll receive a Confirmation of Microsoft Volume Licensing Agreement Acceptance and Submission{~########:1~} by e-mail from Microsoft a few minutes after submission. The message contains the following (in part):

… Note that this agreement is not wholly formed until accepted and activated by Microsoft.

Once the license agreement is signed by Microsoft, you will receive a Welcome email from Microsoft confirming the activation of your organization’s license agreement. The Welcome email will also provide information about how you can track and manage your organization’s software licenses online. …

I’ll update this post when I receive the activation message.

Friday, January 10, 2014

Uptime Report for My Live Windows Azure Web Site: December 2013 = 99.95%

image_thumb_thumbMy (@rogerjenn) Android MiniPCs and TVBoxes blog runs WordPress on WebMatrix with Super Cache in Windows Azure Web Site (WAWS) Standard tier instance in Microsoft’s West U.S. (Bay Area) data center and ClearDB’s MySQL database (Venus plan). I converted the site from the Shared Preview to the Standard tier on September 7, 2013 in order to store diagnostic data in Windows Azure blobs instead of the file system.

Service Level Agreements aren’t applicable to the Web Services’ Shared tier; only sites in the Standard tier qualify for the 99.9% uptime SLA.

  • Running a Shared Preview WAWS costs ~US$10/month plus MySQL charges
  • Running a Standard tier instance costs ~US$75/month plus MySQL charges

I use Windows Live Writer to author posts that provide technical details of low-cost MiniPCs with HDMI outputs running Android JellyBean 4.1+, as well as Google’s new Chromecast device. The site emphases high-definition 1080p video recording and rendition.


The site commenced operation on 4/25/2013. To improve response time, I implemented WordPress Super Cache on May 15, 2013. I moved the site’s diagnostic logs from the file system to Windows Azure blobs on 9/7/2013, as reported in my Storing the Android MiniPCs Site’s Log Files in Windows Azure Blobs post.


Here’s Pingdom’s graphical Uptime report (first page in Downtime mode) for December 2013:


Note: Downtime is exaggerated because Pingdom’s timing resolution is five minutes.

And here’s their Response Time report for the same period:


Response time is slowed by the length and number of images of this blog’s posts.

The Windows Azure Management Portal displays resource utilization for a maximum period of one prior week:


I plan to report and log uptime values monthly with pages similar to OakLeaf Systems’ Uptime Report for my Live OakLeaf Systems Azure Table Services Sample Project posts, which has more that two full years of uptime and response time data as of June 2013.

Month Year Uptime Downtime Outages Response Time
December 2013 99.95% 00:21:00 4 1,868 ms
November 2013 99.92% 00:35:00 5 1,877 ms
October 2013 99.63% 02:40:00 23 2,061 ms
September 2013 99.81% 01:20:00 7 1,816 ms
August 2013 99.71% 02:10:00 24 1,786 ms
July 2013 99.37% 04:40:00 45 2,002 ms
June 2013 99.34% 04:45:00 30 2,431 ms
May 2013 99.58% 03:05:00 32 2,706 ms

Note: The usual 99.9% uptime Service Level Agreement (SLA) applies only to Windows Azure Web Sites running in the Standard tier. The Android MiniPCs and TVBoxes site was upgraded from the Shared to Standard tier on 9/7/2013.

Wednesday, January 08, 2014

Uptime Report for my Live OakLeaf Systems Azure Table Services Sample Project: December 2013 = 100.00%

image_thumb14_thumbMy (@rogerjenn) live OakLeaf Systems Azure Table Services Sample Project demo project runs two small Windows Azure Web role compute instances from Microsoft’s South Central US (San Antonio, TX) data center. This report now contains more than two full years of monthly uptime data.


imageHere’s the detailed downtime report from Pingdom for December 2013:


Following is the first page of the detailed Pingdom response time data for December 2013:


You can check the site’s Public Status Page (shown for 12/2/2013) by clicking here:


This is the thirty-first uptime report for the two-Web role version of the sample project since it was upgraded to two instances. Uptimes below SLA 99.9% minimums are emphasized. Reports will continue on a monthly basis.

Month Year Uptime Downtime Outages Response Time
December 2013 100.00% 00:00:00 0 666 ms
November 2013 99.99% 00:00:05 1 796 ms
October 2013 100.00% 00:00:00 0 720 ms
September 2013 99.95% 00:00:20 2 1,094 ms
August 2013 100.00% 00:00:00 0 850 ms
July 2013 100.00% 00:00:00 0 814 ms
June 2013 100.00% 00:00:00 0 750 ms
May 2013 100.00% 00:00:00 0 854 ms
April 2013 100.00% 00:00:00 0 842 ms
March 2013 100.00% 00:00:00 0 717 ms
February 2013 98.78% 08:10:00 3 799 ms
January 2013 100.00% 00:00:00 0 628 ms
December 2012 100.00% 00:00:00 0 806 ms
November 2012 100.00% 00:00:00 0 745 ms
October 2012 100.00% 00:00:00 0 686 ms
September 2012 100.00% 00:00:00 0 748 ms
August 2012 99.92% 00:35:00 2 684 ms
July 2012 100.00% 00:00:00 0 706 ms
June 2012 100.00% 00:00:00 0 712 ms
May 2012 100.00% 00:00:00 0 775 ms
April 2012 99.28% 05:10:08 12 795 ms
March 2012 99.96% 00:20:00 1 767 ms
February 2012 99.92% 00:35:00 2 729 ms
January 2012 100.00% 00:00:00 0 773 ms
December 2011 100.00% 00:00:00 0 765 ms
November 2011 99.99% 00:05:00 1 708 ms
October 2011 99.99% 00:04:59 1 720 ms
September 2011 99.99% 00:05:00 1 743 ms
August 2011 99.98% 00:09:57 2 687 ms
July 2011 100.00% 00:00:00 0 643 ms
June 2011 100.00% 00:00:00 0 696 ms

Update 5/7/2013: Added links to those previous uptime reports currently accessible. I don’t know why some posts are missing from the Internet.

The Azure Table Services Sample Project

See my Republished My Live Azure Table Storage Paging Demo App with Two Small Instances and Connect, RDP post of 5/9/2011 for more details about the Windows Azure test harness instance.


imageI believe this project is the oldest continuously running Windows Azure application. I first deployed it in November 2008 when I was writing Cloud Computing with the Windows Azure Platform for Wiley/WROX, which was the first book published about Windows Azure.

imageThe application runs the default set of Windows Azure Diagnostics. About 5 GB of Event Counter data provides the source data for my Generating Big Data for Use with SQL Azure Federations and Apache Hadoop on Windows Azure Clusters post of 1/8/2012.

image_thumb17_thumbFor more details about the Table Services Sample project or to download its source code, visit its Microsoft Pinpoint entry. Following are Pinpoint listings for four three other related OakLeaf sample projects, two of which are live in the South Central US data center:

This report blogged from the Consumer Electronics Show 2014, Las Vegas, Nevada

Saturday, January 04, 2014

Microsoft’s Project Siena Needs a Windows Azure Mobile Services Sample App

imageS. “Soma” Somasegar ( @SSomasegar) asserts Microsoft’s new Project Siena is intended for “business experts, business analysts, consultants and other business users with the imagination to conceive an app for today’s mobile devices” in his Project Siena: Enabling Business Users to Create Mobile Apps for the Enterprise post of 12/19/2013 to TechNet’s Project Siena blog.

imageProject Siena’s tagline is

Build powerful business apps, no coding necessary.

Soma cites as examples:

  • Apps to support conversations, where a customer can reach over and touch the employee’s screen, make changes and ultimately own the solution
  • Apps with the smarts to help users make on-the-spot decisions by offering choices first and allowing trade-offs later
  • Apps for tasks that involve capturing real world information through photos, videos and voice

Project Siena’s Tagline Is an Oxymoron

I have never seen a real-world business app, powerful or not, that didn’t require at least some custom Visual Basic, VBA, C#, Java, JavaScript or code in another programming language. For its Visual Studio LightSwitch rapid application development (RAD) tool, Microsoft claims:

When you use LightSwitch, much of the repetitive work is done for you and, in fact, you can create a LightSwitch application without writing any code at all! For most applications, the only code you have to write is the code that only you can write: the business logic.

Tim Anderson’s ( @timanderson) Figuring out Project Siena: a Windows 8 app to build Windows 8 apps article of 1/4/2014 describes his frustrations with fathoming the functions required to program a simple todo list:

imageA couple of weeks back I took a look at Project Siena, a preview of a new tool for building Windows 8 apps. Project Siena features a simplified user interface builder, an Excel-like expression language, and data-bound controls. It generates Windows 8 JavaScript apps. Project Siena is itself a Windows Store app, and runs fine on Windows RT (the ARM version). I have been using it successfully on Surface 2, on which it runs sweetly. [Emphasis added.]

When I first looked at Project Siena I tried to build the same first app that I have used for numerous simple tests of development tools over the years: a to-do list. I was impressed by how easy it was to create the user interface, but unable to work out the code to complete it. Unless I missed it, the key information is not included in any of the initial documentation. I found this disappointing, since it has been easy to work out the code in every other programming environment I have tried. …

In Siena, data is stored in Collection objects, and you can bind a listbox to a collection. By default, a new listbox is bound to an object called ListboxSample, but you cannot use it for this; if you try, you get a squiggly line error with the message that ListboxSample is not a collection.


Instead, you have to create your own collection object. In Siena, you declare a variable by using it and its type is inferred. Enter this for the OnSelect property of the Add button:

Collect(mycollection,{Value: InputText1!Text})

This is the code that took me so long to work out. The Collect function adds an item to a collection. If the collection does not already exist, it creates it. The first argument to Collect is a collection object, and the second, an item. What is an item? In effect, a record or row in a table. The syntax for an item in Siena is:

{Fieldname1: fieldvalue1,Fieldname2: fieldvalue2,…}

where the dots represent additional fields as required. Therefore, the code I entered for the Add button creates or appends an item with a single field, called Value, to a collection called mycollection.

Now you can select the listbox and tap Data and then Items. The collection called mycollection magically appears for selection. Select it. In the case of multi-field collections, you can also choose which field appears in the list. Only one field it seems; yes, Siena needs a grid control. … [Emphasis added.’]

Defining function expressions to respond to events sounds like programming to me. The Microsoft Project Siena Function Reference lists two operators and 71 functions, many of which have complex argument lists. Even inline If() expressions are supported:

  If(predicate1, expression1,
     [predicate2, expression2,
      predicateN, expression,

Returns the result of evaluating the expression that corresponds to the first matching predicate. If none of the predicates match, default is evaluated and its result gets returned.

The Project Siena expressions remind me of those available to Microsoft Access developers from the Jet Expression Service.

Instructions for Importing Windows Azure Mobile Services

From the Microsoft Project Siena Help Topics:

… How do I import Windows Azure Mobile Services ([W]AMS) data into my app?

If your enterprise uses Windows Azure Mobile Services, contact your IT department or the administrator of the account for the account details. Then add [W]AMS tables as data sources to your app:

  1. Click the + control in the Data Sources backstage.
  2. Click Azure Mobile Services in the Data Sources menu.
  3. You will be prompted for the URL (usually of the form https://<EnterpriseName> and AppKey (this is generated when the account is set up; use an application key and not the master key). Enter this information and click the search icon.
  4. All the tables in your [W]AMS instance are listed. Select one or more of the instances and then click Import Data to import the data into your app. 

Note that in the current release, we support a simplified and lightweight interface for accessing [W]AMS data. As part of the [W]AMS setup, your IT administrator will also need to create a table named "zz_config" in your [W]AMS instance for Siena to be able to interact with it. This table should contain the following columns:

  1. Key: This should be set to “table”.
  2. Value: String value that stores the table name.

The zz_config table should contain one row per table that you want to expose to Siena. For example, if you want to allow Siena to access Employee and Sales tables, your zz_config table will have the following entries:

Key Value
“table” “Employee”
“table” “Sales”

Apparently, the Project Siena team didn’t get the memo that “Windows Azure whatever,” not “Azure whatever,” is the naming convention.

Connecting a Project Siena App to Other Data Sources

More from the Microsoft Project Siena Help Topics:

How do I import data into my app?

Links to data sources can be added to your apps for importing data. Create these links through the Data Sources backstage, which can be accessed as follows:

  1. Display the app bar by right-clicking anywhere on the canvas or by swiping down from the top of the canvas.
  2. Click File, and then click Data Sources.
  3. Click the + control to bring up a list of possible data sources.

The current release of Siena supports the following types of data sources that are displayed as options when you click the + control.

  • Excel
  • Windows Azure Mobile Services (AMS)
  • REST
  • RSS Feed
  • SharePoint Lists

Note that your SharePoint site, REST web services, or RSS Feed should not be running on the same device as the published app. If this condition is not met, the app will not be able to access the service because of a security restriction with Windows 8 apps that prevents from calling into web services running on the same device. …

How do I import Excel data into my app?

Perform the following steps to import Excel data into your app:

  1. Click the + control in the Data Sources backstage.
  2. Click Excel in the Data Sources menu.
  3. This will bring up the Windows 8 file picker. Browse to the location where your Excel file is stored, select it, and click Open.
  4. All the tables within the Excel workbook you selected are displayed. Select one or more tables from the displayed list, and then click Import Data to import the data into your app.

Note that only Excel tables will be imported (see Create an Excel table). If the data has been imported successfully, the first three rows of the table will be displayed.

How do I use REST connectors?

Consume data from REST connectors in your app by following these steps:

  1. Click the + control in the Data Sources backstage.
  2. Click REST in the Data Sources menu.
  3. Enter the URL for your REST service.
  4. Choose an authentication method from the drop-down list box.
  5. Select the Enable headers check box, if you want to specify any additional custom headers.
  6. Import the data.
  7. All the tables exposed through your REST service are imported into your app.

Siena can fetch data from REST services using GET requests (your proxy must support GET requests at the supported endpoints) if the following requirements are satisfied. Please contact your IT administrator about these requirements if you are having trouble connecting to your enterprise’s REST services.

How do I import SharePoint lists into my app?

Perform the following steps to import data from SharePoint lists:

  1. Click the + control in the Data Sources backstage.
  2. Click SharePoint in the Data Sources menu.
  3. Enter the URL to your SharePoint site, and then click the search icon.
  4. All the lists on your SharePoint site to which you have access are displayed. Select one or more lists, and then click Import Data” to import the data into your app.

Note that in the current release of Siena, a link to SharePoint data is not live—changes made to the list on the server are not immediately reflected in the app. When loading, the app takes a "snapshot" of the data on the SharePoint server.

How do I import RSS feed data into my app?

Perform the following steps to import data from RSS feeds:

  1. Click the + control in the Data Sources backstage.
  2. Click RSS Feed in the Data Sources menu.
  3. Enter the URL to your RSS Feed and click the search icon
  4. All the RSS feeds in your specified URL to which you have access are displayed. Select one or more feeds, and then click Import Data to import the data into your app.

Note that in the current release of Siena, a link to RSS Feed data is not live—changes made to the feed on the server are not immediately reflected in the app. When loading, the app takes a "snapshot" of the data on the RSS Feed server. In the current version of Siena, only Atom and RSS 2.0 feeds are supported. …

The Missing Link

The question remains how to use the imported data and how to update it, if possible. This undoubtedly requires code but Project Siena’s three current sample apps, AdventureWorks, Real Coverage Finder and Personnel Manager, don’t appear to use external data sources.

The Project Siena Release Notes were the primary documentation for the app when this post was written. Paul Mather posted on 1/2/20114 an illustrated tutorial for a simple app with a Excel worksheet as the read-only data source: Win8 Apps using Project Siena:


WAMS provides ToDo demo tutorials for Windows 8 (C# and JavaScript), Windows Phone, iOS, Android, HTML, Xamarin.iOS and Xamarin.Android. My five-part Windows Azure Mobile Services Preview Walkthrough expands on the Windows 8 C# tutorial: 

I’ve requested the WAMS group to create a demo app and walkthrough for Project Siena. I’ll update this post when and if they do so.