J’ai eu l’occasion de présenter la session « Power Pages : low code .. really ? » à l’aMS de Singapore et de Kuala Lumpur, qui sont une révision révisée de celle réalisé en Juin 2022. Notamment des informations importantes au niveau licencing.
Archives de l’auteur : Julien
Les slides de ma session « Power Pages : no/low code .. really ? »

J’ai eu l’occasion de présenter la session « Power Pages : low code .. really ? » le 21 Juin 2022 à Aix En Provence lors de l’aMS Aix / Marseille. Cet évènement, composé d’une bonne base de MVPs tous aussi sympa les uns que les autres (c’est aussi un critère de sélection non ? 🙄) était sous le signe de la convivialité et de partage. Alors dans cette tradition, voici mes slides (c’est une première version … tout comme Power Pages …) :
PnPJS 3.2.0 est sortie et liste des projets PnP recommandés
Ce n’est pas tout frais, mais ça valait le coup de s’arrêter quelques minutes dessus. Comme tout développeur SharePoint, la librairie PnPJS est l’une des pierres angiulaires de nos projets => pnp/pnpjs: Fluent JavaScript API for SharePoint and Microsoft Graph REST APIs (github.com)
C’est avec plaisir que la version 3.2.0 est sortie corrigeant quelques petites coquilles que j’avais pu voir lors de mes derniers projets, et apporte aussi quelques nouveautés qui nous faciliteront la vie pour la suite, je vous laisse consulter le CHANGELOG pour voir de quoi il en retourne spécifiquement.
Je vous partage aussi quelques uns des projets de PnP que je suis activement :
- Core :
- SPFx :
- La mine d’or des exemples de SPFx : pnp/sp-dev-fx-webparts: SharePoint Framework web part, Teams tab, personal app, app page samples (github.com)
- Générateur de projets : pnp/generator-spfx: Open-source generator to extend the capabilities of the Microsoft SPFx generator (github.com)
- Pour les développements Teams :
- Power Platform / SP :
- PowerShell :
- Les indispensables Cmdlets pour M365 : pnp/powershell: PnP PowerShell (github.com)
25 ans pour le meilleur IDE du moment : Visual Studio 🎂🍰
Ce mois de Mars 2022 marque les 25 ans d’un des meilleurs IDE du moment (et des dernières années) pour les projets .NET et bien d’autres : (sans suspens) Visual Studio !
Revivez l’expérience et l’histoire de l’évolution de cet IDE au travers d’un site dédié pour cet occasion ➡️Anniversaire Visual Studio 25e (microsoft.com)
Depuis, devenu une famille de produit, Visual Studio a donné lieu à une version plus légère et orientée éditeur de code multi-plateforme/multil-langage avec l’excellent Visual Studio Code, l’éditeur de code du moment tout lange de développement confondu comme le révèle le sondage stackoverflow de 2021 ➡️🤩https://insights.stackoverflow.com/survey/2021#section-most-popular-technologies-integrated-development-environment

