Recommandations pour la construction d’applications PowerApps

Voici un petit résumé des dernières recommandations Microsoft figurant dans le livre blanc destiné aux développeurs d’applications PowerApps.

Vous y trouverez également quelques suggestions personnelles.

Conventions de nommage des objets

Ecrans

Les noms des écrans étant lus par les logiciels lecteurs d’écran, il est important de nommer ses écrans de manière très claire :

  • Home Screen
  • Search Screen
  • Customer Screen

Voici quelques exemples :

blog ai3 20101_ecrans Recommandations pour la construction d'applications PowerApps

Contrôles

Voici une proposition d’abréviations à utiliser comme préfixes dans les noms que vous attribuerez à vos contrôles :

Type de contrôle (en anglais)Abréviation
buttonbtn
camera controlcam
canvascan
cardcrd
collectioncol
combo boxcmb (je préfère cbx)
datesdte (je préfère dat)
drop downdrp (je préfère ddl)
formfrm
gallerygal
groupgrp
header page shapehdr
html texthtm
iconico
imageimg
labellbl
page section shapesec
shapes (rectangle, circle, …)shp (je préfère rec pour les rectangles et shp pour le reste)
table datatbl (je préfère tab)
text inputtxt
timertim
etc.

Un contrôle doit avoir un nom unique dans une application. Si un contrôle est réutilisé sur plusieurs écrans, il est recommandé de le suffixer par une abréviation précisant l’écran où il se trouve. Par exemple, un bouton btnHome sur les écrans Search Screen et Customer Screen :

  • btnHomeSS
  • btnHomeCS

Conventions de nommage du code

Variables

Quelques recommandations pour le nommage de vos variables :

  • Donnez-lui un nom qui décrive clairement sa fonction, son rôle
  • Utilisez un préfixe différent selon qu’il s’agit d’une variable locale ou globale
    • loc pour les variables locales
    • gbl pour les variables globales (je préfère glo)
  • N’hésitez pas à utiliser plusieurs mots pour nommer votre variable, sans les séparer par un caractère spécial mais simplement en faisant commencer chaque mot par une majuscule
  • Utilisez le camel case

Exemples :

  • Variable globale : gloFocusedBorderColor
  • Variable locale : locSuccessMessage

Collections

Quelques recommandations pour le choix du nom de vos collections :

  • Utilisez un nom qui représente vraiment le contenu de votre collection
  • Préfixez le nom de votre collection par col
  • Si nécessaire, utilisez plusieurs mots en les faisant commencer chacun par une majuscule
  • Utiliser le camel case

Quelques exemples :

  • colMenuItems
  • colSelectedOrders

Organisation des objets et du code

Organisez à l’aide de groupes

Les contrôles de chacun de vos écrans devraient idéalement être rassemblés dans des groupes. Cela vous facilitera la lisibilité du contenu de vos écrans et vous pourrez déplacer ces groupes plus aisément d’un écran à l’autre. Remarque : les galeries, les formulaire et les graphiques sont déjà des contrôles groupés mais rien ne vous empêche de les mettre également à l’intérieur d’autres groupes.

Voici un exemple :

blog ai3 20101_groupes Recommandations pour la construction d'applications PowerApps

Pour plus de flexibilité dans l’utilisation des groupes, vous pouvez également activer la fonctionnalité expérimentale Essayer le contrôle Groupe amélioré (enhanced Group control). Celle-ci vous permettra d’imbriquer des groupes et de leur affecter des propriétés influant sur les contrôles qu’ils contiennent. Cela permet une gestion plus claire et plus efficace de vos contrôles.

Minimiser le nombre de vos contrôles

Plus il y a de contrôles dans votre application et plus ses performances se dégraderont. Il est donc important d’optimiser le nombre de contrôles. Par exemple, plutôt que d’avoir 4 images s’affichant alternativement à l’aide la propriété Visible, privilégiez un seul contrôle Image avec un peu de code :

blog ai3 Image-22 Recommandations pour la construction d'applications PowerApps

Optimisation du code

Il est possible d’optimiser les structures conditionnelles de type If de la manière suivante :

blog ai3 Image-23 Recommandations pour la construction d'applications PowerApps

…peut s’écrire plus simplement ainsi :

blog ai3 Image-24 Recommandations pour la construction d'applications PowerApps

Egalement, si plusieurs contrôles doit effectuer le même code, préférez l’utilisation d’un bouton masqué contenant le code dans sa propriété OnSelect et utilisez la fonction Select pour le déclencher à partir de vos contrôles.

Recommandations sur le code

Évitez aussi de multiples appels à une fonction qui prend des paramètres en nombre infinis :

blog ai3 Image-25 Recommandations pour la construction d'applications PowerApps

…au lieu de :

blog ai3 Image-25-1 Recommandations pour la construction d'applications PowerApps

Préférez ClearCollect(…) à Clear;Collect(…).

Préférez aussi CountIf(…) plutôt que Count(Filter(…)).

Optimisation des performances

Le OnStart

Pour rappel, cet événement n’est appelé qu’une seule fois au lancement de l’application. Y mettre une quantité importante de code pourrait nuire à l’expérience utilisateur. Par exemple, trop de code dans cet événement pourrait induire un temps d’attente plus ou moins long avant l’affichage du premier écran.

La fonction Concurrent

Pour exécuter du code en parallèle et optimiser le temps d’exécution de certaines portions de code, la fonction Concurrent s’avère très pratique. Elle permet d’éviter l’utilisation de contrôles de type Timer pour le chargement simultané de données.

