Le Post Infeeny

Les articles des consultants et experts Infeeny

Archives de Catégorie: [Evt] SharePoint Conference 2012

#SPC2012 : How to Develop Social Applications with SharePoint 2013

Thursday, 11h00, Matthew McDermott, MVP, Principal Consultant, Director

Résumé :

Session où la grande partie est de la redite d’autres sessions.

Une partie intéressante est la démo à la fin où il montre qu’il est possible d’outrepasser les problèmes de cross-scripting via un Request Executor. Dommage qu’il ne rentre pas plus dans les détails de l’implémentation de son code. Son code lui permet de créer une sorte de bot permettant de s’attacher à Dynamics pour poster une news sur SharePoint en mentionnant une personne qui clos une opportunité.

// Composantes du social

Il représente les composantes du social : UserProfiles + Feeds + Following + Search Il explique qu’il ne faut pas hésiter à faire des prototypes pour valider ce que l’on veut faire.

On peut travailler sur les UserProfiles, les social feeds, les site feeds et les community sites.

Il représente les possibilités de développer du social (CSOM, JSOM, REST, Silverlight Library, .NET CLR Library).

On peut récupérer les profiles et les propriétés.

On peut récupérer les feeds et les réponses.

On peut modifier la photo de l’utilisateur (pas ses propriétés).

On peut créer des posts avec l’utilisateur authentifié.

On ne peut pas tester si un compte existe, créer,modifier, supprimer un user profile, créer un post au nom d’une autre personne.

// DEMO : JSOM

Il veut amener du social dans la recherche.

Il a modifier le search design Display template. Il a copié le Item_Person et Item_Person_Hover.

Il y a ajouté une div dans le Hover copié, avec un javascript qui va utiliser le SocialFeedManager pour récupérer les feeds et les afficher sur le panneau.

Dans ce display template il utilise AddPostRenderCallback et SP.SOD.executeFund(‘sp.js’..) pour ajouter un callback lorsque le DOM est chargé.

Il utilise console.log() pour logger ses erreurs.

// DEMO : JSOM et REST

Il fait deux démos, permettant d’attaquer les services REST et JSOM pour attaquer le profil utilisateur en récupérant une propriété utilisateur. Avec ça il récupére la propriété custom « TwitterAccount » qu’il passe à une requête JSONP Twitter afin de récupérer les tweets.

// DEMO : Request Executor

Il expose un scénario d’un système externe qui veut se connecter à SharePoint. Il va utiliser Request Executor qui va créer une IFRAME vers une App SharePoint qui va attaquer le site SharePoint, comme un proxy.

Ainsi il surpasse la restriction cross-domain.

Il a une page hébergée sur Dynamics CRM, qui récupère et post les feeds.

Il a créé un dev qui lui permet de créer une opportunité sur Dynamics, et quand cette opportunité est validée, cela poste un message sur le newsfeed de SharePoint de la part d’un bot.

Il ne rentre pas dans l’implémentation de son code.

Christian

#SPC2012 : Living and breathing the social workspace

Session de 12h à 13h15 animée par Daniel Kraft (CEO, Newsgator)

Petit résumé:

Si vous voulez des news sur la version Newsgator sur SharePoint 2013, passez votre chemin. Il n’a eu aucune démo, que des screenshots de leur noivelle version de Newsgator sur 2010.

Quelques idées pour les gens qui travaillent sur des projets RSE.

// intro

Le problème principal : comment favoriser l’adoption utilisateur ?

Le social doit être une surcouche  L’idée est vraiment de tirer une valeur business depuis le social.

Il commence par des slides sur la nouvelle version de Newsgator en mode tuiles. Oh le beau bandeau SharePoint 2010, formidable, que de nouveauté…

Un autre sur leur app Newsgator sous Windows 8, le plugin outlook, leur outil « universal notification » qui ajoute une barre de notification sur n’importe quel outil.  La barre de notification répond au besoin d’intégration du RSE sur des intranet ou autres outils existants.

Il souligne l’intérêt du RSE qui permet de re devenir humain. On peut faire un post pour faire une blague, par mail, c’est plus compliqué.

  • 92% sont content de leur travail
  • 14% aiment leur travail

Les personnes qui aiment leur travail sont 200% plus innovants.

-> la productivité est donc fortement lié au ressenti des employés. 

Voilà Megan qui nous fait un retour d’expérience de sa compagnie (pas compris laquelle, 10000+ employés). Evidemment maintenant ils sont plus innovant, efficace et tout. Et tout ça grâce aux social et Newsgator.

Tous les mois, ils extraient les bonnes idées du RSE et invitent les auteur à un lunch avec les dirigeants pour en parler -> rewarding

Daniel reprend la parole.

Il ne faut jamais sous estimer l’ego des gens. Rien n’est fait si les employés ne sentent pas qu’ils sont reconnus pour leur travail.

Comment faire ?

Par exemple, LinkedIn permet de reconnaitre le travail de collègues.

Voilà un témoignage maintenant d’une personne d’Oakley. Ils ont mis en place du social car ils ont grossi très rapidement ces dernières années. Ils ont voulu garder une culture d’entreprise forte. Un RSE à été mis en place pour répondre a ce besoin. Ils l’ont fait en 11 semaines puis l’ont déployé à tous le monde. Les RSE sert donc aux nouveaux à s’imprégner de la culture de l’entreprise. Ils ont mis en place de badges afin de reconnaitre les employés innovants et qui participes. Ils ont 1500 employés actifs.

Daniel reprend la parole.

Le principe des badges et autres récompenses permet de : donner un esprit d’appartenance, motiver les gens, et permet aussi et surtout d’identifier les experts. 90% de la connaissance est apprise des autres.

