Archives d’auteur : Samuel Levesque

À propos de Samuel Levesque

Analyste-programmeur/Architecte organique

Erreur trompeuse lors de l’installation de SharePoint 2016 avec AutoSPInstaller

Introduction

Si vous avez déjà monté vous même vos serveurs SharePoint 2010/2013/2016, vous connaissez sans doute le projet Open Source AutoSPInstaller. Idéalement, il est préférable d’installer SharePoint en anglais puis d’ajouter les différents Language Packs. Vous rencontrerez également certaines erreurs si votre système d’exploitation est installé dans une autre langue que l’anglais comme expliqué dans ce billet.

Symptômes

Vous obtenez le message suivant : – Managed Metadata Service Application Proxy already provisioned.
– Granting rights to Metadata Service Application:
– DOMAIN\NomDuCompte…
PS>Erreur de terminaison (Grant-SPObjectSecurity) : « L’argument Rights n’est pas valide. Les valeurs valides sont : Magasin de termes avec accès en lecture, Magasin de termes avec accès en lecture et accès limité en écriture, Magasin de termes avec accès total »
Grant-SPObjectSecurity : L’argument Rights n’est pas valide. Les valeurs valides sont: Magasin de termes avec accès en
lecture, Magasin de termes avec accès en lecture et accès limité en écriture, Magasin de termes avec accès total
Au caractère E:\AutoSPInstaller\SP\AutoSPInstaller\AutoSPInstallerFunctions.ps1:2536 : 21
+ … Grant-SPObjectSecurity $metadataServiceAppSecurity -Princ …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument : (Microsoft.Share…tObjectSecurity:SPCmdletGrantObjectSecurity) [Grant
-SPObjectSecurity], SPException
+ FullyQualifiedErrorId : Microsoft.SharePoint.PowerShell.SPCmdletGrantObjectSecurityPS>Erreur de terminaison () : «  – Error provisioning the Managed Metadata Service Application »
>> Erreur de terminaison () : «  – Error provisioning the Managed Metadata Service Application »
————————————————————–
– Script halted!
– Error provisioning the Managed Metadata Service Application
Press any key to exit…

Cause

À première vue, l’erreur semble indiquer un problème de d’autorisations puisque l’applet de commande utilisé est Grant-SPObjectSecurity et que l’erreur semble être l’argument « Rights ».

Cependant, si on regarde attentivement le fichier AutoSPInstallerFunctions.ps1 qui s’occupe de créer le service Managed Metadata Service Application à la ligne suivante :
Grant-SPObjectSecurity $metadataServiceAppSecurity -Principal $accountPrincipal -Rights « Full Access to Term Store »
On voit que l’argument « Rights » est en anglais « Full Access to Term Store » alors que dans le message d’erreur on voit que les valeurs valides sont : « Magasin de termes avec accès en lecture, Magasin de termes avec accès en lecture et accès limité en écriture, Magasin de termes avec accès total »

Résolution

Première résolution:

Modifier la langue d’affichage de Windows afin de mettre l’anglais par défaut :

Langue

Deuxième résolution :

Modifier les lignes « Grant-SPObjectSecurity » du fichier AutoSPInstallerFunctions.ps1 afin de mettre la valeur du paramètre « Rights » correspondant à la langue d’affichage de votre système d’exploitation.

Exemple :

En-Us
Grant-SPObjectSecurity $profileServiceAppPermissions -Principal $currentUserAcctPrincipal -Rights « Full Control »

Fr-Ca

Grant-SPObjectSecurity $profileServiceAppPermissions -Principal $currentUserAcctPrincipal -Rights « Contrôle total »

Conférencier @ SharePoint Saturday Montréal 2017

Introduction

Le 13 mai 2017 aura lieu au Collège Maisoneuve, 2701 Rue Nicolet, Montréal l’événement SharePoint Saturday Montréal. J’aurai la chance d’y participer à nouveau en tant que conférencier.

Vous travaillez de près ou de loin avec SharePoint, Office 365 ou Azure? Joignez-vous à un groupe d’architectes, de développeurs, d’intégrateurs, de gestionnaires de communautés et des gens d’affaires gravitant autour de SharePoint lors de de la tenue de la 5e édition du SharePoint Saturday Montréal.
Plusieurs conférenciers de qualité sont annoncés avec des présentations de DEV/ITPRO/User/Business.
Voici le lien pour vous inscrire :
inscrire

Conclusion

C’est un super événement GRATUIT, à ne pas manquer avec plein de goodies, du smoked meat et d’excellents conférenciers.

Présentation du programme de reconnaissance MVP à la 5e édition du Bootcamp Azure Global, Québec

Introduction

Le 22 avril 2017 avait lieu à L’ENAP, l’événement Québec Azure BootCamp 2017. J’ai eu la chance de participer à cet événement en tant que conférencier avec Simran Chauldry.

