| SharePoint prend en charge nativement un certain nombre de fichiers.
Mais il est souvent nécessaire d'intégrer un nouveau type de fichier.
Cet article vous propose ma méthode pour intégrer un nouveau type de fichier (ici le format .gan associé au programme open source Gantt Project).
Tout ce dont vous aurez besoin, c'est :
- De l'icône du fichier
- Du type mime à prendre en charge
Avant :
J'ai uploadé un fichier .gant dans SharePoint. Si je l'ouvre, SharePoint et le navigateur ne savent pas comment traiter le fichier. Le contenu (dans notre cas, du XML) s'affiche « tel-quel » :
Etape 1 : L'image
Déposer le fichier icone (.png de 16px recommandé) dans le répertoire \14\TEMPLATE\IMAGES
Puis ajouter dans le fichier 14\TEMPLATE\XML\DOCICON.xml la ligne suivante
<Mapping Key="<extension>" Value="<nom du fichier icone>"/> soit dans notre cas : <Mapping Key="gan" Value="ganttproject_16.png"/>
Mauvaise nouvelle : Il faut appliquer ces 2 opérations à la main sur tous les frontaux web… Ou préparer une petite Feature qui mettra à jour les éléments.
Bon, maintenant un popup d'ouverture.
Passer en « modifier » fonctionne, mais la lecture seule, provoque le même comportement qu'un PDF sur un sharepoint natif : Je ne peux pas ouvrir, je dois enregistrer :
Etape 2 : Le content type
On connais bien la cause, IIS utilise un content type non autorisé dans les Mime Type de l'application web SharePoint. Ici 2 approches :
- La « rapide-mais-pas-top » : Passer la sécurité de l'application web de strict vers permissif
- La « mieux-mais-plus-lourde » : Autoriser le type Mime dans SharePoint. Pour cela un petit coup de powershell :
$app=get-SPWebApplication –identity <url> $app.AllowedInlineDownloadedMimeTypes.Add("mime-type") $app.Update()
Sauf qu'il n'y a pas de type mime à un .gan ! Qu'à cela ne tienne, on va en créer un dans IIS :
Avant de l'autoriser dans SharePoint :
$app=get-SPWebApplication –identity <url> $app.AllowedInlineDownloadedMimeTypes.Add("application/vnd.ganttproject") $app.Update()
Et là à l'ouverture/lecture Seule :
Tout ce petit monde se charge dans Gantt project, mais ce logiciel n'est pas capable d'écrire directement dans SharePoint.
C'est là que l'extraction vers les brouillons local prend son intérêt… Mais comment charger la boite de dialogue proposant cette extraction ? En précisant l'activeX à charger pour l'ouverture de l'extension dans le fichier DocIcon.xml :
<Mapping Key="gan" Value="ganttproject_16.png" OpenControl="SharePoint.OpenDocuments"/>
Voilà, vous pouvez maintenant ouvrir ou modifier n'importe quelle type de fichier (certes, moyennant une extraction locale) pour tout type de fichier.
|
| Voici bientôt une année que SharePoint 2010 est présent. Déjà les mises en place ont commencé profitant des nombreuses nouvelles fonctionnalités de cette version. La gestion centralisée des métadonnées, nommées métadonnées gérées en fait partie et se situe à la fois de la gestion du contenu et de la recherche sur l'offre SharePoint de la figure 1. Etudions quelques détails de cette fonctionnalité qui se place dans le contexte de la Taxonomie définissant la manière de classer de l'information, avec un plan de classement établit.
Fig 1 l'offre SharePoint
Le principe général est d'avoir un lieu centralisé de stockage et de consommation des métadonnées, ce qui complète les colonnes de choix en particulier. Pour cela, SharePoint 2010 utilise une application de service, remplaçante des Services Partagés (SSP).
A partir de l'administration centrale de SharePoint 2010, il est possible d'administrer cette application de services. Il y a des groupes, des ensembles de termes et des termes :
FIG 2 Administration centrale du service de métadonnées gérées.
Les groupes représentent la délégation d'administration, au sein de l'administration d'un site, on la retrouve sous le nom Magasin de Termes.
Fig 3 Groupe d'ensemble de termes
Les ensembles de termes sont des groupes de termes hiérarchiques. C'est l'élément consommé par les colonnes dans les listes.
Fig 4 Ensemble de termes
Un ensemble de termes peut être ouvert, dans ce cas les utilisateurs peuvent ajouter des éléments ou fermés, en lecture seule. Il peut aussi être disponible pour le marquage, c'est-à-dire le Tagging Social.
Les termes sont les mots qui seront utilisés dans les sites pour catégoriser le contenu. Il y a une possibilité de hiérarchies et d'autres étiquettes, qu'on peut comprendre comme des synonymes.
Fig 5 Termes, étiquettes et sous termes
Pour utiliser cette fonctionnalité, l'administrateur d'un site pour créer une colonne ou une colonne de site de type Métadonnées gérées.
Fig 6 Colonne métadonnées gérées.
Pour finir il doit spécifier quel ensemble de termes sera utilisé par la colonne. Il est possible de créer plusieurs colonnes de ce type, mais à une colonne correspond un seul ensemble de termes.
Fig 7 Choix du groupe de termes pour la colonne
Lors de la saisie d'un élément dans une liste, l'auteur choisi le terme qui peut lui être suggéré.
Fig 8 Choix d'un terme dans une liste.
L'utilisateur peut saisir des nouveaux termes si l'ensemble de termes est ouvert et si les paramètres de la colonne l'autorisent à le faire. Pour cela il choisit « Ajouter un nouvel élément » qui n'est pas présent si cette possibilité n'est pas activée.
Dans le cadre du multilingue, les termes peuvent être traduits.
Enfin il est possible de proposer la navigation par métadonnées qui permet de gérer des filtres et de faire apparaitre tout une hiérarchie de mots. Ici Sous Terme 1-1 et Sous Terme 1-2 étant sous Terme 1, le choix de Terme 1 fait aussi apparaitre les 2 autres sous termes.
Fig 9 Navigation par métadonnées
Il est possible d'importer des listes de mots et on trouve des fichiers Excel très bien conçus pour réaliser le fichier à importer.
Les métadonnées sont aussi utilisables dans le tagging social dont on voit ici une illustration dans la saisie des compétences de Mon Site ainsi que dans la possibilité de Balises et Notes où un utilisateur peut commenter une partie ou un contenu d'un site SharePoint.
Fig 10 Saisie de compétences suggérées par les métadonnées
Fig 11 Saisie d'un Tag (balise) par un utilisateur
Conclusion
Ceci n'est qu'un premier aperçu de cette fonctionnalité qui vient en complément avec les colonnes de choix et l'indexation. Les métadonnées centralisées et gérées permettent de mieux administrer les termes des collections de sites et d'en gérer la traduction.
Etienne LEGENDRE Article publié dans IT Pro Magazine fev 2011 www.itpro.fr
|
| Voici un petit état des lieux sur la façon de publier des CU sur un environnement de production.
Tout d'abord un petit rappel, une CU est d'après Microsoft « une mise à jour cumulée qui contient tous les correctifs à la demande importants publiés à ce jour. » (cf http://support.microsoft.com/kb/824684), on peut donc en conclure que pour déployer une CU, sauf mention contraire, il n'est pas nécessaire de déployer les CU précédentes.
L'Update center for SharePoint 2010 products (http://technet.microsoft.com/en-us/sharepoint/ff800847) nous donne la best practice suivante: We recommend that you always install SharePoint Foundation 2010 patches before you install SharePoint Server 2010 patches.
Note concernant le mirroring
L'assistant de configuration des produits SharePoint génère une erreur (du moins avec la CU de décembre) si des bases de données sont déclarées en mirroring dans SharePoint.
Pour être fonctionnel, il faut supprimer cette déclaration dans SharePoint. Attention, il n'est pas utile de supprimer le mirroring dans SQL (sauf pour la base de données lié au Web Analytics, car une mise à niveau du schéma de la base est réalisée, ce qui est impossible avec une base en mirroring)
Avant le passage du wizard, je lance donc les instruction powershell suivantes :
$db=get-SPDatabases foreach ($uneDB in $db){ $uneDB.AddFailoverServiceInstance("") $uneDB.Update() }
J'arrête le mirroring pour la base Webanalytics dans SQL Server.
Plan d'action
On arrive donc au final à la cinématique suivante :
Installation de la CU de décembre pour SharePoint foundation puis SharePoint Server (Sans lancer l'assistant de configuration SharePoint) sur :
- Les serveurs WFE (En jouant avec le load-balancer pour que le serveur sur lequel se passe l'installation soit hors production)
Les serveurs d'applications
Les serveurs de recherche
Reboot des serveurs
Suppression de la déclaration Sharepoint du mirroring SQL, via les cmdlet PowerShell suivantes :
$db=get-SPDatabases foreach ($uneDB in $db){ $uneDB.AddFailoverServiceInstance("") $uneDB.Update() }
Suppression du mirroring lié à Webanalytics (Dans SQL Manager)
Passage de l'assistant de configuration des produit SharePoint sur (cette étape va rendre les espaces sharepoint inaccessible)
Les serveurs d'applications
Les serveurs de recherche
Les serveurs WFE
Remise en place du mirroring SQL pour la base WebAnalytics
Re-déclaration du mirroring dans Sharepoint via la commande Powershell :
$db=Get-SPDatabase foreach ($uneDb in $db){ $unedb.AddFailoverServiceInstance("T-SQL-MR-02\SQLSTD2K8R2") $uneDb.Update() }
A noter que Microsoft documente le scenario "Ultime". L'idée est de mettre à jour les bases sur une ferme intermédiaire, pendant qu'une copie des bases est en lecture seule sur la production : http://technet.microsoft.com/en-us/library/ff806338.aspx |
| Si vous êtes un expert de SharePoint et que vous aimez travailler dans un environnement convivial et centré sur la personne, Solutions Pour SharePoint est l'endroit idéal pour vous. Notre entreprise a une forte orientation client et des normes de qualité élevées. Dans ce contexte, nous ouvrons un poste de Consultant SharePoint. Nous recherchons une personne avec une expérience significative en société de conseil ou en collectivité territoriale. Cette personne est chargée de travailler avec nos clients issus du secteur public pour comprendre leurs besoins et les aider à établir des solutions basées sur SharePoint. Le candidat aura un minimum de 5-7 ans d'expérience et au minimum une solide expérience en tant qu'utilisateur avec les produits et technologies SharePoint. Le sens du service et un excellent relationnel sont des atouts pour ce poste qui requiert de nombreux déplacements en région Rhône - Méditerranée. Le poste est ouvert sur notre site principal basé à Besançon ou sur la région Lyonnaise. Le Salaire est à négocier en fonction de l'expérience.
Pour toute question : 'recrutement' @ 'sosp.fr' |
|
Les produits et technologies SharePoint permettent, on l'a vu dans un dernier article, d'être une alternative de plus en plus crédible pour le remplacement du gestionnaire de fichiers avec la notion de listes où sont stockés entre autres des documents et des formulaires.
Une des caractéristiques des listes est d'être le lieu d'une programmation nommée flux de travail ou workflow. Les workflows sont donc utilisables dans les listes et les bibliothèques de documents. Ils peuvent aussi en être indépendants, ce qui est une nouveauté de cette version 2010.
Les workflows intégrés aux sites SharePoint 2010
SharePoint s'appuie sur le Framework .NET et donc possède un véritable moteur de workflow.
Plusieurs modèles de flux directement utilisables sans développement, mais juste par paramétrages des étapes pré programmées sont intégrés à l'offre SharePoint
Fig1 les modèles de workflow de WSS.
En voici la liste :
- Approbation: Envoi un document pour approbation. Les approbateurs peuvent approuver ou rejeter le document, réattribuer la tâche d'approbation, ou requérir la modification du document.
- Approbation de destruction: Gère l'expiration et la rétention de documents en autorisant les membres à conserver ou supprimer les documents expirés.
- Collecte des signatures: Rassemble les signatures nécessaires pour achever un document Office.
- Recueillir les commentaires : Envoie un document en révision. Les réviseurs peuvent insérer des commentaires qui seront compilés et envoyés au propriétaire du document à la fin du flux de travail.
- Suivi des problèmes: Ce flux de travail permet de suivre les problèmes.
- Trois états : Permettant la validation en 3 états d'un document (exemple : Brouillon, A valider, Validé). Les 3 états sont paramétrables dans une colonne ainsi que les approbateurs. Il s'agit donc d'une approbation double.
Ce sont les tâches qui permettent de stocker les phases des workflows et de les faire avancer avec l'assignation de celles-ci.
Le workflow avec SharePoint Designer 2010
SharePoint Designer 2010 permet l'administration complète des sites SharePoint. Il permet aussi de créer des workflows sans passer à des développements à l'aide de Visual Studio ou de produits complémentaires.
Microsoft a écouté les demandes et implémentés de nombreuses nouvelles fonctionnalités par rapport à celles de la version 2007, et aussi rendus les workflows éventuellement indépendants d'une liste et donc réutilisables.
Pour démarrer SharePoint Designer, une option se trouve dans Actions du site de SharePoint 2010.
Fig 2 Comment démarrer Microsoft Office SharePoint Designer 2010
SharePoint Designer 2010 permet de tout administrer dans les sites SharePoint 2010, mais nous ne regardons aujourd'hui que l'aspect Workflows.
Fig 3 Les Workflow avec Microsoft Office SharePoint Designer
Le but est, après l'avoir modélisé, de mettre le workflow sous forme d'étapes avec des actions et des conditions.
Fig 4 Actions et des Conditions dans SharePoint Designer
Les conditions permettent de savoir ce qui va déclencher une action et sont soit nominatives, soit temporelles ou avancées comme par exemple sur l'état d'une colonne (métadonnée). Il est possible de mettre plusieurs conditions avec des ET logiques.
Fig 5 Conditions d'un WorkFlow
Les actions permettent de nombreuses fonctionnalités comme envoyer un courrier électronique, de déplacer ou copier un ficher d'une bibliothèque à une autre, assigner une tâche, modifier une colonne, modifier des permissions. Par rapport à la version précédente, il y a ici un véritable progrès en termes de richesse fonctionnelle.
Fig 6 Quelques Actions d'un WorkFlow
On trouve des actions de listes avec des copies, des affectations de permissions, des actions d'attente, d'envoi de mail, d'arrêt de Workflow, de positionnement de variables, de manipulations de colonnes et même une action pour trouver le manager d'une personne.
Fig 7 Action de modification des permissions d'un utilisateur dans une liste
On peut créer plusieurs étapes de manière simple et graphique en important un workflow depuis Visio 2010, l'export est également possible.
Fig 8 Visio 2010 pour la conception des workflows
Un des reproches fait aux développements de Workflows avec SharePoint Designer 2007 était le fait que les flux étaient obligatoirement liés à une liste. Cela compliquait à la fois la maintenance et aussi la réutilisabilité des développements effectués. Il est toujours possible de procéder ainsi, mais il est maintenant possible de créer deux nouveaux types de flux :
Les flux de sites
Ce sont des flux créés et disponibles au niveau d'un site et non pas lié à une liste.
Fig 9 Workflow de site
Les flux réutilisables.
Ici, ce sont des flux non liés à une liste, éventuellement liés à un type de contenu et qui est développé indépendamment d'une liste. On doit utiliser dans ce cas des colonnes de sites via le type de contenu.
Fig 10 Workflow réutilisable
Il est ensuite possible d'associer un workflow à une liste, le rendant ainsi disponible dans cette liste comme les workflows « classiques ».
Fig 11 Associer un Workflow à une liste
Un autre gros progrès est l'impersonalisation, permettant d'effectuer une étape non pas dans le contexte de sécurité du demandeur du workflow, mais dans un contexte de sécurité supérieur, permettant alors à un workflow de faire ce qu'un utilisateur ne peut pas faire avec ses propres permissions. Ceci est idéal pour copier des données vers un lieu sécurisé et non accessible à l'utilisateur par exemple.
Fig 11 Etape d'Impersonalisation
Conclusion
Tout ceci permet aux administrateurs et concepteurs de sites SharePoint de programmer simplement des workflows répondant à de nombreuses demandes. Les gros progrès fonctionnels et de réutilisation des flux permettent d'adresser de nombreux cas. Il reste des solutions encore plus riches via Visual Studio et des Windows WorkFlow Fondations qui sont du ressort du développeur.
Etienne Legendre Consultant sur les technologies SharePoint
Article publié dans IT Pro Magazine www.itpro.fr Retrouvez l'auteur sur ce lien http://exchange.itpro.fr/Dossiers-par-Theme/2010/3/9/200893804-Video-:-Etienne-Legendre%2C-ou-comment-SharePoint-2010-fait-l-unanimite.htm
|
| With more than 1000 contacts, we reproduce the same issue with differents computers, with Outlook 2003/2007/2010 and with MOSS/SP2010.
Finally, we found a workaround for copying the contacts : batch copy by 100 contacts (from Outlook)
Then other users can take the list of contacts in sync and the issue has not appeared since.
I look forward to hearing from you. |
| Cet article est une traduction d'un billet de blog, l'article en français est visible ici : http://www.solutions-pour-sharepoint.fr/blog/Lists/Billets/Post.aspx?ID=33
The Error
Have you ever seen, after a reboot (or just after a while), the User Profile Synchronization Service (UPS) moving into "Stopped" status. And when trying to start it again the following events appears in the ULS:
Provisioning service instance User Profile Synchronization Service.
The service instance User Profile Synchronization Service is successfully provisioned.
UserProfileApplication.SynchronizeMIIS: Begin setup for '<My_User_Profile_Service_application_Name>'.
ILM Configuration: The miissku.exe process exited with error code -2146232060. Error: .
ILM Configuration: The ValidateMiisEncryptionKey process returned False.
Synchronization database is already initialized. Importing the encryption key for the database into the registry
ILM Configuration: The miissku.exe process exited with error code -2146232060. Error: .
UserProfileApplication.SynchronizeMIIS: Failed to configure MIIS pre database, will attempt during next rerun. Exception: System.Configuration.ConfigurationErrorsException: Une exception de type 'System.Configuration.ConfigurationErrorsException' a été levée. à Microsoft.Office.Server.UserProfiles.Synchronization.ILMPostSetupConfiguration.ImportMiisEncryptionKey(String encryptionKeyFileName) à Microsoft.Office.Server.Administration.UserProfileApplication.RestoreMiisEncryptionKey(ILMPostSetupConfiguration psc) à Microsoft.Office.Server.Administration.UserProfileApplication.SetupSynchronizationService(ProfileSynchronizationServiceInstance profileSyncInstance).
We saw this with severals customers, running different Windows versions (Windows 2008, Windows 2008R2), with different SQL Server versions (SQLServer 2008, SQLServer 2008R2) and even with different languages (French and English).
Common point to these SharePoint 2010 Farm : All of them uses an SQL alias to access SQL Server. It seems that FIM (Forefront Identity Manager) do not leverage this alias very well .
A workaround is to declare another SQL alias, on the client side. The idea id to access to the SQL instance with the default instance name.
We can achieve this with cliconfg.exe
Example
For this farm, default database Server is called sqlmoss\MOSS (The real instance name is <sql_server_name>\MOSS, sqlmoss\MOSS is an alias of < sql_server_name >\MOSS define on the SQL Server).
Figure 1: Alias set on the SQL Server, with SQL Config Manager
We have to create an alias on the SharePoint front-end to access to the SQL instance via the alias sqlmoss (without the \MOSS) :
Figure 2: Alias définit sur le serveur Frontal Sharepoint, avec cliconfg
Then all we got to do is start the UPS, et voilaaaa….
What the Hell …??
Weirdly, FIM write database configuration within the registry : HKLM\System\CurrentControlSet\services\FIMSynchronizationService\Parameters\
Here, there is a key called SQLInstance : Eureka ! All we got to do is configuring this key to make FIM query the right database … Well, it's not that easy ! On first UPS start attempt this key is flushed. Question is Why… Dunno.. Especially as once the SQL alias is set and the UPS started, the key has the right value !
To put it in a nutshell :
- If there is no Alias, FIM query the default instance name
- If an alias is set via cliconfg, FIM query the full instance name…Do you understand a thing ? I don't !
Figure 3 :SQLInstance key is flushed by FIM. But with an SQLAlias, this key obtains the right value.
To go further, I suggest you this amazing article of Spencer Harbar: http://www.harbar.net/articles/sp2010ups.aspx. Here is the article where I found the workaround : http://social.technet.microsoft.com/Forums/en-US/sharepoint2010setup/thread/50e92b07-66d5-4025-894b-efaf0e59330e/
|
| English readers, you'll find a (poorly) translated version of this article here : http://www.solutions-pour-sharepoint.fr/blog/Lists/Billets/Post.aspx?ID=34
L'anomalie
Avez-vous déjà eu à l'issu d'un redémarrage (ou simplement au bout d'un moment) le service de Synchronisation de profils (UPS) qui passe en statut arrêté, et toutes vos tentatives de redémarrage échouent avec ces entrées dans les Logs SharePoint :
Provisioning service instance Service de synchronisation de profil utilisateur.
The service instance Service de synchronisation de profil utilisateur is successfully provisioned.
UserProfileApplication.SynchronizeMIIS: Begin setup for '<Mon_Service_D'application_de_Profils'.
ILM Configuration: The miissku.exe process exited with error code -2146232060. Error: .
ILM Configuration: The ValidateMiisEncryptionKey process returned False.
Synchronization database is already initialized. Importing the encryption key for the database into the registry
ILM Configuration: The miissku.exe process exited with error code -2146232060. Error: .
UserProfileApplication.SynchronizeMIIS: Failed to configure MIIS pre database, will attempt during next rerun. Exception: System.Configuration.ConfigurationErrorsException: Une exception de type 'System.Configuration.ConfigurationErrorsException' a été levée. à Microsoft.Office.Server.UserProfiles.Synchronization.ILMPostSetupConfiguration.ImportMiisEncryptionKey(String encryptionKeyFileName) à Microsoft.Office.Server.Administration.UserProfileApplication.RestoreMiisEncryptionKey(ILMPostSetupConfiguration psc) à Microsoft.Office.Server.Administration.UserProfileApplication.SetupSynchronizationService(ProfileSynchronizationServiceInstance profileSyncInstance).
Nous avons constaté ce problème sur plusieurs de nos installations, avec des versions de Windows différentes (Windows 2008, Windows 2008R2), des versions de SQL différentes (SQLServer 2008, SQLServer 2008R2) et même dans des langues différentes (Français et Anglais).
Le point commun à toutes installations : Toutes utilisent un alias SQL pour accéder aux données sur un serveur SQL distant. Il semblerait que FIM (Forefront Identity Manager) ne gère pas bien du tout cet alias.
La solution passe par la déclaration d'un autre alias, coté client cette fois-ci, pour que celui-ci ait l'impression d'attaquer l'instance par défaut :
On réalise ça depuis le frontal SharePoint en appelant l'utilitaire cliconfg.exe
Exemple
Sur cette installation l'instance de la base de données SharePoint s'appelle sqlmoss\MOSS (Le vrai nom de l'instance est <nom_du_serveur_SQL>\MOSS, sqlmoss\MOSS est un alias de <nom_du_serveur_SQL>\MOSS définit au niveau du serveur SQL).
Figure 1: Alias définit sur le serveur SQL, dans SQL Config Manager
Nous devons créer un alias sur le serveur Frontal SharePoint pour faire en sorte de pouvoir accéder à cet instance SQL par l'alias sqlmoss (sans le \MOSS) :
Figure 2: Alias définit sur le serveur Frontal Sharepoint, avec cliconfg
Ensuite, on relance le service de synchronisation de profil et voilaaaa….
Pour aller plus loin…
Le plus étrange c'est que FIM stocke les informations d'accès à la base de données dans la base de registre : HKLM\System\CurrentControlSet\services\FIMSynchronizationService\Parameters\
On y trouve une clé nommée SQLInstance : Eureka ! Nous n'avons qu'à mettre à jour cette clé pour que FIM aille chercher la bonne base de données… Eh ben non ! A la première tentative de lancement du service, la valeur de cette clé est supprimée, et j'avoue ne pas comprendre pourquoi. D'autant qu'une fois l'alias SQL créé et le service de synchro de profil démarré, cette clé prend la bonne valeur !!
Si je résume, on ne déclare pas d'alias, FIM va chercher l'instance par défaut, si on déclare un alias via cliconfg, alors FIM va chercher le bon nom d'instance… Va comprendre !!
Figure 3 :La valeur de la clé SQLInstance semble écrasée par FIM. Cependant avec un alias SQL paramétré et l'UPS lancé, cette clé prend la bonne valeur
Pour aller plus loin, je vous recommande l'excellent article de Spencer Harbar: http://www.harbar.net/articles/sp2010ups.aspx, ou encore l'article MSDN d'où a surgit le contournement : http://social.technet.microsoft.com/Forums/en-US/sharepoint2010setup/thread/50e92b07-66d5-4025-894b-efaf0e59330e/
|
| Migrer d'une version à une autre d'un logiciel n'est pas simple. Le débat se complique lorsque cette migration en entraine d'autres. Le pré-requis de SharePoint Server 2010 sont le 64 bits pour Windows Server 2008 ou Windows Server 2008 R2 et un serveur SQL Server 2005 ou 2008 aussi en 64 bits le tout avec les derniers Services Pack mises à jour. Cet article présente comment migrer de MOSS 2007 à la version 2010 de SharePoint Server. Le principe est également valable pour la migration de WSS 3 vers SharePoint Foundation 2010.
Microsoft propose deux scénarios pour migrer MOSS 2007 vers SPS 2010.
Scénario de mise à jour en place
Cette méthode reste la plus simple. Elle a cependant deux inconvénients qui sont :
Il est à noter que Microsoft a prévu une possibilité de reprise sur incident de migration pour éviter de tout perdre.
Pour arriver à cela, il conviendra alors peut être de faire des migrations préalables de Windows Server, SQL Server et MOSS en 64 bits avant de voir la migration de MOSS vers SP 2010, pourtant but de la manipulation. Ainsi le passage d'une ferme de 32 bits MOSS 2007 à 64 bits SPS 2010 peut se voir avec les étapes suivantes :
Etape 1
: Migration des serveurs de bases de données en 64 bits. Cela nécessite de valider que les éventuelles autres applications soient aussi opérationnelles sur cette plateforme.
Etape 2 : Installation dans la même ferme des serveurs MOSS en 64 bits avec les rôles équivalents à ceux existant en 32 bits, puis passage dans la foulée des rôles des serveurs de 32 à 64 bits, puis retrait des serveurs 32 bits. Il est concevable de faire cela en étapes, les rôles frontaux en premier et les rôles serveurs d'applications ensuite. Il n'est pas prévu que Microsoft supporte des rôles de serveurs dans les 2 modes à la fois : 32 et 64 bits. Il faut donc migrer l'ensemble des serveurs d'un rôle à la fois comme par exemple le rôle serveur d'indexation.
La ferme est ainsi en 64 bits et peut alors être migrée directement en SPS 2010 car elle remplit les pré-requis. Il faut noter qu'une ferme SharePoint Server 2010 ne peut pas utiliser les services d'une ferme Office SharePoint Server 2007.
Il faudra aussi bien vérifier que l'ensemble du code ajouté dans la ferme peut être migré en 64 bits. Il n'est pas prévu de pouvoir exécuter du code 32 bits avec SP 2010. Pensez aussi à vos IFilters.
Fig 1 Migration d'une ferme de 32 en 64 bits
Scénario de migration par la base de contenu
Chaque base est déplacée sur la nouvelle ferme. De ce fait, la plateforme d'origine MOSS2007 n'est pas affectée.
L'inconvénient principal reste que cela nécessite le double de stockage SQL et l'installation de la nouvelle ferme SharePoint 2010. Mais à une époque où la virtualisation devient de plus en plus présente, ce type de problème devient de moins en moins important quant à mise à disposition de machines pour cela.
De plus, il faut également refaire complètement la configuration de la nouvelle ferme, créer les comptes et pools ainsi que les services partagés, qui ont bien évolués. Il convient aussi de reprendre l'ensemble des collections de sites dont celle consacrés à « Mon Site ». Par contre, au vu des pré-requis, de la nécessité probable d'avoir un nouveau matériel ou de provisionner une machine virtuelle nouvelle, il est prévisible que cette méthode sera souvent utilisée. Elle a aussi l'avantage de repartir sur des bases plus saines. C'est le moment de repenser vos comptes de services qui, je le constate souvent, sont souvent réduits à l'administrateur du domaine !
Fig 2 Le site d'origine MOSS 2007
Depuis le service pack 2 de MOSS, la commande STSADM se voit dotée d'une opération supplémentaire en vue de la migration. La syntaxe est : Stsadm –o preupgradecheck avec d'autres paramètres éventuels.
Cette commande permet de savoir les problèmes potentiels qui pourront être rencontrés lors de la future migration. Rien n'est inscrit dans la base de données, il s'agit juste d'informations mise à disposition de l'équipe de migration pour mieux planifier cette migration.
Fig 3 La commande preupgradecheck
Il faut alors sauvegarder la ou les bases de données de contenu à l'aide de l'outil intégré de SQL Server sur le serveur de bases de données sources. Avec SQL Server Express, il est possible d'installer les outils d'administration SQL Management Studioou de migrer de SQL Server Express vers SQL Server produit complet pour bénéficier de ces outils d'administration.
Ensuite, les fichiers de sauvegarde seront restorés sur la nouvelle infrastructure de base de données.
Il faut créer une application web dans la nouvelle architecture cible.
Pour vérifier les fonctionnalités ajoutées dans MOSS 2007 qui devront donc être aussi installées dans SPS2010, il faut utiliser un cmdlet Powershell:
Test-SPContentDatabase –Name <database name> -WebApplication <URL>
Il faudra alors vérifier la disponibilité de modules complémentaires avant la migration ou les désinstaller de la source avant la migration.
Enfin, il faut ajouter la base de contenu migrée à l'application we à l'aide de la commande stsadm: stsadm -o addcontentdb -url <URL> -databasename <database name>
Cette commande lance la migration de la base de données.
Fig 4 La migration terminée
Un statut de la migration se voit dans l'administration centrale :
Fig 5 La migration en cours dans l'administration centrale
Il faut ensuite procéder de la même manière pour les autres collections de sites telles que « Mon Site ».
Migration des versions précédentes de SharePoint : SPS 2003 et WSS2
Microsoft ne donne pas de moyens de faire les migrations de données venant d'une autre version que MOSS 2007. Néanmoins on peut toujours migrer de SPS2003 vers MOSS temporairement, puis de migrer par la base de données vers SPS 2010. Il est à noter que WSS2 et SPS 2003 n'étaient qu'en 32 bits et que SPS2010 et SPF 2010 ne sont qu'en 64 bits. Cela fait deux migrations, mais évite de tout refaire.
La migration du visuel
A la fin de la migration des données, par défaut SPS2010 reprend le visuel de la ferme MOSS d'origine. On peut ensuite migrer le look. Pour cela, chaque administrateur de site peut tester puis faire évoluer vers le nouveau visuel.
Fig 6 La mise à jour visuelle dans l'administration de la collection de sites
Il reste ensuite à valider le fonctionnement et surement à régler quelques problèmes, refaire certaines configuration comme les BCS par exemple et on obtient alors le nouveau portail SharePoint 2010.
Fig 7 Le portail migré en SPS 2010
Migration des postes clients
Les prés-requis pour le navigateur sont Internet Explorer 7, Internet Explorer 8 et Firefox 3.x. Internet Explorer 6 n'est pas supporté pour SharePoint Server 2010 et SharePoint Foundation.
SharePoint Designer doit être en version 2010, cela ne posera aucun problème car Microsoft rendra disponible gratuitement cette future version.
Comme toujours, la dernière version d'Office permettra de mieux profiter des nouvelles fonctionnalités dont la possibilité du mode déconnecté, bien plus performant avec SharePoint Workspace qu'avec Outlook. Néanmoins les anciennes versions pourront rendre encore bien des services performants.
Conclusion
La migration est un vrai travail à planifier et à jouer plusieurs fois pour tout valider. Certains autres éditeurs ont déjà annoncé leur produit pour cela.
Bien sûr Solutions pour SharePoint a étudié l'ensemble des scénarios de migration et pourra vous assister sur ce projet.
Article publié dans IT Pro Magazine mars 2010 www.itpro.fr
Retrouvez l'auteur sur ce lien http://exchange.itpro.fr/Dossiers-par-Theme/2010/3/9/200893804-Video-:-Etienne-Legendre%2C-ou-comment-SharePoint-2010-fait-l-unanimite.htm |
| Voici les étapes à suivre pour prendre en charge l'indexation PDF avec SharePoint 2010 avec l'IFilter Adobe. Certes cet IFilter n'est peut-être pas le plus performant (voir le test de Jie Li) mais il a l'avantage d'être gratuit.
Sur le Frontal Web :
- Aller sur http://www.adobe.com/misc/linking.html et enregistrer l'image pdficon_small.gif (17x17px) dans \14\TEMPLATE\IMAGES.
- Ouvrir le fichier 14\TEMPLATE\XML\DOCICON.XML et dans la section <ByExtension> ajouter la ligne <Mapping Key="pdf" Value="pdficon_small.gif"/>
- Dans certains cas le fichier peut être verrouillé. Dans ce cas, il faut couper les services de publication web pour enregistrer la modification.
- Ouvrir l'application de service de recherche et dans le menu « Types de fichier » ajouter l'extension PDF.
- Lancer un IISReset.
Sur le Serveur d'indexation :
- Installer l'IFILTER PDF 64 bits d'adobe : http://www.adobe.com/support/downloads/detail.jsp?ftpID=4025
- Ouvrir l'éditeur de registre, aller dans HKLM\SOFTWARE\Microsoft\Office Server\14.0\Search\Setup\ContentIndexCommon\Filters\Extension\
- Créer une nouvelle clé nommée « .pdf » et modifier sa valeur à {E8978DA6-047F-4E3D-9C78-CDBE46041603}
- Relancer les service de recherches
- net stop osearch14 && net start osearch14
- Relancer une indexation complète
D'où sort cette valeur de clé {E8978DA6-047F-4E3D-9C78-CDBE46041603} ? Il s'agit de l'identificateur CLSID du PDF Filter d'Abobe. Cette valeur est visible dans la base de registre : Rechercher la chaine « PDF Filter », le premier résultat remonté doit être une clé située dans HKEY_CLASSES_ROOT\CLSID\{E8978DA6-047F-4E3D-9C78-CDBE46041603}, c'est ce CLSID qui permet de cibler la DLL d'adobe pour l'indexation.

|
Afficher dans le navigateur Web /blog/_layouts/VisioWebAccess/VisioWebAccess.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 0x0 0x1 FileType vdw 255 Gérer les abonnements /_layouts/images/ReportServer/Manage_Subscription.gif /blog/_layouts/ReportServer/ManageSubscriptions.aspx?list={ListId}&ID={ItemId} 0x80 0x0 FileType rdl 350 Gérer les sources de données /blog/_layouts/ReportServer/DataSourceList.aspx?list={ListId}&ID={ItemId} 0x0 0x20 FileType rdl 351 Gérer les datasets partagés /blog/_layouts/ReportServer/DatasetList.aspx?list={ListId}&ID={ItemId} 0x0 0x20 FileType rdl 352 Gérer les paramètres /blog/_layouts/ReportServer/ParameterList.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType rdl 353 Gérer les options de traitement /blog/_layouts/ReportServer/ReportExecution.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType rdl 354 Gérer les plans d'actualisation du cache /blog/_layouts/ReportServer/CacheRefreshPlanList.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType rdl 355 Afficher l'historique du rapport /blog/_layouts/ReportServer/ReportHistory.aspx?list={ListId}&ID={ItemId} 0x0 0x40 FileType rdl 356 Afficher les éléments dépendants /blog/_layouts/ReportServer/DependentItems.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType rsds 350 Modifier la définition de la source de données /blog/_layouts/ReportServer/SharedDataSource.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType rsds 351 Afficher les éléments dépendants /blog/_layouts/ReportServer/DependentItems.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType smdl 350 Gérer les rapports consultables à l'aide de clics /blog/_layouts/ReportServer/ModelClickThrough.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType smdl 352 Gérer la sécurité des éléments de modèles /blog/_layouts/ReportServer/ModelItemSecurity.aspx?list={ListId}&ID={ItemId} 0x0 0x2000000 FileType smdl 353 Régénérer le modèle /blog/_layouts/ReportServer/GenerateModel.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType smdl 354 Gérer les sources de données /blog/_layouts/ReportServer/DataSourceList.aspx?list={ListId}&ID={ItemId} 0x0 0x20 FileType smdl 351 Charger dans le Générateur de rapports /blog/_layouts/ReportServer/RSAction.aspx?RSAction=ReportBuilderModelContext&list={ListId}&ID={ItemId} 0x0 0x2 FileType smdl 250 Modifier dans le Générateur de rapports /_layouts/images/ReportServer/EditReport.gif /blog/_layouts/ReportServer/RSAction.aspx?RSAction=ReportBuilderReportContext&list={ListId}&ID={ItemId} 0x0 0x4 FileType rdl 250 Modifier dans le Générateur de rapports /blog/_layouts/ReportServer/RSAction.aspx?RSAction=ReportBuilderDatasetContext&list={ListId}&ID={ItemId} 0x0 0x4 FileType rsd 250 Gérer les options de mise en cache /blog/_layouts/ReportServer/DatasetCachingOptions.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType rsd 350 Gérer les plans d'actualisation du cache /blog/_layouts/ReportServer/CacheRefreshPlanList.aspx?list={ListId}&ID={ItemId}&IsDataset=true 0x0 0x4 FileType rsd 351 Gérer les sources de données /blog/_layouts/ReportServer/DataSourceList.aspx?list={ListId}&ID={ItemId} 0x0 0x20 FileType rsd 352 Afficher les éléments dépendants /blog/_layouts/ReportServer/DependentItems.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType rsd 353 Détails de la conformité javascript:commonShowModalDialog('{SiteUrl}/_layouts/itemexpiration.aspx?ID={ItemId}&List={ListId}', 'center:1;dialogHeight:500px;dialogWidth:500px;resizable:yes;status:no;location:no;menubar:no;help:no', function GotoPageAfterClose(pageid){if(pageid == 'hold') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/hold.aspx?ID={ItemId}&List={ListId}'); return false;} if(pageid == 'audit') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/Reporting.aspx?Category=Auditing&backtype=item&ID={ItemId}&List={ListId}'); return false;} if(pageid == 'config') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/expirationconfig.aspx?ID={ItemId}&List={ListId}'); return false;}}, null); return false; 0x0 0x1 ContentType 0x01 898 Modifier dans le navigateur /_layouts/images/icxddoc.gif /blog/_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 FileType xsn 255 Modifier dans le navigateur /_layouts/images/icxddoc.gif /blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document 255 Modifier dans le navigateur /_layouts/images/icxddoc.gif /blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.2 255 Modifier dans le navigateur /_layouts/images/icxddoc.gif /blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.3 255 Modifier dans le navigateur /_layouts/images/icxddoc.gif /blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.4 255 Afficher dans le navigateur /blog/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsx 255 Afficher dans le navigateur /blog/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsm 255 Afficher dans le navigateur /blog/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsb 255 Afficher dans le navigateur /blog/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType ods 255 Historique des versions de l’ensemble de documents javascript:SP.UI.ModalDialog.ShowPopupDialog('{SiteUrl}/_layouts/DocSetVersions.aspx?List={ListId}&ID={ItemId}') 0x0 0x0 ContentType 0x0120D520 330 Envoyer à un autre emplacement javascript:GoToPage('{SiteUrl}/_layouts/docsetsend.aspx?List={ListId}&ID={ItemId}') 0x0 0x0 ContentType 0x0120D520 350 |
|
|
|
Afficher dans le navigateur Web /blog/_layouts/VisioWebAccess/VisioWebAccess.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 0x0 0x1 FileType vdw 255 Gérer les abonnements /_layouts/images/ReportServer/Manage_Subscription.gif /blog/_layouts/ReportServer/ManageSubscriptions.aspx?list={ListId}&ID={ItemId} 0x80 0x0 FileType rdl 350 Gérer les sources de données /blog/_layouts/ReportServer/DataSourceList.aspx?list={ListId}&ID={ItemId} 0x0 0x20 FileType rdl 351 Gérer les datasets partagés /blog/_layouts/ReportServer/DatasetList.aspx?list={ListId}&ID={ItemId} 0x0 0x20 FileType rdl 352 Gérer les paramètres /blog/_layouts/ReportServer/ParameterList.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType rdl 353 Gérer les options de traitement /blog/_layouts/ReportServer/ReportExecution.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType rdl 354 Gérer les plans d'actualisation du cache /blog/_layouts/ReportServer/CacheRefreshPlanList.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType rdl 355 Afficher l'historique du rapport /blog/_layouts/ReportServer/ReportHistory.aspx?list={ListId}&ID={ItemId} 0x0 0x40 FileType rdl 356 Afficher les éléments dépendants /blog/_layouts/ReportServer/DependentItems.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType rsds 350 Modifier la définition de la source de données /blog/_layouts/ReportServer/SharedDataSource.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType rsds 351 Afficher les éléments dépendants /blog/_layouts/ReportServer/DependentItems.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType smdl 350 Gérer les rapports consultables à l'aide de clics /blog/_layouts/ReportServer/ModelClickThrough.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType smdl 352 Gérer la sécurité des éléments de modèles /blog/_layouts/ReportServer/ModelItemSecurity.aspx?list={ListId}&ID={ItemId} 0x0 0x2000000 FileType smdl 353 Régénérer le modèle /blog/_layouts/ReportServer/GenerateModel.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType smdl 354 Gérer les sources de données /blog/_layouts/ReportServer/DataSourceList.aspx?list={ListId}&ID={ItemId} 0x0 0x20 FileType smdl 351 Charger dans le Générateur de rapports /blog/_layouts/ReportServer/RSAction.aspx?RSAction=ReportBuilderModelContext&list={ListId}&ID={ItemId} 0x0 0x2 FileType smdl 250 Modifier dans le Générateur de rapports /_layouts/images/ReportServer/EditReport.gif /blog/_layouts/ReportServer/RSAction.aspx?RSAction=ReportBuilderReportContext&list={ListId}&ID={ItemId} 0x0 0x4 FileType rdl 250 Modifier dans le Générateur de rapports /blog/_layouts/ReportServer/RSAction.aspx?RSAction=ReportBuilderDatasetContext&list={ListId}&ID={ItemId} 0x0 0x4 FileType rsd 250 Gérer les options de mise en cache /blog/_layouts/ReportServer/DatasetCachingOptions.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType rsd 350 Gérer les plans d'actualisation du cache /blog/_layouts/ReportServer/CacheRefreshPlanList.aspx?list={ListId}&ID={ItemId}&IsDataset=true 0x0 0x4 FileType rsd 351 Gérer les sources de données /blog/_layouts/ReportServer/DataSourceList.aspx?list={ListId}&ID={ItemId} 0x0 0x20 FileType rsd 352 Afficher les éléments dépendants /blog/_layouts/ReportServer/DependentItems.aspx?list={ListId}&ID={ItemId} 0x0 0x4 FileType rsd 353 Détails de la conformité javascript:commonShowModalDialog('{SiteUrl}/_layouts/itemexpiration.aspx?ID={ItemId}&List={ListId}', 'center:1;dialogHeight:500px;dialogWidth:500px;resizable:yes;status:no;location:no;menubar:no;help:no', function GotoPageAfterClose(pageid){if(pageid == 'hold') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/hold.aspx?ID={ItemId}&List={ListId}'); return false;} if(pageid == 'audit') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/Reporting.aspx?Category=Auditing&backtype=item&ID={ItemId}&List={ListId}'); return false;} if(pageid == 'config') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/expirationconfig.aspx?ID={ItemId}&List={ListId}'); return false;}}, null); return false; 0x0 0x1 ContentType 0x01 898 Modifier dans le navigateur /_layouts/images/icxddoc.gif /blog/_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 FileType xsn 255 Modifier dans le navigateur /_layouts/images/icxddoc.gif /blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document 255 Modifier dans le navigateur /_layouts/images/icxddoc.gif /blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.2 255 Modifier dans le navigateur /_layouts/images/icxddoc.gif /blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.3 255 Modifier dans le navigateur /_layouts/images/icxddoc.gif /blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.4 255 Afficher dans le navigateur /blog/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsx 255 Afficher dans le navigateur /blog/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsm 255 Afficher dans le navigateur /blog/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsb 255 Afficher dans le navigateur /blog/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType ods 255 Historique des versions de l’ensemble de documents javascript:SP.UI.ModalDialog.ShowPopupDialog('{SiteUrl}/_layouts/DocSetVersions.aspx?List={ListId}&ID={ItemId}') 0x0 0x0 ContentType 0x0120D520 330 Envoyer à un autre emplacement javascript:GoToPage('{SiteUrl}/_layouts/docsetsend.aspx?List={ListId}&ID={ItemId}') 0x0 0x0 ContentType 0x0120D520 350 |
|
|
|