il recentre maintenant son discours sur du business, comment injecter du social dans les process business ? Il nous montre l’intégration d’une demande de congés dans le newsfeed de newsgator. Intéressant car cela démontre que toutes les tâches de travail pourraient être intégrés au social.

// questions

Quelle différence avec le social dans SharePoint ?

Newsgator est construit sur SharePoint et est censé le compléter… Mouais, vu qu’on a vu que du 2010, ça a du sens. Mais 2013, on saura pas.

Sur o365 ?

Pas vraiment, il ont un cloud à eux si j’ai bien compris.

Fabien

#SPC2012 : Getting Your Apps into the Office and SharePoint Store

Session de 12h à 13h15 Vivek Narasimhan, Product Manager

Cette session va clôturer mon programme de la SharePoint Conference.

Nous allons voir l’utilisation des apps pour l’utilisateur final, l’ajout via le store, la partie monétisation et la proposition d’une nouvelle app, qu’elle soit pour Office ou pour SharePoint.

Les nouveautés pour les développeurs Office et SharePoint : un nouveau modèle d’app, des nouveaux scénarios pour les utilisateurs finaux, et la possibilité de le distribuer facilement et potentiellement la vendre.

On nous rappelle que la cible est potentiellement 1 milliard d’utilisateur, que l’app est intégré (dans un site SP ou dans office (WA ou client lourd), que l’app distribué dans le store est « crédible » (well design, pas de contenu inapproprié). Lorsque l’utilisateur utilise l’app depuis l’Office Store, cela correspond qu’il donne confiance à Microsoft et pas spécifiquement au développeur.

Démo dans Office, via Word. En cliquant sur « Apps for Office », on voit dans le premier onglet les apps que j’ai ajouté (et qui sont liées à mon compte utilisateur). Dans le deuxième onglet, on voit les apps proposées par son entreprise (et pas uniquement les apps développées par l’entreprise). Dans le dernier onglet, on voit les app « featured ». Si cela ne suffit pas, on peut ouvrir l’Office Store (qui est donc public). On voit les apps par produit (Word, Excel…), ainsi que le détail (screenshot, prix…) et on peut les ajouter.

L’ajout demande une autorisation : un lien entre le compte Microsoft et l’app est donc effectué : l’app n’est installé sur le poste, mais disponible depuis le cloud. Une fois identifié, la page nous indique de retourner dans Word et que l’app se retrouvera dans l’onglet « My app ».

On passe à SharePoint. On voit également les apps qui peuvent être ajoutées, et les apps recommandées par sa société (app catalog). De la même façon, on a le SharePoint Store.

Concernant la distribution de l’app, il existe deux chemins :

  • Le développeur peut proposer l’app via le « Seller Dashboard ». L’app qui sera approuvé par Microsoft sera alors disponible dans l’Office Store. L’utilisateur final pourra via son ruban Office ajouter l’app (qu’elle soit gratuite, en évaluation ou payante)
  • Le développeur propose l’app dans l’app catalog de l’entreprise (après négociation avec le l’IT admin/IT projects). L’utilisateur final pourra via son ruban Office ajouter l’app.

Voyant cela en pratique : Le développeur veut proposer son app au public donc passe par le « Seller Dashboard ». Pour cela il faut se loguer. Une fois identifié, on voit les différentes apps déjà proposé ainsi que leur état (draft, approuvé, retiré). Les apps sont taggué « App for Office » ou « App for SharePoint ».

On ouvre une des apps qui est en statut « refusé » afin de connaître son problème. Un fichier word permet de présenter le document de retour, et les problèmes : dimension de l’icône non respectée et l’app ne référence pas le fichier « office.js ».

Un onglet spécifique permet de présenter les statistiques par apps : Hits par browser, téléchargement, achats…

On peut également via le Seller Dashboard voir le compte utilisateur (et toutes les informations associées), et les moyens de paiements (paypal, banque… la page ne nous est pas affichée).

On ajoute maintenant une nouvelle app, pour cela on remplit tout un tas d’informations :

  • Le type (App for Office, Outlook, SharePoint),
  • La version (ça peut être a, b, c, des chiffres),
  • La catégorie (Communications, Jobs, IT/Admin…).
  • L’ajout du logo,
  • L’app package (le fichier manifest)
  • S’il y a  des détails spécifiques à communiquer à MS pour les tests, il faut les saisir. C’est important car si il n’y a pas d’instruction et qu’il faut faire qqch de spécifique, l’app peut être rejetée par MS.
  • On peut proposer l’app en version d’évaluation (en indiquant un nombre de jour, un nombre d’utilisateur (société))
  • La description courte et longue, les screenshots
  • La documentation et/ou video associée (sous forme de lien) , et si besoin les conditions d’utilisation. Ce n’est pas MS qui supporte la maintenance de l’app, c’est le développeur.
  • On peut choisir le type de distribution : gratuit ou payant. A propos du prix, une liste déroulante est proposée (1.49 minimum$, et augmente par 0.50$ jusqu’à 999.99) et si le prix est par utilisateur ou pour un nombre d’utilisateur (10 seat par exemple)). Microsoft prend 20% sur les ventes (donc une app à 10$ revient 8$ au développeur).
  • L’achat est lié au compte MS, donc si on change de machine on a toujours ces apps.

Pour le moment, le store est uniquement US et les apps doivent être obligatoirement en EN. Toutefois, les utilisateurs/développeurs des autres pays (oui oui, il n’y a pas que les états-unis dans le monte) peuvent utiliser le store et leur monnaie locale pour les transactions. Aucune date n’est annoncée pour l’ouverture des langues et des store pays.

Toutes les apps sont testées par MS avant d’être publié par Microsoft.

