Le Post Infeeny

Les articles des consultants et experts Infeeny

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

[SPC14] SPC408 // SharePoint 2013 Apps with AngularJS

Mail de Christian

Jeudi 06/03/2014 à 9h00

Speaker
Jeremy Thake – VP of Global Product Innovation @ AvePoint Inc. // MVP @jthake C’est sa dernière session en tant que MVP puisqu’il va rejoindre l’équipe produit chez Microsoft ! Awesome !

Résumé
Bonne session, un peu trop courte qui donne une bonne introduction à AngularJS qui est très large pour tenir dans une seule session.
Ce framework est assez complet mais complété par jQuery et d’autres modules, on peut faire une App SharePoint 2013 avec des frameworks très puissants. Tout cela en gardant une propreté dans le code javascript qui sans ça peut devenir assez compliqué à lire.
Le framework propose des très bon mécanismes de data binding, assez propres etc.

// Agenda
Pourquoi AngularJS
Intro à AngularJS
Getting started in SharePoint
CompleteMe App
Tips and Tricks

// Pourquoi AngularJS
Même si AngularJS est fait par Google, il dit que le modèle de développement a changé en utilisant les différents outils mis à dispo par tous pour accomplir son but.
Il existe depuis janvier 2010, il y a plus de 600 contributeurs, 2500 requêtes produits. C’est un outil très supporté.
Les développeurs Google sont vraiment impliqués dans le développement d’AngularJS Beaucoup de ressources existent sur le marché, sur le net. Des ebooks, des sites comme PluralSight, Codeacademy, Il présente un slide de Google, comme quoi GWT était très populaire mais a baissé, à contrario de AngularJS qui les a déplacé tous. Backbone, embuer ou knockoutjs sont eux restés assez bas.
Il aime beaucoup
Google feedback un outil avait pris 6 mois pour 3 dév et 17000 lignes de code. Avec AngularJS, cela a pris 3 semaines, 1500 lignes de code.
Plusieurs avantages
-Gestion du DOM et de l’AJAX,
-Une structure très bien définie
-Tout existe pour faire une App qui fait du CRUD -Testable, il y a un framework de test dans AngularJS qui facilite les Model View .. AngularJS utilise un modèle view … whatever. Pour ne pas appeler ça MVC, MVVM qui ne correspondait pas bien.

// Intro à AngularJS
La base.
Utilisation dans <html> l’attribut ng-app.
Data-binding : on peut changer le modèle, la donnée, la vue est automatiquement changée avec un système de watch/espion.
Cela se fait grâce à {{ phones.length }}.
On utilise angular.module(‘myApp’, []); qui permet de créer son module.
Le scope permet de gérer la vue, l’objet $scope passé en paramètre de la création du control.
Il y créé un tableau de téléphones, avec des caractéristiques.
Et ensuite dans l’HTML, il utilise ng-controller pour déclarer le nom de sa fonction qui crée le control.

// DEMO : AngularJS 101
Il utilise un jsfiddle. Il y montre une sorte de repeater fait en Angular grâce à l’attribut ng-repeat.
Il fait un ng-repeat= »contact in contacts » où contacts est une collection.

