Jornada: Microsoft Azure en Educación e Investigación

cartel_A3El próximo 10 de mayo de 2018, en el Aula 1.4 de la Escuela Superior de Ingeniería y Tecnología, tenemos la suerte de tener al equipo de Educación de Microsoft España en Tenerife para presentarnos una jornada sobre Microsoft Azure en el  ámbito de la Educación y la Investigación.

Estas jornadas tienen como objetivo mostrar a los usuarios, instituciones y empresas de Canarias diversos proyectos y experiencias de gran interés relacionados con la tecnología de computación en la nube utilizando la plataforma Microsoft Azure. Desde la Universidad de La Laguna, y a través del Grupo Taro en colaboración con diferentes empresas, se ha comenzado una línea de trabajo para proporcionar un conocimiento en el uso de tecnologías en el ámbito de las TIC así como en el desarrollo de proyectos conjuntos con empresas e instituciones que permitan ser competitivos desde Canarias.

Para acceder al evento necesitarás estar registrado siguiendo este enlace:
Regístrate aquí al Evento

Desde Intelequia hemos preparado conjuntamente con Microsoft una serie de sesiones para mostrar algunos aspectos de la plataforma de Microsoft Azure orientados a sacar el máximo rendimiento en ámbitos educativos y de investigación. Entre las sesiones tendremos la suerte de contar de nuevo con Sebastián Hidalgo, investigador del IAC, para contarnos los detalles de uno de los proyectos sobre el que ha estado trabajando, “The Secret Life of the Galaxies: Unveiling the true nature of their star formation” y que fue presentado el año pasado en Madrid a través del evento Global Azure Bootcamp, en el que más de 10.000 participantes colaboraron en el mismo a través de una granja de cómputo a nivel global.

SELIGA

Aparte de esa sesión, la agenda está llena de interesantes charlas sobre inteligencia artificial y de cómo serán las aplicaciones del futuro, un futuro que ya está aquí.

  • 9:30-9:45 Bienvenida | Óscar Sanz (Director de Educación) | Microsoft
  • 9:45-10:30 La vida secreta de las galaxias: desvelando la naturaleza de su formación estelar | Sebastián Hidalgo (Investigador) | Instituto de Astrofísica de Canarias (IAC)
  • 10:30-11:15 Construyendo las apps del futuro | David Rodriguez (CTO) | Intelequia
  • 11:15-11:30 Pausa café
  • 11:30-12:15 Contenedores, Kubernetes, y el nuevo modelo de DevOps en la nube | Diego Martinez (Solution Specialist) | Microsoft
  • 12:15-13:00 Azure Computer Vision and Tensorflow | Alexander González (Microsoft Student Partner) | UEM
  • 13:00-13:45 Cómo intenté hacerme rico con la nube y fracasé estrepitosamente | Alberto Marcos (Responsable de Universidades) | Microsoft
  • 13:45-14:00 Cierre | Óscar Sanz (Director de Educación) | Microsoft

¡Nos vemos el 10 de mayo!

Microsoft Regional Director

ProfileHoy es uno de esos días que merece una entrada en este blog, una distinta de las habituales entradas técnicas que suelo apuntar tras pegarme unas cuantas horas persiguiendo la solución a un problema técnico.

Y es que hoy es un día para alegrarme, ya que acaban de premiarme con el honor de pertenecer al programa Microsoft Regional Director. ¿Qué significa? Pues muchísimo, pero nada mejor que el resumen expuesto en http://rd.microsoft.com

“El Programa Regional Director ofrece a los líderes de Microsoft los conocimientos del cliente y voces del mundo real que necesita para continuar empoderando a los desarrolladores y profesionales de TI con las herramientas, servicios y soluciones más innovadoras e impactantes del mundo.

Establecido en 1993, el programa consta de 150 de los principales visionarios de la tecnología elegidos específicamente por su comprobada experiencia multiplataforma, liderazgo comunitario y compromiso con los resultados comerciales. Por lo general, encontrarás a los Directores Regionales en los principales eventos clave de la industria, liderando grupos comunitarios e iniciativas locales, dirigiendo empresas enfocadas en la tecnología o consultando e implementando el último avance dentro de una corporación multinacional”.