Des exemples de domaines pour les apps :

  • Data visualization,
  • Lifestyle,
  • Project Management,
  • Communication,
  • Content Management,
  • Social,
  • Financial Management,
  • Reference

Dernier slide sur l’intérêt des apps (1 milliard d’utilisateur, la vente, la puissance, les mises à jours…). Allez, à vos Visual Studio 2012 et/ou bloc notes 😉

Jérôme

#SPC2012 : Deep dive into Excel Services and PowerPivot for SharePoint 2013

Session de 12h à 13h15 animée par Diego Oppenheimer (Program Manager) & Kay Unkroth (Program Manager)

On commence directement par une démo montrant un classeur Excel (nommé XLTweet) dans lequel on définit des termes et qui va chercher sur Twitter, tous les messages correspondant pour générer un tableau de bord

On voit des statistiques sur les top tweeters, top hashtags, top mentions et nombre de tweets par jour

On passe aux slides pour évoquer la manière dont cela a été réalisé grâce à PowerPivot et 1er élément, on peut télécharger le fichier en question sur le site de Microsoft (Analytics for Twitter)

La première version qui a été développée pour automatiser l’utilisation du classeur Excel (et notamment son rafraichissement sur SharePoint) n’est pas aussi simple qu’il y parait car on nous présente un schéma d’architecture qui met en oeuvre plus d’une dizaine de composant (PowerPivot, Reporting Services, SharePoint, Analysis Services, Excel, Azure…)

On passe en revue sur le schéma d’architecture du fonctionnement d’Excel Services, comment celui-ci fait pour utiliser un classeur Excel comme source de données (utilisation de SPClient, etc…)

Même chose ensuite avec la manière dont Excel Services gère les rafraichissements planifiés via les TimerJob, le SecureStore, etc…

C’est une session extrêmement technique pour comprendre en détail le fonctionnement d’Excel Services dans le traitement des fichiers Excel mais je ne pensais pas qu’ils descendraient si profond (remarque vu le titre deep dive ça parait logique) dans les explications et je suis un peu perdu   😉

On aborde maintenant un exemple de code montrant comment déclencher par code, le rafraichissement d’un fichier Excel en utilisant les WebServices fournis nativement avec Excel Services

Passons à la création du classeur PowerPivot en tant que tel où l’on retrouve un schéma assez classique pour gérer les relations entre hashtags, tweets, mentions, etc.. et une dimension temps afin de pouvoir analyser les évolutions dans le temps

La construction du classeur Excel demandant pas mal d’opération que le speaker est en train de faire en live (ajout de la source de données, génération des relations entre tables, etc…) je vous passe les détails et vous renvoi vers toutes les vidéos PowerPivoit qu’on peut trouver un peu partout çar c’est exactement ce que nous sommes en train de voir

Après avoir passé le reste de la session à construire le classeur Excel avec des PivotChart, Slicers, etc… la session se termine sur un sentiment mitigé

La 1ère partie sur le fonctionnement d’Excel Services était très (trop) technique alors que la seconde partie s’est contentée de voir comment créer le classeur Excel donc au final pas beaucoup de choses à dire sur l’intérêt de la session

Stéphane

#SPC2012 : Developing Hybrid apps for SharePoint

Thurday, 10h30, Rob Howard, Program Manager, SharePoint Developer

Résumé

Une grosse partie d’introduction est de la redite de session précédente.

La deuxième partie explique comment configurer SharePoint pour qu’il utilise ACS en O365 ou un high trust (STS) en On-prem grâce à un certificat pour gérer la sécurité de la même façon entre les deux environnements mais avec la même App.

On va rentrer dans le code, JSON, token OAuth.

// Review of SP App Authentication

C’est le même monsieur qui a fait la session sur OAuth, et ce sont les mêmes slides, c’est annoncé et il s’excuse, il fait 10min de redite par rapport à la session de mardi.

// Scénarios Hybrid

Vendre une app pour des clients sur O365 ou on prem.

Créer une App avec un code qui puisse fonctionner pour les clients qui un O365 ou un on-prem.

Connecter une App dans le cloud avec une App en on-prem.

// App identity

En mode cloud, nous avons Azure AD qui sert de STS (token service). L’app et O365 trust l’Azure AD.

En on prem, on se base sur du certificat.

Hybrid, avoir des serveurs App et SP qui trust un Azure AD.

Pour du Hybrid, les autohosted apps ne sont pas gérées ni supportées pour les fermes on-prem.

Les cross-firewall server-side calls peuvent être un problème.

// DEMO : Meeting Scheduler App

Il a une APP qu’il upload sur O365 dans l’app catalog (SharePoint hosted).

Il ajoute l’app à un site. Il montre que l’app est bien dans un domaine.

Il met un élément dans sa liste (événement). Cela envoie un mail à tous les participants les invitant à saisir leurs préférences.

Il a un formulaire comme un Doodle qui lui permet de sélectionner des dates préférentielles.

Le créateur peut valider la date où le max de personnes est dispo.

Il créé un fichier ICS en javascript.

–> Juste pour montrer qu’il a créé une App qui fonctionne on-prem autant que sur O365

// Access tokens and issuers

En décodant l’access token déjà évoqué dans d’autres sessions.

Il y a le x5t correspondant au thumbprint, identifiant

iss est l’issuer, est le token service qui va permettre à SP de savoir s’il connait ce fournisseur de token.

Les deux vont permettre à SP de savoir s’il connait le fournisseur de Token + s’il connait la personne qu’il le demande (x5t-thumbprint).

Ensuite, le aud est un guid + url. guid représente l’audience qui peut profiter de ce token (SharePoint va avoir un numéro, Exchange un autre, Lync un autre).

identityprovider permet de savoir quel est le type d’identité ? (Microsoft Online ici).

Le nameid identifie cette identité.

