{"id":2612,"date":"2017-04-06T10:27:27","date_gmt":"2017-04-06T08:27:27","guid":{"rendered":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?p=2612"},"modified":"2017-04-06T11:33:13","modified_gmt":"2017-04-06T09:33:13","slug":"azure-functions-utilizarlo-procesos-office-365","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/azure-functions-utilizarlo-procesos-office-365\/","title":{"rendered":"Azure Functions: C\u00f3mo utilizarlo en nuestros procesos de Office 365"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2625 alignleft\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/04\/Azure-Functions-2.png\" alt=\"Azure Functions\" width=\"277\" height=\"277\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/04\/Azure-Functions-2.png 800w, https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/04\/Azure-Functions-2-150x150.png 150w, https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/04\/Azure-Functions-2-300x300.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/04\/Azure-Functions-2-768x768.png 768w\" sizes=\"auto, (max-width: 277px) 100vw, 277px\" \/>La forma en la que desarrollamos en <strong>SharePoint\/Office 365<\/strong>\u00a0est\u00e1 cambiando a pasos agigantados. A parte del modelo de desarrollo, los flujos de trabajo y tareas en Background (algo que esta mejorando mucho), hemos pasado de los Event Receviers, Tareas Programadas en la Administraci\u00f3n Central, al uso de <strong>WebHooks<\/strong> y<strong> Azure Functions<\/strong>. \u00a0En este art\u00edculo vamos a ver<strong> c\u00f3mo utilizar Azure Functions de forma \u00f3ptima<\/strong>, como solucionamos el tema de la autenticaci\u00f3n y en qu\u00e9 escenarios lo podemos incluir.<\/p>\n<p><!--more--><\/p>\n<h2>\u00bfQu\u00e9 es Azure Functions?<\/h2>\n<p>Por decirlo de una forma simple,<strong> Azure Functions<\/strong> es la implementaci\u00f3n que ofrece Microsoft para llevar a cabo una arquitectura \u00abServesless\u00bb, es decir, arquitectura sin servidor.<\/p>\n<p>Se caracteriza porque nuestro c\u00f3digo se va a ejecutar en alg\u00fan lugar del cloud y solo \u00a0vamos a pagar por el tiempo que est\u00e9 en ejecuci\u00f3n. Es el <strong>m\u00e1ximo exponente de llevar un desarrollo al cloud y maximizar los beneficios<\/strong> que nos aporta.<\/p>\n<p>Si quer\u00e9is introduciros en los conceptos base de Azure Functions pod\u00e9is consultar otros art\u00edculos que hemos escrito en nuestro <a href=\"http:\/\/blogs.encamina.com\/por-una-nube-sostenible\/?s=azure+functions\" target=\"_blank\">blog dedicado al cloud<\/a>.<\/p>\n<h2>En qu\u00e9 escenarios podemos utilizar Azure Functions<\/h2>\n<p>El escenario t\u00edpico, es <strong>\u00a0cualquier entorno de Office 365<\/strong>, ya que no disponemos de acceso a la Administraci\u00f3n Central para programar una tarea que se ejecute de forma peri\u00f3dica.<\/p>\n<p>Por ejemplo: \u00a0todas las noches queremos importar los datos de nuestros clientes en una lista de SharePoint, o bien queremos enviar un mail con informaci\u00f3n de nuestra actividad.<br \/>\nOtro escenario en el que podemos utilizar Azure Functions, es para responder a determinadas acciones que se han producido bien en otras aplicaciones, bien en nuestro propio SharePoint Online: Queremos enviar un mail cada vez que se inserte un elemento en una determinada lista. Para este caso, nos suscribimos al propio WebHook que nos ofrece SharePoint Online y que ah\u00ed ejecute nuestro c\u00f3digo. Tambi\u00e9n podr\u00edamos implementar el cliente de WebHook que est\u00e9 permanentemente a la escucha. No obstante, por un lado tenemos que pensar que \u00e9ste cliente debe estar alojado en alg\u00fan sitio y debemos encargarnos de su mantenimiento, por lo que ser\u00eda \u00a0m\u00e1s costoso en esfuerzo y en recursos econ\u00f3micos.<\/p>\n<p>Es decir, Azure Functions no solo lo podemos <strong>utilizar para programar tareas<\/strong> sino que puede <strong>desencadenarse por muchas acciones<\/strong>: eventos de otros servicios que ofrece Azure, WebHooks, peticiones Http, etc. Esto adem\u00e1s hace posible que la integraci\u00f3n con otros elementos sea relativamente simple.<\/p>\n<h2>\u00bfCu\u00e1l es el problema?<\/h2>\n<p>Esto de ejecutar c\u00f3digo en un lugar que no nos importa y que solo paguemos por ello suena fant\u00e1stico. Ahora bien, <strong>\u00bfc\u00f3mo podemos autenticar esto contra nuestro Office 365?<\/strong><\/p>\n<p>Cuando ponemos el c\u00f3digo dentro de SharePoint, este ya est\u00e1 en el contexto de seguridad y por este motivo, pr\u00e1cticamente no le prestamos atenci\u00f3n. Cuando ejecutamos una App utilizamos OAuth (bien Full Trust, \u00a0bien la propia de Azure). Pero, <strong>\u00bfc\u00f3mo lo podemos hacer en una Azure Function?<\/strong><\/p>\n<p>La cuesti\u00f3n es que en el <strong>Active Directory de Azure<\/strong>, utilizando ADAL tenemos dos posibles formas de autenticarnos:<\/p>\n<ul>\n<li>El usuario introduce su usuario y contrase\u00f1a<\/li>\n<li>Autenticamos a la aplicaci\u00f3n que se ejecuta<\/li>\n<\/ul>\n<p>Est\u00e1 claro que la primera no es una opci\u00f3n, ya que ese c\u00f3digo no sabemos donde va a estar y no va a tener una interfaz en la que podamos poner estos datos (y aunque la tuviera tampoco ser\u00eda una opci\u00f3n). Dicho esto, \u00a0<strong>tendremos que autenticar a nuestra aplicaci\u00f3n contra el directorio de Azure y que nos genere un Token<\/strong> para poder consultar los servicios que nos hacen falta. \u00a0\u00bfC\u00f3mo lo hacemos?<\/p>\n<ol>\n<li>Registramos nuestra App en el <a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/2014\/11\/11\/registrar-una-aplicacion-en-el-portal-de-azure\/\" target=\"_blank\">directorio de Azure<\/a>.<\/li>\n<li>En el Azure Function tenemos que poner el siguiente c\u00f3digo:<\/li>\n<\/ol>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\npublic class AuthenticationService:IAuthenticationService\r\n\t{\r\n\t\tpublic string aadInstance { get; set; }\r\n\t\tpublic string tenant { get; set; }\r\n\t\tpublic string clientId { get; set; }\r\n\t\tpublic string appKey { get; set; }\r\n\t\tpublic string authority { get; set; }\r\n\t\tpublic string apiResourceId { get; set; }\r\n\t\tpublic string apiBaseAddress { get; set; }\r\npublic AuthenticationService(string aadInstance, string tenant, string clientId, string appKey, string apiResourceId, string apiBaseAddress)\r\n\t\t{\r\n\t\t\tthis.aadInstance = aadInstance;\r\n\t\t\tthis.tenant = tenant;\r\n\t\t\tthis.clientId = clientId;\r\n\t\t\tthis.appKey = appKey;\r\n\t\t\tthis.apiResourceId = apiResourceId;\r\n\t\t\tthis.apiBaseAddress = apiBaseAddress;\r\n\t\t\tauthority = this.aadInstance + this.tenant;\r\n\t\t}\r\n\r\n\t\tpublic async Task&lt;string&gt; GetTokenAppOnly()\r\n\t\t{\r\n\t\t\tvar\tauthContext = new AuthenticationContext(authority);\r\n\t\t\tvar clientCredential = new ClientCredential(clientId, appKey);\r\n\t\t    var result = await authContext.AcquireTokenAsync(apiResourceId, clientCredential);\r\n\t\t\treturn result.AccessToken;\r\n\t\t}\r\n}\r\n<\/pre>\n<p>El c\u00f3digo es muy simple. Solo hay que <strong>utilizar la librer\u00eda de Nuget Azure Active Directory Library<\/strong> y obtener las credenciales de la aplicaci\u00f3n para obtener su token. Dado que los datos que se solicitan son propios de cada tenant, los almacenaremos dentro del Web.config de la Function, y accederemos a los mismos de la misma forma que a cualquier elemento del Web.config, en una WebApp normal (al final nuestra Azure Function est\u00e1 alojada en una Azure Function)<\/p>\n<h2>Inconvenientes de Azure Functions<\/h2>\n<p><strong>Azure Functions <\/strong>tiene dos modos de pago, uno por <strong>computaci\u00f3n<\/strong> (es decir por el tiempo que nuestra aplicaci\u00f3n est\u00e1 en ejecuci\u00f3n), y otro,<strong> el modo de pago de una WebApp<\/strong>, en el que tiene asignado una m\u00e1quina con unas determinadas caracter\u00edsticas y en caso de que queremos, puede escalar.<\/p>\n<p>El inconveniente que tiene el primer caso es que <strong>el c\u00f3digo ejecutado en una Azure Function no puede superar los 5 minutos<\/strong>, por lo que no podremos beneficiarnos de este modelo si nos planteamos tareas largas. Tambi\u00e9n hay que tener en cuenta que hay procesos que a SharePoint \u00a0le pueda costar m\u00e1s de este tiempo, por ejemplo crear una site collection.<\/p>\n<h2>Resumen<\/h2>\n<p>Estamos viendo como nuestro horizonte como desarrollador de SharePoint\/Office 365 se est\u00e1 incrementando considerablemente. Ahora mismo debemos conocer no solo SharePoint, sino todo lo que le rodea, como Azure, para incorporar alguno de sus servicios y mejorar nuestro d\u00eda a d\u00eda con la plataforma.<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>La forma en la que desarrollamos en SharePoint\/Office 365\u00a0est\u00e1 cambiando a pasos agigantados. A parte del modelo de desarrollo, los flujos de trabajo y tareas en Background (algo que esta mejorando mucho), hemos pasado de los Event Receviers, Tareas Programadas &hellip; <a href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/azure-functions-utilizarlo-procesos-office-365\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":8,"featured_media":2625,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[113],"tags":[37,185,38],"class_list":["post-2612","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-office-365-2","tag-azure","tag-bpm","tag-office-365"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Azure Functions: C\u00f3mo utilizarlo en nuestros procesos de Office 365 - Desarrollando sobre SharePoint<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/azure-functions-utilizarlo-procesos-office-365\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Azure Functions: C\u00f3mo utilizarlo en nuestros procesos de Office 365 - Desarrollando sobre SharePoint\" \/>\n<meta name=\"twitter:description\" content=\"La forma en la que desarrollamos en SharePoint\/Office 365\u00a0est\u00e1 cambiando a pasos agigantados. A parte del modelo de desarrollo, los flujos de trabajo y tareas en Background (algo que esta mejorando mucho), hemos pasado de los Event Receviers, Tareas Programadas &hellip; Continue reading &rarr;\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/04\/Azure-Functions-2.png\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adri\u00e1n D\u00edaz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/azure-functions-utilizarlo-procesos-office-365\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/azure-functions-utilizarlo-procesos-office-365\\\/\"},\"author\":{\"name\":\"Adri\u00e1n D\u00edaz\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"headline\":\"Azure Functions: C\u00f3mo utilizarlo en nuestros procesos de Office 365\",\"datePublished\":\"2017-04-06T08:27:27+00:00\",\"dateModified\":\"2017-04-06T09:33:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/azure-functions-utilizarlo-procesos-office-365\\\/\"},\"wordCount\":1005,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/azure-functions-utilizarlo-procesos-office-365\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2017\\\/04\\\/Azure-Functions-2.png\",\"keywords\":[\"azure\",\"bpm\",\"office 365\"],\"articleSection\":[\"Office 365\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/azure-functions-utilizarlo-procesos-office-365\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/azure-functions-utilizarlo-procesos-office-365\\\/\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/azure-functions-utilizarlo-procesos-office-365\\\/\",\"name\":\"Azure Functions: C\u00f3mo utilizarlo en nuestros procesos de Office 365 - Desarrollando sobre SharePoint\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/azure-functions-utilizarlo-procesos-office-365\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/azure-functions-utilizarlo-procesos-office-365\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2017\\\/04\\\/Azure-Functions-2.png\",\"datePublished\":\"2017-04-06T08:27:27+00:00\",\"dateModified\":\"2017-04-06T09:33:13+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/azure-functions-utilizarlo-procesos-office-365\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/azure-functions-utilizarlo-procesos-office-365\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2017\\\/04\\\/Azure-Functions-2.png\",\"contentUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2017\\\/04\\\/Azure-Functions-2.png\",\"width\":800,\"height\":800,\"caption\":\"Azure Functions\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/\",\"name\":\"Desarrollando sobre SharePoint\",\"description\":\"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\",\"name\":\"Adri\u00e1n D\u00edaz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"caption\":\"Adri\u00e1n D\u00edaz\"},\"description\":\"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/author\\\/desarrollandosobresharepoint\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Azure Functions: C\u00f3mo utilizarlo en nuestros procesos de Office 365 - Desarrollando sobre SharePoint","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/azure-functions-utilizarlo-procesos-office-365\/","twitter_card":"summary_large_image","twitter_title":"Azure Functions: C\u00f3mo utilizarlo en nuestros procesos de Office 365 - Desarrollando sobre SharePoint","twitter_description":"La forma en la que desarrollamos en SharePoint\/Office 365\u00a0est\u00e1 cambiando a pasos agigantados. A parte del modelo de desarrollo, los flujos de trabajo y tareas en Background (algo que esta mejorando mucho), hemos pasado de los Event Receviers, Tareas Programadas &hellip; Continue reading &rarr;","twitter_image":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/04\/Azure-Functions-2.png","twitter_misc":{"Escrito por":"Adri\u00e1n D\u00edaz","Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/azure-functions-utilizarlo-procesos-office-365\/#article","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/azure-functions-utilizarlo-procesos-office-365\/"},"author":{"name":"Adri\u00e1n D\u00edaz","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"headline":"Azure Functions: C\u00f3mo utilizarlo en nuestros procesos de Office 365","datePublished":"2017-04-06T08:27:27+00:00","dateModified":"2017-04-06T09:33:13+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/azure-functions-utilizarlo-procesos-office-365\/"},"wordCount":1005,"commentCount":0,"image":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/azure-functions-utilizarlo-procesos-office-365\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/04\/Azure-Functions-2.png","keywords":["azure","bpm","office 365"],"articleSection":["Office 365"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/azure-functions-utilizarlo-procesos-office-365\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/azure-functions-utilizarlo-procesos-office-365\/","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/azure-functions-utilizarlo-procesos-office-365\/","name":"Azure Functions: C\u00f3mo utilizarlo en nuestros procesos de Office 365 - Desarrollando sobre SharePoint","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/azure-functions-utilizarlo-procesos-office-365\/#primaryimage"},"image":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/azure-functions-utilizarlo-procesos-office-365\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/04\/Azure-Functions-2.png","datePublished":"2017-04-06T08:27:27+00:00","dateModified":"2017-04-06T09:33:13+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/azure-functions-utilizarlo-procesos-office-365\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/azure-functions-utilizarlo-procesos-office-365\/#primaryimage","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/04\/Azure-Functions-2.png","contentUrl":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/04\/Azure-Functions-2.png","width":800,"height":800,"caption":"Azure Functions"},{"@type":"WebSite","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/","name":"Desarrollando sobre SharePoint","description":"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb","name":"Adri\u00e1n D\u00edaz","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","caption":"Adri\u00e1n D\u00edaz"},"description":"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/author\/desarrollandosobresharepoint\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/2612","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/comments?post=2612"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/2612\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/media\/2625"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/media?parent=2612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/categories?post=2612"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/tags?post=2612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}