Y es que este reconocimiento no solo tiene que ver con la trayectoria técnica que he ido desarrollando durante mi carrera profesional, sino también con la dedicación orientada al cliente y a resultados, labor a las que he estado dedicado todos estos años tras haber cofundado Intelequia. Muchísimas gracias a tod@s l@s que de algún modo u otro han hecho realidad este reconocimiento: a los miembros de la comunidad; al grupo de usuarios TenerifeDev; a los compis MVPs y RDs con los que no hemos parado de disfrutar haciendo eventos (mención especial a Tibi Covaci por la nominación); a todos los miembros de la propia Microsoft con los que es un placer trabajar; a los compañeros en el trabajo que siguen empujando como el primer día; a la familia que me hace disfrutar del breve tiempo del que disponemos; y en especial a Carmen Martín, que ha sido la compañera de viaje con la que sin duda no sería ni la mitad de lo que soy hoy.

Os dejo las FAQs del programa Microsoft Regional Director, que también están disponibles en http://rd.microsoft.com

Do Regional Directors work for Microsoft?

No, Regional Directors are not employed by Microsoft. In some cases, Regional Directors or their companies may have contracts to deliver goods or services to Microsoft but they are not employees.

How are Regional Directors selected by Microsoft?

Regional Directors are hand-picked by Microsoft based on a rigorous set of evaluations designed to help us select the best representatives of developer, IT pro, and strategic technology needs of the world’s most impactful businesses.

How long is a Regional Director’s term?

A Regional Director’s term is two years.

How do Regional Directors work with Microsoft?

Regional Directors act in a non-paid advisory capacity with Microsoft. On an ongoing basis, RDs are asked to participate in scheduled strategic feedback sessions with Microsoft senior leadership teams. Because of their community leadership positions, passion, commitment to technology and business excellence, RDs have a regular outlet where they can express real-time customer and community feedback directly with Microsoft engineers and the senior leadership team, including Satya.

I’d like to become a Regional Director and believe I meet the qualifications. Is this possible?

We actively search for amazing leaders. RD nominees come from Microsoft senior-level full-time employees or other RDs. If you have a relationship with either of those you should express your interest. We open up the nominations once a year, typically in January. Usually we have very few available slots and hundreds of candidates but we are continually looking for new leaders to step in.

Do Regional Directors have specific technology expertise?

We like to think of RDs as technology generalists. Most of them have significant technology backgrounds but have progressed their careers to the point where they have architect level depth across both Microsoft and non-Microsoft platforms. This uniquely helps qualify them to work with our product teams to understand the needs of all customers which ultimately helps us build better products.

What is the difference between an RD and an MVP?

Many of our RDs also carry the MVP award title, although most of them are finding it harder to maintain both credentials as each has different demands on the member’s time which makes it difficult to qualify and maintain both. However, the key differences really come down to the business consultative nature, customer experience, and cross platform architect skills possessed by RDs versus the deep technical focus which qualifies an MVP.

Microsoft Regional Director

ProfileHoy es uno de esos días que merece una entrada en este blog, una distinta de las habituales entradas técnicas que suelo apuntar tras pegarme unas cuantas horas persiguiendo la solución a un problema técnico.

Y es que hoy es un día para alegrarme, ya que acaban de premiarme con el honor de pertenecer al programa Microsoft Regional Director. ¿Qué significa? Pues muchísimo, pero nada mejor que el resumen expuesto en http://rd.microsoft.com

“El Programa Regional Director ofrece a los líderes de Microsoft los conocimientos del cliente y voces del mundo real que necesita para continuar empoderando a los desarrolladores y profesionales de TI con las herramientas, servicios y soluciones más innovadoras e impactantes del mundo.

Establecido en 1993, el programa consta de 150 de los principales visionarios de la tecnología elegidos específicamente por su comprobada experiencia multiplataforma, liderazgo comunitario y compromiso con los resultados comerciales. Por lo general, encontrarás a los Directores Regionales en los principales eventos clave de la industria, liderando grupos comunitarios e iniciativas locales, dirigiendo empresas enfocadas en la tecnología o consultando e implementando el último avance dentro de una corporación multinacional”.

Y es que este reconocimiento no solo tiene que ver con la trayectoria técnica que he ido desarrollando durante mi carrera profesional, sino también con la dedicación orientada al cliente y a resultados tras haber cofundado Intelequia. Muchísimas gracias a tod@s l@s que de algún modo u otro han hecho realidad este reconocimiento: a los miembros de la comunidad, al grupo de usuarios TenerifeDev, a los compis MVPs con los que no hemos parado de disfrutar haciendo eventos, a los compañeros en el trabajo que siguen empujando como el primer día, a la familia que me hace disfrutar del breve tiempo del que disponemos, y en especial a Carmen Martín, que ha sido la compañera de viaje con la que sin duda no sería ni la mitad de lo que soy hoy.