actor est un Guid, représentant le client id qui effectue la requête.

En online, on a un Azure AD, qui va créer un access token grâce à un certificat. SharePoint, on va créer un ACS proxy qui va déclarer Azure AD comme trusté. Azure AD va gérer les tokens ensuite.

En On-prem, il y a un Trusted Security Token Issuer, qui va jouer le rôle de ACS mais en on prem.

// DEMO : Création d’une app high trust on-prem

En on-prem, il faut qu’on configure SP, pour qu’il y ait un trust grâce à un certificat.

Cela se passe en Powershell, avec l’utilisation de issuerId (ISS).

On récupère le realm, Get-SPAuthenticationRealm -ServiceContext http://sphvm-57892.

On récupère le certificat Get-PfxCertificate.

Du code Powershell que je n’ai pas noté. Grosso modo, il déclare le token issuer sur SP.

Il créé une app Provider Hosted.

Le wizard VS 2012, propose d’utiliser un client secret via ACS ou un certificate.

On utilise le certificat où on met le certificat PFX et le mot de passe.

Il a une app, où il ajoute une List en XML.

Dans son ASPX, il utilise le CSOM pour ajouter un item.

Dans le load, il utilise le TokenHelper du projet pour faire un GetS2SAccessTokenWithWindowsIdentity(appWeb, Request.LogonUserIdentity) qui lui permet de générer son propre token.

Le token généré est passé à sa création de liste pour qu’il ait l’accès, utilisation de TokenHelper.GetContext…

// Configuring a hybrid SP environment

Il va configurer ACS comme trusted token issue sur SP

C’est du Powershell.

Il récupère un SPWeb.

Il définit un $ACSMetadataEndPoint étant l’URL, d’ACS accounts.accesscontrol.windows.net… il met l’URL du realm en format JSON.

Il récupère le flux via Invoke-RestMethod.

Il utilise Set-SPAutneticationRealm en passant le flux JSON.

Il créé un proxy Azure ACS Service Application Proxy en passant l’endpoint.

Il créé New-TrustedSecurityTokenIssuer en mettant également l’endpoint ACS.

Le code décrit ici n’est pas complet mais le but est bien de définir ACS comme étant trusté par SP.

// Creating a hybrid SharePoint App

Il utilise ACS en ligne quand on est sur O365.

Il utilise son propre token issue avec certificat lorsqu’il est on-prem.

Il créé un projet VS2012, App SharePoint, il met une URL on-prem, Provider-hosted.

Il utilise le certificat avec le PFX et le mot de passe.

Il explique que VS2012, fait le travail pour lui de mettre dans dans le web.config pour créer un client secret.

Il va dans le default.aspx. Et ajoute un snippet deux fois.

Premier test, il n’a pas de tokenstring (GetContextTokenFromRequest(Request)) il affiche le Title du hostWeb. Il va utiliser le GetS2S…. pour récupérer le token généré.

Sinon Deuxième, il utilise GetClientContextWithContextToken(token).

Il va sur IE, sur SP Online, il utilise _layouts/15/appregnew.aspx pour générer un App Id, App Secret en se basant dans le web.config sur le client Id et secret qui était généré par Visual Studio. Il met l’appdomain à son localhost. Il upload l’App qu’il a utilisé côté on-prem.

En allant sur l’App, il va dans le 2ème test, car il est un context token.

Sa démo échoue, son explication est qu’il s’est trompé de package App. Car l’audience n’est visiblement pas la bonne.

Dernière chose qu’il veut nous montrer est qu’en faisant publish et en renseignant un client id et secret commun, il a un .APP et un .ZIP aussi qui peut lui servir à déployer son App sur Azure par exemple

Christian

#SPC2012 : Migrating your WCM internet sites to SharePoint 2013

Session de 10h30 à 11h45 animée par Israel Vega

Petit résumé:

Session super intéressante sur le process de migration depuis 2010 vers 2013.

// intro

Le job d’Israel est de faire en sorte que le site qu’il nous montre sous SharePoint 2010 soit tel quel à la fin de la session. Mais en SharePoint 2013 🙂

// démo pre move

Il commence par backuper et restorer ses bases depuis 2010 vers 2013.

En passant, il converti sa base vers claims.

J’ai dû en rater car il va super vite !

Il lance tout ça maintenant car ça prend du temps.

// slides

Il va faire le focus sur le design et branding. Son but est de faire fonctionner son site internet sur 2013.

Les nouveautés WCM : custom 404 pages, snippet gallery, clean urls, etc…

Les nouveautés 2013 : pas de upgrade in place, il faudra forcement du detach/attach.

Les raisons de migrer sont donc : profiter de ces nouvelles fonctionnalités, redesign, etc.

Les mode de migration :

  • à l’identique
  • à l’identique + des amélioration
  • refonte partielle
  • refonte

Selon ces cas, les décisions seront différentes. Il faut donc bien identifier en amont le cas sur lequel on travaille.

Sa démo porte sur le 2eme cas, une migration à l’identique avec les ajouts de la navigation par métadonnées et de la gestion de la master page depuis design manager.

// 1ere étape

Il montre son site migré par le process lancé avant les slides sous 2013 et le ruban est toujours celui de 2010. En fait SharePoint 2013 installe le 14 hive et le 15 hive, d’où la coexistence.

Son WSP a été installé sur 2013. (Les site def custom ne peuvent etre migrées sur le cloud)

Il faut maintenant upgrader la master pour profiter de l’expérience 2013:

Pour cela :  site setting > upgrade status

Et boum : erreur interne.

C’était voulu, il y a plusieurs étapes à faire sur la master : changer le rubban, changer la balise html, etc.

Apres des petites blagues car sa master ne voulait pas s’afficher (« I see dead master pages… » en mode 6e sens 🙂 c’est showman !), il a pu changer et ça marche, cool 🙂