// Directives
Il a déjà montré le ng-controller.
<edit-in-place value= »contact.name » />
app.directive(‘editInPlace’, function() { … Cela permet de créer des attributs custom. Ici edit-in-place.
Il y montre que cela lui permet d’avoir des composants comme un mode edit, qui rafraichit un autre ng-repeat qui lui affiche la valeur.
La valeur saisie dans son mode édit est mis à jour en live par AngularJS plus bas où il l’affiche.

// Factory et provider
Factory : Il permet de créer comme en .NET plusieurs instances.
Provider : autre permet de réaliser des couches d’abstractions Les deux en fait. Mais il passe vite, il n’a pas le temps de détailler et nous invite à fouiller.

// Broadcaster
Il y a un concept qui permet de broadcaster une valeur qui propage la valeur tout seul vers différentes vues dans la page.

// Animations
Il montre qu’il y a également dans AngularJS un système d’animation plutôt puissant.

// Avec SharePoint 2013
Il ne peut pas utiliser le body, il met ng-app= »myApp » sur une simple div ce qui lui permet d’avoir plusieurs apps dans une page SharePoint

// DEMO : CompleteMe App
Il montre une App tâche qui lui permettra d’avoir une liste de tâches où il peut faire des rappels particuliers comme « jamais », dans « 1 an » etc.
Son app est créée en SharePoint hosted sur Visual Studio.
Dans les scripts, il y a un dossier controller et un services.
Sur sa page Default.aspx, il ajoute la déclaration des javascript jquery, angulaire, bootstrap.
Il charge les js de son modèle AngularJS.
Il charge les js SharePoint pour par exemple les people picker. Il a fait un post pour expliquer comment mettre ça en place (il y a des problèmes quand on ajoute plusieurs people pickers normalement).
Il montre la plomberie de son App, avec notamment la requête qui gère l’échec de requête. Et sur le succès de requête, il ajoute les items dans le tableau de son controller.
Dans le cas d’un minifiy, il faut déclarer le controller d’une certaine façon car AJAX Minifier remplace les noms des variables ce qui casse la déclaration Angular. C’est donc contournable.
Le template est normalement mis dans un attribut template HTMLdans le javascript. Pour contourner ça, il faut passer par la directive compile qui permet d’externaliser et charger un template HTML avec un templateLoader qui fait un HTTP get du template. Dans le retourne du compile, il y a un prelink à compléter. Il faut voir son post pour mieux comprendre avec les exemples.
Pour la sauvegarde de ses items, il utilise du JSOM avec les promises jQuery.
Il nous invite à regarder la bibliothèque breeze qui permet de créer des entités. Il ne détaille pas ici car ce n’est pas le sujet.

// Tips and tricks
Il n’est pas bon en CSS haha. Il conseille d’utiliser UI Bootstrap, un module qui peut être à AngularJS qui permet assez facilement de faire des layouts, des formulaires avec validations, datepicker, du responsive etc.
Pour les people picker, aller voir son billet sur son post pour faire ça car l’exemple MSDN n’est pas top.
Utiliser moment.js qui permet de gérer facilement les temps en js.
Visual Studio Online, permet d’avoir un TFS, et il conseille de l’utiliser pour faire du code review simple avec un compte live id.

Christian

[SPC14] SharePoint App best practices using OData and the SharePoint REST API

Mail de Felipe . Mercredi 05/03/13 à 17:00

Speaker, Ted Pattison – Instructor/Author @ Critical Path Training

//Résumé
La session aborde plusieurs exemples très basiques de types de requêtes qu’on peut créer avec oData pour accéder et gérer le données héberge dans des liste SharePoint

//Intro
Le speaker se présente, MVP, auteur des plusieurs livre et speaker dès 1997,
Petit pub sur son site de formation, mais aussi qui tous les codes utilisés dans la session sont dans le suite gratuitement.

//Agenda 

REST and oData Primer
SharePoint REST API
Pagination avec SharePoint Liste
HTML Sliging avec oDate results
Mis à jour des objets SharePoint

//REST and oData Primer
Avec ses slides il nous explique le concept basique de REST et oDATA

REST = Representational State Transfer,
REST simplifie plusieurs situation qui était très complique avec SOAP,
Donc request via HTTP pour manipuler le données,

oData = Open Data Protocol specification
Un type de protocol standard pour être consumer par les APIs
Les https méthodes utiliser avec oDate son
• GET, retourne les items ou un array des items
• POST, créer des nouveaux items
• PUT, met à jour un item
• PATCH/MERGE, mettre à jour item conservant son état actuel
• DELETE, supprime un item

Ensuite il nous fait une petite demo avec le Web API
• Il nous crée un MVC project dans visual studio
• Dans le models il ajoute un entity data model et connecte avec une base de données SQL et choisir une table
• Il ajoute un control liée au model ajoute par avant (en fait il n’arrive pas vraiment à faire ça donc il ouvre un demo avec tout déjà fait)
• Ted ouvre feedler et comme toutes le request/réponse sont via http nous permet d’adapter notre solution en manipulant les headers,
et nous éviter à compiler la solution plusieurs fois pour créer/tester les request.

Il nous montre qu’on peut utiliser $.ajax() avec a REST-formmated URI,
le problème c’est qui le code de success et failure sont dans la même librairie et nous finissons avec un code difficile de lire et mélanger entre le business et le rendu
La solution : Promised and Deferred, qui nous permet de séparer les code qui contiendra le données et le code qui exécutera un fois qu’il aura sa valeur.

//SharePoint REST API

Il commence par nous montre comme trouver le service root du host web via :
Pour le host app
« /../_api/SP.AppContextSite(@target)/web »
Pour le host web
« /../_api/SP.AppContextSite(@target)/web/ »

Il nous explique l’importance de $exapand avec SharePoint qu’améliorer la performance
car il nous remonte les données directement au lieu de utiliser defered et effectuer plusieurs aller/retour

Ensuite il nous montre une petit demo, une sharepoint hosted app qu’affiche les propriétés du web courant

//Pagination avec une liste SharePoint
Il simplement nous explique comme créer une requete pour la pagination via oData
Comme SharePoint liste ne supporte pas $skip
Mais on peut utiliser $skiptoken qui nous permet de définir le point d’entre dans la collections de données retourne dans le request
//HTML Sliging avec oData
Il nous montre des librairies .js qui font de binding entre la source des données et la html
Il passe très vite sur quelques librairies
• Jsrender.js
• Angular.js
• Knockout.js
• Caveman.js
• Rainman.js

//Mis à jour de objet SharePoint
Deux considération,
• Nous somme obligé d’inclure le «_metadata » dans le payload, pour indique quelle type de données sera créé ou mis à jour
• Et le X-RequestDigest, qui on peut l’avoir dans deux scenario
o en utilisant un request POST sur /_api/contextinfo et extrait le d :FormDigestValue dans le xml de réponse,
sachant qui pour ça nous avons aussi besoin du oAuth authorization token.
o ou si nous somme dans sharepoint on peut simplement utiliser le selector jquery $(« #__REQUESTDIGEST »).val()

//Conclusion
Il nous montre de façon très basique comme utiliser oData dans SharePoint et quelques contraintes,
car SharePoint utilise oData 2.
Mais la session de façon générale était très superficiel avec beaucoup de choses simple ou déjà vu.

[SPC14] The nuts and bolts of upgrading to SharePoint 2013

Mail deFabien

Session par Shane Young et Todd Klindt / Rackspace

// Résumé

Un rappel en démo de d’upgrade depuis SharePoint 2010 vers 2013 en attachant la BDD.

// méthode d’upgrade

En 2007: gradual, DB attach, in-place
En 2013 : que DB attach

Les bases que l’ont peut upgrader: bcs, managed méta, performance point, secure store, user profile, search administration

Pour la recherche, il y a des chances que l’on fasse mieux de repartir de zéro et tout reindexer.

A savoir: upgrade d’abord les bases avec les site collection racines, essayer de garder les mêmes url, ajouter les manager paths manuellement avant d’attacher les bases.
Penser qu’il faut plus de hardware! (serveur de recherche dédié dans la plupart des cas, osa, etc…)

// authentification

En 2013, on doit utiliser claims.

2 méthodes :
• Faire d’upgrade dans SP2010
• Ou dans 2013
Les deux fonctionnent mais il préconise la deuxième car cela évite de faire la manipulation sur le serveur 2010 qui doit être celui de production.

Une bonne pratique quand on migre de 2007 a 2013 est d’installer le sp2010 sur la même Instance SQL que 2013, cela évite de copier les données entre les SQL.

// upgrade check

L’outil preupgradecheck n’existe plus.
A la place, on peut utiliser test-spcontentdatabase
Il y a un paramètre showLocation à mettre pour avoir les détails s’il trouve des problèmes.

// feature et solutions

Les customisation 2010 fonctionnent. A condition que c’était dans des wsp !
Un script pour exporter les wsp:
http://msmvps.com/blogs/shane/archive/2011/05/05/using-powershell-to-export-all-solutions-from-your-sharepoint-2010-farm-and-other-fun.aspx
Il y a aussi un projet codeplex: feature explorer pour nous aider
Mais c’est bien de se poser la question : dois je bien le migrer ? 😉

// upgrade d’une base

Test-spcontentdatabase ….
Mount-spcontentdatabase …

// démo

Il restore une base 2010 sur son instance SQL utilisée pour 2013.

Ensuite en powershell, il démarre Start-transcript, puis :
• test-spcontentdatabase, il lui manque un fichier dwp , non blocking, pas grave… GO!
• Mount-spcontentdatabase.
Un log est créé dans les logs SharePoint.
Le « Mount » est très long, il consomme beaucoup d’IO, prévoir des disques rapides 😛

C’est bon, on a le site mais l’expérience est restée comme en 2010, avec en plus, le bandeau qui propose d’upgrade la collection.
Ca se fait dans les site collection settings, on commence par le ‘site collection health check’, puis on upgrade la collection.
(attention, Il est bon de tester sur une site collection de test. 🙂 )
L’upgrade est immédiat ou est fait pendant la nuit via un job, ca dépend du travail, SharePoint planifie pour nous.

Fabien

[SPC14] SPC275 // How to become a Yammer Power User in 75 minutes

Mail de Chritian : Mercredi 05/03/2014 à 17h00

Speaker
Allison Michels – Customer Engagement Programs Manager – Yammer Microsoft

Résumé
C’est une session très pratique dans le sens travaux pratiques Cette session-démo-pratique est bien venue pour montrer comment utiliser Yammer !
Malheureusement, son côté pratique est fait en live, et c’est pas évident de retranscrire.

// Intro
Ok, d’entrée l’équipe du speaker récolte les cartes de visites des attendees pour les ajouter au réseau Yammer qui servira pour la démo.

// Home network et external network
Le home network est basé sur le nom de domaine de l’email utilisé.
Les networks externes permettent de créer un network à l’extérieur de l’organisation.

// Get started with Yammer
Les éléments pour commencer sur Yammer :
Définir son profil, et paramétrer les notifications Rejoindre 3 groupes d’intérêt, pas 50, mais juste quelques uns d’intérêt Envoyer le premier post Faire un like sur un contenu Télécharger l’application mobile.
Pour plus de conseils et de ressources, http://success.yammer.com

// Home feed – bouton en haut à gauche
Les groupes sur la gauche sont sur la gauche. Ils sont classés par activité, et par intérêt.
Dans la zone centrale, on a également le feed qui permet de remonter l’activité. Il y a 3 onglets, Top-All-Following. Le plus simple est Top qui rassemble l’activité la plus pertinente, elle n’est pas classée par date chronologique. Following est l’onglet qui remonte l’activité des personnes que l’on suit, celle qui est pertinente par rapport à ce qu’on a choisit de suivre.

// Inbox
Ce sont les messages qui permettent des annonces, réponses à des messages, des mentions dans les posts.

// Groups
Les groupes peuvent être créés par tout le monde, et peuvent être publiques ou privés. Publiques est le conseillé pour ouvrir le conversationnel. Les groupes sont donc sur le panneau à gauche. Chaque groupe a son feed où l’on peut poster un message (sur le mur).
Il est important de voir les groupes comme cross-functionals et non pas hiérarchiques. Ils sont conçus autour d’un sujet.

// Profile page
La page de profil permet de voir les conversations auxquelles on participe, et le contenu qui nous est approprié. A droite de cette page, on voit la bio et le profil de l’utilisateur. Le profil utilisateur est assez complet et il est conseillé de le remplir.

// DEMO — Mentions et Hashtags
Le groupe SharePoint Conference 2014 sur le site Yammer est disponible et le speaker propose de demander au voisin qui il est et ce qu’il aime. C’est le chaos et on ne s’entend plus – pas mal 🙂 En fait on démontre l’utilisation du mention avec @ et l’utilisation du hastag # en postant dans le groupe.
Elle explique rapidement qu’un hashtag ne peut pas être supprimé, mais il peut être renommé par l’administrateur.

// Poster vers un groupe
Elle voit que quelqu’un a posté son message non pas dans le groupe mais dans le réseau directement. Elle montre comment on peut supprimer un message. Elle peut aussi partager le message du réseau, vers le groupe.

// Edition des notifications
Elle montre comment en allant dans son profil, on peut éditer la façon dont on reçoit les notifications. Il est possible de changer les paramètres fait pour chaque groupe et par réseau.

// Bonnes pratiques
Analogie avec une fête : « N’invitez pas des personnes à une fête où il n’y a rien à manger ». De la même façon, n’invitez pas des gens à un groupe où vous n’êtes pas actifs !

// Notes
Il est possible de collaborer rapidement. Ce ne sont pas des notes synchronisées avec OneNote ou quoi que ce soit mais ça vaut ce que ça vaut pour collaborer rapidement.
Une note peut être suivi, on peut s’y abonner et recevoir des notifications lorsqu’elles sont modifiées.
DEMO —> elle a créé une note dans le groupe de la démo. elle propose de la suivre, nous propose de la modifier.

// Recognize and Praise Hard work
Elle montre la fonctionnalité de praise permettant de féliciter quelqu’un via un post sur le mur pour renforcer le feedback des collaborateurs.

// Travaux pratiques
Une grosse partie de la session part en travaux pratiques

Christian

[SPC14] Customizing search experiences with Azure hosted data and Bing Maps

Mail de Fabien

Session présentée par :
• Rainer Asbach
• Timo Heidschuster
• Johannes Lemmerer
• Tous Microsoft Allemagne ou Autriche

// résumé

Le but de cette session est de voir comment enrichir la recherche en ajoutant des cartes, des images liées, des données externes.
Un gros focus sur comment modifier les display templates.

// la session

Scenario : un agent de voyage veut avoir toutes ses infos sur son écrans de recherche:
• Une liste SP avec des données géographique : longitude, latitude
• Une librairie de photos
• Une bdd Azure avec des données supplémentaires

Ce qu il veulent faire :
• Avec un tenant o365
• L’écran en PJ

Ils vont utiliser :
• Liste/librairie
• Crawler properties (ows)
• Managed properties
• Display Templates: pour le hover panel, pour le raffinement
• Résulte type: lié au Ctype de données géographique de la liste

Comment ils font :
Création d’un display template : Il ne partent pas de zéro mais font un copier coller d’un existant puis le modifie. Ils partent du item_default et item_default_hoverPanel.

Ils créent maintenant un result type. Pareil, ils font une copie du SP list item auquel ils ajoutent une condition sur le Ctype et auquel ils associent le display Template créé a l’étape précédente.

Ok, ca marche, ils ont un display panel custom.
Maintenant ils vont ajouter des managed properties aux display templates.
Ils éditent la section « managedPropertyMapping » à laquelle ils ajoutent les propriétés custom.

Ok, maintenant, il ajoute une référence vers un script JS pour afficher la carte. Il le met dans le display Template de d’item, pas du hoverPanel, sinon, ca marche pas car c’est pas chargé avec la page. Et dans le hoverPanel. Il appelle sa librairie. Il commence par une fonction qui ne fait que formater ses latitude/longitude en joli html.

Maintenant, pareil, mais avec une carte.
Il récupère le code JS ici : http://www.bingmapsportal.com/ISDK/AjaxV7
Il copie colle ce qu’il faut dans ses display templates et dans une script editor wp pour ajouter du script à la page de recherche. et… voilà ! Attention au ID HTML dans les display templates, penser a mettre l’id de d’item courant.
Sehr schön ! La carte apparaît !

On recommence pour ajouter les photos liées dans le hover panel.
Pareil que pour la carte.

Passons maintenant au données de la base de données SQL Azure.
Ils ont une table : ville, titre. Url vers la fiche Wikipédia correspondante.
Pour l’instant les données BCS ne peuvent pas être crawlé sur SPO, donc il faut plutôt une requête en live a l’affichage. Pour cela, ils utilisent les services REST de SQL Azure pour requêtes les données.

les sources seront publiés sur un blog. A fouiller si besoin.

Fabien

[SPC14] SPC281 // Office 365 and Dynamics CRM Online – Better Together

Mail de Christian

Mercredi 05/03/2014 à 15h15

Speaker
Jason Bullock – Cloud Productivity TSP @ Microsoft

Résumé
Une session d’overview pour les décideurs qui montre les différentes briques qui peuvent être complémentaires entre les produits Dynamics CRM, Exchange et SharePoint. On attaque notamment ce qui est Online où tout est déjà configuré pour une identité commune.
On démontre dans cette session la complémentarité de l’écosystème Microsoft pour un collaborateur qui utilise ces différents produits.

// Agenda
Office 365 & CRM Overview
Demo
Top 6 Integration Points
How
Extra credit
Customer example

// Office 365 et Dynamics CRM
Il intègre pleinement Yammer dans Office 365 comme l’est Office, Lync, SharePoint et Exchange.
Overview rapide de ce que sait faire Dynamics également.

// DEMO
Il va montrer comment une personne peut travailler sur Office 365 avec des personnes qui n’accèdent pas à Office 365 dans son organisation, ou hors de son organisation.
Dans Outlook, il accède à son contenu côté CRM. Il accède à ses compte clients côté commercial.
Il ouvre sur CRM, le compte d’un client : Northwind Traders. On voit le feed Yammer au centre de la page parmi un activity feed. On voit sur CRM les différentes opportunités et les contacts autour celle-ci. Il démontre qu’il peut utiliser Lync directement depuis cet endroit.
Il montre l’intégration d’Outlook avec CRM en termes de tâches.
Il va sur ses mails il a reçu un mail de quelqu’un, concernant le client NorthWind Traders, il peut définir sur Outlook un lien avec CRM et le client en question avec le bouton Set Regarding. On retour sur CRM sur le client Northwind, on voit dans le feed, que le mail apparait dans ses activités.
Il poste sur Yammer, l’appel qu’il a fait, directement dans le groupe Yammer correspondant au client en taggant son collègue David. Mais David n’a pas accès à CRM.
David lui, met un document en ligne sur Office 365 et SharePoint en particulier dans un site où un workflow est activé sur sa bibliothèque de documents. Après une approbation le document est validé.
David a malgré tout accès à Yammer et voit le message posté plus tôt. Ce qu’il fait c’est de partager le document avec une personne avec l’adresse @outlook.com (collaboration externe). Et il montre que sur son téléphone où l’adresse outlook.com est configurée, il peut visualiser le document.

// Top 6 Integration Points
1) C’est la même identité qui est utilisé entre Office 365 et CRM Online. Il y a du SSO entre les deux. Il y a une intégration parfaite.
2) Intégration des tâches. Tâches unifiées en somme entre CRM, SharePoint, Exchange (Outlook).
3) Intégration Outlook avec le mode offline et la synchronisation d’activité avec CRM (vue intégrée, cracking des communications, accès à CRM en mode offline).
4) Intégration avec SharePoint. On peut avoir dans CRM, le contenu de bibliothèques de documents associées avec un compte client dans CRM. Pas de duplication de contenus.
5) Intégration avec Yammer avec CRM mais aussi avec Office 365 grâce à Open Graph pour la gestion des actions dans CRM en tant qu’objet dans Yammer. Le contexte des activités CRM est reflétée dans Yammer avec notamment une notification de Yammer automatique par CRM.
6) Intégration avec Lync/Skype avec la gestion du présentiel pour les deux (avec aussi la possibilité d’avoir de l’IM, de l’appel, et de la vidéoconférence). La gestion du click to call fonctionne bien.

