diff --git a/articles/active-directory/active-directory-php-web-single-sign-on.md b/articles/active-directory/active-directory-php-web-single-sign-on.md
deleted file mode 100644
index 28b4da57517..00000000000
--- a/articles/active-directory/active-directory-php-web-single-sign-on.md
+++ /dev/null
@@ -1,208 +0,0 @@
-
-
-
-
-# Web Single Sign-On with PHP and Azure Active Directory
-
-##Introduction
-
-This tutorial will show PHP developers how to leverage Azure Active Directory to enable single sign-on for users of Office 365 customers. You will learn how to:
-
-* Provision the web application in a customer's tenant
-* Protect the application using WS-Federation
-
-###Prerequisites
-The following development environment prerequisites are required for this walkthrough:
-
-* [PHP Sample Code for Azure Active Directory]
-* [Eclipse PDT 3.0.x All In Ones]
-* PHP 5.3.1 (via Web Platform Installer)
-* Internet Information Services (IIS) 7.5 with SSL enabled
-* Windows PowerShell
-* [Office 365 PowerShell Commandlets]
-
-## Step 1: Create a PHP Application
-This step describes how to create a simple PHP application that will represent a protected resource. Access to this resource will be granted through federated authentication managed by the company's STS, which is described later in the tutorial.
-
-1. Open a new instance of Eclipse.
-2. From the **File** menu, click **New**, then click **New PHP Project**.
-3. On the **New PHP Project** dialog, name the project *phpSample*, then click **Finish**.
-4. From the **PHP Explorer** menu on the left, right-click *phpProject*, click **New**, then click **PHP File**.
-5. On the **New PHP File** dialog, name the file **index.php**, then click **Finish**.
-6. Replace the generated markup with the following, then save **index.php**:
-
-
-
-
-
- Index
-
-
- ##Index Page
-
-
-
-7. Open **Internet Information Services (IIS) Manager** by typing *inetmgr* at the Run prompt and pressing Enter.
-
-8. In IIS Manager, expand the **Sites** folder in the left menu, right-click **Default Website**, then click **Add Application...**.
-
-9. On the **Add Application** dialog, set the **Alias** value to *phpSample* and the **Physical path** to the file path where you created the PHP project.
-
-10. In Eclipse, from the **Run** menu, click **Run**.
-
-11. On the **Run PHP Web Application** menu, click **OK**.
-
-12. The **index.php** page will open in a new tab in Eclipse. The page should simply display the text: *Index Page*.
-
-## Step 2: Provision the Application in a Company's Directory Tenant
-This step describes how an administrator of an Azure Active Directory customer provisions the PHP application in their tenant and configures single sign-on. After this step is accomplished, the company's employees can authenticate to the web application using their Office 365 accounts.
-
-The provisioning process begins by creating a new Service Principal for the application. Service Principals are used by Azure Active Directory to register and authenticate applications to the directory.
-
-1. Download and install the Office 365 PowerShell Commandlets if you haven't done so already.
-2. From the **Start** menu, run the **Azure Active Directory Module for Windows PowerShell** console. This console provides a command-line environment for configuring attributes about your Office 365 tenant, such as creating and modifying Service Principals.
-3. To import the required **MSOnlineExtended** module, type the following command and press Enter:
-
- Import-Module MSOnlineExtended -Force
-4. To connect to your Office 365 directory, you will need to provide the company's administrator credentials. Type the following command and press Enter, then enter your credential's at the prompt:
-
- Connect-MsolService
-5. Now you will create a new Service Principal for the application. Type the following command and press Enter:
-
- New-MsolServicePrincipal -ServicePrincipalNames @("phpSample/localhost") -DisplayName "Federation Sample Website" -Type Symmetric -Usage Verify -StartDate "12/01/2012" -EndDate "12/01/2013"
-This step will output information similar to the following:
-
- The following symmetric key was created as one was not supplied qY+Drf20Zz+A4t2w e3PebCopoCugO76My+JMVsqNBFc=
- DisplayName : Federation Sample PHP Website
- ServicePrincipalNames : {phpSample/localhost}
- ObjectId : 59cab09a-3f5d-4e86-999c-2e69f682d90d
- AppPrincipalId : 7829c758-2bef-43df-a685-717089474505
- TrustedForDelegation : False
- AccountEnabled : True
- KeyType : Symmetric
- KeyId : f1735cbe-aa46-421b-8a1c-03b8f9bb3565
- StartDate : 12/01/2012 08:00:00 a.m.
- EndDate : 12/01/2013 08:00:00 a.m.
- Usage : Verify
-> [AZURE.NOTE]
-> You should save this output, especially the generated symmetric key. This key is only revealed to you during Service Principal creation, and you will be unable to retrieve it in the future. The other values are required for using the Graph API to read and write information in the directory.
-
-6. The final step sets the reply URL for your application. The reply URL is where responses are sent following authentication attempts. Type the following commands and press enter:
-
- $replyUrl = New-MsolServicePrincipalAddresses –Address "https://localhost/phpSample"
-
- Set-MsolServicePrincipal –AppPrincipalId "7829c758-2bef-43df-a685-717089474505" –Addresses $replyUrl
-
-The web application has now been provisioned in the directory and it can be used for web single sign-on by company employees.
-
-## Step 3: Protect the Application Using WS-Federation for Employee Sign In
-This step shows you how to add support for federated login using Windows Identity Foundation (WIF) and the simpleSAML.php libraries you downloaded with the sample code in the prerequisites. You will also add a login page and configure trust between the application and the directory tenant.
-
-1. In Eclipse, right-click the **phpSample** project, click **New**, then click **File**.
-
-2. On the **New File** dialog, name the file **federation.ini**, then click **Finish**.
-
-3. In the new **federation.ini** file, enter the following information, supplying the values with the information you saved in Step 2 when creating your Service Principal:
-
- federation.trustedissuers.issuer=https://accounts.accesscontrol.windows.net/v2/wsfederation
- federation.trustedissuers.thumbprint=qY+Drf20Zz+A4t2we3PebCopoCugO76My+JMVsqNBFc=
- federation.trustedissuers.friendlyname=Fabrikam
- federation.audienceuris=spn:7829c758-2bef-43df-a685-717089474505
- federation.realm=spn:7829c758-2bef-43df-a685-717089474505
- federation.reply=https://localhost/phpSample/index.php
-
-
- > [AZURE.NOTE] The **audienceuris** and **realm** values must be prefaced by "spn:".
-
-4. In Eclipse, right-click the **phpSample** project, click **New**, then click **PHP File**.
-
-5. On the **New PHP File** dialog, name the file **secureResource.php**, then click **Finish**.
-
-6. In the new **secureResource.php** file, enter the following code, replacing the **c:\phpLibraries** path with the root location where you downloaded the sample code. The root location should include the **simpleSAML.php** file and **federation** folder:
-
- isAuthenticated()) {
- if (isset ($token)) {
- try {
- $loginManager->authenticate($token);
- } catch (Exception $e) {
- print_r($e->getMessage());
- }
- } else {
- $returnUrl = "https://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
- header('Pragma: no-cache');
- header('Cache-Control: no-cache, must-revalidate');
- header("Location: " . FederatedLoginManager :: getFederatedLoginUrl($returnUrl), true, 302);
- exit();
- }
- }
- ?>
-
-7. Open the **index.php** page and update its contents to secure the page, then save it:
-
-
-
-
-
-
- Index Page
-
-
-
Index Page
-
Welcome getPrincipal()->getName()); ?>!
-
Claim list:
-
- getClaims() as $claim) {
- print_r('
' . $claim->toString() . '
');
- }
- ?>
-
-
-
-
-8. From the **Run** menu, click **Run**. You should automatically be redirected to the Office 365 Identity Provider page, where you can log in using your directory tenant credentials. For example, *john.doe@fabrikam.onmicrosoft.com*.
-
-## Summary
-This tutorial has shown you how to create and configure a single tenant PHP application that uses the single sign-on capabilities of Azure Active Directory.
-
-A sample that shows how to use Azure Active Directory and single sign-on for PHP websites is available at .
-
-## Next steps
-
-For more information, see the [PHP Developer Center](/develop/php/).
-
-[Step 1: Create a PHP Application]: #createapp
-[Step 2: Provision the Application in a Company's Directory Tenant]: #provisionapp
-[Step 3: Protect the Application Using WS-Federation for Employee Sign In]: #protectapp
-[Summary]: #summary
-[Introduction]: #introduction
-[Developing Multi-Tenant Cloud Applications with Azure Active Directory]: http://g.microsoftonline.com/0AX00en/121
-[Windows Identity Foundation 3.5 SDK]: http://www.microsoft.com/download/details.aspx?id=4451
-[Windows Identity Foundation 1.0 Runtime]: http://www.microsoft.com/download/details.aspx?id=17331
-[Office 365 Powershell Commandlets]: http://msdn.microsoft.com/library/azure/jj151815.aspx
-[ASP.NET MVC 3]: http://www.microsoft.com/download/details.aspx?id=4211
-[Eclipse PDT 3.0.x All In Ones]: http://www.eclipse.org/pdt/downloads/
-[PHP Sample Code for Azure Active Directory]: https://github.com/WindowsAzure/azure-sdk-for-php-samples/tree/master/WAAD.WebSSO.PHP
-
\ No newline at end of file
diff --git a/articles/active-directory/vs-active-directory-dotnet-getting-started.md b/articles/active-directory/vs-active-directory-dotnet-getting-started.md
index e7e570e3447..8cfff5ab4ac 100644
--- a/articles/active-directory/vs-active-directory-dotnet-getting-started.md
+++ b/articles/active-directory/vs-active-directory-dotnet-getting-started.md
@@ -3,7 +3,7 @@
description="How to get started using Azure Active Directory in MVC projects after connecting to or creating an Azure AD using Visual Studio connected services"
services="active-directory"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Getting Started with Azure Active Directory and Visual Studio connected services (MVC Projects)
diff --git a/articles/active-directory/vs-active-directory-dotnet-what-happened.md b/articles/active-directory/vs-active-directory-dotnet-what-happened.md
index d58aeb4d41d..057e0390978 100644
--- a/articles/active-directory/vs-active-directory-dotnet-what-happened.md
+++ b/articles/active-directory/vs-active-directory-dotnet-what-happened.md
@@ -3,7 +3,7 @@
description="Describes what happens to your MVC project when you connect to Azure AD by using Visual Studio connected services"
services="active-directory"
documentationCenter="na"
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# What happened to my MVC project (Visual Studio Azure Active Directory connected service)?
diff --git a/articles/active-directory/vs-active-directory-error.md b/articles/active-directory/vs-active-directory-error.md
index 8e141c3a210..f2a437efe13 100644
--- a/articles/active-directory/vs-active-directory-error.md
+++ b/articles/active-directory/vs-active-directory-error.md
@@ -3,7 +3,7 @@
description="The active directory connection wizard detected an incompatible authentication type"
services="active-directory"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="07/22/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Error During Authentication Detection
diff --git a/articles/active-directory/vs-active-directory-webapi-getting-started.md b/articles/active-directory/vs-active-directory-webapi-getting-started.md
index 54e8b135752..ef345cef8c9 100644
--- a/articles/active-directory/vs-active-directory-webapi-getting-started.md
+++ b/articles/active-directory/vs-active-directory-webapi-getting-started.md
@@ -3,7 +3,7 @@
description="How to get started using Azure Active Directory in WebApi projects after connecting to or creating an Azure AD using Visual Studio connected services"
services="active-directory"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Get Started with Azure Active Directory and Visual Studio connected services (WebApi projects)
diff --git a/articles/active-directory/vs-active-directory-webapi-what-happened.md b/articles/active-directory/vs-active-directory-webapi-what-happened.md
index 9c52bb9b03a..e2ea8bbcadc 100644
--- a/articles/active-directory/vs-active-directory-webapi-what-happened.md
+++ b/articles/active-directory/vs-active-directory-webapi-what-happened.md
@@ -3,7 +3,7 @@
description="Describes what happens to your MVC project WebApi you connect to Azure AD by using Visual Studio services="active-directory"
services="active-directory"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# What happened to my WebApi project (Visual Studio Azure Active Directory connected service)
diff --git a/articles/app-service-web/web-sites-php-enterprise-wordpress.md b/articles/app-service-web/web-sites-php-enterprise-wordpress.md
index 6c6c5192490..1388cb06047 100644
--- a/articles/app-service-web/web-sites-php-enterprise-wordpress.md
+++ b/articles/app-service-web/web-sites-php-enterprise-wordpress.md
@@ -13,7 +13,7 @@
ms.topic="article"
ms.tgt_pltfrm="na"
ms.workload="web"
- ms.date="08/03/2015"
+ ms.date="11/06/2015"
ms.author="tomfitz"/>
#Enterprise-class WordPress on Azure App Service
@@ -28,7 +28,7 @@ A basic WordPress installation has only two requirements.
> [AZURE.NOTE] ClearDB provides several MySQL configurations, with different performance characteristics for each configuration. See the [Azure Store][cdbnstore] for information on offerings provided through the Azure store or [ClearDB pricing](http://www.cleardb.com/pricing.view) for offerings directly from ClearDB.
-* **PHP 5.2.4 or greater** - Azure App Service currently provide [PHP versions 5.3, 5.4, and 5.5][phpwebsite].
+* **PHP 5.2.4 or greater** - Azure App Service currently provide [PHP versions 5.4, 5.5, and 5.6][phpwebsite].
> [AZURE.NOTE] We recommend always running on the latest version of PHP to ensure you have the latest security fixes.
@@ -53,7 +53,7 @@ Replication and routing to multiple MySQL Databases can be done using ClearDB's
###Multi-region deployment with media storage and caching
-If the site will accept uploads, or host media files, use Azure Blob storage. If you need caching, consider [Redis cache][rediscache], [Memcache Cloud](http://azure.microsoft.com/gallery/store/garantiadata/memcached/), [MemCachier](http://azure.microsoft.com/gallery/store/memcachier/memcachier/), or one of the other caching offerings in the [Azure Store](http://azure.microsoft.com/gallery/store/).
+If the site will accept uploads, or host media files, use Azure Blob storage. If you need caching, consider [Redis cache][rediscache], [Memcache Cloud](https://azure.microsoft.com/marketplace/partners/garantiadata/memcached/), [MemCachier](https://azure.microsoft.com/marketplace/partners/memcachier/memcachier/), or one of the other caching offerings in the [Azure Store](http://azure.microsoft.com/gallery/store/).
![an Azure web app, hosted in multiple regions, using CDBR High Availability router for MySQL, with Managed Cache, Blob storage, and CDN][performance-diagram]
@@ -87,7 +87,7 @@ Performance in the cloud is achieved primarily through caching and scale out; ho
To do this... | Use this...
------------------------|-----------
**Understand App Service instance capabilities** | [Pricing details, including capabilities of App Service tiers][websitepricing]
-**Cache resources** | [Redis cache][rediscache], [Memcache Cloud](/gallery/store/garantiadata/memcached/), [MemCachier](/gallery/store/memcachier/memcachier/), or one of the other caching offerings in the [Azure Store](/gallery/store/)
+**Cache resources** | [Redis cache][rediscache], [Memcache Cloud](https://azure.microsoft.com/marketplace/partners/garantiadata/memcached/), [MemCachier](https://azure.microsoft.com/marketplace/partners/memcachier/memcachier/), or one of the other caching offerings in the [Azure Store](/gallery/store/)
**Scale your application** | [Scale a web app in Azure App Service][websitescale] and [ClearDB High Availability Routing][cleardbscale]. If you choose to host and manage your own MySQL installation, you should consider [MySQL Cluster CGE][cge] for scale out
####Migration
@@ -249,10 +249,10 @@ To do this... | Use this...
[sendgridplugin]: http://wordpress.org/plugins/sendgrid-email-delivery-simplified/
[phpwebsite]: web-sites-php-configure.md
[customdomain]: web-sites-custom-domain-name.md
-[trafficmanager]: /blog/2014/03/27/azure-traffic-manager-can-now-integrate-with-azure-web-sites/
+[trafficmanager]: ../traffic-manager/traffic-manager-overview.md
[backup]: web-sites-backup.md
[restore]: web-sites-restore.md
-[rediscache]: http://msdn.microsoft.com/library/azure/dn690470.aspx
+[rediscache]: https://azure.microsoft.com/documentation/services/redis-cache/
[managedcache]: http://msdn.microsoft.com/library/azure/dn386122.aspx
[websitescale]: web-sites-scale.md
[managedcachescale]: http://msdn.microsoft.com/library/azure/dn386113.aspx
@@ -279,6 +279,6 @@ To do this... | Use this...
[deploy]: web-sites-deploy.md
[posh]: ../install-configure-powershell.md
[Azure CLI]: ../xplat-cli-install.md
-[storesendgrid]: /gallery/store/sendgrid/sendgrid-azure/
+[storesendgrid]: https://azure.microsoft.com/marketplace/partners/sendgrid/sendgrid-azure/
[cdn]: ../cdn-how-to-use.md
diff --git a/articles/backup/backup-azure-vms-prepare.md b/articles/backup/backup-azure-vms-prepare.md
index d16040ede3b..2ce6f98f4af 100644
--- a/articles/backup/backup-azure-vms-prepare.md
+++ b/articles/backup/backup-azure-vms-prepare.md
@@ -118,7 +118,7 @@ HttpProxy.Port=
![Create a new rule](./media/backup-azure-vms-prepare/firewall-02.png)
2. In the *New Inbound Rule Wizard* choose the **Custom** option for the *Rule Type* and click Next. In the screen to select the *Program* choose **All Programs** and click Next.
-3. In the *Protcol and Ports* screen use the inputs in the table below and click Next:
+3. In the *Protocol and Ports* screen use the inputs in the table below and click Next:
![Create a new rule](./media/backup-azure-vms-prepare/firewall-03.png)
diff --git a/articles/backup/backup-azure-vms.md b/articles/backup/backup-azure-vms.md
index b3c5c32bcb1..994b385008e 100644
--- a/articles/backup/backup-azure-vms.md
+++ b/articles/backup/backup-azure-vms.md
@@ -72,7 +72,7 @@ You register an Azure virtual machine to associate the it with the Azure Backup
![register job](./media/backup-azure-vms/register-create-job.png)
- The virtual machine also appears in the list of registered items along with the status of the registration operation.
+ The virtual machine also appears in the list of registered items along with the status of the registration operation.
![Registering status 1](./media/backup-azure-vms/register-status01.png)
diff --git a/articles/backup/backup-configure-vault.md b/articles/backup/backup-configure-vault.md
index b9cfd42309a..2d257ea9b10 100644
--- a/articles/backup/backup-configure-vault.md
+++ b/articles/backup/backup-configure-vault.md
@@ -13,10 +13,10 @@
ms.tgt_pltfrm="na"
ms.devlang="na"
ms.topic="hero-article"
- ms.date="08/21/2015"
+ ms.date="11/03/2015"
ms.author="jimpark"; "aashishr"/>
-# Configure Azure Backup to prepare for back up of Windows Server
+# Prepare your environment to back up Windows machines
This article will lead you through enabling the Azure Backup feature. To back up Windows Server or Windows Client to Azure, you need an Azure account. If you don't have an account, you can create a free trial account in just a couple of minutes. For details, see [Azure Free Trial](https://azure.microsoft.com/pricing/free-trial/).
>[AZURE.NOTE] Previously you needed to create or acquire a X.509 v3 certificate in order to register your backup server. Certificates are still supported, but now to make Azure vault registration with a server easier, you can generate a vault credential right from the Quick Start page.
diff --git a/articles/cloud-services/cloud-services-guestos-update-matrix.md b/articles/cloud-services/cloud-services-guestos-update-matrix.md
index 7427830da4c..3c45afbea68 100644
--- a/articles/cloud-services/cloud-services-guestos-update-matrix.md
+++ b/articles/cloud-services/cloud-services-guestos-update-matrix.md
@@ -13,7 +13,7 @@
ms.topic="article"
ms.tgt_pltfrm="na"
ms.workload="tbd"
- ms.date="10/15/2015"
+ ms.date="11/06/2015"
ms.author="yuemlu"/>
# Azure Guest OS Releases and SDK Compatibility Matrix
@@ -131,9 +131,9 @@ Supports .NET 4.0, 4.5, 4.5.1, 4.5.2 (Note 2)
| Guest OS Version | Configuration String | Release Date | Disable Date | Expiration Date |
| ---------------- | -------------------------- | ---------------------- | ------------ | --- |
-| 4.25 | WA-GUEST-OS-4.25_201510-01 | Projected Nov 13 2015 | Will be updated when 4.27 is released | TBD |
+| 4.25 | WA-GUEST-OS-4.25_201510-01 | Nov 6 2015 | Will be updated when 4.27 is released | TBD |
| 4.24 | WA-GUEST-OS-4.24_201509-01 | Oct 1 2015 | Will be updated when 4.26 is released | TBD |
-| 4.23 | WA-GUEST-OS-4.23_201508-02 | Sep 9 2015 | Will be updated when 4.25 is released | TBD |
+| 4.23 | WA-GUEST-OS-4.23_201508-02 | Sep 9 2015 | Dec 6 2015 | TBD |
| 4.22 | WA-GUEST-OS-4.22_201507-02 | Aug 7 2015 | Nov 1 2015 | TBD |
| 4.21 | WA-GUEST-OS-4.21_201506-01 | July 9 2015 | Oct 9 2015 | TBD |
| 4.20 | WA-GUEST-OS-4.20_201505-02 | June 12 2015 | Sep 7 2015 | TBD |
@@ -158,9 +158,9 @@ Supports .NET 4.0, 4.5
| Guest OS Version | Configuration String | Release Date | Disable Date | Expiration Date |
| ---------------- | -------------------------- | ---------------------- | ------------ | --- |
-| 3.32 | WA-GUEST-OS-3.32_201510-01 | Projected Nov 13 2015 | Will be updated when 3.34 is released | TBD |
+| 3.32 | WA-GUEST-OS-3.32_201510-01 | Nov 6 2015 | Will be updated when 3.34 is released | TBD |
| 3.31 | WA-GUEST-OS-3.31_201509-01 | Oct 1 2015 | Will be updated when 3.33 is released | TBD |
-| 3.30 | WA-GUEST-OS-3.30_201508-02 | Sep 9 2015 | Will be updated when 3.32 is released | TBD |
+| 3.30 | WA-GUEST-OS-3.30_201508-02 | Sep 9 2015 | Dec 6 2015 | TBD |
| 3.29 | WA-GUEST-OS-3.29_201507-02 | Aug 7 2015 | Nov 1 2015 | TBD |
| 3.28 | WA-GUEST-OS-3.28_201506-01 | July 9 2015 | Oct 9 2015 | TBD |
| 3.27 | WA-GUEST-OS-3.27_201505-02 | June 12 2015 | Sep 7 2015 | TBD |
@@ -186,9 +186,9 @@ Supports .NET 3.5, 4.0
| Guest OS Version | Configuration String | Release Date | Disable Date | Expiration Date |
| ---------------- | -------------------------- | ---------------------- | ------------ | --- |
-| 2.44 | WA-GUEST-OS-2.44_201510-01 | Projected Nov 13 2015 | Will be updated when 2.46 is released | TBD |
+| 2.44 | WA-GUEST-OS-2.44_201510-01 | Nov 6 2015 | Will be updated when 2.46 is released | TBD |
| 2.43 | WA-GUEST-OS-2.43_201509-01 | Oct 1 2015 | Will be updated when 2.45 is released | TBD |
-| 2.42 | WA-GUEST-OS-2.42_201508-02 | Sep 9 2015 | Will be updated when 2.44 is released | TBD |
+| 2.42 | WA-GUEST-OS-2.42_201508-02 | Sep 9 2015 | Dec 6 2015 | TBD |
| 2.41 | WA-GUEST-OS-2.41_201507-02 | Aug 7 2015 | Nov 1 2015 | TBD |
| 2.40 | WA-GUEST-OS-2.40_201506-01 | July 9 2015 | Oct 9 2015 | TBD |
| 2.39 | WA-GUEST-OS-2.39_201505-02 | June 12 2015 | Sep 7 2015 | TBD |
diff --git a/articles/cloud-services/cloud-services-performance-testing-visual-studio-profiler.md b/articles/cloud-services/cloud-services-performance-testing-visual-studio-profiler.md
index 9643c698f2a..050f9a093ef 100644
--- a/articles/cloud-services/cloud-services-performance-testing-visual-studio-profiler.md
+++ b/articles/cloud-services/cloud-services-performance-testing-visual-studio-profiler.md
@@ -3,7 +3,7 @@
services="cloud-services"
description="Investigate performance issues in cloud services with the Visual Studio profiler"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"
tags=""
@@ -16,7 +16,7 @@
ms.devlang="multiple"
ms.topic="article"
ms.date="09/14/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Testing the Performance of a Cloud Service Locally in the Azure Compute Emulator Using the Visual Studio Profiler
diff --git a/articles/data-lake-analytics/data-lake-analytics-overview.md b/articles/data-lake-analytics/data-lake-analytics-overview.md
index 7d520d02ed2..8b830bc60d7 100644
--- a/articles/data-lake-analytics/data-lake-analytics-overview.md
+++ b/articles/data-lake-analytics/data-lake-analytics-overview.md
@@ -60,7 +60,7 @@ Azure Data Lake Analytics is a new service, built to make big data analytics eas
- U-SQL & development
- [Get started with Azure Data Lake Analytics U-SQL language](data-lake-analytics-u-sql-get-started.md)
- - [Use U-SQL window functions for Azure Data Lake Aanlytics jobs](data-lake-analytics-use-window-functions.md)
+ - [Use U-SQL window functions for Azure Data Lake Analytics jobs](data-lake-analytics-use-window-functions.md)
- [Develop U-SQL user defined operators for Data Lake Analytics jobs](data-lake-analtyics-u-sql-develop-user-defined-operators.md)
- Management
diff --git a/articles/data-lake-analytics/data-lake-analytics-use-window-functions.md b/articles/data-lake-analytics/data-lake-analytics-use-window-functions.md
index c464684c188..0917e5491e2 100644
--- a/articles/data-lake-analytics/data-lake-analytics-use-window-functions.md
+++ b/articles/data-lake-analytics/data-lake-analytics-use-window-functions.md
@@ -607,10 +607,10 @@ The results:
There are 6 rows in the partition where partition key is “Web” (4th row and down):
- There are 6 rows with the value equal or lower than 500, so the CUME_DIST equals to 6/6=1
-- There are 5 rows with the value equal or lower than 500, so the CUME_DIST equals to 5/6=0.83
-- There are 4 rows with the value equal or lower than 500, so the CUME_DIST equals to 5/6=0.66
-- There are 3 rows with the value equal or lower than 500, so the CUME_DIST equals to 3/6=0.5. There are two rows with the same latency value.
-- There are 1 rows with the value equal or lower than 500, so the CUME_DIST equals to 1/6=1.
+- There are 5 rows with the value equal or lower than 400, so the CUME_DIST equals to 5/6=0.83
+- There are 4 rows with the value equal or lower than 300, so the CUME_DIST equals to 5/6=0.66
+- There are 3 rows with the value equal or lower than 200, so the CUME_DIST equals to 3/6=0.5. There are two rows with the same latency value.
+- There is 1 row with the value equal or lower than 100, so the CUME_DIST equals to 1/6=1.
**Usage notes:**
diff --git a/articles/documentdb/documentdb-indexing-policies.md b/articles/documentdb/documentdb-indexing-policies.md
index 448771ce5ef..f40b413495d 100644
--- a/articles/documentdb/documentdb-indexing-policies.md
+++ b/articles/documentdb/documentdb-indexing-policies.md
@@ -15,7 +15,7 @@
ms.tgt_pltfrm="na"
ms.workload="data-services"
ms.date="10/05/2015"
- ms.author="mimig"/>
+ ms.author="arramac"/>
# DocumentDB indexing policies
diff --git a/articles/documentdb/documentdb-sql-query.md b/articles/documentdb/documentdb-sql-query.md
index 0a950b9b75e..10169d86ee1 100644
--- a/articles/documentdb/documentdb-sql-query.md
+++ b/articles/documentdb/documentdb-sql-query.md
@@ -15,7 +15,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="08/13/2015"
- ms.author="mimig"/>
+ ms.author="arramac"/>
# SQL query within DocumentDB
Microsoft Azure DocumentDB supports querying documents using SQL (Structured Query Language) over hierarchical JSON documents. DocumentDB is truly schema-free. By virtue of its commitment to the JSON data model directly within the database engine, it provides automatic indexing of JSON documents without requiring explicit schema or creation of secondary indexes.
diff --git a/articles/documentdb/documentdb-whitepaper-chappell.md b/articles/documentdb/documentdb-whitepaper-chappell.md
index f054f0d7466..b207eb2857c 100644
--- a/articles/documentdb/documentdb-whitepaper-chappell.md
+++ b/articles/documentdb/documentdb-whitepaper-chappell.md
@@ -13,7 +13,7 @@
ms.tgt_pltfrm="na"
ms.devlang="na"
ms.topic="article"
- ms.date="08/06/2015"
+ ms.date="11/06/2015"
ms.author="mimig"/>
# Introducing DocumentDB - A NoSQL Database for Microsoft Azure
diff --git a/articles/hdinsight/hdinsight-apache-spark-provision-clusters.md b/articles/hdinsight/hdinsight-apache-spark-provision-clusters.md
index f45291ddbd4..15622700596 100644
--- a/articles/hdinsight/hdinsight-apache-spark-provision-clusters.md
+++ b/articles/hdinsight/hdinsight-apache-spark-provision-clusters.md
@@ -14,7 +14,7 @@
ms.topic="article"
ms.tgt_pltfrm="na"
ms.workload="big-data"
- ms.date="09/22/2015"
+ ms.date="11/07/2015"
ms.author="nitinme"/>
# Provision Apache Spark clusters in HDInsight using custom options
@@ -75,7 +75,7 @@ For more information on Virtual Network features, benefits, and capabilities, se
>
> It is highly recommended to designate a single subnet for one cluster.
-## Using the Azure Preview Portal
+##Use the Azure Preview Portal
Spark clusters on HDInsight use an Azure Blob storage container as the default file system. An Azure Storage account located on the same data center is required before you can create an HDInsight cluster. For more information, see [Use Azure Blob Storage with HDInsight](hdinsight-hadoop-use-blob-storage.md). For details on creating an Azure Storage account, see [How to Create a Storage Account][azure-create-storageaccount].
@@ -187,217 +187,24 @@ Spark clusters on HDInsight use an Azure Blob storage container as the default f
* **Cluster Dashboard**: Launches the Cluster Dashboard blade from where you can either launch the cluster dashboard itself, or launch Zeppelin and Jupyter notebooks.
-## Using Azure PowerShell
+## Use Azure PowerShell
-Azure PowerShell is a powerful scripting environment that you can use to control and automate the deployment and management of your workloads in Azure. This section provides instructions on how to provision an HDInsight cluster by using Azure PowerShell. For information on configuring a workstation to run HDInsight Windows PowerShell cmdlets, see [Install and configure Azure PowerShell](../install-configure-powershell.md). For more information on using Azure PowerShell with HDInsight, see [Administer HDInsight using PowerShell](hdinsight-administer-use-powershell.md). For the list of the HDInsight Windows PowerShell cmdlets, see [HDInsight cmdlet reference](https://msdn.microsoft.com/library/azure/dn858087.aspx).
+See [Create HDInsight clusters](hdinsight-provision-clusters.md#create-using-azure-powershell).
+Specify the Spark cluster type switch in the New-AzureRmHDInsightCluster cmdlet:
-The following procedures are needed to provision an HDInsight cluster by using Azure PowerShell:
+ -ClusterType Spark
-- Create an Azure resource group
-- Create an Azure Storage account
-- Create an Azure Blob container
-- Create an HDInsight cluster
+## Use the ARM-based HDInsight .NET SDK
+See [Create HDInsight clusters](hdinsight-provision-clusters.md#create-using-the-hdinsight-net-sdk).
- # Use the new Azure Resource Manager mode
- Switch-AzureMode AzureResourceManager
+Specify the Spark cluster type:
- ###########################################
- # Create required items, if none exist
- ###########################################
+ private const HDInsightClusterType NewClusterType = HDInsightClusterType.Spark;
- # Sign in
- Add-AzureAccount
- # Select the subscription to use
- $subscriptionName = "" # Provide your Subscription Name
- Select-AzureSubscription -SubscriptionName $subscriptionName
-
- # Register your subscription to use HDInsight
- Register-AzureProvider -ProviderNamespace "Microsoft.HDInsight" -Force
-
- # Create an Azure Resource Group
- $resourceGroupName = "" # Provide a Resource Group name
- $location = "" # For example, "West US"
- New-AzureResourceGroup -Name $resourceGroupName -Location $location
-
- # Create an Azure Storage account
- $storageAccountName = "" # Provide a Storage account name
- New-AzureStorageAccount -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName -Location $location -Type Standard_GRS
-
- # Create an Azure Blob Storage container
- $containerName = "" # Provide a container name
- $storageAccountKey = Get-AzureStorageAccountKey -Name $storageAccountName -ResourceGroupName $resourceGroupName | %{ $_.Key1 }
- $destContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
- New-AzureStorageContainer -Name $containerName -Context $destContext
-
- ###########################################
- # Create an HDInsight Cluster
- ###########################################
-
- # Skip these variables if you just created them
- $resourceGroupName = "" # Provide the Resource Group name
- $storageAccountName = "" # Provide the Storage account name
- $containerName = "" # Provide the container name
- $storageAccountKey = Get-AzureStorageAccountKey -Name $storageAccountName -ResourceGroupName $resourceGroupName | %{ $_.Key1 }
-
- # Set these variables
- $clusterName = $containerName # As a best practice, have the same name for the cluster and container
- $clusterNodes = # The number of nodes in the HDInsight cluster
- $credentials = Get-Credential
-
- # The location of the HDInsight cluster. It must be in the same data center as the Storage account.
- $location = Get-AzureStorageAccount -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName | %{$_.Location}
-
- # Create a new HDInsight cluster
- New-AzureHDInsightCluster -ClusterName $clusterName -ResourceGroupName $resourceGroupName -HttpCredential $credentials -Location $location -DefaultStorageAccountName "$storageAccountName.blob.core.windows.net" -DefaultStorageAccountKey $storageAccountKey -DefaultStorageContainer $containerName -ClusterSizeInNodes $clusterNodes -ClusterType Spark
-
-
- ![HDI.CLI.Provision](./media/hdinsight-apache-spark-provision-clusters/HDI.ps.provision.png)
-
-
-## Using the ARM-based HDInsight .NET SDK
-The HDInsight .NET SDK provides .NET client libraries that make it easier to work with HDInsight from a .NET Framework application. Follow the instructions below to create a Visual Studio console application and paste the code for creating a cluster.
-
-**To create a Visual Studio console application**
-
-1. Open Visual Studio 2013.
-
-2. From the **File** menu, click **New**, and then click **Project**.
-
-3. From **New Project**, type or select the following values:
-
-
-
-
Property
-
Value
-
-
Category
-
Templates/Visual C#/Windows
-
-
Template
-
Console Application
-
-
Name
-
CreateHDICluster
-
-
-4. Click **OK** to create the project.
-
-5. From the **Tools** menu, click **Nuget Package Manager**, and then click **Manage Nuget Packages for Solutions**. In the Search text box within the dialog box, search for **HDInsight**. From the results that show up, install the following:
-
- * Microsoft.Azure.Management.HDInsight
- * Microsoft.Azure.Management.HDInsight.Job
-
- Search for Azure Authentication and from the results that show up, install **Microsoft.Azure.Common.Authentication**.
-
-6. From Solution Explorer, double-click **Program.cs** to open it, paste the following code, and provide values for the variables:
-
-
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Linq;
- using System.Security;
- using System.Text;
- using System.Threading.Tasks;
- using Hyak.Common;
- using Microsoft.Azure;
- using Microsoft.Azure.Common.Authentication;
- using Microsoft.Azure.Common.Authentication.Models;
- using Microsoft.Azure.Management.HDInsight;
- using Microsoft.Azure.Management.HDInsight.Job;
- using Microsoft.Azure.Management.HDInsight.Job.Models;
- using Microsoft.Azure.Management.HDInsight.Models;
- using Newtonsoft.Json;
-
-
- namespace CreateHDICluster
- {
- internal class Program
- {
- private static ProfileClient _profileClient;
- private static SubscriptionCloudCredentials _cloudCredentials;
- private static HDInsightManagementClient _hdiManagementClient;
-
- private static Guid SubscriptionId = new Guid("");
- private const string ResourceGroupName = "";
- private const string ExistingStorageName = ".blob.core.windows.net";
- private const string ExistingStorageKey = "";
- private const string ExistingContainer = "";
- private const string NewClusterName = "";
- private const int NewClusterNumNodes = ;
- private const string NewClusterLocation = ""; //should be same as the storage account
- private const OSType NewClusterOsType = OSType.Windows;
- private const HDInsightClusterType NewClusterType = HDInsightClusterType.Spark;
- private const string NewClusterVersion = "3.2";
- private const string NewClusterUsername = "admin";
- private const string NewClusterPassword = "";
-
- private static void Main(string[] args)
- {
- System.Console.WriteLine("Start cluster provisioning");
-
- _profileClient = GetProfile();
- _cloudCredentials = GetCloudCredentials();
- _hdiManagementClient = new HDInsightManagementClient(_cloudCredentials);
-
- System.Console.WriteLine(String.Format("Creating the cluster {0}...", NewClusterName));
- CreateCluster();
- System.Console.WriteLine("Done. Press any key to continue.");
- System.Console.ReadKey(true);
- }
-
- private static void CreateCluster()
- {
- var parameters = new ClusterCreateParameters
- {
- ClusterSizeInNodes = NewClusterNumNodes,
- UserName = NewClusterUsername,
- Password = NewClusterPassword,
- Location = NewClusterLocation,
- DefaultStorageAccountName = ExistingStorageName,
- DefaultStorageAccountKey = ExistingStorageKey,
- DefaultStorageContainer = ExistingContainer,
- ClusterType = NewClusterType,
- OSType = NewClusterOsType
- };
-
- _hdiManagementClient.Clusters.Create(ResourceGroupName, NewClusterName, parameters);
- }
-
- private static ProfileClient GetProfile(string username = null, SecureString password = null)
- {
- var profileClient = new ProfileClient(new AzureProfile());
- var env = profileClient.GetEnvironmentOrDefault(EnvironmentName.AzureCloud);
- var acct = new AzureAccount { Type = AzureAccount.AccountType.User };
-
- if (username != null && password != null)
- acct.Id = username;
-
- profileClient.AddAccountAndLoadSubscriptions(acct, env, password);
-
- return profileClient;
- }
-
- private static SubscriptionCloudCredentials GetCloudCredentials()
- {
- var sub = _profileClient.Profile.Subscriptions.Values.FirstOrDefault(s => s.Id.Equals(SubscriptionId));
-
- Debug.Assert(sub != null, "subscription != null");
- _profileClient.SetSubscriptionAsDefault(sub.Id, sub.Account);
-
- return AzureSession.AuthenticationFactory.GetSubscriptionCloudCredentials(_profileClient.Profile.Context);
- }
-
- }
- }
-
-7. Press **F5** to run the application. A console window should open and display the status of the application. You will also be prompted to enter your Azure account credentials. It can take several minutes to create an HDInsight cluster.
-
-
-## Next steps
+## Next steps
* See [Perform interactive data analysis using Spark in HDInsight with BI tools](hdinsight-apache-spark-use-bi-tools.md) to learn how to use Apache Spark in HDInsight with BI tools like Power BI and Tableau.
* See [Use Spark in HDInsight for building machine learning applications](hdinsight-apache-spark-ipython-notebook-machine-learning.md) to learn how to build machine learning applications using Apache Spark on HDInsight.
diff --git a/articles/hdinsight/hdinsight-provision-clusters.md b/articles/hdinsight/hdinsight-provision-clusters.md
index 5cd97b76bee..7a3c045c3c1 100644
--- a/articles/hdinsight/hdinsight-provision-clusters.md
+++ b/articles/hdinsight/hdinsight-provision-clusters.md
@@ -14,7 +14,7 @@
ms.topic="article"
ms.tgt_pltfrm="na"
ms.workload="big-data"
- ms.date="09/29/2015"
+ ms.date="11/07/2015"
ms.author="jgao"/>
# Create Hadoop clusters in HDInsight
@@ -179,20 +179,25 @@ The clusters can't retain the changes due to re-image. For more information, se
The following is an Azure PowerShell script example of customizing a Hive configuration:
# hive-site.xml configuration
- $hiveConfigValues = new-object 'Microsoft.WindowsAzure.Management.HDInsight.Cmdlet.DataObjects.AzureHDInsightHiveConfiguration'
- $hiveConfigValues.Configuration = @{ "hive.metastore.client.socket.timeout"="90" } #default 60
-
- $config = New-AzureHDInsightClusterConfig `
- -ClusterSizeInNodes $clusterSizeInNodes `
- -ClusterType $clusterType `
- | Set-AzureHDInsightDefaultStorage `
- -StorageAccountName $defaultStorageAccount `
- -StorageAccountKey $defaultStorageAccountKey `
- -StorageContainerName $defaultBlobContainer `
- | Add-AzureHDInsightConfigValues `
- -Hive $hiveConfigValues
-
- New-AzureHDInsightCluster -Name $clusterName -Location $location -Credential $credential -OSType Windows -Config $config
+ $hiveConfigValues = @{ "hive.metastore.client.socket.timeout"="90" }
+
+ $config = New-AzureRmHDInsightClusterConfig `
+ | Set-AzureRmHDInsightDefaultStorage `
+ -StorageAccountName "$defaultStorageAccountName.blob.core.windows.net" `
+ -StorageAccountKey $defaultStorageAccountKey `
+ | Add-AzureRmHDInsightConfigValues `
+ -HiveSite $hiveConfigValues
+
+ New-AzureRmHDInsightCluster `
+ -ResourceGroupName $existingResourceGroupName `
+ -ClusterName $clusterName `
+ -Location $location `
+ -ClusterSizeInNodes $clusterSizeInNodes `
+ -ClusterType Hadoop `
+ -OSType Windows `
+ -Version "3.2" `
+ -HttpCredential $httpCredential `
+ -Config $config
Some more samples on customizing other configuration files:
@@ -203,12 +208,10 @@ Some more samples on customizing other configuration files:
$CoreConfigValues = @{ "ipc.client.connect.max.retries"="60" } #default 50
# mapred-site.xml configuration
- $MapRedConfigValues = new-object 'Microsoft.WindowsAzure.Management.HDInsight.Cmdlet.DataObjects.AzureHDInsightMapReduceConfiguration'
- $MapRedConfigValues.Configuration = @{ "mapreduce.task.timeout"="1200000" } #default 600000
+ $MapRedConfigValues = @{ "mapreduce.task.timeout"="1200000" } #default 600000
# oozie-site.xml configuration
- $OozieConfigValues = new-object 'Microsoft.WindowsAzure.Management.HDInsight.Cmdlet.DataObjects.AzureHDInsightOozieConfiguration'
- $OozieConfigValues.Configuration = @{ "oozie.service.coord.normal.default.timeout"="150" } # default 120
+ $OozieConfigValues = @{ "oozie.service.coord.normal.default.timeout"="150" } # default 120
For more information, see Azim Uddin's blog titled [Customizing HDInsight Cluster creationg](http://blogs.msdn.com/b/bigdatasupport/archive/2014/04/15/customizing-hdinsight-cluster-provisioning-via-powershell-and-net-sdk.aspx).
@@ -355,42 +358,46 @@ You can refer to the [basic configuration options](#basic-configuration-options)
* **Tags** (![tag icon](./media/hdinsight-provision-clusters/tags.png)): Tags allows you to set key/value pairs to define a custom taxonomy of your cloud services. For example, you may create a key named __project__, and then use a common value for all services associated with a specific project.
-## Create using Azure Resource Manager template
+## Create using ARM template
-Azure Resource Manager (ARM) template makes it easier to deploy and redeploy cluster. The following procedure creates a Hadoop cluster on the Linux operating system in the North Europe data center with 4 worker nodes.
+Azure Resource Manager (ARM) template makes it easier to deploy and redeploy cluster. The following procedure creates Linux-based HDInsight cluster.
**To deploy a cluster using ARM template**
-1. Save the json file in the Appendix A to your workstation.
+1. Save the json file in [Appendix A](#appendix-a---arm-template) to your workstation.
2. Make the parameters if needed.
3. Run the template using the following PowerShell script:
- $resourceGroupName = ""
- $Location = ""
-
- $armDeploymentName = ""
- $clusterName = ""
- $clusterStorageAccountName = ""
+ $subscriptionId = ""
+ $Location = "EAST US 2" # for creating ARM group
+
+ $armDeploymentName = "New-HDInsigt-Cluster-" + (Get-Date -Format MMdd)
+ $newClusterName = ""
+ $clusterStorageAccountName = ""
+
# Connect to Azure
- Switch-AzureMode -Name AzureResourceManager
- Add-AzureAccount
-
+ #Login-AzureRmAccount
+ #Select-AzureRmSubscription -SubscriptionId $subscriptionId
+
# Create a resource group
- New-AzureResourceGroup -Name $resourceGroupName -Location $Location
-
+ New-AzureRmResourceGroup -Name $newResourceGroupName -Location $Location
+
# Create cluster and the dependent storage accounge
- $parameters = @{clusterName="$clusterName";clusterStorageAccountName="$clusterStorageAccountName"}
-
- New-AzureResourceGroupDeployment `
- -Name $armDeploymentName `
- -ResourceGroupName $resourceGroupName `
- -TemplateFile E:\Tutorials\HDIARMTemplates\ARMTemplate-create-hadoop-cluster-with-storage.json `
- -TemplateParameterObject $parameters
-
+ $parameters = @{clusterName="$newClusterName";clusterStorageAccountName="$clusterStorageAccountName"}
+
+ New-AzureRmResourceGroupDeployment `
+ -Name $armDeploymentName `
+ -ResourceGroupName $newResourceGroupName `
+ -TemplateFile E:\HDITutorials-ARM\Create-clusters\hdinsight-arm-template.json `
+ -TemplateParameterObject $parameters
+
# List cluster
- Get-AzureHDInsightCluster -ResourceGroupName $resourceGroupName -ClusterName $clusterName
+ Get-AzureRmHDInsightCluster -ResourceGroupName $newResourceGroupName -ClusterName $newClusterName
+ The PowerShell script only configures the cluster name and the storage account name. You can set other values in the ARM template.
+
For deploying an ARM template using other methods, see [Deploy an application with Azure Resource Manager template](resource-group-template-deploy.md).
@@ -405,64 +412,49 @@ The following procedures are needed to create an HDInsight cluster by using Azur
- Create an Azure Blob container
- Create an HDInsight cluster
+ $subscriptionId = ""
+
+ $newResourceGroupName = ""
+ $location = "" # for example, "East US 2"
+ $newDefaultStorageAccountName = ""
+ $newClusterName = ""
+ $clusterSizeInNodes = 1
+
+ ###########################################
+ # login Azure
+ ###########################################
+ Login-AzureRmAccount
+ Select-AzureRmSubscription -SubscriptionId $subscriptionId
+
+ ###########################################
+ # Create the resource group
+ ###########################################
+ New-AzureRmResourceGroup -Name $newRresourceGroupName -Location $location
+
+ ###########################################
+ # Preapre default storage account and container
+ ###########################################
+ New-AzureRmStorageAccount -ResourceGroupName $newResourceGroupName -Name $newDefaultStorageAccountName -Location $location
+
+ $defaultStorageAccountKey = Get-AzureRmStorageAccountKey -ResourceGroupName $newResourceGroupName -Name $newDefaultStorageAccountName | %{ $_.Key1 }
+ $defaultStorageContext = New-AzureStorageContext -StorageAccountName $newDefaultStorageAccountName -StorageAccountKey $defaultStorageAccountKey
+ New-AzureStorageContainer -Name $newClusterName -Context $defaultStorageContext #use the cluster name as the container name
+
+ ###########################################
+ # Create the cluster
+ ###########################################
+ $httpCredential =Get-Credential -Message "Enter the HTTP account credential:"
+ New-AzureRmHDInsightCluster `
+ -ResourceGroupName $newResourceGroupName `
+ -ClusterName $newClusterName `
+ -Location $location `
+ -ClusterSizeInNodes $clusterSizeInNodes `
+ -ClusterType Hadoop `
+ -OSType Windows `
+ -Version "3.2" `
+ -HttpCredential $httpCredential
+
- # Sign in
- Add-AzureAccount
-
- ###########################################
- # Create required items, if none exist
- ###########################################
-
- # Select the subscription to use
- $subscriptionName = "" # Provide your Subscription Name
- Select-AzureSubscription -SubscriptionName $subscriptionName
-
- # Create an Azure Resource Group
- $resourceGroupName = "" # Provide a Resource Group name
- $location = "" # For example, "West US"
- New-AzureResourceGroup -Name $resourceGroupName -Location $location
-
- # Create an Azure Storage account
- $storageAccountName = "" # Provide a Storage account name
- New-AzureStorageAccount -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName -Location $location -Type Standard_GRS
-
- # Create an Azure Blob Storage container
- $containerName = "" # Provide a container name
- $storageAccountKey = Get-AzureStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName | %{ $_.Key1 }
- $destContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
- New-AzureStorageContainer -Name $containerName -Context $destContext
-
- ###########################################
- # Create an HDInsight Cluster
- ###########################################
-
- # Skip these variables if you just created them
- $resourceGroupName = "" # Provide the Resource Group name
- $storageAccountName = "" # Provide the Storage account name
- $containerName = "" # Provide the container name
- $storageAccountKey = Get-AzureStorageAccountKey -Name $storageAccountName -ResourceGroupName $resourceGroupName | %{ $_.Key1 }
-
- # Set these variables
- $clusterName = $containerName # As a best practice, have the same name for the cluster and container
- $clusterNodes = # The number of nodes in the HDInsight cluster
- $credentials = Get-Credential
-
- # The location of the HDInsight cluster. It must be in the same data center as the Storage account.
- $location = Get-AzureStorageAccount -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName | %{$_.Location}
-
- # Create a new HDInsight cluster
- New-AzureHDInsightCluster -ResourceGroupName $resourceGroupName `
- -ClusterName $clusterName `
- -Location $location `
- -ClusterSizeInNodes $clusterNodes `
- -ClusterType Hadoop `
- -OSType Windows `
- -HttpCredential $credentials `
- -DefaultStorageAccountName "$storageAccountName.blob.core.windows.net" `
- -DefaultStorageAccountKey $storageAccountKey `
- -DefaultStorageContainer $containerName
-
- ![HDI.CLI.Provision](./media/hdinsight-provision-clusters/HDI.ps.provision.png)
## Create using the HDInsight .NET SDK
The HDInsight .NET SDK provides .NET client libraries that make it easier to work with HDInsight from a .NET Framework application. Follow the instructions below to create a Visual Studio console application and paste the code for creating a cluster.
@@ -472,113 +464,111 @@ The HDInsight .NET SDK provides .NET client libraries that make it easier to wor
1. Create a new C# console application in Visual Studio.
2. Run the following Nuget command in the Nuget Package Management console.
+ Install-Package Microsoft.Azure.Common.Authentication -pre
Install-Package Microsoft.Azure.Management.HDInsight -Pre
6. From Solution Explorer, double-click **Program.cs** to open it, paste the following code, and provide values for the variables:
-
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Linq;
+ using System;
using System.Security;
- using System.Text;
- using System.Threading.Tasks;
- using Hyak.Common;
using Microsoft.Azure;
using Microsoft.Azure.Common.Authentication;
+ using Microsoft.Azure.Common.Authentication.Factories;
using Microsoft.Azure.Common.Authentication.Models;
using Microsoft.Azure.Management.HDInsight;
- using Microsoft.Azure.Management.HDInsight.Job;
- using Microsoft.Azure.Management.HDInsight.Job.Models;
using Microsoft.Azure.Management.HDInsight.Models;
- using Newtonsoft.Json;
-
- namespace CreateHDICluster
+
+ namespace CreateHDInsightCluster
{
- internal class Program
- {
- private static ProfileClient _profileClient;
- private static SubscriptionCloudCredentials _cloudCredentials;
- private static HDInsightManagementClient _hdiManagementClient;
-
- private static Guid SubscriptionId = new Guid("");
- private const string ResourceGroupName = "";
- private const string ExistingStorageName = ".blob.core.windows.net";
- private const string ExistingStorageKey = "";
- private const string ExistingContainer = "";
- private const string NewClusterName = "";
- private const int NewClusterNumNodes = ;
- private const string NewClusterLocation = ""; //must be same as the storage account
- private const OSType NewClusterOsType = OSType.Windows;
- private const HDInsightClusterType NewClusterType = HDInsightClusterType.Hadoop;
- private const string NewClusterVersion = "3.2";
- private const string NewClusterUsername = "admin";
- private const string NewClusterPassword = "";
-
- private static void Main(string[] args)
- {
- System.Console.WriteLine("Start cluster creation");
-
- _profileClient = GetProfile();
- _cloudCredentials = GetCloudCredentials();
- _hdiManagementClient = new HDInsightManagementClient(_cloudCredentials);
-
- System.Console.WriteLine(String.Format("Creating the cluster {0}...", NewClusterName));
- CreateCluster();
- System.Console.WriteLine("Done. Press any key to continue.");
- System.Console.ReadKey(true);
- }
-
- private static void CreateCluster()
- {
- var parameters = new ClusterCreateParameters
- {
- ClusterSizeInNodes = NewClusterNumNodes,
- UserName = NewClusterUsername,
- Password = NewClusterPassword,
- Location = NewClusterLocation,
- DefaultStorageAccountName = ExistingStorageName,
- DefaultStorageAccountKey = ExistingStorageKey,
- DefaultStorageContainer = ExistingContainer,
- ClusterType = NewClusterType,
- OSType = NewClusterOsType
- };
-
- _hdiManagementClient.Clusters.Create(ResourceGroupName, NewClusterName, parameters);
- }
-
- private static ProfileClient GetProfile(string username = null, SecureString password = null)
- {
- var profileClient = new ProfileClient(new AzureProfile());
- var env = profileClient.GetEnvironmentOrDefault(EnvironmentName.AzureCloud);
- var acct = new AzureAccount { Type = AzureAccount.AccountType.User };
-
- if (username != null && password != null)
- acct.Id = username;
-
- profileClient.AddAccountAndLoadSubscriptions(acct, env, password);
-
- return profileClient;
- }
-
- private static SubscriptionCloudCredentials GetCloudCredentials()
- {
- var sub = _profileClient.Profile.Subscriptions.Values.FirstOrDefault(s => s.Id.Equals(SubscriptionId));
-
- Debug.Assert(sub != null, "subscription != null");
- _profileClient.SetSubscriptionAsDefault(sub.Id, sub.Account);
-
- return AzureSession.AuthenticationFactory.GetSubscriptionCloudCredentials(_profileClient.Profile.Context);
- }
-
- }
+ class Program
+ {
+ private static HDInsightManagementClient _hdiManagementClient;
+
+ private static Guid SubscriptionId = new Guid(" Next steps
+##Next steps
In this article, you have learned several ways to create an HDInsight cluster. To learn more, see the following articles:
* [Get started with Azure HDInsight](hdinsight-get-started.md) - Learn how to start working with your HDInsight cluster
diff --git a/articles/iot-hub/iot-hub-csharp-csharp-c2d.md b/articles/iot-hub/iot-hub-csharp-csharp-c2d.md
index c9065ca9b88..4d1e36be52c 100644
--- a/articles/iot-hub/iot-hub-csharp-csharp-c2d.md
+++ b/articles/iot-hub/iot-hub-csharp-csharp-c2d.md
@@ -20,9 +20,9 @@
## Introduction
-Azure IoT Hub is a fully managed service that enables reliable and secure bi-directional communications between millions of IoT devices and an application backend. The [Get started with IoT Hub] tutorial shows how to create an IoT hub, provision a device identity in it, and code a simulated device that sends device-to-cloud messages.
+Azure IoT Hub is a fully managed service that enables reliable and secure bi-directional communications between millions of IoT devices and an application back end. The [Get started with IoT Hub] tutorial shows how to create an IoT hub, provision a device identity in it, and code a simulated device that sends device-to-cloud messages.
-This tutorial builds on [Get started with IoT Hub] and shows how to send cloud-to-device messages to a single device, how to request delivery acknowledgement (*feedback*) from IoT Hub, and receive it from your application cloud backend.
+This tutorial builds on [Get started with IoT Hub] and shows how to send cloud-to-device messages to a single device, how to request delivery acknowledgement (*feedback*) from IoT Hub, and receive it from your application cloud back end.
You can find more information on cloud-to-device messages in the [IoT Hub Developer Guide][IoT Hub Developer Guide - C2D].
@@ -67,7 +67,7 @@ Additional information on IoT Hub:
[IoT Hub Developer Guide - C2D]: iot-hub-devguide.md#c2d
-[Azure Preview Portal]: https://portal.azure.com/
+[Azure preview portal]: https://portal.azure.com/
[Send Cloud-to-Device messages with IoT Hub]: iot-hub-csharp-csharp-c2d.md
[Process Device-to-Cloud messages]: iot-hub-csharp-csharp-process-d2c.md
diff --git a/articles/iot-hub/iot-hub-csharp-csharp-file-upload.md b/articles/iot-hub/iot-hub-csharp-csharp-file-upload.md
index 46cf79c7bd3..1c7fa3a6e6c 100644
--- a/articles/iot-hub/iot-hub-csharp-csharp-file-upload.md
+++ b/articles/iot-hub/iot-hub-csharp-csharp-file-upload.md
@@ -20,9 +20,9 @@
## Introduction
-Azure IoT Hub is a fully managed service that enables reliable and secure bi-directional communications between millions of IoT devices and an application backend. Previous tutorials ([Get started with IoT Hub] and [Send Cloud-to-Device messages with IoT Hub]) illustrate the basic device-to-cloud and cloud-to-device messaging functionality of IoT Hub, and how to access them from devices and cloud components. [Process Device-to-Cloud messages] described a way to reliably store device-to-cloud messages in Azure blob storage. There are cases, however, where the data coming from devices does not map easily to relatively small device-to-cloud messages. Some exmaples are large files containing images, videos, vibration data sample at high frequency, or containing some form of preprocessed data. These files are usually processed in a batch fashion using tools such as [Azure Data Factory] or the [Hadoop] stack. When uploading a file from a device is preferred to sending events, it is still possible to use IoT Hub security and reliability functionality.
+Azure IoT Hub is a fully managed service that enables reliable and secure bi-directional communications between millions of IoT devices and an application back end. Previous tutorials ([Get started with IoT Hub] and [Send Cloud-to-Device messages with IoT Hub]) illustrate the basic device-to-cloud and cloud-to-device messaging functionality of IoT Hub, and how to access them from devices and cloud components. [Process Device-to-Cloud messages] described a way to reliably store device-to-cloud messages in Azure blob storage. There are cases, however, where the data coming from devices does not map easily to relatively small device-to-cloud messages. Some exmaples are large files containing images, videos, vibration data sample at high frequency, or containing some form of preprocessed data. These files are usually processed in a batch fashion using tools such as [Azure Data Factory] or the [Hadoop] stack. When uploading a file from a device is preferred to sending events, it is still possible to use IoT Hub security and reliability functionality.
-This tutorial builds on the code presented in [Send Cloud-to-Device messages with IoT Hub] to show how to use cloud-to-device messages to securely provide to the device an Azure blob URI to be used to upload the file, and how to use IoT Hub delivery acknowledgments to trigger the processing of the file from your app backend. The advantages of this approach is the reuse of IoT Hub device identity, and of the delivery acknowledgment of cloud-to-device messages to inform the app backend that the file has been uploaded successfully.
+This tutorial builds on the code presented in [Send Cloud-to-Device messages with IoT Hub] to show how to use cloud-to-device messages to securely provide to the device an Azure blob URI to be used to upload the file, and how to use IoT Hub delivery acknowledgments to trigger the processing of the file from your app back end. The advantages of this approach is the reuse of IoT Hub device identity, and of the delivery acknowledgment of cloud-to-device messages to inform the app back end that the file has been uploaded successfully.
> [AZURE.NOTE] The same approach used here can be used to securely have devices download files from the cloud.
@@ -53,7 +53,7 @@ Now you are ready to run the applications.
1. From within Visual Studio, right click your solution and select **Set StartUp projects...**. Select **Multiple startup projects**, then select the **Start** action for both **SimulatedDevice**, and **SendCloudToDevice** apps.
-2. Press **F5**, and you should see all applications start. Select the **SendCloudToDevice** window and press a key. You will see the simulated device output a message when it has uploaded the file, and the **SendCloudToDevice** app show the successful feedback receipt. You can use the [Azure Preview Portal] or Visual Studio Server Explorer to check the presence of the file in your storage account.
+2. Press **F5**, and you should see all applications start. Select the **SendCloudToDevice** window and press a key. You will see the simulated device output a message when it has uploaded the file, and the **SendCloudToDevice** app show the successful feedback receipt. You can use the [Azure preview portal] or Visual Studio Server Explorer to check the presence of the file in your storage account.
![][50]
@@ -80,7 +80,7 @@ Additional information on IoT Hub:
[Send Cloud-to-Device messages with IoT Hub]: iot-hub-csharp-csharp-c2d.md
-[Azure Preview Portal]: https://portal.azure.com/
+[Azure preview portal]: https://portal.azure.com/
[Azure Data Factory]: https://azure.microsoft.com/en-us/documentation/services/data-factory/
[Hadoop]: https://azure.microsoft.com/en-us/documentation/services/hdinsight/
diff --git a/articles/iot-hub/iot-hub-csharp-csharp-getstarted.md b/articles/iot-hub/iot-hub-csharp-csharp-getstarted.md
index b7c9266eda6..5a865b1c0c2 100644
--- a/articles/iot-hub/iot-hub-csharp-csharp-getstarted.md
+++ b/articles/iot-hub/iot-hub-csharp-csharp-getstarted.md
@@ -20,9 +20,9 @@
## Introduction
-Azure IoT Hub is a fully managed service that enables reliable and secure bi-directional communications between millions of IoT devices and an application backend. One of the biggest challenges facing IoT projects is how to reliably and securely connect devices to the application backend. To simplify this scenario, Azure IoT Hub offers reliable device-to-cloud and cloud-to-device hyper-scale messaging, enables secure communications using per-device security credentials and access control, and includes device libraries for the most popular languages and platforms.
+Azure IoT Hub is a fully managed service that enables reliable and secure bi-directional communications between millions of IoT devices and an application back end. One of the biggest challenges facing IoT projects is how to reliably and securely connect devices to the application back end. To simplify this scenario, Azure IoT Hub offers reliable device-to-cloud and cloud-to-device hyper-scale messaging, enables secure communications using per-device security credentials and access control, and includes device libraries for the most popular languages and platforms.
-This tutorial shows how to use the Azure portal to create an IoT hub. It also shows you how to create a device identity in your IoT hub, create a simulated device that sends device-to-cloud messages, and receives these messages from your cloud backend.
+This tutorial shows how to use the Azure preview portal to create an IoT hub. It also shows you how to create a device identity in your IoT hub, create a simulated device that sends device-to-cloud messages, and receives these messages from your cloud back end.
At the end of this tutorial you will have three Windows console applications:
@@ -40,7 +40,7 @@ In order to complete this tutorial you'll need the following:
## Create an IoT hub
-1. Log on to the [Azure Preview Portal].
+1. Log on to the [Azure preview portal].
2. In the jumpbar, click **New**, then click **Internet of Things**, and then click **IoT Hub**.
@@ -115,7 +115,7 @@ Additional information on IoT Hub:
[42]: ./media/iot-hub-csharp-csharp-getstarted/run-apps2.png
-[Azure Preview Portal]: https://portal.azure.com/
+[Azure preview portal]: https://portal.azure.com/
[Send Cloud-to-Device messages with IoT Hub]: iot-hub-csharp-csharp-c2d.md
[Process Device-to-Cloud messages]: iot-hub-csharp-csharp-process-d2c.md
diff --git a/articles/iot-hub/iot-hub-csharp-csharp-process-d2c.md b/articles/iot-hub/iot-hub-csharp-csharp-process-d2c.md
index 523d5ba94f4..a6d59dd3282 100644
--- a/articles/iot-hub/iot-hub-csharp-csharp-process-d2c.md
+++ b/articles/iot-hub/iot-hub-csharp-csharp-process-d2c.md
@@ -20,13 +20,13 @@
## Introduction
-Azure IoT Hub is a fully managed service that enables reliable and secure bi-directional communications between millions of IoT devices and an application backend. Previous tutorials ([Get started with IoT Hub] and [Send Cloud-to-Device messages with IoT Hub]) illustrate the basic device-to-cloud and cloud-to-device messaging functionality of IoT Hub, and how to access them from devices and cloud components.
+Azure IoT Hub is a fully managed service that enables reliable and secure bi-directional communications between millions of IoT devices and an application back end. Previous tutorials ([Get started with IoT Hub] and [Send Cloud-to-Device messages with IoT Hub]) illustrate the basic device-to-cloud and cloud-to-device messaging functionality of IoT Hub, and how to access them from devices and cloud components.
This tutorial builds on the code presented in [Get started with IoT Hub] to present two patterns for processing device-to-cloud messages.
The first pattern is reliable storage of device-to-cloud messages in [Azure Blobs]. This scenario is very common when implementing *cold path* analytics, where data stored in blobs is used as input to analytics driven by tools such as [Azure Data Factory] or the [Hadoop] stack.
-The second pattern is reliable processing of *interactive* device-to-cloud messages. Device-to-cloud messages are called *interactive* when they are immediate triggers for a set of actions in the application backend, as opposed to a *data point* message that is fed into an analytics engine. For instance, an alarm coming from a device that has to trigger the insertion of a ticket in a CRM system is an *interactive* device-to-cloud message, as opposed to a telemetry message containing temperature samples, which is a *data point* message.
+The second pattern is reliable processing of *interactive* device-to-cloud messages. Device-to-cloud messages are called *interactive* when they are immediate triggers for a set of actions in the application back end, as opposed to a *data point* message that is fed into an analytics engine. For instance, an alarm coming from a device that has to trigger the insertion of a ticket in a CRM system is an *interactive* device-to-cloud message, as opposed to a telemetry message containing temperature samples, which is a *data point* message.
Since IoT Hub exposes a Event Hubs-compatible endpoint to receive device-to-cloud messages, this tutorial uses [EventProcessorHost] to host an event processor class, which:
@@ -104,7 +104,7 @@ Additional information on IoT Hub:
[Azure Storage]: https://azure.microsoft.com/en-us/documentation/services/storage/
[Azure Service Bus]: https://azure.microsoft.com/en-us/documentation/services/service-bus/
-[Azure Preview Portal]: https://portal.azure.com/
+[Azure preview portal]: https://portal.azure.com/
[Send Cloud-to-Device messages with IoT Hub]: iot-hub-csharp-csharp-c2d.md
[Process Device-to-Cloud messages]: iot-hub-csharp-csharp-process-d2c.md
diff --git a/articles/iot-hub/iot-hub-devguide.md b/articles/iot-hub/iot-hub-devguide.md
index 033eb5d2e6d..297cadc69ad 100644
--- a/articles/iot-hub/iot-hub-devguide.md
+++ b/articles/iot-hub/iot-hub-devguide.md
@@ -18,7 +18,7 @@
# Azure IoT Hub developer guide
-Azure IoT Hub is a fully managed service that enables reliable and secure bi-directional communications between millions of IoT devices and an application backend.
+Azure IoT Hub is a fully managed service that enables reliable and secure bi-directional communications between millions of IoT devices and an application back end.
Azure IoT Hub enables:
@@ -47,9 +47,9 @@ The following is a description of the endpoints:
* **Device endpoints**: For each device provisioned in the device identity registry, IoT Hub exposes a set of endpoints that are used to communicate to and from that device. These endpoints are currently exposed in both HTTP and [AMQP][lnk-amqp]:
- *Send device-to-cloud messages*. This endpoint is used to send device-to-cloud messages. For more information, see [Device to cloud messaging](#d2c).
- *Receive cloud-to-device messages*. This endpoint is used by the device to receive targeted cloud-to-device messages. For more information, see [Cloud to device messaging](#c2d).
-* **Service endpoints**: Each IoT hub also exposes a set of endpoints used by your application backend (*service*) to communicate with your devices. These endpoints are currently only exposed using the [AMQP][lnk-amqp] protocol.
+* **Service endpoints**: Each IoT hub also exposes a set of endpoints used by your application back end (*service*) to communicate with your devices. These endpoints are currently only exposed using the [AMQP][lnk-amqp] protocol.
- *Receive device-to-cloud messages*. This endpoint is compatible with [Azure Event Hubs][lnk-event-hubs] and can be used to read all the device-to-cloud messages sent by your devices. For more information, see [Device to cloud messaging](#d2c).
- - *Send cloud-to-device messages and receive delivery acknowledgments*. These endpoints enable your application backend to send cloud-to-device reliable messages, and receive the corresponding delivery or expiration acknowledgments. For more information, see [Cloud to device messaging](#c2d).
+ - *Send cloud-to-device messages and receive delivery acknowledgments*. These endpoints enable your application back end to send cloud-to-device reliable messages, and receive the corresponding delivery or expiration acknowledgments. For more information, see [Cloud to device messaging](#c2d).
The [IoT Hub APIs and SDKs][lnk-apis-sdks] article describes the various ways that you can access these endpoints.
@@ -59,7 +59,7 @@ Finally, it is important to note that all IoT Hub endpoints are exposed over [TL
When using the [Azure Service Bus SDK for .NET](https://www.nuget.org/packages/WindowsAzure.ServiceBus) or the [Event Hubs - Event Processor Host][], you can use any IoT Hub connection strings with the correct permissions, and then use `messages/events` as the Event Hub name.
-When using SDKs (or product integrations) that are unaware of IoT Hub, you must retrieve an Event Hubs-compatible endpoint and Event Hub name from the IoT Hub settings in the [Azure Preview Portal][]:
+When using SDKs (or product integrations) that are unaware of IoT Hub, you must retrieve an Event Hubs-compatible endpoint and Event Hub name from the IoT Hub settings in the [Azure preview portal][]:
1. In the IoT hub blade, click **Settings**, then **Messaging**,
2. In the **Device-to-cloud settings** section, you will find an **Event Hub-compatible endpoint**, **Event Hub-compatible name**, and **Partitions** box.
@@ -193,7 +193,7 @@ IoT Hub uses the following set of *permissions* to grant access to each IoT hub'
Permissions are granted in the following ways:
-* **Hub-level shared access policies**. *Shared access policies* can grant any combination of the permissions listed in the previous section. You can define policies in the [Azure Management Portal][lnk-management-portal] or programmatically using the [Azure IoT Hub Resource provider APIs][lnk-resource-provider-apis]. A newly created IoT hub has the following default policies:
+* **Hub-level shared access policies**. *Shared access policies* can grant any combination of the permissions listed in the previous section. You can define policies in the [Azure preview portal][lnk-management-portal] or programmatically using the [Azure IoT Hub Resource provider APIs][lnk-resource-provider-apis]. A newly created IoT hub has the following default policies:
- *iothubowner*: Policy with all permissions
- *service*: Policy with **ServiceConnect** permission
@@ -254,7 +254,7 @@ In both cases, the password field contains the token, as described in the [Token
#### SASL PLAIN compared to CBS
-When using SASL PLAIN, a client connecting to an IoT hub can use a single token for each TCP connection. When the token expires, the TCP connection is disconnected from the service, triggering a reconnect. This behavior, while not problematic for an application backend component, is very damaging for a device-side application for the following reasons:
+When using SASL PLAIN, a client connecting to an IoT hub can use a single token for each TCP connection. When the token expires, the TCP connection is disconnected from the service, triggering a reconnect. This behavior, while not problematic for an application back end component, is very damaging for a device-side application for the following reasons:
* Gateways usually connect on behalf of many devices. When using SASL PLAIN, they have to create a distinct TCP connection for each device connecting to an IoT hub. This considerably increases the consumption of power and networking resources and increases the latency of each device connection.
* Resource-constrained devices will be mostly impacted by the increased use of resources to reconnect after each token expiration.
@@ -267,7 +267,7 @@ This mechanism is similar to the [Event Hubs publisher policy][lnk-event-hubs-pu
## Messaging
-IoT Hub provides messaging primitives to communicate from an application backend (*service* or *cloud*) to devices, and vice-versa. We refer to these functionalities as [Device-to-Cloud](#d2c) and [Cloud-to-Device](#c2d).
+IoT Hub provides messaging primitives to communicate from an application back end (*service* or *cloud*) to devices, and vice-versa. We refer to these functionalities as [Device-to-Cloud](#d2c) and [Cloud-to-Device](#c2d).
Core properties of IoT Hub messaging functionality are the reliability and durability of messages. This enables resilience to intermittent connectivity on the device side, and to load spikes in event processing on the cloud side. IoT Hub implements *at least once* delivery guarantees for both D2C and C2D messaging.
@@ -339,7 +339,7 @@ For details about how to use device-to-cloud messaging, see [IoT Hub APIs and SD
#### Non-telemetry traffic
-In many cases, devices send not only telemetry data points to the application backend, but also *interactive* messages and requests that require execution and handling from the application business logic layer. Good examples are critical alerts that have to trigger a specific action in the backend, or device replies to commands.
+In many cases, devices send not only telemetry data points to the application back end, but also *interactive* messages and requests that require execution and handling from the application business logic layer. Good examples are critical alerts that have to trigger a specific action in the back end, or device replies to commands.
See the [Device-to-cloud processing][lnk-guidance-d2c-processing] section of "IoT Hub Guidance" for more information about the best way to process this kind of messages.
@@ -352,7 +352,7 @@ An IoT hub exposes the following properties to control D2C messaging.
Also, analogously to Event Hubs, IoT Hub allows the management of Consumer Groups on the device-to-cloud receive endpoint.
-You can modify all these properties using either the [Azure portal][lnk-management-portal], or programmatically through the [Azure IoT Hub - Resource Provider APIs][lnk-resource-provider-apis].
+You can modify all these properties using either the [Azure preview portal][lnk-management-portal], or programmatically through the [Azure IoT Hub - Resource Provider APIs][lnk-resource-provider-apis].
#### Anti-spoofing properties
@@ -394,7 +394,7 @@ Since a thread could fail to process a message without notifying IoT Hub, messag
For a tutorial on cloud-to-device messages, see [Get started with Azure IoT Hub cloud-to-device messages][lnk-getstarted-c2d-tutorial]. For reference topics on how different APIs and SDKs expose the cloud-to-device functionality, see [IoT Hub APIs and SDKs][lnk-apis-sdks].
-> [AZURE.NOTE] Typically, cloud-to-device messages should be completed whenever the loss of the message would not affect the application logic. This could happen in many different scenarios; for example: the message content has been successfully persisted on local storage, or an operation has been successfully executed, or the message is carrying transient information whose loss would not impact the functionality of the application. Sometimes, for long running tasks, it is common to complete the cloud-to-device message after having persisted the task description on local storage, and then notify the application backend with one or more device-to-cloud message at various stages of progress of the task.
+> [AZURE.NOTE] Typically, cloud-to-device messages should be completed whenever the loss of the message would not affect the application logic. This could happen in many different scenarios; for example: the message content has been successfully persisted on local storage, or an operation has been successfully executed, or the message is carrying transient information whose loss would not impact the functionality of the application. Sometimes, for long running tasks, it is common to complete the cloud-to-device message after having persisted the task description on local storage, and then notify the application back end with one or more device-to-cloud message at various stages of progress of the task.
#### Time to live
@@ -420,7 +420,6 @@ The body is a JSON-serialized array of records, each with the following properti
| -------- | ----------- |
| EnqueuedTimeUtc | Timestamp indicating when the outcome of the message happened. For example, the device completed or the message expired. |
| OriginalMessageId | **MessageId** of the cloud-to-device message to which this feedback information pertains. |
-message was rejected. |
| Description | String values for the previous outcomes. |
| DeviceId | **DeviceId** of the target device of the cloud-to-device message to which this piece of feedback pertains. |
| DeviceGenerationId | **DeviceGenerationId** of the target device of the cloud-to-device message to which this piece of feedback pertains. |
@@ -431,12 +430,11 @@ message was rejected. |
[
{
- "CorrelationId": "0987654321",
- "EnqueuedTime": "2015-07-28T16:24:48.789Z",
- "StatusCode": "0",
- "Description": "Success",
- "DeviceId": "123",
- "DeviceGenerationId": "abcdefghijklmnopqrstuvwxyz"
+ "originalMessageId": "0987654321",
+ "description": "Success",
+ "deviceGenerationId": "abcdefghijklmnopqrstuvwxyz",
+ "deviceId": "123",
+ "enqueuedTimeUtc": "2015-07-28T16:24:48.789Z"
},
{
...
@@ -493,7 +491,7 @@ Now that you've seen an overview of developing for IoT Hub, follow these links t
[Event Hubs - Event Processor Host]: http://blogs.msdn.com/b/servicebus/archive/2015/01/16/event-processor-host-best-practices-part-1.aspx
-[Azure Preview Portal]: https://ms.portal.azure.com
+[Azure preview portal]: https://portal.azure.com
[img-summary]: ./media/iot-hub-devguide/summary.png
[img-endpoints]: ./media/iot-hub-devguide/endpoints.png
diff --git a/articles/iot-hub/iot-hub-device-sdk-c-iothubclient.md b/articles/iot-hub/iot-hub-device-sdk-c-iothubclient.md
index 988ccfcc611..2db8488a148 100644
--- a/articles/iot-hub/iot-hub-device-sdk-c-iothubclient.md
+++ b/articles/iot-hub/iot-hub-device-sdk-c-iothubclient.md
@@ -237,7 +237,7 @@ Basically, the arguments of **IoTHubClient\_CreateFromConnectionString** are the
> HostName=IOTHUBNAME.IOTHUBSUFFIX;DeviceId=DEVICEID;SharedAccessKey=SHAREDACCESSKEY
-There are basically four pieces of information here: IoT Hub name, IoT Hub suffix, device id, and shared access key. You get the fully qualified domain name (FQDN) of a IoT hub when you create your IoT hub instance in the Azure Management Portal— this gives you the IoT hub name (the first part of the FQDN) and the IoT hub Suffix (the rest of the FQDN). You get the Device Id and the Shared Access Key when you register your device with IoT Hub (as described in the [previous article](iot-hub-device-sdk-c-intro.md)).
+There are basically four pieces of information here: IoT Hub name, IoT Hub suffix, device id, and shared access key. You get the fully qualified domain name (FQDN) of a IoT hub when you create your IoT hub instance in the Azure preview portal — this gives you the IoT hub name (the first part of the FQDN) and the IoT hub Suffix (the rest of the FQDN). You get the Device Id and the Shared Access Key when you register your device with IoT Hub (as described in the [previous article](iot-hub-device-sdk-c-intro.md)).
**IoTHubClient\_CreateFromConnectionString** gives you one way to initialize the library. But if you prefer, you can create a new **IOTHUB\_CLIENT\_HANDLE** by using these individual parameters rather than the connection string. This is done with the following code:
diff --git a/articles/iot-hub/iot-hub-guidance.md b/articles/iot-hub/iot-hub-guidance.md
index ad58b7192a8..4cab59cfde4 100644
--- a/articles/iot-hub/iot-hub-guidance.md
+++ b/articles/iot-hub/iot-hub-guidance.md
@@ -58,7 +58,7 @@ These are the main steps of the token service pattern.
3. The token service returns a token, created as per [IoT Hub Developer Guide - Security][], using `/devices/{deviceId}` as `resourceURI`, with `deviceId` as the device being authenticated.
4. The device uses the token directly with the IoT hub.
-The token service can set the token expiration as desired. At expiration, the IoT hub servers the connection, and the device must request a new token to the token service. Clearly a short expiration time will increase the load on both the device and the token service.
+The token service can set the token expiration as desired. At expiration, the IoT hub severs the connection, and the device must request a new token to the token service. Clearly a short expiration time will increase the load on both the device and the token service.
It is worth specifying that for the device to be able to connect, the device identity still must be created in the IoT hub. This also means that per-device access control (by disabling device identities as per [IoT Hub Developer Guide - identity registry][]) is still functional, even if the device authenticates with a token. This mitigates the existence of long-lasting tokens.
diff --git a/articles/iot-hub/iot-hub-ha-dr.md b/articles/iot-hub/iot-hub-ha-dr.md
index 548bb435880..9bf2ca3f868 100644
--- a/articles/iot-hub/iot-hub-ha-dr.md
+++ b/articles/iot-hub/iot-hub-ha-dr.md
@@ -24,7 +24,7 @@ As an Azure service, IoT Hub provides high availability (HA) using redundancies
A complete treatment of deployment topologies in IoT solutions is outside the scope of this section, but, for the purpose of high availability and disaster recovery we will consider the *regional failover* deployment model.
-In a regional failover model, the solution backend is running primarily in one datacenter location, but an additional IoT hub and backend will be deployed in an additional datacenter region for failover purposes, in case the IoT hub in the primary datacenter suffers an outage or the network connectivity from the device to the primary datacenter is somehow interrupted. Devices use a secondary service endpoint whenever the primary gateway cannot be reached. With a cross-region failover capability, the solution availability can be improved beyond the high availability of a single region.
+In a regional failover model, the solution back end is running primarily in one datacenter location, but an additional IoT hub and back end will be deployed in an additional datacenter region for failover purposes, in case the IoT hub in the primary datacenter suffers an outage or the network connectivity from the device to the primary datacenter is somehow interrupted. Devices use a secondary service endpoint whenever the primary gateway cannot be reached. With a cross-region failover capability, the solution availability can be improved beyond the high availability of a single region.
At a high level, in order to implement a regional failover model with IoT Hub, you will need the following.
diff --git a/articles/iot-hub/iot-hub-itpro-info.md b/articles/iot-hub/iot-hub-itpro-info.md
index 28b43b6a8de..b28562371ed 100644
--- a/articles/iot-hub/iot-hub-itpro-info.md
+++ b/articles/iot-hub/iot-hub-itpro-info.md
@@ -43,7 +43,7 @@ This article contains specific information for IT Pros and developers configurin
- [What is Azure IoT Hub?][lnk-iothub]
- The section ["Security" in the Azure IoT Hub developer guide][lnk-devguide] provides additional information about the tokens and permission system in IoT Hub.
-- [Manage IoT Hub through the Azure Portal][lnk-manage-portal] describes how to use the Azure portal to manage your IoT hub.
+- [Manage IoT Hub through the Azure preview portal][lnk-manage-portal] describes how to use the Azure preview portal to manage your IoT hub.
[lnk-iothub]: iot-hub-what-is-iot-hub.md
[lnk-devguide]: iot-hub-devguide.md#security
diff --git a/articles/iot-hub/iot-hub-manage-through-portal.md b/articles/iot-hub/iot-hub-manage-through-portal.md
index bc5d5f027f2..5a509167539 100644
--- a/articles/iot-hub/iot-hub-manage-through-portal.md
+++ b/articles/iot-hub/iot-hub-manage-through-portal.md
@@ -1,6 +1,6 @@
-# Manage IoT hubs through the Azure portal
+# Manage IoT hubs through the Azure preview portal
## Introduction
-This article describes how to get started with Azure IoT Hub through the Azure portal, how to find IoT hubs, and how to create and manage IoT hubs.
+This article describes how to get started with Azure IoT Hub through the Azure preview portal, how to find IoT hubs, and how to create and manage IoT hubs.
## Where to find IoT hubs
@@ -40,7 +40,7 @@ You can create an IoT hub using the following methods.
### Choose the name of the IoT hub
-In order to create an IoT hub, you must name the hub. Note that this name must be unique across the hubs. No duplication of hubs is allowed on the backend, so it is recommended that this hub be named as uniquely as possible.
+In order to create an IoT hub, you must name the hub. Note that this name must be unique across the hubs. No duplication of hubs is allowed on the back end, so it is recommended that this hub be named as uniquely as possible.
### Choose the pricing tier
@@ -76,9 +76,9 @@ The location option provides a list of the regions in which IoT Hub is offered.
### Create the IoT hub
-When all previous steps are complete, the IoT hub is ready to be created. Click **Create** to start the backend process of creating this IoT hub with the specific options, and to deploy it to the location specified.
+When all previous steps are complete, the IoT hub is ready to be created. Click **Create** to start the back end process of creating this IoT hub with the specific options, and to deploy it to the location specified.
-Please note that it can take a few minutes for the IoT hub to be created as it takes time for the backend deployment to occur in the appropriate location servers.
+Please note that it can take a few minutes for the IoT hub to be created as it takes time for the back end deployment to occur in the appropriate location servers.
## Change the settings of the IoT hub
diff --git a/articles/iot-hub/iot-hub-scaling.md b/articles/iot-hub/iot-hub-scaling.md
index 90648ee1c72..f504730bfd9 100644
--- a/articles/iot-hub/iot-hub-scaling.md
+++ b/articles/iot-hub/iot-hub-scaling.md
@@ -41,7 +41,7 @@ Device-to-cloud messages follow these sustained throughput guidelines.
| S1 | up to 8kb/hour per device | average of 4 messages/hour per device |
| S2 | up to 4kb/min per device | average of 2 messages/min per device |
-When receiving device-to-cloud messages the application backend can expect the following maximum throughput (across all readers).
+When receiving device-to-cloud messages the application back end can expect the following maximum throughput (across all readers).
| Tier | Sustained throughput |
| ---- | -------------------- |
diff --git a/articles/iot-hub/iot-hub-what-is-azure-iot.md b/articles/iot-hub/iot-hub-what-is-azure-iot.md
index 5ba8e4aff51..f7ef11418dc 100644
--- a/articles/iot-hub/iot-hub-what-is-azure-iot.md
+++ b/articles/iot-hub/iot-hub-what-is-azure-iot.md
@@ -20,7 +20,7 @@
## Next steps
-You can use Azure IoT Hub, an Azure service that receives telemetry at scale from your devices and routes that data to a stream event processor, to implement your own solution backend. IoT Hub can also send cloud-to-device commands to specific devices. In addition, IoT Hub includes a device identity registry that you can use to provision devices and to manage which devices may connect to the hub. To learn more, see:
+You can use Azure IoT Hub, an Azure service that receives telemetry at scale from your devices and routes that data to a stream event processor, to implement your own solution back end. IoT Hub can also send cloud-to-device commands to specific devices. In addition, IoT Hub includes a device identity registry that you can use to provision devices and to manage which devices may connect to the hub. To learn more, see:
- [What is IoT Hub?][lnk-iot-hub]
- [Get started with IoT Hub][lnk-getstarted]
diff --git a/articles/iot-hub/iot-hub-what-is-iot-hub.md b/articles/iot-hub/iot-hub-what-is-iot-hub.md
index 5e7471c676c..c7dbb772b3c 100644
--- a/articles/iot-hub/iot-hub-what-is-iot-hub.md
+++ b/articles/iot-hub/iot-hub-what-is-iot-hub.md
@@ -1,9 +1,9 @@
@@ -13,24 +13,24 @@
ms.topic="article"
ms.tgt_pltfrm="na"
ms.workload="na"
- ms.date="11/05/2015"
- ms.author="elioda"/>
+ ms.date="11/09/2015"
+ ms.author="dobett"/>
# What is Azure IoT Hub?
Welcome to Azure IoT Hub. This article provides an overview of Azure IoT Hub and describes why you may want to use this service when you implement an IoT solution.
-Azure IoT Hub is a fully managed service that enables reliable and secure bi-directional communications between millions of IoT devices and a solution backend. Azure IoT Hub offers reliable device-to-cloud and cloud-to-device messaging at scale, enables secure communications using per-device security credentials and access control, and includes device libraries for the most popular languages and platforms.
+Azure IoT Hub is a fully managed service that enables reliable and secure bi-directional communications between millions of IoT devices and a solution back end. Azure IoT Hub offers reliable device-to-cloud and cloud-to-device messaging at scale, enables secure communications using per-device security credentials and access control, and includes device libraries for the most popular languages and platforms.
![IoT Hub as cloud gateway?][img-architecture]
## IoT device connectivity challenges
-IoT Hub and the device libraries help you to meet the challenges of how to reliably and securely connect devices to the solution backend. IoT devices:
+IoT Hub and the device libraries help you to meet the challenges of how to reliably and securely connect devices to the solution back end. IoT devices:
- Are often embedded systems with no human operator.
- Can be located in remote locations, where physical access is very expensive.
-- May only be reachable through the solution backend.
+- May only be reachable through the solution back end.
- May have limited power and processing resources.
- May have intermittent, slow, or expensive network connectivity.
- May need to use proprietary, custom, or industry specific application protocols.
@@ -42,11 +42,11 @@ In addition to the requirements above, any IoT solution must also deliver scale,
Azure IoT Hub addresses the device connectivity challenges in the following ways:
-- **Per-device authentication and secure connectivity**. You can provision each device with its own security key to enable it to connect to IoT Hub. A solution backend can whitelist and blacklist individual devices, enabling complete control over device access.
+- **Per-device authentication and secure connectivity**. You can provision each device with its own security key to enable it to connect to IoT Hub. A solution back end can whitelist and blacklist individual devices, enabling complete control over device access.
- **An extensive set of device libraries**. Azure IoT device SDKs are available and supported for a variety of languages and platforms: C for many Linux distributions, Windows, and RTOS. Azure IoT device SDKs also support managed languages such as C#, Java, and JavaScript.
-- **IoT protocols and extensibility**. If your solution cannot use the device libraries, IoT Hub exposes a public protocol that enables devices to natively use the HTTP 1.1 and AMQP 1.0 protocols. You can also extend IoT Hub to provide support for MQTT v3.1.1 with the [Azure IoT Protocol Gateway][protocol-gateway] open source component. You can run Azure IoT Protocol Gateway in the cloud or on premise and extend it to support custom protocols.
+- **IoT protocols and extensibility**. If your solution cannot use the device libraries, IoT Hub exposes a public protocol that enables devices to natively use the HTTP 1.1 and AMQP 1.0 protocols. You can also extend IoT Hub to provide support for MQTT v3.1.1 with the [Azure IoT Protocol Gateway][protocol-gateway] open source component. You can run Azure IoT Protocol Gateway in the cloud or on-premises and extend it to support custom protocols.
- **Scale**. Azure IoT Hub scales to millions of simultaneously connected devices, and millions of events per seconds.
@@ -54,23 +54,23 @@ These benefits are generic to many communication patterns. IoT Hub currently ena
- **Event-based device-to-cloud ingestion.** IoT Hub can reliably receive millions of events per second from your devices and process them on your hot path using an event processor engine, or store them on your cold path for analysis. IoT Hub retains the event data for up to 7 days to guarantee reliable processing and to absorb peaks in the load.
-- **Reliable cloud-to-device messaging (or *commands*).** The solution backend can use IoT Hub to send messages with an at-least-once delivery guarantee to individual devices. Each message has an individual time-to-live setting, and the backend can request both delivery and expiration receipts to ensure full visibility into the life cycle of a cloud-to-device message. This enables you to implement business logic that includes operations that run on devices.
+- **Reliable cloud-to-device messaging (or *commands*).** The solution back end can use IoT Hub to send messages with an at-least-once delivery guarantee to individual devices. Each message has an individual time-to-live setting, and the back end can request both delivery and expiration receipts to ensure full visibility into the life cycle of a cloud-to-device message. This enables you to implement business logic that includes operations that run on devices.
You can also implement other common patterns, such as file upload and download, by taking advantage of IoT-specific features in IoT Hub, such as consistent device identity management, connectivity monitoring, and scale.
## How does IoT Hub work?
-Azure IoT Hub implements the [Service Assisted Communication][lnk-service-assisted-pattern] pattern to mediate the interactions between your devices and your solution backend. The goal of service assisted communication is to establish trustworthy, bi-directional communication paths between a control system such as IoT Hub and special-purpose devices deployed in untrusted physical space. The pattern establishes the following principles:
+Azure IoT Hub implements the [Service Assisted Communication][lnk-service-assisted-pattern] pattern to mediate the interactions between your devices and your solution back end. The goal of service assisted communication is to establish trustworthy, bi-directional communication paths between a control system such as IoT Hub and special-purpose devices deployed in untrusted physical space. The pattern establishes the following principles:
-- Security trumps all other capabilities.
-- Devices do not accept unsolicited network information. A device establishes all connections and routes in an outbound-only fashion. For a device to receive a command from the backend, the device must regularly initiate a connection to check for any pending commands to process.
+- Security takes precedence over all other capabilities.
+- Devices do not accept unsolicited network information. A device establishes all connections and routes in an outbound-only fashion. For a device to receive a command from the back end, the device must regularly initiate a connection to check for any pending commands to process.
- Devices should only connect to or establish routes to well-known services, such as an IoT hub, with which they are peered.
- The communication path between device and service or device and gateway is secured at the application protocol layer.
- System-level authorization and authentication is based on per-device identities and makes access credentials and permissions near-instantly revocable.
- Bi-directional communication for devices that connect sporadically due to power or connectivity concerns is facilitated by holding commands and device notifications until a device connects to receive them. IoT Hub maintains device specific queues for the commands it sends.
- Application payload data is secured separately for protected transit through gateways to a particular service.
-The service-assisted communication pattern has been used successfully in the mobile industry at enormous scale to implement push notification services such as [Windows Notification Service](https://msdn.microsoft.com/library/windows/apps/mt187203.aspx), [Google Cloud Messaging](https://developers.google.com/cloud-messaging/), and [Apple Push Notification Service](http://go.microsoft.com/fwlink/p/?linkid=272584&clcid=0x409).
+The service-assisted communication pattern has been used successfully in the mobile industry at enormous scale to implement push notification services such as [Windows Notification Service](https://msdn.microsoft.com/library/windows/apps/mt187203.aspx), [Google Cloud Messaging](https://developers.google.com/cloud-messaging/), and [Apple Push Notification Service](https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html#//apple_ref/doc/uid/TP40008194-CH100-SW9).
## Next steps
@@ -84,7 +84,6 @@ To learn more about Azure IoT Hub, see these links:
[Connect your device]: https://azure.microsoft.com/develop/iot/
[Process device-to-cloud messages]: iot-hub-csharp-csharp-process-d2c.md
[protocol-gateway]: https://github.com/Azure/azure-iot-protocol-gateway/blob/master/README.md
-[img-why-use]: media/iot-hub-what-is-iot-hub/image1.png
[img-architecture]: media/iot-hub-what-is-iot-hub/hubarchitecture.png
[lnk-service-assisted-pattern]: http://blogs.msdn.com/b/clemensv/archive/2014/02/10/service-assisted-communication-for-connected-devices.aspx "Service Assisted Communication, blog post by Clemens Vasters"
diff --git a/articles/iot-hub/media/iot-hub-what-is-iot-hub/image1.png b/articles/iot-hub/media/iot-hub-what-is-iot-hub/image1.png
deleted file mode 100644
index 72a4b1a1d81..00000000000
Binary files a/articles/iot-hub/media/iot-hub-what-is-iot-hub/image1.png and /dev/null differ
diff --git a/articles/iot-suite/iot-suite-guidance-on-customizing-preconfigured-solutions.md b/articles/iot-suite/iot-suite-guidance-on-customizing-preconfigured-solutions.md
index 70a991b9602..b18ce2cc26f 100644
--- a/articles/iot-suite/iot-suite-guidance-on-customizing-preconfigured-solutions.md
+++ b/articles/iot-suite/iot-suite-guidance-on-customizing-preconfigured-solutions.md
@@ -45,7 +45,7 @@ The second job operates on the Device-to-Threshold values created in the **Rules
## Adding your own rules
-In addition to changing the preconfigured Azure Stream Analytics jobs, you can use the Azure portal to add new jobs or add new queries to existing jobs.
+In addition to changing the preconfigured Azure Stream Analytics jobs, you can use the Azure preview portal to add new jobs or add new queries to existing jobs.
## Customizing devices
diff --git a/articles/iot-suite/iot-suite-remote-monitoring-sample-walkthrough.md b/articles/iot-suite/iot-suite-remote-monitoring-sample-walkthrough.md
index 65e55a8fc76..10203036d29 100644
--- a/articles/iot-suite/iot-suite-remote-monitoring-sample-walkthrough.md
+++ b/articles/iot-suite/iot-suite-remote-monitoring-sample-walkthrough.md
@@ -108,7 +108,7 @@ This web app enables you to:
- View the command history for a device.
### Observing the behavior of the cloud solution
-You can view your provisioned resources by going to [Azure Management Portal](https://portal.azure.com) and navigating to the resource group with the solution name you specified.
+You can view your provisioned resources by going to [Azure preview portal](https://portal.azure.com) and navigating to the resource group with the solution name you specified.
![](media/iot-suite-remote-monitoring-sample-walkthrough/azureportal_01.png)
diff --git a/articles/iot-suite/iot-suite-what-are-preconfigured-solutions.md b/articles/iot-suite/iot-suite-what-are-preconfigured-solutions.md
index ad79101bf08..2cccaa56523 100644
--- a/articles/iot-suite/iot-suite-what-are-preconfigured-solutions.md
+++ b/articles/iot-suite/iot-suite-what-are-preconfigured-solutions.md
@@ -59,7 +59,7 @@ An IoT hub receives telemetry data from the coolers at a single end-point and ma
The IoT hub exposes the telemetry data it receives through a consumer group end-point.
-The IoT Hub instance in this preconfigured solution corresponds to the **IoT backend application** in a typical IoT solution architecture.
+The IoT Hub instance in this preconfigured solution corresponds to the **IoT back end application** in a typical IoT solution architecture.
### Azure Stream Analytics
diff --git a/articles/load-balancer/load-balancer-get-started-internet-arm-cli.md b/articles/load-balancer/load-balancer-get-started-internet-arm-cli.md
index de18015853e..325242f1235 100644
--- a/articles/load-balancer/load-balancer-get-started-internet-arm-cli.md
+++ b/articles/load-balancer/load-balancer-get-started-internet-arm-cli.md
@@ -110,7 +110,7 @@ The example below creates the following items.
- a load balancer rule to balance all incoming traffic on port 80 to port 80 on the addresses in the back end pool.
- a probe rule which will check the health status on a page named *HealthProbe.aspx*.
-1NAT rules are associated to a specific instance virtual machine behind the load balancer. The network traffic coming to ports 3341 will be sent to a specific virtual machine RDP port associated with the NAT rule.
+1 NAT rules are associated to a specific virtual machine instance behind the load balancer. The incoming network traffic to port 3341 will be sent to a specific virtual machine on port 3389 associated with a NAT rule in the example below. You have to choose a protocol for NAT rule, UDP or TCP. Both protocols can't be assigned to the same port.
### Step 1
diff --git a/articles/load-balancer/load-balancer-get-started-internet-arm-ps.md b/articles/load-balancer/load-balancer-get-started-internet-arm-ps.md
index a442992a6b8..fbcab6d41bb 100644
--- a/articles/load-balancer/load-balancer-get-started-internet-arm-ps.md
+++ b/articles/load-balancer/load-balancer-get-started-internet-arm-ps.md
@@ -134,7 +134,7 @@ The example below creates the following items:
- a load balancer that uses all the objects above.
-1 NAT rules are associated to a specific instance virtual machine behind the load balancer. The network traffic coming to ports 3341 will be sent to a specific virtual machine RDP port associated with the NAT rule.
+1 NAT rules are associated to a specific virtual machine instance behind the load balancer. The incoming network traffic to port 3341 will be sent to a specific virtual machine on port 3389 associated with a NAT rule in the example below. You have to choose a protocol for NAT rule, UDP or TCP. Both protocols can't be assigned to the same port.
### Step 1
diff --git a/articles/load-balancer/load-balancer-get-started-internet-classic-cli.md b/articles/load-balancer/load-balancer-get-started-internet-classic-cli.md
new file mode 100644
index 00000000000..bd694f51b78
--- /dev/null
+++ b/articles/load-balancer/load-balancer-get-started-internet-classic-cli.md
@@ -0,0 +1,142 @@
+
+
+
+# Get started creating Internet facing load balancer (classic) in the Azure CLI
+
+[AZURE.INCLUDE [load-balancer-get-started-internet-classic-selectors-include.md](../../includes/load-balancer-get-started-internet-classic-selectors-include.md)]
+
+[AZURE.INCLUDE [load-balancer-get-started-internet-intro-include.md](../../includes/load-balancer-get-started-internet-intro-include.md)]
+
+[AZURE.INCLUDE [azure-arm-classic-important-include](../../includes/azure-arm-classic-important-include.md)] This article covers the classic deployment model. You can also [Learn how to create an Internet facing load balancer using Azure Resource Manager](load-balancer-get-started-internet-arm-cli.md).
+
+[AZURE.INCLUDE [load-balancer-get-started-internet-scenario-include.md](../../includes/load-balancer-get-started-internet-scenario-include.md)]
+
+
+## Step by step creating an Internet facing load balancer using CLI
+
+This guide shows how to create an Internet load balancer based on the scenario above.
+
+1. If you have never used Azure CLI, see [Install and Configure the Azure CLI](xplat-cli.md) and follow the instructions up to the point where you select your Azure account and subscription.
+
+2. Run the **azure config mode** command to switch to classic mode, as shown below.
+
+ azure config mode asm
+
+ Expected output:
+
+ info: New mode is asm
+
+
+## Create endpoint and load balancer set
+
+The scenario assumes the virtual machines "web1" and "web2" were created.
+This guide will create a load balancer set using port 80 as public port and 80 as local port. A probe port is also configured on port 80 and called the load balancer set "lbset"
+
+
+### Step 1
+
+Create the first endpoint and load balancer set using `azure network vm endpoint create` for virtual machine "web1"
+
+ azure network endpoint create web1 80 -k 80 -o tcp -t 80 -b lbset
+
+
+## Step 2
+
+Add a second virtual machine "web2" to the load balancer set.
+
+ azure network endpoint create web2 80 -k 80 -o tcp -t 80 -b lbset
+
+## Step 3
+
+Verify the load balancer configuration using `azure vm show`
+
+ azure vm show web1
+
+The output will be:
+
+ data: DNSName "contoso.cloudapp.net"
+ data: Location "East US"
+ data: VMName "web1"
+ data: IPAddress "10.0.0.5"
+ data: InstanceStatus "ReadyRole"
+ data: InstanceSize "Standard_D1"
+ data: Image "a699494373c04fc0bc8f2bb1389d6106__Windows-Server-2012-R2-2015
+ 6-en.us-127GB.vhd"
+ data: OSDisk hostCaching "ReadWrite"
+ data: OSDisk name "joaoma-1-web1-0-201509251804250879"
+ data: OSDisk mediaLink "https://XXXXXXXXXXXXXXX.blob.core.windows.
+ /vhds/joaomatest-web1-2015-09-25.vhd"
+ data: OSDisk sourceImageName "a699494373c04fc0bc8f2bb1389d6106__Windows-Se
+ r-2012-R2-20150916-en.us-127GB.vhd"
+ data: OSDisk operatingSystem "Windows"
+ data: OSDisk iOType "Standard"
+ data: ReservedIPName ""
+ data: VirtualIPAddresses 0 address "XXXXXXXXXXXXXXXX"
+ data: VirtualIPAddresses 0 name "XXXXXXXXXXXXXXXXXXXX"
+ data: VirtualIPAddresses 0 isDnsProgrammed true
+ data: Network Endpoints 0 loadBalancedEndpointSetName "lbset"
+ data: Network Endpoints 0 localPort 80
+ data: Network Endpoints 0 name "tcp-80-80"
+ data: Network Endpoints 0 port 80
+ data: Network Endpoints 0 loadBalancerProbe port 80
+ data: Network Endpoints 0 loadBalancerProbe protocol "tcp"
+ data: Network Endpoints 0 loadBalancerProbe intervalInSeconds 15
+ data: Network Endpoints 0 loadBalancerProbe timeoutInSeconds 31
+ data: Network Endpoints 0 protocol "tcp"
+ data: Network Endpoints 0 virtualIPAddress "XXXXXXXXXXXX"
+ data: Network Endpoints 0 enableDirectServerReturn false
+ data: Network Endpoints 1 localPort 5986
+ data: Network Endpoints 1 name "PowerShell"
+ data: Network Endpoints 1 port 5986
+ data: Network Endpoints 1 protocol "tcp"
+ data: Network Endpoints 1 virtualIPAddress "XXXXXXXXXXXX"
+ data: Network Endpoints 1 enableDirectServerReturn false
+ data: Network Endpoints 2 localPort 3389
+ data: Network Endpoints 2 name "Remote Desktop"
+ data: Network Endpoints 2 port 58081
+ info: vm show command OK
+
+## Create a remote desktop endpoint for a virtual machine
+
+You can create a remote desktop endpoint to forward network traffic from a public port to a local port for a specific virtual machine using `azure vm endpoint create`.
+
+ azure vm endpoint create web1 54580 -k 3389
+
+
+## Remove virtual machine from load balancer
+
+You have to delete the endpoint associated to the load balancer set from the virtual machine. Once the endpoint is removed, the virtual machine doesn't belong to the load balancer set anymore.
+
+ Using the example above, you can remove the endpoint created for virtual machine "web1" from load balancer "lbset" using the command `azure vm endpoint delete`.
+
+ azure vm endpoint delete web1 tcp-80-80
+
+
+>[AZURE.NOTE] You can explore more options to manage endpoints using the command `azure vm endpoint --help`
+
+
+## Next steps
+
+[Get started configuring an internal load balancer](load-balancer-internal-getstarted.md)
+
+[Configure a load balancer distribution mode](load-balancer-distribution-mode.md)
+
+[Configure idle TCP timeout settings for your load balancer](load-balancer-tcp-idle-timeout.md)
+
+
\ No newline at end of file
diff --git a/articles/load-balancer/load-balancer-get-started-internet-classic-cloud.md b/articles/load-balancer/load-balancer-get-started-internet-classic-cloud.md
index 0d837317ef4..983dab7de49 100644
--- a/articles/load-balancer/load-balancer-get-started-internet-classic-cloud.md
+++ b/articles/load-balancer/load-balancer-get-started-internet-classic-cloud.md
@@ -25,8 +25,6 @@
[AZURE.INCLUDE [azure-arm-classic-important-include](../../includes/azure-arm-classic-important-include.md)] This article covers the classic deployment model.If you are looking for Azure Resource Manager deployment model, go to [Get started creating Internet facing load balancer using resource manager](load-balancer-get-started-internet-arm-ps.md).
-[AZURE.INCLUDE [load-balancer-get-started-internet-scenario-include.md](../../includes/load-balancer-get-started-internet-scenario-include.md)]
-
Cloud services are automatically configured with a load balancer and can be customized via the service model.
diff --git a/articles/media-services/meda-services-managing-multiple-storage-accounts.md b/articles/media-services/meda-services-managing-multiple-storage-accounts.md
index 0b4d391f713..2b2512bc1b3 100644
--- a/articles/media-services/meda-services-managing-multiple-storage-accounts.md
+++ b/articles/media-services/meda-services-managing-multiple-storage-accounts.md
@@ -253,8 +253,8 @@ The following code uses the latest Media Services SDK to perform the following t
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-axinom-integration.md b/articles/media-services/media-services-axinom-integration.md
index 1fb1a56312c..f1eaf85f994 100644
--- a/articles/media-services/media-services-axinom-integration.md
+++ b/articles/media-services/media-services-axinom-integration.md
@@ -198,12 +198,14 @@ Key seed|Must be used to generate content key with any given content key ID (see
Widevine License acquisition URL|Must be used in configuring asset delivery policy for DASH streaming (see [this](media-services-axinom-integration.md#content-protection) section ).
Content Key ID|Must be included as part of the value of Entitlement Message claim of JWT token (see [this](media-services-axinom-integration.md#jwt-token-generation) section).
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
###Acknowledgments
diff --git a/articles/media-services/media-services-azure-media-customize-ame-presets.md b/articles/media-services/media-services-azure-media-customize-ame-presets.md
index ea18d1a9a30..0b4247d4f78 100644
--- a/articles/media-services/media-services-azure-media-customize-ame-presets.md
+++ b/articles/media-services/media-services-azure-media-customize-ame-presets.md
@@ -507,13 +507,14 @@ To prevent the amplification of background noise, do the following:
// Launch the job.
job.Submit();
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##See Also
diff --git a/articles/media-services/media-services-azure-media-encoder-formats.md b/articles/media-services/media-services-azure-media-encoder-formats.md
index 685ffcc54d2..401eecdc7c3 100644
--- a/articles/media-services/media-services-azure-media-encoder-formats.md
+++ b/articles/media-services/media-services-azure-media-encoder-formats.md
@@ -137,7 +137,8 @@ Indeo-produced YVU9 format|Indeo-produced YVU9 format with additional informatio
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
\ No newline at end of file
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-build-smooth-streaming-apps.md b/articles/media-services/media-services-build-smooth-streaming-apps.md
index 5b93315f82a..bc5ac1180f4 100644
--- a/articles/media-services/media-services-build-smooth-streaming-apps.md
+++ b/articles/media-services/media-services-build-smooth-streaming-apps.md
@@ -970,11 +970,11 @@ You have completed lesson 4. In this lesson, you add the functionality to choos
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##Other Resources:
diff --git a/articles/media-services/media-services-castlabs-integration.md b/articles/media-services/media-services-castlabs-integration.md
index 7ba4528f8cc..a6a7013d5df 100644
--- a/articles/media-services/media-services-castlabs-integration.md
+++ b/articles/media-services/media-services-castlabs-integration.md
@@ -113,10 +113,11 @@ To playback a video encrypted with common encryption (PlayReady and/or Widevine)
7. Update the player.
8. The video should be playing.
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-check-job-progress.md b/articles/media-services/media-services-check-job-progress.md
index 4d282b2f9d1..ba46335c1d0 100644
--- a/articles/media-services/media-services-check-job-progress.md
+++ b/articles/media-services/media-services-check-job-progress.md
@@ -428,11 +428,11 @@ The example above produced the following output. You values will vary.
job with Id: nb:jid:UUID:526291de-f166-be47-b62a-11ffe6d4be54 reached expected
State: Finished
-
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-concepts.md b/articles/media-services/media-services-concepts.md
index b58a70c2e8e..68bf5fe49c2 100644
--- a/articles/media-services/media-services-concepts.md
+++ b/articles/media-services/media-services-concepts.md
@@ -244,8 +244,8 @@ The following list describes different streaming formats and gives examples:
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-configure-elemental-live-encoder.md b/articles/media-services/media-services-configure-elemental-live-encoder.md
index eb2ecf18a58..26ac3dd22d7 100644
--- a/articles/media-services/media-services-configure-elemental-live-encoder.md
+++ b/articles/media-services/media-services-configure-elemental-live-encoder.md
@@ -167,9 +167,11 @@ The stream is now ready to be embedded in a player, or distributed to an audienc
Please see the [troubleshooting](media-services-troubleshooting-live-streaming.md) topic for guidance.
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
\ No newline at end of file
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-configure-fmle-live-encoder.md b/articles/media-services/media-services-configure-fmle-live-encoder.md
index ed2cfbc0250..743970e3eb1 100644
--- a/articles/media-services/media-services-configure-fmle-live-encoder.md
+++ b/articles/media-services/media-services-configure-fmle-live-encoder.md
@@ -164,9 +164,11 @@ The stream is now ready to be embedded in a player, or distributed to an audienc
Please see the [troubleshooting](media-services-troubleshooting-live-streaming.md) topic for guidance.
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
\ No newline at end of file
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-configure-tricaster-live-encoder.md b/articles/media-services/media-services-configure-tricaster-live-encoder.md
index e6dbd5b7d58..8194b7bd947 100644
--- a/articles/media-services/media-services-configure-tricaster-live-encoder.md
+++ b/articles/media-services/media-services-configure-tricaster-live-encoder.md
@@ -156,9 +156,11 @@ The stream is now ready to be embedded in a player, or distributed to an audienc
Please see the [troubleshooting](media-services-troubleshooting-live-streaming.md) topic for guidance.
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
\ No newline at end of file
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-configure-wirecast-live-encoder.md b/articles/media-services/media-services-configure-wirecast-live-encoder.md
index e4f03374427..e8cb2c037d5 100644
--- a/articles/media-services/media-services-configure-wirecast-live-encoder.md
+++ b/articles/media-services/media-services-configure-wirecast-live-encoder.md
@@ -177,8 +177,8 @@ Please see the [troubleshooting](media-services-troubleshooting-live-streaming.m
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-content-protection-overview.md b/articles/media-services/media-services-content-protection-overview.md
index 0fd92134217..f23e7aa81fa 100644
--- a/articles/media-services/media-services-content-protection-overview.md
+++ b/articles/media-services/media-services-content-protection-overview.md
@@ -112,12 +112,15 @@ For more information, see [How to integrate Azure PlayReady License service with
[Using castLabs to deliver DRM licenses to Azure Media Services](media-services-castlabs-integration.md)
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
##Related Links
diff --git a/articles/media-services/media-services-copying-existing-blob.md b/articles/media-services/media-services-copying-existing-blob.md
index 9244cd6c3c0..20ef7316e57 100644
--- a/articles/media-services/media-services-copying-existing-blob.md
+++ b/articles/media-services/media-services-copying-existing-blob.md
@@ -24,6 +24,10 @@ Your blobs could exist in a storage account that is associated with Media Servic
>[AZURE.NOTE] You should not attempt to change the contents of blob containers that were generated by Media Services without using Media Service APIs.
+##Download sample
+
+Get and run a sample from [here](http://azure.microsoft.com/documentation/samples/media-services-dotnet-copy-blob-into-asset/).
+
##Prerequisites
- Two Media Services accounts in a new or existing Azure subscription. See the topic [How to Create a Media Services Account](media-services-create-account.md).
@@ -305,8 +309,8 @@ The code example below performs the following tasks:
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-create-account.md b/articles/media-services/media-services-create-account.md
index 262a8c35cc0..8a410bb9fe9 100644
--- a/articles/media-services/media-services-create-account.md
+++ b/articles/media-services/media-services-create-account.md
@@ -75,12 +75,16 @@ Accessing Media Services requires two associated accounts:
In addition, you can view code that uses the Azure Media Services SDK to accomplish the following tasks: upload, encode, and publish videos. You can click one of the links under the **WRITE SOME CODE** section, copy the code and use it in your application.
+
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
## Next steps
diff --git a/articles/media-services/media-services-deliver-asset-download.md b/articles/media-services/media-services-deliver-asset-download.md
index 96ff9a2df02..5fca37e63fd 100644
--- a/articles/media-services/media-services-deliver-asset-download.md
+++ b/articles/media-services/media-services-deliver-asset-download.md
@@ -73,12 +73,14 @@ This example shows how to download media assets from Media Services to your loca
}
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##See Also
diff --git a/articles/media-services/media-services-deliver-content-overview.md b/articles/media-services/media-services-deliver-content-overview.md
index 59c10c90ce4..fc52991b9bc 100644
--- a/articles/media-services/media-services-deliver-content-overview.md
+++ b/articles/media-services/media-services-deliver-content-overview.md
@@ -176,13 +176,14 @@ The following considerations apply:
A **Streaming Endpoint** represents a streaming service that can deliver content directly to a client player application, or to a Content Delivery Network (CDN) for further distribution. The outbound stream from a streaming endpoint service can be a live stream, or a video on demand asset in your Media Services account. In addition, you can control the capacity of the Streaming Endpoint service to handle growing bandwidth needs by adjusting streaming reserved units. You should allocate at least one reserved unit for applications in a production environment. For more information, see [How to Scale a Media Service](media-services-manage-origins.md#scale_streaming_endpoints).
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##Related topics
diff --git a/articles/media-services/media-services-deliver-streaming-content.md b/articles/media-services/media-services-deliver-streaming-content.md
index cded7c51dba..9f40d32e8c5 100644
--- a/articles/media-services/media-services-deliver-streaming-content.md
+++ b/articles/media-services/media-services-deliver-streaming-content.md
@@ -160,11 +160,11 @@ The following code calls .NET SDK extensions methods that create a locator and g
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##See Also
diff --git a/articles/media-services/media-services-develop-video-players.md b/articles/media-services/media-services-develop-video-players.md
index 61336499578..f757326c6cb 100644
--- a/articles/media-services/media-services-develop-video-players.md
+++ b/articles/media-services/media-services-develop-video-players.md
@@ -69,11 +69,11 @@ For information about closed captioning and ads support in Live streaming videos
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##See Also
diff --git a/articles/media-services/media-services-dotnet-configure-asset-delivery-policy.md b/articles/media-services/media-services-dotnet-configure-asset-delivery-policy.md
index 9bcb8cbb501..edf7c5cf7ee 100644
--- a/articles/media-services/media-services-dotnet-configure-asset-delivery-policy.md
+++ b/articles/media-services/media-services-dotnet-configure-asset-delivery-policy.md
@@ -323,8 +323,10 @@ For information on what values you can specify when creating an AssetDeliveryPol
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
diff --git a/articles/media-services/media-services-dotnet-configure-content-key-auth-policy.md b/articles/media-services/media-services-dotnet-configure-content-key-auth-policy.md
index 44ddfd3b3bb..1ffcbfcd340 100644
--- a/articles/media-services/media-services-dotnet-configure-content-key-auth-policy.md
+++ b/articles/media-services/media-services-dotnet-configure-content-key-auth-policy.md
@@ -428,10 +428,11 @@ To get a test token based on the token restriction that was used for the key aut
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-dotnet-connect_programmatically.md b/articles/media-services/media-services-dotnet-connect_programmatically.md
index e25a50a641b..be113199bee 100644
--- a/articles/media-services/media-services-dotnet-connect_programmatically.md
+++ b/articles/media-services/media-services-dotnet-connect_programmatically.md
@@ -190,15 +190,8 @@ To retrieve connection values from configuration, you can use the **Configuratio
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
-
-
-
-
-
-
-
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-dotnet-create-contentkey.md b/articles/media-services/media-services-dotnet-create-contentkey.md
index 3f9740f3d17..b0e894be042 100644
--- a/articles/media-services/media-services-dotnet-create-contentkey.md
+++ b/articles/media-services/media-services-dotnet-create-contentkey.md
@@ -136,10 +136,10 @@ call
IContentKey key = CreateCommonTypeContentKey(encryptedsset);
-
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-dotnet-creating-live-encoder-enabled-channel.md b/articles/media-services/media-services-dotnet-creating-live-encoder-enabled-channel.md
index 400e031fa9d..7f156d82eac 100644
--- a/articles/media-services/media-services-dotnet-creating-live-encoder-enabled-channel.md
+++ b/articles/media-services/media-services-dotnet-creating-live-encoder-enabled-channel.md
@@ -13,7 +13,7 @@
ms.tgt_pltfrm="na"
ms.devlang="na"
ms.topic="article"
- ms.date="10/26/2015"
+ ms.date="11/08/2015"
ms.author="juliako"/>
@@ -87,6 +87,10 @@ The topic shows how to do the following:
- Currently, the max recommended duration of a live event is 8 hours. Please contact amslived at Microsoft dot com if you need to run a Channel for longer periods of time.
- Make sure to have at least one streaming reserved unit on the streaming endpoint from which you want to stream content.
+##Download sample
+
+Get and run a sample from [here](http://azure.microsoft.com/documentation/samples/media-services-dotnet-encode-live-stream-with-ams-clear/).
+
##Prerequisites
The following are required to complete the tutorial.
@@ -507,14 +511,13 @@ Add the appSettings section to the app.config file, and set the values for your
}
-##Next Steps
+##Next steps: Media Services learning paths
-###Media Services learning paths
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-You can view AMS learning paths here:
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
### Looking for something else?
diff --git a/articles/media-services/media-services-dotnet-dynamic-manifest.md b/articles/media-services/media-services-dotnet-dynamic-manifest.md
index 1b7145776d5..65c4f671877 100644
--- a/articles/media-services/media-services-dotnet-dynamic-manifest.md
+++ b/articles/media-services/media-services-dotnet-dynamic-manifest.md
@@ -134,13 +134,14 @@ The following examples show how to add filters to your streaming URLs.
http://testendpoint-testaccount.streaming.mediaservices.windows.net/fecebb23-46f6-490d-8b70-203e86b0df58/BigBuckBunny.ism/Manifest(format=f4m-f4f, filter=MyFilter)
-
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
##See Also
diff --git a/articles/media-services/media-services-dotnet-encode-asset.md b/articles/media-services/media-services-dotnet-encode-asset.md
index 9cb3894a057..5ca357d2ec6 100644
--- a/articles/media-services/media-services-dotnet-encode-asset.md
+++ b/articles/media-services/media-services-dotnet-encode-asset.md
@@ -213,10 +213,11 @@ The following **CreateChainedTaskEncodingJob** method creates a job that contain
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##See Also
diff --git a/articles/media-services/media-services-dotnet-encode-with-media-encoder-standard.md b/articles/media-services/media-services-dotnet-encode-with-media-encoder-standard.md
index f5d964684b8..fd9a86cffe6 100644
--- a/articles/media-services/media-services-dotnet-encode-with-media-encoder-standard.md
+++ b/articles/media-services/media-services-dotnet-encode-with-media-encoder-standard.md
@@ -13,7 +13,7 @@
ms.tgt_pltfrm="na"
ms.devlang="na"
ms.topic="article"
- ms.date="10/15/2015"
+ ms.date="11/08/2015"
ms.author="juliako"/>
@@ -27,6 +27,10 @@ It is recommended to always encode your mezzanine files into an adaptive bitrate
If your output asset is storage encrypted, you must configure asset delivery policy. For more information see [Configuring asset delivery policy](media-services-dotnet-configure-asset-delivery-policy.md).
+##Download sample
+
+Get and run a sample from [here](http://azure.microsoft.com/documentation/samples/media-services-dotnet-on-demand-encoding-with-media-encoder-standard/).
+
##Example
The following code example uses Media Services .NET SDK to perform the following tasks:
@@ -116,10 +120,11 @@ The following code example uses Media Services .NET SDK to perform the following
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##See Also
diff --git a/articles/media-services/media-services-dotnet-encoding-units.md b/articles/media-services/media-services-dotnet-encoding-units.md
index d85017834ad..0be4b4556ba 100644
--- a/articles/media-services/media-services-dotnet-encoding-units.md
+++ b/articles/media-services/media-services-dotnet-encoding-units.md
@@ -71,11 +71,10 @@ To open a support ticket do the following:
-
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
-
\ No newline at end of file
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-dotnet-generate-thumbnail-with-mes.md b/articles/media-services/media-services-dotnet-generate-thumbnail-with-mes.md
index b73a36cbda6..45c9a2125a3 100644
--- a/articles/media-services/media-services-dotnet-generate-thumbnail-with-mes.md
+++ b/articles/media-services/media-services-dotnet-generate-thumbnail-with-mes.md
@@ -374,10 +374,11 @@ The following considerations apply:
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##See Also
diff --git a/articles/media-services/media-services-dotnet-get-started.md b/articles/media-services/media-services-dotnet-get-started.md
index 79629100812..73cb24f1d84 100644
--- a/articles/media-services/media-services-dotnet-get-started.md
+++ b/articles/media-services/media-services-dotnet-get-started.md
@@ -13,7 +13,7 @@
ms.tgt_pltfrm="na"
ms.devlang="dotnet"
ms.topic="hero-article"
- ms.date="10/28/2015"
+ ms.date="11/08/2015"
ms.author="juliako"/>
@@ -30,6 +30,12 @@ This tutorial walks you through the steps of implementing a Video-on-Demand (VoD
The tutorial introduces the basic Media Services workflow and the most common programming objects and tasks required for Media Services development. At the completion of the tutorial, you will be able to stream or progressively download a sample media file that you uploaded, encoded, and downloaded.
+
+##Download sample
+
+Get and run a sample from [here](http://azure.microsoft.com/documentation/samples/media-services-dotnet-on-demand-encoding-with-media-encoder-standard/).
+
+
## Prerequisites
The following prerequisites are required to start developing with Media Services SDK for .NET.
@@ -422,14 +428,14 @@ To stream you video, use [Azure Media Services Player](http://amsplayer.azureweb
To test progressive download, paste a URL into a browser (for example, Internet Explorer, Chrome, or Safari).
-##Next Steps
+##Next Steps: Media Services learning paths
+
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-###Media Services learning paths
+##Provide feedback
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
### Looking for something else?
diff --git a/articles/media-services/media-services-dotnet-how-to-use.md b/articles/media-services/media-services-dotnet-how-to-use.md
index ec7673ccab2..273710a0bb4 100644
--- a/articles/media-services/media-services-dotnet-how-to-use.md
+++ b/articles/media-services/media-services-dotnet-how-to-use.md
@@ -102,7 +102,8 @@ At this point, you are ready to start developing a Media Services application.
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-dotnet-live-encode-with-onpremises-encoders.md b/articles/media-services/media-services-dotnet-live-encode-with-onpremises-encoders.md
index 40301d0b875..494c1e6822c 100644
--- a/articles/media-services/media-services-dotnet-live-encode-with-onpremises-encoders.md
+++ b/articles/media-services/media-services-dotnet-live-encode-with-onpremises-encoders.md
@@ -375,10 +375,10 @@ For information on how to configure a live encoder, see [Azure Media Services RT
}
}
-
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
\ No newline at end of file
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-dotnet-long-operations.md b/articles/media-services/media-services-dotnet-long-operations.md
index 3b84d889771..82c05fb32e5 100644
--- a/articles/media-services/media-services-dotnet-long-operations.md
+++ b/articles/media-services/media-services-dotnet-long-operations.md
@@ -190,7 +190,8 @@ The example also shows how the client might use this class.
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-dotnet-manage-entities.md b/articles/media-services/media-services-dotnet-manage-entities.md
index aef46fb5727..d5a5145e6f0 100644
--- a/articles/media-services/media-services-dotnet-manage-entities.md
+++ b/articles/media-services/media-services-dotnet-manage-entities.md
@@ -337,7 +337,8 @@ The following code example shows how to get a reference to an access policy base
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-dotnet-upload-files.md b/articles/media-services/media-services-dotnet-upload-files.md
index 372f43ba2dd..1c16e04652a 100644
--- a/articles/media-services/media-services-dotnet-upload-files.md
+++ b/articles/media-services/media-services-dotnet-upload-files.md
@@ -303,10 +303,11 @@ The following example calls UploadFile function and specifies storage encryption
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-dynamic-manifest-overview.md b/articles/media-services/media-services-dynamic-manifest-overview.md
index e0d89646076..df9d425535c 100644
--- a/articles/media-services/media-services-dynamic-manifest-overview.md
+++ b/articles/media-services/media-services-dynamic-manifest-overview.md
@@ -204,10 +204,12 @@ For more information see [this](http://azure.microsoft.com/blog/azure-media-serv
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
##See Also
diff --git a/articles/media-services/media-services-dynamic-packaging-overview.md b/articles/media-services/media-services-dynamic-packaging-overview.md
index 8ad8bec90eb..f2ec4d19678 100644
--- a/articles/media-services/media-services-dynamic-packaging-overview.md
+++ b/articles/media-services/media-services-dynamic-packaging-overview.md
@@ -97,10 +97,10 @@ The following source file formats are not supported by dynamic packaging.
- Dolby digital plus mp4 files.
- Dolby digital plus smooth files.
-
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-embed-mpeg-dash-in-html5.md b/articles/media-services/media-services-embed-mpeg-dash-in-html5.md
index 2ea8a3f6bbb..7cd72167338 100644
--- a/articles/media-services/media-services-embed-mpeg-dash-in-html5.md
+++ b/articles/media-services/media-services-embed-mpeg-dash-in-html5.md
@@ -103,11 +103,11 @@ To play a video, point your browser at the basicPlayback.html file and click pla
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##See Also
diff --git a/articles/media-services/media-services-encode-asset.md b/articles/media-services/media-services-encode-asset.md
index fe671163909..42671f04d61 100644
--- a/articles/media-services/media-services-encode-asset.md
+++ b/articles/media-services/media-services-encode-asset.md
@@ -247,12 +247,16 @@ MP3 (MPEG-1 Audio Layer 3)|No|No|Yes
Windows Media Audio|No|Yes|Yes
+
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
##Related articles
diff --git a/articles/media-services/media-services-encode-with-dolby-digital-plus.md b/articles/media-services/media-services-encode-with-dolby-digital-plus.md
index 6e1305c1dfc..17330a8e882 100644
--- a/articles/media-services/media-services-encode-with-dolby-digital-plus.md
+++ b/articles/media-services/media-services-encode-with-dolby-digital-plus.md
@@ -653,8 +653,8 @@ Each attribute is described below.
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-encode-with-premium-workflow.md b/articles/media-services/media-services-encode-with-premium-workflow.md
index c6bdb31e2ea..faf1b5eddb0 100644
--- a/articles/media-services/media-services-encode-with-premium-workflow.md
+++ b/articles/media-services/media-services-encode-with-premium-workflow.md
@@ -272,8 +272,8 @@ If your input video does not contain closed captioning, the output Asset will st
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-fmp4-live-ingest-overview.md b/articles/media-services/media-services-fmp4-live-ingest-overview.md
index e1c7875a574..be8a5229191 100644
--- a/articles/media-services/media-services-fmp4-live-ingest-overview.md
+++ b/articles/media-services/media-services-fmp4-live-ingest-overview.md
@@ -200,13 +200,15 @@ Below is a recommended implementation for redundant audio tracks:
2. Use separate streams to send the two lowest video bitrates. Each of these streams SHOULD also contain a copy of each unique audio track. For example, when multiple languages are supported, these streams SHOULD contain audio tracks for each language.
3. Use separate server (encoder) instances to encode and send the redundant streams mentioned in (1) and (2).
+
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
[image1]: ./media/media-services-fmp4-live-ingest-overview/media-services-image1.png
diff --git a/articles/media-services/media-services-frequently-asked-questions.md b/articles/media-services/media-services-frequently-asked-questions.md
index 005c0b1da4b..b90d63f4f93 100644
--- a/articles/media-services/media-services-frequently-asked-questions.md
+++ b/articles/media-services/media-services-frequently-asked-questions.md
@@ -46,10 +46,11 @@ Q: How can I copy assets from one Media Services account to another.
A: To copy assets from one Media Services account to another, use [IAsset.Copy](https://github.com/Azure/azure-sdk-for-media-services-extensions/blob/dev/MediaServices.Client.Extensions/IAssetExtensions.cs#L354) extension method available in the [Azure Media Services .NET SDK Extensions](https://github.com/Azure/azure-sdk-for-media-services-extensions/) repository. For more information, see [this](https://social.msdn.microsoft.com/Forums/azure/28912d5d-6733-41c1-b27d-5d5dff2695ca/migrate-media-services-across-subscription?forum=MediaServices) forum thread.
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-get-media-processor.md b/articles/media-services/media-services-get-media-processor.md
index 3a8331d4d73..1f726d149dd 100644
--- a/articles/media-services/media-services-get-media-processor.md
+++ b/articles/media-services/media-services-get-media-processor.md
@@ -59,11 +59,11 @@ The following method shows how to get a media processor instance. The code examp
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##Next Steps
Now that you know how to get a media processor instance, go to the [How to Encode an Asset][] topic which will show you how to use the Azure Media Encoder to encode an asset.
diff --git a/articles/media-services/media-services-how-to-scale.md b/articles/media-services/media-services-how-to-scale.md
index e2ca87d1016..2147248f3e8 100644
--- a/articles/media-services/media-services-how-to-scale.md
+++ b/articles/media-services/media-services-how-to-scale.md
@@ -45,11 +45,10 @@ For more information, see [Managing Media Services Assets across Multiple Storag
-
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-hyperlapse-content.md b/articles/media-services/media-services-hyperlapse-content.md
index 8d1286d38a5..90d20dbde6a 100644
--- a/articles/media-services/media-services-hyperlapse-content.md
+++ b/articles/media-services/media-services-hyperlapse-content.md
@@ -203,13 +203,14 @@ The following method uploads a media file as an asset and creates a job with the
+##Media Services learning paths
-## Media Services learning paths
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-You can view AMS learning paths here:
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
diff --git a/articles/media-services/media-services-implement-failover.md b/articles/media-services/media-services-implement-failover.md
index d04cd7665fd..b5ef89b343c 100644
--- a/articles/media-services/media-services-implement-failover.md
+++ b/articles/media-services/media-services-implement-failover.md
@@ -960,3 +960,12 @@ In this section you will create and set up a C# Console Application project.
##Next Steps
You can now use a traffic manager to route requests between the two data centers and thus failover in the case of any outages.
+
+
+##Media Services learning paths
+
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-index-content.md b/articles/media-services/media-services-index-content.md
index c060f7b121c..05f38aeaafc 100644
--- a/articles/media-services/media-services-index-content.md
+++ b/articles/media-services/media-services-index-content.md
@@ -281,12 +281,14 @@ other | Internal errors | Please contact support team. indexer@microsoft.com
Currently, the English and Spanish languages are supported. For more information, see [the v1.2 release blog post](http://azure.microsoft.com/blog/2015/04/13/azure-media-indexer-spanish-v1-2/).
-## Media Services learning paths
+##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
## Related links
diff --git a/articles/media-services/media-services-inserting-ads-on-client-side.md b/articles/media-services/media-services-inserting-ads-on-client-side.md
index 3d68c7d684b..0b27d0b54aa 100644
--- a/articles/media-services/media-services-inserting-ads-on-client-side.md
+++ b/articles/media-services/media-services-inserting-ads-on-client-side.md
@@ -808,12 +808,14 @@ The following sample shows how to schedule a mid-roll overlay ad.
}
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##See Also
diff --git a/articles/media-services/media-services-java-how-to-use.md b/articles/media-services/media-services-java-how-to-use.md
index a6e88e295cb..dacb3d11da6 100644
--- a/articles/media-services/media-services-java-how-to-use.md
+++ b/articles/media-services/media-services-java-how-to-use.md
@@ -253,11 +253,11 @@ Substitute your values for the `clientId` and `clientSecret` variables. The code
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##Additional Resources
diff --git a/articles/media-services/media-services-jobs.md b/articles/media-services/media-services-jobs.md
index e2bb9838e3b..930595bb917 100644
--- a/articles/media-services/media-services-jobs.md
+++ b/articles/media-services/media-services-jobs.md
@@ -60,11 +60,10 @@ Monitor job progress using **Azure Management Portal**, **.NET** or **REST API**
[Quotas and Limitations](media-services-quotas-and-limitations.md) – Describes quotas used and limitations of the Media Services Encoder
-
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-licenses-partner-integration.md b/articles/media-services/media-services-licenses-partner-integration.md
index 7879c1e1f71..8f7705a4f0a 100644
--- a/articles/media-services/media-services-licenses-partner-integration.md
+++ b/articles/media-services/media-services-licenses-partner-integration.md
@@ -35,10 +35,11 @@ You can use [Axinom](http://www.axinom.com/press/ibc-axinom-drm-6/) to deliver W
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##See also
diff --git a/articles/media-services/media-services-live-encoders-overview.md b/articles/media-services/media-services-live-encoders-overview.md
index 4fb3e92500f..60ba59cb019 100644
--- a/articles/media-services/media-services-live-encoders-overview.md
+++ b/articles/media-services/media-services-live-encoders-overview.md
@@ -40,12 +40,14 @@ For information on how to configure the [Telestream Wirecast](http://www.telestr
For information on how to configure the [Tricaster](http://newtek.com/products/tricaster-40.html) encoder to send a single bitrate live stream to an AMS Channel, see [Configuring Tricaster](media-services-configure-tricaster-live-encoder.md).
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
## See also
diff --git a/articles/media-services/media-services-live-streaming-workflow.md b/articles/media-services/media-services-live-streaming-workflow.md
index c27f52c8cc2..73740024f68 100644
--- a/articles/media-services/media-services-live-streaming-workflow.md
+++ b/articles/media-services/media-services-live-streaming-workflow.md
@@ -70,12 +70,14 @@ For more information, see [Working with Channels that Receive Multi-bitrate Live
](media-services-manage-channels-overview.md).
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##Related topics
diff --git a/articles/media-services/media-services-manage-assets.md b/articles/media-services/media-services-manage-assets.md
index f7ab5dba339..bd01b277fc2 100644
--- a/articles/media-services/media-services-manage-assets.md
+++ b/articles/media-services/media-services-manage-assets.md
@@ -85,8 +85,8 @@ The following code snippet deletes all the assets from the Media Services accoun
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-manage-channels-overview.md b/articles/media-services/media-services-manage-channels-overview.md
index d8a1afa4735..d3959fabf71 100644
--- a/articles/media-services/media-services-manage-channels-overview.md
+++ b/articles/media-services/media-services-manage-channels-overview.md
@@ -247,12 +247,15 @@ Choose **Portal**, **.NET**, **REST API** to see how to create and manage channe
[AZURE.INCLUDE [media-services-selector-manage-channels](../../includes/media-services-selector-manage-channels.md)]
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
##Related topics
diff --git a/articles/media-services/media-services-manage-content.md b/articles/media-services/media-services-manage-content.md
index dd2dfead2ce..816c946bfff 100644
--- a/articles/media-services/media-services-manage-content.md
+++ b/articles/media-services/media-services-manage-content.md
@@ -210,10 +210,11 @@ Some considerations apply:
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
![AMSPlayer][AMSPlayer]
diff --git a/articles/media-services/media-services-manage-live-encoder-enabled-channels.md b/articles/media-services/media-services-manage-live-encoder-enabled-channels.md
index fd97bcba18b..7c9d45146ae 100644
--- a/articles/media-services/media-services-manage-live-encoder-enabled-channels.md
+++ b/articles/media-services/media-services-manage-live-encoder-enabled-channels.md
@@ -451,10 +451,12 @@ Choose **Portal**, **.NET**, **REST API** to see how to create and manage channe
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
##Related topics
diff --git a/articles/media-services/media-services-manage-origins.md b/articles/media-services/media-services-manage-origins.md
index 680cca7de57..b7785342171 100644
--- a/articles/media-services/media-services-manage-origins.md
+++ b/articles/media-services/media-services-manage-origins.md
@@ -137,11 +137,11 @@ For more information see, [Announcing Azure Media Services integration with Azur
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
[streaming-endpoint-enable-cdn]: ./media/media-services-manage-origins/media-services-origins-enable-cdn.png
[streaming-endpoint]: ./media/media-services-manage-origins/media-services-origins-page.png
diff --git a/articles/media-services/media-services-manage-with-powershell.md b/articles/media-services/media-services-manage-with-powershell.md
index 9c39b542a89..d322f697acf 100644
--- a/articles/media-services/media-services-manage-with-powershell.md
+++ b/articles/media-services/media-services-manage-with-powershell.md
@@ -113,9 +113,10 @@ When you are ready to delete the Azure Media account, use [Remove-AzureMediaServ
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
\ No newline at end of file
diff --git a/articles/media-services/media-services-media-encoder-standard-formats.md b/articles/media-services/media-services-media-encoder-standard-formats.md
index e5544a908cd..4532132c7ec 100644
--- a/articles/media-services/media-services-media-encoder-standard-formats.md
+++ b/articles/media-services/media-services-media-encoder-standard-formats.md
@@ -106,12 +106,14 @@ MP4
(including multi-bitrate MP4 containers) |H.264 (High, Main, and B
MPEG2-TS |H.264 (High, Main, and Baseline Profiles)|AAC-LC, HE-AAC v1, HE-AAC v2
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##See also
diff --git a/articles/media-services/media-services-monitor-services-account.md b/articles/media-services/media-services-monitor-services-account.md
index 423e78106f4..f6229f86206 100644
--- a/articles/media-services/media-services-monitor-services-account.md
+++ b/articles/media-services/media-services-monitor-services-account.md
@@ -59,12 +59,15 @@ Similar to Media Services metrics, you should start seeing monitoring data on th
Metrics are stored in the storage account in four tables named $MetricsTransactionsBlob, $MetricsTransactionsTable, $MetricsTransactionsQueue, and $MetricsCapacityBlob. For more information, see [Storage Analytics Metrics](http://go.microsoft.com/fwlink/?LinkId=256668).
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
+on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
diff --git a/articles/media-services/media-services-overview.md b/articles/media-services/media-services-overview.md
index 7aa396d4c02..e1372a186d4 100644
--- a/articles/media-services/media-services-overview.md
+++ b/articles/media-services/media-services-overview.md
@@ -213,6 +213,10 @@ You can also scale your Media Services account by adding storage accounts to it.
[Downloadable eBook](https://www.microsoft.com/download/details.aspx?id=42629)
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
+
##Service Level Agreement (SLA)
- For Media Services Encoding, we guarantee 99.9% availability of REST API transactions.
diff --git a/articles/media-services/media-services-playback-content-with-existing-players.md b/articles/media-services/media-services-playback-content-with-existing-players.md
index baecddad171..59bab994c2c 100644
--- a/articles/media-services/media-services-playback-content-with-existing-players.md
+++ b/articles/media-services/media-services-playback-content-with-existing-players.md
@@ -80,11 +80,15 @@ To test HLS URLs you can also use:
For information about how to develop your own players, see [Developing video players](media-services-develop-video-players.md)
+
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
[AMSPlayer]: ./media/media-services-playback-content-with-existing-players/media-services-portal-player.png
\ No newline at end of file
diff --git a/articles/media-services/media-services-playready-license-template-overview.md b/articles/media-services/media-services-playready-license-template-overview.md
index 26279840bfb..461229461e4 100644
--- a/articles/media-services/media-services-playready-license-template-overview.md
+++ b/articles/media-services/media-services-playready-license-template-overview.md
@@ -303,9 +303,11 @@ For an example of what protection levels Silverlight supports, see: [Silverlight
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-portal-check-job-progress.md b/articles/media-services/media-services-portal-check-job-progress.md
index a6ad5dba3af..47b53798ea3 100644
--- a/articles/media-services/media-services-portal-check-job-progress.md
+++ b/articles/media-services/media-services-portal-check-job-progress.md
@@ -35,10 +35,11 @@
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##Next Step
diff --git a/articles/media-services/media-services-portal-configure-content-key-auth-policy.md b/articles/media-services/media-services-portal-configure-content-key-auth-policy.md
index 7cc48310e0e..8c468aa4991 100644
--- a/articles/media-services/media-services-portal-configure-content-key-auth-policy.md
+++ b/articles/media-services/media-services-portal-configure-content-key-auth-policy.md
@@ -87,10 +87,11 @@ You can click the **import policy xml** button and provide a different XML which
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##Next Steps
diff --git a/articles/media-services/media-services-portal-creating-live-encoder-enabled-channel.md b/articles/media-services/media-services-portal-creating-live-encoder-enabled-channel.md
index 5c5fab2388a..196f2b9d6f1 100644
--- a/articles/media-services/media-services-portal-creating-live-encoder-enabled-channel.md
+++ b/articles/media-services/media-services-portal-creating-live-encoder-enabled-channel.md
@@ -259,12 +259,15 @@ If you are done streaming events and want to clean up the resources provisioned
- Currently, the max recommended duration of a live event is 8 hours. Please contact amslived at Microsoft dot com if you need to run a Channel for longer periods of time.
- Make sure to have at least one streaming reserved unit on the streaming endpoint from which you want to stream content.
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
[standard0]: ./media/media-services-portal-creating-live-encoder-enabled-channel/media-services-create-channel-standard0.png
diff --git a/articles/media-services/media-services-portal-encoding-units.md b/articles/media-services/media-services-portal-encoding-units.md
index 6230f15e541..954308f3a20 100644
--- a/articles/media-services/media-services-portal-encoding-units.md
+++ b/articles/media-services/media-services-portal-encoding-units.md
@@ -63,7 +63,8 @@ For information about quotas and limitations and how to open a support ticket, s
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-portal-get-started-with-live.md b/articles/media-services/media-services-portal-get-started-with-live.md
index 7f4a8612b50..dbef2486d36 100644
--- a/articles/media-services/media-services-portal-get-started-with-live.md
+++ b/articles/media-services/media-services-portal-get-started-with-live.md
@@ -191,14 +191,14 @@ If you are done streaming events and want to clean up the resources provisioned
- You can stop your streaming endpoint, unless you want to continue to provide the archive of your live event as an on-demand stream. If the channel is in a stopped state, it will not incur any charges.
-##Next Steps
+##Next Steps: Media Services learning paths
-###Media Services learning paths
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-You can view AMS learning paths here:
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
### Looking for something else?
diff --git a/articles/media-services/media-services-portal-get-started.md b/articles/media-services/media-services-portal-get-started.md
index 518ba650d5b..283d1d718d8 100644
--- a/articles/media-services/media-services-portal-get-started.md
+++ b/articles/media-services/media-services-portal-get-started.md
@@ -224,16 +224,15 @@ Some considerations apply:
-##Next Steps
+##Next Steps:Media Services learning paths
-###Media Services learning paths
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-You can view AMS learning paths here:
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-### Looking for something else?
+## Looking for something else?
If this topic didn't contain what you were expecting, is missing something, or in some other way didn't meet your needs, please provide us with you feedback using the Disqus thread below.
diff --git a/articles/media-services/media-services-premium-workflow-encoder-formats.md b/articles/media-services/media-services-premium-workflow-encoder-formats.md
index d5a0a80398b..af839daaf11 100644
--- a/articles/media-services/media-services-premium-workflow-encoder-formats.md
+++ b/articles/media-services/media-services-premium-workflow-encoder-formats.md
@@ -130,8 +130,8 @@ If your input video does not contain closed captioning, the output Asset will st
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-protect-with-aes128.md b/articles/media-services/media-services-protect-with-aes128.md
index ed3e23f8a44..34db57a9725 100644
--- a/articles/media-services/media-services-protect-with-aes128.md
+++ b/articles/media-services/media-services-protect-with-aes128.md
@@ -598,7 +598,8 @@ The following code shows how to send a request to the Media Services key deliver
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-protect-with-drm.md b/articles/media-services/media-services-protect-with-drm.md
index 0a43ba5d43f..d6df39a0c41 100644
--- a/articles/media-services/media-services-protect-with-drm.md
+++ b/articles/media-services/media-services-protect-with-drm.md
@@ -592,12 +592,15 @@ You can use the [AMS Player](http://amsplayer.azurewebsites.net/azuremediaplayer
}
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
##See also
diff --git a/articles/media-services/media-services-quotas-and-limitations.md b/articles/media-services/media-services-quotas-and-limitations.md
index 0e439a1ab14..17768116af7 100644
--- a/articles/media-services/media-services-quotas-and-limitations.md
+++ b/articles/media-services/media-services-quotas-and-limitations.md
@@ -23,10 +23,13 @@ This topic describes quotas and limitations associated with Microsoft Azure Medi
[AZURE.INCLUDE [azure-mediaservices-limits](../../includes/azure-mediaservices-limits.md)]
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
diff --git a/articles/media-services/media-services-release-notes.md b/articles/media-services/media-services-release-notes.md
index d1cf89faefe..beed6aa0565 100644
--- a/articles/media-services/media-services-release-notes.md
+++ b/articles/media-services/media-services-release-notes.md
@@ -568,10 +568,12 @@ The following functionality was new in the November release of the SDK.
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
diff --git a/articles/media-services/media-services-rest-check-job-progress.md b/articles/media-services/media-services-rest-check-job-progress.md
index 3362854cec8..9c56758621d 100644
--- a/articles/media-services/media-services-rest-check-job-progress.md
+++ b/articles/media-services/media-services-rest-check-job-progress.md
@@ -56,11 +56,10 @@ Response:
{"odata.metadata":"https://media.windows.net/api/$metadata#Jobs","value":[{"Id":"nb:jid:UUID:f3c43f94-327f-2347-90bb-3bf79f8559f1","Name":"Encoding BigBuckBunny into to H264 Adaptive Bitrate MP4 Set 720p","Created":"2015-02-11T01:46:08.897","LastModified":"2015-02-11T01:46:08.897","EndTime":null,"Priority":0,"RunningDuration":0.0,"StartTime":"2015-02-11T01:46:16.58","State":2,"TemplateId":null,"JobNotificationSubscriptions":[]}]}
-
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-rest-configure-asset-delivery-policy.md b/articles/media-services/media-services-rest-configure-asset-delivery-policy.md
index 84ce6bdb861..fb3438b9d33 100644
--- a/articles/media-services/media-services-rest-configure-asset-delivery-policy.md
+++ b/articles/media-services/media-services-rest-configure-asset-delivery-policy.md
@@ -429,9 +429,8 @@ See [Link asset with asset delivery policy](#link_asset_with_asset_delivery_poli
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
-
\ No newline at end of file
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-rest-configure-content-key-auth-policy.md b/articles/media-services/media-services-rest-configure-content-key-auth-policy.md
index 094841351d3..9ee068abd06 100644
--- a/articles/media-services/media-services-rest-configure-content-key-auth-policy.md
+++ b/articles/media-services/media-services-rest-configure-content-key-auth-policy.md
@@ -467,13 +467,14 @@ Add AuthorizationPolicy to the ContentKey as shown [here](#AddAuthorizationPolic
}
-
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
##Next Steps
diff --git a/articles/media-services/media-services-rest-connect_programmatically.md b/articles/media-services/media-services-rest-connect_programmatically.md
index 42453d08800..d06f1efd336 100644
--- a/articles/media-services/media-services-rest-connect_programmatically.md
+++ b/articles/media-services/media-services-rest-connect_programmatically.md
@@ -166,17 +166,10 @@ The following example demonstrates HTTP request to the Media Services root URI (
>[AZURE.NOTE] Once you get the new URI, that is the URI that should be used to communicate with Media Services.
-
##Media Services learning paths
-You can view AMS learning paths here:
-
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
-
-
-
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+##Provide feedback
-
-
\ No newline at end of file
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-rest-create-contentkey.md b/articles/media-services/media-services-rest-create-contentkey.md
index df433808fd1..b76e2306cad 100644
--- a/articles/media-services/media-services-rest-create-contentkey.md
+++ b/articles/media-services/media-services-rest-create-contentkey.md
@@ -252,11 +252,10 @@ Response:
HTTP/1.1 204 No Content
-
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-rest-deliver-streaming-content.md b/articles/media-services/media-services-rest-deliver-streaming-content.md
index 28ec63272f1..35db1665ddd 100644
--- a/articles/media-services/media-services-rest-deliver-streaming-content.md
+++ b/articles/media-services/media-services-rest-deliver-streaming-content.md
@@ -180,9 +180,8 @@ example:
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
-
\ No newline at end of file
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-rest-dynamic-manifest.md b/articles/media-services/media-services-rest-dynamic-manifest.md
index 439bb693ae0..2ae9ea21d08 100644
--- a/articles/media-services/media-services-rest-dynamic-manifest.md
+++ b/articles/media-services/media-services-rest-dynamic-manifest.md
@@ -360,10 +360,12 @@ The following examples show how to add filters to your streaming URLs.
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
##See Also
diff --git a/articles/media-services/media-services-rest-encode-asset.md b/articles/media-services/media-services-rest-encode-asset.md
index 8958ea3d600..c3e6d11f3c3 100644
--- a/articles/media-services/media-services-rest-encode-asset.md
+++ b/articles/media-services/media-services-rest-encode-asset.md
@@ -260,10 +260,11 @@ If successful, the following response is returned:
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##Next Steps
diff --git a/articles/media-services/media-services-rest-get-media-processor.md b/articles/media-services/media-services-rest-get-media-processor.md
index ad09f601366..0e40e862e5e 100644
--- a/articles/media-services/media-services-rest-get-media-processor.md
+++ b/articles/media-services/media-services-rest-get-media-processor.md
@@ -86,12 +86,14 @@ Response:
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
##Next Steps
diff --git a/articles/media-services/media-services-rest-get-started.md b/articles/media-services/media-services-rest-get-started.md
index 8abd6a9cbc7..00dc91fb449 100644
--- a/articles/media-services/media-services-rest-get-started.md
+++ b/articles/media-services/media-services-rest-get-started.md
@@ -1190,16 +1190,15 @@ To stream you video, use [Azure Media Services Player](http://amsplayer.azureweb
To test progressive download, paste a URL into a browser (for example, IE, Chrome, Safari).
-##Next Steps
+##Next Steps: Media Services learning paths
-###Media Services learning paths
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-You can view AMS learning paths here:
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-### Looking for something else?
+## Looking for something else?
If this topic didn't contain what you were expecting, is missing something, or in some other way didn't meet your needs, please provide us with you feedback using the Disqus thread below.
diff --git a/articles/media-services/media-services-rest-how-to-use.md b/articles/media-services/media-services-rest-how-to-use.md
index e4f368706e4..1bc340cd656 100644
--- a/articles/media-services/media-services-rest-how-to-use.md
+++ b/articles/media-services/media-services-rest-how-to-use.md
@@ -90,19 +90,14 @@ You should append "?api-version=2.x" to the end of the URI if you want to view t
-
##Media Services learning paths
-You can view AMS learning paths here:
-
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
-
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-
[Management Portal]: http://manage.windowsazure.com/
diff --git a/articles/media-services/media-services-rest-manage-entities.md b/articles/media-services/media-services-rest-manage-entities.md
index e972b42f2e8..f9ef5d8aa8f 100644
--- a/articles/media-services/media-services-rest-manage-entities.md
+++ b/articles/media-services/media-services-rest-manage-entities.md
@@ -150,10 +150,11 @@ The following example shows how to delete a Locator that was used to upload a fi
Content-Length: 0
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-rest-upload-files.md b/articles/media-services/media-services-rest-upload-files.md
index 0dacbcff462..3ae7fc066b3 100644
--- a/articles/media-services/media-services-rest-upload-files.md
+++ b/articles/media-services/media-services-rest-upload-files.md
@@ -514,12 +514,15 @@ You can monitor the progress of bulk ingesting operations for an IngestManifest
Host: media.windows.net
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
diff --git a/articles/media-services/media-services-roll-storage-access-keys.md b/articles/media-services/media-services-roll-storage-access-keys.md
index 60ad49f3217..6373001a080 100644
--- a/articles/media-services/media-services-roll-storage-access-keys.md
+++ b/articles/media-services/media-services-roll-storage-access-keys.md
@@ -144,13 +144,15 @@ After 30 minutes you can recreate your OnDemand locators so they take dependency
Use the same procedure as described in [step 3](media-services-roll-storage-access-keys.md#step-3-update-locators).
-
+
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
###Acknowledgments
diff --git a/articles/media-services/media-services-set-up-computer.md b/articles/media-services/media-services-set-up-computer.md
index 23d1cba4012..ad1a6eacb58 100644
--- a/articles/media-services/media-services-set-up-computer.md
+++ b/articles/media-services/media-services-set-up-computer.md
@@ -28,8 +28,6 @@
Use the Azure portal, the .NET SDK, or the REST API to create an Azure Media Services account.
-
-
## Set up the development environment
@@ -45,10 +43,11 @@ Choose .NET or the REST API to programmatically connect to Azure Media Services.
[AZURE.INCLUDE [media-services-selector-connect](../../includes/media-services-selector-connect.md)]
-##Next steps: AMS learning paths
+##Next steps: Azure Media Services learning paths
+
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-You can view AMS learning paths here:
+##Provide feedback
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-sspk.md b/articles/media-services/media-services-sspk.md
index 123f943a77e..4054569e752 100644
--- a/articles/media-services/media-services-sspk.md
+++ b/articles/media-services/media-services-sspk.md
@@ -183,4 +183,12 @@ Interim and Final SSPK licensees can submit technical questions to [smoothpk@mic
- Wistron Corporation
- WOOJEON & HANDAN Co., Ltd
- WOOX Innovations Limited
-- ZTE Corporation
\ No newline at end of file
+- ZTE Corporation
+
+##Media Services learning paths
+
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-static-packaging.md b/articles/media-services/media-services-static-packaging.md
index 2037a5ca54f..32d78e45502 100644
--- a/articles/media-services/media-services-static-packaging.md
+++ b/articles/media-services/media-services-static-packaging.md
@@ -1443,7 +1443,8 @@ Make sure to update the following code to point to the folder where your input M
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-troubleshooting-live-streaming.md b/articles/media-services/media-services-troubleshooting-live-streaming.md
index f1600478a30..3a1b805f499 100644
--- a/articles/media-services/media-services-troubleshooting-live-streaming.md
+++ b/articles/media-services/media-services-troubleshooting-live-streaming.md
@@ -65,4 +65,12 @@ This section gives suggestions on how to troubleshoot problems related to on-pre
**Troubleshooting steps**: Navigate to the "Streaming Endpoint" tab in the AMSE tool, and confirm there is a Streaming Endpoint running with one streaming unit.
->[AZURE.NOTE] If after following the troubleshooting steps you still cannot successfully stream, submit a support ticket using the Azure Management Portal.
\ No newline at end of file
+>[AZURE.NOTE] If after following the troubleshooting steps you still cannot successfully stream, submit a support ticket using the Azure Management Portal.
+
+##Media Services learning paths
+
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
diff --git a/articles/media-services/media-services-use-osmf-smooth-streaming-client-plugin.md b/articles/media-services/media-services-use-osmf-smooth-streaming-client-plugin.md
index 1bd9974b9e2..3e06caec1ba 100644
--- a/articles/media-services/media-services-use-osmf-smooth-streaming-client-plugin.md
+++ b/articles/media-services/media-services-use-osmf-smooth-streaming-client-plugin.md
@@ -398,13 +398,14 @@ The Smooth Streaming for OSMF dynamic plugin is compatible with [Strobe Media Pl
For more information on general OSMF development, please see the official [OSMF development page](http://osmf.org/resources.html).
-
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
##See Also
diff --git a/articles/media-services/media-services-user-voice.md b/articles/media-services/media-services-user-voice.md
new file mode 100644
index 00000000000..8dc57b8dcad
--- /dev/null
+++ b/articles/media-services/media-services-user-voice.md
@@ -0,0 +1,48 @@
+
+
+
+
+
+# Azure Media Services User Voice
+
+The [Azure Media Services User Voice](https://feedback.azure.com/forums/169396-media-services) forum invites you to provide feedback and suggest new feature requests.
+
+You can view and provide feedback based on a category.
+
+![Categories](./media/media-services-user-voice/media-services-user-voice-categories.png)
+
+Or, just access specific categories using these URLs.
+
+- [Azure Media Player](https://feedback.azure.com/forums/169396-media-services/category/109320-azure-media-player)
+- [Client SDK Libraries](https://feedback.azure.com/forums/169396-media-services/category/144435-client-sdks)
+- [Encoding and Processing](https://feedback.azure.com/forums/169396-media-services/category/144411-encoding-and-processing)
+- [Live Streaming](https://feedback.azure.com/forums/169396-media-services/category/144414-live-streaming)
+- [Azure Portal](https://feedback.azure.com/forums/169396-media-services/category/144432-portal)
+- [REST API and Platform](https://feedback.azure.com/forums/169396-media-services/category/144423-rest-api-and-platform)
+- [VoD Streaming](https://feedback.azure.com/forums/169396-media-services/category/144429-vod-streaming)
+
+You can view existing requests and track status. If you agree with the feedback or suggestion, you can add your vote.
+
+![Vote](./media/media-services-user-voice/media-services-user-voice-vote.png)
+
+
+##Media Services learning paths
+
+You can view AMS learning paths here:
+
+- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
+- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
\ No newline at end of file
diff --git a/articles/media-services/media-services-video-on-demand-workflow.md b/articles/media-services/media-services-video-on-demand-workflow.md
index bafa0cda8c0..63442e756df 100644
--- a/articles/media-services/media-services-video-on-demand-workflow.md
+++ b/articles/media-services/media-services-video-on-demand-workflow.md
@@ -91,13 +91,14 @@ This article contains links to topics that show how to set up your development e
For concepts related to delivering your content on demand, see [Media Services Concepts](media-services-concepts.md).
players.md).
+##Media Services learning paths
-##Next steps: AMS learning paths
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
-You can view AMS learning paths here:
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
[vod-overview]: ./media/media-services-video-on-demand-workflow/media-services-video-on-demand.png
diff --git a/articles/media-services/media-services-workflow-designer.md b/articles/media-services/media-services-workflow-designer.md
index 86356229e4f..e4dc3b8dae7 100644
--- a/articles/media-services/media-services-workflow-designer.md
+++ b/articles/media-services/media-services-workflow-designer.md
@@ -79,10 +79,12 @@ Day 3 video covers:
##Media Services learning paths
-You can view AMS learning paths here:
+[AZURE.INCLUDE [media-services-learning-paths-include](../../includes/media-services-learning-paths-include.md)]
+
+##Provide feedback
+
+[AZURE.INCLUDE [media-services-user-voice-include](../../includes/media-services-user-voice-include.md)]
-- [AMS Live Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-live/)
-- [AMS on Demand Streaming Workflow](http://azure.microsoft.com/documentation/learning-paths/media-services-streaming-on-demand/)
If you need support or have questions about creating custom workflows in the Workflow designer tool, please send email to mepd@microsoft.com.
diff --git a/articles/media-services/media/media-services-user-voice/media-services-user-voice-categories.png b/articles/media-services/media/media-services-user-voice/media-services-user-voice-categories.png
new file mode 100644
index 00000000000..1d0cfc6ece5
Binary files /dev/null and b/articles/media-services/media/media-services-user-voice/media-services-user-voice-categories.png differ
diff --git a/articles/media-services/media/media-services-user-voice/media-services-user-voice-vote.png b/articles/media-services/media/media-services-user-voice/media-services-user-voice-vote.png
new file mode 100644
index 00000000000..51607ef9a51
Binary files /dev/null and b/articles/media-services/media/media-services-user-voice/media-services-user-voice-vote.png differ
diff --git a/articles/mobile-engagement/media/mobile-engagement-windows-store-dotnet-get-started/dashboard_app_name.png b/articles/mobile-engagement/media/mobile-engagement-windows-store-dotnet-get-started/dashboard_app_name.png
new file mode 100644
index 00000000000..ba7d6b6c2bd
Binary files /dev/null and b/articles/mobile-engagement/media/mobile-engagement-windows-store-dotnet-get-started/dashboard_app_name.png differ
diff --git a/articles/mobile-engagement/media/mobile-engagement-windows-store-dotnet-get-started/dashboard_create_app.png b/articles/mobile-engagement/media/mobile-engagement-windows-store-dotnet-get-started/dashboard_create_app.png
new file mode 100644
index 00000000000..a5d0dcb8cb0
Binary files /dev/null and b/articles/mobile-engagement/media/mobile-engagement-windows-store-dotnet-get-started/dashboard_create_app.png differ
diff --git a/articles/mobile-engagement/media/mobile-engagement-windows-store-dotnet-get-started/dashboard_services_push.png b/articles/mobile-engagement/media/mobile-engagement-windows-store-dotnet-get-started/dashboard_services_push.png
new file mode 100644
index 00000000000..f07262b9d9c
Binary files /dev/null and b/articles/mobile-engagement/media/mobile-engagement-windows-store-dotnet-get-started/dashboard_services_push.png differ
diff --git a/articles/mobile-engagement/media/mobile-engagement-windows-store-dotnet-get-started/dashboard_services_push_1.png b/articles/mobile-engagement/media/mobile-engagement-windows-store-dotnet-get-started/dashboard_services_push_1.png
new file mode 100644
index 00000000000..988f6911886
Binary files /dev/null and b/articles/mobile-engagement/media/mobile-engagement-windows-store-dotnet-get-started/dashboard_services_push_1.png differ
diff --git a/articles/mobile-engagement/media/mobile-engagement-windows-store-dotnet-get-started/dashboard_services_push_creds.png b/articles/mobile-engagement/media/mobile-engagement-windows-store-dotnet-get-started/dashboard_services_push_creds.png
new file mode 100644
index 00000000000..26755ee40e7
Binary files /dev/null and b/articles/mobile-engagement/media/mobile-engagement-windows-store-dotnet-get-started/dashboard_services_push_creds.png differ
diff --git a/articles/mobile-engagement/mobile-engagement-windows-store-dotnet-get-started.md b/articles/mobile-engagement/mobile-engagement-windows-store-dotnet-get-started.md
index e607bec994c..9f6b100f0c6 100644
--- a/articles/mobile-engagement/mobile-engagement-windows-store-dotnet-get-started.md
+++ b/articles/mobile-engagement/mobile-engagement-windows-store-dotnet-get-started.md
@@ -159,16 +159,35 @@ You're all set for sending a toast. Now we will verify that you have correctly c
###Grant access to Mobile Engagement to send notifications
-1. You'll have to associate your app with a Windows Store App to obtain your **Package security identifier (SID)** and your **Secret Key** (Client Secret). You can create an app from the [Windows Store Dev Center] and then make sure to use **Associate App with Store** from Visual Studio.
+1. Open [Windows Store Dev Center] in your web browser, login and create an account if necessary.
+2. Click **Dashboard** at the top right corner and then click **Create a new app** from the left panel menu.
- ![][7]
+ ![][9]
+
+2. Create your app by reserving its name.
+
+ ![][10]
+
+3. Once the app has been created, navigate to **Services -> Push notifications** from the left menu.
+
+ ![][11]
+
+4. In the Push notifications section, click on **Live Services site** link.
-2. Navigate to the **Settings** of your Mobile Engagement portal, and click the **Native Push** section on the left.
+ ![][12]
-3. Click the **Edit** button to enter your **Package security identifier (SID)** and your **Secret Key** as shown below:
+5. You will be navigated to the Push credentials section. Make sure you are in the **App Settings** section and then copy your **Package SID** and **Client secret**
+
+ ![][13]
+
+6. Navigate to the **Settings** of your Mobile Engagement portal, and click the **Native Push** section on the left. Then, click the **Edit** button to enter your **Package security identifier (SID)** and your **Secret Key** as shown below:
![][6]
+8. Finally make sure that you have associated your Visual Studio app with this created app in the App store. You need to click on **Associate App with Store** from Visual Studio to do this.
+
+ ![][7]
+
##Send a notification to your app
[AZURE.INCLUDE [Create Windows Push campaign](../../includes/mobile-engagement-windows-push-campaign.md)]
@@ -181,7 +200,7 @@ If you are seeing an in-app notification but not a toast notification and you ar
[Mobile Engagement Windows Universal SDK documentation]: ../mobile-engagement-windows-store-integrate-engagement/
[MicrosoftAzure.MobileEngagement]: http://go.microsoft.com/?linkid=9864592
-[Windows Store Dev Center]: http://go.microsoft.com/fwlink/p/?linkid=266582&clcid=0x409
+[Windows Store Dev Center]: https://dev.windows.com
[Windows Universal Apps - Overlay integration]: ../mobile-engagement-windows-store-integrate-engagement-reach/#overlay-integration
@@ -192,4 +211,10 @@ If you are seeing an in-app notification but not a toast notification and you ar
[6]: ./media/mobile-engagement-windows-store-dotnet-get-started/enter-credentials.png
[7]: ./media/mobile-engagement-windows-store-dotnet-get-started/associate-app-store.png
[8]: ./media/mobile-engagement-windows-store-dotnet-get-started/vs-suspend.png
+[9]: ./media/mobile-engagement-windows-store-dotnet-get-started/dashboard_create_app.png
+[10]: ./media/mobile-engagement-windows-store-dotnet-get-started/dashboard_app_name.png
+[11]: ./media/mobile-engagement-windows-store-dotnet-get-started/dashboard_services_push.png
+[12]: ./media/mobile-engagement-windows-store-dotnet-get-started/dashboard_services_push_1.png
+[13]: ./media/mobile-engagement-windows-store-dotnet-get-started/dashboard_services_push_creds.png
+
diff --git a/articles/mobile-services/vs-mobile-services-cordova-getting-started.md b/articles/mobile-services/vs-mobile-services-cordova-getting-started.md
index 66ee7bf2eb0..74ebec3ed33 100644
--- a/articles/mobile-services/vs-mobile-services-cordova-getting-started.md
+++ b/articles/mobile-services/vs-mobile-services-cordova-getting-started.md
@@ -3,7 +3,7 @@
description="Describes the first steps you can take after connecting your Cordova project to Azure Mobile Services by using Visual Studio Connected Services."
services="mobile-services"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor=""/>
@@ -14,7 +14,7 @@
ms.devlang="multiple"
ms.topic="article"
ms.date="09/17/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Getting Started with Mobile Services (Cordova Projects)
diff --git a/articles/mobile-services/vs-mobile-services-cordova-what-happened.md b/articles/mobile-services/vs-mobile-services-cordova-what-happened.md
index 085c1b151b2..3d9b77ef8f8 100644
--- a/articles/mobile-services/vs-mobile-services-cordova-what-happened.md
+++ b/articles/mobile-services/vs-mobile-services-cordova-what-happened.md
@@ -3,7 +3,7 @@
description="Describes what happened to your Azure Cordova project after adding Azure Mobile Services by using Visual Studio Connected Services "
services="mobile-services"
documentationCenter="na"
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor=""/>
@@ -14,7 +14,7 @@
ms.devlang="multiple"
ms.topic="article"
ms.date="09/17/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# What happened to my Azure Cordova project after adding Azure Mobile Services by using Visual Studio Connected Services?
diff --git a/articles/mobile-services/vs-mobile-services-dotnet-getting-started.md b/articles/mobile-services/vs-mobile-services-dotnet-getting-started.md
index e6684034c48..48415ae3b31 100644
--- a/articles/mobile-services/vs-mobile-services-dotnet-getting-started.md
+++ b/articles/mobile-services/vs-mobile-services-dotnet-getting-started.md
@@ -3,7 +3,7 @@
description="How to get started with Azure Mobile Services in a Visual Studio .NET project"
services="mobile-services"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor=""/>
@@ -14,7 +14,7 @@
ms.devlang="dotnet"
ms.topic="article"
ms.date="09/17/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Getting Started with Mobile Services (.NET Projects)
diff --git a/articles/mobile-services/vs-mobile-services-dotnet-what-happened.md b/articles/mobile-services/vs-mobile-services-dotnet-what-happened.md
index 21e9085e878..cec147e5469 100644
--- a/articles/mobile-services/vs-mobile-services-dotnet-what-happened.md
+++ b/articles/mobile-services/vs-mobile-services-dotnet-what-happened.md
@@ -3,7 +3,7 @@
description="Describes what happened in your Visual Studio .NET project after adding Azure Mobile Services by using Connected Services "
services="mobile-services"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor=""/>
@@ -14,7 +14,7 @@
ms.devlang="dotnet"
ms.topic="article"
ms.date="09/17/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# What happened to my Visual Studio .NET project after adding Azure Mobile Services by using Connected Services?
diff --git a/articles/mobile-services/vs-mobile-services-javascript-getting-started.md b/articles/mobile-services/vs-mobile-services-javascript-getting-started.md
index 53287d624ce..88c2a1e72e2 100644
--- a/articles/mobile-services/vs-mobile-services-javascript-getting-started.md
+++ b/articles/mobile-services/vs-mobile-services-javascript-getting-started.md
@@ -3,7 +3,7 @@
description="How to get started with Mobile Services in a JavaScript project in Visual Studio"
services="mobile-services"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor=""/>
@@ -14,7 +14,7 @@
ms.devlang="JavaScript"
ms.topic="article"
ms.date="09/17/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Getting Started with with a Javascript mobile app after adding Azure Mobile Services by using Visual Studio Connected Services
diff --git a/articles/mobile-services/vs-mobile-services-javascript-what-happened.md b/articles/mobile-services/vs-mobile-services-javascript-what-happened.md
index cf8eae31dbb..9f418cd4793 100644
--- a/articles/mobile-services/vs-mobile-services-javascript-what-happened.md
+++ b/articles/mobile-services/vs-mobile-services-javascript-what-happened.md
@@ -3,7 +3,7 @@
description="Describes what happened to your Azure Mobile Services project in Visual Studio"
services="mobile-services"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor=""/>
@@ -14,7 +14,7 @@
ms.devlang="JavaScript"
ms.topic="article"
ms.date="09/23/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# What happens to my Javascript project when I add Azure Mobile Services using Connected Visual Studio Services?
diff --git a/articles/sql-data-warehouse/sql-data-warehouse-overview-expectations.md b/articles/sql-data-warehouse/sql-data-warehouse-overview-expectations.md
index bcfbb235937..2680ba9f1ef 100644
--- a/articles/sql-data-warehouse/sql-data-warehouse-overview-expectations.md
+++ b/articles/sql-data-warehouse/sql-data-warehouse-overview-expectations.md
@@ -62,7 +62,7 @@ Based on telemetry data, we estimate the current reliability of Azure SQL Data W
### Service uptime
-Azure SQL Data Warehouse may have up to 4 maintenance events per month to install critical fixes. Each event may cause query failures for up to 2 hours. The time will depend on the number of DWUs allocated to the service. We will make every attempt to notify these events 48 hours in advance.
+Azure SQL Data Warehouse may have up to 4 maintenance events per month to install critical fixes. Each event may cause query failures for up to 2 hours. The time will depend on the number of DWUs allocated to the service.
## Next steps
diff --git a/articles/storage/vs-storage-aspnet-getting-started-blobs.md b/articles/storage/vs-storage-aspnet-getting-started-blobs.md
index 22bd603aa9d..305775e17a3 100644
--- a/articles/storage/vs-storage-aspnet-getting-started-blobs.md
+++ b/articles/storage/vs-storage-aspnet-getting-started-blobs.md
@@ -3,7 +3,7 @@
description="How to get started using Azure Blob storage in an ASP.NET project in Visual Studio after connecting to a storage account using Visual Studio connected services"
services="storage"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Get started with blob storage and Visual Studio connected services (ASP.NET)
diff --git a/articles/storage/vs-storage-aspnet-getting-started-queues.md b/articles/storage/vs-storage-aspnet-getting-started-queues.md
index 366bb4d71ef..ae5cda2e1eb 100644
--- a/articles/storage/vs-storage-aspnet-getting-started-queues.md
+++ b/articles/storage/vs-storage-aspnet-getting-started-queues.md
@@ -3,7 +3,7 @@
description="How to get started using Azure Queue storage in an ASP.NET project in Visual Studio after connecting to a storage account using Visual Studio connected services"
services="storage"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Get started with Azure Queue storage and Visual Studio connected services
diff --git a/articles/storage/vs-storage-aspnet-getting-started-tables.md b/articles/storage/vs-storage-aspnet-getting-started-tables.md
index 44ca5d64225..2d0e26bc9c4 100644
--- a/articles/storage/vs-storage-aspnet-getting-started-tables.md
+++ b/articles/storage/vs-storage-aspnet-getting-started-tables.md
@@ -3,7 +3,7 @@
description="How to get started using Azure Table storage in an ASP.NET project in Visual Studio after connecting to a storage account using Visual Studio connected services"
services="storage"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Get started with table storage and Visual Studio connected services (ASP.NET)
> [AZURE.SELECTOR]
diff --git a/articles/storage/vs-storage-aspnet-what-happened.md b/articles/storage/vs-storage-aspnet-what-happened.md
index 754eb2fa175..14533299c7b 100644
--- a/articles/storage/vs-storage-aspnet-what-happened.md
+++ b/articles/storage/vs-storage-aspnet-what-happened.md
@@ -3,7 +3,7 @@
description="Describes what happens after adding Azure Storage to a ASP.NET project using Visual Studio connected services"
services="storage"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# What happened to my ASP.NET project (Visual Studio Azure Storage connected service)?
diff --git a/articles/storage/vs-storage-aspnet5-getting-started-blobs.md b/articles/storage/vs-storage-aspnet5-getting-started-blobs.md
index 63854dd9cfe..05f7b6f964d 100644
--- a/articles/storage/vs-storage-aspnet5-getting-started-blobs.md
+++ b/articles/storage/vs-storage-aspnet5-getting-started-blobs.md
@@ -3,7 +3,7 @@
description="How to get started using Azure Blob storage in a Visual Studio ASP.NET 5 project after you have created a storage account using Visual Studio connected services"
services="storage"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Get started with Azure Blob storage and Visual Studio connected services (ASP.NET 5)
diff --git a/articles/storage/vs-storage-aspnet5-getting-started-queues.md b/articles/storage/vs-storage-aspnet5-getting-started-queues.md
index d5aa08b032a..b7c7fb71cf9 100644
--- a/articles/storage/vs-storage-aspnet5-getting-started-queues.md
+++ b/articles/storage/vs-storage-aspnet5-getting-started-queues.md
@@ -3,7 +3,7 @@
description="How to get started using Azure queue storage in an ASP.NET 5 project in Visual Studio"
services="storage"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Get started with queue storage and Visual Studio connected services (ASP.NET 5)
diff --git a/articles/storage/vs-storage-aspnet5-getting-started-tables.md b/articles/storage/vs-storage-aspnet5-getting-started-tables.md
index 642a5762b20..6760f8ed57c 100644
--- a/articles/storage/vs-storage-aspnet5-getting-started-tables.md
+++ b/articles/storage/vs-storage-aspnet5-getting-started-tables.md
@@ -3,7 +3,7 @@
description="How to get started with Azure Table storage in an ASP.NET 5 project in Visual Studio after connecting to a storage account using Visual Studio connected services"
services="storage"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# How to get started with Azure Table storage and Visual Studio connected services
diff --git a/articles/storage/vs-storage-aspnet5-what-happened.md b/articles/storage/vs-storage-aspnet5-what-happened.md
index a2b10d15d08..b8edbc878ea 100644
--- a/articles/storage/vs-storage-aspnet5-what-happened.md
+++ b/articles/storage/vs-storage-aspnet5-what-happened.md
@@ -3,7 +3,7 @@
description="Describes what happens after connecting to an Azure storage account in a Visual Studio ASP.NET 5 project using Visual Studio connected services"
services="storage"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# What happened to my ASP.NET 5 project (Visual Studio Azure Storage connected services)?
diff --git a/articles/storage/vs-storage-cloud-services-getting-started-blobs.md b/articles/storage/vs-storage-cloud-services-getting-started-blobs.md
index 47340246d33..367fa07fbdf 100644
--- a/articles/storage/vs-storage-cloud-services-getting-started-blobs.md
+++ b/articles/storage/vs-storage-cloud-services-getting-started-blobs.md
@@ -3,7 +3,7 @@
description="How to get started using Azure Blob storage in a cloud service project in Visual Studio after connecting to a storage account using Visual Studio connected services"
services="storage"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Get started with Azure Blob Storage and Visual Studio connected services (cloud services projects)
diff --git a/articles/storage/vs-storage-cloud-services-getting-started-queues.md b/articles/storage/vs-storage-cloud-services-getting-started-queues.md
index f6ffe3502d3..2efcb613638 100644
--- a/articles/storage/vs-storage-cloud-services-getting-started-queues.md
+++ b/articles/storage/vs-storage-cloud-services-getting-started-queues.md
@@ -3,7 +3,7 @@
description="How to get started using Azure Queue storage in a cloud service project in Visual Studio after connecting to a storage account using Visual Studio connected services"
services="storage"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Getting started with Azure Queue storage and Visual Studio connected services (cloud services projects)
diff --git a/articles/storage/vs-storage-cloud-services-getting-started-tables.md b/articles/storage/vs-storage-cloud-services-getting-started-tables.md
index 66dfaa3f153..a7e0db6b83f 100644
--- a/articles/storage/vs-storage-cloud-services-getting-started-tables.md
+++ b/articles/storage/vs-storage-cloud-services-getting-started-tables.md
@@ -3,7 +3,7 @@
description="How to get started using Azure Table storage in a cloud service project in Visual Studio after connecting to a storage account using Visual Studio connected services"
services="storage"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Getting started with Azure table storage and Visual Studio connected services (cloud services projects)
diff --git a/articles/storage/vs-storage-cloud-services-what-happened.md b/articles/storage/vs-storage-cloud-services-what-happened.md
index 9f86b304e22..108c9e6a3ae 100644
--- a/articles/storage/vs-storage-cloud-services-what-happened.md
+++ b/articles/storage/vs-storage-cloud-services-what-happened.md
@@ -3,7 +3,7 @@
description="Describes what happens in a cloud services project after connecting to an Azure storage account using Visual Studio connected services"
services="storage"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# What happened to my cloud services project (Visual Studio Azure Storage connected service)?
diff --git a/articles/storage/vs-storage-webjobs-getting-started-blobs.md b/articles/storage/vs-storage-webjobs-getting-started-blobs.md
index 69b3cc4a8b6..56cada5d0e3 100644
--- a/articles/storage/vs-storage-webjobs-getting-started-blobs.md
+++ b/articles/storage/vs-storage-webjobs-getting-started-blobs.md
@@ -3,7 +3,7 @@
description="How to get started using Blob storage in a WebJob project after connecting to an Azure storage using Visual Studio connected services."
services="storage"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Get started with Azure Blob storage and Visual Studio connected services (WebJob projects)
diff --git a/articles/storage/vs-storage-webjobs-getting-started-queues.md b/articles/storage/vs-storage-webjobs-getting-started-queues.md
index c6b9b97fc3b..b39a44eca14 100644
--- a/articles/storage/vs-storage-webjobs-getting-started-queues.md
+++ b/articles/storage/vs-storage-webjobs-getting-started-queues.md
@@ -3,7 +3,7 @@
description="How to get started using Azure Queue storage in a WebJob project after connecting to a storage account using Visual Studio connected services."
services="storage"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Getting started with Azure Queue storage and Visual Studio connected services (WebJob Projects)
diff --git a/articles/storage/vs-storage-webjobs-getting-started-tables.md b/articles/storage/vs-storage-webjobs-getting-started-tables.md
index d90822dee0c..76d79a36e64 100644
--- a/articles/storage/vs-storage-webjobs-getting-started-tables.md
+++ b/articles/storage/vs-storage-webjobs-getting-started-tables.md
@@ -3,7 +3,7 @@
description="How to get started using Azure Table storage in an Azure WebJobs project in Visual Studio after connecting to a storage account using Visual Studio connected services"
services="storage"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# Getting Started with Azure Storage (Azure WebJob Projects)
diff --git a/articles/storage/vs-storage-webjobs-what-happened.md b/articles/storage/vs-storage-webjobs-what-happened.md
index 7b2b1629a6e..057f01f0bb4 100644
--- a/articles/storage/vs-storage-webjobs-what-happened.md
+++ b/articles/storage/vs-storage-webjobs-what-happened.md
@@ -3,7 +3,7 @@
description="Describes what happened in a Azure WebJob project after connecting to a storage account using Visual Studio connected services"
services="storage"
documentationCenter=""
- authors="patshea123"
+ authors="tarcher"
manager="douge"
editor="tglee"/>
@@ -14,7 +14,7 @@
ms.devlang="na"
ms.topic="article"
ms.date="09/03/2015"
- ms.author="patshea"/>
+ ms.author="tarcher"/>
# What happened to my WebJob project (Visual Studio Azure Storage connected service)?
diff --git a/articles/virtual-machines/virtual-machines-capture-image-windows-server.md b/articles/virtual-machines/virtual-machines-capture-image-windows-server.md
index c61b1558e01..a15943757e9 100644
--- a/articles/virtual-machines/virtual-machines-capture-image-windows-server.md
+++ b/articles/virtual-machines/virtual-machines-capture-image-windows-server.md
@@ -1,6 +1,6 @@
-#Capture an image of a Windows virtual machine created with the classic deployment model.
+#Capture an image of an Azure Windows virtual machine created with the classic deployment model.
[AZURE.INCLUDE [learn-about-deployment-models](../../includes/learn-about-deployment-models-classic-include.md)] Resource Manager model.
-This article shows you how to capture an Azure virtual machine running Windows so you can use it as an image to create other virtual machines. This image includes the operating system disk and any data disks that are attached to the virtual machine. It doesn't include networking configurations, so you'll need to configure those when you create the other virtual machines that use the template.
+This article shows you how to capture an Azure virtual machine running Windows so you can use it as an image to create other virtual machines. This image includes the operating system disk and any data disks that are attached to the virtual machine. It doesn't include networking configurations, so you'll need to configure those when you create the other virtual machines that use the image.
Azure stores the image under **My Images**. This is the same place where any images you've uploaded are stored. For details about images, see [About images for virtual machines](virtual-machines-images.md).
@@ -30,12 +30,15 @@ Azure stores the image under **My Images**. This is the same place where any ima
These steps assume that you've already created an Azure virtual machine and configured the operating system, including attaching any data disks. If you haven't done this yet, see these instructions:
-- [Create a custom virtual machine running Windows] []
-- [How to attach a data disk to a virtual machine] []
+- [Create a virtual machine from an image](virtual-machines-create-custom.md)
+- [How to attach a data disk to a virtual machine](storage-windows-attach-disk.md)
-> [AZURE.WARNING] This process deletes the original virtual machine after it's captured, and is not intended as a way to back up a virtual machine. One possible way to do that is Azure Backup, which is available as a preview in certain regions. For details, see [Back up Azure virtual machines](../backup/backup-azure-vms.md). Other solutions are available from certified partners. To find out what’s currently available, search the Azure Marketplace.
+> [AZURE.WARNING] This process deletes the original virtual machine after it's captured.
-##Capture the virtual machine##
+This is not intended as a way to back up a virtual machine. One possible way to do that is Azure Backup, which is available as a preview in certain regions. For details, see [Back up Azure virtual machines](../backup/backup-azure-vms.md). Other solutions are available from certified partners. To find out what’s currently available, search the Azure Marketplace.
+
+
+##Capture the virtual machine
1. In the [Azure portal](http://manage.windowsazure.com), **Connect** to the virtual machine. For instructions, see [How to sign in to a virtual machine running Windows Server] [].
@@ -71,11 +74,12 @@ These steps assume that you've already created an Azure virtual machine and conf
![Image capture successful](./media/virtual-machines-capture-image-windows-server/VMCapturedImageAvailable.png)
-##Next steps##
-The image is ready to be used to create virtual machines. To do this, you'll create a virtual machine by using the **From Gallery** menu item and selecting the image you just created. For instructions, see [Create a custom virtual machine running Windows] [].
+##Next steps
+
+The image is ready to be used to create virtual machines. To do this, you'll create a virtual machine by using the **From Gallery** menu item and selecting the image you just created. For instructions, see [Create a virtual machine from an image](virtual-machines-create-custom.md).
+
+
-[Create a custom virtual machine running Windows]: virtual-machines-windows-create-custom.md
-[How to Attach a Data Disk to a Virtual Machine]: storage-windows-attach-disk.md
[How to sign in to a virtual machine running Windows Server]: virtual-machines-log-on-windows-server.md
[How to Use Sysprep: An Introduction]: http://technet.microsoft.com/library/bb457073.aspx
[Run Sysprep.exe]: ./media/virtual-machines-capture-image-windows-server/SysprepCommand.png
diff --git a/articles/virtual-machines/virtual-machines-create-windows-powershell-resource-manager-template-simple.md b/articles/virtual-machines/virtual-machines-create-windows-powershell-resource-manager-template-simple.md
index 08bd4c6ac7b..5183fbd7edc 100644
--- a/articles/virtual-machines/virtual-machines-create-windows-powershell-resource-manager-template-simple.md
+++ b/articles/virtual-machines/virtual-machines-create-windows-powershell-resource-manager-template-simple.md
@@ -98,7 +98,7 @@ You now have a new Windows virtual machine named MyWindowsVM in your new resourc
[Create a Windows virtual machine with Azure Resource Manager and PowerShell](virtual-machines-create-windows-powershell-resource-manager.md)
-[Create a Windows virtual machine with PowerShell and Azure Service Manager](virtual-machines-create-windows-powershell-service-manager.md)
+[Create Windows virtual machines with Powershell and the classic deployment model](virtual-machines-ps-create-preconfigure-windows-vms.md)
[Virtual machines documentation](http://azure.microsoft.com/documentation/services/virtual-machines/)
diff --git a/articles/virtual-machines/virtual-machines-create-windows-powershell-resource-manager-template.md b/articles/virtual-machines/virtual-machines-create-windows-powershell-resource-manager-template.md
index 3fe11291eb7..d8f762b4d92 100644
--- a/articles/virtual-machines/virtual-machines-create-windows-powershell-resource-manager-template.md
+++ b/articles/virtual-machines/virtual-machines-create-windows-powershell-resource-manager-template.md
@@ -282,7 +282,7 @@ You now have a new Windows virtual machine named MyWindowsVM in your new resourc
[Create a Windows virtual machine with Azure Resource Manager and PowerShell](virtual-machines-create-windows-powershell-resource-manager.md)
-[Create a Windows virtual machine with PowerShell and Azure Service Manager](virtual-machines-create-windows-powershell-service-manager.md)
+[Create Windows virtual machines with Powershell and the classic deployment model](virtual-machines-ps-create-preconfigure-windows-vms.md)
[Virtual machines documentation](http://azure.microsoft.com/documentation/services/virtual-machines/)
diff --git a/articles/virtual-machines/virtual-machines-create-windows-powershell-resource-manager.md b/articles/virtual-machines/virtual-machines-create-windows-powershell-resource-manager.md
index 8008b1e1d74..8b8e54184bd 100644
--- a/articles/virtual-machines/virtual-machines-create-windows-powershell-resource-manager.md
+++ b/articles/virtual-machines/virtual-machines-create-windows-powershell-resource-manager.md
@@ -19,7 +19,7 @@
# Create a Windows VM with Resource Manager and PowerShell
-[AZURE.INCLUDE [learn-about-deployment-models](../../includes/learn-about-deployment-models-rm-include.md)] [classic deployment model](virtual-machines-create-windows-powershell-service-manager.md).
+[AZURE.INCLUDE [learn-about-deployment-models](../../includes/learn-about-deployment-models-rm-include.md)] [classic deployment model](virtual-machines-ps-create-preconfigure-windows-vms.md).
This topic describes how to quickly create a Windows-based Azure virtual machine using Azure Resource Manager and PowerShell.
@@ -131,7 +131,7 @@ Here is an example of you might see:
[Create a Windows virtual machine with a Resource Manager template and PowerShell](virtual-machines-create-windows-powershell-resource-manager-template-simple.md)
-[Create a Windows virtual machine with PowerShell and Azure Service Management](virtual-machines-create-windows-powershell-service-manager.md)
+[Create Windows virtual machines with Powershell and the classic deployment model](virtual-machines-ps-create-preconfigure-windows-vms.md)
[Virtual machines documentation](http://azure.microsoft.com/documentation/services/virtual-machines/)
diff --git a/articles/virtual-machines/virtual-machines-create-windows-powershell-service-manager.md b/articles/virtual-machines/virtual-machines-create-windows-powershell-service-manager.md
deleted file mode 100644
index 4e21eba16ec..00000000000
--- a/articles/virtual-machines/virtual-machines-create-windows-powershell-service-manager.md
+++ /dev/null
@@ -1,211 +0,0 @@
-
-
-
-
-# Create and manage a Windows virtual machine using Azure PowerShell
-
-This article describes how to create and manage Windows virtual machines using Azure PowerShell.
-
-[AZURE.INCLUDE [learn-about-deployment-models](../../includes/learn-about-deployment-models-classic-include.md)] [Resource Manager model](virtual-machines-deploy-rmtemplates-powershell.md).
-
-
-
-## Set up Azure PowerShell
-
-If you have already installed Azure PowerShell, you must have Azure PowerShell version 0.8.0 or later. You can check the version of Azure PowerShell that you have installed by using this command at the Azure PowerShell command prompt:
-
- Get-Module azure | format-table version
-
-If you haven't done so already, use the instructions in [How to install and configure Azure PowerShell](../install-configure-powershell.md) to install Azure PowerShell on your local computer. Then, open an Azure PowerShell command prompt.
-
-First, you must sign in to Azure by using this command:
-
- Add-AzureAccount
-
-Specify the email address of your Azure account and its password in the Microsoft Azure sign-in dialog.
-
-Next, if you have multiple Azure subscriptions, you need to set your Azure subscription. To see a list of your current subscriptions, run this command:
-
- Get-AzureSubscription | sort SubscriptionName | Select SubscriptionName
-
-Now, replace everything within the quotes, including the < and > characters, with the correct subscription name and run these commands:
-
- $subscrName=""
- Select-AzureSubscription -SubscriptionName $subscrName –Current
-
-## Create a virtual machine
-
-First, you need a Storage account. You can display your current list of Storage accounts by using this command:
-
- Get-AzureStorageAccount | sort Label | Select Label
-
-If you do not already have one, create a new Storage account. You must pick a unique name that contains only lowercase letters and numbers. You can test for the uniqueness of the Storage account name by using this command:
-
- Test-AzureName -Storage
-
-If this command returns "False", your proposed name is unique.
-
-You will need to specify the location of an Azure datacenter when creating a Storage account. To get a list of Azure datacenters, run this command:
-
- Get-AzureLocation | sort Name | Select Name
-
-Now, create and set the Storage account by using the following commands. Fill in the names of the storage account and replace everything within the quotes, including the < and > characters.
-
- $stAccount=""
- $locName=""
- New-AzureStorageAccount -StorageAccountName $stAccount -Location $locName
- Set-AzureStorageAccount -StorageAccountName $stAccount
- Set-AzureSubscription -SubscriptionName $subscrName -CurrentStorageAccountName $stAccount
-
-Next, you need a cloud service. If you do not have an existing cloud service, you must create one. You must pick a unique name that contains only letters, numbers, and hyphens. The first and last character in the field must be a letter or number.
-
-For example, you could name it TestCS-*UniqueSequence*, in which *UniqueSequence* is an abbreviation of your organization. For example, if your organization is named Tailspin Toys, you could name the cloud service TestCS-Tailspin.
-
-You can test for the uniqueness of the name by using this Azure PowerShell command:
-
- Test-AzureName -Service
-
-If this command returns "False", your proposed name is unique. Create the cloud service by using these commands:
-
- $csName=""
- $locName=""
- New-AzureService -Service $csName -Location $locName
-
-Next, copy this set of Azure PowerShell commands to a text editor, such as Notepad:
-
- $vmName=""
- $csName=""
- $locName=""
- $image=Get-AzureVMImage | where { $_.ImageFamily -eq "Windows Server 2012 R2 Datacenter" } | sort PublishedDate -Descending | select -ExpandProperty ImageName -First 1
- $vm=New-AzureVMConfig -Name $vmName -InstanceSize Medium -ImageName $image
- $cred=Get-Credential -Message "Type the name and password of the local administrator account."
- $vm | Add-AzureProvisioningConfig -Windows -AdminUsername $cred.GetNetworkCredential().Username -Password $cred.GetNetworkCredential().Password
- New-AzureVM –ServiceName $csName –Location $locName -VMs $vm
-
-In your text editor, fill in the name of the virtual machine, the cloud service name, and the location.
-
-Finally, copy the command set to the Clipboard and then right-click your open Azure PowerShell command prompt. This will issue the command set as a series of Azure PowerShell commands, prompt you for the name and password of the local administrator account, and create your Azure virtual machine.
-Here is an example of what running the command set looks like:
-
- PS C:\> $vmName="PSTest"
- PS C:\> $csName=" TestCS-Tailspin"
- PS C:\> $locName="West US"
- PS C:\> $image=Get-AzureVMImage | where { $_.ImageFamily -eq "Windows Server 2012 R2 Datacenter" } | sort PublishedDate -Descending | select -ExpandProperty ImageName -First 1
- VERBOSE: 3:01:17 PM - Begin Operation: Get-AzureVMImage
- VERBOSE: 3:01:22 PM - Completed Operation: Get-AzureVMImage
- VERBOSE: 3:01:22 PM - Begin Operation: Get-AzureVMImage
- VERBOSE: 3:01:23 PM - Completed Operation: Get-AzureVMImage
- PS C:\> $vm=New-AzureVMConfig -Name $vmName -InstanceSize Medium -ImageName $image
- PS C:\> $cred=Get-Credential -Message "Type the name and password of the local administrator account."
- PS C:\> $vm | Add-AzureProvisioningConfig -Windows -AdminUsername $cred.GetNetworkCredential().Username -Password $cred.
- GetNetworkCredential().Password
-
-
- AvailabilitySetName :
- ConfigurationSets : PSTest,Microsoft.WindowsAzure.Commands.ServiceManagement.Model.NetworkConfigurationSet}
- DataVirtualHardDisks : {}
- Label : PSTest
- OSVirtualHardDisk : Microsoft.WindowsAzure.Commands.ServiceManagement.Model.OSVirtualHardDisk
- RoleName : PSTest
- RoleSize : Medium
- RoleType : PersistentVMRole
- WinRMCertificate :
- X509Certificates : {}
- NoExportPrivateKey : False
- NoRDPEndpoint : False
- NoSSHEndpoint : False
- DefaultWinRmCertificateThumbprint :
- ProvisionGuestAgent : True
- ResourceExtensionReferences : {BGInfo}
- DataVirtualHardDisksToBeDeleted :
- VMImageInput :
-
- PS C:\> New-AzureVM -ServiceName $csName -Location $locName -VMs $vm
- VERBOSE: 3:01:46 PM - Begin Operation: New-AzureVM - Create Deployment with VM PSTest
- VERBOSE: 3:02:49 PM - Completed Operation: New-AzureVM - Create Deployment with VM PSTest
-
- OperationDescription OperationId OperationStatus
- -------------------- ----------- --------------
- New-AzureVM 8072cbd1-4abe-9278-9de2-8826b56e9221 Succeeded
-
-## Display information about a virtual machine
-This is a basic task you'll use often. Use it to get information about a VM, perform tasks on a VM, or get output to store in a variable.
-
-To get info about the VM, run this command, replacing everything in the quotes, including the < and > characters:
-
- Get-AzureVM -ServiceName "" -Name ""
-
-To store the output in a $vm variable, run:
-
- $vm = Get-AzureVM -ServiceName "" -Name ""
-
-## Log on to a Windows-based virtual machine
-
-Run these commands:
-
- $svcName=""
- $vmName=""
- $localPath=""
- $localFile=$localPath + "\" + $vmname + ".rdp"
- Get-AzureRemoteDesktopFile -ServiceName $svcName -Name $vmName -LocalPath $localFile -Launch
-
->[AZURE.NOTE] You can get the virtual machine and cloud service name from the display of the **Get-AzureVM** command.
-
-## Stop a VM
-
-Run this command:
-
- Stop-AzureVM -ServiceName "" -Name ""
-
->[AZURE.IMPORTANT] Use the **StayProvisioned** parameter to keep the virtual IP (VIP) of the cloud service in case it's the last VM in that cloud service. If you use this parameter, you'll still be billed for the VM.
-
-## Start a VM
-
-Run this command:
-
- Start-AzureVM -ServiceName "" -Name ""
-
-## Attach a data disk
-This task requires a few steps. First, you use the **Add-AzureDataDisk** cmdlet to add the disk to the $vm object. Then you use Update-AzureVM cmdlet to update the configuration of the VM.
-
-You'll also need to decide whether to attach a new disk or one that contains data. For a new disk, the command creates the .vhd file and attaches it in the same command.
-
-To attach a new disk, run this command:
-
- Add-AzureDataDisk -CreateNew -DiskSizeInGB -DiskLabel "