Os dejo las FAQs del programa Microsoft Regional Director, que también están disponibles en http://rd.microsoft.com

Do Regional Directors work for Microsoft?

No, Regional Directors are not employed by Microsoft. In some cases, Regional Directors or their companies may have contracts to deliver goods or services to Microsoft but they are not employees.

How are Regional Directors selected by Microsoft?

Regional Directors are hand-picked by Microsoft based on a rigorous set of evaluations designed to help us select the best representatives of developer, IT pro, and strategic technology needs of the world’s most impactful businesses.

How long is a Regional Director’s term?

A Regional Director’s term is two years.

How do Regional Directors work with Microsoft?

Regional Directors act in a non-paid advisory capacity with Microsoft. On an ongoing basis, RDs are asked to participate in scheduled strategic feedback sessions with Microsoft senior leadership teams. Because of their community leadership positions, passion, commitment to technology and business excellence, RDs have a regular outlet where they can express real-time customer and community feedback directly with Microsoft engineers and the senior leadership team, including Satya.

I’d like to become a Regional Director and believe I meet the qualifications. Is this possible?

We actively search for amazing leaders. RD nominees come from Microsoft senior-level full-time employees or other RDs. If you have a relationship with either of those you should express your interest. We open up the nominations once a year, typically in January. Usually we have very few available slots and hundreds of candidates but we are continually looking for new leaders to step in.

Do Regional Directors have specific technology expertise?

We like to think of RDs as technology generalists. Most of them have significant technology backgrounds but have progressed their careers to the point where they have architect level depth across both Microsoft and non-Microsoft platforms. This uniquely helps qualify them to work with our product teams to understand the needs of all customers which ultimately helps us build better products.

What is the difference between an RD and an MVP?

Many of our RDs also carry the MVP award title, although most of them are finding it harder to maintain both credentials as each has different demands on the member’s time which makes it difficult to qualify and maintain both. However, the key differences really come down to the business consultative nature, customer experience, and cross platform architect skills possessed by RDs versus the deep technical focus which qualifies an MVP.

DNN Azure AD Provider 3.0

Hi! After another bunch of work with React and the DNN Persona Bar, and with the special collaboration of Microsoft Azure MVP Cesar Abreu (@cesabreu), the new version of the DNN Azure AD Provider has been published.

Download DNN Azure AD Provider 3.0 from GitHub

There are several features on this release:

  • New Persona Bar integration: the Azure AD provider now has an area on the persona bar to easily setup the provider without having to dig into the authentication providers submenus. This area was also needed to have an starting point for the new features coming on the next release such as role sync and claims/profile mapping);
  • Auto-redirect: when you are only using the Azure AD provider, you would probably like to directly go to the AD login page without doing a previous stop on the DNN login page. This option just make this. If you still need, as an admin, to login with DNN credentials when this option is enabled, you can pass “legacy=1” on the query string of your login page in your browser so you can login as a regular DNN user. In any case, remember you can make a Azure AD user as super user of your site;
  • Setup simplification: on the previous releases, two applications needed to be setup in your Azure AD. This has now been simplified and only one App registration is needed. The other parameters have been simplified as well, so you only need to specify the Azure Tenant ID, the App ID and secret. Check the setup instructions on GitHub.
  • Logout: when I initially created the provider, followed the other DNN authentication providers patterns (Twitter, Google, etc.) where the logout process is not actually implemented, so when logging out, the user is logged out from DNN but the OAuth token is not expired on the OAuth provider. On this release, the logout process is fully implemented, so both the DNN cookie and the OAuth token are correctly expired. Check the video below:

Apart of these new features, other bugs have been fixed.

The project is available on GitHub as always:

Un saludo y happy coding!

DNN Redis Caching Provider 3.0

Hi again! Following up with the DNN module updates, I have done some modifications on the DNN Redis Caching provider so it can be configured now through the DNN Persona bar.

The summary of changes of this release is:

  • Changed the minimum required DNN version to 9.0.1
  • Refreshed nuget packages including the latest version of StackExchange.Redis 1.2.6
  • Added configuration UI in the Persona Bar. Now the provider is not automatically enabled during installation, you need to use the new UI.
  • The Redis client automatically reconnects after a Redis connection failure

RedisCaching

