Le Cloud de Vincent - Blogueurs - MicrosoftTouch

Le Cloud de Vincent

Découvertes, astuces et curiosités de l'ère du cloud
    • 10/2/2016

    Conférencier au SharePoint Saturday Vancouver 2016

    J'ai le privilège d’être conférencier au SPS de Vancouver (première fois!!). J’animerai cette fois une session autour des métadonnées en entreprise « The Importance of metadata in your company » (en anglais donc).

     

    Si vous êtes dans le coin le Samedi 12 Mars 2016 n’hésitez pas à vous inscrire et à participer. Pour rappel les SPS ce sont des évènements gratuits organisés par la communauté avec des sessions de qualité. Une très bonne occasion de réseauter, d’apprendre plein de choses et de passer une bonne journée.

     

    En espérant vous voir là-bas.

    http://www.spsevents.org/city/vancouver/2016

    • 11/1/2016

    Migration Git – nettoyage des références TFS

    J’ai récemment dû migrer plusieurs contrôles de code source depuis TFS vers Git (Git sur vsonline). Pour ce faire j’ai utilisé Git-Tfs https://github.com/git-tfs/git-tfs qui fait très bien le travail et est vraiment bien documenté https://github.com/git-tfs/git-tfs/blob/master/doc/usecases/migrate_tfs_to_git.md

     

    A une étape de la documentation on vous conseille de supprimer les fichiers *.vspscc, *.vssscc et de nettoyer les fichiers *.sln et *.*proj des références vers TFS.

    Ceci permet d’éviter que Visual Studio tente de se reconnecter à TFS à chaque fois que l’on ouvre projet/solution.

    J’ai été surpris de ne pas trouver de script tout fait sur le web pour le faire, j’ai donc pris le temps de développer ce script. Me disant que ça pouvait en intéresser certains d’entre vous le voici : https://gist.github.com/baywet/bcbed5e52c59f4201e7c

     

    Il suffit de l’appeler en passant en paramètre le répertoire git (penser à le faire une fois par branche au besoin)

    Bonne migrations !

    PS : j’ai aussi ouvert une discussion sur le projet Git-tfs pour intégrer le script à leur repo, n’hésitez pas à venir participer https://github.com/git-tfs/git-tfs/issues/904

    • 18/11/2015

    Incrémenter automatiquement le numéro de version de fonctionnalité SharePoint avec le build 2015

    Depuis quelques mois Microsoft a livré un nouveau système de build automatisé avec visual studio online / tfs 2015.

    Ce système est bien plus ouvert que les anciennes build XAML, à base de tâches et plus facile à personnaliser.

    Une des tâches existantes permet d’exécuter un script powershell.

    Supposons que pour une raison quelconque vous souhaitiez incrémenter automatiquement le numéro de version de vos fonctionnalités SharePoint (au sein de votre solution) au moment du build.

    Si vous examinez le fichier « .feature » vous verrez que l’attribut ressemble à un objet sérialisé (au lieu d’être simplement la version au format numérique), c’est donc autrement plus compliqué de que simplement après un fichier XML.

    Si la solution pour les builds XAML est assez bien documentée, il n’y en a encore aucune pour le nouveau système.

    http://blogs.msdn.com/b/sharepointdev/archive/2011/04/28/incrementing-the-feature-version-through-msbuild.aspx

     

    J’ai donc pris le temps d’investiguer la solution et de vous mettre à disposition un script powershell qui effectue une opération similaire et que vous pourrez faire évoluer à souhait. Bons builds !

    https://gist.github.com/baywet/de2fba740adb70332ca8

     

    • 10/11/2015

    Conférencier au SharePoint Saturday Ottawa 2015

    Cette année encore j’ai l’occasion d’être conférencier au SPS d’Ottawa. J’animerai cette fois une session autour de l’ALM des développements SharePoint/Office 365 avec Azure « Setting up your release pipeline for SharePoint in Azure » (en anglais donc).

    Si vous êtes dans le coin le Samedi 21 Novembre 2015 n’hésitez pas à vous inscrire et à participer. Pour rappel les SPS ce sont des évènements gratuits organisés par la communauté avec des sessions de qualité. Une très bonne occasion de réseauter, d’apprendre plein de choses et de passer une bonne journée.

     

    En espérant vous voir là-bas.

     

    http://www.spsevents.org/city/Ottawa/Ottawa2015/

    • 3/11/2015

    Désactiver les fonctionnalités de SEO de SharePoint

    J’ai récemment eu le cas où un client voulait désactiver les fonctionnalités de SEO (search engine optimization) de SharePoint 2013, celles-ci incluant :

    • La génération de sitemap

    • La génération d’url canoniques

    • Des métadonnées sur les pages

    • La génération de titres explicites

    • Etc..

    La raison principale étant que ce client voulait réaliser du développement pour changer le comportement de ces fonctionnalités (besoins très spécifiques).

    Le problème c’est que cette fonctionnalité est cachée et qu’elle est activée par défaut avec les sites de type publication.

    Le moyen le plus simple pour la désactiver reste de le faire en utilisant powershell, voici donc la commande, au cas où cela puisse servir à quelqu’un d’autre

    Disable-spfeature [Guid]"17415B1D-5339-42F9-A10B-3FEF756B84D1" –Url http://urldelasitecollection

    • 23/10/2015

    Conférencier au SharePoint Saturday New Hampshire 2015

    Cette année encore j’ai l’occasion d’être conférencier au SPS de Nashua (New Hampshire). J’animerai cette fois une session autour du de multilinguisme dans SharePoint « Translating SharePoint from beginning to ending » (en anglais donc).

    Nous y parlerons des options pour gérer le multilinguisme dans SharePoint et de comment effectuer une implémentation réussie.

    Si vous êtes dans le coin le Samedi 24 Octobre 2015 n’hésitez pas à vous inscrire et à participer. Pour rappel les SPS ce sont des évènements gratuits organisés par la communauté avec des sessions de qualité. Une très bonne occasion de réseauter, d’apprendre plein de choses et de passer une bonne journée.

    En espérant vous voir là-bas.

     

    http://www.spsevents.org/city/nh/spsnh2015

    • 7/10/2015

    Ajout Programmatique de permissions à « tout le monde » dans SharePoint Online

    Il se peut que vous vouliez ajouter des permissions au « groupe » « tout le monde » dans SharePoint.

    En effet cela permet de donner des droits à tous les usagers qui ont déjà accès au site (parce qu’ils sont dans d’autres groupes où ont déjà des permissions). Ce « groupe » est différent de « NT AUTHORITY\authenticated users » qui représente tous les usagers qui sont capables de s’authentifier (plus large donc)

    Seulement voici la subtilité, ce « groupe » n’en est pas un, donc inutile d’itérer sur tous les groupes de la collection de sites en espérant le trouver. C’est en fait un utilisateur spécial. Pour le trouver il suffit d’utiliser son login à savoir : "c:0(.s|true"

     

    Voici un exemple de code en CSOM qui vous montre comment le faire :

    var user = item.ParentList.ParentWeb.EnsureUser("c:0(.s|true");

    var roleBindings = new RoleDefinitionBindingCollection(context);

    roleBindings.Add(item.ParentList.ParentWeb.RoleDefinitions.GetByType(roleType));

    item.RoleAssignments.Add(principal, roleBindings);

    context.ExecuteQuery();

    • 5/10/2015

    Le yOS tour passe par Montréal !

    Je suis heureux de vous annoncer que le 29 Octobre 2015 le yOS tour passera par Montréal.

    Ce nouveau format d’évènement qui traite de Yammer, Office 365 et SharePoint (yOS) se tiendra dans les locaux de Microsoft Montréal (2000 av mcgill college).

    Cet évènement va se concentrer sur les retour d’expérience client et du terrain, pas de marketing, pas de speech de vente.

    De plus j’ai eu le privilège d’aider à l’organisation de l’évènement qui comptera une moitié de ses conférenciers venant de l'Europe

    Pour les informations (dates, sessions, inscription…) ça se passe par ici !

    A très bientôt au yos de Montréal !

    http://www.yos-tour.com/3-yos-day-a-montreal-en-octobre-2015/

     

    • 11/9/2015

    Conférencier au SharePoint Saturday de Toronto 2015

    Cette année encore j’ai l’occasion d’être conférencier au SPS de Toronto. J’animerai cette fois une session autour du graph « Making Graph data useful to your company » (en anglais donc).

    Nous y parlerons de Graph, de delve, yammer, machine learning et plein d’autres concepts intéressants avec une thématique orientées vers le développement.

    Si vous êtes dans le coin le Samedi 19 Septembre 2015 n’hésitez pas à vous inscrire et à participer. Pour rappel les SPS ce sont des évènements gratuits organisés par la communauté avec des sessions de qualité. Une très bonne occasion de réseauter, d’apprendre plein de choses et de passer une bonne journée.

    En plus ça se passe dans les locaux de Microsoft Toronto (Mississauga).

    En espérant vous voir là-bas.

    http://www.spsevents.org/city/toronto/toronto2015

     

    • 4/9/2015

    Erreur: unable to find version '3.1.2' of package 'appforsharepointonlinewebtoolkit'

    Avec les outils de développement office pour visual studio 2015 (et probablement aussi avec la mise à jour Aout 2015 pour VS2013, mais je n’ai pas testé) il est possible que vous obteniez l’erreur suivante :

    unable to find version '3.1.2' of package 'appforsharepointonlinewebtoolkit'

     

    Et ce lorsque vous effectuez un « update-package » dans la console nuget ou que vous avez une étape de restauration des packages dans votre processus de build. (impossible de vous en passer si vous n’incluez pas le dossier des packages dans votre contrôle de code source).

    Cette erreur est due au fait que le modèle d’applications SharePoint (provider-hosted MVC) embarque une version du nuget plus récente que ce qui est disponible sur nuget.org.

    La solution consiste à désinstaller la version 3.1.2 et à installer la version courante (install-package appforsharepointonlinewebtoolkit)

    Il y a effectivement une différence entre ces package dans SharePointContext.cs et .vb. Vous pouvez soit choisir d’ignorer ces différences ou bien choisir de copier/coller le code de la dernière version avant de désinstaller le package.

    Notez que si vous faites cela, le package sera marqué comme modifié et vous ne serez plus capable de faire des mises à jour. Il faudra à ce moment-là désinstaller le package à nouveau et installer la dernière version.

    J’ai prévenu les équipes de Microsoft et je vous tiendrai au courant si jamais une mise à jour intervient.

    Bons développements !

    • 3/9/2015

    Nouvelle conférence Microsoft la AzureCon

    Bonjour à tous,

    Billet rapide pour vous indiquer que Microsoft vient d’annoncer un nouvel évènement : la AzureCon. Première édition le 29 Septembre.

    Cet évènement en ligne et gratuit va se concentrer sur les technologies Cloud de Microsoft (principalement Azure) et traitera des nouveautés et de ce qui va être livré.

    Conférenciers de marque, contenu de qualité, c’est l’occasion d’en apprendre énormément sur les technologies Azure et leur utilisation.

    Cette conférence devrait se dérouler plusieurs fois par an (environ 4 fois), la raison principale étant la suivante : « avec des sorties et nouveautés toutes les 3 semaines sur chacun des services, on ne pouvait simplement pas attendre un an pour tout annoncer avec l’Ignite ou la Build » (PM Azure Microsoft)

    Pour vous inscrire c’est par là ! n’hésitez pas à en parle autour de vous !

    https://azure.microsoft.com/en-us/azurecon/?WT.mc_id=dx_MVP5000788

    • 18/8/2015

    Librairie .NET Alchemy API

    Cela fait plusieurs mois que je « joue » avec plusieurs services d’analyse sémantique. J’ai notamment découvert en avril www.alchemyapi.com Un des aspects intéressant étant qu’ils ont été rachetés il y a peu par IBM.

    Analyse sémantique

    Qu’est-ce que l’analyse sémantique ? c’est l’analyse de données texte (ou d’images aussi dans certains cas) et d’essayer de comprendre le sens du contenu pour en extraire les métadonnées. C’est un peu comme si je vous donnais un document, demandais de le lire et disais « de quels concepts ça traite ? de quelles entités (villes, dates, lieux, personnes…) ? etc etc » L’objectif étant bien évidemment de le réaliser automatiquement.

    La librairie

    Remarquant qu’ils n’avaient pas de librairie officielle en .net et en ayant besoin pour effectuer des tests, j’ai décidé de la développer.

    Et plutôt que de faire ça en mode « hack » j’ai essayé de produire du code propre et réutilisable. De plus plutôt que de garder ça pour moi uniquement j’en ai profité pour mettre le code à disposition sur github ainsi que de créer un nuget pour que les développeurs puissent l’utiliser plus facilement.

    Donc si vous voulez regarder/corriger mon code c’est par ici. https://github.com/baywet/AlchemyAPIClient

    Si vous voulez jouer avec l’api à votre tour c’est par là. https://www.nuget.org/packages/AlchemyAPIClient/

    J’ai été agréablement surpris de constater que la librairie a reçu plusieurs centaines de téléchargements en quelques mois. On verra bien comment évolue ce projet J

    • 17/8/2015

    Conférencier au collab365


    J’ai l’immense honneur d’avoir été sélectionné pour être conférencier lors du collab 365.

    Cet évènement est l’héritier du sp24 avec le spbiz qui s’est déroulé il y a quelques mois. C’est un évènement gratuit en ligne qui se déroulera le 8 Octobre pendant 24h autour du globe.

    En plus de me retrouver aux côtés de conférenciers de renom, j’ai l’immense privilège d’avoir 4 sessions à donner (ça promet d’être sportif)

    A savoir :

    Using office Graph API’s (anglais) https://collab365.conferencehosts.com/SitePages/sessionDetails.aspx?sessionid=C365176

    Traduire SharePoint de A à Z (Français)

    https://collab365.conferencehosts.com/SitePages/sessionDetails.aspx?sessionid=C365048

    L’importance des métadonnées pour votre entreprise (Français)

    https://collab365.conferencehosts.com/SitePages/sessionDetails.aspx?sessionid=C365047

    Setting up your release pipeline for SharePoint in Azure (Anglais)

    https://collab365.conferencehosts.com/SitePages/sessionDetails.aspx?sessionid=C365008

     

    Allez vite vous inscrire pour ne rien rater !

    http://www.collab365.events/

    A très bientôt.

    • 4/8/2015

    Déploiement de Cloud services Azure via les builds 2015

    Introduction au nouveau système de build

    Microsoft a récemment rendu disponible un nouveau modèle de définitions de build avec la version 2015 de Visual studio (les binaires tfs 2015 ne sont pas encore disponibles mais le service est déjà présent dans Visual Studio Online).

    Pour rappel, les « anciens » modèles de build étaient basés sur deux éléments :

    • Le build process template : en XAML, qui définit les étapes que va suivre la séquence de build

    • Le build défintion : qui va servir de liant entre le template, les sources et un ensemble de paramètres.

    Cette méthodologie fournit de nombreuses possibilités pour automatiser votre compilation, packaging, tests unitaires et même dans certains cas les déploiements.

    Les inconvénients principaux restant les suivants :

    • Processus uniquement personnalisable avec Visual Studio/.NET, ce qui ne suit pas l’ouverture récente de Microsoft

    • Difficile à débugger

    • Courbe d’apprentissage assez importante

    De ce fait Microsoft a renommé cette méthodologie « XAML builds » et a livré une nouvelle façon de faire. (actuellement nommée « build definitions » dans l’interface).

    Cette nouvelle méthodologie apporte de nombreux avantages :

    • Plus facile à prendre en main

    • Plus facilement débuggable

    • Editable depuis le portail web (plus besoin de visual studio donc)

    • Fournit de nombreuses intégrations avec d’autres outils (gulp, ant, maven…)

    Le fonctionnement principal étant d’enchainer des étapes enfichables (plus de structure complexe de workflow comme avant), c’est assez bien décrit par ici https://msdn.microsoft.com/en-us/Library/vs/alm/Build/overview

    Rappels sur les cloud services

    Parmi les nombreux services fournis par Microsoft Azure on trouve les cloud services (PaaS). Pour faire court, et du point de vue d’un développeur, ce sont des services qui peuvent être modélisés dans Visual Studio et qui se constituent deux types de composants :

    • Worker Role : composant servant à faire du traitement lourd, un peu comme un service windows dans son fonctionnement.

    • Web Role : composant permettant de développer des applications web. Cependant à moins de contraintes de déploiement/configuration/flexibilité assez particulières, les azure web sites (ou azure web apps) répondent maintenant à 98% du besoin et sont plus simples à déployer.

    Si vous voulez plus d’informations sur le sujet je vous invite à consulter https://msdn.microsoft.com/en-us/library/azure/jj155995.aspx

    Déployer un cloud service dans votre release pipeline

    Maintenant en tant que développeur consciencieux vous souhaitez déployer ce cloud service de manière automatisé en mettant en place un release pipeline. Pour éviter que cet article soit trop long je ne m’étendrai pas sur les nombreux avantages que cela procure par rapport à un build et déploiement à la main.

    Vous avez présentement plusieurs options pour configurer le déploiement automatique :

    • Depuis le cloud service sur le portail courant (manage.windowsazure.com) demander à azure de faire la configuration à votre place.

    • Le faire à la main.

    Le « problème » avec le premier cas de figure c’est qu’en ce moment Azure va configurer une build « XAML ». C’est amplement suffisant si vous souhaitez uniquement déployer votre cloud service tout seul. Mais admettons que vous ayez d’autres éléments à builder/déployer dans votre solution et/ou que vous souhaitez bénéficier d’intégration avec d’autres outils/services ? Dans ce cas il va être très difficile de concilier build XAML et ces autres éléments (voir impossible dans certains cas de figure).

    Je vais donc vous expliquer comment déployer ce cloud service avec les nouvelles builds de visual studio online. Cet article va être basé sur des éléments puisés dans un article qui explique comment déployer un azure web site avec les nouvelles builds, sur un article qui explique comment déployer des cloud services avec les builds XAML ainsi qu’un peu de recherche de ma part.

    https://msdn.microsoft.com/en-us/Library/vs/alm/Build/azure/index

    https://azure.microsoft.com/en-us/documentation/articles/cloud-services-dotnet-continuous-delivery/

    Je vais présumer que vous avez déjà créé le service de cloud sur azure ainsi qu’un service de stockage. (il est possible d’automatiser cette partie aussi si vous le souhaitez).

    Vous devez aussi être administrateur de votre projet d’équipe et administrateur de la souscription Azure (ou demander à l’admin azure les publishsettings)

    Configuration de la connexion à Azure

    La première étape consiste à dire à visual studio online « hey j’ai une souscription azure sur laquelle tu peux faire des trucs ». Pour cela rendez-vous sur la page de votre projet d’équipe dans visual studio online cliquez sur la roue dentée en haut à droite.

    Puis cliquer sur l’onglet services.

    Add new service connection.

    Ajouter le subscription id, le subscription name, et le subscription certificate que vous pouvez trouver depuis le fichier publish settings. Vous pouvez obtenir ce fichier de plusieurs manières :

    • En cliquant sur le lien bleu en bas à droite

    • Depuis la console azure powershell

    • En allant voir votre admin azure si vous en avez un

    Une vidéo explique comment bien ajouter ces paramètres

    http://www.youtube.com/watch?v=aLprCE3uRHs&t=2m10s

     

    Note : je n’ai pas eu de problèmes avec cette étape avec mon compte personnel (live) pour des projets personnels mais il semblerait qu’il y ait un bug si votre souscription Azure est un Enterprise agreement et que vous vous identifiez sur azure avec un compte d’entreprise. Pour contourner ce problème chez Negotium nous avons configuré un déploiement depuis azure ce qui a eu pour effet de créer service automatiquement.

    Ajout de l’étape de publication

    Rendez-vous dans l’onglet « build ». Normalement vous avez déjà créer une nouvelle définition de biuld de type « Visual Studio ». Par défaut 4 étapes sont présentes :

    • Visual Studio Build : compilation

    • Visual Studio Test : mstest

    • Index Sources and Publish symbols : création des symboles de débug

    • Publish Build artifacts : rapatrie le produit du processus pour l’archiver avec la build

    Nous allons commencer par éditer la première étape pour ajouter « /t:Publish /p:TargetProfile=Cloud » aux arguments MS Build. Bien entendu « cloud » doit correspondre à un des profils de publication de votre service de cloud ( par défaut cloud et local).

    Ceci va indiquer à visual studio de constituer les packages de déploiements après la compilation.

    Une fois cela effectué nous allons ajouter une cinquième étape en dernier de déploiement de cloud service.

    Pour la souscription, sélectionner celle que vous venez d’ajouter, dans le storage account, entrez le nom de l’espace de stockage qui va servir pour le déploiement. Service Name, le nom du cloud service.

    Pour le cspkg et le csconfig vous avez plusieurs options, ou bien vous pouvez spécifier le chemin complet ou relatif vers les fichiers ou alors vous pouvez spécifier un pattern de recherche. Préférant la précision j’ai rentré :

    $(Agent.BuildDirectory)\artifacts\drop\ImageResizer\bin\$(BuildConfiguration)\app.publish\ImageResizer.cspkg

    $(Agent.BuildDirectory)\artifacts\drop\ImageResizer\bin\$(BuildConfiguration)\app.publish\ServiceConfiguration.Cloud.cscfg

    “imageResizer” étant le nom de mon projet de cloud service.

    (si vous n’êtes pas sûrs des noms de dossiers/fichiers, lancez une première build et regardez le contenu du drop)

    Pensez bien à activer l’étape, enregistrer et vous êtes prêts à déployer de manière automatique !

    • 27/7/2015

    Provisionnement des services customs dans SharePoint

    Cet article s’adresse aux développeurs SharePoint full trust qui ont (vont) développé un service (SPService) pour SharePoint.

    En effet dans le cadre où vous bâtissez un produit pour SharePoint comme on le fait chez Negotium (www.oceanik.com www.theattributesolution.com ) vous avez probablement intégré une application de service dans votre solution.

    Si c’est le cas votre application de service a probablement un service SharePoint dédié pour exécuter son code (que ce soit un service porté par IIS ou un service windows).

    Dans ce cas de figure il arrive à un moment (activation de la fonctionnalité, installation…) où vous voudrez provisionner le service (au moins sur une des machines)

    Si vous appelez MonSPServiceInstance.Provision() sur le serveur courant, aucun problème. Par contre dès que vous commencez à vouloir le provisionner l’instance de service sur un serveur distant, vous prenez une exception.

    Ceci est causé par le fait que l’instance de service ne veut pas se lancer sur un serveur distant. Voir plutôt le code décompilé de SharePoint.

    Si on prend le temps d’y penser quelques minutes c’est quelque part censé, pour démarrer un service il faut être administrateur de la machine locale dans un contexte d’exécution privilégié. Et ce n’est pas le cas lorsque le code est exécuté à distance.

    Du coup au lieu d’appeler la méthode de provisionnement directement il est préférable de lancer un timerjob pour effectuer ce provisionnement à votre place. Et pas besoin de le développer, il existe déjà.

    Simplement instancier un SPServiceInstanceJobDefinition en passant en paramètre votre instance de service et un booléen pour le provisionner ou le dé-provisionner.

    Ensuite il suffit de donner une Schedule (one time) et de mettre à jour le timerjob (.Update()).

    Voilà qui devrait vous éviter pas mal de recherche sur le sujet puisque ce n’est actuellement pas très bien documenté sur MSDN.

    Merci à Jordan de mon équipe qui a passé la majeure partie du temps sur le sujet et qui m’a permis de publier cet article.

    • 18/7/2015

    Résolution de dépendance communes en développement de solutions full trust SharePoint

    Bonjour à tous,

    Chez Negotium technologies nous développons plusieurs produits pour SharePoint. (www.oceanik.com www.theattributesolution.com …)

    Un problème assez complexe nous est récemment arrivé. Imaginez que ces deux produits aient une dépendance commune (newtonsoft.json pour ne pas la nommer). Maintenant imaginez que les deux produits soient installés sur une même ferme SharePoint et que pour une raison quelconque vous vouliez désinstaller uniquement un des produits.

    Quand SharePoint va rétracter le wsp, il va naturellement rétracter toutes les dll’s qui étaient dedans. Y compris la dépendance commune dont l’autre produit a toujours besoin. Ceci va mettre en défaut l’autre produit.

    Un administrateur avisé le remarquera rapidement et effectuera un install-spsolution <nomsolution> -GacDeployment –Local –Force sur chacun des serveurs impactés.

    Cependant tous les clients n’ont pas la chance d’avoir des administrateurs correctement formés sur SharePoint. La question suivante se pose vite : comment s’assurer que ma solution sera assez résiliante pour se réparer toute seule dans ce genre de cas de figure ?

    Après plusieurs réflexions, il apparait que SharePoint ne possède pas de système complet de résolution de dépendance. (en fait le problème vient de .NET en général et de Windows).

    Certains développeurs SharePoint chevronnés me diront qu’il existe les ActivationDependency pour les solutions. Oui mais cela ne sert qu’au déploiement, rien n’empêche de rétracter une solution dont d’autres dépendent.

    D’autres diront qu’on peut essayer de combler ce manque avec de la dépendance de fonctionnalités, qui elles vérifient les dépendances lors de la désactivation. Non les fonctionnalités sont là pour le provisionnement d’éléments, de plus rien n’empêche techniquement quelqu’un de rétracter une solution qui comporte des fonctionnalités toujours activées (même si c’est très mal de le faire).

    Du coup la seule solution technique pour résoudre ce problème (et j’ai aussi pris le temps d’échanger avec l’équipe produits SharePoint sur le sujet) c’est de faire un timerjob sans aucune dépendance qui va venir vérifier si nos dépendances sont là et si elles sont absentes redéployer les solutions.

    Vous trouverez un exemple ici.

    Encore une fois, si vous pouvez faire des apps au lieu de solutions full trust, envisagez-le, vous n’aurez pas ce genre de problème ;-)

    PS : je tiens à remercier les gars de mon équipe pour avoir passé du temps à réfléchir sur le sujet à savoir Benoit, Pascal, Yann, Sébastien, Jeff et Jordan.

    • 9/6/2015

    Déplacement des Javascript des Apps (add-ins) SharePoint

    Chez Negotium nous avons récemment rencontré un problème assez étrange.

    Imaginez que vous avez bâti une app pour SharePoint précédement (Provider-Hosted)

    Imaginez maintenant que vous avez mis à jour vers la dernière version du SDK (mise à jour de Avril/Mai)

    Maintenant imaginez que votre tenant a été mis à jour récemment (v16.0.4121.1212 ou supérieure).

    Comme c’était préconisé lorsque Microsoft a livré le modèle d’applications, il y a de fortes chances que vous chargiez les SP.*.js et MicrosoftAjax.js (dont dépendaient SP.*.js) depuis <HostWebUrl>/_layouts/15/fichierjs.js ou bien <AppWebUrl>/_layouts/15/fichiersjs.js

    Cependant cela fait plusieurs années que MicrosoftAjax.js est déprécié (il a été remplacé par les nouveautés d’EcmaScript 5 et par jqueryval)

    http://stackoverflow.com/questions/8782697/are-microsoftajax-js-microsoftmvcajax-js-and-microsoftmvcvalidation-js-obsolete

    Du coup cette dernière mise à jour de tenant supprime le fichier en question.

    Autre chose, la mise à jour du sdk (16.1.3912.1204) apporte la majorité des fichiers javascript SP*.js comme on peut le voir dans le dossier javascript du nuget Microsoft.SharePointOnline.CSOM.

    Il semblerait donc que Microsoft ait changé de stratégie et préconise maintenant d’inclure les fichiers JS au sein de son application.

    Personnellement j’ai créé un dossier SharePoint dans mon dossier Scripts et ajouté le bundle suivant

    bundles.Add(new ScriptBundle("~/bundles/sharepoint").Include(

                   "~/Scripts/sharepoint/*.js"));

     

    Oui mais voilà vous remarquerez qu’il manque le fichier SP.UI.Dialog.js (qui permet de faire des barres de notification) et ce fichier dépend toujours de MicrosoftAjax.js (à cause de Type.RegisterNamespace…)

    Je pense qu’on verra une nouvelle version arriver très probablement dans une mise à jour du SDK, mais en attendant j’ai dû ajouter MicrosoftAjax.js et SP.UI.Dialog.js à mon dossier en les copiant depuis un vieux tenant. (ou une installation on prem, au choix)

    En espérant que ça vous permettra d’anticiper par rapport au problème et de ne pas vous retrouver devant quand vos clients auront reçu la mise à jour de leur tenant.

    • 2/6/2015

    Azure – Bug avec la définition de paramètres depuis Azure WebSites

    Bonjour à tous,

    Pour ceux qui ne le savent pas déjà, vous pouvez définir les paramètres « appSettings » de votre application depuis l’interface azure.

    Le fait d’utiliser cette technique plutôt que celle de transformation xsl a plusieurs avantages notamment :

    • Uniquement l’admin connait les paramètres finaux, ils ne sont pas sur le contrôle de code source

    • Interface conviviale

    • Les paramètres peuvent être liés au slot (case à cocher), cela permet d’avoir des scenario du type « c’est mon paramètre de staging avec celle valeur, et telle autre valeur pour la prod, et ces paramètres ne swap pas quand je swap l’application »

    J’ai récemment trouvé une coquille avec cet outils. Admettons qu’on définisse uniquement les clefs dans le web.config comme ceci car on estime que de toute manière la valeur va être fournie par le service de configuration.

    Evidemment les clefs/valeurs sont bien définies au niveau des paramètres.

    Cependant après déploiement, si on explore à l’aide de kudu (https://votrenomazure.scm.azurewebsites.net) et qu’on édite le web.config résultant on s’apperçoit que les valeurs n’ont pas été définies.

    Pour résoudre ce problème il m’a suffi de rajouter value="" dans le fichier d’origine web.config.

    En espérant que ça vous évite de perdre du temps pour rien.

    • 27/5/2015

    Conférencier au MSDEVMTL – Développement office 365

    Le 8 Juin prochain j’aurai l’occasion d’intervenir au MSDEVMTL pour parler du développement office.

    Au programme :

    • Opportunités

    • Développement Office

    • Développement SharePoint

    • Développement Office 365

    L’objectif étant de démontrer que le développement office/office 365/SharePoint a bien évolué ces dernières années aux développeurs .NET « classiques » et que les méthodologies de développement sont bien plus similaires à ce qu’ils connaissent.

    Quand on parle de développement office (au sens large) c’est un marché de 1.4 milliards de clients potentiels dont on parle, une opportunité à ne pas rater à mon sens.

    Cette session se déroulera chez Microsoft Montréal et est accessible à tout le monde pour 5 dollars (ou gratuit si vous êtes déjà membres du groupe usagers)

    Toutes les informations pour s’inscrire sont par ici. http://www.meetup.com/msdevmtl/events/208688922/

    PS : si vous n’êtes pas déjà inscrit au groupe, faites-le, il y a énormément de contenu intéressant tout au long de l’année.

    • 25/5/2015

    Conférencier au SharePoint Saturday New York City 2015

    Cette année encore j’aurai l’honneur d’être conférencier au SharePoint Saturday de New York City http://www.spsevents.org/city/nyc/nyc2015

    Ma présentation sera à propos de l’importance des métadonnées en entreprise. (en Anglais)

    Nous allons commencer par effectuer un rappel théorique des différents types de métadonnées et quels sont les avantages et inconvénients de chacun. Ensuite nous verrons ce qui est supporté par SharePoint et quels sont les outils existants à disposition. Enfin nous terminerons avec l’importance de la mise en place de ces outils en entreprise et comment ils vont vous aider à effectuer une transition vers le Graph et améliorer la trouvabilité du contenu.

    Rappel : il y a beaucoup d’autres très bonnes sessions qui se dérouleront lors de cet évènement gratuit du 25 Juillet. N’hésitez pas à nous rejoindre.

    • 21/5/2015

    Conférencier au SharePoint Saturday Montréal 2015

    Cette année encore j’aurai l’honneur d’être conférencier au SharePoint Saturday de Montréal http://microsofttouch.fr/default/b/vincent/archive/2015/03/04/sharepoint-saturday-montr-al-2015

    J’ai aussi eu l’occasion d’aider à l’organisation aussi cette année, c’est une expérience intéressante et je tiens à remercier Serge, Nico, Luc, Philippe, Seb, Fabrice et Alain pour leur implication sur le projet, c’est beaucoup plus de travail qu’on imagine !

    Ma présentation sera à propos de l’importance des métadonnées en entreprise.

    Nous allons commencer par effectuer un rappel théorique des différents types de métadonnées et quels sont les avantages et inconvénients de chacun. Ensuite nous verrons ce qui est supporté par SharePoint et quels sont les outils existants à disposition. Enfin nous terminerons avec l’importance de la mise en place de ces outils en entreprise et comment ils vont vous aider à effectuer une transition vers le Graph et améliorer la trouvabilité du contenu.

    Rappel : il y a beaucoup d’autres très bonnes sessions qui se dérouleront lors de cet évènement gratuit du 23 Mai. N’hésitez pas à nous rejoindre.

    A Samedi donc !

    • 19/5/2015

    Conférencier au SPBizConf

    Les 17 et 18 Juin 2015 se déroulera la spbizconf (http://www.spbizconf.com/ )

    Cette conférence orientée principalement business (avec un peu de technique aussi) est gratuite, en ligne et se déroulera en Anglais.

    Allez vite vous inscrire !

    Pour ma part j’aurais la chance d’animer une session sur le Graph. On va faire un peu de théorie pour bien poser les bases, parler du Graph de Microsoft et de la vision puis finir par les cas d’utilisation réels et expliquer ce à quoi ça pourrait servir dans votre entreprise.

    Plus d’informations :

    http://www.spbizconf.com/events/using-office-graph-apis/

    • 12/5/2015

    Ce que j’ai retenu de l’ignite (SharePoint)

     Je n’ai pas eu la chance d’être à Chicago cette semaine pour assister à l’Ignite. Je ne m’étendrai pas sur les détails mais disons que pas mal de récents changements internes chez www.negotium.com  ont fait qu’on n’a pas pu s’organiser comme il fallait à temps.

    Cela ne m’a pas empêché de suivre de près (enfin à distance hein) ce qu’il s’est passé durant cette semaine, et ça a été riche en annonces… (surtout si on prend les annonces faites lors de la build la semaine d’avant)

    Avant de démarrer, je vais restreindre le périmètre, je vais principalement parler des annonces et contenu que j’ai retenu sur Office 365 et SharePoint (pas de skype for business ou exchange ici donc) et ce sera principalement orienté pour les itpros et les développeurs (pas de « ils ont sorti telle app pour ipad » donc).

    Autre chose, vue le volume de nouveautés, la liste ne sera sûrement pas exhaustive, aussi n’hésitez pas à commenter !

    Le Graph

    J’ai pas mal joué avec ces derniers temps, attendez-vous à voir des articles sur le sujet arriver. Changement de nom pour commencer, Office Graph devient Microsoft Graph : la raison est simple il va surfacer beaucoup plus de données (notamment Azure Active Directory, la gamme Dynamics,…)

    Dans ce Graph nous retrouvons plusieurs choses, pour commencer une unification des API Office 365 (mail, fichiers, calendrier…).

    Quels sont les avantages d’un tel changement ? Un seul point d’authentification, un seul point de connexion pour les données professionnelles et personnelles. En effet ces API vont permettre aussi d’intégrer les versions grand public des services (OneDrive, Outlook,…)

    Si vous voulez en savoir plus voici quelques sessions :

    http://channel9.msdn.com/Events/Ignite/2015/BRK3199

    http://channel9.msdn.com/Events/Ignite/2015/BRK3154

    http://channel9.msdn.com/Events/Ignite/2015/BRK3193

    Ou bien vous pouvez assister à la session en ligne de Sébastien Levert le 14 Mai http://mvp.microsoft.com/en-us/virtualconference.aspx  ou la mienne le 17 Juin http://www.spbizconf.com/events/using-office-graph-apis/

    SharePoint 2016

    Nous avions déjà eu quelques annonces avant l’Ignite, celle d’une sortie décalée de SharePoint 2016 : la beta sortira au dernière trimestre 2015 et la version publique au second trimestre 2016.

    https://blogs.office.com/2015/04/16/sharepoint-server-2016-update/

    Mais c’est avec la session de Bill Baer qu’on comprend pourquoi :

    Le profil utilisateur sort de SharePoint

    Longtemps critiqué (notamment pour sa difficulté à démarrer et ses problèmes de synchronisation fréquents) le moteur de synchronisation va sortir de SharePoint pour se retrouver dans un service externe et transverse à la suite de serveurs office (Exchange, SP, Skype for business)

    Nouveau service de gestion de la charge

    On peut dire que Microsoft a beaucoup appris en opérant SharePoint sur de larges installations (office 365), un des bénéfices de cette expérience est l’apparition d’un nouveau système de répartition de la charge dans SharePoint. Ce service prendre en compte des paramètres avancés tels que la santé du serveur, sa charge courante, est-ce qu’il est en train d’installer des patchs…

    Nouvelles limites et meilleures performances Comme on peut s’y attendre pour chaque nouvelle version de SharePoint les limitations, les recommandations et les performances vont encore évoluer.

    Nouveau service d’analytics et de suivit de la consommation

    Toujours grâce à l’expérience que Microsoft a acquise sur le web avec SharePoint, un nouveau service d’analyse du trafic et de l’espace ainsi que des performances va faire son apparition

    Nouvelle application de service de recherche

    L’objectif de Microsoft est de permettre aux organisations qui veulent encore fonctionner avec des systèmes on premices de pouvoir le faire. Encore mieux de pouvoir mettre en place des solutions hybrides totales et de bénéficier de tous les avantages possibles. De plus Microsoft est en train de réaliser de gros investissement dans le graph, et ils ne peuvent pas se passer des données qui seront chez le client. C’est pour cela qu’un nouveau service de recherche hybride complétement intégré va faire son apparition, on ne sait pas encore s’il existera un jour une version du graph pour on prem uniquement. (personnellement j’en doute)

    Liens “durables” (persistent? )

    A la manière de bit.ly SharePoint va maintenant fournir des liens courts et persistent vers le contenu qui se trouve dans SharePoint. Et ce peu importe si le contenu est déplacé ou autre.

    Assistant de configuration d’authentification hybride

    Avez vous déjà configuré l’authentification hybride pour SharePoint ? Avec sa bonne cinquantaine de commandes powershell, ses échanges de certificats, les règles firewall, les entrées DNS à changer… Et surtout toutes les erreurs qui peuvent se glisser en court de route ? Microsoft va nous fournir un assistant qui va permettre de configurer toute la partie SharePoint et nous indiquer ce qu’il reste à faire sur le reste de l’infrastructure.

    Intégration native du contenu de project

    Toujours pour améliorer les performances des deux produits, les données project server vont bénificier d’une intégration native dans SharePoint, est-ce qu’on s’en va vers une fusion des deux d’ici 2020 ?

    Création rapide de collections de sites

    L’idée de cette fonctionnalité est de permettre aux administrateurs de ferme SharePoint de créer des collections de sites « maitresses » au sein de leur infrastructure. Une fois ces copies principales créées, la création d’autres collections de sites à partir de ces dernières sera beaucoup plus rapide puisqu’elle ne passera plus pas les étapes d’activation des fonctionnalités.

    Nouveau service de cache distribué

    Qui n’a pas eu des problèmes de stabilité avec le service de cache distribué de SharePoint 2013 ? Microsoft a effectué des améliorations (sans nous dire lesquelles) de ce côté. Mon avis c’est qu’ils ont remplacé appfabric par Redis, mais ce n’est que mon avis personnel.

    Apparition de nouveaux rôles au sein des fermes SharePoint

    Toujours afin de s’adapter au web, d’avoir de meilleures performances et une répartition de la charge mieux spécialisée, Microsoft introduit de nouveaux rôles au sein de SharePoint 2016 : - WFE - APP - Spécialisé (services nécessitant un serveur dédié, je pense à la recherche, ce genre de choses) - Cache L’installation standalone (celle qui embarquait un SQL Server Express) disparait du paysage. Microsoft donne vraiment à SharePoint une dimension adéquat au web et non plus de « petit server qui traine dans un coin » SharePoint 2016 ne supportera plus non plus les installations dans un groupe de travail (non active directory)

    Mise à jour sans interruption de service

    Autre promesse de cette version 2016: celle de pouvoir passer des mises à jour sans avoir à mettre les services hors ligne. En théorie ceci devrait nous permettre de garder une ferme en production (pendant le temps de la mise à jour) avec des serveurs qui ont un niveau de patch différent. Cela devrait grandement simplifier la vie des admins…

    Conformité des serveurs

    Toujours dans l’optique d’aider à la mise à jour et la maintenance des fermes SharePoint, une nouvelle colonne fait son apparition dans la gestion des serveurs : conformité

    Support chiffrement SMTP

    Tout est dans le titre, ça faisait longtemps qu’on le demandait celui là

    Autres

    D’autres annonces ont été faites, si vous voulez plus de détails, la session incontournable : http://channel9.msdn.com/Events/Ignite/2015/BRK2188

    Conclusion

    L’année à venir va être riche en nouveautés, et vous quelles sont celles qui ont attiré votre attention ?

    • 7/4/2015

    MVP Virtual Conference

    J’ai le plaisir de vous annoncer que les MVP American (US, Canada, Latin…) organisent deux jours de conférences en ligne gratuits les 14 et 15 Mai prochains.

    Pour savoir quelles sont les sessions c’est par ici

    http://mvp.microsoft.com/en-us/virtualconference-agenda.aspx

    Pour vous inscrire http://mvp.microsoft.com/en-us/virtualconference-sessions.aspx

    Personnellement je serai le modérateur de Sébastien Levert sur sa session « introduction to AngularsJS applications in Office 365 »

    C’est une superbe opportunité pour échanger avec des experts du monde entier.

    • 4/4/2015

    Renouvelé MVP SharePoint pour la deuxième année et retour d’expérience

    Version courte

    J’ai le plaisir de vous annoncer que j’ai été renouvelé Microsoft Most Valuable Professional pour la deuxième année. C’est reparti pour un tour !

    Introduction

    Pour ceux qui me suivent depuis quelques temps voici la suite d’une série que je publie depuis plus de 5 ans (depuis que je suis devenu MSP). Je vous l’avais promis l’an dernier, voici un retour d’expérience d’un an en tant que MVP.

    Si vous voulez avant ça lire l’épisode précédent (qui contient les liens de tous les épisodes précédents) pour vous mettre dans le bain, c’est par ici.

    Les avantages

    On va commencer par l’aspect « matériel » de la chose. Quand on devient MVP on a accès à de nombreux avantages et goodies, fournis par Microsoft ou non par exemple :

    • Le compte MSDN qui est bourré d’avantages, crédit sur Azure, tous les logiciels Microsoft…

    • Pluralsight, vidéos de formation en ligne

    • Softwares divers et variés du genre camstasia etc...

    • Le totem MVP, c’est la classe sur le bureau

    Le contact avec les autres, et les équipes produits

    Une des choses les plus intéressante d’être MVP c’est d’avoir accès à une communauté internationale d’autres MVP dans sa technologie (mais pas que) et aux équipes produits (si si les gars qui codent les produits que vous manipulez au quotidien). Je vous laisse imaginer la valeur que cela représente dès lors qu’on se retrouve avec une question plus complexe que d’habitude et qui ne trouve pas sa réponse sur Internet.

    De plus l’équipe produit est à l’écoute de ses MVP’s, en effet pour eux nous sommes une vraie mine d’or de retour d’expérience du terrain et des clients. Cela leur permet de se reconnecter avec la réalité et d’ajuster le tir. Chaque équipe organise des Product Group Interaction (PGI’s) entre tous les mois et toutes les semaines, dépendamment de l’activité du produits au moment en question. Tout en sachant que SharePoint par exemple n’est pas codé par une équipe mais par une équipe pour le social, une pour la collab, une pour les sites internet… Et on est aussi de temps à autres invités par les équipes d’autres produits. En définitive j’ai entre une à deux interactions en moyennes avec eux par semaine.

    Durant ces PGI’s les équipes vous présentent les futures fonctionnalités du produits (ou solutions techniques) et vous demandent votre avis. Ou bien ils vous disent « voici ce qu’on a déjà, qu’est-ce que vous feriez différemment et pourquoi ? » C’est super motivant d’avoir un tel poids sur le produit avec lequel on travaille au quotidien.

    Les communautés

    Un autre point positif en tant que MVP c’est qu’on a plus de poids dans les communautés. Les gens se disent « ce gars-là il est reconnu par Microsoft ». Loin de moi l’idée d’en abuser mais l’aspect bénéfique c’est qu’on vous accorde plus de place. Personnellement par exemple j’ai eu plus d’opportunités que jamais l’an dernier pour animer des sessions lors d’évènements. Vu qu’on dispose d’un réseau beaucoup plus grand, il y a toujours quelqu’un pour vous aider lorsque vous cherchez à organiser quelque chose pour la communauté.

    Le MVP summit

    Chaque année en Novembre Microsoft invite les MVP du monde entier (bientôt 4000 personnes), toutes technologies confondues à la maison mère, Redmond, près de Seattle pour une semaine.

    Je dirai que c’est à la fois une forme de remerciement pour notre investissement tout au long de l’année mais aussi et surtout une façon pour eux d’avoir des retours d’expérience de manière intensive. Les journées s’organisent de la manière suivante :

    • Entre 6 et 8h, petit déj

    • 8h à 18h sessions d’une à deux heures avec les équipes produits

    • 18h à 21h évènement

    • 21h à 4h « réseautage autour d’un verre » (histoire de rester politiquement correct ;-) )

    C’est vraiment cool d’avoir ceux qui codent le produit en avant qui notent des trucs quand tu fais une intervention pertinente, on a l’impression d’avoir de l’impact.

    Quel genre d’évènements ? Généralement une soirée avec les MVP de votre pays, une soirée avec votre division produit, une soirée de bienvenue et une soirée en ville de clôture. Cette année Satya Nadella est même venu nous parler 20 minutes.

    Parenthèse : Microsoft Corp comprend de nombreux Français, anciens MVP’s ou MSFT France, toujours sympa de les revoir.

    Conclusion

    Je me répète mais être MVP c’est faire d’incroyables rencontres, échanger avec des gens très bons techniquement voir même ceux qui font la technologie que vous utilisez au quotidien.

    C’est aussi voyager parce qu’en un an mon rôle de MVP m’aura amené à aller à Toronto, NYC, Ottawa, Nashua (près de Boston), Seattle.

    Cela représente une belle reconnaissance pour l’investissement fait au sein de la communauté.

    L’expérience est tout simplement géniale et j’espère le rester tant que je serais assez en forme pour survivre au MVP summit.