1er étape ok, le site est migré, le ruban est 2013, mais aucune nouvelle fonctionnalité n’est disponible.

// 2 eme étape

Si on veut utiliser le design manager, il faut reprendre le HTML de la master existante et faire toutes les étapes de création de master page avec cet outil pour que le HTML et l’ASPX soient dissociés.

Il nous fait la démo, vraiment pas mal et pas trop complexe.

Il nous fait une démo en temps que designer de l’édition de sa masterpage depuis dreamweaver sur mac, ca marche facile. Fini les envois de html par mail !

Pour ajouter un custom control dans le html, la snippet galerie propose un bouton dans le ruban pour créer un snippet à partir de celui ci.

Si on choisi de ne pas migrer sur le design manager :

On doit réfléchir a comment déployer les css, images -> feature, wsp

On perd la possibilité de l’utiliser -> design sur html et conversion automatique en master pas possible, on doit travailler comme avant.

// activer la navigation par metadonnees

Il faut d’abord upgrader le managed metadata service pour profiter des évolutions 2013.

Puis upgrader le navigation control dans la master

Il faut ensuite activer des features si on utilise le modèle blank#0 (cas d’un site publishing fait à partir d’un web template sur O365 par exemple).

Il créé son termset manuellement et fait pointer la friendly URL de ses termes vers ses pages migrées.

Et hop! Ça fonctionne.

// post migration

Peur des 404 ? on peut garder la vieille url lors d’une migration dans un colonne et afficher cette colonne dans la custom 404.

Si on utilise le FBA, le FBA doit être reconfiguré et les passwords doivent être changer par les users (car le cryptage utilise l’ID du serveur).

Fabien

#SPC2012 : Mastering App for Office development

Session de 10h30 à 11h45 Ali Powell

La session va permettre de découvrir l’antre d’une app pour Office. On va revoir le concept et du code dans Visual Studio mais aussi directement depuis le bloc notes nous sera présenté.

Quelques chiffres pour commencer concernant les tendances :

  • 1 milliard de smartphones en 2016 dont 350 millions pour le travail
  • 82% de la population connectés (online) touche aux réseaux sociaux
  • 50% des entreprises clientes sont sur la route vers Cloud

L’arrivée de « app for Office » apporte de nouveaux composants (les apps), des nouveaux scénarios, des nouvelles expériences utilisateurs : au niveau des devices (le tactile, la mobilité), du cloud (Office, le modèle cloud app), et le social (newsfeeds, microblogging, communication, vidéos…) : « apps are everywhere »

« Apps for Office permet de mettre le web dans Office ».

Les apps sont récupérées depuis l’office store ou l’app catalog. Elles peuvent être installées directement sur le poste. L’expérience à travers les devices (tablettes, pc, phone). Une app pour Office fait pour le client riche fonctionnera dans la version navigateur (WebApp). L’intérêt est qu’il n’y a pas d’installation à faire sur chaque device.

L’intérêt des apps est la simplicité et les apps touchent un nouveau public : les compétences à acquérir sont simples (HTML, JS). L’objectif des apps ne sont pas de créer une nouvelle application mais des composants connectés permettant d’utiliser internet et des api existantes.

Rappel sur les zones des apps pour Office (déjà détaillé lors des précédents CR de sessions) : TaskPane, Content, Mail.

Concernant la composition d’une app (framework) : Web Extensions Framework (Wef), Office JSOM, Application Specific JSON (Outlook JSON…), app API’s, pour être affiché sur des clients riches ou dans le navigateur.

On commence par du bloc-notes avec la présentation du manifest d’une app.