Pour rappel, Visual Studio est disponible gratuitement dans sa version Community téléchargeable ici : Visual Studio 2022 Community Edition – Télécharger la dernière version gratuite (microsoft.com)
Bon anniversaire Visual Studio !
SharePoint maintenance mode to track webpart issue
As a SharePoint consultant, I often bump into issues with pages in SharePoint OnPrems and Online. To resolve these cases, we – SP consultants – need to deploy our super magic powers (what our clients think we have) 🙂
Most of the page, an error in a page is due to a bug in a webpart raising an exception, sometimes it’s a delegate control but this is another story for another blog post. Here is one magic trick to debug the pages and identify which webpart is running wrong.
SharePoint OnPrems / Classic
Starting from SP 2010, and for next version of OnPrems installation, just add ?contents=1 at the end of the page URL. This will open the page in maintenance mode and display all webparts in this page.
Modern SharePoint
Like a lots of developers I tried the old way and failed … thanks to this Microsoft support article, it gives you the right URL suffix to add to your URLs to enter the web part maintenance mode
In the address line of your browser, append ?maintenancemode=true to the end of the URL for the page. Checkout the Environment property in the mainten
You can find more documentation on these links ➡️ Maintenance mode for client-side web parts | Microsoft Docs and ➡️ Open and use the web part maintenance page (microsoft.com)
Bonus : how to disable SPFx web parts ans extensions
Ayt the end of this nice Microsoft article there is a golden tips ➡️ « If you need to troubleshoot a SharePoint page to see if there is a SharePoint Framework extension or web part causing issues you can append ?disable3PCode=1 to the URL to disable loading of SPFx components » that helped me a lot recently, so I share it to you.
Master piece : all useful SharePoint URLs
You can find every useful SharePoint URLs to save your life every day with SharePoint developement :Useful SharePoint URLs – SharePoint Stuff
Windows 11 : mes raccourcis préférés avec la touche Windows
Exploiter toute la puissance d’un système d’exploitation, c’est avant tout de savoir se servir des raccourcis de celui-ci, et Windows en est particulièrement doté !
Je vous livre quelques uns de mes raccourcis avec la touche Win(dows), mais sachez que Microsoft a doté chacune des lettres de notre alphabet avec des raccourcis et même des combinaisons avec Ctrl & co … c’est pour dire la culture des raccourcis de cet OS !
Win + D : Afficher er masquer le bureau
Win + E : Ouvrir l’explorateur de fichiers
Win + I : Ouvrir les Paramètres Windows
Win + M : Réduire toutes les fenêtres
Win + P : Sélection du mode de présentation

Win + . OU Win + ;➡️ vous ouvre le panneau des emoticons + GIF + le raccourci indispensable pour les messageries😍