blog ai3 Image-26 Recommandations pour la construction d'applications PowerApps

Attention à éviter d’y mettre des segments de code interdépendants ; la fonction ne le supporte pas (vous ne pouvez pas définir une variable dans l’une des opération concurrente et la modifier dans une autre).

Pour plus d’information sur l’utilisation de la fonction Concurrent afin d’optimiser les performances de vos applications, consulter ce lien :
https://www.youtube.com/watch?v=xHJvbMEj-so

Délégation et non-délégation

Gardez à l’esprit que certaines fonctions et certains opérateurs peuvent être délégués par le serveur possédant la source de données et d’autres non. L’utilisation de fonctions non-déléguées oblige le chargement de ces données au préalable ce qui induit un temps d’exécution plus long.

Pour mieux comprendre les aspects de délégation, consultez cet article :
https://docs.microsoft.com/en-us/powerapps/maker/canvas-apps/delegation-overview

Collections locales

Privilégiez l’utilisation de collections locales pour stocker les données provenant de votre source plutôt que d’y faire de nombreux appels en direct.

Procédures stockées sur SQL Server

Si vous utilisez SQL Server comme source de données pour votre application, d’énormes gains en performance peuvent être réalisés en déportant le traitement des données via des procédures stockées appelées à partir d’un flux de travail Microsoft Flow.

Code coûteux en performance

Lorsque vous devez exécuter du code pouvant potentiellement être chronophage, suivez ces quelques conseils :

  • N’exécutez pas ce code AVANT l’affichage de votre prochain écran ; affichez d’abord votre prochain écran et mettez votre code dans l’événement OnVisible de l’écran pour qu’il s’exécute en arrière-plan pendant que l’utilisateur prend connaissance du contenu de l’écran
  • Utilisez un message indiquant qu’un chargement ou un traitement conséquent est en cours afin que l’utilisateur patiente quelques instants
  • Utilisez, dans la mesure du possible, la fonction Concurrent pour paralléliser les traitements

Limiter la taille du package de l’application

Bien que PowerApps optimise au maximum le chargement des applications, il est possible de suivre quelques règles pour aller encore plus dans le sens de l’optimisation :

  • Supprimez les médias inutilisés
  • Privilégiez les images SVG aux images PNG ou JPG
  • Réduisez la résolution de votre application si une grosse résolution n’est pas indispensable
  • Supprimez les écrans inutilisés
  • Vérifiez que vous n’avez pas trop de workflows dans une même application. Si vous avez une partie de votre application destinée à des administrateurs et une autre à des utilisateurs, pensez éventuellement à les éclater en deux applications distinctes.

Republiez régulièrement vos applications

La plateforme PowerApps évoluant en permanence, pensez à republier régulièrement vos applications afin de bénéficier de ses nouvelles évolutions et optimisations.

Le design

Styles relatifs par lien parent/enfant

Plutôt que de redéfinir « en dur » des valeurs de mise en forme (taille, position, couleurs, …) pour chaque contrôle, privilégiez l’utilisation de formules rendant plusieurs contrôles dépendant d’un seul. En modifiant la mise en forme du contrôle parent, tous ses enfants se mettront à jour automatiquement. Cela rendra la maintenance du design de votre application beaucoup plus aisée.

Utilisation de galleries

L’utilisation de galeries pour l’affichage de données sera beaucoup plus efficace que l’utilisation de formulaires. Gardez-le à l’esprit afin d’optimiser l’affichage de vos données.

Formulaires

Les formulaires doivent plutôt être utilisés dans le cadre de saisies de données répétitives. Ils sont également très pratiques pour regrouper efficacement des données d’une même source.

Applications à facteurs de formes multiples

Si votre application doit s’exécuter sur des périphériques dont le facteur de forme diffère, créez-là d’abord pour un facteur de forme donné. Testez-la et validez-là puis convertissez-la vers l’autre facteur de forme. Jetez un œil à l’article suivant pour savoir comment effectuer cette conversion :
http://toddbaginski.com/blog/how-to-convert-a-powerapp-from-one-layout-to-another/

Débogage et gestion des erreurs

Il peut être très aisé de gérer les erreurs de votre application à l’aide de contrôles de type Toggle. Utilisez la propriété Default du toggle pour déterminer lorsqu’il y a erreur et utilisez sa propriété OnCheck pour définir le comportement de l’application suite à l’apparition de l’erreur.

D’autre part, utilisez un panel masqué pour y mettre des valeurs de variables ou des indicateurs d’états qui se mettront à jour en temps réel lors de l’exécution de votre application. Cela vous permettra de déboguer votre application beaucoup plus facilement.

D’ailleurs, vous pouvez en profiter pour n’afficher ce panneau de débogage qu’aux concepteurs d’applications PowerApps. Pour cela, utilisez le connecteur PowerApps for Makers de la manière suivante :

blog ai3 Image-27 Recommandations pour la construction d'applications PowerApps

Documentation

Commentaires

Les commentaires sont disponibles dans le code de vos applications PowerApps depuis Juin 2018. Les deux formats suivants sont acceptés :

  • Commentaire de ligne : utilisez le formalisme // pour commenter tout ce qui s’y trouve après, sur la ligne en cours uniquement
  • Bloc de commentaires : utilisez /* et */ pour écrire des commentaires sur plusieurs lignes