// How (configuration)
Dans Yammer, on a une entrée Yammer dans le panneau d’administration de Dynamics CRM avec un système d’autorisation d’application sur Yammer. Il y a une possibilité de gérer quelles actions sont autorisées d’être postées avec la possibilité de révoquer individuellement ces actions.
Il y a un WSP sandbox à mettre sur la collection de sites voulue sur Office 365 pour les listes CRM (Dynamics CRM List Component). Dans CRM, il y a un panneau d’administration où on peut mettre l’URL de la collection de sites SharePoint avec les entités qu’on pourra y créer depuis CRM.
Les bibliothèques de documents seront créées dans SharePoint (Account, Opportunity etc etc).

// Extra credit – App qui se connecte à CRM Il est possible de faire une App SharePoint qui se connecte à CRM.
Girish Raja a fait un post qui fait ça grâce à BCS (Business Connectivity Service).

// Customer example
Voir le use case Microsoft pour Metro Bank qui utilise tout l’écosystème Microsoft avec Office 365 comme colonne vertébrale. Utilisation de Windows 8, Dynamics, SharePoint, Exchange via Office 365.
Christian

[SPC14] 6 proven steps to get the best out of search in SP2013

Mail de Fabien

Session par Paul Olenik, consultant, AvePoint

// résumé