La 5e édition du Bootcamp Azure Global, Québec a été organisé par Microsoft. Il s’agit d’une journée où des collaborateurs partagent leur expertise pour former des communautés dédiées à la plateforme Azure et accélérer l’adoption et l’exploitation de l’infonuagique (« Cloud »).

Près de 150 personnes se sont inscrit à cet événement « Sold out » dont plusieurs experts ont présenté 11 conférences de niveau 200 et 300 et ont partagé leur passion pour la plateforme Azure.

Jason Hermitage était présent pour présenter le Keynotes qui était très pertinent sur le positionnement de Microsoft.

Ma présentation

Titre :  Programme de reconnaissance MVP

Si vous ne pouviez y être voici la présentation :

Conclusion

Un autre succès pour la 5e édition de l’événement complet que l’on espère revoir l’an prochain! Si vous avez des questions concernant le programme de reconnaissance MVP n’hésitez pas à communiquer avec moi!

Utiliser une validation de colonne pour valider le numéro de téléphone de vos contacts

Similairement à mon billet précédent, je vous propose une autre formule afin de valider le numéro de téléphone de vos contacts.

On peut ajouter une formule directement dans la colonne de type « Une seule ligne de texte » nommé « Téléphone mobile » :

Les fonctions utilisés dans la formule doivent être dans la même langue que votre site (Français dans ce cas) :

=SI(ESTVIDE([Téléphone mobile]);VRAI;
ET(
 ESTERREUR(TROUVE(";";[Téléphone mobile];1));
 ESTERREUR(TROUVE(".";[Téléphone mobile];1));
 ESTERREUR(TROUVE("p";[Téléphone mobile];1));
 ESTERREUR(TROUVE("#";[Téléphone mobile];1));
 ESTERREUR(TROUVE(",";[Téléphone mobile];1));
 ESTERREUR(TROUVE("(";[Téléphone mobile];1));
 ESTERREUR(TROUVE(")";[Téléphone mobile];1)))
)

La formule ci-haut n’est pas aussi restrictive qu’une expression régulière mais elle constitue tout de même un bon départ :

  • Ignore la validation si le champ est vide;
  • Ne doit pas contenir le caractère « ; »;
  • Ne doit pas contenir le caractère « . »;
  • Ne doit pas contenir le caractère « p »;
  • Ne doit pas contenir le caractère « # »;
  • Ne doit pas contenir le caractère « , »;
  • Ne doit pas contenir le caractère « ( »;
  • Ne doit pas contenir le caractère « ) »;

Par la suite, entrer le message d’erreur désiré et tester le tout :

ValidationTelephoneMsg

 

3 choses que chaque programmeur devrait savoir

Introduction

Dans mes tâches de tous les jours, je dois modifier régulièrement du code et bien évidemment il y a des cas où on se dit vraiment « WTF? ».  Dans ce billet, je vais vous présenter quelque points à considérer afin d’améliorer la qualité de votre code et ainsi réduire le nombre de WTFs/minute lorsque vos collègues vous relirons.

Un commentaire sur les commentaires!

Assurez-vous que vos commentaires clarifient votre code et qu’il ne le rende pas plus obscur. Ajouté uniquement des commentaires pertinents expliquant ce que le code est censé accomplir. Vos commentaires d’en-tête devraient donner à n’importe quel programmeur assez d’information pour utiliser votre code sans avoir à le lire, tandis que vos commentaires au niveau des lignes devraient aider le développeur suivant à le corriger ou à le modifier. Comme avec toute autre forme d’écriture, il y a une habileté à écrire de bons commentaires et une grande partie de la compétence consiste à savoir quand ne pas les écrire.

À éviter :

'Instancie un nouveau dataset
Dim ds As New System.Data.DataSet

'Retourne la liste
Return listXYZ

Ne pas ignorer les erreurs!

Ignorer une erreur n’est pas une stratégie gagnante pour avoir du code solide. En fait, c’est tout simplement de la paresse. Peu importe la probabilité que vous pensez qu’une erreur se retrouve dans votre code, vous devriez toujours la vérifier et toujours la retourner. Vous ne gagnez pas de temps si vous ne le faites pas. Vous conservez des problèmes potentiels pour l’avenir.

À éviter :

try {
    // ...do something...
}
catch (...) {} // ignore errors

N’ayez pas peur de briser des choses!

Tout le monde a sans aucun doute travaillé sur un projet où le code était de qualité douteuse. Le système est mal architecturé et changer une chose vient toujours en briser une autre. Chaque fois que quelqu’un doit ajouter un module, l’objectif est de changer le moins de chose possible et de se croiser les doigts que ça ne plante pas. Bref, c’est l’équivalent de jouer une partie de Jenga.

N’ayez pas peur du code. Investir le temps de refactoriser le code va se payer plusieurs fois au cours du cycle de vie de l’application. Un avantage supplémentaire est que l’expérience de votre équipe face au système vous rend un peu plus experts en sachant comment il devrait fonctionner. En plus, travailler sur un système que vous détestez n’est pas la façon dont tout le monde devrait avoir à passer leur temps.