Win + flèches : positionner la fenêtre en cours sur l’écran ou les écrans
Win + espace : changer de langue du clavier
Pour les autres raccourcis, vous pourrez trouver ceux-ci et bien plus encore dans la Docs de Microsoft ➡️ Raccourcis clavier dans Windows (microsoft.com)
[20th anniversary of .NET] Best of C# : null operators
In this series, I’d like to share with you my best experiences with .NET / C# and the best evolutions the .NET team brings us over the time.
Today I’d like to talk about null operators 🙂 C# provides 3 operatrs to make it easier to with with nulls :
- Null conditional operator
- Null coalescing operator
- Null coalescing assignment (new in C# 8)
You can find more details about these operators in this great book => Amazon.fr – C# 10 in a Nutshell: The Definitive Reference – Albahari, Joseph – Livres
Null-conditional operator
The ?. operator is also called the Elvis operator and as originally introduced in C# 6. It allows you to call methods and access members like the . operator except that if the left operand is null, the expression is evaluate to null without throwing the killer exception ‘NullReferenceException‘.
string s = null;
string sUpper = sb?.ToUpper(); // sUpper is null
The only condition is that the final expression/assignment is capable of accepting a null (exit all value type) :
string s = null;
int lengthS = s?.Length; // Won't compile
Then use a Nullable :
string s = null;
int? lengthS = s?.Length; // Ok
Null-coalescing operator
The very useful ?? operator tells to return the value of the left operand if it’s not null, else return the specify value (right operand – example : default value)
string s = null;
string sDefault = s ?? "My default value"; // sDefault is "My default value"
Another good use of this operator is to check an assignment and rise an exception if null (example in ASP.NET controller or anywhere else) :
_companyRepository = companyRepository ?? throw new ArgumentNullException(nameof(companyRepository));
Null-coalescing assignment (C# 8)
The ??= operator assigns a variable only if it’s not null. So it’s a sugar syntax to replace this :
if (s != null) s = "Hello world";
with this :
s ??= "Hello world";
Add data attributes in Razor view with HTML helper method
With HTML 5 and JS frameworks heavily using data attributes within HTML tags, Razor views could cause you a headache without this little tip for attributes.
For example Data attributes have a syntax like « data-* ». If you add the hyphen within the name of an attribute in your anonymous class, Razor engine will interprets it simply as a minus sign … and won’t compile !
To add a Data attribute (or any other attribute with a hyphen within the name) within an HTML helper, you should replace the hyphen with an underscore. Hence, Razor engine will understand this and converts it to a hyphen in the HTML output.
@Html.DropDownList("Country", ViewData["Countries"] as SelectList, new { @class = "selectpicker", data_style = "btn-form-control" })
The HTML output will be:
<select id=”Country” name=”Country” class="selectpicker" data-style=”btn-form-control” />
O365 Echange ‘Your organization does not allow external forwarding’ issue
If you are receiving the following error in your email :
Delivery has failed to these recipients or groups:
Your message wasn’t delivered because the recipient’s email provider rejected it.
And then when you go into the message content you read this error:
Remote Server returned ‘550 5.7.520 Access denied, Your organization does not allow external forwarding. Please contact your administrator for further assistance. AS(7555)’
You might be experiencing the new security change Microsoft implemented on late 2020, which by default blocks forwarding to external recipients on a mailbox.
To resolve this issue, go to https://protection.office.com and go under Threat Management > Policy > Anti-Spam Policy > Anti-spam outbound policy > Edit Policy :



The future forward messages to any mailbox will now be process successfully by O365. Cuation : the settings can take several minutes to take effect.
Migrer vos applications vers .NET 5 avec l’assistant de migration (partie 1)
Même si toutes ne savent pas comment, les sociétés qui développent des logiciels souhaitent suivre le rythme effréné des montées de version, que ce soit des OS, des frameworks ou des bibliothèques. L’objectif est de ne pas être larguer, de pouvoir parfois gagner en performances, résoudre quelques problèmes de sécurité du framework ou encore permettre d’utiliser des technologies plus modernes (HTTP 2, etc) lors de ces passages.
Pour que les équipes de développement, l’objectif sera surtout de suivre les évolutions, d’identifier les breaking change, de refactoriser le code et également de garder la motivation de maintenir, ce qui deviendra quoiqu’on en veuille : ‘une vieille application à maintenir’.
Pour la société, l’objectif sera surtout de minimiser le coût de cette montée de version, qui si elle n’apporte pas de valeur ajoutée pour les utilisateurs (hormis de meilleurs performances et une sécurité parfois renforcé, concernant le framework en lui-même aka cela n’améliorera pas votre code dans ce domaine par magie) permet d’avoir sur le marché des ressources plus à même d’intervenir sur des technologies récentes qu’anciennes.
MAIS … la stratégie est souvent de faire un POC de mise à niveau d’un projet ‘pas trop gros’, et de se dire ‘voici une application A’, on essaye, et si ça ne coûte pas trop cher on fera l’application B, C, etc. Le biais dans lequel l’entreprise risque de tomber est qu’elle pensera que calculer le temps d’upgrade d’un premier projet, sur lequel l’équipe essuie tous les plâtres de la migration, pourra servir de référence de charges/coûts pour les suivantes. C’est du bon sens … mais c’est ce qui se passe tous les jours, dans d’autres domaines dans les sociétés …
En résumé, la migration d’un projet vers .NET Core 5 prendra beaucoup du temps et la décision sera de ne pas migrer les projets amenant une montagne de ‘vieilles applications à maintenir’ à être maintenu par des personnes dont la motivations égalera celle d’un paresseux au repos. Mais tada … Microsoft à créer l’upgrade assistant pour vous afin de vous aider au maximum à pouvoir évaluer la migration et vous assister dans cette tâche, surtout sur les parties simples et fastidieuses d’une migration de code. Mais attention, cet outil est votre assistant et le magicien c’est vous, pas lui !
Installation
L’assistant de migration est un outil dotnet (dotnet tool) qu’il suffit d’installer de cette manière :
Troubleshooting
Erreur “Impossible de charger l’index de service pour la source “/ “Unable to load the service index for source”
Cette erreur arrive lorsque vous avez déclaré un source Nuget dans votre configuration Nuget dont l’outil n’arrive pas à accéder (mauvaise URL, credentials outdated, etc).
Dans ce cas, rien de plus simple vous avez deux options :
1. Utilisez l’argument --ignore-failed-sources
dans la ligne de commande
2. Supprimer la source dans votre fichier de configuration Nuget qui se trouve dans :