On y retrouve :

  • Le type de l’app (TaskPaneApp)
  • L’id de l’app : afin d’être unique dans le store et permettre les mises à jour dans le futur
  • Le titre, la localisation, description, le concepteur…
  • L’appDomain qui va permettre de donner le domaine qui sera utiliser pour charger la ou les app pages (ex : http://services.odata.org)
  • SourceLocation : permettant d’indiquer la page qu’on veut afficher (dans notre cas, la site wikipedia)
  • La dernière et certainement l’une des plus importantes, les permissions concernant le document qui hébergera l’app. Ex :  ReadWriteDocument

Pour faire le pont avec l’intégration de l’app dans l’onglet My App du logiciel Office, la base de registre est ouverte.

A l’emplacement « CurrentUser/software/MS/Office/15.0/Wef/developer », on ajoute une clé « MyApp » avec le lien vers le fichier manifest de l’app qui se trouve sur le pc.

On ouvre Word. Et dans « Apps for Office » on voit l’app.

C’est parti pour Visual Studio 2012 !

Un nouveau projet « App pour Office » est créé, de type « TaskPane » pour Excel. On voit le fichier manifest généré. Cette voici, le SourceLocation est une page du projet VS. Le déploiement est lancé. On retourne dans la base de registre et on voit bien que la clé a été rajouté par Visual Studio 2012.

Autre démonstration sur un fichier Excel contenant une app qu’il nous a déjà été montré : le votes pour l’élection américaine. Bouton droit sur l’app « View Source » nous peut de voir le code source HTML. L’app est intéractive : on passe la souris sur un états et on voit des informations détaillées. Toutes ces infos viennent d’un onglet du fichier.

Le fichier Excel est fermé et est renommé en zip (OpenXML), et peut voir dans le répertoire « xl/webextension » les apps du fichier : balise « bindings » pour chaque onglet vers « app_ref » avec l’id de l’app. Il y a également un screenshot de l’app dans le répertoire media (un screenshot est généré au format image à chaque enregistrement du fichier).

Le fichier Excel est ensuite uploadé dans SharePoint afin de voir « Excel Web App ». A l’ouverture, nous avons une demande d’autorisation pour l’app car elle souhaite accéder aux données du fichiers.

Concernant les apps pour Mail (ds le manifest Capabilitiy = MailBox), il y a une légèrement différence car grâce à Exchange, elles peuvent être installé par l’administrateur. Ces dernière une fois ajoutée dans Exchange ne peuvent pas être désinstallées par l’utilisateur.

On voit maintenant une autre app déjà développée. L’app est de type « Mail ». Celle-ci va permettre d’identifier les numéros de téléphone et afficher les liens vers Lync.

Ali Powell a insister plusieurs fois sur le design qui est très important pour convaincre et rassurer l’utilisateur mais aussi pour qu’elle devient populaire.

Les permissions sont cette fois en « ReadItem ». Une règle est également ajouté (depuis le manifest) pour indiquer que l’app s’applique que sur les types « message ».

Le test est directement fait dans Office 365.

Un autre test avec une adresse, uniquement l’app Bing maps est lancée.

Un autre test sur un meeting, mais qui ne fonctionne pas. Ça permet de voir autre chose : la gestion des apps au niveau de Outlook montre les apps de type User (la nôtre) et celles installées par l’administrateur.

Bon tout est ok, mais ça fonctionne toujours pas. Dommage mais on comprend bien le principe.

Une dernière app de type de TaskPane est montré permettant d’afficher une information en bas à droite (bulle d’info).

Cette session a permis de voir la base, quelques éléments sous-terrain des apps, mais j’avoue que je m’attendais à pleins de code en mode « Wahou ».

Jérôme

#SPC2012 : Developing Advanced BI Visualizations with Visio & SharePoint in Office 365 with Azure

Session de 10h30 à 11h45 animée par Chris Hopkins (Premier Consultant)

Le but de la session sera de voir comment mettre en oeuvre des solutions BI avancées pour les PowerUsers (via Visio) et pour les développeurs (création de mashups)

On commence par un rappel sur Visio Services qui permet d’afficher sur SharePoint des diagrammes Visio connectés à des sources de données pouvant être rafraichies et tout ça côté serveur

Les diagrammes peuvent être actualisés mais pas édités ce qui est une nuance importe

Pour créer des dashboards, il y a généralement 3 étapes

  • Identifier les sources de données
  • Modéliser le rendu
  • Définir les interactions

Visio va permettre de réaliser toutes ces opérations directement dans l’outil avant publication sur Visio Services

Petit rappel sur Visio qui permet de créer des diagrammes à partir de formes prédéfinies, d’insérer des diagrammes AutoCAD, d’ajouter des images/cliparts et de générer les diagrammes à partir de données

La génération de diagramme à partir de données se base sur la fonction « Data Linking » qui permet d’associer une ligne d’une source de données à une forme sachant qu’une même ligne peut être affectée à plusieurs formes (on est sur une relation 1-N)

Quand un diagramme est connecté à une source de données, les données peuvent être rafraichies automatiquement ou manuellement et les formes du diagramme sont rafraichies automatiquement en fonction des nouvelles valeurs (utile si on fait du color coding en fonction des valeurs)

Les sources données supportées sont multiples

  • Excel Services
  • Listes SharePoint (natives ou externes via BCS)
  • SQL / SQL Azure
  • N’importe quelle source assembly .NET
  • N’importe quelle base de données possédant un pilote compatible

Il est possible d’afficher les données provenant des sources de données sous forme graphique (icônes, texte, data bars, color by value…)

Si les mode de rendu graphique ne répondent pas aux besoins, il est possible de créer ses propres modes de rendus

On passe à une première démonstration où l’on voit un schéma Visio, connecté à une source de données, publié dans SharePoint et affiché grâce à Visio Services

On voit qu’on peut passer d’un diagramme à un autre en cliquant sur une forme à partir du moment où les interactions ont été définies correctement

On passe ensuite dans Visio pour voir comment cela a été implémenté et on voit que la source de données est une base SQL Azure, exposé sous forme de liste dans SharePoint grâce à BCS et elle même connectée au diagramme Visio grâce à la fonction Data Linking (un assistant permet de faire la connexion de manière très simple)

Quand on utilise une base de données SQL comme sources de données, il n’est pas possible d’utiliser une procédure stockée pour récupérer les données (seulement les tables et vues sont supportées)

Par contre si on utilise BCS pour exposer la procédure stockée comme une liste SharePoint via BCS, alors on peut utiliser cette liste dans Visio ensuite

Si on veut agréger des données provenant de plusieurs sources, les Data Graphics supportent les formules permettant de réaliser les agrégations nécessaires

Pour créer des dashboards interactifs, la WebPart Visio supporte la connexion avec les autres WebParts et il existe une API Javascript permettant d’interagir avec les diagrammes

On passe à une nouvelle démo qui montre un exemple d’utilisation de l’API Javascript pour dessiner des canvas HTML5 sur des diagrammes Visio en fonction d’actions de l’utilisateur, afin de mettre en valeur certaines portails du diagramme

Malheureusement, à quelques exceptions près (Azure et BCS notamment), cette session est exactement la même que celle présentée l’année dernière donc Visio/SharePoint 2013 n’apportent pas de nouveautés pour la création de tableaux de bord BI

Cette session est malgré tout intéressante pour les personnes souhaitant découvrir les possibilités offertes par Visio et ses fonctions de Data Linking, Data Graphics et API Javascript

Stéphane

#SPC2012 : Deliver SharePoint Apps On Non-Microsoft platforms – Lessons learned from the Trenches

Thurday, 9h00, Kirk Evans, Principal PFE, @kaevans, Dallas Texas Radu Grama, PFE, @radugrama

Résumé

Session particulière sur le développement sur des plateformes non Microsoft, pour attaquer du SharePoint. Ce scénario peut arriver dans des entreprises où les technologies sont hétérogènes, et où il peut y avoir des parties où la technologie veut se connecter à SharePoint via des Apps.

Il explique alors les problématiques de packaging, de connexion et de sécurité, et enfin de méthode d’accès aux données.

Le but de cette session est de créer des Apps grâce à des environnements non Microsoft en comprenant la sécurité. Le code va être fait en PHP dans cette session.

On nous met dans l’ambiance, c’est un Mac qui est sur scène

// Scenario Overview

Utilisation de FBA, pas de technos Microsoft.

Linux (Ubuntu 12.0.4) et AWS (Amazon Web Services), Apache, MySQL (avec un PhpMyAdmin), PHP

// DEMO :

On est sur un site PHP avec des customers et des agents dans une agence de voyage.

Un customer doit pouvoir laisser un message à un agent.

L’agent a un BO, avec un listing des hôtels et des chambres, les messages des clients, rechercher dans le listing des hôtels.

Ils gèrent les rendez-vous et opérations dans SharePoint 2013.

Le but sera de connecter les deux sites.

// Gathering requirements

Les deux systèmes vont communiquer en REST/OData Il explique ce qui se cache derrière ses environnements (Apache, mysql etc)

// App Decisions

Il revient sur les méthodes d’hébergement et explique qu’aujourd’hui, nous allons clairement être en Provider-hosted App avec un AppManifest Il revient également sur les App Experiences (Full Page Apps -obligatoire-, App Parts -optionnel-, Custom Action – optionnel-) Utilisation de O365, il va utiliser ACS (access control service), listings sont en MySQL mais les RDV seront dans SharePoint 2013.

// Packaging

Il explique que le .APP d’une App est un .ZIP.

// DEMO : Grama montre la création d’un package APP avec MonoDevelop

L’important est le AppManifest, qu’il a récupéré.

Il insiste sur la start page qu’il renvoie vers la page login de son site PHP.

Il a RemoteWebApplication dans AppPrincipal avec un ClientId qui va gérer l’authentification Il une classe console qui va lui recréer la structure d’un .APP et qui va le zipper dans un fichier .APP avec les Helpers de gestion de ZIP.

Il va sur son developer site, upload son .app.

Il explique qu’il a utilisé MonoDevelop sur Mac pour coder en .NET avec Mono.

// Retour sur les slides : Authentification et OAuth

Pour une Cloud app, il faut enregistrer l’App avec ACS (Access control services).

Utiliser les IDE pour développer l’App.

Confugrer OAuth sur l’application.

Puis package l’App.

Pour OAuth, on utilise des tokens. Il explique qu’une App agit comme une Il y a un App ID (client ID) et App Secret générés par ACS (page _layouts/15/appregnew.aspx).

https://sellerdashboard.microsoft.com/Application/Summary

Il faut utiliser cette interface pour enregistrer l’App pour qu’elle soit utilisable sur O365.

Il faut s’assurer que le formulaire d’inscription à la plateforme il faut créer un profil complet sous peine d’être refusé.

Quand il va sur l’onglet « Client Ids », il peut ajouter un client Id OAuth. Pour cela il faut qu’il mette un nom, un nom de domaine. Il récupère un Client ID et un Client Secret.

Quand il revient sur l’AppManifest c’est celui là qu’il et dans son ClientId de AppPrincipal>RemoteWebapplication // Evans explique le flux OAuth (cf session précédente qui l’évoque déjà).

Client requête SP, SP demande un context token à ACS, ACS lui renvoie un context token signé à SP, SP renvoie la page avec un iframe au client, le client demande le contenu de l’iframe à contoso.com (l’app domain), Contoso.com demande la validation du token à ACS, ACS renvoie un access token à l’App, l’App envoie la request et access token à SP, SP valide cela et renvoie les données à l’App.

Il explique que côté serveur, il y a une classe TokenHelper sauf qu’il ne peut pas l’utiliser car il est en Mono.

// DEMO : Grama explique l’équivalent TokenHelper

Il explique qu’on peut se baser sur un framework existant si on en connait, qui fonctionne avec OAuth 2.0 PHPStorm est utilisé (Eclipse serait un équivalent), et la librairie JSON Web Token (JWT) pour lui servir de TokenHelper.

  1. Il récupère la variable $_REQUEST[‘SPAppToken], et le décode grâce au CLIENT_SECRET récupéré et mis dans un fichier de variables. CLIENT SECRET fonctionne comme une clé privée. En décodant avec JWT, il obtient l’App Token.
  2. L’App Token est vide –> refuser l’accès –> Access denied.
  3. App Token est OK –> il doit maintenant récupérer l’Access Token
  4. $appToken->aud –> il split les @ et $appToken->appctxsender pour récup leprincipal name
  5. il va créer un tableau avec les paramètres de données à envoyer pour récupérer son access token (voir la documentation OAuth).
  6. Il récupère le endpoint qu’il doit requêter via AppToken->appctx->.. il passe rapidement sur le code pour récupérer l’access token
  7. Une fois qu’il a accessToken, c’est bon il a accès à SharePoint et peut attaquer les données.

L’access token dure quelques heures. Une fois qu’il est connecté il explique qu’il peut récupérer le refresh token qui lui dure de 6 à 12 mois .Ainsi il veut éviter de refaire la requête à chaque rafraichissement de la page.

// CSOM and REST / OData

Répétition de CSOM et REST via client.svc dans vti_bin … ou _api plus simplement.

Il insiste sur le fait qu’il ne va rien installer sur SP de particulier, mais bien attaquer à distance les données.

Il explique comment est venu OData, qui avant était conçu pour lire les informations, mais qui maintenant permet également de faire du CRUD. Il est aussi possible de récupérer les données en JSON avec les accepts-header HTTP.

Il créé un tableau d’en-têtes, pour envoyer sa requête GET.

Il met Authorization : Bearer en passant l’AccessToken.

Il met Accept : application/json;odata=verbose.

Il émet ensuite la requête JSON en attaquer _api/web/CurrentUser Il fait un curl_exec($ch) , $ch étant le tableau de requête, et met le résultat dans une variable session « sharepointUser ».

Christian

#SPC2012 : Best practices for record management with SharePoint 2013

Session de 9h à 10h15 animée par Scott Jamison, Jornata

Petit résumé:

Une présentation des fonctionnalités de SharePoint 2013 (qui apporte très peu de nouveautés) pour gérer son archivage de document. Des bonnes pratiques à reprendre mais peu de concret.

// intro

La session est basée sur l’histoire de Bob. Bob a déployé SharePoint.

Il a une demande de records management dans son organisation.

Il ne sait pas comment s’y prendre.

La session va donc aider Bob a répondre à son client.

// enterprise content management

Les concepts de RM sont : partage, organisation, trouver, construire, gérer.

3 étapes : 

  • Création des documents (création et organisation, metadata) -> personnel
  • Organisation des documents (policy, architecture de l’information, taxonomie) -> team
  • Securisation des document (reduire les risques) -> organisation

// record management

Le RM consiste a identifier, classe, archiver, conserver et detruire les enregistrements.

Le but est de faire tout ca d’une facon repetable et controlable.

Les problèmes à résoudre : 

  • Comment définir ses politiques de rétention ?
  • Comment accéder aux archives ?
  • Comment rendre tout ça semble pour que les utilisateurs adoptent l’outil ?

Il nous montre un cycle de vie de document : create, collaborate, review, approve, publish, expire, archive/destroy

Une best practice est d’ajouter des metadonnees a chacune des étapes.

// what s new in 2013

En SharePoint 2010:

  • content organizer
  • document sets
  • document IDs
  • location based metadata default : il pense que c’est la feature la plus sous estimée.
  • navigation par metadonnees
  • in place record
  • site based eDiscovery and Holds

En SharePoint 2013:

  • tout ce qu on a dans 2010 +
  • Site rétention : on peut cibler une policy sur un site, qu’est ce qui cause la fermeture et la suppression du site
  • site mailboxes (qui suivent les politique de rétention du site) : voir mon CR de mardi sur ce sujet. Cette fonctionnalité permet de drag et dropper un mail dans la doc lib ce qui permet de gérer les mails en tant que records
  • cloud parity : on a toutes les fonctionnalités dans le cloud.
  • eDiscovery : idem, voir mon CR précédent dédié au sujet.

– démo de la politique de rétention d’un site

Tout se passe dans les site setting, il faut activer la feature « site policy » qui active le menu « site policy » et « site closure and deletion ». On doit d’abord définir une policy au niveau collection de site, puis l’assigner au site.

Lorsqu’un site est fermé, un bandeau apparait tout en haut de l’écran : « le site est fermé à la demande de l’administrateur de la collection ».

– démo de la site mailbox

Il ajoute une app et la site mailbox est créé, rien de neuf par rapport a la session de mardi.

– démo depuis le cloud

Il montre juste un record center sur O365.

– il passe maintenant a une belle publicité sur son bouquin… 

// top 10 best practice

1 – identifier les roles :  qui est en charge des enregistrements (archiviste, legal), qui implémente (IT), qui gère le contenu, les utilisateurs

2 – analyser le contenu à conserver 

3 – encourager l’usage de métadonnées : les personnes qui créent le contenu doivent être former à bien remplir les méta, créer des colonnes, pas des dossiers, assigner des métadonnées par défaut sur les colonnes, former les utilisateurs à bien renseigner la propriété « title » (qui est par défaut le titre du doc dans les propriété du doc office).

Les dossiers doivent être réservés à la gestion des droits, à la partition du contenu en terme de volume, à assigner des méta par défaut. Pas d’autre raison de créer des dossiers !

– démo

Il montre un lib avec une vue a plat pour les lecteurs et une vue par dossier pour les contributeurs. Il se place en tant que contributeur et drag et drop des fichier dans un des dossier et les meta sont remplies par défaut.

4- construire file plan : un tableau de rétention des documents :

Contrat – description – 5 ans

SFD – …                    – 2 ans

Etc.

– démo dans les doc lib setting, on a un bouton pour générer un file plan qui liste les contents types, les politiques de rétention, etc.

5- mettre en place des schedule de rétention

– démo depuis lib setting. On peut baser le schedule sur des contenttype ou des répertoire.

6- définir la solution : in place ou record center

Un record center peut faire l’affaire si la politique de retention des sites n’est pas maîtrisée ou si l’administration des sites n’est pas « fiable ». On doit pouvoir maitriser les sites contenant les record pour faire du in place.

En contrario, le record center oblige a aller checker 2 endroits pour trouver ses documents.

Il a mis un tableau avec les pour et les contres pour choisir, il faudra le récupérer depuis les slides.

– démo de la déclaration de record in place et aussi du send to record center.

7- définir comment le contenu devient un record

Apres un certain temps ? Par code ? Workflow ? Manuellement ? A t-on des contraintes légales ? Peut-on laisser les utilisateurs définir les record seuls ?

8 – planifier l’intégration des emails

9- un file plan doit être tenu a jour pour savoir ce qui est archivé et comment

10- add ons 

Là il nous vend son consulting et des solutions de ses partenaires…

// ca y est Bob est content 🙂

// une question intéressante

Quoi de neuf coté doc ID ?

Rien c’est toujours aussi bof.

Fabien