Session power user, la salle est pleine, le sujet intéresse.
Manque de chance pour moi, c’est ce que l’on connaît déjà tous sur le paramétrage de la recherche, je pensais qu’on allait voir plus de cas concrets et en situation.

// l’expérience de recherche OOTB

Il nous rappelle l’origine de sharepoint search 2013 : fast + sharepoint search
Il souligne aussi que la recherche est maintenant au cœur de SP : cswp, cross site publishing, analytics,…
Une démo de la recherche OOTB pour ceux qui ne la connaissent pas : les verticals de recherche, le panneau de raffinement, le call out avec OWA et le « take a look inside », les suggestions, les résults blocs.

Il nous montre maintenant un call out custom avec des métadonnées custom pour un content type.

Maintenant la recherche de personne. Dommage qu’il nous montre encore le profil SP avec le newsfeed SP, et yammer?

// les outils de paramétrage

Les 4 outils pour customiser la recherche :
• Result sources : scope ou fédération
• Result types : discussion, web site, Word document, items du CRM, documents de Fabien datant de moins de 30j,…
• Display templates: comment on affiche les résulte types, en html/js
• Query rule: une action en fonction de la requete : exemple : redirection vers le support en cas de saisie « support », détection d’un numéro de commande et redirection vers la page de tracking, best bets, etc…