Ecrans de documentation

Vous pouvez également créer des écrans où insérer du texte pour documenter à minima votre application. Assurez-vous qu’aucune navigation ne permette à l’utilisateur d’atterrir sur ces écrans afin qu’ils ne soient visibles que des concepteurs d’application dans l’éditeur PowerApps.

blog ai3 Image-28 Recommandations pour la construction d'applications PowerApps

Si vous avez des questions ou des remarques, n’hésitez pas…

PowerApps Développeur – DEPLOYER

Introduction

Dans Office 365 vous ouvrez PowerApps et s’affiche le titre Développez rapidement des applications professionnelles.

Voilà une belle promesse, surtout que ces applications fonctionnent sur smartphone !
Mais qu’en est-il de l’investissement en temps, de la documentation disponible, des limites de ces apps, de leur diffusion, de leur maintenabilité ?

Voyons la réelle étendue des pouvoirs que vous donne PowerApps 😉

Pour développer une application, vous allez :

  1. Définir ou identifier les données manipulées
  2. Concevoir ou générer* vos pages et écrire du code
  3. Publier votre application V1 dans votre tenant O365
  4. Partager cette application avec vos collègues
  5. Demain vous ou une autre personne produira de nouvelles versions

Dans ce second article je me focalise sur les points 1., 3. et 4. : PARTAGER LES DONNÉES / DEPLOYER.

*La génération d’une App est possible depuis une modern list SharePoint
Autre article : PowerApps Developpeur – CODER

Les données

Dans PowerApps comme dans Flow il faut mettre en place un connecteur pour utiliser une source de données, d’ailleurs les 2 produits partagent les mêmes connecteurs.
Le terme connexion est équivalent à connecteur dans PowerApps en Français.

Il existe des connecteurs pour Office 365, pour Azure et aussi  Facebook, Jira, WordPress, …
Une fois qu’un connecteur est créé, il est disponible pour n Apps et n Flows.
Une App ou un Flow peut avoir une seule ou plusieurs sources de données.

Exemple 1 : le connecteur OneDrive Entreprise permet d’utiliser un classeur Excel comme source de données.
PowerApps reconnaît comme table de données chaque objet Tableau, différents tableaux peuvent être présents dans une même feuille de calcul ou des feuilles séparées.

blog ai3 PowerAppsDev10-1024x362 PowerApps Développeur - DEPLOYER

Exemple 2 : le connecteur Utilisateurs d’Office 365 permet d’accéder à son compte utilisateur et aux comptes de son organisation (la capture écran est faite à partir de plusieurs captures).

blog ai3 PowerAppsDev11 PowerApps Développeur - DEPLOYER

Exemple 3 : le connecteur SharePoint permet que votre application affiche et mette à jour une liste SharePoint.  Typiquement vous définissez les données de suivi d’un projet dans un site d’équipe SharePoint puis vous générez une App mobile pour un accès en mobilité.

blog ai3 PowerAppsDev14 PowerApps Développeur - DEPLOYER

Enfin, les API REST permettent aussi les connecteurs personnalisés.

Une fois que vous avez déployé votre application PowerApps, les utilisateurs doivent l’autoriser à utiliser leur identité pour tous les connecteurs concernés.
Exemple avec l’application « PowerApps Training for Office » qui fait partie des modèles d’applications disponibles.

blog ai3 PowerAppsDev12 PowerApps Développeur - DEPLOYER

Voyons maintenant le déploiement d’une application PowerApps.

Déployer

Déployer une application PowerApps c’est :

  • Publier la Version que l’on veut mettre en production
    • La version courante est identifiée par En direct
  • S’assurer que le public ciblé par cette App a bien accès aux données
  • Partager l’application avec d’autres personnes de mon organisation
    • Partage avec 2 collègues, une équipe ou tout le monde pour l’utiliser
    • Partage avec telle ou telle personne pour l’utiliser et la modifier, ces personnes verront les versions publiées et les autres et peuvent être bêta testeurs

blog ai3 PowerAppsDev15 PowerApps Développeur - DEPLOYER

Pour l’utiliser depuis un navigateur sur PC, votre App a une URL que vous trouvez dans sa page Détails.

Sur tablettes et smartphones

blog ai3 PowerAppsDev16-300x223 PowerApps Développeur - DEPLOYERAucune complexité pour déployer des Apps sur les terminaux mobiles. Il suffit d’installer l’application PowerApps qui vous demande votre compte Office 365 et se connecte à votre environnement.

Cette application PowerApps est le lanceur de vos Apps.

En revanche c’est à la conception de votre App que vous indiquez la taille des pages, pensez donc mobile first si vous ciblez un usage nomade.

Conclusion

Cet article examine les points 1., 3. et 4. du développement d’une application PowerApps :

1. Définir ou identifier les données manipulées
2. Concevoir ou générer vos pages et écrire du code
3. Publier votre application V1 dans votre tenant O365
4. Partager cette application avec vos collègues
5. Demain vous ou une autre personne produira de nouvelles versions

Si les données sont définies par le besoin, leur(s) emplacement(s) est à définir pour être accessibles à la population visée. Ceci peut paraître une évidence, mais attention aux évolutions futures.

Vos Apps étant des applications SaaS, les déployer consiste à les partager (les ouvrir) aux utilisateurs. Ce partage se combine avec la notion de versions intermédiaires et de versions publiées.

Article sur les points 2.  et 5.  : PowerApps Developpeur – CODER