If you have any interesting idea to add on the settings area, please let me know. I have thought on implementing a redis-cli command line interface, but I believe that would be better to wait for DNN 9.2 and implement that as a “DNN Prompt” command (see http://www.dnnsoftware.com/community-blog/cid/155417/dnn-prompt-making-dnn-admins-power-admins-via-the-command-line)

Hope this helps.

Un saludo and happy coding!

Building an Evoq Liquid Content chatbot with Azure Bot Service

dnnrecipes2A few months back we spent some days working in an internal hackathon at DNN Corp. called DNN Developer Days that allowed to explore the power of Evoq Liquid Content APIs. The result was an awesome set of project examples giving a glimpse of what you can do when integrating the APIs to publish and reuse the content through different channels, such as Amazon Echo, Azure Bot Service or a smart TV, including AI and machine learning capabilities such as tagging your site images automatically. You can explore all of them at http://builtwithdnn.com website, I hope you find them interesting.

I personally worked on an Azure Bot Service chatbot, exposing the contents of a recipes website through different channels like Skype, Facebook Messenger, Telegram or Teams. You can quickly play with the example at http://builtwithdnn.com/recipesbot/ 

IMG_0365 IMG_0366 IMG_0367

All the documentation and source code for each project is available on a GitHub repository at https://github.com/dnnsoftware/Dnn.Evoq.LiquidContent.Samples.Public/ 

Chatbot as a Channel: Integrating Liquid Content with Azure Bot Service

Integrating Artificial Intelligence (AI) into your site or application is easier than you think. Companies like Google, Microsoft and Amazon are making big bets on AI and machine learning. All three companies provide freely available toolkits and services that developers can use to integrate AI into our applications.

The recipes bot integrates with messaging apps like Skype, Telegram or Facebook Messenger. As a Skype user, for example, you can provide the bot with a list of ingredients. The bot connects to Liquid Content to retrieve recipes that contain those ingredients, then provides an answer to the Skype user.

This is just the beginning. I plan to connect more third-party services to the recipe bot, such as LUIS, Cortana, Vision API and Apple Pay.

Bookmark this page and check back here to get updates. I’ll update the page each time there’s news to share. You can also follow me on Twitter @davidjrh and I will mention the new additions there.

Building the Recipes Bot

In this tutorial, I show you how I built the recipe bot. The bot uses the Azure Bot Service, the intelligent, serverless bot service that scales on demand. With this service, you will be able to publish your bot through multiple channels without managing or patching any server. It can connect to additional messaging apps without writing or adding new code. The service is free, and you will only pay for the resources you consume.

ArchitectureGetting Started

Prerequisites

To follow the tutorial, you will need:

  • An active Azure subscription. You will need to login as owner of the subscription to host the bot service. You can sign up for a free subscription here.
  • An Evoq Content or Engage site with Evoq Liquid Content enabled

Also, to debug your C# bot locally using breakpoints in Visual Studio you will need:

For more information about how to setup the debugging environment, visit Debug with the emulator and Debug an Azure Bot Service C# bot on the bot framework documentation.

Content Index

  1. Setting up the recipes
  2. Creating the basic bot
  3. Setup continuous integration
  4. Debugging the bot on your local environment
  5. Customizing the basic bot
  6. Test your recipes bot
  7. Adding a webchat in your site
  8. Known issues

Hope this helps.

Un saludo and happy coding!

DNN Application Insights v3.0

Hi all. After a while working with React/Redux and the new DNN PersonaBar model introduced on DNN Platform 9.0, I have started to update all my modules to avoid the use of the disappeared Host menu on DNN.

The first module updated has been the DNN Application Insights now available for download on GitHub. This includes:

  • Previous package updates to support version 2.4.0 of Application Insights, including enhanced live metrics streaming (committed by Mitchel Sellers)
  • New UI on the persona bar to setup the module settings
  • Requiring DNN Platform 9.0.1 or later

AppInsights_InstrumentationKey3

If you have any interesting idea to add on the settings area, please let me know. I have been checking all the configuration settings that can be done through the Application Insights configuration system and I will start adding them for the next release.

Updates for the Redis Caching Provider and Azure AD provider are the next ones.

Providing a GUID function in Azure Resource Manager templates with Azure Functions

arm-functionsSome time back while preparing the Global Azure Bootcamp Science Lab, I face the lack of some functions that are not available when authoring Azure Resource Manager templates. When creating some type of resources such as Batch jobs or RBAC related resources, you need to pass a GUID (Universally unique identifier) but there is no function to create them inside the template, so you need to pass them as template parameters making the result awful.

There is already a Feedback item describing the issue (please vote on https://feedback.azure.com/forums/281804-azure-resource-manager/suggestions/13067952-provide-guid-function-in-azure-resource-manager-te) and there are other similar issues when you need to use more sophisticated functions such as date related values.

When trying to provide a workaround, I finally found that could be solved with nested templates, so I started by building a simple ARM Guid template that could be referenced on your primary one. You can check that repo here https://github.com/davidjrh/azurerm-newguid

But when testing the GAB lab with millions of guids, found that from time to time that template was generating duplicated guids, so finally ended by implementing the lab ARM Guid templates by using a WebAPI. You can check the how the guid template was being used at https://github.com/intelequia/GAB2017ScienceLab/blob/master/lab/assets/GABClient.json#L100 (check lines 100 and 398), and the template API implementation available at https://github.com/intelequia/GAB2017ScienceLab/blob/master/src/GABBatchServer/src/GAB.BatchServer.API/Controllers/TemplatesController.cs

Building a GUID function for ARM templates with Azure Functions

Revisiting this today, I thought that could be more cost effective of having that dynamically generated template by using an Azure Function. Here is the step by step so you can deploy your own, and increase your ARM functions arsenal with the same approach.

Remember that the basic idea is to reference this function in your deployment, that will generate a GUID for later usage on your template.

  1. Create an Azure Function App through the Azure Portal.
  2. Add a function triggered by a HTTP request in C#
  3. Copy and paste the following code in the function body

using System.Net;
using System.Net.Http.Headers;


public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
     log.Info(“C# HTTP trigger function processed a request.”);


    // parse query parameter
     string numberOfGuids = req.GetQueryNameValuePairs()
         .FirstOrDefault(q => string.Compare(q.Key, “numberOfGuids”, true) == 0)
         .Value;
     if (string.IsNullOrEmpty(numberOfGuids)) {
         numberOfGuids = “1”;
     }


    // validate the input
     int guids;
     if (!int.TryParse(numberOfGuids, out guids)) {
         return req.CreateResponse(HttpStatusCode.BadRequest, “Please pass a valid number on the query parameter ‘numberOfGuids'”);
     }
     if (guids <= 0 || guids > 1000) {
         return req.CreateResponse(HttpStatusCode.BadRequest, $”Invalid number of guids {guids}. Must be a number between 1 and 1000″);
     }


     // prepare the template
     var template = @”{
   “”$schema””: “”
https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#””,
   “”contentVersion””: “”1.0.0.0″”, “”parameters””: {}, “”variables””: {}, “”resources””: [],
   “”outputs””: {[OUTPUTS]}
}”;
     var outputs = await Task.Run<List<string>>(() =>
     {
         var o = new List<string>();
         for (var i = 0; i < guids; i++)
         {
             o.Add(@”””guid” + i + @”””: { “”type””: “”string””, “”value””: “”” + Guid.NewGuid() + @””” }”);
         }
         return o;
     });
     var result = template.Replace(“[OUTPUTS]”, string.Join(“,”, outputs.ToArray()));


// return the response
return new HttpResponseMessage() {
     Content = new System.Net.Http.StringContent(
         result,
         System.Text.Encoding.UTF8,
         “application/json”
     )
};


}

AzurePortalFunction

Testing the function

Once you have saved the function, you can test it by doing a webrequest. In my case, when I call the URL https://armtemplates.azurewebsites.net/api/NewGuid?numberOfGuids=3 I get this answer:

NewGuidWebYou can pass the number of guids to generate as parameter.

Consuming the GUID template by using a nested template

As I documented on the initial GitHub repo, you can just follow these examples to consume then in different ways:

Example 1. Getting a GUID and using it later

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "variables": {},
  "resources": [ 
    { 
        "apiVersion": "2015-01-01", 
        "name": "MyGuid", 
        "type": "Microsoft.Resources/deployments", 
        "properties": { 
          "mode": "incremental", 
          "templateLink": {
            "uri": "https://armtemplates.azurewebsites.net/api/NewGuid",
            "contentVersion": "1.0.0.0"
          }
        } 
    } 
  ],
  "outputs": {
    "result": {
      "type": "string",
      "value": "[reference('MyGuid').outputs.guid0.value]"
    }
  }
}

Example 2. Getting 2 guids and using them later

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "variables": {},
  "resources": [ 
    { 
        "apiVersion": "2015-01-01", 
        "name": "MyGuids", 
        "type": "Microsoft.Resources/deployments", 
        "properties": { 
          "mode": "incremental", 
          "templateLink": {
            "uri": https://armtemplates.azurewebsites.net/api/NewGuid?numberOfGuids=2,
            "contentVersion": "1.0.0.0"
          }
        } 
    }  
  ],
  "outputs": {
    "result0": {
      "type": "string",
      "value": "[reference('MyGuids').outputs.guid0.value]"
    },
    "result1": {
      "type": "string",
      "value": "[reference('MyGuids').outputs.guid1.value]"
    }
  }
}

If you still have any doubt on how to consume the outputs, check the GAB Science Lab template on line 398 https://github.com/intelequia/GAB2017ScienceLab/blob/master/lab/assets/GABClient.json#L398

Hope this helps! Un saludo y happy coding!

[Video] Introducción a Application Insights

Se me había pasado de publicar en el blog el vídeo sobre Application Insights que edité el pasado mes de Mayo, pero mejor tarde que nunca Smile

Application Insights es un servicio de Application Performance Management (APM) extensible para desarrolladores web en varias plataformas, que sirve para supervisar aplicaciones web en directo. Se pueden detectar automáticamente anomalías de rendimiento además de proveer de herramientas de análisis que ayudan a diagnosticar incidencias comprendiendo lo que los usuarios están haciendo con la aplicación. En esta sesión veremos una introducción rápida al servicio viendo cómo se implementa y configura el servicio, tanto para aplicaciones web nuevas partiendo desde cero, como sitios web basados en CMS.

The storage account already exists error when redeploying an ARM template

Update 06 Jul 2016

Seems this is resolved on the latest Storage Resource Provider API 2016-01-01. The schema documented at https://azure.microsoft.com/en-us/documentation/articles/resource-manager-template-storage/ is for 2015-06-15, and that version didn’t support PUT operations. The new 2016-01-01 schema can be found at:

So this new template now works as expected and tags and other settings can be changed:

{

    “$schema”: “https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#”,

    “contentVersion”: “1.0.0.0”,

    “resources”: [

      {

        “name”: “dnntest20160705”,

        “type”: “Microsoft.Storage/storageAccounts”,

        “location”: “[resourceGroup().location]”,

        “apiVersion”: “2016-01-01”,

        “dependsOn”: [ ],

        “tags”: {

          “displayName”: “MyStorageAccount”

        },

        “sku”: {

          “name”: “Standard_LRS”

        },

        “kind”: “Storage”

      }

    ]

}

 

Notes:

  • Ensure you install the latest Azure PowerShell and SDKs or the latest 2016-01-01 version won’t be recognized
  • With the latest Azure SDK 2.9.1 available, I have syntax errors on the template, seems the schema was not included in the latest release. While you have syntax errors, you can deploy from Visual Studio with no problems. I suppose this will be fixed on the next Azure SDK release.

Thanks to Tom FitzMacken for the indications.

_____________________________________________________________________________

Original issue description

Seems that when deploying an storage account using an ARM template like the one below:

{

    “$schema”: “https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#”,

    “contentVersion”: “1.0.0.0”,

    “resources”: [

      {

        “name”: “dnntest20160705”,

        “type”: “Microsoft.Storage/storageAccounts”,

        “location”: “[resourceGroup().location]”,

        “apiVersion”: “2015-06-15”,

        “dependsOn”: [ ],

        “tags”: {

          “displayName”: “MyStorageAccount”

        },

        “properties”: {

          “accountType”: “Standard_LRS”

        }

      }

    ]

}

 

If you go and change the “displayName” tag value for something else or try to add a new tag, when you deploy the update I get the following deployment exception:

22:44:07 – [ERROR] New-AzureRmResourceGroupDeployment : 22:44:07 – Resource

22:44:07 – [ERROR] Microsoft.Storage/storageAccounts ‘dnntest20160705’ failed with message ‘{

22:44:07 – [ERROR]   “error”: {

22:44:07 – [ERROR]     “code”: “StorageAccountAlreadyExists”,

22:44:07 – [ERROR]     “message”: “The storage account named dnntest20160705 already exists under

22:44:07 – [ERROR] the subscription.”

22:44:07 – [ERROR]   }

22:44:07 – [ERROR] }’

22:44:07 – [ERROR] At D:\temp\azureresourcegroup2\Scripts\Deploy-AzureResourceGroup.ps1:98 char:1

Workaround

Change the tag value through the portal/PowerShell, so new deployment updates work.

 

This sounds like a bug, that will probably be resolved in a future release.