Démos de tout ça, comme dans nos cafés SharePoint, aucune nouveauté.

// les verticals

Il nous fait une démo. Il ajoute un vertical: ajout d’une page de résultat, modification de la webpart search résulte, ajout du lien vers la page. Facile.

// la content search web part

Une énième présentation et démo de la cswp. Je vous l’épargne, voir les CR précédents…

Des variables utiles dans le query builder : {user.name}, {user.email}, {today+30}

// best practices

La qualité des la recherche dépend directement de la qualité de la structuration de l’information et du tagging des documents.

Fabien

SPC14] SPC414 // Search content enrichment and extensibility in SharePoint 2013

Mail de Christian

Mercredi 05/03/2014 à 13h45

Speaker
Brent Groom – Senior Premier Field Engineer @ Microsoft Consulting Services Sreedhar Mallangi – Senior Consultant @ Microsoft Consulting Services

Résumé
C’est une session on-prem sur la façon dont on peut étendre les sources de contenus d’un moteur de recherche SharePoint 2013.
On utilise Search Indexing Toolkit (SIT) qui facilite la création de connecteurs de contenus.
On peut utiliser Content Enrichment Web Service (CEWS Pipeline Toolkit) aussi pour enrichir le contenu indexé par des informations supplémentaires.
Une session très intéressante et qui montre surtout comment le moteur de recherche SharePoint 2013 peut être étendu et configuré avec notamment un ajout de code qui permet d’ajouter du contenu spécifique à nos résultats, tout en gardant une expérience utilisateur poussée où on vient enrichir du contenu indexé pour par exemple enrichir le panneau de raffinement de métadonnées qui ne sont pas automatiquement indexées.