PowerApps Développeur – CODER

Introduction

Dans Office 365 vous ouvrez PowerApps et s’affiche le titre Développez rapidement des applications professionnelles.

Voilà une belle promesse, surtout que ces applications fonctionnent sur smartphone !
Mais qu’en est-il de l’investissement en temps, de la documentation disponible, des limites de ces apps, de leur diffusion, de leur maintenabilité ?

Voyons la réelle étendue des pouvoirs que vous donne PowerApps 😉

Pour développer une application, vous allez :

  1. Définir ou identifier les données manipulées
  2. Concevoir ou générer* vos pages et écrire du code
  3. Publier votre application V1 dans votre tenant O365
  4. Partager cette application avec vos collègues
  5. Demain vous ou une autre personne produira de nouvelles versions

Dans ce 1er article je me focalise sur les points 2. et 5. : CODER et MAINTENIR.

*La génération d’une App est possible depuis une modern list SharePoint, ceci est illustré plus avant dans cet article.

Autre article : https://as-ai3-blog-001.azurewebsites.net/PowerApps Developpeur – DEPLOYER

Exemple de besoin

Voici une application ultra simple, sans obligation de définir la structure et l’emplacement des données.

blog ai3 PowerAppsDev02 PowerApps Développeur - CODER blog ai3 PowerAppsDev03 PowerApps Développeur - CODER

Le code

Les instructions sont placées dans les événements (la capture écran est faite à partir de plusieurs captures)

blog ai3 PowerAppsDev04 PowerApps Développeur - CODER

Événement OnVisible de la page Main : la variable locale AddMode prend la valeur True (variable de type booléen).
Événement OnChange du champ Name : la variable locale CurrentName prend la valeur du champ Name.
Événement Default du champ Name : si mode ajout le champ est vide, sinon il contient l’élément sélectionné dans la liste.

Le choix des variables est essentiel pour la maintenance de l’application, ce qui est expliqué plus loin dans cet article. Il est important de les nommer avec soin.

La propriété Text du bouton AddOrUpdate est une formule qui positionne son libellé en « Ajouter » ou « Modifier » en fonction de la variable locale AddMode.
Le code de l’événement OnSelect de ce bouton :

  • La variable mémoire pour une liste est une collection
  • En mode ajout : ajouter un élément à la collection
  • Sinon mettre à jour
  • Puis dans les 2 cas passer en mode ajout (double point virgule pour enchaîner des instructions)

blog ai3 PowerAppsDev05 PowerApps Développeur - CODER

Les captures écran ci-dessus montrent que les utilisateurs aguerris aux formules Excel peuvent facilement faire la transition vers PowerApps.
La documentation PowerApps présente d’ailleurs le language comme des formules.
https://docs.microsoft.com/fr-fr/powerapps/maker/canvas-apps/formula-reference

blog ai3 PowerAppsDev06 PowerApps Développeur - CODERCependant plus les règles métier vont s’enrichir plus le code va être difficile à lire.
Une des idées qui a émergé de la communauté PowerApps  est la mise forme du code, à laquelle peuvent s’ajouter les commentaires « // ceci est un commentaire ».

 

User voice de la communauté PowerApps :
https://powerusers.microsoft.com/t5/PowerApps-Ideas/idb-p/PowerAppsIdeas

 

Au delà de la mise en forme du code et des commentaires, voyons plus généralement la maintenabilité des Apps.

La maintenabilité

Comme dans un classeur Excel avec de nombreuses formules réparties dans différentes cellules, il est difficile d’appréhender le code dans son ensemble.

La 1ère chose qui va fortement nous aider sont les variables, qui peuvent être locales ou globales.
En savoir plus  https://docs.microsoft.com/fr-fr/powerapps/maker/canvas-apps/working-with-variables#types-of-variables

En effet, PowerApps affiche les différentes variables et pour chacune :

  • Où elle est définie (où sa valeur est affectée), par exemple UpdateContext({AddMode: true})
  • Où est utilisée, par exemple If(AddMode;"";MyColl.Selected.Title)
  • Où elle est indirectement utilisée, par exemple :
    • La variable AddMode est utilisée pour initialiser valeur par défaut champ Name
    • Donc Name.OnChange est une utilisation indirecte de AddMode

Ainsi les variables permettent de « suivre le fil » des traitements.

blog ai3 PowerAppsDev07 PowerApps Développeur - CODER

La seconde chose qui va nous aider pour la maintenance est de produire une documentation technique dans une ou plusieurs pages de l’application, tel que :

blog ai3 PowerAppsDev08 PowerApps Développeur - CODER

Générer depuis SharePoint

Quand la source de données est une modern list SharePoint il est possible d’utiliser PowerApps pour personnaliser les formulaires, mais aussi pour créer une application mobile.

En un clic cette application est générée avec les fonctionnalités d’affichage de la liste, tri, recherche, ajout dans la liste, maj, suppression.
Il est ensuite possible de la personnaliser avec son propre code.

blog ai3 PowerAppsDev13 PowerApps Développeur - CODER

Conclusion

Cet article examine les points 2. et 5. du développement d’une application PowerApps :

1. Définir ou identifier les données manipulées
2. Concevoir ou générer vos pages et écrire du code
3. Publier votre application V1 dans votre tenant O365
4. Partager cette application avec vos collègues
5. Demain vous ou une autre personne produira de nouvelles versions

