<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Le Post de MCNEXT</title>
	<atom:link href="http://mcnextpost.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mcnextpost.com</link>
	<description>Les articles des consultants de MCNEXT</description>
	<lastBuildDate>Wed, 15 May 2013 14:54:05 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='mcnextpost.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/524ba71e601bc681a37314df0161dd0a?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Le Post de MCNEXT</title>
		<link>http://mcnextpost.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://mcnextpost.com/osd.xml" title="Le Post de MCNEXT" />
	<atom:link rel='hub' href='http://mcnextpost.com/?pushpress=hub'/>
		<item>
		<title>Focus sur SQL CE for Windows Phone</title>
		<link>http://mcnextpost.com/2013/05/15/focus-sql-ce-windows-phone/</link>
		<comments>http://mcnextpost.com/2013/05/15/focus-sql-ce-windows-phone/#comments</comments>
		<pubDate>Wed, 15 May 2013 14:54:02 +0000</pubDate>
		<dc:creator>Romain Lécole</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[Pole .NET]]></category>
		<category><![CDATA[Mango]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Windows]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL CE]]></category>
		<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[Windows Phone 7]]></category>
		<category><![CDATA[Windows Phone 7.5]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1813</guid>
		<description><![CDATA[Introduction Avec le déploiement de Windows Phone 7.5 (Mango), une nouvelle fonctionnalité très attendue est venue enrichir l&#8217;environnement de développement sur Windows Phone 7 : la base de données locale. Depuis son lancement, de nombreux développeurs se sont heurtés à des problèmes de performance en utilisant cette version de SQL Compact Edition spécialement dédiée à Windows Phone. Cet article vise à rassembler et à organiser un certain nombre d&#8217;astuces et de bonnes pratiques glanées sur internet dans [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1813&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div>
<h2>Introduction</h2>
</div>
<div>
<p>Avec le déploiement de Windows Phone 7.5 (Mango), une nouvelle fonctionnalité très attendue est venue enrichir l&rsquo;environnement de développement sur Windows Phone 7 : la base de données locale.</p>
</div>
<div>
<p>Depuis son lancement, de nombreux développeurs se sont heurtés à des problèmes de performance en utilisant cette version de SQL Compact Edition spécialement dédiée à Windows Phone.</p>
</div>
<div>
<p>Cet article vise à rassembler et à organiser un certain nombre d&rsquo;astuces et de bonnes pratiques glanées sur internet dans le but de tirer le meilleur de cette base en terme de performance.</p>
</div>
<div>
<h2>Bref historique de SQL Compact Edition for Windows Phone</h2>
</div>
<div>
<p>Initialement disponible et éprouvé sur Windows mobile 6.5 , SQL CE Mobile brillait par son absence sur Windows Phone 7.</p>
</div>
<p>Plusieurs raisons pouvaient expliquer une telle situation :</p>
<ul>
<li>Véritable volonté de réduire au maximum le stockage de grande quantité de données sur le téléphone au profit de synchronisation avec serveur distants?</li>
<li>Manque de temps à l&rsquo;issue du <a href="http://blogs.msdn.com/b/e7/archive/2008/08/18/windows_5f00_7_5f00_team.aspx" target="_blank">gigantesque chantier</a> qui a mené MS à concevoir Windows Phone 7 en un peu plus d&rsquo;un an seulement?</li>
</ul>
<div>
<p>Quelles qu&rsquo;en soient les raisons, le besoin s&rsquo;est rapidement fait sentir pour le développement d&rsquo;applications en tout genre et la communauté de développeurs Windows Phone s&rsquo;est rapidement mobilisée pour proposer des solutions.</p>
</div>
<div>
<p>En voici une liste non exhaustives :</p>
</div>
<div>
<p><a href="http://winphone7db.codeplex.com/" target="_blank">WinPhone7Db</a>, <a href="http://mobileworld.appamundi.com/blogs/andywigley/archive/2010/06/07/perst-a-database-for-windows-phone-7-silverlight.aspx" target="_blank">Perst</a>, <a href="http://sqlitewindowsphone.codeplex.com/" target="_blank">SQLite for Windows Phone</a>, <a href="http://siaqodb.com/?p=202" target="_blank">siaqodb</a>, <a href="http://www.kellermansoftware.com/p-43-ninja-net-database-pro.aspx" target="_blank">Ninja Database</a>, <a href="http://rapidrepository.codeplex.com/releases/view/57774" target="_blank">Rapid Repository</a> et le plus célèbre <a href="http://sterling.codeplex.com/" target="_blank">Sterling</a>.</p>
</div>
<div>
<p>La mise à disposition de SQL CE for Windows Phone a sonné le glas de bon nombre de ces projets. En effet, l&rsquo;intérêt de solutions managées semblent limité face à ce port natif de SQL CE 3.5 spécialement conçu pour Windows Phone et officiel qui plus est.</p>
<h2>Des alternatives sur Windows Phone 7?</h2>
</div>
<div>
<p>Pour autant et à l&rsquo;image de Sterling, les développements et la popularisation de certains projets se sont poursuivis car ils se sont démarqués pour des usages bien particuliers.</p>
</div>
<div>
<p>Sterling avec son orientation NoSQL et le soin tout particulier apporté à l&rsquo;optimisation des opérations de sérialisation / désérialisation se distingue par exemple par sa simplicité d&rsquo;utilisation et ses performances en lecture.</p>
</div>
<div>
<p>Néanmoins sur Windows Phone 7 et parmi les solutions existantes, SQL CE de par son implémentation native parait être le choix le plus adapté lorsqu&rsquo;il s&rsquo;agit de travailler sur de grande quantité de données à la fois en lecture et en écriture.</p>
</div>
<div>
<p>Pour une comparaison entre SQL CE for Windows Phone et Sterling, rendez vous à cette <a href="http://www.maxpaulousky.com/blog/archive/2011/07/27/windows-phone-mango-db-engines-performance-testing.aspx" target="_blank">adresse</a>.</p>
</div>
<div>
<h2>Astuces et bonnes pratiques générales</h2>
</div>
<div>
<h4>Gardez un œil sur les requêtes soumises à la base</h4>
</div>
<div>
<p>L&rsquo;une des première surprise rencontrée lors de l&rsquo;utilisation de SQL CE for Windows Phone est que l&rsquo;exécution directe de Transact-SQL n&rsquo;est pas supporté.</p>
</div>
<div>
<p>Le recours à LINQ to SQL sur Windows Phone est donc obligatoire pour communiquer avec sa base de données locale relationnelle. Ce dernier a la responsabilité de traduire les requêtes de LINQ vers Transact-SQL et de matérialiser les résultats retournés par la base.</p>
</div>
<div>
<p>Pour éviter l&rsquo;effet boîte noire, il est possible de logger les requêtes générées par LINQ to SQL et soumises à la base.</p>
</div>
<div>
<p>Pour ce faire, tout se joue au niveau de l&rsquo;objet DataContext qui comporte une propriété Log. Si cette dernière est affectée à un StreamWriter, toute l&rsquo;activité du DataContext concerné sera loggée par son intermédiaire.</p>
</div>
<pre class="brush: csharp; title: ; notranslate">
using (var context = new MyDataContext(MyDataContext.DBConnectionString))
using (context.Log = new StreamWriter(IsolatedStorageFile.GetUserStoreForApplication().CreateFile(&quot;logs.txt&quot;)))
{
    // Ecrivez ici les insert, update, delete dont vous avez besoin...
    context.SubmitChanges();
}
</pre>
<div>
<p>Il ne vous reste plus qu&rsquo;à récupérer le fichier de log de votre émulateur ou téléphone vers votre PC à l&rsquo;aide d&rsquo;outils de développement spécifiques tels que <a href="http://isostorespy.codeplex.com/" target="_blank">IsoStorageSpy </a>ou encore <a href="http://wptools.codeplex.com/" target="_blank">Windows Phone Power Tools</a>.</p>
</div>
<div>
<h4>Chiffrez votre base dégrade les performances</h4>
</div>
<div>
<p>SQL CE for Windows Phone supporte le chiffrement des données contenues, il vous suffit d&rsquo;ajouter le paramètre Password dans votre connection string. Mais n&rsquo;oubliez pas que cette sécurité a un prix en terme de performance : des opérations supplémentaires de chiffrement et déchiffrement viendront respectivement s&rsquo;ajouter à chaque opération d&rsquo;écriture et de lecture en base.</p>
</div>
<div>
<h4>Maitrisez la durée de vie de votre DataContext</h4>
</div>
<div>
<div>Pour faire face aux problèmes de performance rencontrés avec SQL CE for Windows Phone, le DataContext présente un atout majeur  : son cache.  Les résultats des requêtes effectuées avec un DataContext donné sont conservés et réutilisés par la suite pour limiter les allers et retours avec la base. Ce mécanisme permet ainsi d&rsquo;accélérer les prochaines requêtes pointant sur des données déjà chargées en mémoire.  Pour résumer, plus le cache de votre DataContext contient d&rsquo;objets, plus les chances sont grandes pour que les données que vous souhaitez obtenir soient déjà chargées en mémoire, plus les résultats vous seront retournés rapidement.  Afin de tirer parti au maximum de ce cache, la tentation est donc grande de ne créer qu&rsquo;une seule instance de DataContext pour l&rsquo;ensemble de votre application.</div>
<div>Cependant, il peut être intéressant de rappeler certaines contraintes qui s&rsquo;appliquent à notre cher DataContext :</div>
<ul>
<li>Votre application Windows Phone 7 ne peut occuper plus de 90 mo en mémoire. A cause de son cache, votre instance de DataContext pourrait bien dépasser ce quota si vous n&rsquo;y prenez pas garde.</li>
<li>Une instance de DataContext n&rsquo;est pas thread-safe, les accès concurrents produisent une InvalidOperationException. En revanche, SQL CE supporte les accès concurrents de plusieurs DataContexts différents.</li>
</ul>
<div>Ces limitations ne plaident pas en faveur d&rsquo;une instance de DataContext unique. Les pistes plus pérennes pourraient être les suivantes :</div>
<ul>
<li>Suivre les bonnes pratiques LINQ to SQL et Entity Framework : Regroupez et encapsulez les accès à la base dans des classes et des méthodes dédiées en fonction de vos besoins techniques et/ou fonctionnels. Instanciez et détruisez un nouveau DataContext dans chaque méthode (avec un using), ils sont conçus pour avoir une durée de vie assez courte. Pour plus d&rsquo;informations, voir <a href="http://msdn.microsoft.com/fr-fr/library/system.data.linq.datacontext.aspx" target="_blank">ici</a>.</li>
<li>Définir des instances de DataContext pour des usages bien spécifiques et garantir un accès synchronisé à chacune d&rsquo;entre elle.</li>
</ul>
<div>Il n&rsquo;existe pas de solution idéale universelle, tout dépend de vos besoins et de la complexité de votre application.</div>
<h4>Veillez à toujours effectuer vos appels à la base sur un thread en arrière plan</h4>
<div>
<p>Ce n&rsquo;est certainement ni la première, ni la dernière fois que vous le lisez : Il est important de ne pas bloquer votre thread UI avec des traitements lourds.</p>
</div>
<div>
<p>Ceci a pour conséquence de bloquer l&rsquo;affichage de votre application, comportement qui mène à de nombreux points négatifs :</p>
</div>
<ul>
<li>Utilisateurs frustrés ne pas savoir ce qu&rsquo;il se passe</li>
<li>Impression générale de manque de finitions</li>
<li>Clicks compulsifs jusqu&rsquo;à ce que &quot;quelque chose se passe&quot; qui empirent la situation!</li>
</ul>
<div>
<p>De plus pour les traitements massifs sur la base, il semblerait que l&rsquo;utilisation d&rsquo;un thread en arrière plan accélère assez significativement les choses, voir ce <a href="http://www.microsofttranslator.com/bv.aspx?from=&amp;to=en&amp;a=http://geeks.ms/blogs/jyeray/archive/2011/12/21/windows-phone-7-5-inserciones-masivas-en-sql-server-ce-vs-sql-server-vs-mongodb-y-ii.aspx" target="_blank">lien</a>.</p>
</div>
<h2>Améliorer les temps d&rsquo;exécution en lecture</h2>
<div>
<h4>Stockez sous forme de blobs lorsque que la situation s&rsquo;y prête</h4>
</div>
<div>
<p>Dans certains cas, il est plus rentable de stocker un bloc entier de données sérialisées (en XML ou binaire) directement en base sous la forme d&rsquo;un blob dans une colonne de type text, varbinary, binary par exemple.</p>
</div>
</div>
<div>
<p>Cela permet de limiter autant le nombre de requêtes et d&rsquo;allers et retours avec le base que la complexité et la quantité de données à requêter sont grandes.</p>
</div>
<div>
<h4>Créez des index sur les propriétés utilisées fréquemment</h4>
</div>
<div>
<p>Un index est automatiquement crée pour chaque colonne de la base définie en tant que clé primaire. Mais vous pouvez également créer vos propres index sur les propriétés souvent utilisées dans vos requêtes LINQ, y compris celles utilisées pour trier les résultats des requêtes.</p>
</div>
<pre class="brush: csharp; title: ; notranslate">
[Index(Column=”OrderID ASC, Quantity DESC”)]
</pre>
<div>
<h4>Compilez vos requêtes LINQ</h4>
</div>
<div>
<p>Lors de chaque exécution de requêtes LINQ, LINQ to SQL traduit l&rsquo;arbre d&rsquo;expression défini vers le code Transact-SQL correspondant. Ce mode de fonctionnement s&rsquo;avère peu optimal pour les requêtes LINQ qui sont exécutées de nombreuses fois au cours de la durée de vie de l&rsquo;application.</p>
</div>
<div>
<p>Pour éviter que cette opération de traduction ne soit exécutée encore et encore, il est possible de compiler votre requête LINQ à l&rsquo;aide de CompiledQuery.Compile.</p>
</div>
<div>
<p>Cette méthode produit une requête Transact-SQL paramétrée qu&rsquo;il vous sera possible de réutiliser avec des paramètres d&rsquo;entrés différents par l&rsquo;intermédiaire de la Func retournée.</p>
</div>
<div>
<h4>Effectuez les jointures par vos propres moyens?</h4>
</div>
<div>
<p>Cela peut sembler étrange, mais lorsque l&rsquo;on travaille avec de grandes volumétries, récupérer les données dont vous avez besoin avec des requêtes très simples puis effectuer les jointures par ses propres moyens se révèle bien souvent plus efficace que de laisser faire SQL CE. A condition bien sûr, que la quantité de données ne soit pas excessive! (quota de 90 mo par application sur Windows Phone 7)</p>
</div>
<div>
<p>Le <a href="http://blog.arsanth.com/index.php/2011/06/06/some-linq-to-sql-ce-performance-tips-for-wp7/" target="_blank">post</a> suivant y fait d&rsquo;ailleurs référence dans sa conclusion.</p>
</div>
<h2>Améliorer les temps d&rsquo;exécution en écriture</h2>
<div>
<h4>Ajoutez la colonne RowVersion pour améliorer les updates et deletes</h4>
</div>
<div>
<p>Avant d&rsquo;effectuer des updates ou des deletes, LINQ to SQL doit s&rsquo;assurer qu&rsquo;il n&rsquo;y pas de conflits dus à des accès concurrentiels.</p>
</div>
<div>
<p>Afin de vérifier que les entités reflètent bien les valeurs présentes en base en moment du SubmitChanges, ces opérations sont effectuées avec une clause where supplémentaire qui vérifie les valeurs de chacune des colonnes. Cette dernière alourdit donc autant les requêtes que la table concernée contient de colonnes.</p>
</div>
<div>
<p>Pour éviter ces traitements supplémentaires, il est possible de définir une colonne de type RowVersion.</p>
</div>
<pre class="brush: csharp; title: ; notranslate">
[Column(IsVersion=true)]
private Binary _version;
</pre>
<div>
<p>Lorsqu&rsquo;elle est présente, LINQ to SQL se base uniquement sur la valeur contenue dans ce champ pour déterminer si une entrée a changé ou non et la clause where supplémentaire, devenue inutile, disparaît.</p>
</div>
<div>
<p>Pour plus d&rsquo;informations sur le sujet, rendez-vous <a href="//erikej.blogspot.fr/2012/02/windows-phone-local-database-tip.html" target="_blank">ici</a> et <a href="//erikej.blogspot.fr/2012/04/windows-phone-local-database-tip.html" target="_blank">ici</a>.</p>
</div>
<div>
<h4>Quelques pistes pour améliorer les performances des inserts</h4>
<p>Pour optimiser un scénario dans lequel une grande quantité de données doit être insérée en base vous pouvez utiliser le paramètre &quot;Max Buffer Size&quot;. Par défaut, sa valeur est de 384 ko et 5120 ko au maximum. Ce paramètre indique à la base la plus grande quantité de données qu&rsquo;elle peut stocker en mémoire avant de l&rsquo;écrire sur le disque, 1024 KB semble être un bon compromis. Attention toutefois à ce pas trop l&rsquo;augmenter, au delà d&rsquo;une certaine valeur, cela n&rsquo;aura plus d&rsquo;impacts positifs mais négatifs! Pour plus d&rsquo;informations voir cet <a href="http://erikej.blogspot.fr/2011/12/windows-phone-local-database-tip-batch.html" target="_blank">article</a>.</p>
<p>La présence de la colonne RowVersion fait gagner du temps sur les opérations d&rsquo;updates et de deletes. A l&rsquo;inverse, dans le cas d&rsquo;un insert, RowVersion constitue une donnée de plus à insérer en base et à générer par LINQ to SQL. Si vous souhaitez privilégier les inserts sur les updates/deletes et les accélérer sensiblement, supprimez cette colonne. A noter que cette optimisation ne concerne à nouveau que les cas d&rsquo;insertions massifs de données. Pour plus d&rsquo;informations voir ce <a href="http://www.microsofttranslator.com/bv.aspx?from=&amp;to=en&amp;a=http://geeks.ms/blogs/jyeray/archive/2011/12/21/windows-phone-7-5-inserciones-masivas-en-sql-server-ce-vs-sql-server-vs-mongodb-y-ii.aspx" target="_blank">post traduit</a>.</p>
<p>Privilégiez l&rsquo;utilisation de InsertAllOnSubmit à InsertOnSubmit pour de nombreux inserts consécutifs</p>
<p>Enfin, si vous cherchez à injecter rapidement une grande quantité de données dans votre base, sachez qu&rsquo;il existe un portage de SqlBulkCopy pour Windows Phone 7.5, vous le trouverez à cette <a href="http://sqlcebulkcopy.codeplex.com/" target="_blank">adresse</a>.</p>
</div>
<h2>Minimiser la consommation mémoire</h2>
<div>
<h4>Désactivez le suivi de modifications lorsqu&rsquo;il n&rsquo;est pas utile</h4>
</div>
<div>
<p>Par défaut, vos instances de DataContext sont configurées de manière à ce qu&rsquo;une copie de toutes les entités issues de la base soit effectuée et conservée. Ces copies originales sont utilisées par la suite lors de l&rsquo;appel à la méthode SubmitChanges pour déterminer ce qui a changé et générer les requêtes Transact-SQL adéquates (insert, update, delete etc&#8230;).</p>
</div>
<div>
<p>Ce mécanisme peut être désactivé pour les scénarios dans lesquels les données sont consultables et non modifiables et ainsi économiser la mémoire utilisée par ces copies. Pour ce faire, assignez false à la propriété <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/system.data.linq.datacontext.objecttrackingenabled(v=vs.105).aspx">ObjectTrackingEnabled</a> de votre DataContext courant.</p>
</div>
<div>
<h4>Implémentez l&rsquo;interface INotifyPropertyChanging</h4>
</div>
<div>
<p>L&rsquo;interface INotifyPropertyChanging permet de modifier quelque peu la manière dont LINQ to SQL assure le suivi des modifications afin de réduire l&rsquo;empreinte mémoire de votre application.</p>
</div>
<div>
<p>Sans implémentation de cette interface sur vos objet POCOs liés à LINQ to SQL, ce dernier est contraint de dupliquer toutes les entités lues à partir de la base de données afin d&rsquo;en conserver une copie originale. Lors de l&rsquo;appel à la méthode SubmitChanges, il détermine si une entité a changé et qu&rsquo;est-ce qui a changé en comparant ses valeurs actuelles avec celles de sa copie originale.</p>
</div>
<div>
<p>En revanche, si l&rsquo;interface INotifyPropertyChanging est implémentée, LINQ to SQL est directement informé de la modification des entités et seules ces dernières sont dupliquées. Ce qui réduit grandement le nombre de copies effectuées.</p>
</div>
<div>
<h2>Conclusion</h2>
</div>
<div>
<p>Après s&rsquo;être longtemps fait désirée, Mango apporte enfin une solution de stockage de données native sur Windows Phone avec une version SQL CE spécialement dédiée à Windows Phone.</p>
</div>
<div>
<p>Malgré ses défauts et certaines alternatives viables, SQL CE for Windows Phone constitue une solution particulièrement adaptée pour les applications amenées à travailler sur de grandes quantités de données à la fois en lecture et en écriture sur Windows Phone 7. D&rsquo;autant qu&rsquo;iI existe bon nombres de solutions et d&rsquo;astuces pour améliorer les temps d&rsquo;exécutions ainsi que l&rsquo;empreinte mémoire de l&rsquo;indissociable couple SQL CE/LINQ to SQL.</p>
</div>
<div>
<p>L&rsquo;arrivée de Windows Phone 8 souffle un vent nouveau dans le domaine du stockage de données sur les appareils mobiles Microsoft. Avec la possibilité de développer directement en natif, d&rsquo;autres solutions de stockage, jouant désormais à armes égales avec SQL CE, pourraient bien faire leur apparition et représenter de très sérieuses alternatives. SQLlite for Windows Phone 8 en est déjà un exemple concret. Si vous souhaitez en savoir plus sur le sujet, je vous invite à consulter cet <a href="//blogs.windows.com/windows_phone/b/wpdev/archive/2013/03/12/using-the-sqlite-database-engine-with-windows-phone-8-apps.aspx" target="_blank">article </a>ou encore <a href="http://dotnet-redzone.blogspot.fr/2012/12/windows-phone-8-using-sqlite.html" target="_blank">celui-ci</a>.</p>
</div>
<br />Classé dans:<a href='http://mcnextpost.com/category/non-classe/'>Non classé</a>, <a href='http://mcnextpost.com/category/pole-net/'>Pole .NET</a> Tagged: <a href='http://mcnextpost.com/tag/mango/'>Mango</a>, <a href='http://mcnextpost.com/tag/microsoft/'>Microsoft</a>, <a href='http://mcnextpost.com/tag/microsoft-windows/'>Microsoft Windows</a>, <a href='http://mcnextpost.com/tag/nokia/'>Nokia</a>, <a href='http://mcnextpost.com/tag/sql/'>SQL</a>, <a href='http://mcnextpost.com/tag/sql-ce/'>SQL CE</a>, <a href='http://mcnextpost.com/tag/windows-phone/'>Windows Phone</a>, <a href='http://mcnextpost.com/tag/windows-phone-7/'>Windows Phone 7</a>, <a href='http://mcnextpost.com/tag/windows-phone-7-5/'>Windows Phone 7.5</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1813&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/05/15/focus-sql-ce-windows-phone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/66ebd5c75f1677642a9fc4654006e234?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">rlecole</media:title>
		</media:content>
	</item>
		<item>
		<title>Les Transactions dans SSIS 2012</title>
		<link>http://mcnextpost.com/2013/04/26/les-transactions/</link>
		<comments>http://mcnextpost.com/2013/04/26/les-transactions/#comments</comments>
		<pubDate>Fri, 26 Apr 2013 22:33:58 +0000</pubDate>
		<dc:creator>hkancel</dc:creator>
				<category><![CDATA[Tutorial BI]]></category>
		<category><![CDATA[Distributed Transaction Coordinator]]></category>
		<category><![CDATA[Intégration Services 2012]]></category>
		<category><![CDATA[IsolationLevel]]></category>
		<category><![CDATA[MSDTC]]></category>
		<category><![CDATA[Required]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[SSIS]]></category>
		<category><![CDATA[SSIS 2012]]></category>
		<category><![CDATA[TransactionOption]]></category>
		<category><![CDATA[Transactions]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1782</guid>
		<description><![CDATA[A quoi servent les transactions ? Les transactions sont des suites d&#8217;opérations (Insertion, Suppression, Mise à Jour…) qui font passer la base de données d&#8217;un état A (état initial avant les opérations) à un état B (après les opérations). Dans le cas où une opération échoue, la transaction permet de revenir à l’état antérieur B, c&#8217;est-à-dire avant le [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1782&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h1><b>A quoi servent les transactions ?</b></h1>
<p>Les transactions sont des suites d&rsquo;opérations (Insertion, Suppression, Mise à Jour…) qui font passer la base de données d&rsquo;un état A (état initial avant les opérations) à un état B (après les opérations).<br />
Dans le cas où une opération échoue, la transaction permet de revenir à l’état antérieur B, c&rsquo;est-à-dire avant le démarrage de la transaction.<br />
Toutes les modifications seraient dans ce cas annulées.</p>
<p>Dans l’exemple qui va suivre, nous allons voir comment mettre en place les transactions afin d’annuler des opérations opérées sur une base de données en cas d’échec.<br />
<img title="Lire la suite…" alt="" src="http://mcnextpost.wordpress.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" /><span id="more-1782"></span></p>
<h2><b>Pré-requis : Activation du service MSDTC</b></h2>
<p>Tout d&rsquo;abord, activons le service.<br />
Pour se faire, allez dans les services Windows soit par la commande <b>services.msc </b>ou soit en passant par le <b>panneau de configuration -&gt; Outils d&rsquo;administration -&gt; Services</b>.</p>
<div class="wp-caption alignnone" style="width: 640px"><a title="Type de démarrage du service MSDTC" href="http://mcnextpost.files.wordpress.com/2013/04/distributed-transaction-coordinator-services.png"><img title="Type de démarrage du service MSDTC" alt="Type de démarrage du service MSDTC" src="http://mcnextpost.files.wordpress.com/2013/04/distributed-transaction-coordinator-services.png?w=630&#038;h=323" width="630" height="323" /></a><p class="wp-caption-text">Type de démarrage du service MSDTC</p></div>
<p>Sélectionnez &quot;<b>Coordinateur de transaction distribuées</b>&quot; (Distributed Transaction Coordinator).</p>
<p>Dans le cas présent, on peut noter que le service est en démarrage manuel.<br />
Pour le mettre en automatique à chaque démarrage de la machine :<br />
<strong>1-</strong> Allez dans les propriétés<br />
<strong>2-</strong> Changez le type de démarrage</p>
<div class="wp-caption alignnone" style="width: 431px"><a href="http://mcnextpost.files.wordpress.com/2013/04/type-de-dc3a9marrage-automatique.png"><img title="Type de démarrage Automatique" alt="Sélection du type de démarrage automatique" src="http://mcnextpost.files.wordpress.com/2013/04/type-de-dc3a9marrage-automatique.png?w=421&#038;h=519" width="421" height="519" /></a><p class="wp-caption-text">Type de démarrage Automatique</p></div>
<p><strong>3-</strong> Cliquez sur le bouton OK, pour valider la modification.</p>
<p>Nous obtenons :</p>
<div class="wp-caption alignnone" style="width: 633px"><a href="http://mcnextpost.files.wordpress.com/2013/04/dc3a9marrage-automatique-du-service-msdtc.png"><img title="Démarrage Automatique du service MSDTC" alt="Démarrage Automatique du service MSDTC" src="http://mcnextpost.files.wordpress.com/2013/04/dc3a9marrage-automatique-du-service-msdtc.png?w=623&#038;h=52" width="623" height="52" /></a><p class="wp-caption-text">Démarrage Automatique du service MSDTC</p></div>
<p><strong>4-</strong> Maintenant, cliquez-droit sur le service puis démarrez-le.</p>
<div class="wp-caption alignnone" style="width: 352px"><a href="http://mcnextpost.files.wordpress.com/2013/04/dc3a9marrage-du-sevice-msdtc.png"><img title="Démarrage du sevice MSDTC" alt="Démarrage du sevice MSDTC" src="http://mcnextpost.files.wordpress.com/2013/04/dc3a9marrage-du-sevice-msdtc.png?w=342&#038;h=245" width="342" height="245" /></a><p class="wp-caption-text">Démarrage du sevice MSDTC</p></div>
<p>Une fois le démarrage terminé, l’état du service est  “<em>En cours d’éxécution</em>”.</p>
<div class="wp-caption alignnone" style="width: 572px"><a href="http://mcnextpost.files.wordpress.com/2013/04/service-msdtc-en-cours-d-execution.png"><img title="Service MSDTC en cours d'execution" alt="Service MSDTC en cours d'execution" src="http://mcnextpost.files.wordpress.com/2013/04/service-msdtc-en-cours-d-execution.png?w=562&#038;h=54" width="562" height="54" /></a><p class="wp-caption-text">Service MSDTC en cours d&rsquo;execution</p></div>
<h2></h2>
<h2><strong>Pratique : Mise en place d&rsquo;une transaction</strong></h2>
<p><b>1- Création de la table stgCustomer</b></p>
<p>Tout d’abord, exécutez dans SSMS, le script de création de la table stgCustomer :</p>
<blockquote><p><span style="color:#0000ff;">USE<span style="color:#008080;"> </span></span><span style="color:#008080;">[AdventureWorks2012]</span><br />
<span style="color:#0000ff;">GO</span></p>
<p><span style="color:#0000ff;">CREATE TABLE</span> <span style="color:#008080;">[dbo].[stgCustomer]</span>(<br />
<span style="color:#008080;">[CustomerID] [int]</span> NULL,<br />
<span style="color:#008080;">[PersonID] [int]</span> NULL,<br />
<span style="color:#008080;">[StoreID] [int]</span> NULL,<br />
<span style="color:#008080;">[TerritoryID] [int]</span> NULL,<br />
<span style="color:#008080;">[AccountNumber] [varchar]</span>(20) NULL,<br />
<span style="color:#008080;">[ModifiedDate] [datetime]</span> NULL<br />
) <span style="color:#0000ff;">ON </span><span style="color:#008080;">[PRIMARY]</span><br />
<span style="color:#0000ff;">GO</span></p></blockquote>
<p><b><a href="http://mcnextpost.files.wordpress.com/2013/04/note.png"><img alt="note" src="http://mcnextpost.files.wordpress.com/2013/04/note.png?w=31&#038;h=41" width="31" height="41" /></a><span style="color:#008000;">Note :</span></b> <i>Cette table est tout simplement la copie simplifiée de la table Sales.Customer de la base AdventureWorks2012.</i><i><br />
</i><i>Nous allons insérer les données de la table Sales.Customer dans cette nouvelle table.</i></p>
<p><b>2- Création du package Transaction.dtsx</b></p>
<p>Dans SSDT (<em>Sql Server Data Tools</em>), Créez un nouveau package et renommez le<strong> Transaction.dtsx</strong>.<br />
Puis double-cliquez pour l’ouvrir.</p>
<div class="wp-caption alignnone" style="width: 211px"><a href="http://mcnextpost.files.wordpress.com/2013/04/crc3a9ation-du-package-transaction-dtsx.png"><img title="Création du package transaction.dtsx" alt="Création du package transaction.dtsx" src="http://mcnextpost.files.wordpress.com/2013/04/crc3a9ation-du-package-transaction-dtsx.png?w=201&#038;h=163" width="201" height="163" /></a><p class="wp-caption-text">Création du package transaction.dtsx</p></div>
<dl id="attachment_1672">
<dd></dd>
</dl>
<p><b>3- Création de la connexion OLE DB</b></p>
<p>Etant donné que nous aurons besoin d’utiliser la table que nous venons de créer,<br />
nous allons créer une connexion à la base AdventureWork2012.</p>
<p><b>a. </b>Pour cela, faite un clique-droit sur le gestionnaire de connexion (Connection Managers) et sélectionnez “<b>New OLE DB Connection</b>”.<br />
<i><br />
</i></p>
<div class="wp-caption alignnone" style="width: 523px"><a href="http://mcnextpost.files.wordpress.com/2013/04/sc3a9lection-de-la-connexion-ole-db.png"><img title="Sélection de la connexion OLE DB" alt="Sélection de la connexion OLE DB" src="http://mcnextpost.files.wordpress.com/2013/04/sc3a9lection-de-la-connexion-ole-db.png?w=513&#038;h=300" width="513" height="300" /></a><p class="wp-caption-text">Sélection de la connexion OLE DB</p></div>
<p><b>b.</b> Dans la fenêtre suivante cliquez sur le bouton “New” pour créer la connexion.</p>
<div class="wp-caption alignnone" style="width: 520px"><a href="http://mcnextpost.files.wordpress.com/2013/04/crc3a9ation-de-la-connexion-ole-db.png"><img title="Création de la connexion OLE DB" alt="Création de la connexion OLE DB" src="http://mcnextpost.files.wordpress.com/2013/04/crc3a9ation-de-la-connexion-ole-db.png?w=510&#038;h=428" width="510" height="428" /></a><p class="wp-caption-text">Création de la connexion OLE DB</p></div>
<p><b>c.</b> Renseignez le nom de votre serveur (Server Name) et sélectionnez le nom de votre base dans la liste déroulante.</p>
<div class="wp-caption alignnone" style="width: 510px"><a href="http://mcnextpost.files.wordpress.com/2013/04/configuration-de-la-connexion-ole-db.png"><img title="Configuration de la connexion OLE DB" alt="Configuration de la connexion OLE DB" src="http://mcnextpost.files.wordpress.com/2013/04/configuration-de-la-connexion-ole-db.png?w=500&#038;h=513" width="500" height="513" /></a><p class="wp-caption-text">Configuration de la connexion OLE DB</p></div>
<p><i> </i><b>d.</b> Cliquez sur le bouton <b>OK</b> pour terminer.</p>
<p>Maintenant, vous remarquerez que la connexion à bien été créée.<br />
En effet dans la partie “<b>Data connections</b>” et “<b>Data connection properties</b>”, on retrouve les informations essentielles.</p>
<div class="wp-caption alignnone" style="width: 514px"><a href="http://mcnextpost.files.wordpress.com/2013/04/dc3a9tails-de-la-connexion-ole-db-localhost-adventureworks2012.png"><img title="Détails de la connexion OLE DB localhost.AdventureWorks2012" alt="Détails de la connexion OLE DB localhost.AdventureWorks2012" src="http://mcnextpost.files.wordpress.com/2013/04/dc3a9tails-de-la-connexion-ole-db-localhost-adventureworks2012.png?w=504&#038;h=429" width="504" height="429" /></a><p class="wp-caption-text">Détails de la connexion OLE DB localhost.AdventureWorks2012</p></div>
<p><b>e.</b> Cliquez sur le bouton <b>OK</b> pour terminer.</p>
<p><b><b><a href="http://mcnextpost.files.wordpress.com/2013/04/note.png"><img alt="note" src="http://mcnextpost.files.wordpress.com/2013/04/note.png?w=31&#038;h=41" width="31" height="41" /></a><span style="color:#008000;"> </span></b><span style="color:#008000;">Note :</span></b> <i>Dans le gestionnaire de connexion, la connexion est maintenant présente<br />
(<i>Connexion localhost.AdventureWorks2012)</i></i></p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/04/connexion-localhost-adventureworks2012.png"><img alt="Connexion localhost.AdventureWorks2012" src="http://mcnextpost.files.wordpress.com/2013/04/connexion-localhost-adventureworks2012.png?w=178&#038;h=48" width="178" height="48" /></a></p>
<p><b>4- Suppression des données de la table stgCustomer : Execute Sql Task</b></p>
<p><b>a.</b> Insérer le composant <b>Exécute SQL Task</b> dans le flux de contrôle (Control Flow).<br />
<b>b.</b> Renommez le <b>SQLT &#8211; Truncate table stgCustomer.<br />
</b><i></i></p>
<div class="wp-caption alignnone" style="width: 247px"><a href="http://mcnextpost.files.wordpress.com/2013/04/composant-execute-sql-task.png"><img title="Composant Execute SQL Task" alt="Composant Execute SQL Task" src="http://mcnextpost.files.wordpress.com/2013/04/composant-execute-sql-task.png?w=237&#038;h=44" width="237" height="44" /></a><p class="wp-caption-text">Composant Execute SQL Task</p></div>
<p><b>c. </b>Double-cliquez pour l’éditer et renseignez les champs suivants :</p>
<p>- Connection : le nom de la connexion à utiliser. <span style="color:#ff0000;">(1)</span><br />
- SQLStatement : la requête à exécuter =&gt; <b><span style="color:#0000ff;">TRUNCATE TABLE </span><span style="color:#008080;">stgCustomer</span></b>. <span style="color:#ff0000;">(2)</span></p>
<div class="wp-caption alignnone" style="width: 583px"><a href="http://mcnextpost.files.wordpress.com/2013/04/configuration-de-l-execute-sql-task.png"><img title="Configuration de l’Execute SQL Task" alt="Configuration de l’Execute SQL Task" src="http://mcnextpost.files.wordpress.com/2013/04/configuration-de-l-execute-sql-task.png?w=573&#038;h=489" width="573" height="489" /></a><p class="wp-caption-text">Configuration de l’Execute SQL Task</p></div>
<p><b>d.</b> Cliquez sur le bouton <b>OK</b> pour terminer.</p>
<p><b>5- Alimentation de la table stqCustomer<br />
</b><br />
<b>a.</b> Insérez un “<b>Sequence Conteneur</b>”, et reliez les par une contrainte de précédence “Succes” (<span style="color:#008080;">flèche verte</span>).</p>
<div class="wp-caption alignnone" style="width: 266px"><a href="http://mcnextpost.files.wordpress.com/2013/04/mise-en-place-de-la-contrainte-de-prc3a9cc3a9dence-succc3a8s.png"><img title="Mise en place de la contrainte de précédence succès" alt="Mise en place de la contrainte de précédence succès" src="http://mcnextpost.files.wordpress.com/2013/04/mise-en-place-de-la-contrainte-de-prc3a9cc3a9dence-succc3a8s.png?w=256&#038;h=206" width="256" height="206" /></a><p class="wp-caption-text">Mise en place de la contrainte de précédence succès</p></div>
<p><b>b.</b> Dans le conteneur, insérez un composant “<b>Data Flow Task</b>” et renommer le “<b>DFT – Alim stqCustomer</b>”.<br />
<i></i></p>
<div class="wp-caption alignnone" style="width: 198px"><a href="http://mcnextpost.files.wordpress.com/2013/04/composant-data-flow-task.png"><img title="Composant Data Flow Task" alt="Composant Data Flow Task" src="http://mcnextpost.files.wordpress.com/2013/04/composant-data-flow-task.png?w=188&#038;h=46" width="188" height="46" /></a><p class="wp-caption-text">Composant Data Flow Task</p></div>
<p><b>c.</b> Double-cliquez sur le composant pour l’éditer</p>
<p>et insérez une “<b>OLEDB Source</b>” et une “<b>OLEDB Destination</b>” et renommez les respectivement “<b>SRC – Sales Customer</b>” et “<b>DEST – stgCustomer</b>”.<br />
<b><br />
d.</b> Reliez les avec un flux de donnée (<span style="color:#3366ff;">flèche bleu</span>).</p>
<div class="wp-caption alignnone" style="width: 197px"><a href="http://mcnextpost.files.wordpress.com/2013/04/source-ole-db-et-destination-ole-db.png"><img title="Source OLE DB et Destination OLE DB" alt="Source OLE DB et Destination OLE DB" src="http://mcnextpost.files.wordpress.com/2013/04/source-ole-db-et-destination-ole-db.png?w=187&#038;h=183" width="187" height="183" /></a><p class="wp-caption-text">Source OLE DB et Destination OLE DB</p></div>
<p><b>e.</b> Double-cliquez sur la source “<b>SRC – Sales.Customer</b>” pour l’éditer</p>
<p>et enseignez la connexion utilisée (celle crée précédemment), ainsi que le nom de la table source (Sales.Customer).<br />
Puis cliquez <b>OK</b> pour valider.</p>
<div class="wp-caption alignnone" style="width: 637px"><a href="http://mcnextpost.files.wordpress.com/2013/04/configuration-de-la-source-ole-db.png"><img title="Configuration de la source OLE DB" alt="Configuration de la source OLE DB" src="http://mcnextpost.files.wordpress.com/2013/04/configuration-de-la-source-ole-db.png?w=627&#038;h=542" width="627" height="542" /></a><p class="wp-caption-text">Configuration de la source OLE DB</p></div>
<p><b><b><b><a href="http://mcnextpost.files.wordpress.com/2013/04/note.png"><img alt="note" src="http://mcnextpost.files.wordpress.com/2013/04/note.png?w=31&#038;h=41" width="31" height="41" /></a><span style="color:#008000;"> </span></b></b><span style="color:#008000;">Note</span></b><span style="color:#008000;"> : </span><i>Cliquez sur le bouton “Préview” pour voir les données contenus de la table.</i></p>
<p><b>f.</b> Faites de même pour le composant de destination “<b>DEST – stgCustomer</b>”, en sélectionnant comme table de destination “<b>stgCustomer</b>”.<br />
Puis Vérifier dans le menu “Mappings” que les colonnes ont bien été reliées.<br />
Cliquez sur le bouton <b>OK</b> pour terminer.</p>
<div class="wp-caption alignnone" style="width: 625px"><a href="http://mcnextpost.files.wordpress.com/2013/04/mapping-des-champs-de-la-source-et-de-la-destination.png"><img title="Mapping des champs de la source et de la destination" alt="Mapping des champs de la source et de la destination" src="http://mcnextpost.files.wordpress.com/2013/04/mapping-des-champs-de-la-source-et-de-la-destination.png?w=615&#038;h=532" width="615" height="532" /></a><p class="wp-caption-text">Mapping des champs de la source et de la destination</p></div>
<p><b>5- Mise à jour de la table stgCustomer</b></p>
<p><b>a.</b> Retournez dans le flux de contrôle pour insérer dans le conteneur un “<b>Execute SQL Task</b>” et renommez le “<b>SQLT &#8211; Update stgCustomer</b>”.<br />
<b>b.</b> Renseignez la connexion à utilisée et la requête à exécuter.</p>
<blockquote><p><span style="color:#ff00ff;">UPDATE </span><span style="color:#008080;">stgCustomer</span><br />
<span style="color:#0000ff;">SET </span><span style="color:#008080;">CustomerID </span>= <span style="color:#ff0000;">&lsquo;MSBI&rsquo;</span>;</p></blockquote>
<p>Avec cette requête, nous allons tenter de mettre à jour le champ <b>CustomerID</b> de la table stgCustomer.</p>
<div class="wp-caption alignnone" style="width: 624px"><a href="http://mcnextpost.files.wordpress.com/2013/04/configuration-et-c3a9criture-de-la-requc3aate-update-du-comporant-execute-sql-task.png"><img title="Configuration et écriture de la requête Update du comporant Execute SQL Task" alt="Configuration et écriture de la requête Update du comporant Execute SQL Task" src="http://mcnextpost.files.wordpress.com/2013/04/configuration-et-c3a9criture-de-la-requc3aate-update-du-comporant-execute-sql-task.png?w=614&#038;h=520" width="614" height="520" /></a><p class="wp-caption-text">Configuration et écriture de la requête Update du comporant Execute SQL Task</p></div>
<p><b>c.</b> Cliquez sur le bouton <b>OK</b> pour terminer.</p>
<p><b>d. </b>Reliez le Data Flow Task et le Execute SQL Task.</p>
<p>Voici à quoi ressemble le package final.<br />
Les actions sont donc les suivantes :</p>
<p>- On vide la table stgCustomer =&gt;  SQLT- Truncate Table stgCustomer<br />
- On l’alimente à partir de la table Sales.Customer =&gt; DFT – Alim stgCustomer<br />
- On met à jour le champ CustomerID de la table stgCustomer =&gt; SQLT – Update stgCustomer</p>
<div class="wp-caption alignnone" style="width: 327px"><a href="http://mcnextpost.files.wordpress.com/2013/04/contenu-du-package.png"><img title="Contenu du package" alt="Contenu du package" src="http://mcnextpost.files.wordpress.com/2013/04/contenu-du-package.png?w=317&#038;h=344" width="317" height="344" /></a><p class="wp-caption-text">Contenu du package</p></div>
<p><i></i><br />
<b>6- Exécution du package</b></p>
<p><b>a.</b> Exécutez le package.</p>
<div class="wp-caption alignnone" style="width: 299px"><a href="http://mcnextpost.files.wordpress.com/2013/04/exc3a9cution-du-package-en-erreur.png"><img title="Exécution du package en erreur" alt="Exécution du package en erreur" src="http://mcnextpost.files.wordpress.com/2013/04/exc3a9cution-du-package-en-erreur.png?w=289&#038;h=318" width="289" height="318" /></a><p class="wp-caption-text">Exécution du package en erreur</p></div>
<p>Le package c’est terminé avec une erreur :</p>
<div class="wp-caption alignnone" style="width: 810px"><a href="http://mcnextpost.files.wordpress.com/2013/04/message-d-erreur-du-package.png"><img title="Message d'erreur du package" alt="Message d'erreur du package" src="http://mcnextpost.files.wordpress.com/2013/04/message-d-erreur-du-package.png?w=800&#038;h=80" width="800" height="80" /></a><p class="wp-caption-text">Message d&rsquo;erreur du package</p></div>
<p><span style="color:#ff0000;">[Execute SQL Task] Error: Executing the query &quot;UPDATE stgCustomer</span><br />
<span style="color:#ff0000;"> SET CustomerID = &lsquo;MSBI&rsquo;;&quot; failed with the following error: &quot;Conversion failed when converting the varchar value &lsquo;MSBI&rsquo; to data type int.&quot;. Possible failure reasons: Problems with the query, &quot;ResultSet&quot; property not set correctly, parameters not set correctly, or connection not established correctly.</span></p>
<p><b>Cause :</b> En effet dans l’UPDATE, nous avons tenté de mettre à jour CustomerID, qui est de type <b>int </b>par une valeur de type <b>String</b>.<br />
Cette erreur a été était faite volontairement et rentre dans le cadre de notre démonstration.</p>
<p><b>b.</b>  Exécutez la requête ci-dessous afin de vérifier que malgré l’erreur, la table stgCustomer a bien été alimentée.</p>
<blockquote><p><span style="color:#0000ff;">SELECT </span>*<br />
<span style="color:#0000ff;">FROM </span><span style="color:#008080;">[AdventureWorks2012].[dbo].[stgCustomer]</span></p></blockquote>
<div class="wp-caption alignnone" style="width: 494px"><a href="http://mcnextpost.files.wordpress.com/2013/04/contenu-de-la-table-stgcustomer-aprc3a8s-exc3a9cution-du-package.png"><img title="Contenu de la table stgCustomer après exécution du package" alt="Contenu de la table stgCustomer après exécution du package" src="http://mcnextpost.files.wordpress.com/2013/04/contenu-de-la-table-stgcustomer-aprc3a8s-exc3a9cution-du-package.png?w=484&#038;h=356" width="484" height="356" /></a><p class="wp-caption-text">Contenu de la table stgCustomer après exécution du package</p></div>
<p><i> </i><b>7- Activer la transaction avec TransactionOption</b></p>
<p>Maintenant nous allons mettre en place le système de Transaction qui va permettre à la table d’être remise à son état initiale sans les nouvelles données de l’exécution qui a générée une erreur.</p>
<p><b>a.</b> Allez dans les propriétés du Sequence Container, en faisant un clique-droit sur ce dernier.</p>
<div class="wp-caption alignnone" style="width: 503px"><a href="http://mcnextpost.files.wordpress.com/2013/04/activation-de-la-transaction.png"><img title="Activation de la transaction" alt="Activation de la transaction" src="http://mcnextpost.files.wordpress.com/2013/04/activation-de-la-transaction.png?w=493&#038;h=442" width="493" height="442" /></a><p class="wp-caption-text">Activation de la transaction</p></div>
<p><i> </i><b>b.</b> Modifier la valeur champ “<b>TransactionOption</b>” à “<b>Required</b>”</p>
<div class="wp-caption alignnone" style="width: 440px"><a href="http://mcnextpost.files.wordpress.com/2013/04/transactionoption-required.png"><img title="TransactionOption-Required" alt="TransactionOption-Required" src="http://mcnextpost.files.wordpress.com/2013/04/transactionoption-required.png?w=430&#038;h=168" width="430" height="168" /></a><p class="wp-caption-text">TransactionOption-Required</p></div>
<p><b><b><b><a href="http://mcnextpost.files.wordpress.com/2013/04/note.png"><img alt="note" src="http://mcnextpost.files.wordpress.com/2013/04/note.png?w=31&#038;h=41" width="31" height="41" /></a><span style="color:#008080;"> </span></b></b></b><span style="color:#008000;"><b>Note :</b></span></p>
<p><b><i>TransactionOption :</i></b></p>
<ul>
<li><b>Required</b> indique que le conteneur démarre une transaction, à moins qu&rsquo;une autre transaction soit déjà démarrée par son conteneur parent. Si la transaction existe déjà, le conteneur rejoint la transaction.<br />
<span style="text-decoration:underline;">Par exemple :</span><br />
si un package non configuré pour prendre en charge les transactions inclut un conteneur de séquences utilisant l&rsquo;option <b>Required</b>, le conteneur de séquences démarre sa propre transaction. Si le package a été configuré pour utiliser l&rsquo;option <b>Required </b>, le conteneur de séquences rejoint la transaction du package.</li>
<li><b>Supported (</b><b><i>valeur par défaut</i></b><b>)</b> indique que le conteneur ne démarre pas de transaction, mais rejoint toute transaction démarrée par son conteneur parent.<br />
<span style="text-decoration:underline;">Par exemple :</span><br />
si un package avec quatre tâches d&rsquo;exécution SQL démarre une transaction et que les quatre tâches utilisent l&rsquo;option <b>Supported</b>, les mises à jour de la base de données effectuées par les tâches d&rsquo;exécution SQL sont annulées en cas d&rsquo;échec d&rsquo;une des tâches. Si le package ne démarre pas de transaction, les quatre tâches d&rsquo;exécution SQL ne sont pas liées par une transaction et aucune mise à jour de la base de données n&rsquo;est annulée, sauf celle effectuée par la tâche qui a échoué.<span style="color:#008000;"><i>=&gt; Dans notre cas nous avons mis le conteneur en Required et laissé par défaut les composants qu’il contient en Supported.</i><i><br />
</i><i><i>Ces dernières vont donc rejoindre voir hériter la transaction démarrée par le Sequence Container.</i></i></span></li>
<li><b>NotSupported</b> indique que le conteneur ne démarre pas de transaction et ne rejoint aucune transaction existante. Une transaction démarrée par un conteneur parent n&rsquo;affecte pas les conteneurs enfants configurés pour ne pas prendre en charge les transactions.<br />
<span style="text-decoration:underline;">Par exemple :</span><br />
si un package est configuré pour démarrer une transaction et qu&rsquo;un conteneur de boucles For dans le package utilise l&rsquo;option <b>NotSupported</b>, aucune des tâches de la boucle For ne peut être annulée si elle échoue.</li>
</ul>
<p><b><i>IsolationLevel:</i></b></p>
<p>Dans la partie transaction, parmi les propriétés disponible, il y aussi la propriété IsolationLevel.<br />
Cette dernière permet de gérer les interactions entre transactions.<br />
Par défaut sa valeur est « Sérializable », mais n’est prise en compte que si la transaction est active, c&rsquo;est-à-dire que la valeur de la propriété TransactionOption à pour valeur « Required ».<br />
Elle permet à une transaction de ne pas lire de données erronées, par exemple en cours de modification par une autre transaction.</p>
<p>Aller plus loin : <a href="http://msdn.microsoft.com/fr-fr/library/system.transactions.isolationlevel.aspx">http://msdn.microsoft.com/fr-fr/library/system.transactions.isolationlevel.aspx</a></p>
<p><b>8- Exécution du package</b></p>
<p><b>a.</b> Exécutez de nouveau le package.</p>
<p>Dans l’onglet « Progress », le message « Starting distributed transaction » apparaît normalement dans la trace.<br />
Ce qui signifie que le conteneur à bien été configuré :</p>
<div class="wp-caption alignnone" style="width: 404px"><a href="http://mcnextpost.files.wordpress.com/2013/04/starting-distributed-transaction.png"><img title="Starting distributed transaction" alt="Starting distributed transaction" src="http://mcnextpost.files.wordpress.com/2013/04/starting-distributed-transaction.png?w=394&#038;h=49" width="394" height="49" /></a><p class="wp-caption-text">Starting distributed transaction</p></div>
<div class="wp-caption alignnone" style="width: 295px"><a href="http://mcnextpost.files.wordpress.com/2013/04/exc3a9cution-du-package-avec-transactionoption-c3a0-required.png"><img title="Exécution du package avec TransactionOption à Required" alt="Exécution du package avec TransactionOption à Required" src="http://mcnextpost.files.wordpress.com/2013/04/exc3a9cution-du-package-avec-transactionoption-c3a0-required.png?w=285&#038;h=331" width="285" height="331" /></a><p class="wp-caption-text">Exécution du package avec TransactionOption à Required</p></div>
<p>Suite à l’échec du conteneur on obtient dans l’onglet « progress », le message suivant :</p>
<div class="wp-caption alignnone" style="width: 395px"><a href="http://mcnextpost.files.wordpress.com/2013/04/aborting-the-current-distributed-transaction.png"><img title="Aborting the current distributed transaction" alt="Aborting the current distributed transaction" src="http://mcnextpost.files.wordpress.com/2013/04/aborting-the-current-distributed-transaction.png?w=385&#038;h=56" width="385" height="56" /></a><p class="wp-caption-text">Aborting the current distributed transaction</p></div>
<p>b. Vérifier les données contenues dans la table stgCustomer.</p>
<div class="wp-caption alignnone" style="width: 543px"><a href="http://mcnextpost.files.wordpress.com/2013/04/contenu-de-la-table-stgcustomer-avec-la-transaction-active.png"><img title="Contenu de la table stgCustomer avec la transaction active" alt="Contenu de la table stgCustomer avec la transaction active" src="http://mcnextpost.files.wordpress.com/2013/04/contenu-de-la-table-stgcustomer-avec-la-transaction-active.png?w=533&#038;h=100" width="533" height="100" /></a><p class="wp-caption-text">Contenu de la table stgCustomer avec la transaction active</p></div>
<p><span style="color:#ff0000;"><b>Résultat :</b></span> Les données n’ont pas été insérer dans la table.</p>
<p>On dit que la transaction à fait un rollback des données c’est a dire que lors de l’échec, toutes les modifications qui ont eu lieu sur la table ont été annulées.</p>
<p><b><b><b><b><a href="http://mcnextpost.files.wordpress.com/2013/04/note.png"><img alt="note" src="http://mcnextpost.files.wordpress.com/2013/04/note.png?w=31&#038;h=41" width="31" height="41" /></a><span style="color:#008000;"> </span></b></b></b><span style="color:#008000;">Note </span></b><span style="color:#008000;">:</span> Dans un autre article j’implémenterais une autre méthode, visant à utiliser les requêtes SQL.</p>
<p><em><strong>Tutorial rédigé par Harry KANCEL</strong></em></p>
<p><b>Sources :</b></p>
<p><a href="http://msdn.microsoft.com/fr-fr/library/ms137749.aspx">http://msdn.microsoft.com/fr-fr/library/ms137749.aspx</a><br />
<a href="http://msdn.microsoft.com/en-us/library/ms173763.aspx">http://msdn.microsoft.com/en-us/library/ms173763.aspx</a><br />
<a href="http://msdn.microsoft.com/en-us/library/ms137690.aspx">http://msdn.microsoft.com/en-us/library/ms137690.aspx</a><br />
<a href="http://fr.wikipedia.org/wiki/Transaction_informatique">http://fr.wikipedia.org/wiki/Transaction_informatique</a></p>
<p><b>Aller plus loin :</b><br />
Isolation des transactions (Option IsolationLevel) : <a href="http://docs.postgresql.fr/8.2/transaction-iso.html">http://docs.postgresql.fr/8.2/transaction-iso.html</a><br />
Transaction héritées : <a href="http://msdn.microsoft.com/en-us/library/ms141083.aspx">http://msdn.microsoft.com/en-us/library/ms141083.aspx</a><br />
Transactions multiples : <a href="http://msdn.microsoft.com/en-us/library/ms141059.aspx">http://msdn.microsoft.com/en-us/library/ms141059.aspx</a><br />
IsolationLevel : <a href="http://msdn.microsoft.com/fr-fr/library/system.transactions.isolationlevel.aspx">http://msdn.microsoft.com/fr-fr/library/system.transactions.isolationlevel.aspx</a><br />
<a href="http://en.wikipedia.org/wiki/Isolation_(database_systems)">http://en.wikipedia.org/wiki/Isolation_(database_systems)</a></p>
<br />Classé dans:<a href='http://mcnextpost.com/category/decisionnel/tutorial-bi/'>Tutorial BI</a> Tagged: <a href='http://mcnextpost.com/tag/distributed-transaction-coordinator/'>Distributed Transaction Coordinator</a>, <a href='http://mcnextpost.com/tag/integration-services-2012/'>Intégration Services 2012</a>, <a href='http://mcnextpost.com/tag/isolationlevel/'>IsolationLevel</a>, <a href='http://mcnextpost.com/tag/msdtc/'>MSDTC</a>, <a href='http://mcnextpost.com/tag/required/'>Required</a>, <a href='http://mcnextpost.com/tag/sql-server-2012/'>SQL Server 2012</a>, <a href='http://mcnextpost.com/tag/ssis/'>SSIS</a>, <a href='http://mcnextpost.com/tag/ssis-2012/'>SSIS 2012</a>, <a href='http://mcnextpost.com/tag/transactionoption/'>TransactionOption</a>, <a href='http://mcnextpost.com/tag/transactions/'>Transactions</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1782&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/04/26/les-transactions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/899743fc742adb723d06d4253767147a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hkancel</media:title>
		</media:content>

		<media:content url="http://mcnextpost.wordpress.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" medium="image">
			<media:title type="html">Lire la suite…</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/distributed-transaction-coordinator-services.png?w=630" medium="image">
			<media:title type="html">Type de démarrage du service MSDTC</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/type-de-dc3a9marrage-automatique.png" medium="image">
			<media:title type="html">Type de démarrage Automatique</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/dc3a9marrage-automatique-du-service-msdtc.png" medium="image">
			<media:title type="html">Démarrage Automatique du service MSDTC</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/dc3a9marrage-du-sevice-msdtc.png" medium="image">
			<media:title type="html">Démarrage du sevice MSDTC</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/service-msdtc-en-cours-d-execution.png" medium="image">
			<media:title type="html">Service MSDTC en cours d&#039;execution</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/note.png" medium="image">
			<media:title type="html">note</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/crc3a9ation-du-package-transaction-dtsx.png" medium="image">
			<media:title type="html">Création du package transaction.dtsx</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/sc3a9lection-de-la-connexion-ole-db.png" medium="image">
			<media:title type="html">Sélection de la connexion OLE DB</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/crc3a9ation-de-la-connexion-ole-db.png" medium="image">
			<media:title type="html">Création de la connexion OLE DB</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/configuration-de-la-connexion-ole-db.png" medium="image">
			<media:title type="html">Configuration de la connexion OLE DB</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/dc3a9tails-de-la-connexion-ole-db-localhost-adventureworks2012.png" medium="image">
			<media:title type="html">Détails de la connexion OLE DB localhost.AdventureWorks2012</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/note.png" medium="image">
			<media:title type="html">note</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/connexion-localhost-adventureworks2012.png" medium="image">
			<media:title type="html">Connexion localhost.AdventureWorks2012</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/composant-execute-sql-task.png" medium="image">
			<media:title type="html">Composant Execute SQL Task</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/configuration-de-l-execute-sql-task.png" medium="image">
			<media:title type="html">Configuration de l’Execute SQL Task</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/mise-en-place-de-la-contrainte-de-prc3a9cc3a9dence-succc3a8s.png" medium="image">
			<media:title type="html">Mise en place de la contrainte de précédence succès</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/composant-data-flow-task.png" medium="image">
			<media:title type="html">Composant Data Flow Task</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/source-ole-db-et-destination-ole-db.png" medium="image">
			<media:title type="html">Source OLE DB et Destination OLE DB</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/configuration-de-la-source-ole-db.png" medium="image">
			<media:title type="html">Configuration de la source OLE DB</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/note.png" medium="image">
			<media:title type="html">note</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/mapping-des-champs-de-la-source-et-de-la-destination.png" medium="image">
			<media:title type="html">Mapping des champs de la source et de la destination</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/configuration-et-c3a9criture-de-la-requc3aate-update-du-comporant-execute-sql-task.png" medium="image">
			<media:title type="html">Configuration et écriture de la requête Update du comporant Execute SQL Task</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/contenu-du-package.png" medium="image">
			<media:title type="html">Contenu du package</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/exc3a9cution-du-package-en-erreur.png" medium="image">
			<media:title type="html">Exécution du package en erreur</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/message-d-erreur-du-package.png?w=630" medium="image">
			<media:title type="html">Message d&#039;erreur du package</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/contenu-de-la-table-stgcustomer-aprc3a8s-exc3a9cution-du-package.png" medium="image">
			<media:title type="html">Contenu de la table stgCustomer après exécution du package</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/activation-de-la-transaction.png" medium="image">
			<media:title type="html">Activation de la transaction</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/transactionoption-required.png" medium="image">
			<media:title type="html">TransactionOption-Required</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/note.png" medium="image">
			<media:title type="html">note</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/starting-distributed-transaction.png" medium="image">
			<media:title type="html">Starting distributed transaction</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/exc3a9cution-du-package-avec-transactionoption-c3a0-required.png" medium="image">
			<media:title type="html">Exécution du package avec TransactionOption à Required</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/aborting-the-current-distributed-transaction.png" medium="image">
			<media:title type="html">Aborting the current distributed transaction</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/contenu-de-la-table-stgcustomer-avec-la-transaction-active.png" medium="image">
			<media:title type="html">Contenu de la table stgCustomer avec la transaction active</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/note.png" medium="image">
			<media:title type="html">note</media:title>
		</media:content>
	</item>
		<item>
		<title>Tour de France Windows 8 et Windows Phone 8 &#8211; Mai 2013</title>
		<link>http://mcnextpost.com/2013/04/24/tour-de-france-windows-8-et-windows-phone-8-mai-2013/</link>
		<comments>http://mcnextpost.com/2013/04/24/tour-de-france-windows-8-et-windows-phone-8-mai-2013/#comments</comments>
		<pubDate>Wed, 24 Apr 2013 15:17:14 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[Microsoft Tour de France]]></category>
		<category><![CDATA[Pole .NET]]></category>
		<category><![CDATA[Windows Phone 8]]></category>
		<category><![CDATA[Windows8]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Windows Azure]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1609</guid>
		<description><![CDATA[Microsoft organise un Tour de France autour des applications Windows 8 et Windows Phone 8 &#34;Apprendre à développer, sécuriser et optimiser vos &#34;back-end&#34; pour vos applications Windows 8 et Windows Phone 8&#34; Au programme 4 heures de : Formation Démo Code L&#8217;objectif est de vous apprendre, en une demi-journée, à développer, sécuriser et optimiser vos [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1609&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div id="attachment_1612" class="wp-caption aligncenter" style="width: 640px"><a href="http://mcnextpost.files.wordpress.com/2013/04/image_tour_de_france_windows_8_windows_phone_8.png"><img class="size-full wp-image-1612" title="Tour de France Windows 8 et Windows Phone 8" alt="Tour de France Windows 8 et Windows Phone 8" src="http://mcnextpost.files.wordpress.com/2013/04/image_tour_de_france_windows_8_windows_phone_8.png?w=630&#038;h=256" width="630" height="256" /></a><p class="wp-caption-text"><strong>Tour de France Windows 8 et Windows Phone 8</strong></p></div>
<p style="text-align:center;"><strong>Microsoft organise un Tour de France autour des applications Windows 8 et Windows Phone 8</strong></p>
<p style="text-align:center;"><strong>&quot;Apprendre à développer, sécuriser et optimiser vos &quot;back-end&quot; pour vos applications Windows 8 et Windows Phone 8&quot;</strong></p>
<p>Au programme 4 heures de :</p>
<ul>
<li>Formation</li>
<li>Démo</li>
<li>Code</li>
</ul>
<p align="left">L&rsquo;objectif est de vous apprendre, en une demi-journée, à développer, sécuriser et optimiser vos &quot;back-end&quot; pour vos applications Windows 8 et Windows Phone 8.</p>
<p><strong>Les thèmes suivants (autour de Windows 8 et Windows Phone 8) seront abordés :</strong></p>
<ul>
<li>Tour d&rsquo;horizon de la plateforme</li>
<li>Concepts fondamentaux pour la mise enplace d&rsquo;API et les best pratices d&rsquo;utilisation dans vos applications</li>
<li>L&rsquo;implémentation de services de notification et de push</li>
<li>Les différentes approches pour sécuriser vos API et la mise en oeuvre de ces mécanismes</li>
<li>L&rsquo;optimisation des ressources et des services mis enplace ainsi que la montée en charge de vos applications mobiles avec Windows Azure.</li>
</ul>
<p><strong>Les intervenants :<br />
</strong>Ce Tour de France sera animé par des intervenants MCNEXT :</p>
<ul>
<li>John Thiriet, consultant DotNET et MVP Expression Blend</li>
<li>Guillaume Leborgne, chef de projet et expert DotNET</li>
</ul>
<p align="left">Ils ont développé de nombreuses applications Windows 8 et Windows Phone 8 présentes dans le Microsoft Store. Ce sont leurs retours d&rsquo;expériences autour de Windows 8 et Windows Phone 8 qu&rsquo;ils souhaitent vous apporter.</p>
<p><strong>Le public visé :<br />
</strong>Développeurs généralistes<br />
Niveau technique : 300</p>
<p><em>Pour en savoir plus :</em><br />
<a href="http://authoring.mcnext.com/evenements/microsoft/Pages/tour-de-france-windows-8-et-windows-phone-8.aspx">http://www.mcnext.com/evenements/microsoft/Pages/tour-de-france-windows-8-et-windows-phone-8.aspx</a></p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/microsoft-tour-de-france/'>Microsoft Tour de France</a>, <a href='http://mcnextpost.com/category/pole-net/'>Pole .NET</a>, <a href='http://mcnextpost.com/category/windows-phone-8/'>Windows Phone 8</a>, <a href='http://mcnextpost.com/category/windows8/'>Windows8</a> Tagged: <a href='http://mcnextpost.com/tag/api/'>API</a>, <a href='http://mcnextpost.com/tag/windows-azure/'>Windows Azure</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1609&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/04/24/tour-de-france-windows-8-et-windows-phone-8-mai-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/image_tour_de_france_windows_8_windows_phone_8.png" medium="image">
			<media:title type="html">Tour de France Windows 8 et Windows Phone 8</media:title>
		</media:content>
	</item>
		<item>
		<title>Microsoft Dev Camp : Réussir la partie serveur de vos applications Windows 8 et Windows Phone Jeudi 2 mai 2013</title>
		<link>http://mcnextpost.com/2013/04/24/microsoft-dev-camp-reussir-la-partie-serveur-de-vos-applications-windows-8-et-windows-phone-jeudi-2-mai-2013/</link>
		<comments>http://mcnextpost.com/2013/04/24/microsoft-dev-camp-reussir-la-partie-serveur-de-vos-applications-windows-8-et-windows-phone-jeudi-2-mai-2013/#comments</comments>
		<pubDate>Wed, 24 Apr 2013 15:16:54 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[Microsoft Tour de France]]></category>
		<category><![CDATA[Pole .NET]]></category>
		<category><![CDATA[Windows Phone 8]]></category>
		<category><![CDATA[Windows8]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Services REST]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1616</guid>
		<description><![CDATA[Rendez-vous le Jeudi 2 mai 2013 à partir de 13h30 ! Qu&#8217;est-ce qu&#8217;un Dev Camp ? Le Dev Camp est un événement destiné aux développeurs professionnels comme non professionnels animé par les experts Microsoft et ses partenaires. Au programme 4 heures de : Formation Démo Code L&#8217;objectif de ce Dev Camp est de vous montrer [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1616&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div id="attachment_1617" class="wp-caption aligncenter" style="width: 640px"><a href="http://mcnextpost.files.wordpress.com/2013/04/bandeau_dev_camp_windows_8_windows_phone_8.png"><img class="size-full wp-image-1617" title="Microsoft Dev Camp : Windows 8 et Windows Phone" alt="Microsoft Dev Camp : Windows 8 et Windows Phone" src="http://mcnextpost.files.wordpress.com/2013/04/bandeau_dev_camp_windows_8_windows_phone_8.png?w=630&#038;h=145" width="630" height="145" /></a><p class="wp-caption-text"><strong>Microsoft Dev Camp : Windows 8 et Windows Phone</strong></p></div>
<p><em>Rendez-vous le Jeudi 2 mai 2013 à partir de 13h30 !</em></p>
<p><strong>Qu&rsquo;est-ce qu&rsquo;un Dev Camp ?<br />
</strong><br />
<em>Le Dev Camp est un événement destiné aux développeurs professionnels comme non professionnels animé par les experts Microsoft et ses partenaires.<br />
</em><strong><br />
Au programme 4 heures de :</strong></p>
<ul>
<li>
<div>Formation</div>
</li>
<li>
<div>Démo</div>
</li>
<li>
<div>Code</div>
</li>
</ul>
<p>L&rsquo;objectif de ce Dev Camp est de vous montrer comment développer, sécuriser, et optimiser les API et les services qui vous permettront d’exposer vos données pour des applications mobiles.<br />
<strong><br />
Les intervenants :<br />
</strong>Cet après-midi sera animé par des intervenants MCNEXT :</p>
<ul>
<li>John Thiriet, consultant DotNET et MVP Expression Blend</li>
<li>Guillaume Leborgne, chef de projet et expert DotNET</li>
</ul>
<p>Ils ont développé de nombreuses applications Windows 8 et Windows Phone 8 présentes dans le Microsoft Store. Ce sont leurs retours d&rsquo;expériences autour de Windows 8 et Windows Phone 8 qu&rsquo;ils souhaitent vous apporter.</p>
<p><strong>Lieu  :</strong><br />
Campus de Microsoft &#8211; Issy les Moulineaux</p>
<p>Pour en savoir plus : <a href="http://authoring.mcnext.com/evenements/microsoft/Pages/microsoft-dev-camp-reussir-la-partie-serveur-de-vos-applications-windows-8-et-windows-phone.aspx">http://www.mcnext.com/evenements/microsoft/Pages/microsoft-dev-camp-reussir-la-partie-serveur-de-vos-applications-windows-8-et-windows-phone.aspx</a></p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/microsoft-tour-de-france/'>Microsoft Tour de France</a>, <a href='http://mcnextpost.com/category/pole-net/'>Pole .NET</a>, <a href='http://mcnextpost.com/category/windows-phone-8/'>Windows Phone 8</a>, <a href='http://mcnextpost.com/category/windows8/'>Windows8</a> Tagged: <a href='http://mcnextpost.com/tag/api/'>API</a>, <a href='http://mcnextpost.com/tag/asp-net/'>ASP.NET</a>, <a href='http://mcnextpost.com/tag/services-rest/'>Services REST</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1616&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/04/24/microsoft-dev-camp-reussir-la-partie-serveur-de-vos-applications-windows-8-et-windows-phone-jeudi-2-mai-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/bandeau_dev_camp_windows_8_windows_phone_8.png" medium="image">
			<media:title type="html">Microsoft Dev Camp : Windows 8 et Windows Phone</media:title>
		</media:content>
	</item>
		<item>
		<title>Introduction à Data Explorer Preview pour Excel</title>
		<link>http://mcnextpost.com/2013/04/19/introduction-a-data-explorer-preview-pour-excel/</link>
		<comments>http://mcnextpost.com/2013/04/19/introduction-a-data-explorer-preview-pour-excel/#comments</comments>
		<pubDate>Fri, 19 Apr 2013 13:15:52 +0000</pubDate>
		<dc:creator>mccesari</dc:creator>
				<category><![CDATA[Décisionnel]]></category>
		<category><![CDATA[Tutorial BI]]></category>
		<category><![CDATA[Data Explorer]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[Excel]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1553</guid>
		<description><![CDATA[Contexte Nous travaillons avec beaucoup de fichiers Excel, mais n’avons pas forcément accès à un ETL de type SSIS. Ne vous inquiétez pas, Microsoft a pensé à cela et travaille actuellement sur une version finale de l’add-in Excel (2010 SP1 et 2013) permettant d’effectuer des tâches d’intégration basiques et courantes. Cet article a pour but [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1553&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h3><span style="font-size:1.5em;">Contexte</span></h3>
<p style="text-align:justify;">Nous travaillons avec beaucoup de fichiers Excel, mais n’avons pas forcément accès à un ETL de type SSIS. Ne vous inquiétez pas, Microsoft a pensé à cela et travaille actuellement sur une version finale de l’<a href="http://office.microsoft.com/en-us/excel/download-data-explorer-for-excel-FX104018616.aspx">add-in Excel</a> (2010 SP1 et 2013) permettant d’effectuer des tâches d’intégration basiques et courantes. Cet article a pour but de vous introduire le fonctionnement de cette preview add-in gratuit.</p>
<p style="text-align:justify;"><span id="more-1553"></span></p>
<h2>Chargement d’un fichier Excel</h2>
<p style="text-align:justify;">Une fois l’add-in Excel installé, celui-ci apparaitra sur la droite dans les onglets de navigation.</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/04/1-bandeau.png"><img class="aligncenter size-large wp-image-1556" alt="1- Bandeau" src="http://mcnextpost.files.wordpress.com/2013/04/1-bandeau.png?w=630&#038;h=129" width="630" height="129" /></a></p>
<p style="text-align:justify;">Data Explorer permet le chargement de données de sources hétéroclites (fichier plat, Excel, base de données, pages web, … et même Facebook).  Nous allons nous intéresser au chargement d’un fichier Excel, basé sur une extraction des produits de la base Adventureworks.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/04/2-import-excel.png"><img class="aligncenter size-large wp-image-1557" alt="2- Import Excel" src="http://mcnextpost.files.wordpress.com/2013/04/2-import-excel.png?w=630&#038;h=277" width="630" height="277" /></a></p>
<p style="text-align:justify;">Une fois le fichier Excel sélectionné, la fenêtre nous permet de choisir entre les différentes feuilles Excel, mais il offre aussi la possibilité de renommer les colonnes, cacher certaines colonnes, filtrer les données à l’import, supprimer les doublons,  …  Voyons comment cela fonctionne.</p>
<p style="text-align:justify;"><a href="http://mcnextpost.files.wordpress.com/2013/04/3-import-excel.png"><img class="aligncenter size-large wp-image-1558" alt="3- Import Excel" src="http://mcnextpost.files.wordpress.com/2013/04/3-import-excel.png?w=630&#038;h=338" width="630" height="338" /></a></p>
<p style="text-align:justify;">Les colonnes de mon fichier Excel n’étant pas reconnues automatiquement comme « header » il faut spécifier que la première ligne correspond au nom de mes colonnes via l’icône du coin gauche du tableau.<a href="http://mcnextpost.files.wordpress.com/2013/04/4-first-row-headers2.png"><img class="aligncenter size-large wp-image-1559" alt="4-First Row Headers2" src="http://mcnextpost.files.wordpress.com/2013/04/4-first-row-headers2.png?w=630&#038;h=480" width="630" height="480" /></a></p>
<p style="text-align:justify;">Pour ne choisir que les colonnes qui sont le plus pertinent pour l’analyse souhaitée, il suffit de sélectionner les colonnes en maintenant la touche CTRL appuyée et de faire «<i> Hide other columns ».</i></p>
<p style="text-align:justify;"><a href="http://mcnextpost.files.wordpress.com/2013/04/5-select-to-hide2.png"><img class="aligncenter size-large wp-image-1569" alt="5-Select TO Hide2" src="http://mcnextpost.files.wordpress.com/2013/04/5-select-to-hide2.png?w=630&#038;h=165" width="630" height="165" /></a></p>
<p style="text-align:justify;">Certains prix n’étant pas renseignés, je vais donc exclure l’import de ces données en filtrant la colonne de la même manière que dans Excel.</p>
<p style="text-align:justify;"><a href="http://mcnextpost.files.wordpress.com/2013/04/5-filter-null.png"><img class="aligncenter size-large wp-image-1560" alt="5-Filter Null" src="http://mcnextpost.files.wordpress.com/2013/04/5-filter-null.png?w=630&#038;h=631" width="630" height="631" /></a><a href="http://mcnextpost.files.wordpress.com/2013/04/5-select-filter.png"><br />
</a></p>
<p style="text-align:justify;">Sur le côté droit ( volet « Steps »), un historique de la modification de l’import du fichier Excel est disponible. Il est par ailleurs possible de modifier les options de certaines options mais aussi de revenir à un état antérieur d’un simple clic.</p>
<p style="text-align:justify;"><a href="http://mcnextpost.files.wordpress.com/2013/04/5-select-filter.png"><img alt="5-Select Filter" src="http://mcnextpost.files.wordpress.com/2013/04/5-select-filter.png?w=630&#038;h=522" width="630" height="522" /></a><a href="http://mcnextpost.files.wordpress.com/2013/04/6-load-sql.png"><br />
</a></p>
<h2>Chargement de données depuis une base de donnée SQL Server</h2>
<p>Nous allons charger des données depuis un autre type de source de données (SQL Server), les données liée à la table de fait <i>« InternetSales » </i>:</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/04/6-load-sql.png"><img class="aligncenter size-medium wp-image-1576" alt="6- Load SQL" src="http://mcnextpost.files.wordpress.com/2013/04/6-load-sql.png?w=300&#038;h=127" width="300" height="127" /></a></p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/04/6-load-sql1.png"><img class="aligncenter size-large wp-image-1579" alt="6-Load SQL" src="http://mcnextpost.files.wordpress.com/2013/04/6-load-sql1.png?w=630&#038;h=338" width="630" height="338" /></a></p>
<p>Créons une colonne dérivée permettant de connaitre la marge brute sur le produit vendu :</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/04/6-derivedcolumns2.png"><br />
</a> <a href="http://mcnextpost.files.wordpress.com/2013/04/6-derivedcolumns1.png"><img class="aligncenter size-large wp-image-1582" alt="6- DerivedColumns1" src="http://mcnextpost.files.wordpress.com/2013/04/6-derivedcolumns1.png?w=630&#038;h=522" width="630" height="522" /></a></p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/04/6-derivedcolumns2.png"><img alt="6- DerivedColumns2" src="http://mcnextpost.files.wordpress.com/2013/04/6-derivedcolumns2.png?w=630&#038;h=522" width="630" height="522" /></a></p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/04/6-derivedcolumns3.png"><img class="aligncenter size-large wp-image-1585" alt="6- DerivedColumns3" src="http://mcnextpost.files.wordpress.com/2013/04/6-derivedcolumns3.png?w=630&#038;h=522" width="630" height="522" /></a> <a href="http://mcnextpost.files.wordpress.com/2013/04/6-derivedcolumns4.png"><img class="aligncenter size-large wp-image-1586" alt="6- DerivedColumns4" src="http://mcnextpost.files.wordpress.com/2013/04/6-derivedcolumns4.png?w=630&#038;h=419" width="630" height="419" /></a></p>
<h2>« Merge » des deux sources de données chargées dans Excel via Data Explorer</h2>
<p style="text-align:justify;">Nous avons donc deux sources données dans Excel, mais peut-on les faire communiquer entre elles ?</p>
<p style="text-align:justify;">Simplement avec un simple merge :</p>
<p style="text-align:justify;"><a href="http://mcnextpost.files.wordpress.com/2013/04/7-merge1.png"><img class="aligncenter size-full wp-image-1590" alt="7 - merge1" src="http://mcnextpost.files.wordpress.com/2013/04/7-merge1.png?w=630"   /></a></p>
<p style="text-align:justify;">Dans la fenêtre, il faut sélectionner les feuilles Excel que l’on veut joindre et spécifier sur quelles colonnes cette jointure sera faite (colonnes en surbrillance). On remarquera qu’une estimation du nombre de lignes correspondantes est disponible au bas de la fenêtre.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/04/7-merge2.png"><img class="aligncenter" alt="7 - merge2" src="http://mcnextpost.files.wordpress.com/2013/04/7-merge2.png?w=630&#038;h=522" width="630" height="522" /></a></p>
<p style="text-align:justify;">On remarque qu’une nouvelle colonne est disponible à droite avec écrit <i>Table</i>, faisant ainsi référence à la feuille Excel ajoutée lors de la jointure. Il faut spécifier les colonnes à ajouter en cliquant sur le symbole à droite du nom de la colonne et choisir les colonnes à rajouter.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/04/7-merge3.png"><img class="size-large wp-image-1593 aligncenter" alt="7 - merge3" src="http://mcnextpost.files.wordpress.com/2013/04/7-merge3.png?w=630&#038;h=522" width="630" height="522" /></a></p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/04/7-merge4.png"><img class="aligncenter size-large wp-image-1594" alt="7 - merge4" src="http://mcnextpost.files.wordpress.com/2013/04/7-merge4.png?w=630&#038;h=175" width="630" height="175" /></a></p>
<p style="text-align:justify;">Nous allons maintenant calculer la marge moyenne et totale par produit en utilisant la fonction <i>group by.</i></p>
<h2><a href="http://mcnextpost.files.wordpress.com/2013/04/7-merge5.png"><img class="aligncenter" alt="7 - merge5" src="http://mcnextpost.files.wordpress.com/2013/04/7-merge5.png?w=630&#038;h=522" width="630" height="522" /></a></h2>
<h2><a href="http://mcnextpost.files.wordpress.com/2013/04/7-merge7.png"><img class="aligncenter" alt="7 - merge7" src="http://mcnextpost.files.wordpress.com/2013/04/7-merge7.png?w=630&#038;h=522" width="630" height="522" /></a></h2>
<h2></h2>
<h2><a href="http://mcnextpost.files.wordpress.com/2013/04/7-merge8.png"><img class="aligncenter size-large wp-image-1598" alt="7 - merge8" src="http://mcnextpost.files.wordpress.com/2013/04/7-merge8.png?w=630&#038;h=522" width="630" height="522" /></a></h2>
<h2></h2>
<h2>Utilisation dans Excel</h2>
<p style="text-align:justify;">Lorsque ces données sont dans Excel on peut avoir accès à toutes les fonctions habituelles d’Excel, mais aussi imaginer des utilisations plus poussées type Powerpivot  et Power View via le lien <i>« Load to Data Model ».</i> On peut aussi rafraichir les données de façon simple sans avoir à recréer tout le cheminement.</p>
<h2 style="text-align:justify;"><a href="http://mcnextpost.files.wordpress.com/2013/04/8-results.png"><img class="aligncenter size-large wp-image-1599" alt="8- Results" src="http://mcnextpost.files.wordpress.com/2013/04/8-results.png?w=630&#038;h=541" width="630" height="541" /></a></h2>
<h2>Conclusion</h2>
<p style="text-align:justify;">Date Explorer est donc un mini-ETL assez simple d’utilisation mais qui reste limité. Cela devrait néanmoins suffire pour un certain nombre de cas d’utilisation. La version finale n’est pas encore annoncée, celle-ci aura, je n’en doute pas de nouvelles fonctionnalités.</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/decisionnel/'>Décisionnel</a>, <a href='http://mcnextpost.com/category/decisionnel/tutorial-bi/'>Tutorial BI</a> Tagged: <a href='http://mcnextpost.com/tag/data-explorer/'>Data Explorer</a>, <a href='http://mcnextpost.com/tag/etl/'>ETL</a>, <a href='http://mcnextpost.com/tag/excel/'>Excel</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1553&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/04/19/introduction-a-data-explorer-preview-pour-excel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/f2c0eff34a7363ca1ce72f9521bf75e6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mccesari</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/1-bandeau.png?w=630" medium="image">
			<media:title type="html">1- Bandeau</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/2-import-excel.png?w=630" medium="image">
			<media:title type="html">2- Import Excel</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/3-import-excel.png?w=630" medium="image">
			<media:title type="html">3- Import Excel</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/4-first-row-headers2.png?w=630" medium="image">
			<media:title type="html">4-First Row Headers2</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/5-select-to-hide2.png?w=630" medium="image">
			<media:title type="html">5-Select TO Hide2</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/5-filter-null.png?w=630" medium="image">
			<media:title type="html">5-Filter Null</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/5-select-filter.png?w=630" medium="image">
			<media:title type="html">5-Select Filter</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/6-load-sql.png?w=300" medium="image">
			<media:title type="html">6- Load SQL</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/6-load-sql1.png?w=630" medium="image">
			<media:title type="html">6-Load SQL</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/6-derivedcolumns1.png?w=630" medium="image">
			<media:title type="html">6- DerivedColumns1</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/6-derivedcolumns2.png?w=630" medium="image">
			<media:title type="html">6- DerivedColumns2</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/6-derivedcolumns3.png?w=630" medium="image">
			<media:title type="html">6- DerivedColumns3</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/6-derivedcolumns4.png?w=630" medium="image">
			<media:title type="html">6- DerivedColumns4</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/7-merge1.png" medium="image">
			<media:title type="html">7 - merge1</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/7-merge2.png?w=630" medium="image">
			<media:title type="html">7 - merge2</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/7-merge3.png?w=630" medium="image">
			<media:title type="html">7 - merge3</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/7-merge4.png?w=630" medium="image">
			<media:title type="html">7 - merge4</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/7-merge5.png?w=630" medium="image">
			<media:title type="html">7 - merge5</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/7-merge7.png?w=630" medium="image">
			<media:title type="html">7 - merge7</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/7-merge8.png?w=630" medium="image">
			<media:title type="html">7 - merge8</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/04/8-results.png?w=630" medium="image">
			<media:title type="html">8- Results</media:title>
		</media:content>
	</item>
		<item>
		<title>Améliorer notre productivité avec Visual Studio 2012</title>
		<link>http://mcnextpost.com/2013/04/02/ameliorer-notre-productivite-avec-visual-studio-2012/</link>
		<comments>http://mcnextpost.com/2013/04/02/ameliorer-notre-productivite-avec-visual-studio-2012/#comments</comments>
		<pubDate>Tue, 02 Apr 2013 16:35:10 +0000</pubDate>
		<dc:creator>qbeucher</dc:creator>
				<category><![CDATA[Pole .NET]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1193</guid>
		<description><![CDATA[Chaque sortie d’une nouvelle version de Visual Studio apporte aux développeurs son lot de nouveautés et d’innovations. La version 2012 de Visual Studio ne déroge pas à la règle. Par ce post, je souhaite vous faire partager mes différentes découvertes sur cette version, et principalement, tout ce qui peut et va améliorer notre productivité au [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1193&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Chaque sortie d’une nouvelle version de Visual Studio apporte aux développeurs son lot de nouveautés et d’innovations. La version 2012 de Visual Studio ne déroge pas à la règle. Par ce post, je souhaite vous faire partager mes différentes découvertes sur cette version, et principalement, tout ce qui peut et va améliorer notre productivité au quotidien.</p>
<p>&nbsp;</p>
<h1><span style="color:#2e74b5;">Les généralités</span></h1>
<h2 style="color:#2e74b5;font-size:medium;line-height:4px;">Content before Chrome</h2>
<p>La première constatation que j’ai fait, immédiatement après avoir ouvert Visual Studio 2012, est son apparence.<br />
En effet, dès son ouverture, je me retrouve immergé dans un environnement quasi mono chrome. Il semble qu’il s’agit là d’une volonté de la part de Microsoft de revenir à la base de ce qu’est la conception de logiciel. Dans leur bonne pratique, Microsoft nomme cela Content before Chrome. Le contenu d’une application est l’élément principal de celle-ci. Microsoft a donc pris parti de ne plus ajouter de fioritures superflues à l’interface fourni aux développeurs, afin que ceux-ci puissent se concentrer sur le contenu, plutôt que de privilégier ce qui l’entoure.<br />
On constate également le style épuré de la barre de menu, dont le texte est écrit en majuscule. Ainsi que le faible nombre de bouton raccourci de la barre de tâche.<br />
On retrouve ce style dans tous les logiciels mis à jour en style Modern UI, comme Word 2013, Excel 2013, Etc.</p>
<h2 style="color:#2e74b5;font-size:medium;line-height:4px;">La page de démarrage</h2>
<p>Je parcours la page de démarrage. Elle propose une série de vidéos, type podcast, qui sont autant de tutoriels sur des sujets mise en avant par les équipes Microsoft. Ces vidéos se jouent directement dans Visual Studio 2012. Une coche apparait dans le coin inférieur droit pour indiquer celle que l’on a déjà joué.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/02/startpage.jpg"><img class="alignnone size-medium wp-image-1205" alt="StartPage" src="http://mcnextpost.files.wordpress.com/2013/02/startpage.jpg?w=300&#038;h=168" width="300" height="168" /></a></p>
<h2 style="color:#2e74b5;font-size:medium;line-height:4px;">La recherche</h2>
<p>L’un des raccourcis clavier, que tous les développeurs connaissent, après le copier/coller (Ctrl+C Ctrl+V), est la fonctionnalité de recherche (Ctrl+F). Visual Studio 2012 ajout le Quick Search aux outils de recherche fourni aux développeurs.<br />
La fenêtre apparait en haut à droite de la page active. Tout d’abord, je la trouve moins intrusive. De plus, maintenant, elle est 100% compatible avec les expressions régulières (le RegEx). Et je garde le meilleur pour la fin, elle affiche le résultat en temps réel, en surlignant le texte d’une façon visible, en Jaune.<br />
Ce mode de recherche est accessible sur chaque fenêtre présentée par Visual Studio 2012. On la retrouve dans l’explorateur de solution, la fenêtre de propriétés, etc.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/02/quicksearch.jpg"><img class="alignnone size-medium wp-image-1198" alt="QuickSearch" src="http://mcnextpost.files.wordpress.com/2013/02/quicksearch.jpg?w=300&#038;h=168" width="300" height="168" /></a><a href="http://mcnextpost.files.wordpress.com/2013/02/quicksearch2.jpg"><img class="alignnone size-medium wp-image-1199" alt="QuickSearch2" src="http://mcnextpost.files.wordpress.com/2013/02/quicksearch2.jpg?w=300&#038;h=54" width="300" height="54" /></a></p>
<h2 style="color:#2e74b5;font-size:medium;line-height:4px;">Les performances</h2>
<p>D’après des recherches effectuées par les équipes de Microsoft, le temps de chargement d’un projet à l’ouverture de Visual Studio est au minimum deux fois plus rapide. Il faut garder à l’esprit que cela dépend grandement de la technologie employée.</p>
<p>&nbsp;</p>
<h1><span style="color:#2e74b5;">Les fenêtres</span></h1>
<h2 style="color:#2e74b5;font-size:medium;line-height:4px;">La gestion des fenêtres</h2>
<p>Windows 8, permet de scinder l’écran affiché en deux moitié horizontal, par un simple glissé/déposé sur la partie gauche ou droite de l’écran.<br />
Visual Studio 2012 a amélioré la gestion des fenêtres en les rendant totalement autonome. Microsoft, nous fait profiter là de toutes les innovations de Windows 8.<br />
Voici une copie de mon écran. On constate qu’il est scindé en deux, j’ai affiché le fichier XAML d’un contrôle utilisateur à gauche et son fichier contenant le code behind à droite.<br />
Naturellement, cela fonctionne avec toutes les fenêtres de Visual Studio 2012, l’explorateur de fichier, les fenêtres de débogage, etc.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/02/doubleecran.jpg"><img class="alignnone size-medium wp-image-1194" alt="DoubleEcran" src="http://mcnextpost.files.wordpress.com/2013/02/doubleecran.jpg?w=300&#038;h=169" width="300" height="169" /></a></p>
<h2 style="color:#2e74b5;font-size:medium;line-height:4px;">La fenêtre de prévisualisation</h2>
<p>Dans la vie d’un développeur, nous passons beaucoup de temps à chercher des informations spécifiques au travers de notre code. Pour cela, il utilise, généralement la fonction Go to reference (raccourci F12). Dans Visual Studio 2012, cela avait pour effet d’ouvrir des fenêtres, qui finissaient rapidement par polluer notre espace de travail. Pour éviter, cette pollution, on refermait manuellement les fenêtres superflues ouvertes de cette manière.<br />
Visual Studio 2012 propose une vue de prévisualisation. Celle-ci affiche le contenu d’un fichier, en lecture seul. Il n’y a qu’une seule et unique vue de prévisualisation affichée. Dès lors, que l’on modification le contenu de cette fenêtre, ou que l’on clique sur le petit icône en forme de dossier se trouvant dans l’onglet, celle-ci passe en mode normal.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/02/previewwindows.jpg"><img class="alignnone size-medium wp-image-1197" alt="PreviewWindows" src="http://mcnextpost.files.wordpress.com/2013/02/previewwindows.jpg?w=300&#038;h=89" width="300" height="89" /></a></p>
<h2 style="color:#2e74b5;font-size:medium;line-height:4px;">La multi-sélection des fenêtres</h2>
<p>A l’aide du bouton Ctrl, on peut sélectionner plusieurs fenêtres, pour ainsi les déplacer toutes en même temps.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/02/multiwindowsselection.jpg"><img class="alignnone size-medium wp-image-1195" alt="MultiWindowsSelection" src="http://mcnextpost.files.wordpress.com/2013/02/multiwindowsselection.jpg?w=300&#038;h=50" width="300" height="50" /></a></p>
<h2 style="color:#2e74b5;font-size:medium;line-height:4px;">Le pin’s</h2>
<p>Visual Studio 2012 intègre, nativement, une fonctionnalité qui permet d’épingler une fenêtre. Une fenêtre épinglée reste en première position dans la barre de gestion des fenêtres de l’espace de travail.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/02/pins.jpg"><img class="alignnone size-medium wp-image-1196" alt="Pins" src="http://mcnextpost.files.wordpress.com/2013/02/pins.jpg?w=300&#038;h=58" width="300" height="58" /></a></p>
<h2 style="color:#2e74b5;font-size:medium;line-height:4px;">Fermeture des fenêtres</h2>
<p>Dans les évolutions anecdotiques, sur lesquels je me sens obligé de m’arrêter, il y a une nouvelle fonctionnalité qui permet lorsque l’on fait un clic droit sur l’onglet d’une fenêtre de fermer toutes les fenêtres de l’espace de travail, ainsi qu’une autre pour toutes les fenêtres épinglées. Ces fonctionnalités n’existaient pas sous Visual Studio 2010.</p>
<p>&nbsp;</p>
<h1><span style="color:#2e74b5;">L’explorateur de solution</span></h1>
<p>A première vue, l’explorateur de solution n’a pas beaucoup changé. La liste de bouton raccourci en haut de la fenêtre a été augmentée.<br />
J’y retrouve les boutons de la précédente version, telle que Rafraichir, Afficher tous les fichiers, etc. Et puis, je découvre un bouton Tous réduire qui permet de réduire l’arbre de la solution à ces nœuds racines, ainsi qu’un bouton Propriété qui me permet d’ouvrir la fenêtre Propriétés de l’élément sélectionné dans mon arbre de solution.<br />
Après une seconde, je découvre cependant un nouveau niveau logique ajouté à l’arbre. Celui-ci décrit et expose le contenu des fichiers ; Accesseur, Méthodes, Evènement, etc.<br />
Un double clic sur l’un de ses éléments nous permet d’ouvrir le fichier, et positionne le curseur, sur celui-ci.<br />
Sa manipulation a également changé. Un simple clic sur un élément de l’explorateur de solution l’ouvre dans la vue de prévisualisation. Un double clic l’ouvre en mode normal.<br />
On trouve aussi un module de Quick Search, qui ouvre l’arbre sur tous les éléments trouvés (Voir image ci-dessous).</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/02/solutionexplorer.jpg"><img class="alignnone size-full wp-image-1201" alt="SolutionExplorer" src="http://mcnextpost.files.wordpress.com/2013/02/solutionexplorer.jpg?w=630"   /></a><a href="http://mcnextpost.files.wordpress.com/2013/02/solutionexplorersearch.jpg"><img class="alignnone size-medium wp-image-1202" alt="SolutionExplorerSearch" src="http://mcnextpost.files.wordpress.com/2013/02/solutionexplorersearch.jpg?w=175&#038;h=300" width="175" height="300" /></a></p>
<p>&nbsp;</p>
<h1 style="color:#2e74b5;">Les langages</h1>
<h2 style="color:#2e74b5;font-size:medium;line-height:4px;">Modern UI</h2>
<p>Visual Studio 2012 fourni tous les outils pour permettre de développer des applications sous Windows 8 en Modern UI. Lorsque l’on souhaite lancer une application de Visual Studio 2012, on peut choisir le mode de lancement  (voir image ci-dessous).<br />
Dans le cas des applications en Modern UI, on y trouve un simulateur qui ouvre une fenêtre qui ressemble à une tablette (voir image ci-dessous).<br />
A l’aide de cette fenêtre, via les boutons à droite de l’écran, on peut simuler une touche du doigt (on ne peut pas tous être équipé d’écran tactile), faire pivoter la fenêtre (très important à tester), changer la résolution, etc.<br />
Une autre innovation est la fonctionnalité Store, que l’on obtient grâce à un clic droit sur le projet. Il permet d’accédé à toutes les fonctionnalités de déploiement d’une application sur le Windows Store.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/02/startapp1.jpg"><img class="alignnone size-full wp-image-1204" alt="StartApp1" src="http://mcnextpost.files.wordpress.com/2013/02/startapp1.jpg?w=630"   /></a><a href="http://mcnextpost.files.wordpress.com/2013/02/simulator.jpg"><img class="alignnone size-full wp-image-1200" alt="Simulator" src="http://mcnextpost.files.wordpress.com/2013/02/simulator.jpg?w=630"   /></a></p>
<h2 style="color:#2e74b5;font-size:medium;line-height:4px;">Web</h2>
<p>Pour les développeurs web, l’auto complétion de Javascript, JQuery et des feuilles CSS est apparue. L’équivalant des commentaires C# (en ///) viens de faire son apparition. Permettant d’associer un commentaire à un paramètre d’une fonction, que l’on retrouve dans la bulle info de l’auto complétion.<br />
Coté HTML, de petite innovation, bien pratique. Par exemple, lorsque l’on modifie une balise, sa balise homologue de fermeture est modifiée aussi, et vice-versa.<br />
Tout comme Modern UI, les sites peuvent être lancés avec un navigateur (installé indépendamment sur la machine) ou à partir du Page inspector (voir image à gauche).<br />
Le Page inspector permet de debugger plus efficacement le site en live.<br />
Enfin, Visual Studio 2012 intègre les nouvelles normes de W3C appelé WAI-ARIA.<br />
<a href="http://mcnextpost.files.wordpress.com/2013/02/startapp2.jpg"><img class="alignnone size-full wp-image-1204" alt="StartApp2" src="http://mcnextpost.files.wordpress.com/2013/02/startapp2.jpg?w=630"   /></a></p>
<p>&nbsp;</p>
<h1><span style="color:#2e74b5;">Conclusion</span></h1>
<p>Il y aurait encore beaucoup de choses à explorer (l&rsquo;explorateur de tests unitaires, la barre de Quick Launch, la connexion à TFS&#8230;), mais voilà déjà mes premières impressions sur cette  nouvelle version 2012 !</p>
<p>&nbsp;</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/pole-net/'>Pole .NET</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1193&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/04/02/ameliorer-notre-productivite-avec-visual-studio-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d190702908d2526da481c257d6bdb32f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">qbeucher</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/startpage.jpg?w=300" medium="image">
			<media:title type="html">StartPage</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/quicksearch.jpg?w=300" medium="image">
			<media:title type="html">QuickSearch</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/quicksearch2.jpg?w=300" medium="image">
			<media:title type="html">QuickSearch2</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/doubleecran.jpg?w=300" medium="image">
			<media:title type="html">DoubleEcran</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/previewwindows.jpg?w=300" medium="image">
			<media:title type="html">PreviewWindows</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/multiwindowsselection.jpg?w=300" medium="image">
			<media:title type="html">MultiWindowsSelection</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/pins.jpg?w=300" medium="image">
			<media:title type="html">Pins</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/solutionexplorer.jpg" medium="image">
			<media:title type="html">SolutionExplorer</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/solutionexplorersearch.jpg?w=175" medium="image">
			<media:title type="html">SolutionExplorerSearch</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/startapp1.jpg" medium="image">
			<media:title type="html">StartApp1</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/simulator.jpg" medium="image">
			<media:title type="html">Simulator</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/startapp2.jpg" medium="image">
			<media:title type="html">StartApp2</media:title>
		</media:content>
	</item>
		<item>
		<title>Intégration d&#8217;une source XML en SSIS</title>
		<link>http://mcnextpost.com/2013/04/02/integration-dune-source-xml-en-ssis/</link>
		<comments>http://mcnextpost.com/2013/04/02/integration-dune-source-xml-en-ssis/#comments</comments>
		<pubDate>Tue, 02 Apr 2013 15:08:11 +0000</pubDate>
		<dc:creator>Sylvain Pagès</dc:creator>
				<category><![CDATA[Décisionnel]]></category>
		<category><![CDATA[Tutorial BI]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1336</guid>
		<description><![CDATA[Contexte Dans le cadre d’une mission, nous intégrons des données de facturation provenant d’un fournisseur externe , afin de les restituer dans nos cubes d’analyse. Ces informations transmises par fichiers XML sont intégrées dans une base de données SQL Server. La structure du fichier d’échange XML n’est pas sous contrôle, celle-ci est imposée par l&#8217;émetteur [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1336&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h3>Contexte</h3>
<p>Dans le cadre d’une mission, nous intégrons des données de facturation provenant d’un fournisseur externe , afin de les restituer dans nos cubes d’analyse. Ces informations transmises par fichiers XML sont intégrées dans une base de données SQL Server.</p>
<p>La structure du fichier d’échange XML n’est pas sous contrôle, celle-ci est imposée par l&rsquo;émetteur : l’adaptation du consultant BI s’impose.</p>
<p>Voyons comment intégrer une source XML au travers « <i>SQL Server Integration Services</i> ».</p>
<h3>L’influence de la structure du fichier</h3>
<h4>XML</h4>
<p>Le XML « <a href="http://fr.wikipedia.org/wiki/Extensible_Markup_Language">Extensible Markup Language </a>» est un langage de balises lisible pour l’homme permettant de structurer de l’information en vue d’échange.</p>
<p>Voyons les composants XML de base constituant un arbre structuré</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="129"><i>Nœud document</i></td>
<td valign="top" width="589">Elément racine à tout XML. Il est le point de départ</td>
</tr>
<tr>
<td valign="top" width="129"><i>Balise</i></td>
<td valign="top" width="589">Une balise est un nom commode pour désigner les constructions entre deux chevrons &lt;…&gt; dans un fichier XML</td>
</tr>
<tr>
<td valign="top" width="129"><i>Texte</i></td>
<td valign="top" width="589">Un nœud texte n’ayant pas d’enfant. Il est toujours contenu dans une balise.</td>
</tr>
<tr>
<td valign="top" width="129"><i>Attribut</i></td>
<td valign="top" width="589">Un attribut est un nom et une valeur. Il est toujours porter par une balise. Sa valeur ne sera jamais nulle, mais vide &lt;balise attribut= ‘’/&gt;. L’attribut est unique sur une balise qui peut en avoir plusieurs. &lt;balise attribut1=’valeur1’ attribut2=’valeur2’ &#8230;/&gt;</td>
</tr>
</tbody>
</table>
<p>Étudions dans un premier temps la structure de notre fichier XML.</p>
<h4>Notre cas exemple</h4>
<h5>Structure du fichier</h5>
<pre class="brush: xml; title: ; notranslate">&lt;?xml version=&quot;1.0&quot; encoding=&quot;iso-8859-1&quot;?&gt;
&lt;JD_GENERIQUE xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
  &lt;Definition&gt;
    &lt;PieceComptable&gt;FARC130014&lt;/PieceComptable&gt;
    &lt;Redevance&gt;RC&lt;/Redevance&gt;
    &lt;Activite&gt;Act1&lt;/Activite&gt;
    &lt;SSActivite&gt;ssAct1&lt;/SSActivite&gt;
    &lt;ServTransport&gt;Train&lt;/ServTransport&gt;
    &lt;Date&gt;10/12/2012&lt;/Date&gt;
  &lt;/Definition&gt;
  &lt;TableauDetaille Search_Code=&quot;044101&quot;&gt;
    &lt;ENTETE&gt;
      &lt;ElementEnTete Nom=&quot;NM&quot;&gt;044101&lt;/ElementEnTete&gt;
      &lt;ElementEnTete Nom=&quot;TYPCIRC&quot;&gt;réelle&lt;/ElementEnTete&gt;
      &lt;ElementEnTete Nom=&quot;HD&quot;&gt;00:10:00&lt;/ElementEnTete&gt;
      &lt;ElementEnTete Nom=&quot;DE&quot;&gt;Cerbère&lt;/ElementEnTete&gt;
      &lt;ElementEnTete Nom=&quot;FE&quot;&gt;Portbou&lt;/ElementEnTete&gt;
      &lt;ElementEnTete Nom=&quot;LT&quot;&gt;0,9&lt;/ElementEnTete&gt;
      &lt;ElementEnTete Nom=&quot;MT&quot;&gt;3,08&lt;/ElementEnTete&gt;
    &lt;/ENTETE&gt;
    &lt;BODY&gt;
      &lt;LIGNE&gt;
        &lt;ElementDetail Nom=&quot;NL&quot;&gt;994&lt;/ElementDetail&gt;
        &lt;ElementDetail Nom=&quot;SEGMTARIF&quot;&gt;LC&lt;/ElementDetail&gt;
        &lt;ElementDetail Nom=&quot;LNG&quot;&gt;0,0&lt;/ElementDetail&gt;
        &lt;ElementDetail Nom=&quot;TCT&quot;&gt;FMC&lt;/ElementDetail&gt;
        &lt;ElementDetail Nom=&quot;PU&quot;&gt;3,425&lt;/ElementDetail&gt;
        &lt;ElementDetail Nom=&quot;COEFTRAFIC&quot;&gt;0,600&lt;/ElementDetail&gt;
        &lt;ElementDetail Nom=&quot;M&quot;&gt;0,00&lt;/ElementDetail&gt;
      &lt;/LIGNE&gt;
      &lt;LIGNE&gt;
        &lt;ElementDetail Nom=&quot;NL&quot;&gt;995&lt;/ElementDetail&gt;
        &lt;ElementDetail Nom=&quot;SEGMTARIF&quot;&gt;LC_FM&lt;/ElementDetail&gt;
        &lt;ElementDetail Nom=&quot;LNG&quot;&gt;0,9&lt;/ElementDetail&gt;
        &lt;ElementDetail Nom=&quot;TCT&quot;&gt;FMC&lt;/ElementDetail&gt;
        &lt;ElementDetail Nom=&quot;PU&quot;&gt;3,425&lt;/ElementDetail&gt;
        &lt;ElementDetail Nom=&quot;COEFTRAFIC&quot;&gt;1,000&lt;/ElementDetail&gt;
        &lt;ElementDetail Nom=&quot;M&quot;&gt;3,08&lt;/ElementDetail&gt;
      &lt;/LIGNE&gt;
…</pre>
<table style="font-family:Verdana;font-size:10px;" width="525" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="275">JD_GENERIQUE</td>
<td valign="top" width="300"><i>Balise racine</i> du document</td>
</tr>
<tr>
<td valign="top" width="167">Definition</td>
<td valign="top" width="198"><i>Balise structurante</i>, définissant le fichier dans sa globalité.</td>
</tr>
<tr>
<td valign="top" width="167">PieceComptable<br />
RedevanceActivite<br />
SSActivite<br />
ServTransport<br />
Date</td>
<td valign="top" width="198"><i>Balises de données</i> contenues dans la balise « Definition »</td>
</tr>
<tr>
<td valign="top" width="167">TableauDetaille</td>
<td valign="top" width="198"><i>Balise structurante</i>, définissant des éléments de facturation</td>
</tr>
<tr>
<td valign="top" width="167">Entete</td>
<td valign="top" width="198">Balise structurante, regroupant des éléments d’entête.</td>
</tr>
<tr>
<td valign="top" width="167">ElementEnTete Nom=&quot;NM&quot;<br />
ElementEnTete Nom=&quot;TYPCIRC&quot;<br />
ElementEnTete Nom=&quot;HD&quot;<br />
ElementEnTete Nom=&quot;DE&quot;<br />
ElementEnTete Nom=&quot;FE&quot;<br />
ElementEnTete Nom=&quot;LT&quot;<br />
ElementEnTete Nom=&quot;MT&quot;</td>
<td valign="top" width="198"><i>Balises de données</i> avec attribut structurant</td>
</tr>
<tr>
<td valign="top" width="167">BODY</td>
<td valign="top" width="198"><i>Balise structurante</i>, définissant le corps</td>
</tr>
<tr>
<td valign="top" width="167">LIGNE</td>
<td valign="top" width="198"><i>Balise structurante</i>, définissant une ligne</td>
</tr>
<tr>
<td valign="top" width="167">ElementDetail Nom=&quot;NL&quot;<br />
ElementDetail Nom=&quot;SEGMTARIF&quot;<br />
ElementDetail Nom=&quot;LNG&quot;<br />
ElementDetail Nom=&quot;TCT&quot;<br />
ElementDetail Nom=&quot;PU&quot;<br />
ElementDetail Nom=&quot;COEFTRAFIC&quot;<br />
ElementDetail Nom=&quot;M&quot;</td>
<td valign="top" width="198"><i>Balises de données</i> avec attribut structurant</td>
</tr>
</tbody>
</table>
<p><strong>?</strong> Une facture est constituée d’une unique entête, de plusieurs tableaux de facturation. Ces derniers sont composés d’une entête de tableau et de plusieurs lignes de détails.</p>
<h5>Traitement des valeurs</h5>
<p>Le traitement d’un fichier XML revient à remettre à plat les données qui ont été hiérarchisées. La difficulté vient de l’aisance à y arriver.</p>
<p>Le traitement d’un nœud comme celui « Definition » est relativement simple. La mise en colonne de l’information est triviale avec les outils SSIS</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image0011.png"><img class="size-medium wp-image-1369" alt="XML Noeud definition" src="http://mcnextpost.files.wordpress.com/2013/03/image0011.png?w=300&#038;h=112" width="300" height="112" /></a></p>
<p>Le traitement d’un nœud « Entete » ou « Ligne » demandera plus de manipulation pour préparer les données à l’intégration.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image0031.png"><img class="alignnone size-medium wp-image-1370" alt="image003" src="http://mcnextpost.files.wordpress.com/2013/03/image0031.png?w=300&#038;h=111" width="300" height="111" /></a></p>
<p>Dans un but d’intégration des données, nous remarquerons qu’il y a de nombreux attributs de balise présent et ceux à plusieurs reprise dans les balises « ElementEntete » et « ElementDetail ». Ces derniers ont une valeur fonctionnelle réelle. L’information aurait pu être résumée comme suit pour notre exemple :</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image0071.png"><img class="size-medium wp-image-1371 alignleft" alt="image007" src="http://mcnextpost.files.wordpress.com/2013/03/image0071.png?w=226&#038;h=133" width="226" height="133" /> </a> <a href="http://mcnextpost.files.wordpress.com/2013/03/image0051.png"><img class="alignnone size-medium wp-image-1372" alt="image005" src="http://mcnextpost.files.wordpress.com/2013/03/image0051.png?w=185&#038;h=134" width="185" height="134" /></a></p>
<p>Le format du fichier XML nous étant imposé en l’état, aucun changement de la source n’est possible.</p>
<p>Comment traiter ces balises XML avec attributs fonctionnels ? Nous aborderons une façon de faire sans qu’elle soit unique dans la section suivante. Celle-ci traite de l’utilisation des tâches SSIS mise à disposition dans BIDS.</p>
<h3>Traitement par SSIS sous BIDS SQL Server 2008 R2</h3>
<h4>Source XML</h4>
<p>Comme son nom l’indique, la tâche Source XML permet d’utiliser les données stockées dans des fichiers XML dans le flux de données. Si le XML provient d’un fichier, il suffit de spécifier le chemin d’accès ou obtenir le chemin du fichier grâce à une variable au moment de l’exécution. Il est également possible de spécifier le chemin d’accès d’un XSD qui définit la structure de notre XML. Le XSD peut ce générer à partir du fichier XML renseigné.</p>
<p>Création d’un composent « XML Source ». Nous renseignons le document source avec la localisation. La génération d’un fichier XSD est obligatoire pour la structure.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image0091.jpg"><img class="alignnone size-medium wp-image-1374" alt="image009" src="http://mcnextpost.files.wordpress.com/2013/03/image0091.jpg?w=300&#038;h=294" width="300" height="294" /></a></p>
<p>Sur la seconde page du composent « Columns », nous retrouvons les structures de données qui ont été importées.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image0111.jpg"><img class="alignnone size-medium wp-image-1375" alt="image011" src="http://mcnextpost.files.wordpress.com/2013/03/image0111.jpg?w=300&#038;h=293" width="300" height="293" /></a></p>
<p>Pour garantir la hiérarchie du fichier XML d’entrée, le composant génère une multitude de structures imbriquées. Plusieurs sorties sont disponibles et un identifiant unique ID apparait pour garantir l’arborescence.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image0151.png"><img class="alignnone size-medium wp-image-1377" alt="image015" src="http://mcnextpost.files.wordpress.com/2013/03/image0151.png?w=300&#038;h=135" width="300" height="135" /></a></p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image0131.jpg"><img class="alignnone size-medium wp-image-1376" alt="image013" src="http://mcnextpost.files.wordpress.com/2013/03/image0131.jpg?w=256&#038;h=300" width="256" height="300" /></a></p>
<p>SSIS rajoute une clé de substitution à chaque élément enfant. Un identifiant <i>ParentID</i> est ajouté au parent, un <i>ChildID</i> à l’enfant et un <i>ChildParentID</i> pour désigner la liaison entre le parent et l’enfant. Les données sont aplaties dans une forme tabulaire en sortie du composant.</p>
<p>En fonction de la complexité de l’arborescence du fichier XML, nous pouvons vite imaginer la difficulté de gérer cette solution.</p>
<p>Il reste à achever le traitement de transformation une fois les sources de sortie du composent identifiées. Rappelez-vous les attributs de balise comme <b><i>ElementEntete</i></b> ou <b><i>ElementDetail</i></b> ! Comment prendre en compte le nom du champ contenu dans l’attribut et la valeur réelle dans le texte de la balise ? Et bien, on va pivoter le tout.</p>
<h4>Pivot</h4>
<p>Cette tâche de transformation de tableau croisé dynamique permet à un ensemble de données normalisées en ligne d’être modifier en données moins normalisées, mais plus compacte. Ceci grâce au croisement dynamique des données du flux.</p>
<p>A partir d’une représentation tabulaire d’un niveau (balise XML). La ligne d’entête est à extraire de la chaine.</p>
<p>XML source extrait</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image0171.jpg"><img class="alignnone size-full wp-image-1378" alt="image017" src="http://mcnextpost.files.wordpress.com/2013/03/image0171.jpg?w=630"   /></a></p>
<p>Représentation tabulaire de sortie souhaitée</p>
<table style="font-family:Verdana;font-size:10px;" width="410" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="74">ENTETE_ID</td>
<td valign="top" width="51">NM</td>
<td valign="top" width="55">TYPCIRC</td>
<td valign="top" width="57">HD</td>
<td valign="top" width="54">DE</td>
<td valign="top" width="54">FE</td>
<td valign="top" width="30">LT</td>
<td valign="top" width="36">MT</td>
</tr>
<tr>
<td valign="top" width="74">3</td>
<td valign="top" width="51">044101</td>
<td valign="top" width="55">Réelle</td>
<td valign="top" width="57">00:10:00</td>
<td valign="top" width="54">Cerbèce</td>
<td valign="top" width="54">Portbou</td>
<td valign="top" width="30">0,9</td>
<td valign="top" width="36">3,08</td>
</tr>
</tbody>
</table>
<p>En sortie du composant XML Source, la structure générée est la suivante :</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image0181.jpg"><img class="alignnone size-medium wp-image-1381" alt="image018" src="http://mcnextpost.files.wordpress.com/2013/03/image0181.jpg?w=417&#038;h=205" width="417" height="205" /></a></p>
<p>Les éléments attribut de balise XML sont récupérés sous le champ « Nom » et la valeur sous « text » (voir image ci-dessus).</p>
<p>En utilisant le composant de tâche Pivot, nous obtenons la représentation tabulaire de sortie souhaitée (voir ci-dessus le tableau). En effet, nous allons faire une <a href="http://msdn.microsoft.com/en-us/library/ms140308.aspx">transformation de pivot</a> avec la valeur « Texte », en colonne « Nom » et en ligne l’identifiant de l’entête.</p>
<table style="font-family:Verdana;font-size:10px;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="113">Pivot_Key</td>
<td valign="top" width="123">Nom</td>
</tr>
<tr>
<td valign="top" width="113">Set Key</td>
<td valign="top" width="123">ENTETE_ID</td>
</tr>
<tr>
<td valign="top" width="113">Pivot_Value</td>
<td valign="top" width="123">Text</td>
</tr>
</tbody>
</table>
<p><b>Mise en place de la tâche pivot.</b></p>
<p><strong>1</strong> &#8211; Positionner sur l’onglet des propriétés d’entrées et sortie. Etendre jusqu’au « Input Columns » est renseigné le paramètre « <b><i>PivotUsage</i></b> » des champs comme suit :</p>
<ol>
<ul>
<li>LIGNE_ID : PivotUsage à 1</li>
<li>Nom : PivotUsage à 2</li>
<li>Text : PivotUsage à 3</li>
</ul>
</ol>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image0201.jpg"><img class="size-medium wp-image-1382 aligncenter" alt="image020" src="http://mcnextpost.files.wordpress.com/2013/03/image0201.jpg?w=300&#038;h=289" width="300" height="289" /></a></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td rowspan="4" valign="top" width="85">PivotUsage</td>
<td valign="top" width="28">0</td>
<td valign="top" width="644">La valeur n’est pas pivotée, elle passe en sortie du traitement</td>
</tr>
<tr>
<td valign="top" width="28">1</td>
<td valign="top" width="644">La valeur fait partie de la clé d&rsquo;ensemble qui identifie une ou plusieurs rangées dans le cadre d&rsquo;une série. Toutes les lignes d&rsquo;entrée avec la clé même ensemble sont combinées en une seule ligne de sortie.</td>
</tr>
<tr>
<td valign="top" width="28">2</td>
<td valign="top" width="644">La colonne est une colonne pivot. Au moins une colonne est créée à partir de chaque valeur de colonne.</td>
</tr>
<tr>
<td valign="top" width="28">3</td>
<td valign="top" width="644">Les valeurs de cette colonne sont mises en colonnes qui sont créées à la suite du pivotement.</td>
</tr>
</tbody>
</table>
<p><strong>2 &#8211; </strong> Configuration des champs de sortie. Cette partie est la plus manuelle</p>
<p style="padding-left:30px;">a. Etendre « Pivot Default Output » jusqu’au « Output Columns ».<br />
b. Cliquer sur « Add Columns » pour obtenir 8 colonnes<br />
c. Sélectionner la première colonne</p>
<p style="padding-left:60px;">i. Renommer la « LIGNE_ID »<br />
ii. Changer la propriété « SourceColumn » pour qu’il corresponde avec la propriété « LineageID » du champ LIGNE_ID présent dans les « Input Columns ». Ici 85 dans notre exemple.</p>
<p style="padding-left:30px;">d. Sur le reste des colonnes</p>
<p style="padding-left:60px;">i. Renommer les champs avec les libellés contenus dans la colonne « Nom »<br />
ii. Changer pour tous la propriété « SourceColumn » pour qu’il corresponde avec la propriété « LineageID » du champ Text présent dans les « Input Columns ». On renseigne ici l’alimentation de la future colonne de sortie lors du process.<br />
iii.La propriété « PivotKeyValue » qui permet le dispache des données doit-être renseigner. Les valeurs possibles proviennent de la colonne d’entrée « Nom ». Exemple pour la sortie NM, PivotKeyValue = NM</p>
<p style="padding-left:60px;"><a href="http://mcnextpost.files.wordpress.com/2013/03/image0221.png"><img class="alignnone size-medium wp-image-1383" alt="image022" src="http://mcnextpost.files.wordpress.com/2013/03/image0221.png?w=300&#038;h=280" width="300" height="280" /></a></p>
<p><b>Sortie du composant Pivot</b></p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image0241.jpg"><img class="alignnone size-medium wp-image-1384" alt="image024" src="http://mcnextpost.files.wordpress.com/2013/03/image0241.jpg?w=598&#038;h=292" width="598" height="292" /></a></p>
<h4>Merge Join</h4>
<p>Ce composant de rapprochement des données est utilisé pour reconstruire dans un dataset les valeurs qui seront par la suite stockées.</p>
<p>Nous n’allons pas revenir sur un composant simple. Il s’agit ici d’utiliser les identifiants ID générés automatiquement par la mise à plat du fichier XML.</p>
<h3>Conclusion</h3>
<p>Dans cet article, Intregration Services peut être utilisé pour sortir des données d’attribut des balises d’un fichier XML. Le composant source XML effectue un travail amont de tabularisation des données qui est simple d’exploiter. Le pivotement des données est clé dans l’exemple pris. N’oubliez pas que le traitement du fichier se réalise en mémoire vis-à-vis des volumétries.</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/decisionnel/'>Décisionnel</a>, <a href='http://mcnextpost.com/category/decisionnel/tutorial-bi/'>Tutorial BI</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1336&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/04/02/integration-dune-source-xml-en-ssis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a8edec546146c96aa22afa2f3d9d801e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sylvainpages</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image0011.png?w=300" medium="image">
			<media:title type="html">XML Noeud definition</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image0031.png?w=300" medium="image">
			<media:title type="html">image003</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image0071.png?w=300" medium="image">
			<media:title type="html">image007</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image0051.png?w=288" medium="image">
			<media:title type="html">image005</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image0091.jpg?w=300" medium="image">
			<media:title type="html">image009</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image0111.jpg?w=300" medium="image">
			<media:title type="html">image011</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image0151.png?w=300" medium="image">
			<media:title type="html">image015</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image0131.jpg?w=256" medium="image">
			<media:title type="html">image013</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image0171.jpg" medium="image">
			<media:title type="html">image017</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image0181.jpg?w=300" medium="image">
			<media:title type="html">image018</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image0201.jpg?w=300" medium="image">
			<media:title type="html">image020</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image0221.png?w=300" medium="image">
			<media:title type="html">image022</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image0241.jpg?w=300" medium="image">
			<media:title type="html">image024</media:title>
		</media:content>
	</item>
		<item>
		<title>Migration SQL Server 2008 vers 2012</title>
		<link>http://mcnextpost.com/2013/03/29/migration-sql-server-2008-vers-2012/</link>
		<comments>http://mcnextpost.com/2013/03/29/migration-sql-server-2008-vers-2012/#comments</comments>
		<pubDate>Fri, 29 Mar 2013 16:31:08 +0000</pubDate>
		<dc:creator>ltabii</dc:creator>
				<category><![CDATA[Décisionnel]]></category>
		<category><![CDATA[Tutorial BI]]></category>
		<category><![CDATA[migration SQL server]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[SSIS]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1444</guid>
		<description><![CDATA[1 : Objectif Ce document a pour but de définir un mode opératoire pour la migration de SQL Server 2008 vers SQL Server 2012. Il vise à décrire les étapes à suivre pour la restauration de la base de données, la migration et le déploiement d&#8217;une solution SSIS. 2 : Restauration de la base de données Pour la restauration [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1444&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div>
<h1>1 : Objectif</h1>
</div>
<p>Ce document a pour but de définir un mode opératoire pour la migration de SQL Server 2008 vers SQL Server 2012.</p>
<p>Il vise à décrire les étapes à suivre pour la restauration de la base de données, la migration et le déploiement d&rsquo;une solution SSIS.</p>
<div>
<h1>2 : Restauration de la base de données</h1>
</div>
<p>Pour la restauration de la base de données je vous invite à suivre les étapes suivantes :</p>
<p><b>Etape 1</b> : Connectez-vous à votre instance SQL Server 2012 via SQL Management Studio.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image-1-tutorial-migration-sql-server-2008-vers-2012.png"><img class="aligncenter size-full wp-image-1446" alt="Image 1 Tutorial Migration SQL Server 2008 vers 2012" src="http://mcnextpost.files.wordpress.com/2013/03/image-1-tutorial-migration-sql-server-2008-vers-2012.png?w=630"   /></a></p>
<p><b>Etape 2</b> : Faites clics  droits sur Bases de données  -&gt; Restaurer la base de données… .</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image-2-tutorial-migration-sql-server-2008-vers-2012.png"><img class="aligncenter size-full wp-image-1447" alt="Image 2 Tutorial Migration SQL Server 2008 vers 2012" src="http://mcnextpost.files.wordpress.com/2013/03/image-2-tutorial-migration-sql-server-2008-vers-2012.png?w=630"   /></a></p>
<p><b>Etape 3</b> : A partir de l’unité choisissez la source de données que vous souhaitez restaurer en ajoutant le chemin d’accès du fichier .bak (Dans mon exemple je restaure « MCNEXT_Tests.bak »</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image-3-tutorial-migration-sql-server-2008-vers-2012.png"><img class="aligncenter size-full wp-image-1448" alt="Image 3 Tutorial Migration SQL Server 2008 vers 2012" src="http://mcnextpost.files.wordpress.com/2013/03/image-3-tutorial-migration-sql-server-2008-vers-2012.png?w=630&#038;h=538" width="630" height="538" /></a></p>
<p><b>Etape 4</b> : Après avoir ajouté le fichier « .bak » sélectionnez la base de destination.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image-4-tutorial-migration-sql-server-2008-vers-2012.png"><img class="aligncenter size-full wp-image-1449" alt="Image 4 Tutorial Migration SQL Server 2008 vers 2012" src="http://mcnextpost.files.wordpress.com/2013/03/image-4-tutorial-migration-sql-server-2008-vers-2012.png?w=630&#038;h=539" width="630" height="539" /></a></p>
<p>Sélectionner la Base de données ajouté.</p>
<p><b>Etape 5</b> : Cliquez sur &quot;ok&quot; pour lancer la restauration.</p>
<p><b>Etape 6</b> : Afin de visualiser la base de données cliquez sur Actualisez</p>
<div>
<h1>3 : Migration des packages  SSIS</h1>
</div>
<p>Pour la migration d’un package SSIS je vous invite à suivre les étapes suivantes :</p>
<p><b>Etape 1</b>: Nouveau projet</p>
<p>-&gt; Choisissez ‘Integration Services Project’</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image-5-tutorial-migration-sql-server-2008-vers-2012.png"><img class="aligncenter size-full wp-image-1450" alt="Image 5 Tutorial Migration SQL Server 2008 vers 2012" src="http://mcnextpost.files.wordpress.com/2013/03/image-5-tutorial-migration-sql-server-2008-vers-2012.png?w=630&#038;h=436" width="630" height="436" /></a></p>
<p><b>Etape 2</b> : Sélectionnez la solution SSIS à importer</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image-6-tutorial-migration-sql-server-2008-vers-2012.png"><img class="aligncenter size-full wp-image-1451" alt="Image 6 Tutorial Migration SQL Server 2008 vers 2012" src="http://mcnextpost.files.wordpress.com/2013/03/image-6-tutorial-migration-sql-server-2008-vers-2012.png?w=630&#038;h=432" width="630" height="432" /></a></p>
<p><b>Etape 3</b> : Assistant de conversion</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image-7-tutorial-migration-sql-server-2008-vers-2012.png"><img class="aligncenter size-full wp-image-1452" alt="Image 7 Tutorial Migration SQL Server 2008 vers 2012" src="http://mcnextpost.files.wordpress.com/2013/03/image-7-tutorial-migration-sql-server-2008-vers-2012.png?w=630"   /></a></p>
<p>-&gt; Cliquez sur le bouton Suivant</p>
<p><b>Etape 4 : </b><b> </b></p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image-8-tutorial-migration-sql-server-2008-vers-2012.png"><img class="aligncenter size-full wp-image-1453" alt="Image 8 Tutorial Migration SQL Server 2008 vers 2012" src="http://mcnextpost.files.wordpress.com/2013/03/image-8-tutorial-migration-sql-server-2008-vers-2012.png?w=630"   /></a></p>
<p>-&gt; Cliquez sur le bouton Terminer</p>
<p><b>Etape 5</b> : Assistant de mise à niveau de Package SSIS</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image-9-tutorial-migration-sql-server-2008-vers-2012.png"><img class="aligncenter size-full wp-image-1454" alt="Image 9 Tutorial Migration SQL Server 2008 vers 2012" src="http://mcnextpost.files.wordpress.com/2013/03/image-9-tutorial-migration-sql-server-2008-vers-2012.png?w=630&#038;h=589" width="630" height="589" /></a></p>
<p>-&gt; Cliquez sur le bouton Suivant</p>
<p><b>Etape 6</b> :</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image-10-tutorial-migration-sql-server-2008-vers-2012.png"><img class="aligncenter size-full wp-image-1455" alt="Image 10 Tutorial Migration SQL Server 2008 vers 2012" src="http://mcnextpost.files.wordpress.com/2013/03/image-10-tutorial-migration-sql-server-2008-vers-2012.png?w=630&#038;h=591" width="630" height="591" /></a></p>
<p>-&gt; Sélectionnez le package</p>
<p><b>Etape 7</b> :</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image-11-tutorial-migration-sql-server-2008-vers-2012.png"><img class="aligncenter size-full wp-image-1456" alt="Image 11 Tutorial Migration SQL Server 2008 vers 2012" src="http://mcnextpost.files.wordpress.com/2013/03/image-11-tutorial-migration-sql-server-2008-vers-2012.png?w=630&#038;h=591" width="630" height="591" /></a></p>
<p>-&gt; Sélectionnez : « Update connection strings to use new provider names » et « Continue upgrade process when a package upgrade fails</p>
<p><b>Etape 8</b> : Fin de l’assistant</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image-12-tutorial-migration-sql-server-2008-vers-2012.png"><img class="aligncenter size-full wp-image-1457" alt="Image 12 Tutorial Migration SQL Server 2008 vers 2012" src="http://mcnextpost.files.wordpress.com/2013/03/image-12-tutorial-migration-sql-server-2008-vers-2012.png?w=630&#038;h=589" width="630" height="589" /></a></p>
<p>-&gt; Cliquez sur le bouton Terminer</p>
<p><b>Etape 9 : </b></p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image-13-tutorial-migration-sql-server-2008-vers-2012.png"><img class="aligncenter size-full wp-image-1458" alt="Image 13 Tutorial Migration SQL Server 2008 vers 2012" src="http://mcnextpost.files.wordpress.com/2013/03/image-13-tutorial-migration-sql-server-2008-vers-2012.png?w=630&#038;h=589" width="630" height="589" /></a></p>
<p>-&gt; Cliquez sur le bouton Fermer</p>
<p><b>Etape 10</b> :</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/image-14-tutorial-migration-sql-server-2008-vers-2012.png"><img class="aligncenter size-full wp-image-1459" alt="Image 14 Tutorial Migration SQL Server 2008 vers 2012" src="http://mcnextpost.files.wordpress.com/2013/03/image-14-tutorial-migration-sql-server-2008-vers-2012.png?w=630"   /></a></p>
<div>
<h1>4 : La conversion en modèle de déploiement de projet</h1>
</div>
<p>Si vous avez créé le projet sous SQL Server 2012, le projet utilise le modèle de déploiement du projet par défaut sinon dans le cas d’une migration il faut le convertir en modèle de déploiement de projet.</p>
<p>Pour cela je vous invite à suivre les étapes suivantes :</p>
<p><b>Etape 1 </b>: Faites clics  droits sur la solution SSIS  -&gt; Convertir le projet en modèle de déploiement… .       <a href="http://mcnextpost.files.wordpress.com/2013/03/110.png"><img class=" wp-image-1512 aligncenter" alt="1" src="http://mcnextpost.files.wordpress.com/2013/03/110.png?w=350&#038;h=300" width="350" height="300" /></a></p>
<p><b>Etape 2 </b>: Assistant Conversion de projet Integration Services<b></b></p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/210.png"><img class=" wp-image-1513 aligncenter" alt="2" src="http://mcnextpost.files.wordpress.com/2013/03/210.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt; Cliquez sur le bouton Suivant</p>
<p><b> </b><b>Etape 3 </b>:<b> </b>Définir les options sur la page Sélectionner les package<b></b></p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/33.png"><img class=" wp-image-1514 aligncenter" alt="3" src="http://mcnextpost.files.wordpress.com/2013/03/33.png?w=500&#038;h=350" width="500" height="350" /></a></p>
<p>-&gt; Sélectionnez le package</p>
<p><b>Etape 4 </b>:<b> </b>Définir les options sur la page Spécifier les propriétés du projet<b></b></p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/41.png"><img class=" wp-image-1515 aligncenter" alt="4" src="http://mcnextpost.files.wordpress.com/2013/03/41.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt; Indiquez le nom du projet.</p>
<p>-&gt; Sélectionnez le niveau de protection des packages</p>
<p>-&gt; Tapez une description facultative du projet</p>
<p><b>Etape 5 </b>:<b> </b>Définir les options sur la page Mettre à jour la tâche d&rsquo;exécution de package</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/51.png"><img class=" wp-image-1516 aligncenter" alt="5" src="http://mcnextpost.files.wordpress.com/2013/03/51.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt; Cliquez sur le bouton Suivant</p>
<p><b>Etape 6 </b>: Définir les options sur la page Sélectionner les configurations</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/61.png"><img class=" wp-image-1517 aligncenter" alt="6" src="http://mcnextpost.files.wordpress.com/2013/03/61.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt; Ajoutez les configurations de package que vous souhaitez remplacer à l&rsquo;aide de paramètres</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/71.png"><img class=" wp-image-1518 aligncenter" alt="7" src="http://mcnextpost.files.wordpress.com/2013/03/71.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt; Sélectionnez les configurations de package que vous souhaitez remplacer par des paramètres.</p>
<p>-&gt; Sélectionnez «<b> Remove configurations from all packages after conversion </b>» afin de Supprimer les configurations de tous les packages après la conversion</p>
<p><b>Etape 7 </b>: Définir les options sur la page Créer des paramètres</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/81.png"><img class=" wp-image-1519 aligncenter" alt="8" src="http://mcnextpost.files.wordpress.com/2013/03/81.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt;Sélectionnez le package.</p>
<p>-&gt;Indiquez le nom du paramètre.</p>
<p>-&gt;Sélectionnez l&rsquo;étendue du paramètre, package ou projet.</p>
<p><b>Etape 8 </b>: Définir les options sur la page Configurer les paramètres</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/91.png"><img class=" wp-image-1520 aligncenter" alt="9" src="http://mcnextpost.files.wordpress.com/2013/03/91.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt;Indiquez le chemin d’accès aux sources de données</p>
<p><b>Etape 9 </b>:</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/101.png"><img class=" wp-image-1521 aligncenter" alt="10" src="http://mcnextpost.files.wordpress.com/2013/03/101.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt;Cliquez sur le bouton Suivant</p>
<p><b>Etape 10 </b>: La page Effectuer la conversion indique l&rsquo;état de la conversion du projet</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/111.png"><img class=" wp-image-1522 aligncenter" alt="11" src="http://mcnextpost.files.wordpress.com/2013/03/111.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt;Cliquez sur le bouton Ferme</p>
<div>
<h1>5 : Déploiement</h1>
</div>
<p>Le déploiement est une chose qui a pas mal changé dans SQL Server 2012, un nouveau dossier est apparu dans management studio : « <b>Integration Services Catalogs</b> ».</p>
<p>Ce dossier sera l’endroit où les packages seront déployés et l’endroit où les variables d’environnement seront créées.</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/121.png"><img class=" wp-image-1523 aligncenter" alt="12" src="http://mcnextpost.files.wordpress.com/2013/03/121.png?w=400&#038;h=200" width="400" height="200" /></a></p>
<p>Avant de pouvoir déployer des projets sur le serveur Integration Services, celui-ci doit contenir le catalogue SSISDB. Le programme d&rsquo;installation de SQL Server 2012 ne crée pas automatiquement le catalogue vous devez le créer manuellement</p>
<p>Pour cela je vous invite à suivre les étapes suivantes :</p>
<p><b>Etape 1 </b>: Créer un catalog</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/131.png"><img class=" wp-image-1524 aligncenter" alt="13" src="http://mcnextpost.files.wordpress.com/2013/03/131.png?w=400&#038;h=230" width="400" height="230" /></a></p>
<p>-&gt;Faites clics  droits sur Integration Services Catalogs  -&gt; Créer un Catalog… .</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/141.png"><img class=" wp-image-1525 aligncenter" alt="14" src="http://mcnextpost.files.wordpress.com/2013/03/141.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt;Saisissez un mot de passe</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/151.png"><img class="size-medium wp-image-1526 aligncenter" alt="15" src="http://mcnextpost.files.wordpress.com/2013/03/151.png?w=288&#038;h=227" width="288" height="227" /></a></p>
<p>Les objets stockés dans le catalogue SSISDB sont les projets, les packages, les paramètres, les environnements et l&rsquo;historique opérationnel.</p>
<p><b>Etape 2 </b>: Déployer</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/161.png"><img class=" wp-image-1527 aligncenter" alt="16" src="http://mcnextpost.files.wordpress.com/2013/03/161.png?w=400&#038;h=200" width="400" height="200" /></a></p>
<p>-&gt;Faites clics droits sur la solution SSIS  -&gt; Déployer… .</p>
<p><b>Etape 3 </b>: Assistant Déploiement d&rsquo;Integration Services</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/171.png"><img class=" wp-image-1528 aligncenter" alt="17" src="http://mcnextpost.files.wordpress.com/2013/03/171.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt;Cliquez sur le bouton Suivant</p>
<p><b>Etape 4 </b>: Sélectionner une source</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/181.png"><img class=" wp-image-1529 aligncenter" alt="18" src="http://mcnextpost.files.wordpress.com/2013/03/181.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt;Sélectionnez Fichier de déploiement de projet</p>
<p>-&gt;Entrez le chemin d&rsquo;accès du fichier .ispac</p>
<p><b>Etape 5 </b>:</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/191.png"><img class=" wp-image-1530 aligncenter" alt="19" src="http://mcnextpost.files.wordpress.com/2013/03/191.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt;Entrez le nom du serveur.</p>
<p>-&gt;Sélectionnez la destination du projet.</p>
<p><b>Etape 6 </b>:</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/201.png"><img class=" wp-image-1531 aligncenter" alt="20" src="http://mcnextpost.files.wordpress.com/2013/03/201.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt;Cliquez sur déployer</p>
<p><b>Etape 7 </b>: Fin de l’assistant</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/211.png"><img class=" wp-image-1532 aligncenter" alt="21" src="http://mcnextpost.files.wordpress.com/2013/03/211.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt;Cliquez sur Fermer pour quitter l’assistant</p>
<p>La solution SSIS <i>est installée </i>dans le Management Studio</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/221.png"><img class=" wp-image-1533 aligncenter" alt="22" src="http://mcnextpost.files.wordpress.com/2013/03/221.png?w=300&#038;h=300" width="300" height="300" /></a></p>
<p>L’autre nouveauté de SSIS dans SQL Server 2012 c’est la gestion des environnements, il vous suffit maintenant de créer un environnement dans SSIS pour chaque environnement physique (Dev, Prod…) et d’y attribuer les valeurs correspondantes.</p>
<p>Pour cela je vous invite à suivre les étapes suivantes :</p>
<p><b>Etape 8 </b>: Faites clics  droits sur le dossier Environnement  -&gt; Créer Environnement… .</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/0.png"><img class="aligncenter" alt="0" src="http://mcnextpost.files.wordpress.com/2013/03/0.png?w=350&#038;h=300" width="350" height="300" /></a></p>
<p><b>Etape 9 : </b></p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/241.png"><img class=" wp-image-1535 aligncenter" alt="24" src="http://mcnextpost.files.wordpress.com/2013/03/241.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt;Tapez un nom pour l&rsquo;environnement</p>
<p><b>Etape 10 : </b>Faites clics  droits sur Environnement  -&gt; Propriétés… .</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/251.png"><img class=" wp-image-1536 aligncenter" alt="25" src="http://mcnextpost.files.wordpress.com/2013/03/251.png?w=380&#038;h=282" width="380" height="282" /></a></p>
<p><b>Etape 11: </b>Dans la page « Variables »</p>
<p style="text-align:center;"> <a href="http://mcnextpost.files.wordpress.com/2013/03/261.png"><img class=" wp-image-1537 aligncenter" alt="26" src="http://mcnextpost.files.wordpress.com/2013/03/261.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt;Choisissez un nom de la variable.</p>
<p>-&gt;Sélectionnez le Type de la variable</p>
<p>-&gt;Entrez la Valeur de la variable d&rsquo;environnement.</p>
<p><b>Etape 12: </b>Dans la page « Permissions »: Vous pouvez accorder ou refusez des autorisations pour les rôles et les utilisateurs.</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/271.png"><img class=" wp-image-1538 aligncenter" alt="27" src="http://mcnextpost.files.wordpress.com/2013/03/271.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt;Cliquez sur <img class="alignnone" alt="ok" src="http://mcnextpost.files.wordpress.com/2013/03/ok.png?w=40&#038;h=11" width="40" height="11" /> pour enregistrer les propriétés de l&rsquo;environnement.</p>
<p><b>Etape 13 : </b>Dans l’Explorateur d’objets, faites clics  droits sur la solution  -&gt; Configurer… .</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/281.png"><img class="size-medium wp-image-1539 aligncenter" alt="28" src="http://mcnextpost.files.wordpress.com/2013/03/281.png?w=300&#038;h=275" width="300" height="275" /></a></p>
<p><b>Etape 14: </b>Dans la page « Références »: procédez comme suit pour ajouter une variable:</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/291.png"><img class=" wp-image-1540 aligncenter" alt="29" src="http://mcnextpost.files.wordpress.com/2013/03/291.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt;Cliquez sur Ajouter pour ajouter un environnement</p>
<p>-&gt;Cliquez sur  <img alt="ok" src="http://mcnextpost.files.wordpress.com/2013/03/ok.png?w=40&#038;h=11" width="40" height="11" /> pour enregistrer la référence dans l&rsquo;environnement.</p>
<p><b>Etape 15:</b></p>
<p>Dans l&rsquo;onglet « Connection Managers » de la page « Paramètre » : Vous pouvez mapper la variable d’environnement à une propriété du gestionnaire de connexions.</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/301.png"><img class=" wp-image-1541 aligncenter" alt="30" src="http://mcnextpost.files.wordpress.com/2013/03/301.png?w=500&#038;h=400" width="500" height="400" /></a></p>
<p>-&gt;cliquez sur le bouton Parcourir en regard du champ Valeur.</p>
<p>-&gt;Sélectionnez variable d&rsquo;environnement.</p>
<p>-&gt;Choisissez la variable d&rsquo;environnement que vous avez créée.</p>
<p>-&gt;Cliquez deux fois sur <img alt="ok" src="http://mcnextpost.files.wordpress.com/2013/03/ok.png?w=40&#038;h=11" width="40" height="11" /> pour enregistrer vos modifications.</p>
<p><b>Etape 16: </b>Faites clics  droits sur le package  -&gt; Exécute… .</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/03/311.png"><img class=" wp-image-1542 aligncenter" alt="31" src="http://mcnextpost.files.wordpress.com/2013/03/311.png?w=350&#038;h=300" width="350" height="300" /></a></p>
<p style="text-align:center;">    <a href="http://mcnextpost.files.wordpress.com/2013/03/321.png"><img class=" wp-image-1543 aligncenter" alt="32" src="http://mcnextpost.files.wordpress.com/2013/03/321.png?w=550&#038;h=400" width="550" height="400" /></a></p>
<p>-&gt;Sélectionnez l’environnement.</p>
<p>-&gt;Cliquez sur <img alt="ok" src="http://mcnextpost.files.wordpress.com/2013/03/ok.png?w=40&#038;h=11" width="40" height="11" /> pour lancer l’exécution.</p>
<p>Tutorial rédigé par Laila TABII</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/decisionnel/'>Décisionnel</a>, <a href='http://mcnextpost.com/category/decisionnel/tutorial-bi/'>Tutorial BI</a> Tagged: <a href='http://mcnextpost.com/tag/migration-sql-server/'>migration SQL server</a>, <a href='http://mcnextpost.com/tag/sql-server-2012/'>SQL Server 2012</a>, <a href='http://mcnextpost.com/tag/ssis/'>SSIS</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1444&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/03/29/migration-sql-server-2008-vers-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6735bcdafc040417baa54f78ee260984?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ltabii</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image-1-tutorial-migration-sql-server-2008-vers-2012.png" medium="image">
			<media:title type="html">Image 1 Tutorial Migration SQL Server 2008 vers 2012</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image-2-tutorial-migration-sql-server-2008-vers-2012.png" medium="image">
			<media:title type="html">Image 2 Tutorial Migration SQL Server 2008 vers 2012</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image-3-tutorial-migration-sql-server-2008-vers-2012.png" medium="image">
			<media:title type="html">Image 3 Tutorial Migration SQL Server 2008 vers 2012</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image-4-tutorial-migration-sql-server-2008-vers-2012.png" medium="image">
			<media:title type="html">Image 4 Tutorial Migration SQL Server 2008 vers 2012</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image-5-tutorial-migration-sql-server-2008-vers-2012.png" medium="image">
			<media:title type="html">Image 5 Tutorial Migration SQL Server 2008 vers 2012</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image-6-tutorial-migration-sql-server-2008-vers-2012.png" medium="image">
			<media:title type="html">Image 6 Tutorial Migration SQL Server 2008 vers 2012</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image-7-tutorial-migration-sql-server-2008-vers-2012.png" medium="image">
			<media:title type="html">Image 7 Tutorial Migration SQL Server 2008 vers 2012</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image-8-tutorial-migration-sql-server-2008-vers-2012.png" medium="image">
			<media:title type="html">Image 8 Tutorial Migration SQL Server 2008 vers 2012</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image-9-tutorial-migration-sql-server-2008-vers-2012.png" medium="image">
			<media:title type="html">Image 9 Tutorial Migration SQL Server 2008 vers 2012</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image-10-tutorial-migration-sql-server-2008-vers-2012.png" medium="image">
			<media:title type="html">Image 10 Tutorial Migration SQL Server 2008 vers 2012</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image-11-tutorial-migration-sql-server-2008-vers-2012.png" medium="image">
			<media:title type="html">Image 11 Tutorial Migration SQL Server 2008 vers 2012</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image-12-tutorial-migration-sql-server-2008-vers-2012.png" medium="image">
			<media:title type="html">Image 12 Tutorial Migration SQL Server 2008 vers 2012</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image-13-tutorial-migration-sql-server-2008-vers-2012.png" medium="image">
			<media:title type="html">Image 13 Tutorial Migration SQL Server 2008 vers 2012</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/image-14-tutorial-migration-sql-server-2008-vers-2012.png" medium="image">
			<media:title type="html">Image 14 Tutorial Migration SQL Server 2008 vers 2012</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/110.png?w=300" medium="image">
			<media:title type="html">1</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/210.png?w=300" medium="image">
			<media:title type="html">2</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/33.png?w=300" medium="image">
			<media:title type="html">3</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/41.png?w=300" medium="image">
			<media:title type="html">4</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/51.png?w=300" medium="image">
			<media:title type="html">5</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/61.png?w=300" medium="image">
			<media:title type="html">6</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/71.png?w=300" medium="image">
			<media:title type="html">7</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/81.png?w=300" medium="image">
			<media:title type="html">8</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/91.png?w=300" medium="image">
			<media:title type="html">9</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/101.png?w=300" medium="image">
			<media:title type="html">10</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/111.png?w=300" medium="image">
			<media:title type="html">11</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/121.png?w=300" medium="image">
			<media:title type="html">12</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/131.png?w=300" medium="image">
			<media:title type="html">13</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/141.png?w=300" medium="image">
			<media:title type="html">14</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/151.png?w=288" medium="image">
			<media:title type="html">15</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/161.png?w=300" medium="image">
			<media:title type="html">16</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/171.png?w=300" medium="image">
			<media:title type="html">17</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/181.png?w=300" medium="image">
			<media:title type="html">18</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/191.png?w=300" medium="image">
			<media:title type="html">19</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/201.png?w=300" medium="image">
			<media:title type="html">20</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/211.png?w=300" medium="image">
			<media:title type="html">21</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/221.png?w=251" medium="image">
			<media:title type="html">22</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/0.png" medium="image" />

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/241.png?w=300" medium="image">
			<media:title type="html">24</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/251.png?w=263" medium="image">
			<media:title type="html">25</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/261.png?w=300" medium="image">
			<media:title type="html">26</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/271.png?w=300" medium="image">
			<media:title type="html">27</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/ok.png" medium="image">
			<media:title type="html">ok</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/281.png?w=300" medium="image">
			<media:title type="html">28</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/291.png?w=300" medium="image">
			<media:title type="html">29</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/ok.png" medium="image">
			<media:title type="html">ok</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/301.png?w=300" medium="image">
			<media:title type="html">30</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/ok.png" medium="image">
			<media:title type="html">ok</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/311.png?w=244" medium="image">
			<media:title type="html">31</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/321.png?w=300" medium="image">
			<media:title type="html">32</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/ok.png" medium="image">
			<media:title type="html">ok</media:title>
		</media:content>
	</item>
		<item>
		<title>CONFIGURATION DE LA TOPOLOGIE DE RECHERCHE SHAREPOINT 2013</title>
		<link>http://mcnextpost.com/2013/03/14/configuration-de-la-topologie-de-recherche-sharepoint-2013/</link>
		<comments>http://mcnextpost.com/2013/03/14/configuration-de-la-topologie-de-recherche-sharepoint-2013/#comments</comments>
		<pubDate>Thu, 14 Mar 2013 18:24:21 +0000</pubDate>
		<dc:creator>eissaly</dc:creator>
				<category><![CDATA[Infrastructure SharePoint]]></category>
		<category><![CDATA[SharePoint 2013]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1328</guid>
		<description><![CDATA[Les GEDs SharePoint dépassent couramment le million de documents. Dans ce contexte, il faut créer (au moins) deux indexeurs en équilibre de charge, ce qui nous permettra en plus d’offrir de la tolérance de panne. 1.       Préambule La source d’info : On retrouve logiquement une grande partie du paramétrage de fast sur http://technet.microsoft.com/fr-fr/library/jj219705.aspx Les prérequis : Pas [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1328&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><span style="font-size:medium;"><span style="color:#000000;"><span style="font-family:Calibri;">Les GEDs SharePoint dépassent couramment le million de documents. </span></span></span></p>
<p><span style="font-size:medium;"><span style="color:#000000;"><span style="font-family:Calibri;">Dans ce contexte, il faut créer (au moins) deux indexeurs en équilibre de charge, ce qui nous permettra en plus d’offrir de la tolérance de panne.</span></span></span></p>
<p><span style="color:#000000;"><b><span style="font-family:Calibri;font-size:medium;">1.</span>       </b><b><span style="font-size:medium;"><span style="font-family:Calibri;">Préambule</span></span></b></span></p>
<p><span style="text-decoration:underline;"><span style="font-size:medium;"><span style="color:#000000;"><span style="font-family:Calibri;">La source d’info : </span></span></span></span></p>
<p><span style="color:#000000;font-family:Calibri;font-size:medium;">On retrouve logiquement une grande partie du paramétrage de fast sur </span><a href="http://technet.microsoft.com/fr-fr/library/jj219705.aspx"><span style="color:#0563c1;font-family:Calibri;font-size:medium;">http://technet.microsoft.com/fr-fr/library/jj219705.aspx</span></a></p>
<p><span style="text-decoration:underline;"><span style="font-size:medium;"><span style="color:#000000;"><span style="font-family:Calibri;">Les prérequis :</span></span></span></span></p>
<p><b><i><span style="font-size:medium;"><span style="color:#000000;"><span style="font-family:Calibri;">Pas de tests en prod !</span></span></span></i></b></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;font-size:medium;">-</span>          <span style="font-family:Calibri;"><span style="font-size:medium;">Deux serveurs SharePoint 2013 sur lesquels on n’a <span style="text-decoration:underline;">pas encore</span></span><span style="font-size:medium;"> crée de service de recherche (de toute façons, vous ne voulez pas du wizard pour une install en production ;)</span></span></span></p>
<ul>
<li><span style="color:#000000;"><span style="color:#000000;"><span style="font-size:medium;">o</span>   <span style="font-size:medium;"><span style="font-family:Calibri;">Le service de recherche ne doit pas être démarré sur les autres nœuds. Si oui, il faut faire un Stop-SPEnterpriseSearchServiceInstance </span></span></span></span>-identity (noeud)</li>
</ul>
<p><span style="color:#000000;"><span style="font-family:Calibri;font-size:medium;">-</span>          <span style="font-size:medium;"><span style="font-family:Calibri;">Un répertoire local de stockage sur chaque serveur ou (mieux) plusieurs répertoires sur un espace partagé. Ils doivent exister et êtres vides.</span></span></span></p>
<ul>
<li><span style="color:#000000;"><span style="font-size:medium;">o</span>   <span style="font-size:medium;"><span style="font-family:Calibri;">Sur ces répertoires, le compte de ferme doit avoir le contrôle. Ceci se fait en accordant une permission au groupe local WSS_ADMIN_WPG qui le contient.</span></span></span></li>
<li><span style="color:#000000;"><span style="font-size:medium;">o</span>   <span style="font-family:Calibri;"><span style="font-size:medium;">Un bug fait que les répertoires sont testés localement sur le serveur ou on lance le script. Ils doivent donc être <i><span style="text-decoration:underline;">tous</span></i></span><span style="font-size:medium;"> être crées sur ce nœud si le stockage est local.</span></span></span></li>
</ul>
<p><span style="color:#000000;"><span style="font-family:Calibri;font-size:medium;">-</span>          <span style="font-size:medium;"><span style="font-family:Calibri;">Classiquement : </span></span></span></p>
<ul>
<li><span style="color:#000000;"><span style="font-size:medium;">o</span>   <span style="font-size:medium;"><span style="font-family:Calibri;">Ouvrir une session avec le compte d’Install de la ferme</span></span></span></li>
<li><span style="color:#000000;"><span style="font-size:medium;">o</span>   <span style="font-size:medium;"><span style="font-family:Calibri;">Lancer Powershell en mode administrateur</span></span></span></li>
</ul>
<p><span style="font-size:medium;"><span style="color:#000000;"><span style="font-family:Calibri;">Si vous avez créé un service de recherche avec une topologie incorrecte, ou que le script échoue, une chance, dropper un service applicatif prend deux lignes </span>J</span></span></p>
<p><i> </i><i>$spapp = Get-SPServiceApplication -Name &quot;Search Service Application&quot;<br />
</i><i> </i><i>Remove-SPServiceApplication $spapp -RemoveData</i></p>
<p><span style="font-size:medium;"><span style="color:#000000;"><span style="font-family:Calibri;">A faire avant chaque tentative. Gardez aussi à l’esprit que l’ordonnanceur interne de SharePoint n’est pas en temps réel, il vaut mieux donc attendre 5 mn avant de relancer le script au cas  où un job serait encore dans la file du SPTIMER.</span></span></span></p>
<p><span style="color:#000000;"><b><span style="font-family:Calibri;font-size:medium;">2.</span>       </b><b><span style="font-size:medium;"><span style="font-family:Calibri;">Les rôles</span></span></b></span></p>
<p><span style="font-size:medium;"><span style="color:#000000;"><span style="font-family:Calibri;">On doit répartir les rôles query, admin, stats et content sur nos deux nœuds. </span></span></span></p>
<p><span style="font-size:medium;"><span style="color:#000000;"><span style="font-family:Calibri;">Dans mon exemple, je suivrais la matrice suivante :</span></span></span></p>
<table width="304" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td nowrap="nowrap" width="104">
<p align="center"><span style="font-size:medium;"><span style="font-family:Calibri;"><i>ROLE</i><i></i></span></span></p>
</td>
<td nowrap="nowrap" width="96">
<p align="center"><span style="font-size:medium;"><span style="font-family:Calibri;"><b>SPIDX1 (Principal)</b><b></b></span></span></p>
</td>
<td nowrap="nowrap" width="104">
<p align="center"><span style="font-size:medium;"><span style="font-family:Calibri;"><b>SPIDX2 (Backup)</b><b></b></span></span></p>
</td>
</tr>
<tr>
<td nowrap="nowrap" width="104">
<p align="center"><b><span style="font-size:medium;"><span style="font-family:Calibri;">CRAWL</span></span></b></p>
</td>
<td nowrap="nowrap" width="96">
<p align="center"><b><span style="font-size:medium;"><span style="font-family:Calibri;">X</span></span></b></p>
</td>
<td nowrap="nowrap" width="104">
<p align="center"><b><span style="font-size:medium;"><span style="font-family:Calibri;">X</span></span></b></p>
</td>
</tr>
<tr>
<td nowrap="nowrap" width="104">
<p align="center"><b><span style="font-size:medium;"><span style="font-family:Calibri;">ADMIN</span></span></b></p>
</td>
<td nowrap="nowrap" width="96">
<p align="center"><b><span style="font-size:medium;"><span style="font-family:Calibri;">X</span></span></b></p>
</td>
<td nowrap="nowrap" width="104">
<p align="center"><b><span style="font-family:Calibri;font-size:medium;"> </span></b></p>
</td>
</tr>
<tr>
<td nowrap="nowrap" width="104">
<p align="center"><b><span style="font-size:medium;"><span style="font-family:Calibri;">CONTENT</span></span></b></p>
</td>
<td nowrap="nowrap" width="96">
<p align="center"><b><span style="font-size:medium;"><span style="font-family:Calibri;">X</span></span></b></p>
</td>
<td nowrap="nowrap" width="104">
<p align="center"><b><span style="font-size:medium;"><span style="font-family:Calibri;">X</span></span></b></p>
</td>
</tr>
<tr>
<td nowrap="nowrap" width="104">
<p align="center"><b><span style="font-size:medium;"><span style="font-family:Calibri;">STATS</span></span></b></p>
</td>
<td nowrap="nowrap" width="96">
<p align="center"><b><span style="font-size:medium;"><span style="font-family:Calibri;">X</span></span></b></p>
</td>
<td nowrap="nowrap" width="104">
<p align="center"><b><span style="font-family:Calibri;font-size:medium;"> </span></b></p>
</td>
</tr>
<tr>
<td nowrap="nowrap" width="104">
<p align="center"><b><span style="font-size:medium;"><span style="font-family:Calibri;">QUERY</span></span></b></p>
</td>
<td nowrap="nowrap" width="96">
<p align="center"><b><span style="font-size:medium;"><span style="font-family:Calibri;">X</span></span></b></p>
</td>
<td nowrap="nowrap" width="104">
<p align="center"><b><span style="font-size:medium;"><span style="font-family:Calibri;">X</span></span></b></p>
</td>
</tr>
</tbody>
</table>
<p><span style="color:#000000;"><b><span style="font-family:Calibri;font-size:medium;">3.</span>       </b><b><span style="font-size:medium;"><span style="font-family:Calibri;">Les partitions</span></span></b></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;font-size:medium;">-</span>          <span style="font-family:Calibri;"><span style="font-size:medium;">Le minimum pour l’équilibrage est deux partitions  </span><span style="font-size:medium;">(0/1)</span></span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;font-size:medium;">-</span>          <span style="font-size:medium;"><span style="font-family:Calibri;">Le minimum pour la tolérance de panne est de découper en un maitre et un replica pour chaque partition (0/1 répliqué en 1/0)</span></span></span></p>
<p><span style="font-size:medium;"><span style="color:#000000;"><span style="font-family:Calibri;">On aura donc <b><i><span style="text-decoration:underline;">quatre</span></i></b> composants Index.</span></span></span></p>
<p><span style="color:#000000;"><b><span style="font-family:Calibri;font-size:medium;">4.</span>       </b><b><span style="font-size:medium;"><span style="font-family:Calibri;">Le script</span></span></b></span></p>
<p><span style="font-size:medium;"><span style="color:#000000;"><span style="font-family:Calibri;">Partant de cette configuration, on peut commencer à écrire le script :</span></span></span></p>
<p><span style="font-size:medium;"><span style="color:#000000;"><span style="font-family:Calibri;">J’ai utilisé la nomenclature du technet.</span></span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;"># RAZ!</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;"># Supprime le service applicatif et les BDD existantes</span></span></p>
<p><span style="font-family:Calibri;">$spapp = Get-SPServiceApplication -Name &quot;Search Service Application&quot;</span></p>
<p><span style="font-family:Calibri;">Remove-SPServiceApplication $spapp -RemoveData</span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#Configuration Search Service Application (SSA) </span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="font-family:Calibri;">$SearchApplicationPoolName = &quot;SearchAdminApplicationPool&quot;</span></p>
<p><span style="font-family:Calibri;">$SearchApplicationPoolAccountName = &quot;SP2013\SP_SEARCH&quot;</span></p>
<p><span style="font-family:Calibri;">$SearchServiceApplicationName = &quot;Search Service Application&quot;</span></p>
<p><span style="font-family:Calibri;">$SearchServiceApplicationProxyName = &quot;Search Service Application Proxy&quot;</span></p>
<p><span style="font-family:Calibri;">$DatabaseInstance = &quot;SQL2012\SPSQL2013&quot;</span></p>
<p><span style="font-family:Calibri;">$DatabaseName = &quot;Sharepoint2013_SearchService&quot;</span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#Nom des serveurs d’index</span></span></p>
<p><span style="font-family:Calibri;">$App1 = “SPIDX1”</span></p>
<p><span style="font-family:Calibri;">$App2 = &quot;SPIDX2&quot;</span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#Reps Exemples. Attention à mettre deux reps differents en Stockage partagé!</span></span></p>
<p><span style="font-family:Calibri;">$IndexLocationServer1 = &quot;D:\IDX_HostA&quot;</span></p>
<p><span style="font-family:Calibri;">$IndexLocationServer2 = &quot;D:\IDX_HostB&quot;</span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;"># Création des reps (avec le bug local)</span></span></p>
<p><span style="font-family:Calibri;">New-Item -Path &quot;\\SPIDX1\d$\IDX_HOSTA&quot; -type directory -force</span></p>
<p><span style="font-family:Calibri;">New-Item -Path &quot;\\SPIDX1\d$\IDX_HOSTB&quot; -type directory -force</span></p>
<p><span style="font-family:Calibri;">New-Item -Path &quot;\\SPIDX2\d$\IDX_HOSTB&quot; -type directory -force</span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;"># Création du Pool s’il n’existe pas</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="font-family:Calibri;">Write-Host -ForegroundColor DarkGray &quot;Test – Pool SSA&quot;</span></p>
<p><span style="font-family:Calibri;">$SPServiceApplicationPool = Get-SPServiceApplicationPool -Identity $SearchApplicationPoolName -ErrorAction SilentlyContinue</span></p>
<p><span style="font-family:Calibri;">if (!$SPServiceApplicationPool)</span></p>
<p><span style="font-family:Calibri;">{</span></p>
<p><span style="font-family:Calibri;">Write-Host -ForegroundColor Yellow &quot;Création – Pool SSA&quot;</span></p>
<p><span style="font-family:Calibri;">$SPServiceApplicationPool = New-SPServiceApplicationPool -Name $SearchApplicationPoolName -Account $SearchApplicationPoolAccountName -Verbose</span></p>
<p><span style="font-family:Calibri;">}</span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#Search Service Application</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="font-family:Calibri;">Write-Host -ForegroundColor DarkGray &quot;Test &#8211; SSA&quot;</span></p>
<p><span style="font-family:Calibri;">$SearchServiceApplication = Get-SPEnterpriseSearchServiceApplication -Identity $SearchServiceApplicationName -ErrorAction SilentlyContinue</span></p>
<p><span style="font-family:Calibri;">if (!$SearchServiceApplication)</span></p>
<p><span style="font-family:Calibri;">{</span></p>
<p><span style="font-family:Calibri;">Write-Host -ForegroundColor Yellow &quot;Création &#8211; SSA&quot;</span></p>
<p><span style="font-family:Calibri;">$SearchServiceApplication = New-SPEnterpriseSearchServiceApplication -Name $SearchServiceApplicationName -ApplicationPool $SPServiceApplicationPool.Name -DatabaseServer $DatabaseInstance -DatabaseName $DatabaseName</span></p>
<p><span style="font-family:Calibri;">}</span></p>
<p><span style="font-family:Calibri;">Write-Host -ForegroundColor DarkGray &quot;Test &#8211; SSA Proxy&quot;</span></p>
<p><span style="font-family:Calibri;">$SearchServiceApplicationProxy = Get-SPEnterpriseSearchServiceApplicationProxy -Identity $SearchServiceApplicationProxyName -ErrorAction SilentlyContinue</span></p>
<p><span style="font-family:Calibri;">if (!$SearchServiceApplicationProxy)</span></p>
<p><span style="font-family:Calibri;">{</span></p>
<p><span style="font-family:Calibri;">Write-Host -ForegroundColor Yellow &quot;Création &#8211; SSA Proxy&quot;</span></p>
<p><span style="font-family:Calibri;">New-SPEnterpriseSearchServiceApplicationProxy -Name $SearchServiceApplicationProxyName -SearchApplication $SearchServiceApplicationName</span></p>
<p><span style="font-family:Calibri;">}</span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;"># Démarrer le service – IDX1</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="font-family:Calibri;">$HostA = Get-SPEnterpriseSearchServiceInstance -Identity $App1</span></p>
<p><span style="font-family:Calibri;">Write-Host -ForegroundColor DarkGray &quot;Test – SSI 1&quot;</span></p>
<p><span style="font-family:Calibri;">if($HostA.Status -ne &quot;Online&quot;)</span></p>
<p><span style="font-family:Calibri;">{</span></p>
<p><span style="font-family:Calibri;">Write-Host -ForegroundColor Yellow &quot;Démarrage – SSI 1&quot;</span></p>
<p><span style="font-family:Calibri;">Start-SPEnterpriseSearchServiceInstance -Identity $HostA</span></p>
<p><span style="font-family:Calibri;">While ($HostA.Status -eq &quot;Online&quot;)</span></p>
<p><span style="font-family:Calibri;">{</span></p>
<p><span style="font-family:Calibri;">Start-Sleep -s 5</span></p>
<p><span style="font-family:Calibri;">}</span></p>
<p><span style="font-family:Calibri;">Write-Host -ForegroundColor Yellow &quot;SSI 1 Démarré&quot;</span></p>
<p><span style="font-family:Calibri;">}</span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;"># Démarrer le service – IDX2</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="font-family:Calibri;">$HostB = Get-SPEnterpriseSearchServiceInstance -Identity $App2</span></p>
<p><span style="font-family:Calibri;">Write-Host -ForegroundColor DarkGray &quot; Test – SSI 2&quot;</span></p>
<p><span style="font-family:Calibri;">if($HostB.Status -ne &quot;Online&quot;)</span></p>
<p><span style="font-family:Calibri;">{</span></p>
<p><span style="font-family:Calibri;">Write-Host -ForegroundColor Yellow &quot; Démarrage– SSI 2&quot;</span></p>
<p><span style="font-family:Calibri;">Start-SPEnterpriseSearchServiceInstance -Identity $HostB</span></p>
<p><span style="font-family:Calibri;">While ($HostB.Status -eq &quot;Online&quot;)</span></p>
<p><span style="font-family:Calibri;">{</span></p>
<p><span style="font-family:Calibri;">Start-Sleep -s 5</span></p>
<p><span style="font-family:Calibri;">}</span></p>
<p><span style="font-family:Calibri;">Write-Host -ForegroundColor Yellow &quot;SSI 2 Démarré&quot;</span></p>
<p><span style="font-family:Calibri;">}</span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;"># Créer une nouvelle topologie vide pour pouvoir la modifier, et la remplir.</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="font-family:Calibri;">$InitialSearchTopology = $SearchServiceApplication |</span></p>
<p><span style="font-family:Calibri;">Get-SPEnterpriseSearchTopology -Active</span></p>
<p><span style="font-family:Calibri;">$NewSearchTopology = $SearchServiceApplication | New-SPEnterpriseSearchTopology</span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;"># Composants IDX1 : Stats, Index, Crawl, Admin, Query</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="font-family:Calibri;">New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostA</span></p>
<p><span style="font-family:Calibri;">New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostA</span></p>
<p><span style="font-family:Calibri;">New-SPEnterpriseSearchCrawlComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostA</span></p>
<p><span style="font-family:Calibri;">New-SPEnterpriseSearchAdminComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostA</span></p>
<p><span style="font-family:Calibri;">New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostA</span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;"># Composants IDX2: Index, Crawl, Query (noeud de backup)</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="font-family:Calibri;">New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostB</span></p>
<p><span style="font-family:Calibri;">New-SPEnterpriseSearchCrawlComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostB</span></p>
<p><span style="font-family:Calibri;">New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostB</span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;"># Création de deux indexs, deux partitions = 4 replicas</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;"># spécifier les répertoires permet d&rsquo;éviter de le stocker dans &quot;Office Servers&#8230;&quot;</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;"># A = 0/1 B= 1/0</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="font-family:Calibri;">New-SPEnterpriseSearchIndexComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostA -IndexPartition 0 -RootDirectory $IndexLocationServer1</span></p>
<p><span style="font-family:Calibri;">New-SPEnterpriseSearchIndexComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostB -IndexPartition 1 -RootDirectory $IndexLocationServer2</span></p>
<p><span style="font-family:Calibri;">New-SPEnterpriseSearchIndexComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostA -IndexPartition 1 -RootDirectory $IndexLocationServer1</span></p>
<p><span style="font-family:Calibri;">New-SPEnterpriseSearchIndexComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostB -IndexPartition 0 -RootDirectory $IndexLocationServer2</span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;"># Enregistrement de la topologie</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="font-family:Calibri;">Write-Host -ForegroundColor Yellow &quot;Enregistrement tolologie&quot;</span></p>
<p><span style="font-family:Calibri;">Set-SPEnterpriseSearchTopology -Identity $NewSearchTopology</span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;"># Suppression de l’ancienne</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="font-family:Calibri;">Write-Host -ForegroundColor DarkGray &quot;Suppression tolologie.old&quot;</span></p>
<p><span style="font-family:Calibri;">Remove-SPEnterpriseSearchTopology -Identity $InitialSearchTopology -Confirm:$false</span></p>
<p><span style="font-family:Calibri;">Write-Host -ForegroundColor Yellow &quot;Supprimée&quot;</span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#Check Search Topology</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Calibri;">#==============================================================</span></span></p>
<p><span style="font-family:Calibri;">Get-SPEnterpriseSearchStatus -SearchApplication $SearchServiceApplication -Text</span></p>
<p><span style="font-family:Calibri;">Write-Host -ForegroundColor Yellow &quot;Topologie configurée!&quot;</span></p>
<p><span style="color:#000000;font-family:Calibri;font-size:medium;"> </span><span style="color:#000000;"><b><span style="font-family:Calibri;font-size:medium;">5.</span>       </b><b><span style="font-size:medium;"><span style="font-family:Calibri;">Résultat attendu :</span></span></b></span></p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/03/topo.jpg"><img class="alignnone size-medium wp-image-1332" alt="topo" src="http://mcnextpost.files.wordpress.com/2013/03/topo.jpg?w=630&#038;h=158" width="630" height="158" /></a></p>
<p><span style="color:#000000;font-family:Calibri;font-size:medium;"> </span><span style="font-size:medium;"><span style="color:#000000;"><span style="font-family:Calibri;">On peut aussi tester en ligne de commande par, par exemple, </span></span></span></p>
<p><span style="color:#000000;font-family:Calibri;font-size:medium;"> </span>Get-SPEnterpriseSearchStatus –SearchApplication « Serch Service Application&quot;</p>
<p><span style="color:#000000;font-family:Calibri;font-size:medium;"> </span><span style="font-size:medium;"><span style="color:#000000;"><span style="font-family:Calibri;">Emmanuel ISSALY</span></span></span></p>
<p><span style="font-size:medium;"><span style="color:#000000;"><span style="font-family:Calibri;">Architecte Infrastructure Sharepoint</span></span></span></p>
<p><span style="font-size:medium;"><span style="color:#000000;"><span style="font-family:Calibri;">MCNEXT</span></span></span></p>
<p><span style="color:#000000;font-family:Calibri;font-size:medium;"> </span></p>
<p><span style="color:#000000;font-family:Calibri;font-size:medium;"> </span></p>
<br />Classé dans:<a href='http://mcnextpost.com/category/sharepoint-2013/infrastructure-sharepoint/'>Infrastructure SharePoint</a>, <a href='http://mcnextpost.com/category/sharepoint-2013/'>SharePoint 2013</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1328&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/03/14/configuration-de-la-topologie-de-recherche-sharepoint-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c912581c7a9a01785129b94fc70df983?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eissaly</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/03/topo.jpg?w=630" medium="image">
			<media:title type="html">topo</media:title>
		</media:content>
	</item>
		<item>
		<title>Script SQL d&#8217;aide à la gestion des index sur SQL Server</title>
		<link>http://mcnextpost.com/2013/03/14/script-sql-daide-a-la-gestion-des-index-dune-base-sql-server/</link>
		<comments>http://mcnextpost.com/2013/03/14/script-sql-daide-a-la-gestion-des-index-dune-base-sql-server/#comments</comments>
		<pubDate>Thu, 14 Mar 2013 15:29:52 +0000</pubDate>
		<dc:creator>fbrossard</dc:creator>
				<category><![CDATA[Articles BI]]></category>
		<category><![CDATA[Décisionnel]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[index]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1309</guid>
		<description><![CDATA[Suite à l&#8217;article sur l&#8217;indexation d&#8217;un DataWarehouse, voici quelques scripts qui vous aideront dans l&#8217;administration des index (merci à Frédéric BO pour la majorité des scripts listés ci-dessous) Lister les index d&#8217;une base Lister les index en doublon ou inclus Lister les index inutilisés Utilisation des index sur la base Vous pouvez aussi avoir besoin de [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1309&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Suite à l&rsquo;article sur <a href="http://wp.me/p1RjAT-kL">l&rsquo;indexation d&rsquo;un DataWarehouse</a>, voici quelques scripts qui vous aideront dans l&rsquo;administration des index (merci à Frédéric BO pour la majorité des scripts listés ci-dessous)</p>
<p><span id="more-1309"></span></p>
<ul>
<li>Lister les index d&rsquo;une base</li>
</ul>
<pre class="brush: sql; title: ; notranslate">

SELECT   
 T.name AS nom_table,
 I.type_desc AS type_index,
 I.name AS nom_index
FROM   
 sys.tables AS T
  INNER JOIN  sys.indexes AS I ON T.object_id = I.object_id
  INNER JOIN  sys.index_columns AS IC ON I.object_id = IC.object_id AND I.index_id = IC.index_id
  INNER JOIN  sys.columns AS C ON IC.object_id = C.object_id AND IC.column_id = C.column_id
WHERE   
 is_included_column=0 AND IC.key_ordinal=1
ORDER BY 
 T.name

</pre>
<ul>
<li>Lister les index en doublon ou inclus</li>
</ul>
<pre class="brush: sql; title: ; notranslate">
WITH
T0 AS -- sous requête CTE donnant les index avec leurs colonnes
(
 SELECT
  ic.object_id,
  index_id,
  c.column_id,
  key_ordinal, 
  CASE is_descending_key 
   WHEN '0' THEN 'ASC' 
   WHEN '1' THEN 'DESC'           
  END AS sens,
  c.name AS column_name, 
  ROW_NUMBER() OVER(PARTITION BY ic.object_id, index_id ORDER BY key_ordinal DESC) AS N,
  is_included_column  
 FROM  
  sys.index_columns AS ic
   INNER JOIN sys.columns AS c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
 WHERE  key_ordinal &gt; 0
 AND  index_id &gt; 0
),
T1 AS -- sous requête CTE récursive composant les clefs des index sous forme algébrique et littérale
(
 SELECT
  object_id,
  index_id,
  column_id,
  key_ordinal,
  N, 
  CASE
   WHEN is_included_column = 0 THEN CAST(column_name AS VARCHAR(max)) + ' ' + sens
   ELSE ''
  END AS COMP_LITTERALE,
  CASE
   WHEN is_included_column = 0 THEN CAST(column_id AS VARCHAR(max)) + SUBSTRING(sens, 1, 1)
   ELSE ''
  END AS COMP_MATH,
  MAX(N) OVER(PARTITION BY object_id, index_id) AS CMAX,
  CASE
   WHEN is_included_column = 1 THEN CAST(column_name AS VARCHAR(max))
   ELSE ''
  END AS COLONNES_INCLUSES
 FROM   T0
 WHERE  key_ordinal = 1
 UNION  ALL      
 SELECT
  T0.object_id,
  T0.index_id,
  T0.column_id,
  T0.key_ordinal,
  T0.N,
  COMP_LITTERALE  +
   CASE
    WHEN is_included_column = 0 THEN  ', ' + CAST(T0.column_name AS VARCHAR(max)) + ' ' + T0.sens
    ELSE ''
   END,
  COMP_MATH +
   CASE
    WHEN is_included_column = 0 THEN CAST(T0.column_id AS VARCHAR(max)) + SUBSTRING(T0.sens, 1, 1)
    ELSE ''
   END,
  T1.CMAX,
  COLONNES_INCLUSES +
   CASE
    WHEN is_included_column = 1 THEN ', ' + CAST(column_name AS VARCHAR(max))
    ELSE ''
   END
 FROM  
  T0
   INNER JOIN
  T1 
    ON T0.object_id = T1.object_id
    AND T0.index_id = T1.index_id
    AND T0.key_ordinal = T1.key_ordinal + 1
),
T2 AS -- sous requête CTE de dédoublonnage
(
 SELECT object_id, index_id, COMP_LITTERALE, COMP_MATH, CMAX, COLONNES_INCLUSES
 FROM   T1
 WHERE  N = 1
),
T4 AS -- sous requête sélectionnant les anomalies
(
 SELECT
  T2.object_id,
  T2.index_id, 
  T3.index_id AS index_id_anomalie, 
  T2.COMP_LITTERALE AS CLEF_INDEX, 
  T3.COMP_LITTERALE AS CLEF_INDEX_ANORMAL,
  T2.COLONNES_INCLUSES,
  T3.COLONNES_INCLUSES AS COLONNES_INCLUSES_ANORMAL,
  CASE 
   WHEN T2.COMP_MATH = T3.COMP_MATH THEN 'DOUBLONS' 
   WHEN T2.COMP_MATH LIKE T3.COMP_MATH +'%' 
   THEN 'INCLUS' 
  END AS ANOMALIE, 
  ABS(T2.CMAX - T3.CMAX) AS DISTANCE
 FROM  
  T2
   INNER JOIN
  T2 AS T3
    ON T2.object_id = T3.object_id
    AND T2.index_id &lt;&gt; T3.index_id
    AND T2.COMP_MATH LIKE T3.COMP_MATH +'%'
)

-- Requête finale ajoutant les informations manquantes       
SELECT
 s.name +'.' + o.name AS NOM_TABLE, 
 CLEF_INDEX_ANORMAL,
 i1.name AS NOM_INDEX, 
 i2.name AS NOM_INDEX_ANORMAL,
 ANOMALIE, DISTANCE
 CLEF_INDEX
FROM  
 T4
       INNER JOIN
 sys.objects AS o
   ON T4.object_id = o.object_id
  INNER JOIN
 sys.schemas AS s
   ON o.schema_id = s.schema_id
       INNER JOIN sys.indexes AS i1
   ON T4.object_id = i1.object_id
   AND T4.index_id = i1.index_id 
       INNER JOIN
 sys.indexes AS i2
   ON T4.object_id = i2.object_id
   AND T4.index_id_anomalie = i2.index_id 
WHERE  o.type IN ('U', 'V') 
and distance &lt;= 1
ORDER  BY
 s.name +'.' + o.name,
 clef_index

</pre>
<ul>
<li>Lister les index inutilisés</li>
</ul>
<pre class="brush: sql; title: ; notranslate">

SELECT
 SCHEMA_NAME(t.schema_id) + '.' + OBJECT_NAME(i.object_id) as tbl,
 i.name as idx,
 ISNULL(user_updates, 0) + ISNULL(system_updates, 0) as updates
FROM
 sys.dm_db_index_usage_stats ius
  RIGHT JOIN
 (
  sys.indexes i
   JOIN sys.tables t ON i.object_id = t.object_id
 )
   ON ius.object_id = i.object_id AND ius.index_id = i.index_id
WHERE
 ISNULL(user_seeks, 0) + ISNULL(system_seeks, 0) = 0
AND i.type_desc = 'NONCLUSTERED' AND i.is_primary_key = 0
AND t.type_desc = 'USER_TABLE'
AND SCHEMA_NAME(t.schema_id) + '.' + OBJECT_NAME(i.object_id) &lt;&gt; 'dbo.sysdiagrams'
ORDER BY tbl

-- génération de code pour supprimer les index inutiles
SELECT
 'DROP INDEX [' + SCHEMA_NAME(t.schema_id) + '].[' + OBJECT_NAME(i.object_id) + '].[' +
 i.name + ']'
FROM
 sys.dm_db_index_usage_stats ius
  RIGHT JOIN
 (
  sys.indexes i
   JOIN sys.tables t ON i.object_id = t.object_id
 )
   ON ius.object_id = i.object_id AND ius.index_id = i.index_id
WHERE
 ISNULL(user_seeks, 0) + ISNULL(system_seeks, 0) = 0
AND i.type_desc = 'NONCLUSTERED'
AND i.is_primary_key = 0
AND t.type_desc = 'USER_TABLE'
AND SCHEMA_NAME(t.schema_id) + '.' + OBJECT_NAME(i.object_id)&lt;&gt;'dbo.sysdiagrams'

</pre>
<ul>
<li>Utilisation des index sur la base</li>
</ul>
<pre class="brush: sql; title: ; notranslate">
SELECT
 SCHEMA_NAME(t.schema_id) + '.' + OBJECT_NAME(ius.object_id) as tbl,
 i.name as idx,
 i.type_desc as idxType,
 i.is_unique,
 i.is_primary_key,
 user_seeks,
 user_scans,
 user_lookups,
 user_updates,
 last_user_seek,
 last_user_scan,
 last_user_lookup,
 last_user_update,
 system_seeks,
 system_scans,
 system_lookups,
 system_updates,
 last_system_seek,
 last_system_scan,
 last_system_lookup,
 last_system_update
FROM
 sys.dm_db_index_usage_stats ius
  JOIN sys.indexes i ON ius.object_id = i.object_id AND ius.index_id = i.index_id
  JOIN sys.tables t ON i.object_id = t.object_id
WHERE
 database_id = DB_ID()
AND i.type_desc&lt;&gt;'heap'
AND i.type_desc&lt;&gt;'clustered'
ORDER BY
 tbl
</pre>
<ul>
<li>Vous pouvez aussi avoir besoin de scripter la (re)création des index d&rsquo;une table (cela peut être bien utile dans vos packages SSIS) <a href="http://wp.me/p2yhHc-8r">http://wp.me/p2yhHc-8r</a></li>
</ul>
<br />Classé dans:<a href='http://mcnextpost.com/category/decisionnel/articles-bi/'>Articles BI</a>, <a href='http://mcnextpost.com/category/decisionnel/'>Décisionnel</a> Tagged: <a href='http://mcnextpost.com/tag/administration/'>administration</a>, <a href='http://mcnextpost.com/tag/index/'>index</a>, <a href='http://mcnextpost.com/tag/sql-server/'>SQL Server</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1309&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/03/14/script-sql-daide-a-la-gestion-des-index-dune-base-sql-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c113e4f697b8b54ec191b54f253c8b04?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fbrossard</media:title>
		</media:content>
	</item>
		<item>
		<title>Indexation DataWarehouse</title>
		<link>http://mcnextpost.com/2013/03/13/indexation-datawarehouse/</link>
		<comments>http://mcnextpost.com/2013/03/13/indexation-datawarehouse/#comments</comments>
		<pubDate>Wed, 13 Mar 2013 13:27:45 +0000</pubDate>
		<dc:creator>fbrossard</dc:creator>
				<category><![CDATA[Articles BI]]></category>
		<category><![CDATA[Décisionnel]]></category>
		<category><![CDATA[datawarehouse]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[index]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1287</guid>
		<description><![CDATA[L&#8217;indexation d&#8217;un entrepôt de données est délicate : si vous avez trop peu d’indexes les temps de chargement de votre entrepôt seront optimum mais les temps de requêtage seront déplorables au contraire, si vous avez trop d’indexes, les temps de chargement vont exploser mais les performances de requêtage seront excellentes. Afin de prévoir un plan [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1287&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>L&rsquo;indexation d&rsquo;un entrepôt de données est délicate :</p>
<ul>
<li>si vous avez trop peu d’indexes les temps de chargement de votre entrepôt seront optimum mais les temps de requêtage seront déplorables</li>
<li>au contraire, si vous avez trop d’indexes, les temps de chargement vont exploser mais les performances de requêtage seront excellentes.</li>
</ul>
<p>Afin de prévoir un plan d’indexation optimum vous devez prendre en compte certains critères :</p>
<ul>
<li>le type d’entrepôt (archive vs temps (quasi) réel)</li>
<li>la taille des dimensions et des tables de faits</li>
<li>le nombre d’utilisateurs ayant accès à l’entrepôt (le nombre d’accès concurrents max à gérer)</li>
<li>le type d’accès aux données (ad-hoc ou via des interfaces d’applications structurées)</li>
<li>le mode d’alimentation (upsert, annule/remplace &#8230;)</li>
<li>etc …</li>
</ul>
<p>Voici néanmoins quelques règles basiques à respecter lors du design de votre entrepôt.</p>
<p><span id="more-1287"></span></p>
<p><b>Indexation des dimensions</b></p>
<p>Sur toutes vos dimensions, utilisez une clé auto-incrémentée de type [int] ou [bigint] (en fonction de la taille estimée de vos dimensions) comme clé primaire non-cluster (contrairement au comportement par défaut du designer). Que les données soit ordonnées physiquement selon la clé de substitution n’a aucun intérêt (exception faite de la dimension Temps dont la clé technique ne doit pas être auto-incrémentée mais devant être la représentation de la date au format AAAAMMJJ stocké dans un entier).</p>
<p>Chaque dimension doit contenir une clé naturelle ou transactionnelle aussi appelée clé métier (Business Key). Bien que cette clé peut ne pas être unique, comme dans le cas d’une dimension à variation lente de type 2, créer un index cluster sur la clé métier permet d’optimiser les temps de requête surtout lorsque cette clé est utilisée dans la clause WHERE. Ce qui est le cas dans 99% des requêtes analytiques avec recherche dimensionnelle. Notez qu’il doit s’agir d’un index unique dans le cas des dimensions en SCD de type 0 ou 1.</p>
<p>Dans le cas des dimensions à variation lentes de forte volumétrie  en SCD de type 2, ajoutez un index non-cluster sur la clé métier et la date de début et étendez la couverture de l’index à la date de fin et la clé de substitution. Exemple :</p>
<pre class="brush: sql; title: ; notranslate">

CREATE INDEX IDX_DimensionSCD2_CoveringIndex NONCLUSTER
 ON (BusinessKEY, StartDate) INCLUDE (EndDate, SurrogateKEY);

</pre>
<p>Si d&rsquo;autres colonnes de la dimension sont utilisées en permanence pour la recherche, le tri ou le regroupement, créez des index non-cluster sur les colonnes comme vous le feriez dans une base de données transactionnelle.</p>
<p>Si la dimension contient une hiérarchie intégrée, envisagez d&rsquo;indexer les colonnes intervenant dans la hiérarchie. Cela permettra d&rsquo;améliorer les performances des requêtes sans trop alourdir les temps de chargement.</p>
<p><b>Indexation des tables de faits</b></p>
<p>Parce que toutes les analyses sont Time dépendantes, il est primordial de créer un index cluster sur la clé temporelle. Par ailleurs, vous serez à même d’utiliser cette clé cluster comme clé de partitionnement si la table de faits est volumineuse. Cela facilite et optimise grandement les requêtes sur des plages de dates spécifiques, et permet d’améliorer les temps de traitement des cubes d’Analysis Services si vous avez des groupes de mesures partitionnés.</p>
<p>Toutefois, si la table de faits contient plusieurs clés temporelles, définissez l’index cluster sur la clé la plus utilisée (date d’analyse par défaut)</p>
<p>Créez, ensuite, un index non-cluster sur chacune des clés étrangères de la table de faits, et envisagez de combiner la clé étrangère et la clé temporelle (dans cet ordre uniquement). Par exemple : ProductKey et DateKey. La création d&rsquo;une clé non-cluster sur les clés étrangères fonctionne particulièrement bien si l&rsquo;une ou plusieurs des dimensions associées est une dimension à variation lente de type 2.</p>
<p>Notez par ailleurs qu’il est préférable de conserver l’intégrité référentielle et donc de définir les foreign key sur les tables de faits. Je rappelle que l’optimiseur SQL Server utilise les contraintes d’intégrité référentielles lorsqu’elles sont Trusted pour optimiser le plan d’exécution.</p>
<p><b>Modification du schéma d&rsquo;indexation</b></p>
<p>Au fil du temps, votre entrepôt de données va évoluer en fonction des besoins d’analyse et vous devrez modifier votre schéma d&rsquo;indexation.</p>
<p>Si votre entrepôt de données relationnelles est utilisé uniquement pour monter des cubes SSAS en MOLAP, il se peut que vous n’ayez pas besoin d’indexer votre entrepôt comme indiquer auparavant; car Analysis Services va toujours exécuter les mêmes requêtes pour traiter les données. Par conséquent vous pouvez  exécuter Le Database Engine Tuning Advisor pour optimiser précisément vos indexes afin d’améliorer les temps de traitement de vos cubes.</p>
<p>Notez tout de même que même si vous n’avez que des cubes SSAS en frontal, les utilisateurs demanderont toujours des analyses au niveau feuille (le niveau le plus fin), et qu’il sera parfois plus performant de requêter directement l’entrepôt plutôt que d’interroger le cube.</p>
<p>Et n&rsquo;oubliez surtout pas d&rsquo;établir un plan de maintenance de vos index. Créer des indexes ne suffit pas, il faut aussi les maintenir, je rappelle au passage quelques règles de maintenance des indexes :</p>
<ul>
<li>si le taux de fragmentation est &gt;5% et &lt;30% : reorganizer l&rsquo;index</li>
</ul>
<pre class="brush: sql; title: ; notranslate">
ALTER INDEX MyIndex ON MyTable REORGANIZE
</pre>
<ul>
<li>si le taux de fragmentation est &gt;= 30% : reconstruire l&rsquo;index</li>
</ul>
<pre class="brush: sql; title: ; notranslate">
ALTER INDEX MyIndex ON MyTable REBUILD
</pre>
<p>Quelques petits liens utiles :</p>
<ul>
<li>sur les options liées à la réorganisation/reconstruction d&rsquo;index <a href="http://technet.microsoft.com/fr-fr/library/ms189858.aspx">http://technet.microsoft.com/fr-fr/library/ms189858.aspx</a></li>
<li>comment récupérer le taux de fragmentation d&rsquo;un index <a href="http://technet.microsoft.com/fr-fr/library/ms188917.aspx">http://technet.microsoft.com/fr-fr/library/ms188917.aspx</a></li>
</ul>
<p>Pour la maintenance de vos indexes, le mieux reste d&rsquo;intégrer ces opérations dans vos flux ETL car ils sont inhérents au chargement de vos données. Par exemple, si vous avez à faire des traitements en DELETE/INSERT, il est intéressant de profiter des indexes pour effectuer les suppressions, puis de les désactiver voir supprimer avant toute insertion en masse et enfin de les réactiver (réorganiser ou reconstruire en fonction du taux de fragmentation) ou bien de le recréer.</p>
<p><b>Conclusion</b></p>
<p>Commencez simple, et évaluez/révisez soigneusement chaque construction d’index, en prenant en compte :</p>
<ul>
<li>Les temps de chargement de l’entrepôt via l’ETL</li>
<li>La maintenance de votre entrepôt</li>
<li>Les temps de requêtage pour les utilisateurs et/ou rapports analytiques</li>
</ul>
<br />Classé dans:<a href='http://mcnextpost.com/category/decisionnel/articles-bi/'>Articles BI</a>, <a href='http://mcnextpost.com/category/decisionnel/'>Décisionnel</a> Tagged: <a href='http://mcnextpost.com/tag/datawarehouse/'>datawarehouse</a>, <a href='http://mcnextpost.com/tag/design/'>Design</a>, <a href='http://mcnextpost.com/tag/index/'>index</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1287&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/03/13/indexation-datawarehouse/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c113e4f697b8b54ec191b54f253c8b04?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fbrossard</media:title>
		</media:content>
	</item>
		<item>
		<title>Microsoft Dev Camp : Faire des jeux pour Windows 8 et Windows Phone 8 Jeudi 14 mars 2013</title>
		<link>http://mcnextpost.com/2013/02/28/microsoft-dev-camp-faire-des-jeux-pour-windows-8-et-windows-phone-8-jeudi-14-mars-2013/</link>
		<comments>http://mcnextpost.com/2013/02/28/microsoft-dev-camp-faire-des-jeux-pour-windows-8-et-windows-phone-8-jeudi-14-mars-2013/#comments</comments>
		<pubDate>Thu, 28 Feb 2013 14:42:55 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[Evènements]]></category>
		<category><![CDATA[Pole .NET]]></category>
		<category><![CDATA[Windows Phone 8]]></category>
		<category><![CDATA[Windows8]]></category>
		<category><![CDATA[développement Windows 8]]></category>
		<category><![CDATA[développement Wwindows Phone 8]]></category>
		<category><![CDATA[Dev Camps]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1281</guid>
		<description><![CDATA[Rendez-vous le Jeudi 14 mars 2013 à partir de 13h30 ! John Thiriet, consultant .NET au sein de MCNEXT, présentera son retour d&#8217;expériences concernant le développement de jeux pour Windows 8 et Windows Phone 8 (au programme portable library, mvvm, asynchronisme et performance). Qu&#8217;est-ce qu&#8217;un Dev Camp ? Le Dev Camp est un événement destiné aux développeurs [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1281&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div id="attachment_1282" class="wp-caption aligncenter" style="width: 640px"><a href="http://mcnextpost.files.wordpress.com/2013/02/bandeau_dev_camp_windows_8_windows_phone_8.png"><img class="size-full wp-image-1282" alt="Microsoft Dev Camp Windows 8 et Windows Phone 8" src="http://mcnextpost.files.wordpress.com/2013/02/bandeau_dev_camp_windows_8_windows_phone_8.png?w=630&#038;h=145" width="630" height="145" /></a><p class="wp-caption-text"><strong>Microsoft Dev Camp Windows 8 et Windows Phone 8</strong></p></div>
<p><em>Rendez-vous le Jeudi 14 mars 2013 à partir de 13h30 !</em></p>
<p><strong>John Thiriet, consultant .NET au sein de MCNEXT, présentera son retour d&rsquo;expériences concernant le développement de jeux pour Windows 8 et Windows Phone 8 (au programme portable library, mvvm, asynchronisme et performance).</strong></p>
<p><strong>Qu&rsquo;est-ce qu&rsquo;un Dev Camp ?</strong></p>
<p><em>Le Dev Camp est un événement destiné aux développeurs professionnels comme non professionnels animé par les experts Microsoft et ses partenaires.</em><br />
<strong><br />
Au programme 5 heures de :</strong></p>
<ul>
<li>
<div align="left">Formation</div>
</li>
<li>
<div align="left">Démo</div>
</li>
<li>
<div align="left">Code</div>
</li>
</ul>
<p align="left">L&rsquo;objectif est de faire découvrir aux développeurs des outils d&rsquo;aide lors du développement de projets applicatifs Windows 8 et Windows Phone 8.</p>
<p align="left"><strong>Lieu :</strong><br />
Campus de Microsoft &#8211; Issy les Moulineaux</p>
<p align="left"><em>Pour en savoir plus : <a href="http://www.mcnext.com/evenements/microsoft/Pages/Microsoft-dev-camp-windows-8-et-windows-phone-8.aspx">http://www.mcnext.com/evenements/microsoft/Pages/Microsoft-dev-camp-windows-8-et-windows-phone-8.aspx</a></em></p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/'>Evènements</a>, <a href='http://mcnextpost.com/category/pole-net/'>Pole .NET</a>, <a href='http://mcnextpost.com/category/windows-phone-8/'>Windows Phone 8</a>, <a href='http://mcnextpost.com/category/windows8/'>Windows8</a> Tagged: <a href='http://mcnextpost.com/tag/developpement-windows-8/'>développement Windows 8</a>, <a href='http://mcnextpost.com/tag/developpement-wwindows-phone-8/'>développement Wwindows Phone 8</a>, <a href='http://mcnextpost.com/tag/dev-camps/'>Dev Camps</a>, <a href='http://mcnextpost.com/tag/microsoft/'>Microsoft</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1281&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/02/28/microsoft-dev-camp-faire-des-jeux-pour-windows-8-et-windows-phone-8-jeudi-14-mars-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/bandeau_dev_camp_windows_8_windows_phone_8.png" medium="image">
			<media:title type="html">Microsoft Dev Camp Windows 8 et Windows Phone 8</media:title>
		</media:content>
	</item>
		<item>
		<title>Excel : la &quot;boîte à outils BI&quot;</title>
		<link>http://mcnextpost.com/2013/02/25/excel-la-boite-a-outils-bi/</link>
		<comments>http://mcnextpost.com/2013/02/25/excel-la-boite-a-outils-bi/#comments</comments>
		<pubDate>Mon, 25 Feb 2013 15:53:20 +0000</pubDate>
		<dc:creator>smadar2012</dc:creator>
				<category><![CDATA[Articles BI]]></category>
		<category><![CDATA[Décisionnel]]></category>
		<category><![CDATA[Data Explorer]]></category>
		<category><![CDATA[Excel 2013 BI]]></category>
		<category><![CDATA[GeoFlow]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1274</guid>
		<description><![CDATA[Après son connecteur SSAS et bientôt aussi des connecteurs Big Data, ses add-on : data-mining, MDS/DQS, PowerPivot, Power View, la &#34;boîte à outils BI&#34; d&#8217;Excel va s&#8217;enrichir avec Data Explorer et GeoFlow. Excel se transforme petit à petit comme l&#8217;outil décisionnel self service par Excel ence&#8230; Data Explorer : ETL self-service dans Excel Add-in d&#8217;Excel 2013 : [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1274&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div dir="ltr">
<div dir="ltr">
<p>Après son connecteur SSAS et bientôt aussi des connecteurs Big Data, ses add-on : data-mining, MDS/DQS, PowerPivot, Power View, la &quot;boîte à outils BI&quot; d&rsquo;Excel va s&rsquo;enrichir avec Data Explorer et GeoFlow. Excel se transforme petit à petit comme l&rsquo;outil décisionnel self service par Excel ence&#8230;</p>
<p><b>Data Explorer : ETL self-service dans Excel</b></p>
<p>Add-in d&rsquo;Excel 2013 :</p>
<p>Micorosoft annonce la sortie du produit en CTP le 27/02/13</p>
<p><a href="http://blogs.msdn.com/b/dataexplorer/" target="_blank">http://blogs.msdn.com/b/dataexplorer/</a></p>
<p><b>GeoFlow : Analyse décisionnelle Geospacial dans Excel </b></p>
<p>Add-in d&rsquo;Excel 2013, prévu pour l&rsquo;été 2013.</p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='560' height='315' src='http://www.youtube.com/embed/xWapyVp--pc?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span>
</div>
</div>
<br />Classé dans:<a href='http://mcnextpost.com/category/decisionnel/articles-bi/'>Articles BI</a>, <a href='http://mcnextpost.com/category/decisionnel/'>Décisionnel</a> Tagged: <a href='http://mcnextpost.com/tag/data-explorer/'>Data Explorer</a>, <a href='http://mcnextpost.com/tag/excel-2013-bi/'>Excel 2013 BI</a>, <a href='http://mcnextpost.com/tag/geoflow/'>GeoFlow</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1274&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/02/25/excel-la-boite-a-outils-bi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/3a8b7f491dadc2f1afb43fa168ff1b12?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smadar2012</media:title>
		</media:content>
	</item>
		<item>
		<title>Windows Embedded 8 « Application launcher »</title>
		<link>http://mcnextpost.com/2013/02/20/windows-embedded-8-application-launcher/</link>
		<comments>http://mcnextpost.com/2013/02/20/windows-embedded-8-application-launcher/#comments</comments>
		<pubDate>Wed, 20 Feb 2013 09:18:34 +0000</pubDate>
		<dc:creator>Rémi Eynard</dc:creator>
				<category><![CDATA[Applications Metro]]></category>
		<category><![CDATA[Pole .NET]]></category>
		<category><![CDATA[Windows8]]></category>
		<category><![CDATA[Metro]]></category>
		<category><![CDATA[Windows 8]]></category>
		<category><![CDATA[Windows Embedded 8]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1214</guid>
		<description><![CDATA[Windows Embedded 8 intègre une nouvelle fonctionnalité appelée “Windows 8 Application Launcher”. Elle permet de verrouiller un poste sur une seule application Modern UI et peut donc s&#8217;avérer intéressante pour la mise en place de bornes (services, commerces) ou d&#8217;autres systèmes interactifs. Concrètement, l&#8217;application est lancée automatiquement à l&#8217;ouverture de session et, après quelques réglages, il n&#8217;est [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1214&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Windows Embedded 8 intègre une nouvelle fonctionnalité appelée “Windows 8 Application Launcher”. Elle permet de verrouiller un poste sur une seule application Modern UI et peut donc s&rsquo;avérer intéressante pour la mise en place de <strong>bornes</strong> (services, commerces) ou d&rsquo;autres systèmes interactifs. Concrètement, l&rsquo;application est lancée automatiquement à l&rsquo;ouverture de session et, après quelques réglages, il n&rsquo;est pas possible pour l&rsquo;utilisateur d&rsquo;en sortir.</p>
<p>L&rsquo;application launcher doit être activé à l&rsquo;avance via ICE que nous présentions précédemment. Après l&rsquo;avoir ajouté depuis la catégorie Branding, quatre paramètres sont configurables.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/02/ice-applauncher.jpg"><img class="aligncenter size-large wp-image-1216" alt="ICE AppLauncher" src="http://mcnextpost.files.wordpress.com/2013/02/ice-applauncher.jpg?w=630&#038;h=251" width="630" height="251" /></a></p>
<ul>
<li><strong>AppUserModelId :</strong> Ce code identifie l&rsquo;application à lancer. Il est récupérable en installant l&rsquo;application en question sur un poste puis en cherchant &quot;AppUserModelId&quot; dans sa base de registre. Il suffit ensuite de copier la valeur correspondante au bon package.</li>
</ul>
<p><a href="http://mcnextpost.files.wordpress.com/2013/02/registry-applauncher.jpg"><img class="aligncenter size-large wp-image-1226" alt="Registry AppLauncher" src="http://mcnextpost.files.wordpress.com/2013/02/registry-applauncher.jpg?w=630&#038;h=159" width="630" height="159" /></a></p>
<ul>
<li><strong>DefaultReturnCodeAction :</strong> Cet entier indique quelle action doit être entreprise par le système si l&rsquo;utilisateur ferme l&rsquo;application
<ul>
<li>0 : Redémarre l&rsquo;application</li>
<li>1 : Redémarre le système</li>
<li>2 : Arrête le système</li>
<li>3 : Ferme l&rsquo;application launcher et retourne sur le Start Screen</li>
<li>4 : Ferme la session</li>
</ul>
</li>
<li><strong>CustomReturnCodeAction :</strong> Permet de choisir une action différente à entreprendre suivant le code de retour de l&rsquo;application (en cas d&rsquo;erreur etc.).</li>
<li><strong>UserSettings :</strong> Permet de spécifier les trois paramètres précédent pour un utilisateur donné.</li>
</ul>
<p>L&rsquo;application launcher seul ne suffit pas à réaliser une borne sécurisée. Il n’empêche pas l&rsquo;utilisateur de retourner sur le Start Screen et d&rsquo;utiliser le système d&rsquo;exploitation comme bon lui semble. Il est donc intéressant de le coupler avec d&rsquo;autres fonctionnalités de Windows Embedded 8.</p>
<ul>
<li><strong>Le Gesture Filter</strong> permet de verrouiller les &quot;bords&quot; de l&rsquo;écran, autrement dit les barres de Charms et la fermeture d&rsquo;une application par le haut. Son paramètre DisabledEdges est un entier qui doit être composé suivant les gestures que l&rsquo;on souhaite désactiver. Un coup d&rsquo;oeil à l&rsquo;aide permet de déterminer qu&rsquo;il faut entrer 247 pour verrouiller tout sauf la barre du bas (qui peut être utile à l&rsquo;application).</li>
</ul>
<p><a href="http://mcnextpost.files.wordpress.com/2013/02/gesturefilter.jpg"><img class="aligncenter size-full wp-image-1246" alt="GestureFilter" src="http://mcnextpost.files.wordpress.com/2013/02/gesturefilter.jpg?w=630"   /></a></p>
<ul>
<li><strong>Le Keyboard Filter</strong> permet quant-à lui de désactiver certaines touches ou combinaisons de touches qui permettraient autrement à l&rsquo;utilisateur de sortir de l&rsquo;application.</li>
</ul>
<p>Une fois le système installé, il faut tout d&rsquo;abord créer un nouvel utilisateur. L&rsquo;Application Launcher sera en effet désactivé sur le premier compte administrateur. Il suffit ensuite d&rsquo;installer l&rsquo;application (voir l&rsquo;article traitant du <a title="Sideloading d’une application Windows 8 Modern UI" href="http://mcnextpost.com/2013/02/15/windows-8-sideloading-app-modern-ui/">sideloading</a>) et de rouvrir la session pour se retrouver en mode borne.</p>
<p>En couplant les trois fonctionnalités sus-nommées, et en y ajoutant eventuellement des GPO (stratégies de groupe), il est donc possible de réaliser une borne verrouillée sur une application Modern UI. L&rsquo;Application Launcher lance l&rsquo;application à l&rsquo;ouverture de la session Windows, tandis que les deux autres sécurisent la machine.</p>
<p>Une vidéo de démonstration de l&rsquo;Application Launcher est disponible sur MCNEXT TV.<br />
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='630' height='385' src='http://www.youtube.com/embed/anVjkGwebEU?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<br />Classé dans:<a href='http://mcnextpost.com/category/applications-metro/'>Applications Metro</a>, <a href='http://mcnextpost.com/category/pole-net/'>Pole .NET</a>, <a href='http://mcnextpost.com/category/windows8/'>Windows8</a> Tagged: <a href='http://mcnextpost.com/tag/metro/'>Metro</a>, <a href='http://mcnextpost.com/tag/windows-8/'>Windows 8</a>, <a href='http://mcnextpost.com/tag/windows-embedded-8/'>Windows Embedded 8</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1214&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/02/20/windows-embedded-8-application-launcher/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/587f0ec997330aa749d2fb52d0815c2b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eynard</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/ice-applauncher.jpg?w=630" medium="image">
			<media:title type="html">ICE AppLauncher</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/registry-applauncher.jpg?w=630" medium="image">
			<media:title type="html">Registry AppLauncher</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/gesturefilter.jpg" medium="image">
			<media:title type="html">GestureFilter</media:title>
		</media:content>
	</item>
		<item>
		<title>Introduction à Windows Embedded 8</title>
		<link>http://mcnextpost.com/2013/02/20/introduction-windows-8-embedded/</link>
		<comments>http://mcnextpost.com/2013/02/20/introduction-windows-8-embedded/#comments</comments>
		<pubDate>Wed, 20 Feb 2013 09:16:56 +0000</pubDate>
		<dc:creator>Rémi Eynard</dc:creator>
				<category><![CDATA[Pole .NET]]></category>
		<category><![CDATA[Windows8]]></category>
		<category><![CDATA[Windows Embedded 8]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1171</guid>
		<description><![CDATA[Windows Embedded 8 est la dernière version du système d’exploitation de Microsoft destinée aux systèmes embarqués. Il est prévu pour Mars 2013 mais plusieurs versions Preview ont déjà été publiées via le programme Microsoft Connect. Windows Embedded 8 est basé sur une version allégée de Windows 8. Il n&#8217;inclut par exemple pas Windows Store, ce [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1171&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Windows Embedded 8 est la dernière version du système d’exploitation de Microsoft destinée aux systèmes embarqués. Il est <a title="Windows Embedded 8 roadmap" href="http://www.zdnet.com/microsoft-updates-its-windows-embedded-roadmap-embedded-8-handheld-is-alive-7000007405/" target="_blank">prévu pour Mars 2013</a> mais plusieurs versions Preview ont déjà été publiées via le programme Microsoft Connect.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/02/winembeddedtimeline.png"><img class="aligncenter size-full wp-image-1173" alt="winembeddedtimeline" src="http://mcnextpost.files.wordpress.com/2013/02/winembeddedtimeline.png?w=630"   /></a></p>
<p>Windows Embedded 8 est basé sur une version allégée de Windows 8. Il n&rsquo;inclut par exemple pas Windows Store, ce qui rend impossible l&rsquo;installation d&rsquo;applications Modern UI de diffusion large. Le système ajoute cependant de nouvelles fonctionnalités destinées notamment au Branding (modification de l&rsquo;apparence) et au Lockdown (verrouillage du poste de travail). Ces fonctionnalités le rendent particulièrement adapté aux appareils personnalisés (pour une société), aux bornes publiques ou aux ordinateurs de bord.</p>
<p>La configuration d&rsquo;une machine sous Windows Embedded 8 se réalise au préalable sur un poste de développeur, via l&rsquo;outil Image Configuration Editor (ICE). Cette application, présente dans le SDK fourni, liste l&rsquo;ensemble des fonctionnalités disponibles dans le système d&rsquo;exploitation embarqué.  Elle permet ensuite de les activer et de les configurer.</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/02/w8e-ice1.png"><img class="aligncenter size-full wp-image-1176" alt="W8E ICE" src="http://mcnextpost.files.wordpress.com/2013/02/w8e-ice1.png?w=630&#038;h=533" width="630" height="533" /></a><em>A gauche la liste des fonctionnalités disponibles, au centre celles activées,<br />
à</em><em> droite le paramétrage de la fonctionnalité sélectionnée</em></p>
<p>Une fois les fonctionnalités configurées, l&rsquo;installation de la machine hôte peut se faire de plusieurs manières. ICE peut par exemple générer un ISO préconfiguré de Windows Embedded 8 qui contiendra le paramétrage réalisé. Une autre méthode, plus simple, consiste à enregistrer le fichier de configuration en XML et sélectionner ce fichier lors de la première étape de l&rsquo;installation de l&rsquo;ISO standard. Les fonctionnalités  seront alors activées automatiquement via l&rsquo;outil transparent intégré à l&rsquo;installeur, Image Builder Wizard.</p>
<p style="text-align:center;"><a href="http://mcnextpost.files.wordpress.com/2013/02/w8e-ibw.jpg"><img class="aligncenter size-large wp-image-1180" alt="W8E IBW" src="http://mcnextpost.files.wordpress.com/2013/02/w8e-ibw.jpg?w=630&#038;h=457" width="630" height="457" /></a><em id="__mceDel" style="text-align:center;"><em>Le deuxième choix permet le paramétrage de l&rsquo;installation par le fichier XML créé via ICE</em></em></p>
<p>Ainsi, Windows Embedded 8 propose un environnement adapté aux systèmes embarqués par le biais de fonctionnalités de personnalisation et de sécurisation. Il nécessite d&rsquo;être configuré via une machine de développement classique. Cette séparation permet une certaine industrialisation mais rend impossible la modification &quot;à chaud&quot; des machines hôtes.</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/pole-net/'>Pole .NET</a>, <a href='http://mcnextpost.com/category/windows8/'>Windows8</a> Tagged: <a href='http://mcnextpost.com/tag/windows-embedded-8/'>Windows Embedded 8</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1171&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/02/20/introduction-windows-8-embedded/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/587f0ec997330aa749d2fb52d0815c2b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eynard</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/winembeddedtimeline.png" medium="image">
			<media:title type="html">winembeddedtimeline</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/w8e-ice1.png" medium="image">
			<media:title type="html">W8E ICE</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/w8e-ibw.jpg?w=630" medium="image">
			<media:title type="html">W8E IBW</media:title>
		</media:content>
	</item>
		<item>
		<title>Sideloading d’une application Windows 8 Modern UI</title>
		<link>http://mcnextpost.com/2013/02/15/windows-8-sideloading-app-modern-ui/</link>
		<comments>http://mcnextpost.com/2013/02/15/windows-8-sideloading-app-modern-ui/#comments</comments>
		<pubDate>Fri, 15 Feb 2013 14:00:12 +0000</pubDate>
		<dc:creator>Rémi Eynard</dc:creator>
				<category><![CDATA[Pole .NET]]></category>
		<category><![CDATA[Windows8]]></category>
		<category><![CDATA[Metro]]></category>
		<category><![CDATA[Windows 8]]></category>
		<category><![CDATA[Windows Embedded 8]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1152</guid>
		<description><![CDATA[Généralement les applications Windows 8 Modern UI sont installées à partir du Windows Store, système prévu par Microsoft à cet effet. Cette méthode n’est cependant pas universelle et ne convient pas dans certains cas, comme par exemple : Lorsque l’application ne passe pas la validation requise par Microsoft Lorsque l’application doit rester dans un cadre [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1152&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Généralement les applications Windows 8 Modern UI sont installées à partir du Windows Store, système prévu par Microsoft à cet effet. Cette méthode n’est cependant pas universelle et ne convient pas dans certains cas, comme par exemple :</p>
<ul>
<li>Lorsque l’application ne passe pas la validation requise par Microsoft</li>
<li>Lorsque l’application doit rester dans un cadre privé ou celui d&rsquo;une entreprise</li>
<li>Lorsque le Windows Store n’est pas disponible sous l’environnement considéré, ce qui est le cas pour Windows 8 Embedded</li>
</ul>
<p>Ce n’est en réalité pas l’installation en elle-même qui pose problème, mais l’exécution qui sera par défaut verrouillée si le package n’a pas été installé via le Store.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/02/sideloading-ko.png"><img class="size-large wp-image-1163 aligncenter" alt="sideloading ko" src="http://mcnextpost.files.wordpress.com/2013/02/sideloading-ko.png?w=630&#038;h=472" width="630" height="472" /></a></p>
<p>Le fait d’autoriser cette exécution sera alors appelé « sideloading ». Il existe pour cela quatre méthodes qui dépendent du système d’exploitation et du contexte.</p>
<h2><strong>// Sideloading via une licence développeur (tous systèmes Windows 8)</strong></h2>
<p>La manière la plus basique de réaliser du sideloading est de passer par une licence de développeur. Il est possible, pour un développeur Modern UI, de créer un package (.appx) de test de son application. Le script d’installation activera alors une licence dite « développeur » et autorisera le sideloading sur le poste de travail.</p>
<p>Cette méthode, bien que pratique, gratuite et rapide, n’est mise à disposition par Microsoft qu&rsquo;à des fins de tests. Son utilisation dans un cadre de production n’est pas autorisée.</p>
<p><a href="http://mcnextpost.files.wordpress.com/2013/02/licence.jpg"><img class="aligncenter size-medium wp-image-1166" alt="licence dev w8" src="http://mcnextpost.files.wordpress.com/2013/02/licence.jpg?w=300&#038;h=268" width="300" height="268" /></a></p>
<h2><strong>// Sideloading par clé d’activation (tous systèmes Windows 8)</strong></h2>
<p>Microsoft souhaite promouvoir son Store et contrôler ainsi le parc d’applications disponibles sous Windows 8. L’éditeur permet toutefois de débloquer totalement le sideloading sur un poste de travail via l’activation d’une clé spécialement prévue à cet effet.</p>
<p>Cette clé est vendue sous le nom de code « J7S-00005 » à environ 30$ par clé (par packs de 100 uniquement pour le moment !). Elle s’active par simple appel à l’outil de licensing intégré.</p>
<pre>slmgr.vbs /ipk &lt;sideloading product key&gt;
slmgr.vbs /ato ec67814b-30e6-4a50-bf7b-d55daf729d1e</pre>
<p>Cette solution est efficace et radicale, mais le montant total pour un parc informatique peut s’avérer élevé.</p>
<h2><strong>// Sideloading par contrôleur de domaine (Windows 8 Enterprise + Server 2012)</strong></h2>
<p>Sous certaines conditions, le déploiement d’une application Modern UI dans le cadre d’une société est facilité. Le sideloading sera ainsi activé sur un poste lorsque celui-ci dispose de Windows 8 version Enterprise et s’il est connecté à un domaine.</p>
<p>Windows 8 Enterprise peut donc s’avérer intéressant pour les sociétés désirant disposer d’applications privées.</p>
<h2><strong>// Sideloading par validation alternative (Windows 8 Embedded)</strong></h2>
<p>Windows Store n’est pas disponible sous Windows 8 Embedded. Microsoft a indiqué qu’un système de validation similaire à celui du Store permettrait d’obtenir un package qui ne nécessite pas de sideloading en particulier.</p>
<p>Les prérequis pour ce type d’applications seront du même niveau d’exigence que ceux des applications destinées au Store, <a href="http://social.msdn.microsoft.com/Forums/en-US/wes8/thread/e5d9a19a-dd1b-4c95-a537-90c606f59614">selon une discussion récente</a>. Il y a cependant peu d’informations concernant cette méthode à l’heure actuelle.</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/pole-net/'>Pole .NET</a>, <a href='http://mcnextpost.com/category/windows8/'>Windows8</a> Tagged: <a href='http://mcnextpost.com/tag/metro/'>Metro</a>, <a href='http://mcnextpost.com/tag/windows-8/'>Windows 8</a>, <a href='http://mcnextpost.com/tag/windows-embedded-8/'>Windows Embedded 8</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1152&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/02/15/windows-8-sideloading-app-modern-ui/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/587f0ec997330aa749d2fb52d0815c2b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eynard</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/sideloading-ko.png?w=630" medium="image">
			<media:title type="html">sideloading ko</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/licence.jpg?w=300" medium="image">
			<media:title type="html">licence dev w8</media:title>
		</media:content>
	</item>
		<item>
		<title>Techdays 2013 : Une tablette surface à gagner en testant vos connaissances 100% Microsoft sur le stand 97 de MCNEXT.</title>
		<link>http://mcnextpost.com/2013/02/07/venez-tester-vos-connaissances-100-microsoft-sur-le-stand-97-de-mcnext-et-tentez-de-gagner-une-tablette-surface/</link>
		<comments>http://mcnextpost.com/2013/02/07/venez-tester-vos-connaissances-100-microsoft-sur-le-stand-97-de-mcnext-et-tentez-de-gagner-une-tablette-surface/#comments</comments>
		<pubDate>Thu, 07 Feb 2013 08:56:02 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[Evènements]]></category>
		<category><![CDATA[Techdays 2013]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1135</guid>
		<description><![CDATA[Venez rencontrer les experts MCNEXT sur le stand n 97 zone bleu foncée. Vous pourrez ainsi tester vos connaissances autour de Microsoft et ainsi tentez de gagner une tablette surface ! A vous de jouer ! Classé dans:Evènements, Techdays 2013<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1135&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://mcnextpost.files.wordpress.com/2013/02/quiz-mcnext.png"><img class="alignleft size-medium wp-image-1141" alt="Techdays 2013 Quiz DotNET MCNEXT" src="http://mcnextpost.files.wordpress.com/2013/02/quiz-mcnext.png?w=209&#038;h=300" width="209" height="300" /></a><strong></strong></p>
<p><strong>Venez rencontrer les experts MCNEXT sur le stand n 97 zone bleu foncée.</strong><br />
<strong>Vous pourrez ainsi tester vos connaissances autour de Microsoft et ainsi tentez de gagner une tablette surface !</strong><br />
<strong>A vous de jouer !</strong></p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/'>Evènements</a>, <a href='http://mcnextpost.com/category/evenements/techdays/techdays-2013/'>Techdays 2013</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1135&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/02/07/venez-tester-vos-connaissances-100-microsoft-sur-le-stand-97-de-mcnext-et-tentez-de-gagner-une-tablette-surface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2013/02/quiz-mcnext.png?w=209" medium="image">
			<media:title type="html">Techdays 2013 Quiz DotNET MCNEXT</media:title>
		</media:content>
	</item>
		<item>
		<title>TECHDAYS 2013</title>
		<link>http://mcnextpost.com/2013/02/05/techdays-2013/</link>
		<comments>http://mcnextpost.com/2013/02/05/techdays-2013/#comments</comments>
		<pubDate>Tue, 05 Feb 2013 17:48:54 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[Evènements]]></category>
		<category><![CDATA[Techdays]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1125</guid>
		<description><![CDATA[C&#8217;est la 5 ème année consécutive  que MCNEXT participe aux TechDays, cette année MCNEXT anime 7 sessions : Créer votre application métier pour tablettes Windows 8, SharePoint 2013 et SQL Server 2012 ( BI) : Session animée par Stéphane Cordonnier, directeur technique au sein de MCNEXT , mardi 12 Février de 16h à 17h. Pour [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1125&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>C&rsquo;est la 5 ème année consécutive  que MCNEXT participe aux TechDays, cette année MCNEXT anime 7 sessions :</p>
<ol>
<ol>
<li><strong>Créer votre application métier pour tablettes Windows 8, SharePoint 2013 et SQL Server 2012 ( BI)</strong> :<br />
Session animée par Stéphane Cordonnier, directeur technique au sein de MCNEXT , mardi 12 Février de 16h à 17h.<br />
Pour plus d&rsquo;informations <a href="http://www.microsoft.com/france/mstechdays/programmes/2013/recherche-sessions.aspx?1#r=Créez votre application métier pour tablettes Windows 8, SharePoint 2013 et SQL Server 2012 (BI)&amp;Page=1&amp;" target="_blank">Cliquez ici</a></li>
<p></br></p>
<li><strong>Les nouveautés de Microsoft Biztalk Server 2013</strong> :<br />
Session animée par  Rock Baduel, directeur du pôle BizTalk au sein de MCNEXT, mardi 12 Février de 17h30 à 18h30.<br />
Pour plus d&rsquo;informations  <a href="http://www.microsoft.com/france/mstechdays/programmes/2013/fiche-session.aspx?ID=2bc86cbe-51fe-4315-be7e-6dd9670c0e63" target="_blank">Cliquez ici</a></li>
<p></br></p>
<li><strong>DAX for dummies / DAX pour les nuls ! :</strong><br />
Session animée par Julien Vidal et Pascal Rouze, consultants décisionnels au sein de MCNEXT, mardi 12 Février de 17h30 à 18h30 .<br />
Pour plus d&rsquo;informations <a href="http://www.microsoft.com/france/mstechdays/programmes/2013/fiche-session.aspx?ID=1c59d361-9b9e-4ace-9ff8-015e56c75338" target="_blank">Cliquez ici</a></li>
<p></br></p>
<li><strong>Fichier, Nouveau projet&#8230; Et après ?</strong> :<br />
Session animée par John Thiriet , consultant .NET au sein de MCNEXT, mardi 12 Février de 17h30 à 18h30.<br />
Pour plus d&rsquo;informations <a href="http://www.microsoft.com/france/mstechdays/programmes/2013/fiche-session.aspx?ID=96646a53-dec2-4762-8892-fc97ff09ce8d" target="_blank">Cliquez ici</a></li>
<p></br></p>
<li><strong>Introduction à node.js</strong> :<br />
Session animée par Guillaume Leborgne, expert .NET au sein de MCNEXT, mercredi 13 Février de 14h30 à 15h30.<br />
Pour plus d&rsquo;informations <a href="http://www.microsoft.com/france/mstechdays/programmes/2013/fiche-session.aspx?ID=9164eeff-8739-49b4-af26-ad2b07e79f16" target="_blank">Cliquez ici</a></li>
<p></br></p>
<li><strong>TypeScript for dummies :</strong><br />
Session animée par Guillaume Leborgne , expert .NET au sein de MCNEXT, Mercerdi 13 Février de 16h à 17h.<br />
Pour plus d&rsquo;informations <a href="http://www.microsoft.com/france/mstechdays/programmes/2013/fiche-session.aspx?ID=6f0078f4-bc3e-4f94-b8e9-9d13a3193462" target="_blank">Cliquez ici</a></li>
<p></br></p>
<li><strong>Tout sur les SPA :</strong><br />
Session animée par Guillaume Leborgne, Expert .NET au sein de MCNEXT , Mercredi 13 Février de 17h30 à 18h30.Pour plus d&rsquo;informations <a href="http://www.microsoft.com/france/mstechdays/programmes/2013/fiche-session.aspx?ID=3461e694-0d0f-4293-a929-082e346ebf21" target="_blank">Cliquez ici</a></li>
<p></br>
</ol>
<p><strong>Retrouvez- nous sur le Stand MCNEXT : 97 ( Zone bleu foncée) !</strong></p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/'>Evènements</a>, <a href='http://mcnextpost.com/category/evenements/techdays/'>Techdays</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1125&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2013/02/05/techdays-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>Office 365 / Supprimer une collection de site non provisionnée</title>
		<link>http://mcnextpost.com/2012/12/30/office-365-supprimer-une-collection-de-site-non-provisionnee/</link>
		<comments>http://mcnextpost.com/2012/12/30/office-365-supprimer-une-collection-de-site-non-provisionnee/#comments</comments>
		<pubDate>Sun, 30 Dec 2012 12:25:58 +0000</pubDate>
		<dc:creator>Christian SU</dc:creator>
				<category><![CDATA[Office 365]]></category>
		<category><![CDATA[SharePoint 2013]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1101</guid>
		<description><![CDATA[Microsoft a dévoilé la nouvelle version de SharePoint ces derniers mois avec SharePoint 2013. A cette occasion, Office 365  Preview qui représente l’offre de Microsoft sur le Cloud, a été lancée avec les nouvelles versions de la vague 2013, à savoir SharePoint 2013, Exchange 2013 et Lync 2013. Si vous avez fait partie des personnes [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1101&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Microsoft a dévoilé la nouvelle version de SharePoint ces derniers mois avec SharePoint 2013. A cette occasion, Office 365  Preview qui représente l’offre de Microsoft sur le Cloud, a été lancée avec les nouvelles versions de la vague 2013, à savoir SharePoint 2013, Exchange 2013 et Lync 2013. Si vous avez fait partie des personnes qui ont créé un compte, vous avez ainsi pu commencer à tester la nouvelle version des produits de Microsoft sur le Cloud.</p>
<p>Seulement voilà, certains d’entre vous ont peut-être noté que la plateforme pouvait souffrir de certains dysfonctionnements, certainement dus à l’intervention de Microsoft sur celle-ci (pour corriger les problème de cette version Preview).</p>
<p>MCNEXT a fait partie du programme Wave 15 permettant ainsi d’avoir les produits et notamment SharePoint 2013 en avance de phase. C’est ainsi que nous avons eu l’occasion de tester le nouveau SharePoint mais également Office 365 et SharePoint Online.</p>
<p>Dans ce cadre, nous avons eu l’occasion de créer des collections de sites SharePoint Online 2013 grâce à la plateforme Office 365 et son interface d’administration. Malheureusement, nous avons dû faire face à quelques dysfonctionnements de la plateforme et une certaine instabilité de la plateforme. Lors de la création d’une collection de sites, nous avons en effet eu les symptômes suivants :</p>
<ul>
<li>La création de la collection de sites semble être lancée</li>
<li>Le processus tourne en rond et l’icône d’avancement semble tourner indéfiniment</li>
<li>Impossible d’accéder à la collection de sites</li>
<li>Impossible de supprimer la collection de sites</li>
<li>Impossible de recréer une collection de sites par-dessus</li>
</ul>
<p>Finalement, cela engendre le fait d’avoir une collection de sites inutilisable, non supprimable et totalement bloquée.</p>
<p><a href="http://mcnextpost.com/2012/12/30/office-365-supprimer-une-collection-de-site-non-provisionnee/bugged-sitecoll-01/" rel="attachment wp-att-1102"><img class="size-medium wp-image-1102 aligncenter" alt="Bugged-SiteColl-01" src="http://mcnextpost.files.wordpress.com/2012/12/bugged-sitecoll-01.jpg?w=300&#038;h=95" width="300" height="95" /></a></p>
<p style="text-align:center;"><strong>Interface d’administration des collections de sites Office 365 version 2013</strong></p>
<p>Après quelques tests en vain via Powershell, et après avoir contacté le support Office 365, nous n’avions eu aucune réponse à notre problème, ne pouvant pas intervenir sur la collection de sites.</p>
<p>Néanmoins une solution a été trouvée en ayant recours à une manipulation peu orthodoxe.</p>
<p>En allant sur l’interface d’administration, une coche permet de sélectionner une collection de sites. Malheureusement la collection de sites buggée n’est pas sélectionnable : impossible d’intervenir dessus.</p>
<p>Sur Internet Explorer, appuyez sur F12, ou cliquez sur « Options &#8211;&gt; F12 developer tools ». Cela permet d’ouvrir le panneau développeur affichant ainsi le code source de la page.</p>
<p>Sur ce panneau, utiliser le premier outil en haut à gauche afin de sélectionner la coche correspondant à la collection de site buggée.</p>
<p>Dans le code source, la sélection devrait être mise sur le code correspondant à la coche. A défaut, dépliez l’arborescence (bouton +) pour arriver au code &lt;input&gt;.</p>
<p>Sur cette ligne, repérez le mot « disabled », cliquez dessus – vous passez en édition du code à la volée –, supprimez le mot « disabled ».</p>
<p style="text-align:center;"><a href="http://mcnextpost.com/2012/12/30/office-365-supprimer-une-collection-de-site-non-provisionnee/bugged-sitecoll-02/" rel="attachment wp-att-1103"><img class="size-medium wp-image-1103 alignnone" alt="Bugged-SiteColl-02" src="http://mcnextpost.files.wordpress.com/2012/12/bugged-sitecoll-02.jpg?w=300&#038;h=135" width="300" height="135" /></a></p>
<p style="text-align:center;"><strong>Cliquez sur « disabled » et supprimer le mot dans la ligne &lt;input&gt;</strong></p>
<p>Si vous avez bien fait, vous pouvez désormais cocher la ligne de la collection de sites buggée.</p>
<p>Une fois cochée, vous verrez les boutons s’activer dans le ruban d’actions, avec notamment le bouton « Delete ».</p>
<p style="text-align:center;"><a href="http://mcnextpost.com/2012/12/30/office-365-supprimer-une-collection-de-site-non-provisionnee/bugged-sitecoll-03/" rel="attachment wp-att-1104"><img class="size-medium wp-image-1104 alignnone" alt="Bugged-SiteColl-03" src="http://mcnextpost.files.wordpress.com/2012/12/bugged-sitecoll-03.jpg?w=300&#038;h=92" width="300" height="92" /></a></p>
<p style="text-align:center;"><strong>Le code est modifié, la ligne peut être sélectionnée, les boutons s’activent</strong></p>
<p>Cliquez sur le bouton « Delete » en vérifiant que la bonne collection de sites est cochée.</p>
<p>Une fenêtre en surbrillance s’ouvre pour confirmer la suppression.</p>
<p style="text-align:center;"><a href="http://mcnextpost.com/2012/12/30/office-365-supprimer-une-collection-de-site-non-provisionnee/bugged-sitecoll-04/" rel="attachment wp-att-1105"><img class="alignnone size-medium wp-image-1105" alt="Bugged-SiteColl-04" src="http://mcnextpost.files.wordpress.com/2012/12/bugged-sitecoll-04.jpg?w=300&#038;h=112" width="300" height="112" /></a></p>
<p style="text-align:center;"><strong>Fenêtre de confirmation de suppression</strong></p>
<p>Appuyez sur « Delete » pour confirmer la suppression.</p>
<p>La fenêtre devrait se fermer et une notification en haut à droite de l’écran devrait apparaitre.</p>
<p style="text-align:center;"><a href="http://mcnextpost.com/2012/12/30/office-365-supprimer-une-collection-de-site-non-provisionnee/bugged-sitecoll-05/" rel="attachment wp-att-1106"><img class="alignnone size-medium wp-image-1106" alt="Bugged-SiteColl-05" src="http://mcnextpost.files.wordpress.com/2012/12/bugged-sitecoll-05.jpg?w=300&#038;h=114" width="300" height="114" /></a></p>
<p style="text-align:center;"><strong>Notification de suppression</strong></p>
<p>Au bout de quelques secondes, la collection de sites sera effectivement supprimée de la liste des collections de sites.</p>
<p>Vous pourrez dès lors recréer une nouvelle collection de sites à cette adresse.</p>
<p style="text-align:center;"><a href="http://mcnextpost.com/2012/12/30/office-365-supprimer-une-collection-de-site-non-provisionnee/bugged-sitecoll-06/" rel="attachment wp-att-1107"><img class="alignnone size-medium wp-image-1107" alt="Bugged-SiteColl-06" src="http://mcnextpost.files.wordpress.com/2012/12/bugged-sitecoll-06.jpg?w=300&#038;h=94" width="300" height="94" /></a></p>
<p style="text-align:center;"><strong>La collection de sites buggée a été supprimée</strong></p>
<p>&nbsp;</p>
<p><strong>Christian SU &#8211; Consultant SharePoint</strong></p>
<br />Classé dans:<a href='http://mcnextpost.com/category/office-365/'>Office 365</a>, <a href='http://mcnextpost.com/category/sharepoint-2013/'>SharePoint 2013</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1101&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/12/30/office-365-supprimer-une-collection-de-site-non-provisionnee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/54952a34c2f2930185ab2eb9246864df?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">csumcnext</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2012/12/bugged-sitecoll-01.jpg?w=300" medium="image">
			<media:title type="html">Bugged-SiteColl-01</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2012/12/bugged-sitecoll-02.jpg?w=300" medium="image">
			<media:title type="html">Bugged-SiteColl-02</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2012/12/bugged-sitecoll-03.jpg?w=300" medium="image">
			<media:title type="html">Bugged-SiteColl-03</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2012/12/bugged-sitecoll-04.jpg?w=300" medium="image">
			<media:title type="html">Bugged-SiteColl-04</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2012/12/bugged-sitecoll-05.jpg?w=300" medium="image">
			<media:title type="html">Bugged-SiteColl-05</media:title>
		</media:content>

		<media:content url="http://mcnextpost.files.wordpress.com/2012/12/bugged-sitecoll-06.jpg?w=300" medium="image">
			<media:title type="html">Bugged-SiteColl-06</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : How to Develop Social Applications with SharePoint 2013</title>
		<link>http://mcnextpost.com/2012/11/18/spc2012-how-to-develop-social-applications-with-sharepoint-2013/</link>
		<comments>http://mcnextpost.com/2012/11/18/spc2012-how-to-develop-social-applications-with-sharepoint-2013/#comments</comments>
		<pubDate>Sun, 18 Nov 2012 11:02:23 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1099</guid>
		<description><![CDATA[Thursday, 11h00, Matthew McDermott, MVP, Principal Consultant, Director Résumé : Session où la grande partie est de la redite d&#8217;autres sessions. Une partie intéressante est la démo à la fin où il montre qu&#8217;il est possible d&#8217;outrepasser les problèmes de cross-scripting via un Request Executor. Dommage qu&#8217;il ne rentre pas plus dans les détails de [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1099&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Thursday, 11h00, Matthew McDermott, MVP, Principal Consultant, Director</strong></em></p>
<p><strong>Résumé :</strong></p>
<p>Session où la grande partie est de la redite d&rsquo;autres sessions.</p>
<p>Une partie intéressante est la démo à la fin où il montre qu&rsquo;il est possible d&rsquo;outrepasser les problèmes de cross-scripting via un Request Executor. Dommage qu&rsquo;il ne rentre pas plus dans les détails de l&rsquo;implémentation de son code. Son code lui permet de créer une sorte de bot permettant de s&rsquo;attacher à Dynamics pour poster une news sur SharePoint en mentionnant une personne qui clos une opportunité.</p>
<p><span style="text-decoration:underline;"><strong>// Composantes du social</strong></span></p>
<p>Il représente les composantes du social : UserProfiles + Feeds + Following + Search Il explique qu&rsquo;il ne faut pas hésiter à faire des prototypes pour valider ce que l&rsquo;on veut faire.</p>
<p>On peut travailler sur les UserProfiles, les social feeds, les site feeds et les community sites.</p>
<p>Il représente les possibilités de développer du social (CSOM, JSOM, REST, Silverlight Library, .NET CLR Library).</p>
<p>On peut récupérer les profiles et les propriétés.</p>
<p>On peut récupérer les feeds et les réponses.</p>
<p>On peut modifier la photo de l&rsquo;utilisateur (pas ses propriétés).</p>
<p>On peut créer des posts avec l&rsquo;utilisateur authentifié.</p>
<p>On ne peut pas tester si un compte existe, créer,modifier, supprimer un user profile, créer un post au nom d&rsquo;une autre personne.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : JSOM</strong></span></p>
<p>Il veut amener du social dans la recherche.</p>
<p>Il a modifier le search design Display template. Il a copié le Item_Person et Item_Person_Hover.</p>
<p>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.</p>
<p>Dans ce display template il utilise AddPostRenderCallback et SP.SOD.executeFund(&lsquo;sp.js&rsquo;..) pour ajouter un callback lorsque le DOM est chargé.</p>
<p>Il utilise console.log() pour logger ses erreurs.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : JSOM et REST</strong></span></p>
<p>Il fait deux démos, permettant d&rsquo;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 &quot;TwitterAccount&quot; qu&rsquo;il passe à une requête JSONP Twitter afin de récupérer les tweets.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : Request Executor</strong></span></p>
<p>Il expose un scénario d&rsquo;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.</p>
<p>Ainsi il surpasse la restriction cross-domain.</p>
<p>Il a une page hébergée sur Dynamics CRM, qui récupère et post les feeds.</p>
<p>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&rsquo;un bot.</p>
<p>Il ne rentre pas dans l&rsquo;implémentation de son code.</p>
<p>Christian</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1099&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/18/spc2012-how-to-develop-social-applications-with-sharepoint-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Living and breathing the social workspace</title>
		<link>http://mcnextpost.com/2012/11/18/spc2012-living-and-breathing-the-social-workspace/</link>
		<comments>http://mcnextpost.com/2012/11/18/spc2012-living-and-breathing-the-social-workspace/#comments</comments>
		<pubDate>Sun, 18 Nov 2012 11:01:22 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1097</guid>
		<description><![CDATA[Session de 12h à 13h15 animée par Daniel Kraft (CEO, Newsgator) &#8212; Petit résumé: Si vous voulez des news sur la version Newsgator sur SharePoint 2013, passez votre chemin. Il n&#8217;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. &#8212; [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1097&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Session de 12h à 13h15 animée par Daniel Kraft (CEO, Newsgator)</strong></em></p>
<p>&#8212;</p>
<p><strong>Petit résumé:</strong></p>
<p>Si vous voulez des news sur la version Newsgator sur SharePoint 2013, passez votre chemin. Il n&rsquo;a eu aucune démo, que des screenshots de leur noivelle version de Newsgator sur 2010.</p>
<p>Quelques idées pour les gens qui travaillent sur des projets RSE.</p>
<p>&#8212;</p>
<p><span style="text-decoration:underline;"><strong>// intro</strong></span></p>
<p><strong>Le problème principal : comment favoriser l&rsquo;adoption utilisateur ?</strong></p>
<p>Le social doit être une surcouche  L&rsquo;idée est vraiment de tirer une valeur business depuis le social.</p>
<p>Il commence par des slides sur la nouvelle version de Newsgator en mode tuiles. Oh le beau bandeau SharePoint 2010, formidable, que de nouveauté&#8230;</p>
<p>Un autre sur leur app Newsgator sous Windows 8, le plugin outlook, leur outil &quot;universal notification&quot; qui ajoute une barre de notification sur n&rsquo;importe quel outil.  La barre de notification répond au besoin d&rsquo;intégration du RSE sur des intranet ou autres outils existants.</p>
<p>Il souligne l&rsquo;intérêt du RSE qui permet de re devenir humain. On peut faire un post pour faire une blague, par mail, c&rsquo;est plus compliqué.</p>
<ul>
<li>92% sont content de leur travail</li>
<li>14% aiment leur travail</li>
</ul>
<p><strong>Les personnes qui aiment leur travail sont 200% plus innovants.</strong></p>
<p><strong>-&gt; la productivité est donc fortement lié au ressenti des employés. </strong></p>
<p>Voilà Megan qui nous fait un retour d&rsquo;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.</p>
<p>Tous les mois, ils extraient les bonnes idées du RSE et invitent les auteur à un lunch avec les dirigeants pour en parler -&gt; rewarding</p>
<p>Daniel reprend la parole.</p>
<p>Il ne faut jamais sous estimer l&rsquo;ego des gens. Rien n&rsquo;est fait si les employés ne sentent pas qu&rsquo;ils sont reconnus pour leur travail.</p>
<p><strong>Comment faire ?</strong></p>
<p>Par exemple, LinkedIn permet de reconnaitre le travail de collègues.</p>
<p>Voilà un témoignage maintenant d&rsquo;une personne d&rsquo;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&rsquo;entreprise forte. Un RSE à été mis en place pour répondre a ce besoin. Ils l&rsquo;ont fait en 11 semaines puis l&rsquo;ont déployé à tous le monde. Les RSE sert donc aux nouveaux à s&rsquo;imprégner de la culture de l&rsquo;entreprise. Ils ont mis en place de badges afin de reconnaitre les employés innovants et qui participes. Ils ont 1500 employés actifs.</p>
<p>Daniel reprend la parole.</p>
<p>Le principe des badges et autres récompenses permet de : donner un esprit d&rsquo;appartenance, motiver les gens, et permet aussi et surtout d&rsquo;identifier les experts. 90% de la connaissance est apprise des autres.</p>
<p>il recentre maintenant son discours sur du business, comment injecter du social dans les process business ? Il nous montre l&rsquo;intégration d&rsquo;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.</p>
<p><span style="text-decoration:underline;"><strong>// questions</strong></span></p>
<p><strong>Quelle différence avec le social dans SharePoint ?</strong></p>
<p>Newsgator est construit sur SharePoint et est censé le compléter&#8230; Mouais, vu qu&rsquo;on a vu que du 2010, ça a du sens. Mais 2013, on saura pas.</p>
<p><strong>Sur o365 ?</strong></p>
<p>Pas vraiment, il ont un cloud à eux si j&rsquo;ai bien compris.</p>
<p>Fabien</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1097&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/18/spc2012-living-and-breathing-the-social-workspace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Getting Your Apps into the Office and SharePoint Store</title>
		<link>http://mcnextpost.com/2012/11/18/spc2012-getting-your-apps-into-the-office-and-sharepoint-store/</link>
		<comments>http://mcnextpost.com/2012/11/18/spc2012-getting-your-apps-into-the-office-and-sharepoint-store/#comments</comments>
		<pubDate>Sun, 18 Nov 2012 10:59:39 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1095</guid>
		<description><![CDATA[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 [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1095&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Session de 12h à 13h15 Vivek Narasimhan, Product Manager</strong></em></p>
<p>Cette session va clôturer mon programme de la SharePoint Conference.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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 ».</p>
<p>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.</p>
<p><strong>Concernant la distribution de l’app, il existe deux chemins :</strong></p>
<ul>
<li>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)</li>
<li>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.</li>
</ul>
<p>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 ».</p>
<p>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 ».</p>
<p>Un onglet spécifique permet de présenter les statistiques par apps : Hits par browser, téléchargement, achats…</p>
<p>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).</p>
<p><strong>On ajoute maintenant une nouvelle app, pour cela on remplit tout un tas d’informations :</strong></p>
<ul>
<li>Le type (App for Office, Outlook, SharePoint),</li>
<li>La version (ça peut être a, b, c, des chiffres),</li>
<li>La catégorie (Communications, Jobs, IT/Admin…).</li>
<li>L’ajout du logo,</li>
<li>L’app package (le fichier manifest)</li>
<li>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.</li>
<li>On peut proposer l’app en version d’évaluation (en indiquant un nombre de jour, un nombre d’utilisateur (société))</li>
<li>La description courte et longue, les screenshots</li>
<li>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.</li>
<li>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).</li>
<li>L’achat est lié au compte MS, donc si on change de machine on a toujours ces apps.</li>
</ul>
<p>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.</p>
<p><strong>Toutes les apps sont testées par MS avant d’être publié par Microsoft.</strong></p>
<p><strong>Des exemples de domaines pour les apps :</strong></p>
<ul>
<li>Data visualization,</li>
<li>Lifestyle,</li>
<li>Project Management,</li>
<li>Communication,</li>
<li>Content Management,</li>
<li>Social,</li>
<li>Financial Management,</li>
<li>Reference</li>
</ul>
<p>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 <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Jérôme</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1095&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/18/spc2012-getting-your-apps-into-the-office-and-sharepoint-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Deep dive into Excel Services and PowerPivot for SharePoint 2013</title>
		<link>http://mcnextpost.com/2012/11/18/spc2012-deep-dive-into-excel-services-and-powerpivot-for-sharepoint-2013/</link>
		<comments>http://mcnextpost.com/2012/11/18/spc2012-deep-dive-into-excel-services-and-powerpivot-for-sharepoint-2013/#comments</comments>
		<pubDate>Sun, 18 Nov 2012 10:56:57 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1093</guid>
		<description><![CDATA[Session de 12h à 13h15 animée par Diego Oppenheimer (Program Manager) &#38; 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 [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1093&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><b>Session de 12h à 13h15 animée par Diego Oppenheimer (Program Manager) &amp; Kay Unkroth (Program Manager)</b></em></p>
<p>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</p>
<p>On voit des statistiques sur les top tweeters, top hashtags, top mentions et nombre de tweets par jour</p>
<p>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)</p>
<p>La première version qui a été développée pour automatiser l&rsquo;utilisation du classeur Excel (et notamment son rafraichissement sur SharePoint) n&rsquo;est pas aussi simple qu&rsquo;il y parait car on nous présente un schéma d&rsquo;architecture qui met en oeuvre plus d&rsquo;une dizaine de composant (PowerPivot, Reporting Services, SharePoint, Analysis Services, Excel, Azure…)</p>
<p>On passe en revue sur le schéma d&rsquo;architecture du fonctionnement d&rsquo;Excel Services, comment celui-ci fait pour utiliser un classeur Excel comme source de données (utilisation de SPClient, etc…)</p>
<p>Même chose ensuite avec la manière dont Excel Services gère les rafraichissements planifiés via les TimerJob, le SecureStore, etc…</p>
<p>C&rsquo;est une session extrêmement technique pour comprendre en détail le fonctionnement d&rsquo;Excel Services dans le traitement des fichiers Excel mais je ne pensais pas qu&rsquo;ils descendraient si profond (remarque vu le titre deep dive ça parait logique) dans les explications et je suis un peu perdu   <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>On aborde maintenant un exemple de code montrant comment déclencher par code, le rafraichissement d&rsquo;un fichier Excel en utilisant les WebServices fournis nativement avec Excel Services</p>
<p>Passons à la création du classeur PowerPivot en tant que tel où l&rsquo;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</p>
<p>La construction du classeur Excel demandant pas mal d&rsquo;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&rsquo;on peut trouver un peu partout çar c&rsquo;est exactement ce que nous sommes en train de voir</p>
<p>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é</p>
<p>La 1ère partie sur le fonctionnement d&rsquo;Excel Services était très (trop) technique alors que la seconde partie s&rsquo;est contentée de voir comment créer le classeur Excel donc au final pas beaucoup de choses à dire sur l&rsquo;intérêt de la session</p>
<p>Stéphane</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1093&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/18/spc2012-deep-dive-into-excel-services-and-powerpivot-for-sharepoint-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Developing Hybrid apps for SharePoint</title>
		<link>http://mcnextpost.com/2012/11/18/spc2012-developing-hybrid-apps-for-sharepoint/</link>
		<comments>http://mcnextpost.com/2012/11/18/spc2012-developing-hybrid-apps-for-sharepoint/#comments</comments>
		<pubDate>Sun, 18 Nov 2012 10:55:13 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1091</guid>
		<description><![CDATA[Thurday, 10h30, Rob Howard, Program Manager, SharePoint Developer Résumé Une grosse partie d&#8217;introduction est de la redite de session précédente. La deuxième partie explique comment configurer SharePoint pour qu&#8217;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 [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1091&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Thurday, 10h30, Rob Howard, Program Manager, SharePoint Developer</strong></em></p>
<p><strong>Résumé</strong></p>
<p>Une grosse partie d&rsquo;introduction est de la redite de session précédente.</p>
<p>La deuxième partie explique comment configurer SharePoint pour qu&rsquo;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.</p>
<p>On va rentrer dans le code, JSON, token OAuth.</p>
<p><span style="text-decoration:underline;"><strong>// Review of SP App Authentication</strong></span></p>
<p>C&rsquo;est le même monsieur qui a fait la session sur OAuth, et ce sont les mêmes slides, c&rsquo;est annoncé et il s&rsquo;excuse, il fait 10min de redite par rapport à la session de mardi.</p>
<p><span style="text-decoration:underline;"><strong>// Scénarios Hybrid</strong></span></p>
<p>Vendre une app pour des clients sur O365 ou on prem.</p>
<p>Créer une App avec un code qui puisse fonctionner pour les clients qui un O365 ou un on-prem.</p>
<p>Connecter une App dans le cloud avec une App en on-prem.</p>
<p><span style="text-decoration:underline;"><strong>// App identity</strong></span></p>
<p>En mode cloud, nous avons Azure AD qui sert de STS (token service). L&rsquo;app et O365 trust l&rsquo;Azure AD.</p>
<p>En on prem, on se base sur du certificat.</p>
<p>Hybrid, avoir des serveurs App et SP qui trust un Azure AD.</p>
<p>Pour du Hybrid, les autohosted apps ne sont pas gérées ni supportées pour les fermes on-prem.</p>
<p>Les cross-firewall server-side calls peuvent être un problème.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : Meeting Scheduler App</strong></span></p>
<p>Il a une APP qu&rsquo;il upload sur O365 dans l&rsquo;app catalog (SharePoint hosted).</p>
<p>Il ajoute l&rsquo;app à un site. Il montre que l&rsquo;app est bien dans un domaine.</p>
<p>Il met un élément dans sa liste (événement). Cela envoie un mail à tous les participants les invitant à saisir leurs préférences.</p>
<p>Il a un formulaire comme un Doodle qui lui permet de sélectionner des dates préférentielles.</p>
<p>Le créateur peut valider la date où le max de personnes est dispo.</p>
<p>Il créé un fichier ICS en javascript.</p>
<p>&#8211;&gt; Juste pour montrer qu&rsquo;il a créé une App qui fonctionne on-prem autant que sur O365</p>
<p><span style="text-decoration:underline;"><strong>// Access tokens and issuers</strong></span></p>
<p>En décodant l&rsquo;access token déjà évoqué dans d&rsquo;autres sessions.</p>
<p>Il y a le x5t correspondant au thumbprint, identifiant</p>
<p>iss est l&rsquo;issuer, est le token service qui va permettre à SP de savoir s&rsquo;il connait ce fournisseur de token.</p>
<p>Les deux vont permettre à SP de savoir s&rsquo;il connait le fournisseur de Token + s&rsquo;il connait la personne qu&rsquo;il le demande (x5t-thumbprint).</p>
<p>Ensuite, le aud est un guid + url. guid représente l&rsquo;audience qui peut profiter de ce token (SharePoint va avoir un numéro, Exchange un autre, Lync un autre).</p>
<p>identityprovider permet de savoir quel est le type d&rsquo;identité ? (Microsoft Online ici).</p>
<p>Le nameid identifie cette identité.</p>
<p>actor est un Guid, représentant le client id qui effectue la requête.</p>
<p>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.</p>
<p>En On-prem, il y a un Trusted Security Token Issuer, qui va jouer le rôle de ACS mais en on prem.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : Création d&rsquo;une app high trust on-prem</strong></span></p>
<p>En on-prem, il faut qu&rsquo;on configure SP, pour qu&rsquo;il y ait un trust grâce à un certificat.</p>
<p>Cela se passe en Powershell, avec l&rsquo;utilisation de issuerId (ISS).</p>
<p>On récupère le realm, Get-SPAuthenticationRealm -ServiceContext <a href="http://sphvm-57892">http://sphvm-57892</a>.</p>
<p>On récupère le certificat Get-PfxCertificate.</p>
<p>Du code Powershell que je n&rsquo;ai pas noté. Grosso modo, il déclare le token issuer sur SP.</p>
<p>Il créé une app Provider Hosted.</p>
<p>Le wizard VS 2012, propose d&rsquo;utiliser un client secret via ACS ou un certificate.</p>
<p>On utilise le certificat où on met le certificat PFX et le mot de passe.</p>
<p>Il a une app, où il ajoute une List en XML.</p>
<p>Dans son ASPX, il utilise le CSOM pour ajouter un item.</p>
<p>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.</p>
<p>Le token généré est passé à sa création de liste pour qu&rsquo;il ait l&rsquo;accès, utilisation de TokenHelper.GetContext…</p>
<p><span style="text-decoration:underline;"><strong>// Configuring a hybrid SP environment</strong></span></p>
<p>Il va configurer ACS comme trusted token issue sur SP</p>
<p>C&rsquo;est du Powershell.</p>
<p>Il récupère un SPWeb.</p>
<p>Il définit un $ACSMetadataEndPoint étant l&rsquo;URL, d&rsquo;ACS accounts.accesscontrol.windows.net… il met l&rsquo;URL du realm en format JSON.</p>
<p>Il récupère le flux via Invoke-RestMethod.</p>
<p>Il utilise Set-SPAutneticationRealm en passant le flux JSON.</p>
<p>Il créé un proxy Azure ACS Service Application Proxy en passant l&rsquo;endpoint.</p>
<p>Il créé New-TrustedSecurityTokenIssuer en mettant également l&rsquo;endpoint ACS.</p>
<p>Le code décrit ici n&rsquo;est pas complet mais le but est bien de définir ACS comme étant trusté par SP.</p>
<p><span style="text-decoration:underline;"><strong>// Creating a hybrid SharePoint App</strong></span></p>
<p>Il utilise ACS en ligne quand on est sur O365.</p>
<p>Il utilise son propre token issue avec certificat lorsqu&rsquo;il est on-prem.</p>
<p>Il créé un projet VS2012, App SharePoint, il met une URL on-prem, Provider-hosted.</p>
<p>Il utilise le certificat avec le PFX et le mot de passe.</p>
<p>Il explique que VS2012, fait le travail pour lui de mettre dans dans le web.config pour créer un client secret.</p>
<p>Il va dans le default.aspx. Et ajoute un snippet deux fois.</p>
<p>Premier test, il n&rsquo;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é.</p>
<p>Sinon Deuxième, il utilise GetClientContextWithContextToken(token).</p>
<p>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&rsquo;appdomain à son localhost. Il upload l&rsquo;App qu&rsquo;il a utilisé côté on-prem.</p>
<p>En allant sur l&rsquo;App, il va dans le 2ème test, car il est un context token.</p>
<p>Sa démo échoue, son explication est qu&rsquo;il s&rsquo;est trompé de package App. Car l&rsquo;audience n&rsquo;est visiblement pas la bonne.</p>
<p>Dernière chose qu&rsquo;il veut nous montrer est qu&rsquo;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</p>
<p>Christian</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1091&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/18/spc2012-developing-hybrid-apps-for-sharepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Migrating your WCM internet sites to SharePoint 2013</title>
		<link>http://mcnextpost.com/2012/11/18/spc2012-migrating-your-wcm-internet-sites-to-sharepoint-2013/</link>
		<comments>http://mcnextpost.com/2012/11/18/spc2012-migrating-your-wcm-internet-sites-to-sharepoint-2013/#comments</comments>
		<pubDate>Sun, 18 Nov 2012 10:53:47 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1089</guid>
		<description><![CDATA[Session de 10h30 à 11h45 animée par Israel Vega &#8212; Petit résumé: Session super intéressante sur le process de migration depuis 2010 vers 2013. &#8212; // intro Le job d&#8217;Israel est de faire en sorte que le site qu&#8217;il nous montre sous SharePoint 2010 soit tel quel à la fin de la session. Mais en SharePoint 2013 [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1089&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Session de 10h30 à 11h45 animée par Israel Vega</strong></em></p>
<p>&#8212;</p>
<p><strong>Petit résumé:</strong></p>
<p>Session super intéressante sur le process de migration depuis 2010 vers 2013.</p>
<p>&#8212;</p>
<p><span style="text-decoration:underline;"><strong>// intro</strong></span></p>
<p>Le job d&rsquo;Israel est de faire en sorte que le site qu&rsquo;il nous montre sous SharePoint 2010 soit tel quel à la fin de la session. Mais en SharePoint 2013 <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span style="text-decoration:underline;"><strong>// démo pre move</strong></span></p>
<p>Il commence par backuper et restorer ses bases depuis 2010 vers 2013.</p>
<p>En passant, il converti sa base vers claims.</p>
<p>J&rsquo;ai dû en rater car il va super vite !</p>
<p>Il lance tout ça maintenant car ça prend du temps.</p>
<p><span style="text-decoration:underline;"><strong>// slides</strong></span></p>
<p>Il va faire le focus sur le design et branding. Son but est de faire fonctionner son site internet sur 2013.</p>
<p>Les nouveautés WCM : custom 404 pages, snippet gallery, clean urls, etc&#8230;</p>
<p>Les nouveautés 2013 : pas de upgrade in place, il faudra forcement du detach/attach.</p>
<p>Les raisons de migrer sont donc : profiter de ces nouvelles fonctionnalités, redesign, etc.</p>
<p><strong>Les mode de migration :</strong></p>
<ul>
<li>à l&rsquo;identique</li>
<li>à l&rsquo;identique + des amélioration</li>
<li>refonte partielle</li>
<li>refonte</li>
</ul>
<p>Selon ces cas, les décisions seront différentes. Il faut donc bien identifier en amont le cas sur lequel on travaille.</p>
<p>Sa démo porte sur le 2eme cas, une migration à l&rsquo;identique avec les ajouts de la navigation par métadonnées et de la gestion de la master page depuis design manager.</p>
<p><span style="text-decoration:underline;"><strong>// 1ere étape</strong></span></p>
<p>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&rsquo;où la coexistence.</p>
<p>Son WSP a été installé sur 2013. (Les site def custom ne peuvent etre migrées sur le cloud)</p>
<p>Il faut maintenant upgrader la master pour profiter de l&rsquo;expérience 2013:</p>
<p>Pour cela :  site setting &gt; upgrade status</p>
<p>Et boum : erreur interne.</p>
<p>C&rsquo;était voulu, il y a plusieurs étapes à faire sur la master : changer le rubban, changer la balise html, etc.</p>
<p>Apres des petites blagues car sa master ne voulait pas s&rsquo;afficher (&quot;I see dead master pages&#8230;&quot; en mode 6e sens <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  c&rsquo;est showman !), il a pu changer et ça marche, cool <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>1er étape ok, le site est migré, le ruban est 2013, mais aucune nouvelle fonctionnalité n&rsquo;est disponible.</p>
<p><span style="text-decoration:underline;"><strong>// 2 eme étape</strong></span></p>
<p>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&rsquo;ASPX soient dissociés.</p>
<p>Il nous fait la démo, vraiment pas mal et pas trop complexe.</p>
<p>Il nous fait une démo en temps que designer de l&rsquo;édition de sa masterpage depuis dreamweaver sur mac, ca marche facile. Fini les envois de html par mail !</p>
<p>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.</p>
<p>Si on choisi de ne pas migrer sur le design manager :</p>
<p>On doit réfléchir a comment déployer les css, images -&gt; feature, wsp</p>
<p>On perd la possibilité de l&rsquo;utiliser -&gt; design sur html et conversion automatique en master pas possible, on doit travailler comme avant.</p>
<p><span style="text-decoration:underline;"><strong>// activer la navigation par metadonnees</strong></span></p>
<p>Il faut d&rsquo;abord upgrader le managed metadata service pour profiter des évolutions 2013.</p>
<p>Puis upgrader le navigation control dans la master</p>
<p>Il faut ensuite activer des features si on utilise le modèle blank#0 (cas d&rsquo;un site publishing fait à partir d&rsquo;un web template sur O365 par exemple).</p>
<p>Il créé son termset manuellement et fait pointer la friendly URL de ses termes vers ses pages migrées.</p>
<p>Et hop! Ça fonctionne.</p>
<p><span style="text-decoration:underline;"><strong>// post migration</strong></span></p>
<p>Peur des 404 ? on peut garder la vieille url lors d&rsquo;une migration dans un colonne et afficher cette colonne dans la custom 404.</p>
<p>Si on utilise le FBA, le FBA doit être reconfiguré et les passwords doivent être changer par les users (car le cryptage utilise l&rsquo;ID du serveur).</p>
<p>Fabien</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1089&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/18/spc2012-migrating-your-wcm-internet-sites-to-sharepoint-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Mastering App for Office development</title>
		<link>http://mcnextpost.com/2012/11/18/spc2012-mastering-app-for-office-development/</link>
		<comments>http://mcnextpost.com/2012/11/18/spc2012-mastering-app-for-office-development/#comments</comments>
		<pubDate>Sun, 18 Nov 2012 10:51:48 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1086</guid>
		<description><![CDATA[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 [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1086&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Session de 10h30 à 11h45 Ali Powell</strong></em></p>
<p>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é.</p>
<p><strong>Quelques chiffres pour commencer concernant les tendances :</strong></p>
<ul>
<li>1 milliard de smartphones en 2016 dont 350 millions pour le travail</li>
<li>82% de la population connectés (online) touche aux réseaux sociaux</li>
<li>50% des entreprises clientes sont sur la route vers Cloud</li>
</ul>
<p>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 »</p>
<p><strong>« Apps for Office permet de mettre le web dans Office ».</strong></p>
<p>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.</p>
<p>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.</p>
<p>Rappel sur les zones des apps pour Office (déjà détaillé lors des précédents CR de sessions) : TaskPane, Content, Mail.</p>
<p>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.</p>
<p><strong>On commence par du bloc-notes avec la présentation du manifest d’une app.</strong></p>
<p><strong>On y retrouve :</strong></p>
<ul>
<li>Le type de l’app (TaskPaneApp)</li>
<li>L’id de l’app : afin d’être unique dans le store et permettre les mises à jour dans le futur</li>
<li>Le titre, la localisation, description, le concepteur…</li>
<li>L’appDomain qui va permettre de donner le domaine qui sera utiliser pour charger la ou les app pages (ex : <a href="http://services.odata.org">http://services.odata.org</a>)</li>
<li>SourceLocation : permettant d’indiquer la page qu’on veut afficher (dans notre cas, la site wikipedia)</li>
<li>La dernière et certainement l’une des plus importantes, les permissions concernant le document qui hébergera l’app. Ex :  ReadWriteDocument</li>
</ul>
<p>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.</p>
<p>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.</p>
<p>On ouvre Word. Et dans « Apps for Office » on voit l’app.</p>
<p><strong>C’est parti pour Visual Studio 2012 !</strong></p>
<p>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.</p>
<p>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.</p>
<p>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).</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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 ».</p>
<p>Le test est directement fait dans Office 365.</p>
<p>Un autre test avec une adresse, uniquement l’app Bing maps est lancée.</p>
<p>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.</p>
<p>Bon tout est ok, mais ça fonctionne toujours pas. Dommage mais on comprend bien le principe.</p>
<p>Une dernière app de type de TaskPane est montré permettant d’afficher une information en bas à droite (bulle d’info).</p>
<p>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 ».</p>
<p>Jérôme</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1086&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/18/spc2012-mastering-app-for-office-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Developing Advanced BI Visualizations with Visio &amp; SharePoint in Office 365 with Azure</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-developing-advanced-bi-visualizations-with-visio-sharepoint-in-office-365-with-azure/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-developing-advanced-bi-visualizations-with-visio-sharepoint-in-office-365-with-azure/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 18:00:40 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1084</guid>
		<description><![CDATA[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&#8217;afficher sur SharePoint des diagrammes Visio [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1084&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><b>Session de 10h30 à 11h45 animée par Chris Hopkins (Premier Consultant)</b></em></p>
<p>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)</p>
<p>On commence par un rappel sur Visio Services qui permet d&rsquo;afficher sur SharePoint des diagrammes Visio connectés à des sources de données pouvant être rafraichies et tout ça côté serveur</p>
<p>Les diagrammes peuvent être actualisés mais pas édités ce qui est une nuance importe</p>
<p><strong>Pour créer des dashboards, il y a généralement 3 étapes</strong></p>
<ul>
<li>Identifier les sources de données</li>
<li>Modéliser le rendu</li>
<li>Définir les interactions</li>
</ul>
<p>Visio va permettre de réaliser toutes ces opérations directement dans l&rsquo;outil avant publication sur Visio Services</p>
<p>Petit rappel sur Visio qui permet de créer des diagrammes à partir de formes prédéfinies, d&rsquo;insérer des diagrammes AutoCAD, d&rsquo;ajouter des images/cliparts et de générer les diagrammes à partir de données</p>
<p>La génération de diagramme à partir de données se base sur la fonction &quot;Data Linking&quot; qui permet d&rsquo;associer une ligne d&rsquo;une source de données à une forme sachant qu&rsquo;une même ligne peut être affectée à plusieurs formes (on est sur une relation 1-N)</p>
<p>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)</p>
<p><strong>Les sources données supportées sont multiples</strong></p>
<ul>
<li>Excel Services</li>
<li>Listes SharePoint (natives ou externes via BCS)</li>
<li>SQL / SQL Azure</li>
<li>N&rsquo;importe quelle source assembly .NET</li>
<li>N&rsquo;importe quelle base de données possédant un pilote compatible</li>
</ul>
<p>Il est possible d&rsquo;afficher les données provenant des sources de données sous forme graphique (icônes, texte, data bars, color by value…)</p>
<p>Si les mode de rendu graphique ne répondent pas aux besoins, il est possible de créer ses propres modes de rendus</p>
<p>On passe à une première démonstration où l&rsquo;on voit un schéma Visio, connecté à une source de données, publié dans SharePoint et affiché grâce à Visio Services</p>
<p>On voit qu&rsquo;on peut passer d&rsquo;un diagramme à un autre en cliquant sur une forme à partir du moment où les interactions ont été définies correctement</p>
<p>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)</p>
<p>Quand on utilise une base de données SQL comme sources de données, il n&rsquo;est pas possible d&rsquo;utiliser une procédure stockée pour récupérer les données (seulement les tables et vues sont supportées)</p>
<p>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</p>
<p>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</p>
<p>Pour créer des dashboards interactifs, la WebPart Visio supporte la connexion avec les autres WebParts et il existe une API Javascript permettant d&rsquo;interagir avec les diagrammes</p>
<p>On passe à une nouvelle démo qui montre un exemple d&rsquo;utilisation de l&rsquo;API Javascript pour dessiner des canvas HTML5 sur des diagrammes Visio en fonction d&rsquo;actions de l&rsquo;utilisateur, afin de mettre en valeur certaines portails du diagramme</p>
<p>Malheureusement, à quelques exceptions près (Azure et BCS notamment), cette session est exactement la même que celle présentée l&rsquo;année dernière donc Visio/SharePoint 2013 n&rsquo;apportent pas de nouveautés pour la création de tableaux de bord BI</p>
<p>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</p>
<p>Stéphane</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1084&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-developing-advanced-bi-visualizations-with-visio-sharepoint-in-office-365-with-azure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Deliver SharePoint Apps On Non-Microsoft platforms &#8211; Lessons learned from the Trenches</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-deliver-sharepoint-apps-on-non-microsoft-platforms-lessons-learned-from-the-trenches/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-deliver-sharepoint-apps-on-non-microsoft-platforms-lessons-learned-from-the-trenches/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 17:58:01 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1082</guid>
		<description><![CDATA[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 à [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1082&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Thurday, 9h00,</strong> <strong>Kirk Evans, Principal PFE, @kaevans, Dallas Texas Radu Grama, PFE, @radugrama</strong></em></p>
<p><strong>Résumé</strong></p>
<p>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.</p>
<p>Il explique alors les problématiques de packaging, de connexion et de sécurité, et enfin de méthode d&rsquo;accès aux données.</p>
<p>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.</p>
<p>On nous met dans l&rsquo;ambiance, c&rsquo;est un Mac qui est sur scène</p>
<p><span style="text-decoration:underline;"><strong>// Scenario Overview</strong></span></p>
<p>Utilisation de FBA, pas de technos Microsoft.</p>
<p>Linux (Ubuntu 12.0.4) et AWS (Amazon Web Services), Apache, MySQL (avec un PhpMyAdmin), PHP</p>
<p><span style="text-decoration:underline;"><strong>// DEMO :</strong></span></p>
<p>On est sur un site PHP avec des customers et des agents dans une agence de voyage.</p>
<p>Un customer doit pouvoir laisser un message à un agent.</p>
<p>L&rsquo;agent a un BO, avec un listing des hôtels et des chambres, les messages des clients, rechercher dans le listing des hôtels.</p>
<p>Ils gèrent les rendez-vous et opérations dans SharePoint 2013.</p>
<p>Le but sera de connecter les deux sites.</p>
<p><span style="text-decoration:underline;"><strong>// Gathering requirements</strong></span></p>
<p>Les deux systèmes vont communiquer en REST/OData Il explique ce qui se cache derrière ses environnements (Apache, mysql etc)</p>
<p><span style="text-decoration:underline;"><strong>// App Decisions</strong></span></p>
<p>Il revient sur les méthodes d&rsquo;hébergement et explique qu&rsquo;aujourd&rsquo;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 &#8211; optionnel-) Utilisation de O365, il va utiliser ACS (access control service), listings sont en MySQL mais les RDV seront dans SharePoint 2013.</p>
<p><span style="text-decoration:underline;"><strong>// Packaging</strong></span></p>
<p>Il explique que le .APP d&rsquo;une App est un .ZIP.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : Grama montre la création d&rsquo;un package APP avec MonoDevelop</strong></span></p>
<p>L&rsquo;important est le AppManifest, qu&rsquo;il a récupéré.</p>
<p>Il insiste sur la start page qu&rsquo;il renvoie vers la page login de son site PHP.</p>
<p>Il a RemoteWebApplication dans AppPrincipal avec un ClientId qui va gérer l&rsquo;authentification Il une classe console qui va lui recréer la structure d&rsquo;un .APP et qui va le zipper dans un fichier .APP avec les Helpers de gestion de ZIP.</p>
<p>Il va sur son developer site, upload son .app.</p>
<p>Il explique qu&rsquo;il a utilisé MonoDevelop sur Mac pour coder en .NET avec Mono.</p>
<p><span style="text-decoration:underline;"><strong>// Retour sur les slides : Authentification et OAuth</strong></span></p>
<p>Pour une Cloud app, il faut enregistrer l&rsquo;App avec ACS (Access control services).</p>
<p>Utiliser les IDE pour développer l&rsquo;App.</p>
<p>Confugrer OAuth sur l&rsquo;application.</p>
<p>Puis package l&rsquo;App.</p>
<p>Pour OAuth, on utilise des tokens. Il explique qu&rsquo;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).</p>
<p><a href="https://sellerdashboard.microsoft.com/Application/Summary">https://sellerdashboard.microsoft.com/Application/Summary</a></p>
<p>Il faut utiliser cette interface pour enregistrer l&rsquo;App pour qu&rsquo;elle soit utilisable sur O365.</p>
<p>Il faut s&rsquo;assurer que le formulaire d&rsquo;inscription à la plateforme il faut créer un profil complet sous peine d&rsquo;être refusé.</p>
<p>Quand il va sur l&rsquo;onglet &quot;Client Ids&quot;, il peut ajouter un client Id OAuth. Pour cela il faut qu&rsquo;il mette un nom, un nom de domaine. Il récupère un Client ID et un Client Secret.</p>
<p>Quand il revient sur l&rsquo;AppManifest c&rsquo;est celui là qu&rsquo;il et dans son ClientId de AppPrincipal&gt;RemoteWebapplication // Evans explique le flux OAuth (cf session précédente qui l&rsquo;évoque déjà).</p>
<p>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&rsquo;iframe à contoso.com (l&rsquo;app domain), Contoso.com demande la validation du token à ACS, ACS renvoie un access token à l&rsquo;App, l&rsquo;App envoie la request et access token à SP, SP valide cela et renvoie les données à l&rsquo;App.</p>
<p>Il explique que côté serveur, il y a une classe TokenHelper sauf qu&rsquo;il ne peut pas l&rsquo;utiliser car il est en Mono.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : Grama explique l&rsquo;équivalent TokenHelper</strong></span></p>
<p>Il explique qu&rsquo;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.</p>
<ol>
<li>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&rsquo;App Token.</li>
<li>L&rsquo;App Token est vide &#8211;&gt; refuser l&rsquo;accès &#8211;&gt; Access denied.</li>
<li>App Token est OK &#8211;&gt; il doit maintenant récupérer l&rsquo;Access Token</li>
<li>$appToken-&gt;aud &#8211;&gt; il split les @ et $appToken-&gt;appctxsender pour récup leprincipal name</li>
<li>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).</li>
<li>Il récupère le endpoint qu&rsquo;il doit requêter via AppToken-&gt;appctx-&gt;.. il passe rapidement sur le code pour récupérer l&rsquo;access token</li>
<li>Une fois qu&rsquo;il a accessToken, c&rsquo;est bon il a accès à SharePoint et peut attaquer les données.</li>
</ol>
<p>L&rsquo;access token dure quelques heures. Une fois qu&rsquo;il est connecté il explique qu&rsquo;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.</p>
<p><span style="text-decoration:underline;"><strong>// CSOM and REST / OData</strong></span></p>
<p>Répétition de CSOM et REST via client.svc dans vti_bin … ou _api plus simplement.</p>
<p>Il insiste sur le fait qu&rsquo;il ne va rien installer sur SP de particulier, mais bien attaquer à distance les données.</p>
<p>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.</p>
<p>Il créé un tableau d&rsquo;en-têtes, pour envoyer sa requête GET.</p>
<p>Il met Authorization : Bearer en passant l&rsquo;AccessToken.</p>
<p>Il met Accept : application/json;odata=verbose.</p>
<p>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 &quot;sharepointUser&quot;.</p>
<p>Christian</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1082&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-deliver-sharepoint-apps-on-non-microsoft-platforms-lessons-learned-from-the-trenches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Best practices for record management with SharePoint 2013</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-best-practices-for-record-management-with-sharepoint-2013/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-best-practices-for-record-management-with-sharepoint-2013/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 17:55:37 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1080</guid>
		<description><![CDATA[Session de 9h à 10h15 animée par Scott Jamison, Jornata &#8212; 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. &#8212; // intro La session est basée sur l&#8217;histoire de Bob. Bob a déployé SharePoint. Il [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1080&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Session de 9h à 10h15 animée par Scott Jamison, Jornata</strong></em></p>
<p>&#8212;</p>
<p><strong>Petit résumé:</strong></p>
<p>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.</p>
<p>&#8212;</p>
<p><span style="text-decoration:underline;"><strong>// intro</strong></span></p>
<p>La session est basée sur l&rsquo;histoire de Bob. Bob a déployé SharePoint.</p>
<p>Il a une demande de records management dans son organisation.</p>
<p>Il ne sait pas comment s&rsquo;y prendre.</p>
<p>La session va donc aider Bob a répondre à son client.</p>
<p><span style="text-decoration:underline;"><strong>// enterprise content management</strong></span></p>
<p>Les concepts de RM sont : partage, organisation, trouver, construire, gérer.</p>
<p><strong>3 étapes : </strong></p>
<ul>
<li>Création des documents (création et organisation, metadata) -&gt; personnel</li>
<li>Organisation des documents (policy, architecture de l&rsquo;information, taxonomie) -&gt; team</li>
<li>Securisation des document (reduire les risques) -&gt; organisation</li>
</ul>
<p><span style="text-decoration:underline;"><strong>// record management</strong></span></p>
<p>Le RM consiste a identifier, classe, archiver, conserver et detruire les enregistrements.</p>
<p>Le but est de faire tout ca d&rsquo;une facon repetable et controlable.</p>
<p><strong>Les problèmes à résoudre : </strong></p>
<ul>
<li>Comment définir ses politiques de rétention ?</li>
<li>Comment accéder aux archives ?</li>
<li>Comment rendre tout ça semble pour que les utilisateurs adoptent l&rsquo;outil ?</li>
</ul>
<p>Il nous montre un cycle de vie de document : create, collaborate, review, approve, publish, expire, archive/destroy</p>
<p>Une best practice est d&rsquo;ajouter des metadonnees a chacune des étapes.</p>
<p><span style="text-decoration:underline;"><strong>// what s new in 2013</strong></span></p>
<p><strong>En SharePoint 2010:</strong></p>
<ul>
<li>content organizer</li>
<li>document sets</li>
<li>document IDs</li>
<li>location based metadata default : il pense que c&rsquo;est la feature la plus sous estimée.</li>
<li>navigation par metadonnees</li>
<li>in place record</li>
<li>site based eDiscovery and Holds</li>
</ul>
<p><strong>En SharePoint 2013:</strong></p>
<ul>
<li>tout ce qu on a dans 2010 +</li>
<li>Site rétention : on peut cibler une policy sur un site, qu&rsquo;est ce qui cause la fermeture et la suppression du site</li>
<li>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</li>
<li>cloud parity : on a toutes les fonctionnalités dans le cloud.</li>
<li>eDiscovery : idem, voir mon CR précédent dédié au sujet.</li>
</ul>
<p><strong>- démo de la politique de rétention d&rsquo;un site</strong></p>
<p>Tout se passe dans les site setting, il faut activer la feature &quot;site policy&quot; qui active le menu &quot;site policy&quot; et &quot;site closure and deletion&quot;. On doit d&rsquo;abord définir une policy au niveau collection de site, puis l&rsquo;assigner au site.</p>
<p>Lorsqu&rsquo;un site est fermé, un bandeau apparait tout en haut de l&rsquo;écran : &quot;le site est fermé à la demande de l&rsquo;administrateur de la collection&quot;.</p>
<p><strong>- démo de la site mailbox</strong></p>
<p>Il ajoute une app et la site mailbox est créé, rien de neuf par rapport a la session de mardi.</p>
<p><strong>- démo depuis le cloud</strong></p>
<p>Il montre juste un record center sur O365.</p>
<p><strong>- il passe maintenant a une belle publicité sur son bouquin&#8230; </strong></p>
<p><span style="text-decoration:underline;"><strong>// top 10 best practice</strong></span></p>
<p><strong>1 - identifier les roles</strong> :  qui est en charge des enregistrements (archiviste, legal), qui implémente (IT), qui gère le contenu, les utilisateurs</p>
<p><strong>2 &#8211; analyser le contenu à conserver </strong></p>
<p><strong>3 &#8211; encourager l&rsquo;usage de métadonnées</strong> : 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é &quot;title&quot; (qui est par défaut le titre du doc dans les propriété du doc office).</p>
<p>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&rsquo;autre raison de créer des dossiers !</p>
<p><strong>- démo</strong></p>
<p>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.</p>
<p><strong>4- construire file plan</strong> : un tableau de rétention des documents :</p>
<p>Contrat &#8211; description &#8211; 5 ans</p>
<p>SFD &#8211; &#8230;                    - 2 ans</p>
<p>Etc.</p>
<p><strong>- démo dans les doc lib setting</strong>, on a un bouton pour générer un file plan qui liste les contents types, les politiques de rétention, etc.</p>
<p><strong>5- mettre en place des schedule de rétention</strong></p>
<p><strong>- démo depuis lib setting</strong>. On peut baser le schedule sur des contenttype ou des répertoire.</p>
<p><strong>6- définir la solution : in place ou record center</strong></p>
<p>Un record center peut faire l&rsquo;affaire si la politique de retention des sites n&rsquo;est pas maîtrisée ou si l&rsquo;administration des sites n&rsquo;est pas &quot;fiable&quot;. On doit pouvoir maitriser les sites contenant les record pour faire du in place.</p>
<p>En contrario, le record center oblige a aller checker 2 endroits pour trouver ses documents.</p>
<p>Il a mis un tableau avec les pour et les contres pour choisir, il faudra le récupérer depuis les slides.</p>
<p><strong>- démo de la déclaration de record in place et aussi du send to record center.</strong></p>
<p><strong>7- définir comment le contenu devient un record</strong></p>
<p>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 ?</p>
<p><strong>8 &#8211; planifier l&rsquo;intégration des emails</strong></p>
<p><strong>9- un file plan doit être tenu a jour pour savoir ce qui est archivé et comment</strong></p>
<p><strong>10- add ons </strong></p>
<p>Là il nous vend son consulting et des solutions de ses partenaires&#8230;</p>
<p><span style="text-decoration:underline;"><strong>// ca y est Bob est content <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></span></p>
<p><span style="text-decoration:underline;"><strong>// une question intéressante</strong></span></p>
<p>Quoi de neuf coté doc ID ?</p>
<p>Rien c&rsquo;est toujours aussi bof.</p>
<p>Fabien</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1080&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-best-practices-for-record-management-with-sharepoint-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Lighting up SharePoint 2013 Extranets with Business Intelligence</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-lighting-up-sharepoint-2013-extranets-with-business-intelligence/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-lighting-up-sharepoint-2013-extranets-with-business-intelligence/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 17:50:02 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1078</guid>
		<description><![CDATA[Session de 9h à 10h15 Nathan Miller, Collaboration TSP Richard diZerega, MTC Architect La session va être orientée sur la partie Extranet avec l’intégration de BI. On commence par la définition d’un extranet, les utilisateurs (partenaires, clients, employés en mobilité…) et pourquoi utiliser SharePoint 2013 pour concevoir son extranet : Reporting Dashboard Content and Publishing [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1078&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Session de 9h à 10h15 Nathan Miller, Collaboration TSP Richard diZerega, MTC Architect</strong></em></p>
<p>La session va être orientée sur la partie Extranet avec l’intégration de BI. On commence par la définition d’un extranet, les utilisateurs (partenaires, clients, employés en mobilité…) et pourquoi utiliser SharePoint 2013 pour concevoir son extranet :</p>
<ul>
<li>Reporting Dashboard</li>
<li>Content and Publishing</li>
<li>Social Collaboration</li>
<li>Great Price for Capabilities</li>
</ul>
<p><strong>Quelques challenges :</strong></p>
<ul>
<li>L’authentification des utilisateurs externes,</li>
<li>L’adoption des utilisateurs,</li>
<li>La sécurisation des données lors des échanges,</li>
<li>Les droits par rapport au contexte d’utilisateur</li>
</ul>
<p>Première démo dans Office 365. Le gros avantage d’office 365 est que vous n’avez pas besoin de gérer toute une partie de la sécurité : c’est MS qui s’en charge. Il n’est pas besoin de produire de fort efforts en architecture, coût (serveurs et personnes comme architecte / administrateur) pour mettre en place une plateforme sécurisée tout en restant performante, merci Office 365.</p>
<p>L’extranet présenté en démo est structuré grâce à la navigation en plusieurs espaces « partenaire », qui possède des droits spécifiques (chacun sur son sous-site). Lorsqu’on se connecte au site avec un client, on ne voit que son espace. SP2013 permet d’apporter App Model. Par exemple sur la page d’accueil, une app dans un fichier excel est affiché (très graphique avec des bulles pour correspondant à des valeurs sur les partenaires. L’app s’appelle bubble quelque chose).</p>
<p>Une fois le site client ouvert. On voit un fichier Excel intégré (Excel Web App) avec une app Bing Maps affichant des points de tailles différentes sur la carte : les informations sont chargées grâce à Power View.</p>
<p>On passe sur un autre fichier Excel, qui permet de montrer des rapports via des des graphiques « PivotChart ». Au clic sur le troisième fichier excel, une erreur est affiché indiquant que le fichier est trop gros (+ de 10 Mo). Il est donc proposé en ouverture via Excel (client lourd).</p>
<p>Enfin, un dernier fichier avec une intégration de Power View intègre 4 partie (en mode dashboard), très interactif, graphique et intégrant des données.</p>
<p>Affichage d’un fichier Visio via Visio Web Access (il est apparemment très facile de connecter Visio à des données).</p>
<p>Ensuite, présentation d’une SharePoint App (MetroEyes), cette fois-ci depuis une tablette Windows 8. App plutôt sympa comportant des composants (graphique de données) qui réagissent au doigt : drag-drop, le dessin d’un rond avec le doigt sur la zone la transforme en graphique camembert. Le trait d’un graphique à un autre provoque la fusion des deux graphiques =&gt; une expérience utilisateur riche. Tout ça grâce à HTML 5.</p>
<p>Direction SharePoint OnPremise. Quelques schémas d’architecture / Infrastructure (type back to  back…). Coté de la central administration, les services primordiaux (Claims to Windows Token Service…), les applications service (Secure Store Service). Le Secure Store Service met en place tout un système (base de données) permettant de stocker les permissions. C’est intéressant pour protéger des systèmes back-end qui seront utilisés au sein de SharePoint 2013 (via Excel Services, Visio Services, PowerPivot…).</p>
<p>Dans Excel Services, on va activer l’option « Analysis Services EffectiveUserName » pour permettre l’authentification par utilisateur sur des sources de données « Analysis Services ». On voit une démo sans l’option où le fichier ouvert en Excel Web Apps affichent les zones en accès interdit.</p>
<p><strong>Focus sur l’authentification avec UAG (MS Forefront), Windows Claims user pour le portail.</strong></p>
<p><strong>Grâce à SP2013 :</strong></p>
<ul>
<li><strong>Excel Services</strong> : création de rapport, dashboards. Utilisation de PowerPivot et Power View</li>
<li><strong>Reporing Services / PowerView</strong> : Conception via designer de requête, creation de table, matrice, chart report. Les rapports peuvent être planifié et partager des données.</li>
<li><strong>Performance Point</strong> : concevoir des dashboards à travers des graphiques, KPI, SSRS Report. =&gt; Les utilisateurs peuvent naviguer à l’intérieur, interagir, tout ça dans un modèle sémantique</li>
</ul>
<p>Démo sur un site concernant l’authentification. Sur le site, l’utilisateur peut se connecter depuis un compte utilisateur ou via un service d’authentification externe. Facebook login. Une autorisation dans facebook est demandée (basic info, email, birthday, location). Une fois autorisé, on voit qu’on est bien logué : en haut on peut lire « Hello Richard diZerega from Texas).</p>
<p>L’IT Pro et la BI n’étant pas ma passion, je vous voir les ressources à disposition après l’événement (Claims Based Authentification, Windows claims, FBA claims, SAML claims, scénarii avec deux zones Win Authentification et ADFSServer…)</p>
<p>Jérôme</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1078&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-lighting-up-sharepoint-2013-extranets-with-business-intelligence/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Developer&#8217;s Guide to Integrating Microsoft Dynamics CRM &amp; SharePoint 2013</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-developers-guide-to-integrating-microsoft-dynamics-crm-sharepoint-2013/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-developers-guide-to-integrating-microsoft-dynamics-crm-sharepoint-2013/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 17:47:13 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1076</guid>
		<description><![CDATA[Session de 9h à 10h15 animée par Girish Raja (Technical Product Manager) C&#8217;est parti pour la dernière journée de la conférence et je ne sais pas si c&#8217;est le sujet qui n&#8217;intéresse pas les foules ou le fait que les gens sont déjà rentrés chez eux mais la salle est remplie au 1/4 de sa [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1076&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><b>Session de 9h à 10h15 animée par Girish Raja (Technical Product Manager)</b></em></p>
<p>C&rsquo;est parti pour la dernière journée de la conférence et je ne sais pas si c&rsquo;est le sujet qui n&rsquo;intéresse pas les foules ou le fait que les gens sont déjà rentrés chez eux mais la salle est remplie au 1/4 de sa capacité</p>
<p>Rapide introduction ce qu&rsquo;est Dynamics CRM pour les personnes qui ne connaissent pas et comment le produit se positionne dans l&rsquo;offre Cloud de Microsoft avec Office 365 et Azure</p>
<p>On voit ensuite un slide rappelant tous les produits de la famille Business Platform (Dynamics, SQL, Azure, Lync, Yammer, SharePoint….) en rappelant que Microsoft mise sur l&rsquo;aspect plateforme unifiée avec tous ses produits</p>
<p><strong>1ère démonstration sur le portail Office 365 dans lequel on voit que l&rsquo;on peut gérer l&rsquo;intégralité des services SharePoint, Exchange, Lync, CRM…</strong></p>
<p>Il est possible de souscrire à un abonnement CRM en quelques minutes directement depuis le portail et en passant par le même portail que Office 365, on gère les utilisateurs et les domaines dans un endroit centralisé ce qui simplifie la vie</p>
<p><strong>L&rsquo;intégration avec SharePoint porte sur 3 aspects que nous allons voir dans la suite de la session</strong></p>
<ul>
<li>Documents</li>
<li>Analytics avec PowerView</li>
<li>Business Connectivity Services (BCS)</li>
</ul>
<p>On refait une passe sur les domaines métiers couvertes par CRM à savoir les ventes, le marketing et le service sachant que la plateforme peut être étendue à d&rsquo;autres besoins (on parle de xRM dans ce cas)</p>
<p>CRM peut être déployé aussi bien en mode Online qu&rsquo;en mode On-Premise et il est possible de l&rsquo;utiliser sur tablette, téléphone et ordinateur</p>
<p>Les démos qui vont être faites par la suite seront sur la version Online mais les principes sont les mêmes sur la version On-Premise</p>
<p>On voit maintenant un slide présentant l&rsquo;architecture de CRM (base de données, plutins, webservices…) mais vu que ces informations/schémas sont présentes sur MSDN, je ne m&rsquo;attarde pas dessus</p>
<p><strong>SharePoint et CRM sont des outils complémentaires sur de nombreux aspects :</strong></p>
<ul>
<li>Stockage de données (structuré dans CRM / semi-structuré dans SharePoint)</li>
<li>Social (tâches dans CRM / collaboration dans SharePoint)</li>
<li>Règles &amp; Workflows (Formel dans CRM / Informel dans SharePoint)</li>
<li>Recherche</li>
<li>etc…</li>
</ul>
<p>Out-of-Box, CRM est capable d&rsquo;intégrer la gestion de documents stockés dans SharePoint (le support de SharePoint 2013 arrivera début de l&rsquo;année prochaine)</p>
<p>Le support de tous les navigateurs majeurs (Firefox, Chrome, Safari) arrivera courant Décembre =&gt; Bonne nouvelle car cette fonction est attendue depuis le mois de Mai</p>
<p>Quand on stocke les documents dans SharePoint, un dossier est créé dans la bibliothèque de document pour chaque entité (prospects, clients, sociétés…)</p>
<p>Cela pose quelques soucis à des clients qui veulent avoir 1 bibliothèque par entité, fusionner des enregistrements et donc fusionner les dossiers, etc… Ce n&rsquo;est pas possible OOB mais avec du développement, c&rsquo;est faisable</p>
<p>Passage à la démonstration montrant comment la gestion documentaire fonctionne sur une fiche client et comment le paramétrer dans CRM (cela se fait en quelques minutes en allant dans les paramètres de la plateforme)</p>
<p>La partie la plus importante concerne un composant à installer sur la ferme SharePoint pour permettre à CRM de communiquer avec la plateforme</p>
<p>On voit ensuite qu&rsquo;un plugin a été développé pour modifier le comportement standard de CRM (création d&rsquo;un dossier par entité) pour que désormais il y a une bibliothèque de documents créée pour chaque entité</p>
<p>On voit ensuite un autre plugin pour qu&rsquo;à chaque fois qu&rsquo;un client est créé, plusieurs types de documents (gérés via les ContentTypes SharePoint) peuvent être créés directement depuis la fiche du client</p>
<p>Le code source des plugins est disponible sur le blog à l&rsquo;adresse <a href="http://crmconsultancy.wordpress.com">http://crmconsultancy.wordpress.com</a></p>
<p>Retour aux slides pour évoquer maintenant la partie BI dans CRM où un assistant de création de rapports est disponible en mode web (création de tableaux, de graphiques…)</p>
<p>Plutôt que faire les rapports dans CRM, on passe à une démo pour voir comment faire des rapports PowerView et les publier dans SharePoint et pour cela, on peut se connecter au EndPoint OData pour récupérer les données dont on a besoin</p>
<p>On peut créer des fichiers Excel Dynamiques (connectés en Live aux données CRM) depuis le portail CRM via le bouton &quot;Export to XLS&quot; et ensuite il est possible de créer des rapports PowerView dans Excel sans même avoir besoin de SharePoint (c&rsquo;est qui nous est montré dans la démo qui ne fonctionne pas mais une vidéo pré-enregistrée est jouée en dernier recours.</p>
<p>Une session intéressante pour voir les possibilités de connexion entre CRM et SharePoint mais à force de répondre à toutes les questions posées pendant la session, le speaker a pris du retard et il saute certaines parties à la fin faute de temps (la partie sur BCS)</p>
<p>Stéphane</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1076&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-developers-guide-to-integrating-microsoft-dynamics-crm-sharepoint-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Request Management in SharePoint 2013</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-request-management-in-sharepoint-2013/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-request-management-in-sharepoint-2013/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 17:43:42 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1074</guid>
		<description><![CDATA[Wednesday, 17h00, Spencer Harbar, MVP Architect Edimburgh, UK Résumé : Session 300 pour un IT Pro. Il présente le Request Management service permettant de router les requêtes HTTP vers des serveurs particuliers, selon leur nature. Il présente les différentes composantes du service, en quoi chacune consiste et quel rôle elles ont dans les étapes d&#8217;évaluation [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1074&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Wednesday, 17h00, Spencer Harbar, MVP Architect Edimburgh, UK</strong></em></p>
<p><strong>Résumé :</strong></p>
<p>Session 300 pour un IT Pro. Il présente le Request Management service permettant de router les requêtes HTTP vers des serveurs particuliers, selon leur nature.</p>
<p>Il présente les différentes composantes du service, en quoi chacune consiste et quel rôle elles ont dans les étapes d&rsquo;évaluation d&rsquo;une requête.</p>
<p>Il finit par une démo pour montrer les différentes commandes Powershell afin de mettre cela en place avec une ferme de quelques serveurs. En faisant ça il montre comment exactement écrire les commandes permettant de configurer le service Request Management à chacune de ses méthodes.</p>
<p><span style="text-decoration:underline;"><strong>// Request management</strong></span></p>
<p>Gestion des requêtes HTTP par SharePoint. Comment SharePoint gère les requêtes et peut les changer.</p>
<p>SharePoint va pouvoir décider de router une requête (ou même ne pas l&rsquo;accepter). .</p>
<p><span style="text-decoration:underline;"><strong>// Usage scenarios</strong></span></p>
<p><strong>/ Reliability et performance.</strong></p>
<p>Nous pouvons pour chaque requête, qu&rsquo;elle soit routée de façon à ce qu&rsquo;un serveur en sous-charge soit utilisé plutôt qu&rsquo;un serveur surchargé.</p>
<p>Il est possible de prioriser les requêtes d&rsquo;utilisateurs par rapports aux requêtes de robots (type bot de recherche).</p>
<p><strong>/ Capacity management</strong></p>
<p>Nous pouvons rediriger des requêtes d&rsquo;un type vers des serveurs bien précis.</p>
<p>Il est aussi possible de définir des groupes de serveurs ayant un rôle et y router nos requêtes.</p>
<p><strong>/ Scalability</strong></p>
<p>Il est possible de rediriger la requête vers un load balancer pour lui permettre de gérer la requête et la volumétrie de requête au niveau du réseau.</p>
<p><strong>/ Service management</strong></p>
<p>Il est possible de rediriger un type de requête (search, user profiles, office web apps), vers des serveurs spécifiques.</p>
<p>Il permet également être d&rsquo;une bonne aide pour diagnostiquer des problèmes.</p>
<p><span style="text-decoration:underline;"><strong>// Fundamentals</strong></span></p>
<p>C&rsquo;est disponible pour toutes les licences. Il n&rsquo;y a pas d&rsquo;impact par défaut (il est désactivé par défaut). L&rsquo;étendue du request manager est sur la web application.</p>
<p>Le request manager est composé de trois éléments</p>
<p><span style="text-decoration:underline;"><strong>// Architectural Overview</strong></span></p>
<p>Le request manager est implémenté par un SPRequestModule. Il tourne sur un web server (front &#8211; WFE).</p>
<p>La configuration lorsque la webapp a un host leader est compliquée en revanche. Il conseille plutôt de créer des host named site collection.</p>
<p>Il existe plusieurs modes de déploiement.</p>
<p>Integrated mode : le service tourne sur le serveur web dans la ferme.</p>
<p>Dedicated mode : serveur dédié.</p>
<p>Selon l&rsquo;un ou l&rsquo;autre, l&rsquo;implémentation des serveurs peut être ou non possible.</p>
<p><span style="text-decoration:underline;"><strong>// Components rules and evaluation</strong></span></p>
<p>Routing targets ou Machine targets. Les serveurs vers lesquels les requêtes sont routées.</p>
<p>Request Management Rules / Throttling rules : les règles de routages Execution Groups : ensemble de rules, 3 possibles. / Rule criteria : les proprerties permettent d&rsquo;evaluer la requête (user agent, url, hjost, soapaction, IP, custom header etc.) et les Match Methods permettent d&rsquo;exprimer les égalités (startswith, endsqwith, equals, regex) L&rsquo;évaluation va matcher la throtting rule, on match les routing rules dans chaque exécution group. Selon la rule, on va rediriger vers le pool de machines.</p>
<p><span style="text-decoration:underline;"><strong>// Configuration and Management</strong></span></p>
<p>Il plaisante sur le fait qu&rsquo;il existe une interface utilisateur sur la central admin …. NON ! tout se fait en Powershell.</p>
<p>Il présente les commandes *-SPRequestManagementSettings , *-SPRoutingMachinePool (pool machine et routine targets), *-SPRoutingMachineInfo (configurer les routine targets), New-SPRequestManagementRuleCriteria (définir un critère qui va permettre de matcher la règle), *-SPThrottlingrule (pour créer les rattacher les critères aux propriétés), *-SPRoutingRule (configurer les routine rules et leur groupe d&rsquo;éxécution).</p>
<p><span style="text-decoration:underline;"><strong>// Monitoring</strong></span></p>
<p>ULS Logs + IIS Logs (HTTP Logs ou SPPING Mechanism) + Performance counters</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : Scenario and Demonstration</strong></span></p>
<p>Ferme SP + 3 WFE  (SP1, SP2, SP3) load balancés avec BIG-IP + 3 host named site collections (HNSC) Il veut refuser toutes les requêtes depuis OneNote. Et il veut également que les PDFs soient redirigés vers SP1 ou SP2. Les requêtes pour la site coll Adventure Works sont servis par SP1 et SP2. La site coll Contoso est servie par SP3. Enfin Fabrika est servie par SP1 et SP2.</p>
<p>Il a créé 2 groupes d&rsquo;exécution (1 pour les PDFs, et 1 pour les règles de HNSC).</p>
<p>Il a créé 2 machine pool (1 avec SP1 et SP2, 1 avec SP3).</p>
<p>Il note qu&rsquo;il a une site coll à la racine sans host name pour que IIS puisse gérer, c&rsquo;est quelque chose à savoir.</p>
<p>Il fait un certain nombre de configurations et commandes Powershell en les expliquant. Je ne rentrerai pas dans les détails, mais ça marche !</p>
<p>Il finit par montrer les loge afin d&rsquo;expliquer le service a bien effectué chacune des étapes qu&rsquo;il a expliqué.</p>
<p>Christian</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1074&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-request-management-in-sharepoint-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Optimize search relevance in SharePoint 2013</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-optimize-search-relevance-in-sharepoint-2013/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-optimize-search-relevance-in-sharepoint-2013/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 17:41:51 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1072</guid>
		<description><![CDATA[Session de 17h à 18h15 animée par Jan Inge Bergseth et Victor Poznanski &#8212; Petit résumé: Une session 400 en fin de journée par 2 accents à couper au couteau&#8230; Vive la Norvège ! On a eu une revue des méthodes pour jouer sur les résultats selon les requêtes. Pas simple du tout ! &#8212; // les challenges [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1072&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Session de 17h à 18h15 animée par Jan Inge Bergseth et Victor Poznanski</strong></em></p>
<p>&#8212;</p>
<p><strong>Petit résumé:</strong></p>
<p>Une session 400 en fin de journée par 2 accents à couper au couteau&#8230; Vive la Norvège !</p>
<p>On a eu une revue des méthodes pour jouer sur les résultats selon les requêtes. Pas simple du tout !</p>
<p>&#8212;</p>
<p><span style="text-decoration:underline;"><strong>// les challenges pour la recherche</strong></span></p>
<p>Exemple d&rsquo;une personne qui tape &quot;SharePoint conference&quot; dans son moteur de recherche :</p>
<ul>
<li>Que cherche t il ?</li>
<li>Ou sont mes slides ?</li>
<li>Ou se déroule la conference ?</li>
<li>Etc&#8230;</li>
</ul>
<p>Améliorer la relevance est un cycle en 4 étapes :</p>
<ul>
<li>il faut identifie le problème (une webpart : vous ne trouvez pas ce que vous voulez ?&quot;&lsquo; est une bonne idée pour que les soucis soit remontés)</li>
<li>le diagnostiquer (problème de crawl, verifier les permission, etc.)</li>
<li>réparer le problème</li>
<li>déployer</li>
</ul>
<p><span style="text-decoration:underline;"><strong>// authorities</strong></span></p>
<p>On peut définir des site (url) qui font autorité. KM, référence, etc.</p>
<p>Définir un site comme une autorité donne un peu d&rsquo;autorité aux sites avec lesquels ils est lié par hyperliens. Et ceci en cascade.</p>
<p>Un site défini comme autorité voit son contenu remonter au niveau ranking dans les résultats.</p>
<p><span style="text-decoration:underline;"><strong>// result sources</strong></span></p>
<p>Équivalent des scopes 2010.</p>
<p>C&rsquo;est une configuration au niveau site collection.</p>
<p>L&rsquo;idée est de cibler des recherches contenant le mot &quot;training&quot; vers une liste de training. (par exemple).</p>
<p>{searchTerm} url:<a href="http://site/list">http://site/list</a></p>
<p><span style="text-decoration:underline;"><strong>// démo : faire l&rsquo;équivalent du federated search 2010</strong></span></p>
<p>On paramètre un result sources sur du openSearch (bing).</p>
<p>Ensuite on créé un query rule pour déclencher la recherche sur notre result source et l&rsquo;afficher dans un result bloc.</p>
<p>Exemple : si je saisi sharepoint, j&rsquo;ai un bloc avec les résultats de Bing. L&rsquo;avantage est que ces résultats s&rsquo;affichent dans la même webpart que les autres, pas comme en 2010.</p>
<p><span style="text-decoration:underline;"><strong>// query rules</strong></span></p>
<p>Cas d&rsquo;utilisation : si j&rsquo;ai une query avec un nom de société, je veux surement afficher des résultat de mon CRM.</p>
<p>Ou si ma requête commence par &quot;what is&quot;, je veux un bloc avec les résultats de wikipedia.</p>
<p><span style="text-decoration:underline;"><strong>// démo : query rule</strong></span></p>
<p>Depuis les site settings, on crée une query rule de type advanced</p>
<p>Jan Inge va a fond, impossible de noter et difficile à comprendre, la vidéo sera utile.</p>
<p><span style="text-decoration:underline;"><strong>// verticals</strong></span></p>
<p>Les vertical sont super intéressants pour avoir des refiner, display templates, query rules, sort, tous différents et dédiés à ce vertical.</p>
<p>On a une démo encore a fond la caisse pour montrer qu&rsquo;on peut afficher un result bloc d&rsquo;un vertical depuis un autre si on saisit les requêtes les plus courantes sur celui ci. En gros&#8230;</p>
<p><span style="text-decoration:underline;"><strong>// démo : dynamic rules / XRANK</strong></span></p>
<p>Un dynamic ordering peut se paramétrer dans le query builder.</p>
<p>Cela permet de paramétrer : Si le résultat correspond à une condition, on augmente ou diminue le ranking.</p>
<p><span style="text-decoration:underline;"><strong>// ranking customization</strong></span></p>
<p>Cette option doit être gardée que si on arrive pas à ce qu&rsquo;on veut avec les outils décrits avant.</p>
<p>De plus on doit avoir diagnostiquer que le ranking doit être améliorer pour la plupart des queries.</p>
<p>On a un outil qui sera disponible pour tuner le ranking depuis le navigateur. Celui ci sera disponible dans les prochaines semaines. C&rsquo;est un wsp qui ajoute des écran d&rsquo;administration dans les site settings.</p>
<p>C&rsquo;est assez high level, difficile de les suivre, revoir la vidéo et les slides sera pas un luxe.</p>
<p> <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Fabien</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1072&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-optimize-search-relevance-in-sharepoint-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Multi-language websites with SharePoint 2013</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-multi-language-websites-with-sharepoint-2013/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-multi-language-websites-with-sharepoint-2013/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 17:38:56 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1070</guid>
		<description><![CDATA[Session de 17h à 18h15 Josh Stickler, Program Manager Kate Kelly, Program Manager Lorsqu’on parle de la gestion Multilingue dans SharePoint, on pense fortement au système de variation. C’est en effet le cas dans cette session. Le rappel de base étant effectué (un site « source » permet de faire des copies vers un ou [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1070&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Session de 17h à 18h15 Josh Stickler, Program Manager Kate Kelly, Program Manager</strong></em></p>
<p>Lorsqu’on parle de la gestion Multilingue dans SharePoint, on pense fortement au système de variation. C’est en effet le cas dans cette session.</p>
<p>Le rappel de base étant effectué (un site « source » permet de faire des copies vers un ou plusieurs site « cible » ), nous allons voir les nouveautés dans 2013.</p>
<p>On apprend qu’il y a eu un gros travail sur les performances et en effet l’ajout d’une nouvelle langue prend deux fois moins de temps. En cas d’erreur, la variation ne reprends pas son travail depuis le début.</p>
<p>Concernant les limitations, en mode OnPremise 209 labels et 50 pour le mode Online.</p>
<p><strong>Deux modes de gestion est possible :</strong></p>
<ul>
<li><strong>« Centralized control »</strong> : le nouveau contenu disponible sera mise à jour sur tous les sites « cible »,</li>
<li><strong>« Distributed control »</strong> : On choisit depuis les sites « cible » afin de récupérer le contenu du site « source ».</li>
</ul>
<p>La première démo permet de voir les différentes configuration possibles des variations (activation du machine translation…)</p>
<p>Les variations propagent maintenant les listes : bibliothèques de documents, listes d’annonces, et les generic lists ! C’est une grande avancée car ce manque dans les versions précédentes était un frein à l’utilisation des variations. Hourah !!</p>
<p>Nous voyons la preuve en démo. On voit une liste d’annonce. Un nouvel éléments est créé, puis un clic sur « Update target » du ruban provoque sa copie dans le site en français (après quelques F5). Pour finaliser le tout, un clic sur « Machine Translation » et l’élément est traduit. On fait la même chose sur un document. Ça fonctionne !</p>
<p>Machine Translation est un nouveau service permettant de faire la traduction de texte via Microsoft Translator.</p>
<p>Maintenant, on passe à la navigation qui est maintenant géré via le « managed navigation », et qui permet donc d’utiliser le term store, d’avoir des urls firendly, et une flexibilité entre les niveau (création simple de hiérarchie de pages).</p>
<p>Chaque site de variation comporte son propre Term Set de navigation. Cela permet donc pour chaque langue d’avoir la traduction du titre, de l’url, et des paramètres SEO. Il est indiqué qu’on a pas besoin de language pack.</p>
<p>Tout cela est montré en démo et on voit bien qu’on peut avoir une page avec sa propre url et traduction. Au passage, on voit dans les bibliothèques de pages la possibilité d’ajouter une colonne sur l’état de la traduction (traduction demandée ou traduction effectuée).</p>
<p>On revient désormais sur la partie « Machine Translation Service » qui se connecte donc à MS Translator via une connexion sécurisée (via SSL).</p>
<p>Les traductions se portent sur les champs SharePoint (simple texte, champs de contenu libre), et les documents (docx, rtf, txt…).</p>
<p>A noter le côté extensible et l’utilisation en Client et Server Object Model.</p>
<p>Une autre possibilité est « Human Translation ». Cela permet d’utiliser la norme XLIFF (XML Localization Interchange File Format). Via le ruban, on va pouvoir gérer un package de traduction. Ce dernier pourra ainsi être transmit à un outil externe de traduction.</p>
<p>De la même manière que Machine Translation, le Client et Server Object Model peuvent être utilisés (pour les opérations d’import et export).</p>
<p>Il est également indiqué qu’on peut mutualiser les traductions : pour un site en anglais, canadien et français, la partie canadienne peut intégrer les traductions française et le contenu anglais.</p>
<p><strong>En conclusion :</strong></p>
<ul>
<li>Les performances sont accrues</li>
<li>Les listes sont désormais supportées (enfin !)</li>
<li>Managed navigation</li>
<li>L’intégration de « Machine translation » permettant la traduction en ligne de contenu</li>
<li>La génération de package XLIFF grâce à « Human Translation » pour la transmission à un outil de traduction.</li>
</ul>
<p>Jérôme</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1070&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-multi-language-websites-with-sharepoint-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Making Your Search Social with SharePoint 2013</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-making-your-search-social-with-sharepoint-2013/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-making-your-search-social-with-sharepoint-2013/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 17:36:51 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1068</guid>
		<description><![CDATA[Wednesday, 15h15, La session a changé de nom, c&#8217;était &#34;Deep dive on making your search social with SharePoint&#34; Paul Summers, Architect, Microsoft Services Il devait y avoir Sreedhar Mallangi qui n&#8217;est visiblement pas là. Résumé : Une des sessions les moins intéressantes pour ma part. Il présente des notions générales sur comment la recherche fonctionne. [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1068&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Wednesday, 15h15, La session a changé de nom, c&rsquo;était &quot;Deep dive on making your search social with SharePoint&quot;</strong></em></p>
<p><em><strong>Paul Summers, Architect, Microsoft Services Il devait y avoir Sreedhar Mallangi qui n&rsquo;est visiblement pas là.</strong></em></p>
<p><strong>Résumé :</strong></p>
<p>Une des sessions les moins intéressantes pour ma part. Il présente des notions générales sur comment la recherche fonctionne. Les différents aspects &quot;Social&quot; dans la recherche ou comment la brique social vient intéragir avec la recherche.</p>
<p>Il montre également comment les Query Rules peuvent se baser sur les propriétés d&rsquo;un utilisateur pour améliorer les résultats de la recherche … chose qui a semble-t-il apporté par 2010.</p>
<p>Il veut combiner la recherche et le social pour présenter aux utilisateurs des résultats plus ciblés.</p>
<p><span style="text-decoration:underline;"><strong>// Zero term search  et Query disambiguation</strong></span></p>
<p>Il parle de la notion d&rsquo;arriver sur un intranet et avoir des résultats que le moteur connait déjà sans avoir fait de recherche.</p>
<p>Il parle également de l&rsquo;ambiguité dans la recherche lorsque nous cherchons par exemple &quot;Apple&quot;, où le moteur va nous retourner des pommes ou l&rsquo;entreprise de Steve Jobs.</p>
<p><span style="text-decoration:underline;"><strong>// Out of box</strong></span></p>
<p>De base, il est possible de recherche par expertise et par personne. Cela permet d&rsquo;avoir les personnes les plus proches, les recommandations.</p>
<p>Il est possible aussi grâce aux likes de rendre un contenu plus pertinent dans la recherche.</p>
<p>Enfin la recommandation de requêtes ou de résultats est une nouveauté.</p>
<p>Il fait un rappel sur l&rsquo;architecture du service de recherche sur SharePoint 2013.</p>
<p><span style="text-decoration:underline;"><strong>// Le classement des résultats de recherche</strong></span></p>
<p>Il se fait par le classement statique de la qualité et la &quot;fraicheur&quot; (freshness) d&rsquo;un élément.</p>
<p>Egalement par le classement par fréquence de recherche. Un résultat est d&rsquo;autant plus important s&rsquo;il a été recherché souvent.</p>
<p>Enfin le X Factor, qu&rsquo;il explique comme étant l&rsquo;action de l&rsquo;utilisateur qui effectue une requête bien précise (keyword query est pris comme exemple).</p>
<p><span style="text-decoration:underline;"><strong>// Social dans 2013</strong></span></p>
<p>Il revient sur les fonctionnalités sociales sur 2013.</p>
<p>Les UserProfiles, le following, le Newsfeed, la recherche de personnes, les communautés et les recommandations.</p>
<p><span style="text-decoration:underline;"><strong>// UserProfile</strong></span></p>
<p>Mes recherches vont se baser sur mon profil pour retourner les meilleurs résultats en fonctions de mes propriétés (mes skills par ex)</p>
<p><em><strong>// Les Follow</strong></em></p>
<p>Le fait que je follow, fait en sorte que ses contenus ou les contenus en rapport avec ses intérêts me soient remontés, comme par extension De la même manière, si je follow un document, il va mêtre plus facilement remonté dans mes résultats.</p>
<p>Egalement, de la même manière pour les sites.</p>
<p><span style="text-decoration:underline;"><strong>// X Factor</strong></span></p>
<p>Il revient sur le facteur personne qui personnalise sa recherche pour retourner le résultat le plus pertinent.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : Query rules &amp; User Profiles</strong></span></p>
<p>Il explique que les Query Rules est quelque chose qui est un des éléments les plus intéressants venu avec SP 2010.</p>
<p>Il va sur une collection de sites pour définir des Query Rules, sélectionne une source de données (Local SharePoint Results).</p>
<p>Il crée une Query Rule, et va sélectionner le type de rule à &quot;Advanced Query Text Match&quot;. Il va faire une expression régulière pour récupérer les résultats. Sur l&rsquo;action qu&rsquo;il a défini, il va changer la requête. Il prend la requête initiale, et va multiplier par 1000 le score des éléments qui match la propriété Centres d&rsquo;intérêts de l&rsquo;utilisateur (XRANK(cv=1000) {{User.SPS-Interests.Name}}.</p>
<p>Dans l&rsquo;onglet Test, il peut faire un test en recherchant &quot;SharePoint&quot;. Les résultats devient plus pertinents.</p>
<p>Il test en activant et désactivant la rule, effectivement les résultats ne sont pas identiques.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : API REST</strong></span></p>
<p>Il fait une démo des API REST pour le social et le search. Je ne comprends pas trop pourquoi. D&rsquo;autant plus que nous sommes dans une session IT Pro.</p>
<p>Christian</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1068&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-making-your-search-social-with-sharepoint-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Overview of the top 10 ways that SharePoint will help drive end user adoption</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-overview-of-the-top-10-ways-that-sharepoint-will-help-drive-end-user-adoption/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-overview-of-the-top-10-ways-that-sharepoint-will-help-drive-end-user-adoption/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 17:34:40 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1066</guid>
		<description><![CDATA[Session de 15h15 à 16h30 animée par Chris Bortik (Microsoft) &#8212; Petit résumé: Une session business orienté sur les moyens d&#8217;augmenter l&#8217;adoption de SharePoint par les utilisateurs. L&#8217;introduction concerne vraiment ce sujet, ensuite, c&#8217;était plutôt une revue de scénarios business qu&#8217;on pourrait montrer à des personnes qui se demanderait &#34;pourquoi je passerai à SharePoint 2013?&#34; ou &#34;pourquoi [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1066&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Session de 15h15 à 16h30 animée par Chris Bortik (Microsoft)</strong></em></p>
<p>&#8212;</p>
<p><strong>Petit résumé:</strong></p>
<p>Une session business orienté sur les moyens d&rsquo;augmenter l&rsquo;adoption de SharePoint par les utilisateurs. L&rsquo;introduction concerne vraiment ce sujet, ensuite, c&rsquo;était plutôt une revue de scénarios business qu&rsquo;on pourrait montrer à des personnes qui se demanderait &quot;pourquoi je passerai à SharePoint 2013?&quot; ou &quot;pourquoi SharePoint ?&quot;.</p>
<p>Utile pour l&rsquo;AVV ou l&rsquo;AMOA.</p>
<p>&#8212;</p>
<p><span style="text-decoration:underline;"><strong>// comment l&rsquo;adoption de SharePoint arrive</strong></span></p>
<p>Chris nous montre un graphique décrivant les différents profils utilisateurs : innovateurs, early adopters, early majority, late majority, retardataires.</p>
<p><strong>La formule magique : A = V &gt; C</strong></p>
<p><strong>                                   Adoption = value &gt; change</strong></p>
<p>L&rsquo;adoption arrive quand : un problème est résolu, un meilleure méthode de faire quelque chose arrive, des incentives et des récompenses sont mises en place (le plus de contribution obtient un prix, etc.).</p>
<p><span style="text-decoration:underline;"><strong>// scénario : obtenir des réponses à une question</strong></span></p>
<p>Une personne cherche une info, les solutions :</p>
<p>1)</p>
<ul>
<li>poster sur son newsfeed &quot;je recherche de l&rsquo;aide sur #SharePoint&quot;</li>
<li>mes collègues ainsi que ceux qui suivent #SharePoint voient ce post</li>
</ul>
<p>2)</p>
<ul>
<li>utiliser un site de communauté avec le forum</li>
<li>les sites de communauté permettent de récompenser les utilisateurs qui postent le plus pour les identifier en tant qu&rsquo;experts.</li>
</ul>
<p>ce site a été conçu pour remplacer les liste de distribution qui regroupaient des experts sur un sujet. L&rsquo;idée est vraiment de pousser les gens à aller sur SharePoint.</p>
<p>3)</p>
<ul>
<li>on peut faire une recherche sur le sujet rechercher</li>
<li>on a les résultats pour les documents, les people, les conversations. Les conversations permettent de voir les utilisateurs actifs</li>
</ul>
<p>4)</p>
<ul>
<li>on a des alertes sur les conversations lorsqu&rsquo;un collègue répond. On peut rebondir rapidement.</li>
</ul>
<p><strong>Éléments clés pour ce scénario :</strong></p>
<ul>
<li>newsfeed, communautés, Search, alertes</li>
</ul>
<p><span style="text-decoration:underline;"><strong>// scénario : travailler ensemble sur un sujet</strong></span></p>
<p>Les réponses :</p>
<p>1) utiliser la timeline d&rsquo;un team site et la mettre directement sur la home du team site</p>
<p>2) utiliser le onenote intégré au team site pour stocker les CR de réunion, travailler à plusieurs dessus.</p>
<p>3) concevoir ses document office en co-authoring depuis le client lourd ou directement dans la webapp, commenter les documents</p>
<p>4) gestion des tâches depuis le site personnel avec la vue agrégée</p>
<p>5) follow up une conversation afin d&rsquo;avoir un reminder sur le fait qu&rsquo;un question a été posée.</p>
<p><strong>Éléments clés pour ce scénario :</strong></p>
<ul>
<li>timeline, tâches, onenote partagé, co-authoring</li>
</ul>
<p><span style="text-decoration:underline;"><strong>// scénario : flexible work</strong></span></p>
<p>Les personnes veulent maintenant pouvoir travailler de n&rsquo;importe où avec n&rsquo;importe quel device.</p>
<p>Réponses :</p>
<p>1 /</p>
<ul>
<li>on utilise le skydrive pro synchronisé en local</li>
<li>on peut aussi synchroniser n&rsquo;importe que library en offline (bouton sync)</li>
</ul>
<p>2 / Depuis o365</p>
<ul>
<li>utiliser office on demand si on a pas office. (lien dispo depuis le skydrive sur o365)</li>
</ul>
<p>3 /</p>
<ul>
<li>poser un document dans my documents  afin d&rsquo;avoir un feedback d&rsquo;un collègue</li>
</ul>
<p>4 /</p>
<ul>
<li>utilisation d&rsquo;un mobile : vue du newsfeed depuis un windows phone, on peut ajouter des mentions, liker les commentaire, voir la liste de ses collègues, les détails sur chacun (tel, email, etc&#8230;)</li>
</ul>
<p><strong>Éléments clés pour ce scénario :</strong></p>
<ul>
<li>office 365, office on demand, skydrive pro, applications mobiles (dispo début 2013)</li>
</ul>
<p><span style="text-decoration:underline;"><strong>// scénario : apprendre à se servir de SharePoint </strong></span></p>
<p>Un scénario tourné sur les nouveaux employés qui doivent apprendre a se servir de SharePoint</p>
<p>1)</p>
<ul>
<li>getting started with your site : ce composant est fait pour un débutant qui démarrerait sur un team site</li>
</ul>
<p>2)</p>
<ul>
<li>le ruban est caché par défaut pour ne pas faire peur</li>
<li>simplification de la gestion de la sécurité</li>
</ul>
<p>3)</p>
<ul>
<li>ajout d&rsquo;application : la notion d&rsquo;app est là pour que l&rsquo;utilisateur découvre des notions qu&rsquo;il connait déjà</li>
</ul>
<p>4)</p>
<ul>
<li>changement dans le rythme des release de SharePoint, plus de release majeures tous les 3 ans, plutôt des release tous les 3 mois. Ceci permettra de ne pas avoir à réapprendre SharePoint tous les 3 ans.</li>
</ul>
<p><strong>Éléments clés pour ce scénario :</strong></p>
<ul>
<li>getting started, look and feel, apps, releases</li>
</ul>
<p><span style="text-decoration:underline;"><strong>// top 10</strong></span></p>
<p>10 &#8211; <strong>community sites</strong> : badges, rarings, réputation, best replies</p>
<p>9 &#8211; <strong>newsfeed</strong> : mentions, trending, following, notification</p>
<p>8 &#8211; <strong>office 365</strong> : anywhere, update réguliers, on demand, partage avec des personnes hors de l entreprise</p>
<p>7 &#8211; <strong>mobile</strong> : social, device channels, skydrive pro, Office WebApp</p>
<p>6 &#8211; <strong>search</strong> : previews, people, social</p>
<p>5 &#8211; <strong>tasks</strong> : follow ups, personal view, timeline</p>
<p>4 &#8211; <strong>skydrive pro</strong> : intégré a windows explorer, offline, espace personnel, drag n drop</p>
<p>3 &#8211; <strong>sharing</strong> : inviter des personnes est plus simple, personnes externes</p>
<p>2 &#8211; <strong>collaboration</strong> : co authoring, présence, onenote partagé, commentaires</p>
<p>1 - <strong>end user focus</strong> : getting started, apps, look n feel</p>
<p><span style="text-decoration:underline;"><strong>// clés du succès</strong></span></p>
<p>Afin de réussir a faire adopter SharePoint, les clés sont les suivantes :</p>
<ul>
<li>SharePoint doit résoudre un problème</li>
<li>récompenser les early adopteurs</li>
<li>reconnaitre et promouvoir les sujets ou top contributeurs</li>
<li>essayer de rendre cette utilisation virale</li>
</ul>
<p>Fabien</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1066&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-overview-of-the-top-10-ways-that-sharepoint-will-help-drive-end-user-adoption/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Deep Dive on building apps like a SharePoint ECM dev</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-deep-dive-on-building-apps-like-a-sharepoint-ecm-dev/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-deep-dive-on-building-apps-like-a-sharepoint-ecm-dev/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 17:26:44 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1064</guid>
		<description><![CDATA[Session de 15h15 à 16h30 Pablo Bravo, Senior Developer – SharePoint ECM Toute la session va se faire dans le Cloud (Online + Azure + TFS) avec du développement dans Visual Studio 2012. Tout ce qui va être vu fonctionnera donc dans le Cloud mais pourra forcement fonctionner en version On Premise. La démonstration se [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1064&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Session de 15h15 à 16h30 Pablo Bravo, Senior Developer – SharePoint ECM</strong></em></p>
<p>Toute la session va se faire dans le Cloud (Online + Azure + TFS) avec du développement dans Visual Studio 2012. Tout ce qui va être vu fonctionnera donc dans le Cloud mais pourra forcement fonctionner en version On Premise.</p>
<p>La démonstration se déroulera sur un Document Set (« Spec Library ») et nous allons lui associer un « Remote Event Receivers ». L’objectif est de faire une app, qui une fois installée va enregistrer le « Remote Event Receiver » sur l’ajout d’un élément dans le document Set. Une fois désinstallé, le Remote Event Receiver sera supprimé.</p>
<p>On voit donc le projet Visual Studio. Dans le manifest de l’app, on modifie les « permissions request » pour ajouter :</p>
<ul>
<li>le scope « Web » en permission « FullControl »</li>
<li>le scope « Taxonomy » en permission « Write »</li>
<li>le userprofile en « Read »</li>
</ul>
<p>En effet, l’app va toucher tous ces composants. Ce paramétrage qui est effectué par l’interface génère les « AppPermissionRequest » dans le « AppManifest.xml ».</p>
<p>Dans les propriétés du projet, on va pouvoir activer (value True) « Handle App Installed » et « Handle App Uninstalled » qui nous permet de générer un « AppEventReceiver » qui est un WebService svc. La classe implémente « IRemoteEventService », et on voit qu’une méthode « DeployHostAppElements » est intégré pour</p>
<ul>
<li>Accéder à la liste (qui sera donc le DocumentSet)</li>
<li>Ajouter à la liste l’EventReceiver « EventReceiver.Add » sur l’ItemAdd.</li>
</ul>
<p>La suppression de l’eventReceiver se fait dans « RemoveHostAppElements ». Le Receiver n’est une simple classe mais un WebService SVC implémentant IRemoteEventService. Dans la méthode « Process », on va accéder à la liste, appeler l’userProfile (new PeopleManager(clientContext)) pour récupérer le département de l’utilisateur courant. On récupère aussi les informations dans le TaxonomyService (le département), et on ajoute un élément dans le ProductBacklog de TFS. Tout ceci permet de modifier l’éléments courant (le documentSet) avec les informations récupérées (nom d’utilisateur, département).</p>
<p>Une fois terminé, le déploiement est lancé comme prévu dans SharePoint Online. Dans notre cas, on ne peut pas debuguer dans ce mode de déploiement (office365) afin d’ajouter l’AppEventReceiver, donc une page custom s’en occupe (via un bouton).</p>
<p>Une fois déployé, les autorisations d’accès sont demandées (OAuth).</p>
<p>Pour la deuxième partie, on attaque les Client Web Parts. Les Client Web Parts correspondent à une iframe vers une host web.</p>
<p>Pablo nous montre le développement d’un Client Web Part (Host Web) qui va requêter le serveur TFS , chercher des données de Work Item TFS. Pendant 30 minutes, on mange du code et c’est rapide et assez complexe à suivre. Le résultat fonctionne à la fin. On a pu voir du REST sur SharePoint, CSOM, de la récupération d’information depuis TFS, que l’app pourra être intégré dans le cloud (et dans le store).</p>
<p>Une bonne session de développement, mais trop rapide à mon goût avec tout le code écrit (via des snippets bien sûr).</p>
<p>Jérôme</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1064&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-deep-dive-on-building-apps-like-a-sharepoint-ecm-dev/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : SharePoint 2013 &#8211; Fun with SharePoint Social, CSOM and Windows 8</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-sharepoint-2013-fun-with-sharepoint-social-csom-and-windows-8/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-sharepoint-2013-fun-with-sharepoint-social-csom-and-windows-8/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 17:25:06 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1062</guid>
		<description><![CDATA[Session de 15h15 à 16h30 animée par Eric Harlan (Microsoft) &#38; Mark Rackley (Summit 7 Systems) Le but de la session va être de créer l&#8217;équivalent de l&#8217;application TweetDeck pour SharePoint 2013 On commence par une première démo montrant le résultat final et ce qu&#8217;on peut dire c&#8217;est que les développeurs ne sont pas des [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1062&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><b>Session de 15h15 à 16h30 animée par Eric Harlan (Microsoft) &amp; Mark Rackley (Summit 7 Systems)</b></em></p>
<p>Le but de la session va être de créer l&rsquo;équivalent de l&rsquo;application TweetDeck pour SharePoint 2013</p>
<p>On commence par une première démo montrant le résultat final et ce qu&rsquo;on peut dire c&rsquo;est que les développeurs ne sont pas des designers car ce n&rsquo;est pas beau   <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>En gros, vous prenez les différents onglets de SharePoint (NewsFeed, Skydrive…), vous les transformer en une application Windows 8 et vous avez le résultat final</p>
<p>Retour aux slides pour refaire un tour sur les fonctions sociales de SharePoint 2013 (newsfeed, rating, likes, follows, sites, skydrive…)</p>
<p>Petit phrase marrante dans les slides &quot;Company feeds are micro-blogging feeds for noobs&quot;</p>
<p>On parle ensuite du nouveau modèle de site communautaire basé sur le forum de discussion, avec la possibilité de suivre sa réputation, etc…</p>
<p>On voit que tout ce qui est fait au niveau social est stocké (mis en cache) dans une liste nommée Microfeed située dans MySite</p>
<p>Pour améliorer les performances générales et donc améliorer l&rsquo;expérience utilisateur, le système de cache est géré par AppFabric</p>
<p>Passons maintenant à CSOM (Client Side Object Model) qui a été introduit dans SharePoint 2010 mais grandement amélioré dans SharePoint 2013</p>
<p>CSOM est composé de plusieurs assemblies nommées Microsoft.SharePoint.Client.* et fonctionne toujours de la même manière qu&rsquo;auparavant à savoir qu&rsquo;il faut :</p>
<ul>
<li>Créer un contexte</li>
<li>Construire une requête</li>
<li>Exécuter la requête</li>
<li>Traiter les résultats</li>
</ul>
<p>Parmi les principales nouveautés de CSOM nous avons toute la partie sociale gérée par le SocialFeedManager</p>
<p>Un exemple de code reprenant les étapes citées précédemment est montré (on retrouve ce type d&rsquo;exemple sur MSDN)</p>
<p>On aborde maintenant rapidement WinRT pour est le composant sur lequel sont basées toutes les applications Windows 8</p>
<p>WinRT peut être utilisé avec Javascript comme langage de développement pour faire des applications basées sur HTML5, CSS3, jQuery… mais certaines limites sont imposées (ex: pas d&rsquo;injection de scripts)</p>
<p>Voyons maintenant comment l&rsquo;application présentée au début a été réalisée et pour cela on crée un projet dans Visual Studio Express (la version gratuite de Visual Studio 2012)</p>
<p>L&rsquo;application est réalisée en HTML mais elle aurait pu l&rsquo;être en XAML et on commence à faire l&rsquo;équivalent du HelloWorld pour vérifier que tout fonctionne bien</p>
<p>On crée ensuite une assembly dans laquelle on va mettre tout notre code, on ajoute les références vers CSOM et on ajoute le code nécessaire</p>
<p>Vu que l&rsquo;application a besoin de communiquer avec le serveur SharePoint, il est important de déclarer dans le manifest de l&rsquo;application qu&rsquo;elle peut utiliser les connexions réseaux clientes</p>
<p>On a droit à un séance de copier/coller de code pour construire les différentes parties de l&rsquo;application donc je vous passe les détails car aucun intérêt particulier</p>
<p>La session se termine enfin et ce n&rsquo;est pas trop tôt car plus de 30mn de copier/coller de code HTML et Javascript pour faire une application Windows 8, c&rsquo;est juste un coup à se jeter sous le roues des voitures sur le strip   <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Session à voir pour découvrir les bases de CSOM pour les gens qui ne connaissent pas du tout mais à oublier très vite pour les autres (sauf si vous êtes dépressif et que vous voulez aggraver votre état)</p>
<p>Stéphane</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1062&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-sharepoint-2013-fun-with-sharepoint-social-csom-and-windows-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Using jQuery and DisplayTemplates to create modern Web Sites</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-using-jquery-and-displaytemplates-to-create-modern-web-sites/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-using-jquery-and-displaytemplates-to-create-modern-web-sites/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 17:23:39 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1060</guid>
		<description><![CDATA[Wednesday, 13h45, Ethan Gur-esh, lead program manager &#8211; Jeremy Kelley, program manager Résumé Les Display Templates représentent un nouveau moyen de formater les données d&#8217;une Content Search WebPart également nouveauté de SharePoint 2013. Il montre que grâce à du HTML, du code javascript, jQuery et un peu de CSS, il est possible de mettre en [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1060&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Wednesday, 13h45, Ethan Gur-esh, lead program manager &#8211; Jeremy Kelley, program manager</strong></em></p>
<p><strong>Résumé</strong></p>
<p>Les Display Templates représentent un nouveau moyen de formater les données d&rsquo;une Content Search WebPart également nouveauté de SharePoint 2013.</p>
<p>Il montre que grâce à du HTML, du code javascript, jQuery et un peu de CSS, il est possible de mettre en forme une webpart et créer des templates pour former un carrousel.</p>
<p>Les DisplayTemplates est l&rsquo;équivalent de l&rsquo;XSLT ancienne pour les Content Query WebPart. Ils sont plus lisibles et compréhensibles. Ils permettent également plus facilement d&rsquo;enregistrer des CSS et des Javascript comme jQuery.</p>
<p>Enfin, les méthodes utilisées ne sont pas cantonnées à des méthodes XSLT mais bien à des méthodes plus avancées comme celle permettant de récupérer les renditions d&rsquo;une image.</p>
<p>Ces display templates peuvent également être utilisés pour customiser les panneaux de raffinement.</p>
<p>La session est archi comble et la salle est plutôt grande pourtant. En comptant on doit être autour des 600 personnes.</p>
<p>Il fait un rappel sur la keynote où un site internet avait été montré.</p>
<p>Le programme est les DisplayTemplates, nouvelle manière de gérer les résultats de recherche (CSS/jQuery + Display Templates). Ajouter les raffinements pour avoir une expérience search drivent (conduite par la recherche).</p>
<p><span style="text-decoration:underline;"><strong>// Rappel sur 2013</strong></span></p>
<p>Gur-esh fait un rappel sur le design sur SharePoint 2013. Il y a une maternage, html css, controls et la snippet gallery (navigation, webparts, controls).</p>
<p>Il reprend le design qu&rsquo;il a fait pour la keynote de lundi présentant un site qui va permettre de servir de site e-commerce de produits électroniques.</p>
<p>Il montre un panneau de raffinement permettant de filtrer ses appareils photo.</p>
<p><span style="text-decoration:underline;"><strong>// Kelley présente la logique des DisplayTemplates</strong></span></p>
<p>Nous allons clairement présenter la Content Search Webpart.</p>
<p>Son principe est de faire une requête de recerche sur le moteur, et d&rsquo;exécuter les templates (Triggers templates)  avec les résultats qui seront retournés par les moteurs.</p>
<p>Les Control Templates commencent et vont déterminer comme les éléments sont affichés par page (la navigation par ex), ils sont exécutés à chaque page Item Template, vont déterminer comment chaque élément est affiché Control Template finit le rendering</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : Content search web part</strong></span></p>
<p>Il va utiliser une page html (control_jshowoff.html). Il l&rsquo;ouvre avec DreamWeaver.</p>
<p>Il va aller dans le body, où il y a un bloc de javascript. Il appelle $includeLanguageScript en passant l&rsquo;URL et la référence à un fichier CustomStrings.js stocké dans les masterpages/DisplayTemplates/ Il inclut aussi un fichier custom jquery.jshowoff.min.js et un Contron_jshowoff_script.js.</p>
<p>Il explique que SharePoint va prendre ce html et va le &quot;compiler&quot;.</p>
<p>Dans son Controls_jshowoff il utilise un simple jshowoff(); Il a dans son HTML, une div très importante &lt;div id=&quot;Control_List&quot; /&gt; qui contient tout la customisation de notre template. Il insère du code javascript en précédant son code par &lt;!&#8211;#.</p>
<p>Il insère à un moment donné, $addRenderContextCallback qui est une méthode qui va s&rsquo;exécuter après que tout le HTML soit affiché.</p>
<p>Pour tous les éléments il va utiliser un &lt;ul&gt; dans lequel il un ctx.RenderGroups(ctx) qui semble accomplir l&rsquo;action de générer le HTML pour chaque élément.</p>
<p>En uploadant le tout, il peut l&rsquo;utiliser dans la content search WebPart (qui utilise le &lt;title&gt; pour être identifié).</p>
<p><span style="text-decoration:underline;"><strong>// Retour sur les slides : Hello (Cool) World</strong></span></p>
<p>Il explique qu&rsquo;il a mis jQuery sur la masterpage car il va l&rsquo;utiliser à de nombreuses reprises.</p>
<p>Il explique que tout le code va être effectué dans la première div.</p>
<p>Enfin il utilise $includeScript pour faire référence à un fichier js.</p>
<p>Pour utiliser les display templates, il utilise la déclaration d&rsquo;un &lt;mso:ManagedPRopertyMapping&gt;.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : Item template</strong></span></p>
<p>Il présente les &quot;Staff recommandations&quot; qu&rsquo;il a sur son carrousel de produits.</p>
<p>Il configure sa content search web part en mettant un item template &quot;Large picture&quot;. ça lui fait un affiche différent pour chaque élément.</p>
<p>Il a des images très grosses. Il va créer un item template qui est adapté. Il va ajouter un css en utilisant $includeCSS dans son template.</p>
<p>Il utilise dans son code un formatage spécial comme les Databinder.eval. Ce sont &quot;_#= linkURL =#_&quot; pour afficher l&rsquo;URL d&rsquo;un lien.</p>
<p>Pour les images, il utilise le Srch.ContentBySearch.getPictureMarkup où il passe l&rsquo;URL de l&rsquo;image, la taille et il explique que l&rsquo;image affichée ne sera pas une grande image qui sera mise à l&rsquo;échelle mais bien une image de 135 par 135 grâce aux images redditions.</p>
<p>Il revient sur les Mapping de Managed Property &#8211;&gt; Il explique qu&rsquo;il faut un peu connaître la topologie de ses propriétés de recherche.</p>
<p>Il insère dans son template var price = $getItemValue(cté, &quot;Price&quot;) où &quot;Price&quot; est son mapping de managed property (son alias), et getItemValue va donc récupérer la valeur.</p>
<p>Il dit de faire attention au fait que chaque élément devrait avoir un id bien à lui afin d&rsquo;être géré individuellement via du code jQuery.</p>
<p><span style="text-decoration:underline;"><strong>// Retour sur les slides : combiner ControlTemplate et ItemTemplate</strong></span></p>
<p>On peut les combiner très facilement car ce sont deux éléments bien séparés et à définir individuellement et indépendamment de l&rsquo;autre dans une WP Content Search.</p>
<p>Néanmoins ils souligne le fait qu&rsquo;on va en général appareiller les deux pour avoir un design logiquement identique et cohérent.</p>
<p><span style="text-decoration:underline;"><strong>// Preview Pane</strong></span></p>
<p>Utiliation de OnPostRender pour ajouter des éléments qui n&rsquo;ont pas de rapport avec les données récupérées de la recherche.</p>
<p><span style="text-decoration:underline;"><strong>// Search Data Provider</strong></span></p>
<p>L&rsquo;idée est quand on a plusieurs WebParts utilisant la recherche, on va utiliser une source de données commune.</p>
<p>On peut passer ctx.ListData à des plugins jQuery par exemple via JSON par exemple.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : Infinite scrolling</strong></span></p>
<p>Il nous présente la volonté de faire un composant permettant de retourner les résultats avec un scroll infini plutôt qu&rsquo;un paging (comme sur Bing Images).</p>
<p>Il a une Content Search WP, qu&rsquo;il paramètre, en définissant un ControlTemplate Infinite scolling.</p>
<p>Il retourne sur Dreamweaver. Il inclue InfiniteScrollingHelper.js qui est un script.js.</p>
<p>Il a ajouté un callback sur le onPostRender. Il retourne dans son js, et ajoute du code dans son callback qui va dupliquer un bout d&rsquo;HTML.</p>
<p>Il utilise jQuery et scroll() pour détecter la fin du scroll . Il ajoute enfin le morceau de code qui permet lorsqu&rsquo;on est en fin de page, de savoir sur quelle page nous sommes. Si nous avons une page encore derrière, il va utiliser ctx.ClientControl.page(index de la page). Cette méthode permet de récupérer les éléments de la page suivante.</p>
<p>Test : ça marche.</p>
<p>Il explique que le fait de récupérer la page suivante, le OnPostPreRender s&rsquo;exécute.</p>
<p><span style="text-decoration:underline;"><strong>// Retour sur les slides : Refiners</strong></span></p>
<p>Ils fonctionnent avec le context de recherche et donc si nous avons un template custom, il n&rsquo;y aura pas à se soucier des refiners qui marcheront de la même manière et seront automatiquement fait correctement.</p>
<p>Pour ajouter une propriété, il faut l&rsquo;ajouter en administration dans le service de recherche.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : Refinement custom display templates</strong></span></p>
<p>Il explique que sur la webpart de refinement, on peut sélectionner le refiler.</p>
<p>Il peut également choisir le display template de la même manière que le search WP.</p>
<p>Il a sélectionné un display template custom, et sont refiners est en fait un refiner avec des carrés de couleurs pour filtrer ses résultats par couleur.</p>
<p>Il va poster comment il a fait cela sur le blog après la SharePoint Conference.</p>
<p>Christian</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1060&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-using-jquery-and-displaytemplates-to-create-modern-web-sites/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Understanding 2013 Tool and Best Practices for Creating Enterprise Forms in SharePoint 2013</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-understanding-2013-tool-and-best-practices-for-creating-enterprise-forms-in-sharepoint-2013/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-understanding-2013-tool-and-best-practices-for-creating-enterprise-forms-in-sharepoint-2013/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 17:20:52 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1058</guid>
		<description><![CDATA[Session de 13h45 à 15h Darvish Shadravan , Senior SharePoint Technology Specialist Matt Bremer, SharePoint Technology Specialist La session commence, et la salle est pleine. Pour commencer, Darvish nous annonce qu’il manque pour la première fois l’anniversaire de sa fille de 13 ans. Pour se faire pardonner, il nous filme en train de faire un [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1058&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Session de 13h45 à 15h Darvish Shadravan , Senior SharePoint Technology Specialist Matt Bremer, SharePoint Technology Specialist</strong></em></p>
<p>La session commence, et la salle est pleine. Pour commencer, Darvish nous annonce qu’il manque pour la première fois l’anniversaire de sa fille de 13 ans. Pour se faire pardonner, il nous filme en train de faire un « Happy Birthday Sydney » qui sera posté sur son facebook <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  L’ambiance est plutôt sympa et c’est toujours agréable d’assister à des sessions de ce genre.</p>
<p><strong>L’objectif :  Grâce à un site SharePoint 2013, nous allons voir qu’il existe plusieurs options pour concevoir et mettre à disposition des formulaires pour l’entreprise. Nous allons donc voir de l’InfoPath 2013, de l’Access 2013 et des apps.</strong></p>
<ul>
<li><strong>InfoPath 2013</strong></li>
</ul>
<p>Pour commencer, InfoPath 2013 est complétement supporté par SP2013. On peut maintenant utiliser complétement Visual Studio 2012 pour permettre de faire des solutions avancées : c’est une très bonne chose, plus besoin de VSTO. On peut donc créer nos formulaires en s’appuyant sur le framework .Net 4.0</p>
<p><strong>Démo 1</strong></p>
<p>On commence dans InfoPath Designer avec un bouton dans le formulaire. Lorsqu’on clique sur le bouton afin d’ajouter du code, Visual Studio 2012 s’ouvre et permet de d’écrire du code. On peut donc faire du développement avancée très simplement.</p>
<p>On passe sur un autre formulaire avec plusieurs étapes (divisé entre plusieurs pages), des listes déroulantes, des boutons « aide » affichant une information au clic&#8230; Tout cela fait à priori très simplement.</p>
<ul>
<li><strong>Access 2013</strong></li>
</ul>
<p>Access 2013 est présenté comme une possibilité de créer des formulaires très simplement dans SP2013.</p>
<p>Il n’est pas nécessaire d’être développeur (toutefois cela permet d’aller encore plus loin). Access 2013 App Model est complétement supporté dans le « Cloud App model ». Une Access App est lancée dans le navigateur, c’est de HTML / CSS et JS ! L’avantage est de pouvoir partager le formulaire par mail (lien), ou via l’app store par exemple. Dans SharePoint 2013, le modèle « Blank App Database Template » est mis à disposition pour Access.</p>
<p>Une « Access Apps » est une « SharePoint Apps » : Même compatibilité de navigateur, de permissions AD, d’intégration dans le SP Store / AppCatalog, simple à installer /désinstaller… La navigation est générée automatiquement via les vues (vue équivalant aux « forms » précédemment dans Access).</p>
<p><strong>Possibilité de faire :</strong></p>
<p>- Tools Validation Rules,</p>
<p>- Custom Actions,</p>
<p>- Multiple Views,</p>
<p>- Conditional Logic.</p>
<p>Les données (données saisies, mais aussi vues, requêtes, macros) sont sauvegardées dans une base de données SQL et non dans une liste SharePoint.</p>
<p>Access 2013 supporte le HTML5 est donc une alternative à InfoPath.</p>
<p>Aucune information sur les licences n’est annoncée.</p>
<p>On passe à la démo qui se déroule dans Office 365. On voit un formulaire (quasiment le même que celui d’InfoPath). Le changement de page (navigation) se fait par un changement de vue (effectué via un bouton « next »). On voit que des règles de validation sont en place (et on nous indique que c’est simple à implémenter). Une fois le formulaire terminé, on voit le résultat qui est enregistré. On passe maintenant sur le même site, mais sous Ipad. On voit bien que le formulaire réagit de la même manière, grâce à la puissance de l’app et de HTML5.</p>
<p>On passe maintenant à la modification du formulaire dans Access. Le bouton « next » a une propriété « événement » et l’action permet d’ajouter plusieurs étapes (sauvegarde et change de vue dans notre cas). Sur un autre bouton, on voit un autre événement : si la case à cocher est validé alors une zone de texte est cachée.</p>
<ul>
<li><strong>Troisième partie sur Web Form Apps (HTML / JS)</strong></li>
</ul>
<p>Petit rappel sur les SharePoint App Model (supporte cloud App model, permission via OAuth, communique en REST / CSOM avec SP, peuvent être géré via l’app store) et sur les avantages (écriture de custom code dans un langage connu et utilisant les standards, montée en compétence de nouveaux développeur plus simple, et facilité à mettre à jour avec les futures versions de SP).</p>
<p><strong>Types de form apps :</strong></p>
<p>- Immersive : s’affiche en pleine page</p>
<p>- app part (widget)</p>
<p>- Extension App (Custom Action)</p>
<p>Une promotion de Javascript et de TypeScript est faites (classe, composant réutilisable, cross plateforme et surtout le debug).</p>
<p>La dernière démo permet de voir une app développé et le code js dans VS2012. On voit le fichier typescript et le javascript généré par le TS file. TypeScript permet le support de Intellisense. Démonstration de l’ajout d’un point d’arrêt (dans la partie js généré). Grâce au débug, on voit bien via l’outil « espion » les différents valeurs des variables…</p>
<p>Pour conclure, toutes ces solutions nous permet de donner différentes possibilités lors de la création de formulaires spécifique, et accessible selon le niveau du concepteur de formulaire. On peut également retenir que Access 2013 supporte le HTML5 est devient une alternative à InfoPath.</p>
<p>Jérôme</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1058&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-understanding-2013-tool-and-best-practices-for-creating-enterprise-forms-in-sharepoint-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Planning and creating well designed intranet sites in SharePoint online</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-planning-and-creating-well-designed-intranet-sites-in-sharepoint-online/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-planning-and-creating-well-designed-intranet-sites-in-sharepoint-online/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 17:18:01 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1055</guid>
		<description><![CDATA[Session de 13h45 à 15h animée par Randy Drisgill et John Ross (MVPs) &#8212; Petit résumé: Mêmes speakers que ce matin. Oh&#8230; My&#8230; God. Le titre était vendeur. En fait non. Session &#34;je raconte des généralité et je met &#8216;online&#8217; à la fin&#34; Si vous n&#8217;avez vraiment aucune idée du comment penser à la mise en place d&#8217;un [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1055&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Session de 13h45 à 15h animée par Randy Drisgill et John Ross (MVPs)</strong></em></p>
<p>&#8212;</p>
<p><strong>Petit résumé:</strong></p>
<p>Mêmes speakers que ce matin.</p>
<p>Oh&#8230; My&#8230; God.</p>
<p>Le titre était vendeur.</p>
<p>En fait non.</p>
<p>Session &quot;je raconte des généralité et je met &lsquo;online&rsquo; à la fin&quot;</p>
<p>Si vous n&rsquo;avez vraiment aucune idée du comment penser à la mise en place d&rsquo;un site intranet sous SharePoint, lisez ceci.</p>
<p>&#8212;</p>
<p><span style="text-decoration:underline;"><strong>// office 365 / SharePoint online</strong></span></p>
<p>Comme ce matin 2 plans :</p>
<p><strong>Small business :</strong></p>
<ul>
<li>moins de 25 personnes</li>
<li>une collection pour le collab</li>
<li>un site public</li>
</ul>
<p><strong>Entreprise :</strong></p>
<ul>
<li>on peut creer ses collection</li>
<li>publishing possible</li>
</ul>
<p><span style="text-decoration:underline;"><strong>// Planning for an intranet on SharePoint online</strong></span></p>
<p>Ils nous montrent une enquête qui dit que 62% des projets dépassent en temps, 49% en couts et 22% ne répondent pas au besoin.</p>
<p>Les influence de la réussite ou de l échec ne viennent pas de la technique mais du sponsor, business. Planifier est donc le plus important.</p>
<p>On a donc 3 étapes : planifier, implémenter, migrer. Il rappelle que la 3e partie est souvent oubliée, il a pas tort, cette partie prend souvent autant que l&rsquo;implémentation.</p>
<p><strong>1- Vision and goals</strong></p>
<p>Il faut creer la vision: que veut on accomplir ? comment on saura qu&rsquo;on est arriver? (on veut reduire les couts, on veut se debarrasser du vieil intranet, etc.)</p>
<p><strong>2- recueil de besoin</strong></p>
<ul>
<li>Qui se servira du site ? Pourquoi ?</li>
<li>Quel type de site ?</li>
<li>Les contenu ?</li>
<li>La gouvernance ?</li>
</ul>
<p>Bonne spécification: précisé et spécifique</p>
<p>Mauvaise : le site doit faire des trucs sociaux&#8230;</p>
<p>Que fait on de notre vision du projet ?</p>
<p>On l&rsquo;écrit ! on le fait valider par le client, on s&rsquo;assure qu on puisse y revenir dessus pour vérifier.</p>
<p><span style="text-decoration:underline;"><strong>// custom intranet scénarios</strong></span></p>
<ul>
<li><strong>collaboration</strong></li>
</ul>
<p>Le principe de collaboration est de faire travailler plusieurs personnes vers un but commun. Ces outils sont les plus utilisé dans l&rsquo;intranet, c&rsquo;est ici que les gens travaillent.</p>
<p>Exemple : team site, communautés, social, search</p>
<p>Exemples de sites : site de département, groupe de discussion pour partager des idées, etc.</p>
<ul>
<li><strong>démo des fonctions collaboratives</strong></li>
</ul>
<p>Ils nous montrent un site sans dev ni branding structuré par département, par communautés.</p>
<p>Il nous montre la page pour le département &quot;sales&quot;, des webparts : un ppt affiché avec Office WebApp, une liste de docs trié par rating, etc. Une autre page d&rsquo;un autre département montre autre chose lié a ce département.  Tout ça pour dire que si un modèle de sous site nous plait, on peut le sauver en tant que template&#8230;</p>
<ul>
<li><strong>portails</strong></li>
</ul>
<p>Les principe du portail : comment unifier a une seul place différentes informations et comment les rendre disponible en 1 clic.</p>
<p>C&rsquo;est plus orienté communication que collaboration.</p>
<p>Les portails SharePoint sont basés sur les fonctionnalités WCM : authoring, CQWP, publication contrôlée, branding.</p>
<p>Les guidelines : définir des metadonnées pour montrer le contenu quand on en a besoin.</p>
<ul>
<li><strong>démo du WCM</strong></li>
</ul>
<p>Il nous montre 4 page publishing et nous montre conment ça marche.  Il nous montre une page à la racine du site avec une CQWP qui remonte ses 4 pages. Rien de neuf.</p>
<ul>
<li><strong>conception de portail</strong></li>
</ul>
<p>Mots d&rsquo;ordre :</p>
<p>Garder le site clean et simple. Règle de 3 clics : il faut que l&rsquo;utilisateur trouve son contenu en 3 clics. Plus de clics est ok a condition que l&rsquo;utilisateur ne soit pas perdu.</p>
<p>Les utilisateurs cherchent leur contenu par : la navigation, le contenu, la recherche, des raccourcis. De plus en plus d&rsquo;utilisateurs sont search centric, les métadonnées sont donc ultra importantes.</p>
<p>Important : donner un nom a son intranet. Pas &quot;le site SharePoint&quot;.</p>
<p><span style="text-decoration:underline;"><strong>// custom branding</strong></span></p>
<p>Le speaker nous explique l&rsquo;importance de brander son intranet :</p>
<ul>
<li>pour distinguer l&rsquo;intranet du reste,</li>
<li>pour renforcer la consistance des infos à travers les départements et équipes,</li>
<li>et enfin pour aider les utilisateurs à s&rsquo;identifier à l&rsquo;entreprise.</li>
</ul>
<p><span style="text-decoration:underline;"><strong>// Les options pour brander du SharePoint online</strong></span></p>
<p>Voir le post de la session de ce matin</p>
<p><span style="text-decoration:underline;"><strong>// post migration</strong></span></p>
<p>Il y a des phases après la migration : support et formation. Tiens donc !</p>
<p>Fabien</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1055&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-planning-and-creating-well-designed-intranet-sites-in-sharepoint-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : eCommerce solutions with Dynamics for Retail and SharePoint 2013</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-ecommerce-solutions-with-dynamics-for-retail-and-sharepoint-2013/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-ecommerce-solutions-with-dynamics-for-retail-and-sharepoint-2013/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 17:13:46 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1053</guid>
		<description><![CDATA[Session de 13h45 à 15h animée par Balaji Balasubramanian (Group Program Manager) &#38; Meera Mahabala (Senior Program Manager) La session commence par un rappel rapide sur Dynamics pour les personnes qui ne connaitraient pas la gamme avec 2 offres chez MS : CRM &#38; Retail Pour créer une solution eCommerce, les composants disponibles sont Dynamics [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1053&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><b>Session de 13h45 à 15h animée par Balaji Balasubramanian (Group Program Manager) &amp; Meera Mahabala (Senior Program Manager)</b></em></p>
<p>La session commence par un rappel rapide sur Dynamics pour les personnes qui ne connaitraient pas la gamme avec 2 offres chez MS : CRM &amp; Retail</p>
<p>Pour créer une solution eCommerce, les composants disponibles sont Dynamics AX for Retail R2 et SharePoint 2013</p>
<p>Un des problèmes majeurs pour les entreprises eCommerce aujourd&rsquo;hui concerne la multiplicité des outils pour gérer les différentes briques (ERP, CRM, Finance…)</p>
<p>Dynamics AX permet de couvrir l&rsquo;intégralité des besoins Retail avec une unique solution permettant ainsi de diminuer la facture et plus simple à intégrer (ex: gestion des workflows de ventes, gestion des promotions, gestion des stocks&#8230;)</p>
<p>Cette solution permet également de mettre en oeuvre des workflows multi-canaux (ex: un utilisateur achète sur Internet et veux ensuite gérer des choses dans une boutique physique)</p>
<p>Dynamics &amp; SharePoint représente une solution intégrée car il est possible de publier le catalogue produit défini dans Dynamics dans un portail SharePoint</p>
<p>Dynamics CRT Services peuvent être utilisés par SharePoint pour récupérer les prix, calculer les taxes et frais d&rsquo;expédition, etc…</p>
<p>CRT signifie Commerce Runtime Services qui gère notamment un système de cache interne pour gérer tous les processus nécessaires à la mise en oeuvre de la solution eCommerce</p>
<p>La synchronisation du catalogue de produits entre Dynamics et SharePoint se sert du modèle de site Product Catalog qui permet dans une collection de site, d&rsquo;avoir une copie de tous les produits et de leurs métadonnées, ces éléments étant ensuite indexés par le moteur de recherche pour pouvoir être présenté grâce aux WebParts disponibles (Content Search SharePoint)</p>
<p><strong>SharePoint 2013 offre de nouvelles fonctionnalités adaptées au eCommerce</strong></p>
<ul>
<li>Navigation basée sur la recherche</li>
<li>Facette et navigation basée sur les métadonnées</li>
<li>Recommandations basées sur les analytics</li>
<li>Gestion multi-périphériques (Device Channels)</li>
</ul>
<p><strong>Commerce Runtime Services est en charge de la gestion:</strong></p>
<ul>
<li>Prix, Taxes et Expéditions</li>
<li>Remises et promotions</li>
<li>Stocks et disponibilités</li>
<li>Panier</li>
</ul>
<p><strong>Une autre brique entre dans la chaine eCommerce (Commerce Data Exchange) qui est responsable de</strong></p>
<ul>
<li>Synchroniser les données, les prix, etc…</li>
<li>Synchroniser les transactions vers Dynamics</li>
<li>Gérer les recherches des clients et accéder à l&rsquo;historique des commandes</li>
</ul>
<p><strong>Dynamics permet une gestion centralisée de l&rsquo;ensemble des besoins</strong></p>
<ul>
<li>Canaux de distributions, boutiques physiques et online…</li>
<li>Reporting financier</li>
<li>Navigation et hiérarchies (pouvant servir pour générer la navigation du site eCommerce)</li>
<li>Propriétés des différents canaux (méthodes d&rsquo;expédition, groupes de prix, clients, langues, monnaies…)</li>
</ul>
<p>Un véritable outil de gestion de catalogue est disponible dans Dynamics (création de produits, association des produits aux canaux de distribution, synchronisation avec le site eCommerce…)</p>
<p>On passe à la 1ère démo dans laquelle on voit un site présentant un catalogue de produits organisés en famille et où chaque produit concerne un certain nombre d&rsquo;information (titre, description, photo, prix…)</p>
<p>On voit qu&rsquo;il est possible de filtrer les données des familles de produits grâce aux facettes fournies par SharePoint</p>
<p>Quand on va sur la page détail d&rsquo;un produit, on retrouve toutes les informations définies dans le catalogue et on peut ajouter le produit au panier</p>
<p>A la validation du panier, l&rsquo;utilisateur peut s&rsquo;authentifier pour valider sa commande puis on passe sur le processus de paiement avec quelques fonctionnalités avancées (recherche d&rsquo;une adresse avec prévisualisation sur Bing Maps)</p>
<p>En fonction de l&rsquo;adresse saisie par l&rsquo;utilisateur, les modes d&rsquo;expédition proposés et les frais associés sont calculés en temps réel et affichés sur la page</p>
<p>On fini le processus de paiement en saisissant sa carte de crédit puis on obtient un résumé avant de valider définitivement la commande sur lequel on peut saisir des codes promo, cartes de fidélité, etc…</p>
<p>Une fois la commande validée, le système nous donne un numéro de commande et affiche un message de confirmation</p>
<p>Tout ce qui a été montré pour le moment était fait côté SharePoint donc on passe maintenant côté Dynamics pour vérifier que la commande a été synchronisée avec le système et est entrée dans le circuit de traitement</p>
<p>Histoire d&rsquo;éviter d&rsquo;attendre que la synchronisation se lance selon la planification, on la force manuellement et on constate que la commande passée côté SharePoint, a été intégralement récupérée côté Dynamics avec toutes les informations saisies et mappées sur les bons éléments</p>
<p>On passe ensuite en revue la structure de Dynamics pour voir que tout ce qui a été défini ici, est identique à ce qu&rsquo;on voyait sur SharePoint (hiérarchie des produits, attributs sur les produits…)</p>
<p><strong>Retour aux slides pour parler de personnalisation de la solution eCommerce</strong></p>
<p>On voit notamment un schéma expliquant comment les différents éléments sont mappés les uns sur les autres (ex: Catalog côté Dynamics est transformé en Content Types côté SharePoint, la navigation côté Dynamics est transformée en termes dans le TermStore côté SharePoint…)</p>
<p>Pour créer le site SharePoint vu précédemment, 22 WebParts sont fournies avec Dynamics AX afin de couvrir tous les aspects nécessaires (présentation des produits, paiement, compte utilisateur…)</p>
<p>On repasse côté démonstration pour voir comment étendre les fonctionnalités de certains composants et notamment dans le cas ici, ajouter la quantité de produits en stock quand on demande de faire un retrait d&rsquo;achat dans une boutique physique au lieu de se faire livrer</p>
<p>Vu que la session touche à sa fin cela va très vite et je n&rsquo;ai pas le temps de prendre des notes mais c&rsquo;est assez simple à faire (interrogation d&rsquo;un service WCF via un appel jQuery et modification de fichiers Javascript pour afficher les résultats dans la page HTML)</p>
<p>On voit une dernière démo sur l&rsquo;utilisation des Device Channels de SharePoint 2013 afin d&rsquo;afficher le même site que précédemment sur un Windows Phone, simplement en changeant la MasterPage associée à ce type de périphérique</p>
<p>Une session très intéressante (peut être la plus intéressante depuis Lundi) et qui laisse entrevoir pourquoi Microsoft s&rsquo;est séparé de Commerce Server puisque le couple Dynamics/SharePoint permet de répondre en beaucoup mieux et en plus puissant, à la mise en oeuvre de sites eCommerce.</p>
<p>Cela donne vraiment envie d&rsquo;aller plus loin et d&rsquo;essayer de le mettre en oeuvre sur un vrai projet.</p>
<p>Stéphane</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1053&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-ecommerce-solutions-with-dynamics-for-retail-and-sharepoint-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Bringing SharePoint to the desktop</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-bringing-sharepoint-to-the-desktop/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-bringing-sharepoint-to-the-desktop/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 17:10:42 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1050</guid>
		<description><![CDATA[Session de 10h45 à 12h animée par Corey Roth (application architect &#8211; Infusion) &#8212; Petit résumé: Une démo qui montre comment afficher des données SharePoint depuis un app windows store. Plutôt sympa et très rapide à coder grâce aux API REST de SharePoint qui évite a nos amis du pôle .Net de toucher à SharePoint (je sais [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1050&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Session de 10h45 à 12h animée par Corey Roth (application architect &#8211; Infusion)</strong></em></p>
<p>&#8212;</p>
<p><strong>Petit résumé:</strong></p>
<p>Une démo qui montre comment afficher des données SharePoint depuis un app windows store. Plutôt sympa et très rapide à coder grâce aux API REST de SharePoint qui évite a nos amis du pôle .Net de toucher à SharePoint (je sais que ça peut leur donner des boutons <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</p>
<p>Au niveau fonctionnel, intéressant pour afficher pourquoi pas des news d&rsquo;un intranet, ses tâches SharePoint, des notifications sociales SharePoint d&rsquo; un RSE. Bref prometteur.</p>
<p>Y a plus qu&rsquo;a attendre que nos clients SharePoint passent à Windows 8.</p>
<p>&#8212;</p>
<p>Une introduction sur les apps windows 8. La notion de full screen avec des vues multiples, sandboxés, variété de devices, distribuées par le store&#8230;</p>
<p><strong>Pourquoi des app avec SharePoint?</strong></p>
<p>Visualiser des données (bi, reports, etc), les manager adorent le touch, emmène SharePoint sur le desktop, facile a développer, fun, etc&#8230;</p>
<p><span style="text-decoration:underline;"><strong>// Pour démarrer</strong></span></p>
<p>Il faut donc 2 environnements, son SharePoint et son client windows 8 avec visual studio. les 2 doivent être sur le même domaine. Une vm est idéale.</p>
<p><strong>En quel langage on code ?</strong></p>
<ul>
<li>Html5 / JS</li>
<li>XAML / C#</li>
</ul>
<p><span style="text-decoration:underline;"><strong>// démo hello world</strong></span></p>
<p>Sur visual studio, nouveau projet, catégorie windows store, win8 app.</p>
<p>Il ajoute juste une texte box avec hello world&#8230;. Applaudissements nourris ! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span style="text-decoration:underline;"><strong>// Comment on intègre SharePoint ?</strong></span></p>
<p>Avec du databinding, des contracts (search, share), live tile, notification</p>
<p><strong>Quel API SharePoint ? </strong>REST</p>
<p>REST retourne du xml ou json, facule a requête, etc. Donc REST est le choix a faire dans ce cas.</p>
<p>URL a utiliser : /_api/</p>
<p>/_api/web/lists/<br />
/_api/web/lists/getbytitle()</p>
<p>Etc.</p>
<p>On peut tester ces url sur IE.</p>
<p>On change un header pour avoir du json a la place du xml.</p>
<p>Pour requéter depuis un app win8</p>
<p>HttpClient doit etre utiliser, il gère l authentification.</p>
<p><span style="text-decoration:underline;"><strong>// on repasse à la démo</strong></span></p>
<p>Il montre sa picture library sur SharePoint et il aimerait montrer cette liste dans son app windows store.</p>
<p>Il cherche l&rsquo;url a requeter sur /_api/lists/</p>
<p>Il trouve donc /_api/lists/getbytitle(&lsquo;pictures&rsquo;)/</p>
<p>Et /_api/lists/getbytitle(&lsquo;pictures&rsquo;)/items pour avoir les items</p>
<p>Mais il manque l&rsquo;url de l&rsquo;image, il ajoute donc :</p>
<p>/_api/lists/getbytitle(&lsquo;pictures&rsquo;)/items?$select=id,title,&#8230;..</p>
<p>Il revient sur VS et utilise le template items page.</p>
<p>Dans la méthode loadstate, il ajoute une méthode async BindData()</p>
<p><strong>Dans cette méthode, il fait le binding : </strong></p>
<p>un HttpClient,</p>
<p>il change le content type header,</p>
<p>Var response = await client.getasync(url)</p>
<p>Response = await response.content.readasstring</p>
<p>Puis il parse les éléments</p>
<p>Puis this.defaultviewmodel['items'] = items</p>
<p>En gros <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Dans le appmanifest, il faut checker enterprise authentication et private network.</p>
<p>Il modifie le template d&rsquo;affichage et hop, une belle app qui montre la liste des images.</p>
<p><span style="text-decoration:underline;"><strong>// Search</strong></span></p>
<p>On va maintenant ajouter une fonction de recherche à notre app.</p>
<p>Cela fonctionne de la même manière, la recherche SharePoint est accessible par REST /_api/search/query?querytext=&rsquo;sharepoint&rsquo;</p>
<p>Il ajoute une page à l&rsquo;app en prenant le template search contract</p>
<p>je vous passe les détails, le webcast sera plus parlant. Voire le blog du monsieur.</p>
<p><a href="http://tinyurl.com/agk2kpg">Http://tinyurl.com/agk2kpg</a></p>
<p>En tout cas, c&rsquo;est plutôt sympa d&rsquo;afficher des données SharePoint depuis son windows 8.</p>
<p><span style="text-decoration:underline;"><strong>// Tiles / Notification</strong></span></p>
<p><strong>Rappel : les tiles sont une combinaison texte et image.</strong></p>
<p>Comment ça marche ? c&rsquo;est juste du xml.</p>
<p>Pour les notifications, on peut utiliser les tiles, badges, toast, lock screen.</p>
<p>Celles ci sont périodiques ou en mode push.</p>
<p>On va voir un exemple de  notification périodique :</p>
<p><strong>Cela se passe comment ?</strong></p>
<p>pas de code client exécuté quand le xml est</p>
<p>Il va modifier le flux rss</p>
<p><span style="text-decoration:underline;"><strong>// démo notification périodique</strong></span></p>
<p>Une liste de taches sharepoint. Il veut mettre a jour le tile avec le nombre de tache assignée a l utilisateur.</p>
<p>Il ajoute une content query webpart, il modifie la query pour chercher sur sa liste de tache et il check &quot;enable feed for my webpart&quot;.</p>
<p>Il va maintenant dans le XSL dans la style library pour modifier le rss.xsl en ajoutant $rowcount.</p>
<p>(ajouter une copie serait mieux, car il modifie le RSS pour toutes les CQWP là&#8230;)</p>
<p>Il retourne a son app windows 8 et utilise TileUpdateManager pour paramétrer la mise a jour de la tile.</p>
<p>Et ça marche, on voit qu&rsquo;il a 8 tâches affectés.</p>
<p>On voit des idées pour le social SharePoint par exemple.</p>
<p>Fabien</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1050&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-bringing-sharepoint-to-the-desktop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Migrating to SharePoint Online in Office 365</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-migrating-to-sharepoint-online-in-office-365/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-migrating-to-sharepoint-online-in-office-365/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 17:07:29 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1048</guid>
		<description><![CDATA[Session de 10h30 à 11h45 Phil Cohen, Microsoft SharePoint Architects Kimmo Forss, Microsoft SharePoint Architects Le début de la session concerne des mises en garde sur les migrations et le besoin de faire de la conduite de changement. Les migrations demandent beaucoup de changements . Il faut s’appuyer sur les retours d’expérience existants pour anticiper [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1048&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Session de 10h30 à 11h45 Phil Cohen, Microsoft SharePoint Architects Kimmo Forss, Microsoft SharePoint Architects</strong></em></p>
<p>Le début de la session concerne des mises en garde sur les migrations et le besoin de faire de la conduite de changement. Les migrations demandent beaucoup de changements . Il faut s’appuyer sur les retours d’expérience existants pour anticiper les étapes, les difficultés et les bonnes pratiques.</p>
<p><strong>Trois étapes : planifier, préparer et migrer.</strong></p>
<p>Concernant la préparation, ça recoupe d’autres sessions déjà passées (qu’il faut analyser son environnement autant sur le contenu, les processus en place, les fonctionnalités, les utilisateurs…). Pour estimer les sites à crééer, s’appuyer sur « EnumAllWebs » et « PreUpgradeCheck » afin de vérifier les possibilités de mises à jour. Il est très important de faire un listing car on peut s’apercevoir aussi que la migration peut amener certains problèmes : le cas de tout migrer dans un même endroit (car on réorganise ou bien on centralise plusieurs fermes) peut poser un problème si des structures sont identiques (même nom de collection, de site…).</p>
<p>Comme d’habitude, bien vérifier que les fonctionnalités utilisées aujourd’hui existent bien dans la version cible (cad SharePoint Online). Ils nous montrent un exemple d’un fichier Excel d’une préparation de migration où tous un tas de composants ne sont plus disponibles (eventReceiver, features…).</p>
<p>Les entreprises pensent souvent dans cet ordre : migrer, archiver, supprimer. Il vaut mieux bien planifier la migration et faire un nettoyage (archiver et supprimer). Cela permettra de ne pas utiliser du stockage en trop, avoir des recherches plus fiable, une migration certainement plus simple.</p>
<p>A prendre en compte les personnalisations de votre SharePoint OnPromise qui seront différentes dans Office 365 : Type de fichier bloqué (exe…), taille des espaces individuels de stockage par exemple.</p>
<p>La communication ne doit pas être oubliée : elle est primordiale. Il faut mettre en place un plan de communication en expliquant :</p>
<ul>
<li>Qu’est ce qui va se passer ?</li>
<li>Quand ?</li>
<li>Les avantages ?</li>
<li>Les changements (interface, adresses, liens)</li>
<li>Les périodes de frise/gel</li>
<li>Les manuels utilisateurs</li>
</ul>
<p>Et préparer les sessions de formation utilisateur.</p>
<p>Toujours la préconisation de faire un POC ou un pilote pour vérifier que tout se passera bien et faire adhérer les utilisateurs de façon progressif, tester les fonctionnalités, préparer le plan de communication/formation. Ne surtout pas donner le « nom final » au pilote afin que les personnes prennent conscience du sens du projet (et qu’il ne soit pas déçu avant la version finale du projet).</p>
<p><strong>Autres conseils : Avoir des ambassadeurs, une équipe de support permettant d’accompagner les « égarés ».</strong></p>
<p>Lors de la préparation, bien penser à automatiser le maximum, faire tout son possible pour anticiper les erreurs. Mettre en place des périodes de gels et étudier s’il est possible de faire la migration de façon progressive. Lors de la migration et donc de la phase de frise, mettre la ferme en lecture seule si possible.</p>
<p><strong>Pour conclure, il est indispensable de bien planifier et communiquer, tester les différentes approches et les outils, et enfin tester le résultat final.</strong></p>
<p>Lors des questions, la recommandation de migration est rappelée : en cas de migration de version, il vaut mieux si c’est possible migrer sa version OnPromise vers 2013 et après passer à la version Online (permettant ainsi de vérifier la portabilité des fonctionnalités &amp; cie).</p>
<p>Je sors un peu déçu de la session, car beaucoup de points se recoupent avec des sessions passées ou me paraissent tout simplement du bon sens lors d’une migration.</p>
<p>Jérôme</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1048&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-migrating-to-sharepoint-online-in-office-365/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Using TypeScript to Build Apps for Office and SharePoint</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-using-typescript-to-build-apps-for-office-and-sharepoint/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-using-typescript-to-build-apps-for-office-and-sharepoint/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 16:57:13 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1045</guid>
		<description><![CDATA[Wednesday, 10h15, Rober Bogue, MVP, Thor ProjectsKeenan Newton, Developer audience SharePoint and Office Microsoft Résumé Session très intéressante sur TypeScript, comme surcouche de Javascript. Il permet notamment à un IDE comme Visual Studio 2012 de profiter de l&#8217;intellisense et la gestion d&#8217;erreurs en javascript. L&#8217;objectif est de créer des applications assez robustes et avancées en javascript [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1045&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Wednesday, 10h15, Rober Bogue, MVP, Thor ProjectsKeenan Newton, Developer audience SharePoint and Office Microsoft</strong></em></p>
<p><strong>Résumé</strong></p>
<p>Session très intéressante sur TypeScript, comme surcouche de Javascript. Il permet notamment à un IDE comme Visual Studio 2012 de profiter de l&rsquo;intellisense et la gestion d&rsquo;erreurs en javascript. L&rsquo;objectif est de créer des applications assez robustes et avancées en javascript en profitant des classes, namespaces etc tout en étant en Javascript.</p>
<p>Malgré tout, la session montre beaucoup de code qui comme ça, n&rsquo;est pas forcément digeste. On fait confiance sur le fait que cela fonctionne bien et soit bien codé, mais cela mérite d&rsquo;être poussé avec un mode &quot;en pratique&quot;</p>
<p>TypeScript dans SharePoint, puis dans Office.</p>
<p>TypeScript a été dévoilé il y a un mois. L&rsquo;idée est de compiler du code pour qu&rsquo;il finisse en javascript sur une page. C&rsquo;est une méthode en quelque sorte d&rsquo;abstraction à l&rsquo;utilisation de javascript.</p>
<p><span style="text-decoration:underline;"><strong>// Retour sur javascript</strong></span></p>
<p><strong>Avantages :</strong></p>
<p>Ubquitous, cross-browser, cross-platform Utilisation de jQuery Knockout et autres libraires possibles.</p>
<p><strong>Inconvénients :</strong></p>
<p>Vérification à la compilation prend du temps. Pas d&rsquo;Intellisense.</p>
<p>Différences d&rsquo;implémentations parfois.</p>
<p><span style="text-decoration:underline;"><strong>// Pourquoi TypeScript</strong></span></p>
<p>Application-Scale Development : Gestion de modules, classes, types.</p>
<p>Beaucoup de lignes de codes.</p>
<p>Vérification du compilateur, d&rsquo;autant plus intéressant lorsque nous avons beaucoup de lignes de codes.</p>
<p>On peut toujours utiliser les librairies Javascript.</p>
<p>TypeScript est une surcouche à Javascript, il ne le remplace pas.</p>
<p>Il invite à utiliser <a href="http://www.typescriptlang.org/Playground/">http://www.typescriptlang.org/Playground/</a></p>
<p>Gestion d&rsquo;intellisense, d&rsquo;erreur à la volée, compilation à la volée. Gestion de classes, modules (équivalent namespaces), héritages.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : App de commentaires de Vidéos</strong></span></p>
<p>L&rsquo;App est en HTML5, a mis une &lt;video&gt;, 3 input (2 textes, et un bouton).</p>
<p>Il a ajouté un VideoCommenter.js dans son projet.</p>
<p>Il va sur un fichier VideoCommenter.ts &#8211;&gt; Il va dessus, il est dans le window.onload = () =&gt; {} Il utilise un type Commenter avec class Commenter {} Il a un constructeur et des méthodes.</p>
<p>Le code reste du javascript, mais il profite de la gestion d&rsquo;erreur, l&rsquo;intellisense etc.</p>
<p>En allant sur le VideoCommenter.js, on a bien du javascript classique.</p>
<p><span style="text-decoration:underline;"><strong>// Retour sur les slides : Newton parle des options de développements</strong></span></p>
<p>Il y a les full trust farm solution et les Apps.</p>
<p>Il revient sur les modes d&rsquo;hébergement d&rsquo;une App (Autohosted, Provider hosted, ou SharePoint hosted).</p>
<p>Il revient sur le cross-site scripting où il explique que cette sécurité est importante et qu&rsquo;une app est sur une URL différente pour permettre nativement aux Apps d&rsquo;être sécurisées face à SharePoint.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : Rogue présente son TypeScript SPREST library</strong></span></p>
<p>Ce qu&rsquo;il a fait c&rsquo;est de créer de nombreux fichiers .ts représentant les objets SharePoint, tous compilés en un seul .js.</p>
<p>Pour ce faire, ouvrir le csproj, par défaut, il y a un noeud qui force le fait que chaque .ts va être compilé en un js bien séparé.</p>
<p>Pour ce faire, il ouvre le csproj et ajout un &#8211;out &amp;quote;$(ProjectDir)SPREST.js&amp;quot; et -c -declarations. Il est allé vite, je ne sais pas sur quel noeud c&rsquo;est.</p>
<p>Il va dans son autre csproj pour son App, dans le App.js, il va consommer grâce à Knockout et les promises (cf session de Scott Hillier sur les best practices Javascript).</p>
<p>Il a déployé son App, sur une Asset Library où il va commenter sa vidéo. Il a ajouté un Custom Action dans son app pour avoir un menu dans l&rsquo;ECB par lequel il accède à son App et où il poste un commentaire à la seconde S.Les commentaires sont sauvegardés dans une liste.</p>
<p>Il revient sur VS2012, où il référence son SPREST.js dans son Default.aspx.</p>
<p>Il présente notamment un JQuery.d.ts, version TypeScript de jQuery développée pour avoir l&rsquo;intellisense.</p>
<p>Il revient sur la méthode de rendre un csproj compatible avec TypeScript. Il ouvre le csproj.</p>
<p>CSproj dans &lt;Project&gt; il y met intialtargets=&quot;TypeScriptCompile&quot;</p>
<p>Le noeud Target, il ajoute le -out etc.</p>
<p>Il est passé rapidement car il a mis ça dans les slides.</p>
<p><span style="text-decoration:underline;"><strong>// Retour sur les slides : Newton revient sur les Apps Office</strong></span></p>
<p>Ce sont une WebPage (avec &lt;script src=&quot;Office.js&quot;&gt; + AppManifest.xml Pour l&rsquo;instant il n&rsquo;existe pas encore de TypeScript pour Office.js pour l&rsquo;instant mais cela va venir.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : Extraction des commentaires vidéos vers Excel</strong></span></p>
<p>Il a un fichier Excel avec une App for Excel où il récupère les données de la liste de commentaires et les insère dans la feuilles.</p>
<p>Il retourne sur VS2012. Il a deux projets, un pour l&rsquo;AppManifest. L&rsquo;autre pour l&rsquo;App dans lequel il ouvre le fichier ASPX.</p>
<p>Il y charge MicrosoftAjax.js et Office.js. Il a aussi sa librairie SPREST.js et son js de son App.</p>
<p>Au début il utilise un declare.</p>
<p>Il fait ses requêtes en javascript avec sa librairie. Là où il veut nous emmener est qu&rsquo;il récupère ses données et les insère dans  l&rsquo;Excel assez facilement via quelques lignes de codes grâce notamment à la librairie Office.</p>
<p>En fait il a utilisé assez facilement sa librairie TypeScript et la librairie Office.js dans son code.</p>
<p>Cela ne parait pas clair à l&rsquo;écrit mais la démo est plutôt convaincante même si la vitesse et la quantité de code montrée est assez conséquente.</p>
<p>Christian</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1045&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-using-typescript-to-build-apps-for-office-and-sharepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Breaking out into the cloud : Using Azure Worker Roles to automate document generation</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-breaking-out-into-the-cloud-using-azure-worker-roles-to-automate-document-generation/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-breaking-out-into-the-cloud-using-azure-worker-roles-to-automate-document-generation/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 16:55:06 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1043</guid>
		<description><![CDATA[Session de 10h30 à 11h45 animée par Ben Robb (SharePoint MVP) Le but de la session va être de voir comment générer des documents Word devant être stockés dans SharePoint avec différentes solutions techniques La première question est &#34;pourquoi vouloir générer des documents automatiquement ?&#34; Les besoins sont multiples mais un peu toujours les mêmes [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1043&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><b>Session de 10h30 à 11h45 animée par Ben Robb (SharePoint MVP)</b></em></p>
<p>Le but de la session va être de voir comment générer des documents Word devant être stockés dans SharePoint avec différentes solutions techniques</p>
<p>La première question est &quot;pourquoi vouloir générer des documents automatiquement ?&quot;</p>
<p><strong>Les besoins sont multiples mais un peu toujours les mêmes dans différents métiers</strong></p>
<ul>
<li>Génération de contrats et documents légaux</li>
<li>Brochures commerciales</li>
<li>Rapports</li>
<li>Certificats de destruction (dans le Record Management)</li>
</ul>
<p><strong>Le scénario de la démo sera le suivant</strong></p>
<ul>
<li>Déclencher la création d&rsquo;un document en mettant à jour une liste SharePoint</li>
<li>Recenser les informations dans différentes sources de données</li>
<li>Construire le document</li>
<li>Stocker la document finalisé dans SharePoint</li>
</ul>
<p>Pour générer des documents de manière automatisée, il est nécessaire de connaitre OpenXML qui a fait son apparition avec Office 2007 et qui n&rsquo;est qu&rsquo;un conteneur ZIP de différentes informations</p>
<p>On passe à la démonstration pour voir dans Word 2013, à quoi ressemble le modèle de document que nous voulons générer de manière automatique (titre, description, date de publication, URL…)</p>
<p>On voit que chaque section du document est mappée sur un noeud XML et quand on renomme le fichier Word en ZIP et qu&rsquo;on regarde à l&rsquo;intérieur, on retrouve les éléments XML</p>
<p>On voit que dans le SDK OpenXML 2.5, un outil est fourni pour générer du code .NET à partir du schéma XML, pour mettre à jour l&rsquo;intégralité ou une section particulière du document</p>
<p>Pour le document que nous allons utilisé, le code .NET généré à partir de l&rsquo;outil précédent compte pas loin de 10 000 lignes</p>
<p>On voit maintenant le code d&rsquo;une application console qui va chercher sur Internet dans une source OData des données, et qui utilise le code généré précédemment pour automatiser la création de centaines de documents en quelques secondes</p>
<p>On repasse rapidement sur les slides pour évoquer les méthodes disponibles pour uploader des documents dans SharePoint et on voit qu&rsquo;on peut le faire avec le modèle objet client (CSOM) ou les services REST</p>
<p>On repasse sur la démo pour voir, via un bout de code récupérer sur Internet permettant de gérer l&rsquo;authentification avec Office 365, comment uploader le fichier dans un site SharePoint depuis une application console</p>
<p>Retour aux slides maintenant que nous avons les bases pour générer les documents et les envoyer dans SharePoint afin d&rsquo;évoquer comment déporter la génération dans Azure plutôt que l&rsquo;application console</p>
<p>On commence par un rappel sur les Worker Roles qui sont l&rsquo;équivalent des services Windows où aucune interface graphique n&rsquo;est disponible (contrairement aux webroles)</p>
<p>Déporter la génération dans Azure fonctionne de la même manière que si on l&rsquo;avait fait dans un TimerJob SharePoint mais en ajoutant un aspect haute disponibilité grâce au Cloud</p>
<p>On repasse dans Visual Studio pour créer un projet Worker Role grâce aux modèles de projets fournis avec le SDK Azure et on réexplique rapidement les propriétés du projet (taille des VMs, nombre d&rsquo;instances…)</p>
<p>Pour gagner du temps, on repart d&rsquo;un projet déjà créé pour voir le code et plus particulièrement le point d&rsquo;entrée du Worker Role (méthode Run) dans laquelle une boucle infinie a été implémentée avec une pause de 10s entre chaque itération</p>
<p>Dans cette boucle, on va se connecter à SharePoint, récupérer les items d&rsquo;une liste particulière en filtrant les lignes en fonction d&rsquo;un statut et pour chaque élément on génère les documents avec le même code que vu précédemment, on upload le fichier dans SharePoint toujours avec le même code puis on met à jour la liste SharePoint quand c&rsquo;est terminé</p>
<p>Le Worker Role ayant déjà été déployé dans Azure, on va modifier dans la liste SharePoint un élément pour lui donner le statut permettant au Worker Role de traiter les fichiers et comme attendu, on voir qu&rsquo;au bout de quelques secondes (10 au maximum entre 2 itérations de la boucle), le traitement se déclenche et les fichiers sont uploadés dans la bibliothèque de documents</p>
<p>Retour aux slides pour évoquer le débogage dans Azure où cela passe par l&rsquo;utilisation de l&rsquo;émulateur en local sur son poste de développement, et l&rsquo;utilisation des traces stockés dans une base SQL (par exemple) une fois l&rsquo;application en production (des outils tiers existent pour analyser les logs stockés dans une base SQL)</p>
<p>Le premier scénario concernait Azure avec un système de Polling toutes les 10s mais nous pouvons faire l&rsquo;inverse et que ce soit Office 365 qui Push une information à Azure pour lui demander de générer les documents</p>
<p>Cela est faisable grâce à la notion de Remote Events disponibles dans SharePoint et nous allons le voir en démonstration</p>
<p>Dans Visual Studio, on peut créer un Remote Event Receiver grâce au modèle disponible dans les éléments d&rsquo;un projet</p>
<p>L&rsquo;implémentation du receiver passe simplement par la surcharge d&rsquo;une méthode (il en existe 2 pour la gestion synchrone/asynchrone) et il est évidemment recommandé d&rsquo;implémenter le mode asynchrone pour éviter de bloquer le thread de l&rsquo;application ce qui donne l&rsquo;impression que celle-ci est plantée</p>
<p>Pour la publication d&rsquo;application dans Azure, rien de nouveau car on voit Ben utiliser WebDeploy depuis Visual Studio</p>
<p>En conclusion, un petit rappel sur les nouvelles fonctionnalités de SharePoint 2013 utilisées pour mettre en oeuvre la démonstration à savoir Remote Events, OAuth et REST</p>
<p>Pour ce qui est de choisir entre le mode Polling ou Remote Events, chaque solution a ses avantages/inconvénients donc il n&rsquo;y a pas un choix meilleur que l&rsquo;autre</p>
<p>Une session intéressante, notamment sur la partie Remote Events de SharePoint 2013. En revanche la partie génération de documents en tant que telle n&rsquo;a pas évoluée d&rsquo;un pouce et repose à 100% sur OpenXML</p>
<p>Stéphane</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1043&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-breaking-out-into-the-cloud-using-azure-worker-roles-to-automate-document-generation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : How to Extend Social in SharePoint 2013</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-how-to-extend-social-in-sharepoint-2013/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-how-to-extend-social-in-sharepoint-2013/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 16:52:43 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1041</guid>
		<description><![CDATA[Wednesday, 9h00, Andrew Harris, Program Manager Social SharePoint, Microsoft Résumé : La session est une introduction aux objets de développements permettant d&#8217;intéragir avec le newsfeed principalement. Il explique également la structure et l&#8217;architecture de stockage des différents éléments de la brique Social sur le SharePoint. Il présente la session comme présenter les APIs et fonctions [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1041&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Wednesday, 9h00, Andrew Harris, Program Manager Social SharePoint, Microsoft</strong></em></p>
<p><strong>Résumé :</strong></p>
<p>La session est une introduction aux objets de développements permettant d&rsquo;intéragir avec le newsfeed principalement.</p>
<p>Il explique également la structure et l&rsquo;architecture de stockage des différents éléments de la brique Social sur le SharePoint.</p>
<p>Il présente la session comme présenter les APIs et fonctions AJAX pour étendre les fonctionnalités du Social par le développement.</p>
<p><span style="text-decoration:underline;"><strong>// Qu&rsquo;est-ce que le Social</strong></span></p>
<p><strong>Composantes du Social :</strong></p>
<p>* UserProfiles avec les profils et les propriétés utilisateurs</p>
<p>* Following : avoir nos centres d&rsquo;intérêts, et pouvoir les suivre.</p>
<p>* Feeds : selon les following, le plus gros investissement de cette version de SharePoint</p>
<p><strong>Architecture de stockage : User Profile Service</strong></p>
<p>* BDD Profile (par service)</p>
<p>* People et tags following</p>
<p>* Propriétés utilisateurs</p>
<p>* BDD Social (rôle réduit maintenant)</p>
<p>* Social tags uniquement</p>
<p>* BDD Content (collection de sites par utilisateurs)</p>
<p>* Feeds posts</p>
<p>* Sites et documents followés</p>
<p>* Espace personnel</p>
<p>Il revient sur ces choix d&rsquo;architectures où la content database peut être parcourue par le search, peut être étendue en termes de volumétrie.</p>
<p>Il explique qu&rsquo;une autre composante est App Fabric Distributed Caching : qui permet de facilité la récupération d&rsquo;activité rapidement.</p>
<p>Une différence par rapport à 2010, est que nous avons un réseau social en live, il n&rsquo;y a pas de latence de crawl comme en 2010 où il fallait attendre x temps pour récupérer nos activités dans le newsfeed.</p>
<p><span style="text-decoration:underline;"><strong>// Développement</strong></span></p>
<p>CSOM, JSOM, et API REST (OAuth et OData) sont utilisés pour le développement.</p>
<p>Il renvoie à la session de 10h sur l&rsquo;utilisation de Ruby On Rails pour attaquer les données de SharePoint en REST.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : authentication et profiles</strong></span></p>
<p>Il a une application simple qui utilise un ClientTexte Il y a besoin de référencer microsoft.sharepoint.client.runtime (clientcontext par ex), microsoft.sharepoint.client.userprofiles.</p>
<p>Il récupère le contexte via un ClientContext et l&rsquo;URL.</p>
<p>Il passe un objet SharePointOnlineCredentials ave clogin et mot de passe en disant que ce n&rsquo;est pas une best practice mais pour le besoin de la démo, c&rsquo;est simple. Il existe un moyen d&rsquo;ouvrir une iframe pour se connecter sur SharePoint Online et retourner le credentials dans l&rsquo;application.</p>
<p>Il revient sur les namespaces dans userprofiles : social et userprofiles.</p>
<p>Il insiste sur le namespace Social qui contient les méthodes qui font le travail en arrière plan et facilite le travail.</p>
<p>Pour gérer les éléments de personnes (propriétés etc.), utiliser le namespace UserProfiles.</p>
<p>Il retourne sur le code, et utilise l&rsquo;objet PeopleManager en passant le contexte. Avec cela il récupère un utilisateur pour avoir son nom.</p>
<p><span style="text-decoration:underline;"><strong>// Retour sur les slides : Key features</strong></span></p>
<p>Les éléments les plus utilisés seront sûrement l&rsquo;objet PeopleManager. En général il explique qu&rsquo;on ne trouvera pas le moyen de définir la propriété utilisateur d&rsquo;un profil.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : Follow</strong></span></p>
<p>Il va récupérer les followers et les personnes qu&rsquo;il follow afin de les afficher.</p>
<p>Il utilise le SocialFollowingManager dans le namespace Social.</p>
<p>Il existe plusieurs types d&rsquo;éléments à follow : Documents, Sites, Tags, Users : représenté par l&rsquo;objet SocialActor.</p>
<p>Il fait un GetFollowers() sur le manager et récupère un ClientResult&lt;SocialActor[]&gt;.</p>
<p>Ensuite il exécute la requête et pour  chacun des SocialActor retourné.</p>
<p>Ensuite il sort du contexte de développement et présente le fait que de follow quelqu&rsquo;un va être instantané dans les compteurs, dans les feeds retourne sur notre newsfeed.</p>
<p><span style="text-decoration:underline;"><strong>// Retour sur les slides : Feeds</strong></span></p>
<p><strong>Stockage des feeds.</strong></p>
<p>Il y a un stockage persisté, et un stockage en cache.</p>
<p>Les personnes, site, document et tags sont stockés dans le cache feed.</p>
<p>Il explique que pour un post et une réponse, on stocke toutes les entrées au niveau d&rsquo;un site personnel de la personne qui a posté. Ce post est également repris et stocké dans le site personnel de la personne qui a répondu mais en tant que référence de thread (thread ID) Il explique qu&rsquo;il est impossible de poster de la part de quelqu&rsquo;un d&rsquo;autre.</p>
<p><span style="text-decoration:underline;"><strong>// Création des feeds agrégés sur demande</strong></span></p>
<p>Le processus est de récupérer les feeds depuis les feeds en cache et persisté. Ensuite il y a un tri possible sur par exemple les posts les plus récemment répondus. Ensuite, parce que les feeds sont récupérés de deux listes différents, il y a une consolidation pour appliquer la gestion de sécurité sur les éléments que l&rsquo;utilisateur qui les requêtes, a droit de voir. Enfin, il y a l&rsquo;affiche du post et de ses réponses.</p>
<p>En code, on récupère un feed (SocialFeed) qui récupère un SocialThread correspondant au fil de discussion. Il contient un post racine et des réponses en SocialPost[] qui peuvent être des RootPost ou Replies[].</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : récupérer des feeds</strong></span></p>
<p>On va utiliser Social et Microfeed namespace. Il conseille d&rsquo;utilise le SocialFeedMAnager . Nous allons utiliser CreatePost() et GetFeed().</p>
<p>Pour GetFeed, il y a des types de feeds, les news, les personal feeds (activités personnels), timeline (il ne s&rsquo;étend pas dessus), et likes.</p>
<p>Sur le SocialFeedManager, il y a un GetMentions() permettant de récupérer les mentions, éventuellement lues ou indifférenciées.</p>
<p>On peut faire un GetFeedFor() pour avoir les feeds, tels qu&rsquo;on les aurait en allant sur la page d&rsquo;un utilisateur.</p>
<p>Il va faire un Getfeed() de type news avec des options avec un compteur max à 5 renvoie en ClientResult&lt;SocialFeed&gt; Pour chaque SocialThread, dans les feed.Value.Threads il va récupérer les SocialActor[] thread.actors.</p>
<p>Il va afficher le post racine (thread.RootPost.AuthorIndex dans le tableau) ainsi que toutes les réponses.</p>
<p><span style="text-decoration:underline;"><strong>// DEMO : création de post</strong></span></p>
<p><strong>Utilisation de SocialFeedManager toujours.</strong></p>
<p>Il va utiliser un SocialFeedCreationData qui permet de définir les options de création. Il y définit le contenttext avec des références {0} etc.</p>
<p>Il va remplir les ContentItems par un tableau de SocialDataItem. Le premier est un utilisateur SocialDataItemType.User avec l&rsquo;accountName. Le deuxième est un lien avec SocialDataItemType.Link avec le text et l&rsquo;URI. Enfin un tag avec SocialDataItemType.Tag avec un text. Il note qu&rsquo;il faut que le text commence par un #, sinon il y a une exception.</p>
<p>Enfin grâce au SocialFeedManager.CreatePost() il peut passer la possibilité de poster dans le newsfeed d&rsquo;un utilisateur ou poster dans un Team Site.</p>
<p>Ensuite il ajoute des réponses via CreatePost toujours, en passant le resultThread.Value.Id en paramètre.</p>
<p><span style="text-decoration:underline;"><strong>// Retour sur les slides : Fonctionnalité conversations</strong></span></p>
<p>On peut créer des post, supprimer, like des posts.</p>
<p><span style="text-decoration:underline;"><strong>// Conclusion :</strong></span></p>
<p>Les applications peuvent être développées avec les APIs REST ou le CSOM ou JSOM.</p>
<p>Enfin il insiste sur le fait que contrairement à 2010, 2013 retourne les informations en live.</p>
<p>Christian</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1041&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-how-to-extend-social-in-sharepoint-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Creating your brand in SharePoint 2013 on-premise or in the cloud</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-creating-your-brand-in-sharepoint-2013-on-premise-or-in-the-cloud/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-creating-your-brand-in-sharepoint-2013-on-premise-or-in-the-cloud/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 16:50:09 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1039</guid>
		<description><![CDATA[Session de 9h à 10h15 animée par Randy Drisgill et John Ross (MVPs) &#8212; Petit résumé: Un tour d&#8217;horizon des options de branding des sites SharePoint 2013. Composed looks, design manager, O365, publishing. Pas de révolution côté WCM à part les display templates. Le design manager est un outil pas mal, pour convertir son html en master [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1039&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Session de 9h à 10h15 animée par Randy Drisgill et John Ross (MVPs)</strong></em></p>
<p>&#8212;</p>
<p><strong>Petit résumé:</strong></p>
<p>Un tour d&rsquo;horizon des options de branding des sites SharePoint 2013. Composed looks, design manager, O365, publishing.</p>
<p>Pas de révolution côté WCM à part les display templates. Le design manager est un outil pas mal, pour convertir son html en master page, mais il est pas magique non plus.</p>
<p>Coté collaboratif, les composed looks vont beaucoup plus loin que les vieux thèmes SharePoint 2010, les clients devraient apprécier d&rsquo;avoir quelque chose encore plus sur mesure à portée de clic.</p>
<p>Coté O365, le publishing est actif lorsqu&rsquo;on est sur un enterprise plan. Pour les small business plan, un public website est disponible.</p>
<p>&#8212;</p>
<p><span style="text-decoration:underline;"><strong>// introduction</strong></span></p>
<p>On commence par un historique du branding qui remonte au branding des vaches lorsque les cowboys devaient retrouver leur troupeau&#8230; Je pensais pas qu&rsquo;on parlerait cowboys ce matin&#8230;</p>
<p>Concernant le web en général, le branding parle de couleurs, des logos, etc.</p>
<p>Concernant SharePoint, le sujet de ce matin, on parle plutôt de master pages, layouts, css, web parts, etc.</p>
<p>Ca devrait donc parler a nos amis de Plaza design.</p>
<p><strong>Intro sur office 365:</strong></p>
<p>Small business plan : pas de publishing disponible</p>
<p>Enterprise plan : le publishing est disponible, on peut activer la feature.</p>
<p><strong>On va prendre une approche en 3 parties :</strong></p>
<p><em><strong>Les 3 parties sur SharePoint 2010 etaient celles ci :</strong></em></p>
<ul>
<li>low effort : thème et edition des pages</li>
<li>medium : custom css, SharePoint designer</li>
<li>full : custom master page, layouts, xslt</li>
</ul>
<p><em><strong>Sur 2013, on aura plutôt ça :</strong></em></p>
<ul>
<li>low : composed looks et edition des pages</li>
<li>medium : design manager for publishing sites, css</li>
<li>full : custom master page, layouts, display templates</li>
</ul>
<p><span style="text-decoration:underline;"><strong>// low effort branding</strong></span></p>
<ul>
<li>page editing</li>
<li>Pas trop de nouveauté de ce côté ci. Les icônes sont juste revampée en windows 8 style.</li>
<li>composed looks</li>
</ul>
<p>Out of the box, le moteur de thème à évolué. Les thèmes 2010 n&rsquo;étaient pas vraiment utilisés.</p>
<p>Le nouveau concept de composed looks inclus une master, des couleurs, fonts, background image et un preview. On a toujours un système de gallerie de composed looks.</p>
<p>Ils nous font une démo et vont changer le composed looks par les sites settings (change the look), on balaye la gallerie, il nous montre qu&rsquo;on peut glisser déposer une image de font, on peut choisir les couleurs.</p>
<p>Il met une image en background et change son logo (pour changer le logo, plus besoin de l&rsquo;url, on a un bouton &quot;parcourir&quot;) Ca rend plutot bien avec une image de fond sans taper une ligne de css.</p>
<p>De mon point de vue, les composed looks par defaut sont bof mais en adaptant avec des images de fond liés au business, on peut avoir des rendus pas mal, les clients devraient aimer.</p>
<p><span style="text-decoration:underline;"><strong>// medium effort branding</strong></span></p>
<ul>
<li>design manager</li>
</ul>
<p>La feature publishing doit être active (pas dans Sp foundation du coup, et pour O365, il faut le plan enterprise) pour avoir le design manager.</p>
<p>Ce qui est pratique avec ce design manager, c&rsquo;est qu&rsquo;on upload son html pour le convertir en masterpage. SharePoint designer ne doit plus être utilise pour designer son site (note pour moi : y en a qui utilisent SPD pour brander un site ?)</p>
<p>On peut utiliser l&rsquo;outil que l&rsquo;on veut pour faire son html : dreamweaver, notepad++, expression, etc. Son choix se porte sur notepad++ <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Avec le design manager, on peut lier un html et une master page, quand on change le html, la master est automatiquement modifiée en fonction.</p>
<ul>
<li>la snippet gallery</li>
</ul>
<p>Des bouts de code à intégrer en copier coller à sa master en construction (search box, navigation, bienvenue xxx, etc.).</p>
<ul>
<li>design package</li>
</ul>
<p>Design manager peut creer comme un grand un wsp avec master page, layouts, css, etc&#8230; Plus besoin de visual studio pour créer le wsp. La wsp créée est en mode sandbox, prêt pour O365.</p>
<p>Si on veut un wsp farm pour appliquer la master sur plein de collection de site, il faudra retourner sur visual studio.</p>
<ul>
<li>démo du design manager</li>
</ul>
<p>(tout ce qui est device channel est volontairement ignoré, il faudra checker d&rsquo;autres sessions)</p>
<p><strong>Upload design files : </strong></p>
<p>il map sa master page gallery sur un disque réseau.</p>
<p>Il utilise ce disque pour copier et uploader tous ses html, css, image, font, dans un sous répertoire de sa master page gallerie.</p>
<p><strong>Edit master page :</strong></p>
<p>Il sélectionne &quot;convert html file to master page&quot;</p>
<p>Il sélectionne son sous repertoire puis son fichier html</p>
<p>Et hop : son html apparait dans la liste des master et la conversion a été faite.</p>
<p>Il publie sa master en version majeure.</p>
<p>Il applique sa master à son site, on voit que le design est appliqué mais tout le contenu est en bas.</p>
<p>En fait, tous les content placeholder sont par defaut placés en bas. Il faudra les déplacer et les positionner dans sa page.</p>
<p>Il utilise maintenant la snippet gallerie pour copier coller les differents snippets.</p>
<p>Il reprend son repertoire mappé et edit le fichier html uploadé pour coller les snippet.</p>
<p>Et voilà, son exemple avec la search box est facile.</p>
<ul>
<li>CSS</li>
</ul>
<p>On a 2 options : surcharger les classes de la css SharePoint. Ou du css custom sur une content editor webpart, sur une custom master page ou un alternate css.</p>
<p>CoreV15 a encore plus de lignes de CSS !! 13000 lignes.</p>
<p>Pas de nouveauté, ils recommandent firebug ou F12 sur IE comme outil.</p>
<p><span style="text-decoration:underline;"><strong>//  full effort branding</strong></span></p>
<p>Cettte partie, c&rsquo;est tout le reste.</p>
<p>Il nous montre des sites avec design en SharePoint : renova, energizer, &#8230;</p>
<p>On peut avoir une charte qui masque complètement SharePoint.</p>
<p>C&rsquo;est awesome pour eux !</p>
<p>Mouais, pas nouveau.</p>
<p>Il nous montre le process pour créer des sites avec charte sur mesure, stroyboards, design, integration, etc. Bref, le process classique utilisé sur les projets web et en particuliers sur les projets SharePoint MCNEXT / plaza design, pas de révolution au niveau process.</p>
<p><strong>Custom master page :</strong></p>
<p>On peut utiliser la <a href="http://startermasterpages.codeplex.com">startermasterpages.codeplex.com</a></p>
<p><strong>Concernant les nouveautés WCM:</strong></p>
<p>La content search webpart est basée sur des display templates. Ceux ci sont basés sur du html/css situé dans la master page gallery.</p>
<p><span style="text-decoration:underline;"><strong>// SharePoint online branding</strong></span></p>
<p>Sur les small business plan :</p>
<p>On a un public facing website à disposition sur son O365. Il nous fait une démo de celui ci.</p>
<p>On a dans le ribbon des actions en plus pour changer le logo, on peut éditer la css. Il y a une gestion du footer qu&rsquo;on peut éditer, c&rsquo;est une zone texte basique. Plutot pas mal pour les small business pour faire son site internet, basique mais bien.</p>
<p>Aussi dispo sur les enterprise plan si j&rsquo;ai bien compris mais pour ceux ci, le publishing est activé donc on peut aller plus loin.</p>
<p>Fabien</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1039&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-creating-your-brand-in-sharepoint-2013-on-premise-or-in-the-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : SharePoint 2013 Upgrade Deep Dive</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-sharepoint-2013-upgrade-deep-dive/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-sharepoint-2013-upgrade-deep-dive/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 16:44:56 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1037</guid>
		<description><![CDATA[Session de 9h à 10h15 Sean Livingston Senior Program Manager Cette session permet de voir les différentes possibilités lors de l’upgrade, autant sur les sites (SPSite, SPWeb…), que les sites dits d’« Evaluation » (test du site mise à jour en 2013) que le déploiement de solution wsp. Pour commencer, Sean fait un point sur [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1037&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong>Session de 9h à 10h15 Sean Livingston Senior Program Manager</strong></em></p>
<p>Cette session permet de voir les différentes possibilités lors de l’upgrade, autant sur les sites (SPSite, SPWeb…), que les sites dits d’« Evaluation » (test du site mise à jour en 2013) que le déploiement de solution wsp.</p>
<p>Pour commencer, Sean fait un point sur le « Compatibility Level » et « Compatibility range ».</p>
<p><strong>Le Compatibility Level permet d’indiquer la version du site :</strong></p>
<ul>
<li>14 pour un site en 2010</li>
<li>15 pour un site en 2013</li>
</ul>
<p>Comme on l’a vu précédemment, la commande Get-SPSite permet de mettre en avant le compatibilityLevel de chaque site.</p>
<p>Par conséquent, tous les sites qui doivent être mise à jour sont les sites en compatibilityLevel à 14.</p>
<p>Les sous-site (SPWeb) sont obligatoirement dans la même version que celle de la collection de site.</p>
<p>Les fonctionnalités (features) peuvent être de la même version que le « compatibilityLevel » de la collection de site ou antérieur : On peut donc activer une feature 2010 sur un site 2013 mais pas l’inverse !</p>
<p>Le « CompatibilityRange » permet de donner une zone de « compatibilityLevel » : on définit la version minimal et maximal.</p>
<p>Dans le « Template Picker », ne sera affiché que les templates compatible avec le compatibilty range de la collection de site. Pour les sous-site, ne sera proposé que la version correspondant au « SPSite. compatibilityLevel ».</p>
<p>Il y a une notion de « UpgradeEvaluation » qui permet aux utilisateurs de faire une copie du site dans la nouvelle version. Peut être définie dans le SPWebApplication, et par SPSite.</p>
<p>Lors des migrations, attention à ne pas demander trop de mise à jour en même temps . Il vaut mieux le faire petit à petit, mettre les mises à jour en attente, mettre des quotas, faire un tri des migrations effectuées (supprimer les backups qui deviennent inutiles).</p>
<p>On va pouvoir, en PowerShell configurer tout à tas de chose. Get-SPSiteUpgradeSession =&gt; Montre les mises à jour en attente et indiquer celles qui sont terminées ou en « échec ». « Remove-SPSiteUpgradeSession » permet d’enlever une migration qui est en file d’attente.</p>
<p>Pour effectuer les mises à jour « Upgrade-SPSite » avec la possibilité de mettre les paramètres « –QueueOnly » pour mettre en file d’attente et « –Unthrottled » pour bypasser les limitations fixées de la BD de mises à jour.</p>
<p><strong>On peut mettre des limitations sur les mises à jour à plusieurs niveaux :</strong></p>
<ul>
<li>Par <strong>WebApplication</strong> , on peut mettre en place les quotas autant pour le stockage (UsageStorageLimit) que le nombre de sous site (SubWebCountLimit),</li>
<li>Par <strong>website (pool d’application)</strong> : « AppPoolConcurrentUpgradeSessionLimit »</li>
<li>Par <strong>base de données</strong> <strong>(SPContentDatabase)</strong> : « ConcurrentSiteUpgraeSessionLimit » permettant de fixer le nombre maximum de mise à jour en parallèle sur la base de données.</li>
</ul>
<p>On passe maintenant aux démonstrations. Dans l’exemple, il y a tout une série de sites en 2010 et en 2013 (via Get-SPSite avec CompatibilityLevel). Il demande la mise à jour d’un site en 15. Exécution de « Get-SPSiteUpgradeSessionInfo » permettant ainsi de voir que le site est bien en cours : la migration étant tellement rapide dans l’exemple qu’elle fut déjà finie ; on utilise alors le paramètre « –ShowCompleted ».</p>
<p>Maintenant est lancé la migration de tous les sites via Powershell (upgrade-SPSite avec le paramètre –QueueOnly). Le lancement de Get-SPSiteUpgradeSessionInfo permet donc de voir la progression de la mise à jour. Get-SPSite montre également que les sites passent en « CompatibilityLevel » à 15 au fur et à mesure.</p>
<p>Sur la SPSite, on peut définir « AlllowSelfServiceUpgrade ».</p>
<p>Les création des site de test (Site Collection Evaluation), permet de faire une copie du site pour faire la mise à jour. Si la base de données supporte les snapshot SQL, la migration utilise ce processus pour faire le backup et le clone. Sans le support du snapshot SQL, un backup du site est effectué puis le restore (avec le suffixe dans le nom du site « -Eval »). Le TimerJob permet de faire toutes les actions entre backup, copie, migration… Un nettoyage du backup peut finalement être fait après l’étape d’évaluation. Pour les sites d’évaluation, on indique le temps d’expiration (en jours) SPWebApplication.DaysToExpire (par défaut à30j).</p>
<p>Lors des mise à jour des solution, on peut indiquer le CompatibilityLevel (par défaut 14 et 15). Si on indique que 14, la solution sera déployé que dans le répertoire 14. Si on indique que « 14-15 », elle sera déployé à la fois dans le 14 et 15.</p>
<p>Sean nous explique le fonctionnement entre les répertoires 14, 15, les appels depuis le site (_layouts/14 ou 15). Il faudra récupérer le schéma pour bien voir tous les ponts entre le 14 et 15 en fonction de la version du wsp (indiqué à l’intérieur), de la version demandée lors du déploiement… Beaucoup de flèche et difficile à retranscrire pour le moment.</p>
<p>2013 ne supporte pas le « partial trusted code solution » (il faut faire du FullTrusted) ; ce qui ne veut pas dire que les sandbox ne fonctionnera plus dans SP2013.</p>
<p>Il est une fois de plus recommander de faire du claims en mode exclusif pour les nouvelles WebApplication.</p>
<p>Une session intéressante.</p>
<p>Jérôme</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1037&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-sharepoint-2013-upgrade-deep-dive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
		<item>
		<title>#SPC2012 : Building apps for Outlook and Outlook Web Apps</title>
		<link>http://mcnextpost.com/2012/11/17/spc2012-building-apps-for-outlook-and-outlook-web-apps/</link>
		<comments>http://mcnextpost.com/2012/11/17/spc2012-building-apps-for-outlook-and-outlook-web-apps/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 16:42:36 +0000</pubDate>
		<dc:creator>mcnextpost</dc:creator>
				<category><![CDATA[SharePoint Conference 2012]]></category>

		<guid isPermaLink="false">http://mcnextpost.com/?p=1035</guid>
		<description><![CDATA[Session de 9h à 10h15 animée par Andrew Salamatov (Program Manager Microsoft Exchange) La session démarre par une présentation rapide de la nouvelle version d&#8217;Outlook Web Apps sur Office 365 On voit que dans le corps d&#8217;un mail il y a une adresse et qu&#8217;il est possible de localiser celle-ci sur Bing Maps Même chose [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1035&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><b>Session de 9h à 10h15 animée par Andrew Salamatov (Program Manager Microsoft Exchange)</b></em></p>
<p>La session démarre par une présentation rapide de la nouvelle version d&rsquo;Outlook Web Apps sur Office 365</p>
<p>On voit que dans le corps d&rsquo;un mail il y a une adresse et qu&rsquo;il est possible de localiser celle-ci sur Bing Maps</p>
<p>Même chose pour un document en pièce jointe, on peut signer numériquement ce fichier avant de l&rsquo;envoyer (avec DocuSign)</p>
<p>Que ce soit Bing Maps ou DocuSign, ce sont des applications développées et intégrées à OWA</p>
<p>Les applications peuvent être intégrées dans les mails et les rendez-vous du calendrier, sont contextuels à l&rsquo;élément en cours de lecture et fonctionnent sur tous types de périphériques (ordinateur, tablette…)</p>
<p>Pour pouvoir développer des applications, il est nécessaire d&rsquo;avoir Exchange 2013 côté serveur et le manifest de l&rsquo;application déployé sur le serveur</p>
<p>Quand Outlook s&rsquo;ouvre, les manifest de toutes les applications sont chargés et en fonction des informations contenues dedans, sont appliqués à chaque élément quand l&rsquo;utilisateur lit un mail ou crée un RDV dans le calendrier</p>
<p>Les applications sont réalisées en HTML + Javascript</p>
<p><strong>Dans le manifest, le développeur peut définir les règles d&rsquo;activation avec des mots clés sous forme de noeud XML</strong></p>
<ul>
<li>ItemIs</li>
<li>RuleCollection</li>
<li>ItemHasAttachment</li>
<li>ItemHasRegularExpressionMatch</li>
<li>ItemHasKnwownEntity (ex: pour détecter les adresses)</li>
</ul>
<p>On retourne sur la démo où l&rsquo;on voit le manifest d&rsquo;une application qui va s&rsquo;exécuter que l&rsquo;on soit sur un mail ou un RDV, qui nécessite des permissions de lecture, dont la taille est fixée à 250px en hauteur…</p>
<p>Andrew remplace la règle de déclenchement pour définir qu&rsquo;elle ne fonctionnera que si le mail contient une URL et dont le nom de domaine est contoso.com (via une expression régulière)</p>
<p>Retour aux slides pour parler de l&rsquo;API &quot;Office JS&quot; qui permet de manipuler les objets (Office.context, .mailbox, .userProfile, .item)</p>
<p>On passe dans Visual Studio pour voir le code d&rsquo;une application qui initialise le contexte office et récupère dans la page HTML (via une syntaxe jQuery) le sujet du mail, l&rsquo;expéditeur et le destinataire (la syntaxe est relativement simple à comprendre et utiliser)</p>
<p><strong>Office JS peut communiquer de manière limitée avec les webservices Exchange</strong></p>
<ul>
<li>Recherche d&rsquo;éléments dans la boite à lettres</li>
<li>Création de RDV, mails, tâches et contacts</li>
<li>Envoyer des mails et des invitations</li>
</ul>
<p>On peut aussi afficher des formulaire Outlook depuis l&rsquo;API et toute la partie authentification est géré via la génération et l&rsquo;échange de tokens</p>
<p>On retourne sous Visual Studio pour compléter le code de l&rsquo;application vu précédemment en ajoutant ce qu&rsquo;il faut pour afficher le formulaire de création d&rsquo;un RDV ou faire un appel asynchrone aux webservices Exchange</p>
<p>Chaque application possède un property-bag pour stocker des données, cet espace se présentant sous la forme d&rsquo;un dictionnaire clé/valeur sauvegardé dans la boite à lettres de chaque utilisateur</p>
<p>Il existe également un property-bag &quot;per-app / per-item&quot; où chaque application peut stocker des données personnalisées sur un élément particulier (ex: un RDV dans le calendrier)</p>
<p>Chaque application doit déclarer dans le manifest de quelles autorisations elle a besoin (Restricted, ReadItem ou ReadWriteMailbox) afin de savoir ce qu&rsquo;elle aura le droit de faire ou non (ex: le mode restrictif n&rsquo;ouvre pas accès à toute l&rsquo;API Office JS)</p>
<p><strong>Les points d&rsquo;attention pour les développeurs </strong></p>
<ul>
<li>Affecter les autorisations uniquement nécessaires</li>
<li>Attention aux performances notamment sur les traitements exécutés au lancement d&rsquo;une application</li>
<li>Faire en sorte que l&rsquo;interface s&rsquo;adapte aux périphériques et aux contenus (ex: éviter les tailles fixes dans le HTML)</li>
</ul>
<p>Plus de ressources sur le sujet sont disponibles sur <a href="http://dev.office.com">http://dev.office.com</a></p>
<p>Bien que pas très poussée techniquement, cette session est très intéressante et ouvre pas mal de perspectives pour intégrer des applications métiers directement dans Outlook et OWA, si tenté que l&rsquo;on soit sur Exchange 2013 (une bonne raison de migrer rapidement)</p>
<p>Stéphane</p>
<br />Classé dans:<a href='http://mcnextpost.com/category/evenements/sharepoint-conference-2012/'>SharePoint Conference 2012</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcnextpost.com&#038;blog=27483043&#038;post=1035&#038;subd=mcnextpost&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcnextpost.com/2012/11/17/spc2012-building-apps-for-outlook-and-outlook-web-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ad888da572b5d99401fee42378b6760b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mcnextpost</media:title>
		</media:content>
	</item>
	</channel>
</rss>