// Agenda
Identifier les extension de contenu
Connecteurs custom
Enrichissement du contenu
Toolkits de la communauté

// Architecture overview
Il décrit l’architecture du service de recherche et notamment le composant de crawl qui prend en input plusieurs connecteurs possibles.
On peut sur SharePoint 2013 faire du crawl continu.

// Content ingestion
Pourquoi est-ce important. On va voir comment fonctionne l’input de contenu, la gestion de contenus crawlante et comment on peut avoir des connecteurs spécifiques propres à chaque contenu.
FAST ESP (Enterprise Search Platforms), permettait d’avoir des APIs d’extraction de contenu.
Maintenant sur SharePoint 2013, on a des connecteurs, des handlers (pour file share, sharepoint, profils), et des connecteurs BCS.
Business Connectivity Services permet pour rappel de connecter des données externes vers SharePoint. BCS peut être utilisé comme source de contenu pour la recherche SharePoint.
On peut faire du BCS sans code avec OData ou SQL.
Ou BCS avec du code avec du WCF ou de l’assembly .NET pour extraire du contenu.

// Search Indexing Toolkit – SIT
C’est une implémentation générique d’un connecteur d’indexation Il a un modèle de données générique mais implémente la complexité du batching, du crawling (full/incrémentale), security trimming (gestion de la sécurité dans les résultats).
Dans le package il y a de l’XML avec un modèle, une interface à implémenter éventuellement.
SIT XML file connecter peut indexer n’importe quel fichier XML.
Bon il va très vite dans ce qu’il sait faire, en résumé c’est un outil top, qui est scalable, performant, flexible.

// DEMO
Il ouvre le package SIT. On voit des éléments de démos. Des DLL, des classes à récupérer. Et des scripts powershell permettent de déployer le tout.
Il montre un fichier XML qui liste différents documents à crawler.
Un autre de configuration SIT.
Le docandidpath permet au connecteur de savoir dans le fichier XML des éléments à crawler, comment le connecteur doit accéder (en DOM) à l’URL de l’identifiant du document.
Il lance une commande Powershell et utilise le Powershell qui va déployer notamment dans le GAC. Un autre Powershell lui permet d’enregistrer le fichier XML de configuration sur le service de recherche et d’ajouter le type de source de contenu à sa content source.
Eventuellement le script peut lancer un full crawl.
En allant voir dans le schéma de recherche, on voit qu’un certain nombre de Managed Properties sont créées pour être utilisées dans les résultats de recherches.
On peut désactiver ça en allant dans les crawled proprettes.
Il ouvre ULS Viewer et filtre sur la catégorie contient SIT pour voir comment se comporte le crawl.
Il utilise Search Query Tool disponible sur Codeplex pour faire une requête et tester son contenu.
Il fait une recherche sur la contentsource wikiabstracts qu’il a créé, et trouve les résultats de son fichier.

// SIT ISearchConnector interface
En implémentant cette interface, il y a 6 méthodes à implémenter.
Le ContentSource permet de définir le nom de la source de contenu.
Initialize() permet d’initialiser les paramètres du connecteur (lieu de stockage etc).
GetAllItems() permet grâce avec les paramètres offset (taille du match), crawlType, changeToken et changeTokenUpdate qui permettent de différencier le contenu de deux crawl consécutifs. Cette méthode génère un tableau d’ID de document.
GetSpecificItem(id) permet de retrouver un item en fonction de son ID fournit ci-dessus.
GetSpecificItemData(id) permet de récupérer le contenu.
GetSecurityDescriptorForSpecificItem(itemId, aclmeta, usesPluggableAuth) permet de gérer la sécurité d’un item (security trimming).

// Item level security
Chaque document doit supporter la sécurité NTLM, et être taggé.
Sinon on doit implémenter custom claims avec un provider ou security trimmer.

// Exemples de scénarios
Crawler des fichiers XML générés depuis des applications tierces.
SQL Server avec du security trimming.
SQL Server avec un BLOB relié sur un partage réseau.