Pour coder une application il faut positionner des formules dans son IHM, cela favorise la prise en main de PowerApps par des personnes qui ne sont pas développeurs.
Pour la maintenance d’une application par d’autres personne que son auteur, je conseille d’appliquer les bonnes pratiques suggérées ici.

PowerApps est adapté aux développements en cycles courts [ Besoin  =>  App V1  =>  App V2  => … ]
Ceci dit le produit est en évolution rapide, cela se voit à travers les nombreuses idées émises par la communauté : Planned(152) Started(34) Completed(158)

Article sur les points 1.  3.  et 4.  : https://as-ai3-blog-001.azurewebsites.net/PowerApps Developpeur – DEPLOYER

Continuous integration for a SharePoint Framework Project

 

blog ai3 Header-1024x195 Continuous integration for a SharePoint Framework Project

 

SharePoint Framework is the development tooling used for the new SharePoint Modern Pages, it allow to create WebPart, List Field Customiser or Page extensions.

In the context of a development project, you may be need to increase the speed of your deployment and testing by using the Azure DevOps Tool Suite. You’ll find below a small tutorial to automate your build and release with Azure DevOps.

The SharePoint Framework package creation with Azure DevOps is splitted in two parts: the creation of the package itself and its deployment to the SharePoint Online App Catalog.

Build Setup :

From the Pipelines menu click on Builds and on New Pipeline, the configuration wizard is displayed:

blog ai3 Create-Build1-300x211 Continuous integration for a SharePoint Framework Project

From this screen, you should select your project, the repository and your target branch. On the next screen, you have the possibility to start from a template but we’ll start from a fresh template, so click one Empty Job

blog ai3 Create-Build2-300x70 Continuous integration for a SharePoint Framework Project

 

To do this job you should had the following steps :

 

  • Task Node Tool Installer

Here we will install the recommended Node Version for SharePoint Framework : 8.11.

blog ai3 Create-Build3-300x155 Continuous integration for a SharePoint Framework Project

  • Task NPM

Here we’re installing all Node Modules for our project

 

blog ai3 Create-Build4-300x182 Continuous integration for a SharePoint Framework Project

 

  • Task Gulp x2

Here we’re adding 2 gulp task to bundle and package our SPFX project

blog ai3 Create-Build5-300x273 Continuous integration for a SharePoint Framework Projectblog ai3 Create-Build6-270x300 Continuous integration for a SharePoint Framework Project

 

  • Task Publish Build Artifacts

Finally we’re publishing the build package to use it in the release pipeline

blog ai3 Create-Build7-279x300 Continuous integration for a SharePoint Framework Project

Release Setup:

There’s several ways to publish a SPFX package : Gulp, PowerShell and the Office 365 CLI. For this tutorial I’ll use the latest method because it is system agnostic ( based on NodeJS ) and easier to use.

First of All, you’ll have to grant the permissions on your tenant to the Office 365 CLI ( just connect to your tenant through this CLI from your computer ).
You can find an installation guide of Office 365 CLI here : https://pnp.github.io/office365-cli/

 

blog ai3 Create-Release1-1024x654 Continuous integration for a SharePoint Framework Project

Once it’s done, we’re ready to create our Release Pipeline.

 

From the Pipelines menu click on Releases, New, and then Release Pipeline: the Configuration Wizard is appearing :blog ai3 Create-Release2 Continuous integration for a SharePoint Framework Project

Click on Empty Job  and define a name for your stage ( for our example the stage name will be SharePoint Online ), once it’s done click on the hyperlink below the stage name and access to the task list:blog ai3 Create-Release3 Continuous integration for a SharePoint Framework Project

Add the following tasks :

 

  • Task Node Tool Installer :

We’re installing the recommended Node version for the Office 365 CLI

blog ai3 Create-Release4 Continuous integration for a SharePoint Framework Project

 

  • Task NPM :

We’re installing the Office 365 CLI

 

blog ai3 Create-Release5 Continuous integration for a SharePoint Framework Project

 

  • Task Command Line :

We’re first connecting to the tenant through a user / password authentication method: tenantUrl, password and username are here Custom Variables

blog ai3 Create-Release7 Continuous integration for a SharePoint Framework Project

  • Task Command Line :

Finally we’re adding the app to the app catalog ( _TestIC-CI is the Artifact Name )

blog ai3 Create-Release8 Continuous integration for a SharePoint Framework Project

To test your work create a new release and your package will be deployed in your tenant catalog !

Alternative aux dépréciations de commandes PowerShell Skype et Teams

Le saviez vous?

Si dans le cadre de l’administration d’infrastructure Skype Team Online, vous utilisiez des commandes Powershell telles que Get-CsActiveUserReport, Get-CsP2PSessionReport, Get-CsUserActivitiesReport, Get-CsConferenceReport… Sachez que ces commandes (et d’autres) ont été dépréciées par Microsoft depuis le début d’année 2018.

blog ai3 depreciated_cmd-300x17 Alternative aux dépréciations de commandes PowerShell Skype et Teams

La solution de remplacement à ces commandes se trouve donc être désormais Microsoft Graph.
Microsoft Graph permet d’accéder aux données et aux renseignements dans Office 365 en utilisant l’API fournie par Microsoft dans le but de créer des applications pour les organisations et les clients afin de se connecter directement à de nombreuse ressources via un point de connexion unique, https://graph.microsoft.com, notamment pour:

– Azure Active Directory
– Les services Office 365: Sharepoint, OneDrive, Outlook/Exchange, Skype Teams…
– …