Saviez-vous que Microsoft offre des licences gratuites d’Office 365 et de SharePoint serveur pour les OBNL qualifiés?

Oui vous avez bien lu des licences gratuites! Il faut bien évidemment que l’organisme soit qualifié. Pour être éligible à Office 365 pour les associations, l’organisme doit avoir un statut d’association reconnu dans votre pays et signer une stratégie de non-discrimination.

Il y a plus de 161 000 OSBL au Canada (2013). Environ 85 000 d’entre eux sont des organismes de bienfaisance enregistrés (reconnus par l’Agence du revenu du Canada). C’est au Québec qu’il existe le plus grand nombre d’organismes, soit 46 000 par rapport
à 161 000 au Canada, ce qui revient à 617 organismes par 100 000 habitants et à 29 % de
tous les organismes au Canada. Le secteur de la bienfaisance et sans but lucratif représente en moyenne 7,8 % du PIB du Canada, ce qui est supérieur à la contribution de l’industrie du commerce de détail et proche de celle du secteur des mines, de l’extraction de pétrole et de gaz.

Pourtant, plusieurs de ces organismes utilisent des méthodes de travail manuelles ou des technologies obsolètes. De plus, rare sont les compagnies qui accompagnent les associations pour améliorer leur productivité.

Le lien suivant est le point de départ pour toute demande de licences gratuites pour les associations :

Demarre.PNG

Microsoft est associé avec TechSoup pour vérifier l’admissibilité au programmes de don de produits Microsoft. Il faut donc que votre organisation dispose d’un jeton de validation TechSoup afin de se connecter et de participer.

Il existe plusieurs packages O365 pour les associations dont certains sont gratuits ou à tarif réduit.

Le package Office 365 E1 pour les associations est à mon avis le plus intéressant car il est gratuit, il offre la possibilité d’héberger un site intranet SharePoint et il possède un nombre illimité de licences utilisateur.

Plusieurs OBNL fonctionnent avec des technologies obsolètes et ils ignorent tout le potentiel qu’O365 pourrait leur apporter en terme de productivité. À quand les offres de service des compagnies informatique pour les OBNL utilisant O365 ?

Référence

Rapport OBNL Québec

Rapport Institut Mallet Canada

Afficher des tuiles comme résultats de recherche à l’aide d’un modèle d’affichage

J’ai récemment présenté une session intitulé « Construisez votre intranet avec Microsoft Office 365 sans code » dans laquelle j’ai expliqué comment faire une composante « Qui s’en occupe? ». Cette composante permet d’afficher le ou les répondants pour une activité précise dans l’organisation en utilisant une liste personnalisé, la recherche et un modèle d’affichage.

Cet article va donc détailler les différentes étapes pour construire votre propre composante avec des modèles de recherche dans Office 365 :

QuiSenOccupe1.PNG

Cas d’utilisation

L’utilisateur recherche un sujet selon la première lettre et ensuite il clique sur la tuile afin d’afficher le ou les répondants.

QuiSenOccupe2

QuiSenOccupe4

Comment réaliser cette composante ?

La première étape consiste à créer une liste personnalisé afin d’entreposer les différents sujets :

QuiSenOccupe5

Ensuite, dans les configuration du service de recherche, il suffit de lier la crawled property « ows_LinkTitle » avec une propriété géré « RefinableString » de votre choix. Puisqu’on ne peut pas créé de nouvelles propriétés dans le service de recherche d’O365, Microsoft en a créé suffisamment pour qu’on puisse les réutiliser. Par la suite, ajouter alias sur cette propriété afin de l’identifier et de l’utiliser plus tard dans la zone de recherche.

QuiSenOccupe3

Puis, dans la page de composants web part dans lequel on veut ajouter la composante « Qui s’en occupe? », on ajoute 2 web parts de type Éditeur de contenu.

Pour permettre l’affichage des filtres par lettres, la première aura un lien vers un fichier contenant ceci :

La deuxième web part aura un lien vers un fichier contenant ceci :

Comme vous avez pu le remarquer il y a une référence à un fichier CSS qu’il faut déposer dans Style Library et ensuite ajuster le chemin.

Ensuite, il faut ajouter deux web parts « Zone de recherche » et « Résultats de la recherche » et configurer la dernière avec cette requête (Ajuster au besoin selon le URL de votre site) :

QuiSenOccupe6

Finalement, il reste à télécharger le modèle d’affichage de tuiles dans la galerie des pages maîtres et à configurer le modèle dans la web part :

QuiSenOccupe7

URL : /sites/intranet/_catalogs/masterpage/Forms/AllItems.aspx –> Display Templates –> Search

Conclusion

Il est possible qu’il y ai un certain délais (jusqu’à 24h) avant que les modifications aux propriétés gérés soient prisent en compte dans O365. Malgré cela, il est possible d’arriver à un résultat visuellement intéressant et performant sans avoir à développer plusieurs jours dans Visual Studio.

Références

Modèle d’affichage de tuiles

Barre de filtre avec les lettres