// Content enrichment
C’est la façon d’enrichir du contenu existant.
Content Enrichement Web Service (CEWS).
C’est un web service qui est configuré sur le moteur de recherche via Powershell qui va prendre en input des données déjà existantes, et fournir en sortie des managed propreties qui seraient enrichies, nettoyées ou en tout cas traitées.
Il nous montre dans un rapport du service de recherche que cet enrichissement prend très peu de temps.
Quelques éléments à prendre en compte, c’est que les propriétés doivent exister, que c’est case sensitives, qu’on ne peut pas utiliser d’alias, et des propriétés par défaut sont parfois déroutantes car ressemblant à des propriétés existantes (DisplayAuthors vs Author). Enfin certaines propriétés sont en readonly (body). On ne peut avoir qu’un seul webservice par service application de recherche.
Attention à augmenter la capacité de la ferme en conséquence, et la topologie serveur.
Quelques techniques pour implémenter ça.
On peut utilise WCF Routing grâce à .NET 4.0.(http://aka.ms/Pqkjjj) Faire du Load balancine pour gérer la scalability.

// CEWS Pipeline Toolkit
Il y a un toolkit facilitant l’amélioration du contenu.
Il améliore le Search Index.
C’est fait en WCF avec un XML de configuration.
Il permet de simplifier et de cacher des complexité d’agrégation de service, de gestion de scalability.
Ce qu’il y a dans le package ? 55 stages permettant de gérer vraiment plus configurations avec l’XML de configuration. Cela fonctionne sur SharePoint 2010 avec FAST, ou SharePoint 2013 .. ou tout seul.
On peut le customiser avec Visual Studio 2012 et .NET 4.5.
Il y a beaucoup de documentation sur le wiki TechNet.

// DEMO
Il va montrer de quoi le package est composé.
Il montre déjà le résultat, il recherche « europe » et voit qu’il y a des éléments venant de wikipedia avec des raffinements sur la gauche, wikipedia population, la catégorie wikipedia qui sont custom.
On navigue dans pas mal de fichiers XML dans le package CEWSPT pour décrire comment les raffinements sont faits. Impossible de tout retranscrire mais il explique en gros que c’est très flexible et configurable, et que l’usage est plutôt bien documenté.

// How to get the tools
On peut récupérer les outils via un contact chez MCS, un contact chez PFE.
Le disponibilité en public est en cours d’approbation.

Christian

[SPC14] SPC267 // What’s new with Document Retention in SharePoint and OneDrive for Business

mail de Christian

Mercredi 05/03/2014 à 10h45
Speaker Astrid McClean – Senior Program Manager @ Microsoft (Information Protection)

Résumé
D’après les réactions de la salle, c’est un sujet qui intéresse mais qui est peu connu. Intéressant cependant dans le domaine du compliance management.
La session explique les quelques nouveautés dans le domaine des retention policies comment elle se comportent.
Le domaine du eDiscovery également.

// SharePoint Retention Policies
On parle des delete policies qui sont ces règles qui définissent la suppression du contenu selon certaines règles.
Pour SharePoint on parle de ça autour des personal sites, des team sites, des project sites (avec des site policies), des team sites (content type policies, in place records), records management (records center, in-place records).
Elle parle des sites non structurés où on se doit de décider de leur cycle de vie.
Document Deletion Policies – ces règles dont on discutera pour supprimer le contenu s’il n’est plus pertinent.

// Les Retention Policies existantes
Les records management, content type policies et son grand frère les rétentions sur listes et bibliothèques de documents.
Enfin les site policies qui vont gérer le cycle de vie d’un site, et de tout son contenu.

// Content type policies
Cela permet de déclencher une règle de traitement de contenu basé sur une colonne d’un type de contenu (suppression, mise en corbeille, déplacement, suppression de versions).

// Document Deletion Policies
Elle introduit « Document Deletion Policies » qui réduisent les risques de supprimer des données avec les règles. C’est une utilisation notamment pour les Team Sites et OneDrive for Business. Cela ne remplacement les records management ou les content type policies mais viennent en plus.
Contrairement à la plupart des autres, les Document Deletion Policies sont gérées sur un tenant (ferme à priori pour du on-prem). elles peuvent contenir une ou plusieurs règles.
On peut supprimer ou mettre en corbeille basé sur 2 champs possibles uniquement (date de création ou modification). Enfin on peut gérer des périodes en jours, mois ou années (supprimer les éléments de plus de 5 ans).
On peut attacher ces policies à des site collection templates. Il ne modifie pas le template, et un job tourne pour vérifier si un site existant correspond au template pour appliquer la policy.
On peut également attacher cette policy à une collection de sites en particulier.
Quand les policy ne sont pas obligatoires, l’administrateur de la collection de sites peut décider lui-même d’appliquer une policy alternative ou rien du tout.

// DEMO : Compliance center
Elle montre le compliance center dans Office 365.
C’est un panneau d’administration qui est en train d’arriver dans les 6 mois sur les tenant Office 365, puis sur on-prem dans la prochaine version délivrée.
On peut faire de l’audit avec des rapports.
On peut voir ce qui est eDiscovery ou encore de l’encryption pour paramétrer des IRM etc.
Dans la page Archive, on peut firéer les Document Deletion Policies. Cela nous mène à une collection de site « Document Deletion Center ». Il y a deux policy pour l’exemple. Une pour les myosite, une pour les documents.
Une policy est représentée par son nom, description et une règle (rule) de suppression. On définit si on supprime définitivement ou si on met en corbeille, cela basé sur quel champ, puis la période après laquelle on fait l’action. Assez simple. On peut mettre plusieurs règles dont une par défaut.
Dans le site, on a une page « Assign to template » en créant un élément dans la liste correspondante, où on choisit le template gréce à un wizard (le même que pour créer une collection de sites), mais on peut aussi alternativement assigner aux MySite (utilisé par OneDrive for Business). On enchaine et on sélectionne une policy, puis on coche si l’on veut qu’elle soit obligatoire.
Ensuite un job tourne pour assigner effectivement la policy.
Dans le site on a aussi une page « Assign to site collection » où on peut faire la même chose en ayant un wizard qui propose un outil de recherche de collection de sites. En le trouvant et cochant, on valide et on voit que l’outil nous dit qu’une policy existe déjà (éventuellement).
Elle montre une collection de sites où elle va en tant que d’administrateur aller dans site settings -> Document Deletion policies.
De là on voit quelles sont les policies assignées à son site. Mais s’il n’y a pas de policy obligatoires, on voit qu’on peut sélectionner « Opt-out » ce qui ne va rien faire (ne rien supprimer).

// Comment ça marche
On ne peut avoir qu’une seul policy par site. Une seule règle est active à la fois pour les bibliothèques de documents dans un site.
Les règles fonctionnent sur chaque document contrairement aux site policies.
Cela fonctionne uniquement sur les bibliothèques de documents.
Si une Document Deletion Policy est appliquée : les content types policies sont ignorées, les list policies sont ignorées … mais les Site policies restent actives.
Il n’y a qu’une seule Document Deletion Policy Center par tenant. Il est accessible par le compliance center. On ne peut pas en créer un 2ème. Il faut déléguer les permissions aux compliance officers.
Elle montre des exemples pour illustrer ce qu’elle vient d’expliquer.
Chose à savoir, si une policy est appliquée à une collection de sites, elle est appliquée à tous les sous-sites qu’elle contient.

// Exchange retention policies
Ok, on va parler des policies pour Exchange.
Elle montre l’exemple simple que sur un mail elle peut appliquer une policy qui dit qu’elle supprime ce mail après 1 mois d’existence.
Au delà de ça, il y a l’utilisation du eDiscovery Center.
Elle re-explique l’utilisation du eDiscovery en ce qui concerne Exchange, avec notamment la fonctionnalité de in-place records. Pour rappel, cela était déjà présenté en 2012, c’est le fait d’utiliser la recherche pour retrouver le contenu sur un sujet donné (ça c’est eDiscovery) et en stocker une copie sur le site eDiscovery center (ça c’est le in-place records). Cela permet en cas de suppression du site d’origine, de garder une copie en backup en cas de centralisation de données dans le cadre légal notamment.
Une nouveauté permet de stocker les données importantes.

// DEMO : eDiscovery in place hold
Elle va dans un eDiscovery center et va dans son in-place policy.
Elle va sur son compliance center, avec eDiscovery center, où dans le filtre on peut classifier son contenu avec ClassificationType en se basant sur l’index.
Dans son compliance center, elle crée dans Archive, une policy. Elle va rechercher dans les sites et mailbox, sélectionne la boite d’un monsieur. en plus elle ajoute un team site. Elle configure qu’elle garde son contenu infiniment ou bien sélectionne 1 mois. Et valide.
Ainsi elle a créé une une hold policy qui va garder le contenu concernant un sujet important.

// Comment ça marche : In-place hold
La préservation d’éléments fonctionne comme un évent receiver sur un item où sur la suppression il vérifie si le contenu doit être préservé et le fait le cas échéant. Sur la modification il change la date de préservation.
Les administrateurs ne peuvent pas supprimer les données ni les sites qui contiennent les données in-hold.

Christian

[SPC14] What’s new in workflow for SharePoint online

Mail de Fabien  : Session par Tim McConnell Program Manager Office

// pré-session
Je suis donc a la session dont Christian parle (si vous avez lu son post précèdent).
A priori, on va voir des nouveautés dans les modèles de workflows sur O365.

// résumé
Il nous montre effectivement des choses toutes nouvelles :
• Debugger des workflows SPO
• Content type filtered associations
• integrated workflow apps

// debugger des workflows SPO
Jusqu’à présent, pas de possibilité de de debugger un workflow sur online. Le debugging se fait sur un développer site dans O365. Pas besoin de VM se fou avec SP.
Ca y est, on va pouvoir !
Dans les settings du projet dans Visual studio, il suffit de cocher 2 checkboxes pour permettre le debugging. Il nous fait la démo dans VS. Techniquement Visual studio va se connecter au service bus Azure.

C’est disponible dès aujourd’hui.

// content type filtered associations
Scenario : 1 librairie avec plusieurs content types. Il fait un liste workflow dans SPD.

Une nouveauté dans les options de démarrage pour cibler un content type ! Le WF n’apparait alors pas dans la liste de WF lorsque ce n’est pas le CType ciblé.

// integrated workflow apps
L’idée est de rendre des workflow développés dans des Apps disponibles dans n’importe quelle liste, pas que dans celles de l’app.

Démo :
Il déploie une app dans son site de développement.
Il va maintenant dans une librairie de documents, il y ajoute un workflow et il peux choisir l’app d’où provient le workflow. On peut donc packager un wf dans une app et l’utiliser partout.

C’est maintenant la nouvelle façon de déployer les workflows.

Fabien