blog ai3 MSGRAPH-300x187 Alternative aux dépréciations de commandes PowerShell Skype et Teams

Microsoft Graph se connecte à toutes les ressources de ces services à l’aide de relations. Par exemple, un utilisateur peut être connecté à un groupe via une relation memberOf et à un autre utilisateur via une relation manager. L’application peut donc parcourir ces relations pour accéder à aux ressources connectées et effectuer des actions via l’API.

Vous pouvez également obtenir des informations précieuses sur les données de Microsoft Graph. Par exemple, vous pouvez récupérer les informations concernant l’usage de Skype Teams au sein de l’organisation (nombre de session Audio/Vidéo, nombre de connexion, temps de chaque session…)

Ci dessous un exemple de script permettant la récupération des informations concernant l’activité des utilisateurs Skype Online.
blog ai3 example1-1-300x103 Alternative aux dépréciations de commandes PowerShell Skype et Teams
Exemple d’un fichier d’extraction en sortie de script:
blog ai3 example2-300x118 Alternative aux dépréciations de commandes PowerShell Skype et Teams

Source: https://developer.microsoft.com/fr-fr/graph

Transition Skype vers Teams : c’est pour bientôt

blog ai3 mise-à-niveau-vers-teams Transition Skype vers Teams : c'est pour bientôt

Dans différents articles de ce blog, nous avons déjà évoqué l’abandon de Skype for Business au profit de Teams pour les utilisateurs Office 365. Il semblerait que les choses se précisent puisque nous voyons arriver des messages de la part de Microsoft directement dans Skype comme le montre cette illustration.

Si vous êtes tenté de cliquer sur le bouton « Essayer » pour tenter l’expérience, il faut tout de même avoir conscience du fait qu’au niveau global d’une entreprise un projet de change management doit être mis en place car Teams n’est pas Skype… la coexistence entre les 2 solutions doit être planifiée et expliquée à tout à chacun.

N’hésitez pas à nous contacter si vous avez des questions… nous avons les réponses !

En vrac : Office 365

Bonjour à tous, ce billet vous propose quelques annonces en vrac autour d’Office 365.

Tout d’abord une excellente nouvelle concernant Yammer, les données hébergées aux US vont pouvoir venir sur le continent européen. Initialement prévu en Q3 2018, cela arrivera pour la preview en Q2 CY 2019 puis en H2 CY 2019 sur les datacenters Européens.

Skype Meeting Broadcast est maintenant accessible directement dans Teams ou Stream
blog ai3 Skype-Meeting-Broadcast-Teams En vrac : Office 365

Une autre excellente nouvelle pour ceux qui n’étaient pas encore prêt dans leurs organisations

**** Délai supplémentaire 2020 > 2023 ****

Office: Prolongation du délai du support de la connexion Office 2016 à Office 365 jusqu’en 2023

 

OS: Win 7 / Win 8 : 14 jan 2020 >> Extension payante jusqu’en janvier 2023

 

Changement de politique, on passe de 18 mois à 30 mois de support sur l’OS W10, soit 2,5 ans par rapport au 5 ans d’aujourd’hui, les intégrateurs pourront mieux respirer par rapport au délai de 18 mois initialement annoncé.

 

 

Different usages of Microsoft Flow

The verb defines the App

The literal meaning of to flow is to continue to be produced and it’s true for Microsoft Flow : I create a self-acting process in the cloud and then it is running.

Indeed when I create a Flow:

  • my Flow is in Azure
  • my Flow is pending
  • my Flow starts when something happens
  • after running it is pending again

I can create Flows for a lot of usages:

  • simple Flows automating usual tasks
  • more complex Flows for actions sequences, including conditioned actions

Let’s see how these Flow’s concepts can be transformed in real use cases.

Triggers : conditions to start

blog ai3 Flow_Usages_02 Different usages of Microsoft Flow

The trigger is the first thing I must define when I’m designing a Flow.

I choose one in available triggers, in those examples we can see that a trigger:

  • Can be the weather or the time (schedule)
  • Can come from Office 365
  • Can come from a cloud service like DocuSign, Facebook, JIRA, …
  • Can be an button in the Flow mobile App

Behind triggers there are connectors, it’s illustrated below.

Personal productivity usage

blog ai3 Flow_Usages_03 Different usages of Microsoft FlowI can create a Flow :

  • To add in my Outlook calendar the events of my Gmail calendar
  • To create a OneNote sheet 15′ before each meeting in my calendar
  • To quickly block my calendar for one hour from now, having a Flow button for this in my mobile

 

These individual usages are similar to the possibilities of IFTTT, where Flow is more « my day at work ».

 

 

 

Collective productivity usage

blog ai3 Flow_Usages_04 Different usages of Microsoft FlowFlow brings possibilities for quick digitalisation:

« What if we change our validation process? »
« Can we use a digital signing service? »
« Is there a connector(s) like this in Flow? Yes! »
« So we can try it now with a Flow between SharePoint and a signing service! »

But this could seem to be theoretical.
Have a look at a nice demo made by Serge Luca (MVP), showing in details how flows looks like in an contract’s lifecycle with Adobe Sign : https://youtu.be/k5kCVv5HqOQ

Moreover, Flow’s connectors are using REST.
This post (in french) explain how to create yourself the connector for K2 with the json API’s file https://www.enk2besoin.com/2018/05/15/integration-avec-ms-flow/

 

Validation workflow usage

In Flow’s working area I can create and manage my Flows. I also can see « Approvals » in the menu:

  • « Approvals » is my sign-off space
  • « Approvals > Received » ⇒ Flows are running and waiting for my decisions
  • « Approvals > Sent » & « Approvals > History » ⇒ manage my past approvals

Those « Approvals » features are linked to the « Start an approval » action that I put in a Flow when I want to design a validation workflow. Typically useful for documents needing to be submitted to a manager for approbation.

By design these kinds of Flows can be started from a SharePoint library or list:

  • I select a document (or a item in a list)
  • I create an instance of a validation Flow for this selected document
  • A Sign-off status column will be automatically created the first time

blog ai3 Flow_Usages_05 Different usages of Microsoft Flow

blog ai3 Flow_Usages_06 Different usages of Microsoft Flow

Flow usages vs Flow licences

In conclusion, thanks to its multiple available usages, Flow can be a part of your digital transformation strategy.

So you can invest more or less in Flow’s licenses, depending of your goals:

  • For individual or small teams uses, Flow is included in Office 365 and Dynamics 365
  • Flow Plan 1 and Flow Plan 2 could be more appropriate for uses in large teams or across your company
  • Premium triggers are available in Flow Plan 1 and Flow Plan 2
  • Only Flow Plan 2 give governance functionalities
  • Remember that number of runs per month is limited in all licenses

Limits and prices per licence : https://emea.flow.microsoft.com/en-us/pricing/?currency=EUR

Pourquoi quitter le partage réseau ?

Vous savez tous où est la dernière présentation du groupe Ai3, « Tsé là ! », celle qui est dans le répertoire r:\share\Marketing\Jean-Edouard\2016\Présentation\Important\Dernière version\2017\maj\Présentation Groupe Ai3 jan 2018 v3.pptx

Moi non plus, mais quand je tombe dessus par hasard, je me demande toujours si c’est bien celle-là que je dois montrer à mes clients, sachant que Jean-Edouard ne travaille plus chez nous depuis plus d’un an… vive la retraite !

Du coup que fait-on, une copie en local qu’on distribuera au gré du vent par courriel…

Voici la dernière présentation du groupe ==> Présentation Ai3 – Version août 2018 – Copie v5 draft.pptx

blog ai3 Share-new-doc-version-1024x511 Pourquoi quitter le partage réseau ?

Ce qui est certain c’est que SharePoint fait très peur face aux partages réseaux accessibles qu’en interne, ou pour les plus chanceux, par VPN. Imaginez-vous retrouver la dernière version – seule vrai version — d’un document, c’est intimidant n’est-ce pas ?

Voici quelques fonctionnalités simples, permettant de vous rassurer avec SharePoint et que dans bien des cas vous ne pouvez pas faire avec votre partage réseau :

Historique de versions

La première et non la moindre est la possibilité d’incrémenter de façon transparente et automatique la version de nos documents. Cette fonctionnalité vous permet de :

  • Générer en version majeure (1.0, 2.0, 3.0, …) et mineur (1.0, 1.1, 1.2, 2.0, 2.1, …)
  • Limiter le nombre de versions à conserver
  • Supprimer les versions mineures à chaque publication d’une version majeure
  • Visualiser et/ou récupérer une version antérieure

blog ai3 Share-version-1 Pourquoi quitter le partage réseau ?

Approbation de publication du document

Vous pouvez aussi mettre en place un système d’approbation de document, cette fonctionnalité permet de ne mettre à disposition des utilisateurs qu’une version « vérifiée » et « approuvée » par un responsable tout en travaillant dans la même source.

Vous pouvez par la même occasion décider de qui peut consulter ou modifier des documents.blog ai3 share-approve-doc Pourquoi quitter le partage réseau ?

Forcer la réservation d’un document (Check-In / Check-Out)

Dans certain contexte — principalement dans les cas où le parc informatique n’est pas avec la dernière version OS & Office 365 –, il est nécessaire de « réserver » le document afin d’y apporter toutes les modifications nécessaires. On se retrouve cette fois avec une fonctionnalité iso à l’édition de document via le partage réseau.

NB/ Le fait de réserver un document permet aussi d’enregistrer le document plusieurs fois sans générer de montée de version (dév.)

blog ai3 share-checkout-doc-1-1024x255 Pourquoi quitter le partage réseau ?

Coédition

L’une des forces de SharePoint (ou OneDrive) reste la coédition de documents par plusieurs utilisateurs à la fois. Allier la force de rédaction d’une équipe permet un gain de temps assuré !

blog ai3 co-authoring2 Pourquoi quitter le partage réseau ?

NB/ utilisable si l’option de réservation de document n’est pas activée.

Partage autonome

Plus besoin d’ouvrir un ticket à son centre de support préféré afin d’ajouter un nouveau venu sur le document. D’un simple clic vous pouvez partager un document à votre collègue et commencer à collaborer.

blog ai3 share-share-doc-1 Pourquoi quitter le partage réseau ?

Accès à distance

Depuis n’importe quel appareil vous avez la possibilité de consulter un document. Via l’application SharePoint mobile ou sans apps dédié, simplement et directement dans votre navigateur. Plus besoin de VPN pour consulter ses notes, ses documents, …

Grâce à l’application OneDrive, garder quelques documents clés avec vous lors de vos déplacements.

blog ai3 share-sync-onedrive-explorer-setup Pourquoi quitter le partage réseau ?

Automatiser des processus simples et complexes

Rester averti de la mise à jour et de l’évolution des documents auxquels vous voulez porter une attention toute particulière.

blog ai3 share-alerte-doc-1024x265 Pourquoi quitter le partage réseau ?

Ou passer à la vitesse supérieure, pour ceux qui ont une vision plus avancée de leur besoin métier, tel que

  • Obtenir une approbation en plusieurs étapes
  • Envoyer automatiquement en lien en lecture vers tous les membres d’une équipe
  • Déplacer dans une autre bibliothèque sous certaines conditions
  • Supprimer après la date d’expiration (10 ans à compter de la création du document)

Il est possible de déclencher un processus manuellement ou automatiquement en fonction de la création / modification / suppression du document ou des métadonnées d’une colonne.

On peut même se connecter à des services externes (Twitter, Google Docs, Microsoft Forms, d’autres collections de sites SharePoint, etc.) à l’aide de Microsoft Flow.

blog ai3 share-microsoft-flow Pourquoi quitter le partage réseau ?

Métadonnées / Vues

Pour les plus téméraires, vous allez pouvoir structurer vos documents à l’aide de métadonnées de classements afin mettre en forme des affichages dédiées aux différentes personnalités de vos équipes.

blog ai3 share-views-by-doc-1 Pourquoi quitter le partage réseau ?

Voir même de mettre en place de la taxonomie automatique pour les irréductibles classeurs de répertoires verticaux ?

 

Ce billet qui ne survole qu’une partie des avantages, les plus simples et rapides à mettre en place au sein de son organisation. Il reste encore de gros sujets autour de SharePoint et Office 365 permettant de fournir des stratégies de rétention (conservation ou suppression) ou des processus d’archivage sur l’ensemble de vos documents, de mettre en place des autorisations, des étiquetages, etc.

En plus, tout va très vite aujourd’hui, maintenant vous pouvez fournir à vos utilisateurs le dernier modèle de document directement dans l’interface moderne de SharePoint Online

blog ai3 Add-template-modern-UI Pourquoi quitter le partage réseau ?

SharePoint Modern Experience : Communication Site

L’arrivée de la modern experience sur les nouveaux sites SharePoint Online a été accompagnée d’un nouveau modèle de site « Le Communication Site ». C’est ce nouveau modèle que nous allons aborder dans cet article.  L’objectif de ce modèle de site est de partager du contenu avec d’autres collaborateurs. Ce modèle a été pensé de façon à s’afficher correctement sur tous les types de supports (PC, Mobile, etc … )

Généralités

Tout d’abord ce modèle est disponible lors de la création d’un nouveau site :

blog ai3 Capture-2 SharePoint Modern Experience : Communication Site

Plusieurs type de site sont disponibles :

  • Topic
    • Idéal pour partager des informations sur un sujet particulier
  • Showcase
    • Utile dans le cas d’une communication sur un évènement par exemple
  • Blank
    • Modèle vide

Le modèle Topic

blog ai3 Capture-5 SharePoint Modern Experience : Communication Site

Le modèle Showcase

blog ai3 Capture-6 SharePoint Modern Experience : Communication Site

 

 

Les sections

Les sections correspondent à la nouvelle manière de découper horizontalement une page SharePoint. L’ajout de section est dynamique, le nombre de sections n’est pas spécifié au moment de la création de la page. L’avantage de ce nouveau système est la totale liberté offerte pour la mise en page. Chaque section est autonome est dispose d’une mise en page spécifique. Lors de l’ajout d’une section on spécifie le nombre de colonnes de la section ainsi que la disposition :

blog ai3 Sans-titre-3 SharePoint Modern Experience : Communication Site

 

La nouvelle webpart (Hero Content)

Cette webpart permet d’afficher plusieurs liens / images sous forme de plusieurs vignettes comme vous pouvez le voir ci dessous :

blog ai3 Capture-7 SharePoint Modern Experience : Communication Site

La disposition ainsi que le nombre de vignettes peut être modifié. La disposition « Vignettes » propose les options suivantes :

blog ai3 Sans-titre-1 SharePoint Modern Experience : Communication Site

La disposition « Couches » permet de son côté d’afficher les informations de cette façon :

blog ai3 Sans-titre-2 SharePoint Modern Experience : Communication Site

Cette nouvelle webpart est évidemment responsive.

Les news

Un nouveau système de news est mis en place (également disponible sur les Team Site). La rédaction ainsi que l’intéraction sociale est facilitée. Lors de l’édition de la page d’accueil, il est possible d’ajouter des news :

blog ai3 Capture-10 SharePoint Modern Experience : Communication Site   blog ai3 Capture-11 SharePoint Modern Experience : Communication Site

 

En cliquant sur le bouton Add, on peut ajouter une nouvelle News. Une news est en fait une nouvelle page dans laquelle on peut ajouter des webpart, des sections etc. La rédaction de news est intuitive, on retrouve les fonctionnalités rapidement.

Les fonctionnalités sociales classiques sont intégrées aux news. L’utilisateur peut ainsi « liker » (« J’aime ») ou commenter la news comme vous pouvez le voir ci dessous :

blog ai3 Capture-12 SharePoint Modern Experience : Communication Site

Conclusion

Ce nouveau modèle de site offre de nombreuses possibilités. L’affichage et le design des webparts ont été améliorés. De plus, grâce aux sections les pages sont plus facilement modifiables et surtout plus flexibles.