<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>PuntoBello Blog</title>
    <link>https://www.puntobello.ch/en/</link>
    <description>Recent content on PuntoBello Blog</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <managingEditor>nello@dandrea.ch (Nello D&#39;Andrea)</managingEditor>
    <webMaster>nello@dandrea.ch (Nello D&#39;Andrea)</webMaster>
    <copyright>Nello D&#39;Andrea &amp; Nicole Beck Dekkara</copyright>
    <lastBuildDate>Sun, 19 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.puntobello.ch/en/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>MCP365 Explorer — Work IQ Word: creating, reading, and annotating documents</title>
      <link>https://www.puntobello.ch/en/nello/mcp365_explorer_word/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/mcp365_explorer_word/</guid>
      <description>&lt;p&gt;Part seven of the &lt;a href=&#34;https://www.puntobello.ch/en/nello/mcp365_explorer_intro/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;MCP365 Explorer series&lt;/a&gt;&#xA; takes on the smallest server we&amp;rsquo;ve covered yet: &lt;code&gt;mcp_WordServer&lt;/code&gt;, with just four tools. Four calls, and that&amp;rsquo;s the whole surface. But those four cover something historically painful: programmatic Word document manipulation with a simplicity that feels almost suspicious until you try it.&lt;/p&gt;&#xA;&lt;p&gt;Anyone who has built document automation knows the landscape: the Open XML SDK to write &lt;code&gt;.docx&lt;/code&gt; files, parsing the ZIP-packaged XML to read them, the Graph API to upload or download, authentication plumbing, and a whole category of edge cases around comments, revisions, and content controls. The Work IQ Word server collapses that into four calls: create a document, read its contents, add a comment, reply to a comment. No SDKs, no XML.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MCP365 Explorer — Work IQ OneDrive: browse, search, and manage personal files</title>
      <link>https://www.puntobello.ch/en/nello/mcp365_explorer_onedrive/</link>
      <pubDate>Sun, 12 Apr 2026 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/mcp365_explorer_onedrive/</guid>
      <description>&lt;p&gt;Part six of the &lt;a href=&#34;https://www.puntobello.ch/en/nello/mcp365_explorer_intro/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;MCP365 Explorer series&lt;/a&gt;&#xA; takes on a brand-new server: &lt;code&gt;mcp_OneDriveRemoteServer&lt;/code&gt;, the &lt;strong&gt;dedicated&lt;/strong&gt; Work IQ OneDrive MCP server. Until recently, OneDrive operations were bundled into &lt;code&gt;mcp_ODSPRemoteServer&lt;/code&gt; alongside SharePoint — a combined 17-tool surface that tried to cover both worlds. That combined server is now deprecated in favor of two focused servers: &lt;code&gt;mcp_SharePointRemoteServer&lt;/code&gt; (covered in &lt;a href=&#34;https://www.puntobello.ch/en/nello/mcp365_explorer_sharepoint_lists/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;part 2&lt;/a&gt;&#xA;) and this one, scoped squarely to the user&amp;rsquo;s personal OneDrive.&lt;/p&gt;&#xA;&lt;p&gt;The split is visible right in the tool names: &lt;code&gt;findFileOrFolderInMyDrive&lt;/code&gt;, &lt;code&gt;createFolderInMyOnedrive&lt;/code&gt;, &lt;code&gt;readSmallTextFileFromMyOnedrive&lt;/code&gt;, &lt;code&gt;getFileOrFolderMetadataInMyOnedrive&lt;/code&gt;. Microsoft isn&amp;rsquo;t being coy — these only touch your personal drive, and the names say so out loud. For an LLM picking a tool at runtime, and for a developer grepping schemas, that explicit scope is genuinely helpful.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Introducing PANTOUM — automated SPFx upgrades, inside guardrails</title>
      <link>https://www.puntobello.ch/en/nello/pantoum_no_more_manual_spfx_upgrades/</link>
      <pubDate>Thu, 09 Apr 2026 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/pantoum_no_more_manual_spfx_upgrades/</guid>
      <description>&lt;p&gt;A bit over a year ago, a post on this blog called &lt;a href=&#34;https://www.puntobello.ch/en/nello/upgrading_spfx_solutions/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Upgrading SPFx Solutions&lt;/a&gt;&#xA; walked through the manual process of upgrading a SharePoint Framework solution: generate the M365 CLI upgrade report, work through it instruction by instruction, deal with the third-party packages the CLI does not touch, fight the build until it passes. That post ended with &amp;ldquo;tips &amp;amp; tricks from real-world experience&amp;rdquo; — which was a polite way of saying &lt;em&gt;these are the workarounds you find the hard way&lt;/em&gt;. It is still accurate. It is just no longer the fastest path.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MCP365 Explorer — Work IQ Teams: teams, channels, and messages</title>
      <link>https://www.puntobello.ch/en/nello/mcp365_explorer_teams/</link>
      <pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/mcp365_explorer_teams/</guid>
      <description>&lt;p&gt;Microsoft 365 rests on three pillars: mail with Exchange and Outlook, files with SharePoint and OneDrive, and real-time collaboration with Microsoft Teams. After covering &lt;a href=&#34;https://www.puntobello.ch/en/nello/mcp365_explorer_mail/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Mail&lt;/a&gt;&#xA; and &lt;a href=&#34;https://www.puntobello.ch/en/nello/mcp365_explorer_sharepoint_lists/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;SharePoint&lt;/a&gt;&#xA; earlier in the &lt;a href=&#34;https://www.puntobello.ch/en/nello/mcp365_explorer_intro/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;MCP365 Explorer series&lt;/a&gt;&#xA;, this post explores the third: &lt;code&gt;mcp_TeamsServer&lt;/code&gt; — one of the largest Work IQ MCP servers with 28 tools covering teams, channels, chats, messages, members, and search, all behind a single scope (&lt;code&gt;McpServers.Teams.All&lt;/code&gt;).&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;As with the other servers in this series, the Work IQ MCP servers are in &lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-agent-365/tooling-servers-overview&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;preview&lt;/a&gt;&#xA; and may change.&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Azure Container App Jobs: Run Maintenance Tasks Without the Overhead</title>
      <link>https://www.puntobello.ch/en/fabian/sharepoint-maintenance-jobs/</link>
      <pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/fabian/sharepoint-maintenance-jobs/</guid>
      <description>&lt;p&gt;Every Microsoft 365 tenant accumulates operational debt over time. Groups without owners. Site collections with a single admin who left the company. App registrations nobody remembers creating. Keeping on top of this kind of governance drift used to mean either a full-blown Azure Function, a Logic App with limited PowerShell support, or a scheduled runbook that you forgot to maintain. None of these feel quite right for a task that should run for a few minutes, produce a report, and disappear.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MCP365 Explorer — Work IQ Mail: search, draft, send, and reply</title>
      <link>https://www.puntobello.ch/en/nello/mcp365_explorer_mail/</link>
      <pubDate>Mon, 30 Mar 2026 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/mcp365_explorer_mail/</guid>
      <description>&lt;p&gt;This is the fourth post in the &lt;a href=&#34;https://www.puntobello.ch/en/nello/mcp365_explorer_intro/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;MCP365 Explorer series&lt;/a&gt;&#xA;. If you haven&amp;rsquo;t read the introduction, start there — it covers the setup, the protocol, and the key finding that MCP servers can be called directly from SPFx without a backend.&lt;/p&gt;&#xA;&lt;p&gt;Today: the &lt;strong&gt;Work IQ Mail server&lt;/strong&gt; (&lt;code&gt;mcp_MailTools&lt;/code&gt;) — 22 tools for email management.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Preview notice:&lt;/strong&gt; The Agents 365 Tools and MCP servers described in this post are part of the &lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-agent-365/tooling-servers-overview&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Microsoft Agent 365 tooling servers preview&lt;/a&gt;&#xA;. These features are in preview, may change, and should not be used in production workloads.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MCP365 Explorer — Work IQ Calendar: events, meetings, and availability</title>
      <link>https://www.puntobello.ch/en/nello/mcp365_explorer_calendar/</link>
      <pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/mcp365_explorer_calendar/</guid>
      <description>&lt;p&gt;This is the third post in the &lt;a href=&#34;https://www.puntobello.ch/en/nello/mcp365_explorer_intro/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;MCP365 Explorer series&lt;/a&gt;&#xA;. If you haven&amp;rsquo;t read the introduction, start there — it covers the setup, the protocol, and the key finding that MCP servers can be called directly from SPFx without a backend.&lt;/p&gt;&#xA;&lt;p&gt;Today: the &lt;strong&gt;Work IQ Calendar server&lt;/strong&gt; (&lt;code&gt;mcp_CalendarTools&lt;/code&gt;) : 13 tools for events, meetings, invitations, and availability.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Preview notice:&lt;/strong&gt; The Agents 365 Tools and MCP servers described in this post are part of the &lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-agent-365/tooling-servers-overview&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Microsoft Agent 365 tooling servers preview&lt;/a&gt;&#xA;. These features are in preview, may change, and should not be used in production workloads.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building a Delivery Platform for the Microsoft Power Platform: Lessons from My Master&#39;s Thesis</title>
      <link>https://www.puntobello.ch/en/fabian/power-platform-delivery-platform/</link>
      <pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/fabian/power-platform-delivery-platform/</guid>
      <description>&lt;p&gt;At the end of 2025, I completed my master&amp;rsquo;s thesis on a topic that had been bothering me at work for quite some time: how to build a professional, automated &lt;strong&gt;delivery platform&lt;/strong&gt; for the Microsoft Power Platform in an enterprise context. In this post, I want to share the story behind this work, what I actually built, and the key lessons that might help you if you are trying to move from &amp;ldquo;prototypes&amp;rdquo; to robust, production‑ready solutions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MCP365 Explorer — Work IQ SharePoint: 35 tools for sites, lists, and files</title>
      <link>https://www.puntobello.ch/en/nello/mcp365_explorer_sharepoint_lists/</link>
      <pubDate>Mon, 23 Mar 2026 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/mcp365_explorer_sharepoint_lists/</guid>
      <description>&lt;p&gt;This is the second post in the &lt;a href=&#34;https://www.puntobello.ch/en/nello/mcp365_explorer_intro/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;MCP365 Explorer series&lt;/a&gt;&#xA;. If you haven&amp;rsquo;t read the introduction, start there, it covers the setup, the protocol, and why MCP servers can be called directly from SPFx without a backend.&lt;/p&gt;&#xA;&lt;p&gt;Today we look at the &lt;strong&gt;Work IQ SharePoint server&lt;/strong&gt; (&lt;code&gt;mcp_SharePointRemoteServer&lt;/code&gt;), with 35 tools, it is the most complete Work IQ MCP server available at this point. It covers sites, lists, columns, items, document libraries, files, folders, sharing, and sensitivity labels. For those of us who have been working with SharePoint for years, this is the one we&amp;rsquo;ve been waiting for — our beloved SharePoint, now accessible through a standardized protocol that an LLM can discover and call at runtime.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MCP365 Explorer — A developer toolkit for Agents 365 Tools</title>
      <link>https://www.puntobello.ch/en/nello/mcp365_explorer_intro/</link>
      <pubDate>Thu, 19 Mar 2026 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/mcp365_explorer_intro/</guid>
      <description>&lt;p&gt;When I started exploring the new Microsoft 365 MCP servers — exposed through the &lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-agent-365/tooling-servers-overview&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Agents 365 Tools&lt;/a&gt;&#xA; — one of the first questions was: what do I actually need to call them from an SPFx webpart? Do I need an Azure Functions proxy? A backend to handle the MCP protocol? It turns out the answer is simpler than expected: &lt;strong&gt;you can call them directly from the browser&lt;/strong&gt;. Just &lt;code&gt;fetch&lt;/code&gt;, a bearer token from SPFx&amp;rsquo;s &lt;code&gt;AadTokenProvider&lt;/code&gt;, and the JSON-RPC protocol.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Painting GriMoire</title>
      <link>https://www.puntobello.ch/en/nello/painting_grimoire/</link>
      <pubDate>Mon, 16 Mar 2026 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/painting_grimoire/</guid>
      <description>&lt;p&gt;I will not introduce GriMoire here. Not because it doesn&amp;rsquo;t deserve it — it is by far the most advanced solution I have ever implemented — but because this post is about something else. It is about the experience of building it. About how the act of implementing software has quietly shifted from pure engineering into something that, at times, feels closer to painting.&lt;/p&gt;&#xA;&lt;h2 id=&#34;a-year-between-two-hackathons&#34;&gt;A Year Between Two Hackathons&lt;/h2&gt;&#xA;&lt;p&gt;A year ago I participated in the SharePoint Hackathon 2025. I used AI back then too — ChatGPT, Copilot, occasionally Aider with a local model — but it wasn&amp;rsquo;t embedded in my flow. I used it when I was stuck. I asked it questions. I copied answers and adapted them. The AI was a reference book I opened when needed and closed when done.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SharePoint Online Storage: Usage, Main Consumers, and Optimization Strategies</title>
      <link>https://www.puntobello.ch/en/fabian/sharepoint-storage-optimization/</link>
      <pubDate>Thu, 26 Feb 2026 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/fabian/sharepoint-storage-optimization/</guid>
      <description>&lt;h1 id=&#34;sharepoint-online-storage-usage-main-consumers-and-optimization-strategies&#34;&gt;SharePoint Online Storage: Usage, Main Consumers, and Optimization Strategies&lt;/h1&gt;&#xA;&lt;p&gt;Most organizations treat SharePoint Online as infinitely scalable, until a warning appears in the SharePoint Admin Center. That&amp;rsquo;s exactly what happened with a tenant I manage. With over &lt;strong&gt;8,000 Microsoft 365-licensed users&lt;/strong&gt;, the tenant had a total available storage of approximately &lt;strong&gt;81 TB&lt;/strong&gt;. Everything felt comfortable, until it wasn&amp;rsquo;t.&lt;/p&gt;&#xA;&lt;p&gt;A few weeks ago, the &lt;strong&gt;Storage Usage Alert&lt;/strong&gt; appeared in the SharePoint Admin Center. This alert fires at &lt;strong&gt;80% usage&lt;/strong&gt;, which for the tenant meant roughly &lt;strong&gt;65 TB&lt;/strong&gt;. I pulled the trend data and found the tenant was growing at &lt;strong&gt;~1.7 TB per month&lt;/strong&gt;. That left about &lt;strong&gt;9 months of runway&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring the Microsoft 365 Copilot APIs with an SPFx Webpart</title>
      <link>https://www.puntobello.ch/en/nello/copilot_api_showcase/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/copilot_api_showcase/</guid>
      <description>&lt;p&gt;At Build 2025, Microsoft introduced the Copilot Retrieval (now GA) and Search (public preview) APIs, giving developers programmatic access to the Microsoft 365 Semantic Index and the AI orchestration behind Copilot. The docs explain &lt;em&gt;what&lt;/em&gt; these APIs do — but nothing replaces seeing the raw requests and responses yourself. So I built an SPFx webpart for exactly that: a tool to tweak every parameter, compare results across both APIs, and build real intuition for how Copilot searches your tenant.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Evolution of the PuntoBello Installer</title>
      <link>https://www.puntobello.ch/en/fabian/evolution-of-the-puntobello-installer/</link>
      <pubDate>Wed, 04 Feb 2026 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/fabian/evolution-of-the-puntobello-installer/</guid>
      <description>&lt;p&gt;We regularly evolve our internal tools as our projects, artefacts, and delivery requirements change. One of these tools is the &lt;strong&gt;PuntoBello Installer&lt;/strong&gt; — a developer utility based on &lt;strong&gt;Docker&lt;/strong&gt; and &lt;strong&gt;PowerShell&lt;/strong&gt; that helps us build and deploy SharePoint Framework (SPFx) and related Microsoft 365 artefacts in a consistent and automated way.&lt;/p&gt;&#xA;&lt;p&gt;This post explains:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;what the PuntoBello Installer is,&lt;/li&gt;&#xA;&lt;li&gt;what has changed since its first version in September 2024,&lt;/li&gt;&#xA;&lt;li&gt;what impact these changes have, and&lt;/li&gt;&#xA;&lt;li&gt;why the tool is now much more flexible than before.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The source code is available on GitHub:&#xA;&lt;a href=&#34;https://github.com/diemobiliar/puntobello-installer&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://github.com/diemobiliar/puntobello-installer&lt;/a&gt;&#xA;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Preparing for SharePoint Online CSP Enforcement</title>
      <link>https://www.puntobello.ch/en/nello/sharepoint_online_csp_compliance/</link>
      <pubDate>Mon, 12 Jan 2026 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/sharepoint_online_csp_compliance/</guid>
      <description>&lt;p&gt;Content Security Policy (CSP) enforcement is coming to SharePoint Online on March 1, 2026. In this post, I&amp;rsquo;ll share practical findings from preparing SPFx solutions for CSP compliance.&lt;/p&gt;&#xA;&lt;h3 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#what-is-csp-and-why-should-you-care&#34;&gt;What is CSP and Why Should You Care?&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#testing-your-solutions-before-enforcement&#34;&gt;Testing Your Solutions Before Enforcement&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#finding-1-external-scripts-from-siteassets-work&#34;&gt;Finding #1: External Scripts from SiteAssets Work&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#finding-2-whitelisting-external-cdns-google-tag-manager&#34;&gt;Finding #2: Whitelisting External CDNs (Google Tag Manager)&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#how-to-whitelist-external-script-sources&#34;&gt;How to Whitelist External Script Sources&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#option-1-sharepoint-admin-center&#34;&gt;Option 1: SharePoint Admin Center&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#option-2-powershell&#34;&gt;Option 2: PowerShell&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#practical-example-converting-inline-scripts&#34;&gt;Practical Example: Converting Inline Scripts&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#before-inline-script-will-be-blocked&#34;&gt;Before: Inline Script (Will Be Blocked)&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#after-external-script-csp-compliant&#34;&gt;After: External Script (CSP Compliant)&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#deployment-automation&#34;&gt;Deployment Automation&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;what-is-csp-and-why-should-you-care&#34;&gt;What is CSP and Why Should You Care?&lt;/h2&gt;&#xA;&lt;p&gt;Content Security Policy is a security standard that helps prevent cross-site scripting (XSS) attacks by controlling which scripts can execute on a page. Starting &lt;strong&gt;March 1, 2026&lt;/strong&gt;, SharePoint Online will enforce CSP, which means:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Environment Variables with SPFx 1.22&#43; and Heft</title>
      <link>https://www.puntobello.ch/en/nello/spfx_heft_env_migration/</link>
      <pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/spfx_heft_env_migration/</guid>
      <description>&lt;p&gt;I use environment variables extensively for allowing multi-tenancy configurations. With the release of SPFx 1.22, there is a new guy in town: &lt;strong&gt;Heft&lt;/strong&gt;! Heft offers plenty of options for implementing environment variables. This post explains &lt;strong&gt;four possible approaches&lt;/strong&gt; to use environment variables with Heft.&lt;/p&gt;&#xA;&lt;h3 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#heft-the-new-build-system&#34;&gt;Heft: The New Build System&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#do-i-need-to-migrate&#34;&gt;Do I Need to Migrate?&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#understanding-the-build-pipeline-change&#34;&gt;Understanding the Build Pipeline Change&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#the-four-approaches&#34;&gt;The Four Approaches&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#approach-1-pre-build-script-type-safe&#34;&gt;Approach 1: Pre-Build Script (Type-Safe)&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#approach-2-webpack-patch-recommended&#34;&gt;Approach 2: Webpack Patch (Recommended)&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#approach-3-dotenv-webpack-community&#34;&gt;Approach 3: dotenv-webpack (Community)&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#approach-4-heft-run-script-advanced&#34;&gt;Approach 4: Heft Run Script (Advanced)&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#comparison-matrix&#34;&gt;Comparison Matrix&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#full-code-repository&#34;&gt;Full Code Repository&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;heft-the-new-build-system&#34;&gt;Heft: The New Build System&lt;/h2&gt;&#xA;&lt;p&gt;With SPFx 1.22, Microsoft introduced &lt;a href=&#34;https://rushstack.io/pages/heft/overview/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Heft&lt;/a&gt;&#xA; as the new build orchestrator, replacing the gulp-based toolchain. Heft is a config-driven task orchestrator from Rush Stack that provides better customization, improved performance, and active maintenance.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Christmas Gift: Redefining the SharePoint Central Administration</title>
      <link>https://www.puntobello.ch/en/nello/christmas_arcade_spfx/</link>
      <pubDate>Wed, 10 Dec 2025 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/christmas_arcade_spfx/</guid>
      <description>&lt;p&gt;Remember SharePoint Central Administration? That legendary page from the on-premises days that was so complex, so overwhelming, that opening it felt like defusing a bomb? I always remember searching through those menus and functionalities&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;So I redesigned it. I did it my way—you just need to type &amp;ldquo;start&amp;rdquo; or use the Konami Code to see it come to life.&lt;/p&gt;&#xA;&lt;h3 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#the-story&#34;&gt;The Story&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#what-i-built&#34;&gt;What I Built&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#the-konami-code-easter-egg&#34;&gt;The Konami Code Easter Egg&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#how-the-full-screen-overlay-works&#34;&gt;How the Full-Screen Overlay Works&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#the-architecture&#34;&gt;The Architecture&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#try-it-yourself&#34;&gt;Try It Yourself&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#resources&#34;&gt;Resources&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;the-story&#34;&gt;The Story&lt;/h2&gt;&#xA;&lt;p&gt;It started with a simple question to Claude: would it be possible to put some retro arcade games in an SPFx WebPart? The AI assistant told me that &amp;ldquo;of course&amp;rdquo; it would be a great idea.&#xA;Now, many prompts later, with some ideas abandoned and many more added, you can find the code at the end of this post.&#xA;The WebPart is self-contained, meaning that you won&amp;rsquo;t even encounter any CSP (Content Security Policy) problems. All the code and sounds are included in the WebPart.&lt;/p&gt;</description>
    </item>
    <item>
      <title>An Anthropologic Approach to Coding : Mastery and Methods</title>
      <link>https://www.puntobello.ch/en/nello/an_anthropologic_approach_to_coding_mastery_and_methods/</link>
      <pubDate>Fri, 03 Oct 2025 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/an_anthropologic_approach_to_coding_mastery_and_methods/</guid>
      <description>&lt;p&gt;In this third post about Claude Code, I want to share the techniques that have transformed my development workflow. After months of daily use, I&amp;rsquo;ve discovered seven powerful strategies that consistently deliver results. These aren&amp;rsquo;t theoretical concepts - they&amp;rsquo;re practical techniques I use every day to write better code faster, explore unfamiliar codebases with confidence, and push the boundaries of what&amp;rsquo;s possible with AI-assisted development.&lt;/p&gt;&#xA;&lt;p&gt;The common thread weaving through all these techniques is iteration - not just in Plan Mode (which I covered in my Field Notes), but as a fundamental philosophy for every interaction with Claude Code. Whether you&amp;rsquo;re diving deep into code, bridging solutions, or managing context, the iterative approach transforms Claude from a simple code generator into a true collaborative partner. Each cycle of interaction refines your understanding, improves the output, and builds toward better solutions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>An Anthropologic Approach to Coding : Field Notes on Failure</title>
      <link>https://www.puntobello.ch/en/nello/an_anthropologic_approach_to_coding_field_notes_on_failure/</link>
      <pubDate>Wed, 10 Sep 2025 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/an_anthropologic_approach_to_coding_field_notes_on_failure/</guid>
      <description>&lt;p&gt;Every new tool, and Claude Code is a tool, especially when it has significant impact, requires us to adapt. While the entry barrier for interacting with LLMs is perceived to be low, since they can interact easily in natural language with us, we are still required to learn and to adapt. In this post, I will share how I started learning, focusing particularly on the various problems I encountered. Lessons learnt!&lt;/p&gt;</description>
    </item>
    <item>
      <title>An Anthropologic Approach to Coding : Introduction</title>
      <link>https://www.puntobello.ch/en/nello/an_anthropologic_approach_to_coding_introduction/</link>
      <pubDate>Tue, 02 Sep 2025 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/an_anthropologic_approach_to_coding_introduction/</guid>
      <description>&lt;p&gt;LLMs have changed how most software developers approach their tasks. Less than 3 years ago, when GPT was broadly made available, it was mostly used for understanding code snippets and giving hints for specific implementations or bug fixes.&lt;/p&gt;&#xA;&lt;p&gt;I have now worked for about 3 months with Claude Code, and this tool has had the biggest impact on my developer workflow in the last decades. This first post is part of a multi-blog post series about Claude Code from Anthropic and how I use it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Two Days at the Microsoft Circle: Building with SharePoint Copilot and Declarative Agents</title>
      <link>https://www.puntobello.ch/en/nello/two_days_at_the_microsoft_circle/</link>
      <pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/two_days_at_the_microsoft_circle/</guid>
      <description>&lt;p&gt;I had the opportunity to spend two days at the Microsoft Circle in Zürich — the Innovation Hub focused on Copilot, SharePoint, and Declarative Agents. Each day, we worked on a different business case, turning ideas into working PoCs. Here&amp;rsquo;s what we built, what worked, and what I learned.&lt;/p&gt;&#xA;&lt;h2 id=&#34;business-case-1-document-based-instructions-and-workflow&#34;&gt;Business Case 1: Document-Based Instructions and Workflow&lt;/h2&gt;&#xA;&lt;p&gt;The first case involved porting a running prototype from OpenAI Custom GPT into our enterprise environment. The goal: provide a prompt-based interface that presents the user with 12 selectable functionalities. Based on the user’s selection, the agent would:&lt;/p&gt;</description>
    </item>
    <item>
      <title>The right time to cache, a deferred approach</title>
      <link>https://www.puntobello.ch/en/nello/a_better_time_to_cache/</link>
      <pubDate>Mon, 17 Feb 2025 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/a_better_time_to_cache/</guid>
      <description>&lt;p&gt;Have you ever clicked on a SharePoint page and had to wait for data to load, even though it was fine a minute ago? You’re not alone. Many SPFx components suffer from caching strategies that force users to wait for data refreshes at the &lt;strong&gt;wrong moment&lt;/strong&gt;. But what if we could refresh the cache at a better time—not when the user is waiting, but when they don’t even &lt;strong&gt;notice&lt;/strong&gt;?&lt;/p&gt;&#xA;&lt;h3 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#why-cache-&#34;&gt;Why Cache ?&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#where-to-cache-&#34;&gt;Where to Cache ?&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#caching-vs-freshness&#34;&gt;Caching vs Freshness&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#a-better-time-to-cache-just-after-expiration&#34;&gt;A Better Time to Cache: Just After Expiration&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#tradeoffs-of-this-approach&#34;&gt;Tradeoffs of This Approach:&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#generic-cache-manager&#34;&gt;Generic Cache Manager&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#example-caching-term-store-data&#34;&gt;Example: Caching Term Store Data&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#full-code&#34;&gt;Full Code&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;why-cache-&#34;&gt;Why Cache ?&lt;/h2&gt;&#xA;&lt;p&gt;Whether you are directly using the SharePoint API or accessing data via SharePoint Search, retrieving SharePoint data is generally fast.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Upgrading SPFx Solutions</title>
      <link>https://www.puntobello.ch/en/nello/upgrading_spfx_solutions/</link>
      <pubDate>Wed, 08 Jan 2025 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/upgrading_spfx_solutions/</guid>
      <description>&lt;p&gt;SPFx solutions don’t necessarily need to be upgraded. That doesn’t mean you shouldn’t upgrade them. In this blog post, I’ll explain the SPFx upgrade process, why it matters, and share some valuable tips and tricks from real-world experience.&lt;/p&gt;&#xA;&lt;h3 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#the-spfx-upgrade-process&#34;&gt;The SPFx upgrade process&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#why-upgrade-your-spfx-components-&#34;&gt;Why Upgrade your SPFx components ?&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#when-should-you-upgrade-&#34;&gt;When should you upgrade ?&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#the-spfx-upgrade-tooling&#34;&gt;The SPFx Upgrade Tooling&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#anatomy-of-the-upgrade-report&#34;&gt;Anatomy of the Upgrade Report&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#when-package-upgrades-fail&#34;&gt;When Package Upgrades Fail&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#real-life-scenarios-tips--tricks&#34;&gt;Real-Life Scenarios: Tips &amp;amp; Tricks&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;the-spfx-upgrade-process&#34;&gt;The SPFx upgrade process&lt;/h2&gt;&#xA;&lt;p&gt;Upgrading your SPFx solutions means that you will at least move to a newer version of the SPFx related packages and their dependencies.&#xA;Microsoft has some &lt;code&gt;Learn&lt;/code&gt; documentation about the upgrade process. You can find information &lt;a href=&#34;https://learn.microsoft.com/en-us/sharepoint/dev/spfx/toolchain/update-latest-packages&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;here&lt;/a&gt;&#xA; and &lt;a href=&#34;https://learn.microsoft.com/en-us/sharepoint/dev/spfx/team-based-development-on-sharepoint-framework#upgrading-sharepoint-framework-projects&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;here&lt;/a&gt;&#xA;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Fantastic European SharePoint Conference</title>
      <link>https://www.puntobello.ch/en/nello/the_fantastic_european_sharepoint_conference/</link>
      <pubDate>Wed, 11 Dec 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/the_fantastic_european_sharepoint_conference/</guid>
      <description>&lt;p&gt;I may be a bit biased; in my younger years, I toured Ireland a couple of times and somehow fell in love with the people of this beautiful country. During all the ESPCs I have attended, I enjoyed the same kindness and dedication from the ESPC Team, which is based in Galway.&lt;/p&gt;&#xA;&lt;h3 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#time--duration&#34;&gt;Time &amp;amp; Duration&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#the-content&#34;&gt;The Content&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#the-goodies&#34;&gt;The Goodies&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#the-organization&#34;&gt;The Organization&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#saving-tip&#34;&gt;Saving Tip&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#my-personal-takeaways&#34;&gt;My Personal Takeaways&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#sharpen&#34;&gt;SharPen&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#extend-your-horizon&#34;&gt;Extend Your Horizon&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#network&#34;&gt;Network&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;time--duration&#34;&gt;Time &amp;amp; Duration&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;ESPC&lt;/code&gt; takes place a couple of weeks after the &lt;code&gt;Microsoft Ignite&lt;/code&gt; conference, generally between the end of November and the beginning of December. This perfect timing makes the &lt;code&gt;ESPC&lt;/code&gt; the natural arm of Microsoft announcements in Europe.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Succeeding with SPFx</title>
      <link>https://www.puntobello.ch/en/nello/succeeding_with_spfx/</link>
      <pubDate>Thu, 14 Nov 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/succeeding_with_spfx/</guid>
      <description>&lt;p&gt;SPFx enables rapid and versatile development. It is the most widely used development technology when it comes to Microsoft 365 and particularly SharePoint Online extensibility. I will share my thoughts, setup, and how we succeeded.&lt;/p&gt;&#xA;&lt;h3 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#key-areas-of-recommendation&#34;&gt;Key Areas of Recommendation&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#framework--technologies&#34;&gt;Framework &amp;amp; Technologies&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#the-motivation-behind-it&#34;&gt;The Motivation Behind It&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#the-microsoft-365-community&#34;&gt;The Microsoft 365 Community&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#community-page&#34;&gt;Community Page&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#community-frameworks--technologies&#34;&gt;Community Frameworks &amp;amp; Technologies&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#community-calls&#34;&gt;Community Calls&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#community-samples&#34;&gt;Community Samples&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#best-practices-for-upgrades&#34;&gt;Best Practices for upgrades&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#booster&#34;&gt;Booster&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#azure&#34;&gt;Azure&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;key-areas-of-recommendation&#34;&gt;Key Areas of Recommendation&lt;/h2&gt;&#xA;&lt;p&gt;I will focus on four important areas:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Two-Way Ticket from SPFx to Azure Service Bus and Back</title>
      <link>https://www.puntobello.ch/en/nello/spfx_to_azure_service_bus/</link>
      <pubDate>Mon, 11 Nov 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/spfx_to_azure_service_bus/</guid>
      <description>&lt;p&gt;SPFx is a versatile and budget-friendly framework. With the newly introduced Webpack 5 support available from SPFx Version 1.19, it is now possible to directly interact with the &lt;code&gt;Azure Service Bus&lt;/code&gt;. In this blog post, I will show you how you can configure your SPFx solution to directly perform operations against the &lt;code&gt;Azure Service Bus&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#introduction&#34;&gt;Introduction&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#the-motivation-simplify-and-reduce-costs&#34;&gt;The motivation: Simplify and reduce costs&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#azure-service-bus&#34;&gt;Azure Service Bus&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#spfx-webpack-5-support&#34;&gt;SPFx Webpack 5 support&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#step-1-scaffold-an-spfx-120-solution&#34;&gt;Step 1: Scaffold an SPFx 1.20 solution&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#step-2-install-the-packages&#34;&gt;Step 2: Install the packages&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#step-3-adapt-the-webpack-5-configuration-to-your-spfx-solution&#34;&gt;Step 3: Adapt the Webpack 5 configuration to your SPFx solution&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#step-4-implementation-in-spfx&#34;&gt;Step 4: Implementation in SPFx&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#sending-messages-to-the-azure-service-bus&#34;&gt;Sending messages to the Azure Service Bus&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#reading-messages-from-the-azure-service-bus&#34;&gt;Reading messages from the Azure Service Bus&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#full-code&#34;&gt;Full Code&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;This blog post will guide you through the steps necessary to configure your SPFx solution to work with the &lt;a href=&#34;https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/servicebus/service-bus/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Azure Service Bus Client Library for JavaScript&lt;/a&gt;&#xA;. At the end of this blog post, I am sharing a fully working example.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Training the Libero 🛡️</title>
      <link>https://www.puntobello.ch/en/nello/training_the_libero/</link>
      <pubDate>Thu, 07 Nov 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/training_the_libero/</guid>
      <description>&lt;p&gt;Your libero, the SharePoint Framework (SPFx), can be trained to exactly match your needs. I will show what happens when you enable multilingual publishing and how you can train your best player to communicate with your players.&lt;/p&gt;&#xA;&lt;h3 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#technical-impact-of-enabling-multilingual-publishing&#34;&gt;Technical Impact of Enabling Multilingual Publishing&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#align-your-spfx-web-part-with-your-page-language-content&#34;&gt;Align your SPFx Web Part with your page language content&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#getting-the-page-language&#34;&gt;Getting the page language&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#code-snippet&#34;&gt;Code Snippet&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#taking-control-of-spfx&#34;&gt;Taking Control of SPFx&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#code-snippet-1&#34;&gt;Code Snippet&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#full-code-implementation&#34;&gt;Full code implementation&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;technical-impact-of-enabling-multilingual-publishing&#34;&gt;Technical Impact of Enabling Multilingual Publishing&lt;/h2&gt;&#xA;&lt;p&gt;When you enable Multilingual publishing, SharePoint, among other things, creates the following fields in your &lt;code&gt;Sitepages&lt;/code&gt;library :&lt;/p&gt;</description>
    </item>
    <item>
      <title>Navigating the Complex World of Login Mechanisms: Real-Life Insights with PnP.PowerShell</title>
      <link>https://www.puntobello.ch/en/fabian/navigating-the-complex-world-of-login-mechanisms-real-life-insights-with-pnp.powershell/</link>
      <pubDate>Fri, 01 Nov 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/fabian/navigating-the-complex-world-of-login-mechanisms-real-life-insights-with-pnp.powershell/</guid>
      <description>&lt;p&gt;Specifically, we&amp;rsquo;ll take a closer look at the login mechanisms of PnP.PowerShell, CLI for Microsoft 365, Azure CLI, and Azure Developer CLI. We&amp;rsquo;ll examine the advantages and disadvantages of each mechanism, giving you a comprehensive understanding of how to choose the right one for your needs. Whether you&amp;rsquo;re a developer, IT professional, or just curious about login mechanisms, this post will provide you with valuable insights and practical knowledge.&lt;/p&gt;&#xA;&lt;h2 id=&#34;pnppowershell&#34;&gt;PnP.PowerShell&lt;/h2&gt;&#xA;&lt;p&gt;PnP.PowerShell is a PowerShell module that allows you to perform various operations on SharePoint Online. With PnP.PowerShell, you can perform a wide range of tasks, such as creating and managing sites, lists, and libraries, uploading and downloading files, managing permissions, and much more. It provides a set of cmdlets that you can use to interact with SharePoint Online, making it easier to automate common tasks and streamline your workflows. Overall, PnP.PowerShell is a powerful tool for SharePoint developers and administrators who want to work more efficiently and effectively with SharePoint environments.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Parsing SharePoint Pages</title>
      <link>https://www.puntobello.ch/en/nello/parsing_sharepoint_pages/</link>
      <pubDate>Wed, 30 Oct 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/parsing_sharepoint_pages/</guid>
      <description>&lt;p&gt;Parsing SharePoint pages with SPFx is straightforward and opens up a variety of exciting use cases. In this post, I’ll show how you can access SharePoint page content and parse it to extract various information.&lt;/p&gt;&#xA;&lt;h3 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#introduction&#34;&gt;Introduction&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#static-content&#34;&gt;Static content&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#dynamic-content&#34;&gt;Dynamic content&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#sharepoint-online-page-structure---generalized&#34;&gt;SharePoint Online Page Structure - Generalized&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#horizontal--vertical-section-container&#34;&gt;Horizontal-/ Vertical Section-Container&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#web-part-controls&#34;&gt;Web Part Controls&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#rich-text-controls-ootb-text-web-part-control&#34;&gt;Rich Text Controls (OOTB Text Web Part control)&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#spfx-and-the-sharepoint-canvas&#34;&gt;SPFx and the SharePoint Canvas&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#accessing-the-sharepoint-canvas&#34;&gt;Accessing the SharePoint Canvas&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#preparing-the-sharepoint-canvas-for-processing&#34;&gt;Preparing the SharePoint Canvas for Processing&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#extracting-information-from-the-sharepoint-page&#34;&gt;Extracting Information from the SharePoint Page&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#use-case-1-accessing-all-headings-h2h3h4-in-a-sharepoint-page&#34;&gt;Use Case 1: Accessing all Headings (h2/h3/h4) in a SharePoint Page&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#use-case-2-checking-if-a-web-part-exists&#34;&gt;Use Case 2: Checking if a Web Part Exists&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#microsoft-graph-api-for-sharepoint-pages&#34;&gt;Microsoft Graph API for SharePoint Pages&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;SharePoint Online is a modern web application. It is a React app, often called a Single Page Application (SPA).&#xA;Before parsing SharePoint Online page content, it’s important to understand how SharePoint Online works.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Long Content Pages – Stay on Track with In-page Navigation</title>
      <link>https://www.puntobello.ch/en/nicole/long-content-pages--stay-on-track-with-in-page-navigation/</link>
      <pubDate>Tue, 29 Oct 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nicole/long-content-pages--stay-on-track-with-in-page-navigation/</guid>
      <description>&lt;h2 id=&#34;our-challenge&#34;&gt;Our challenge&lt;/h2&gt;&#xA;&lt;p&gt;Our employees want to &lt;strong&gt;find the information&lt;/strong&gt; they need with just a &lt;strong&gt;few clicks&lt;/strong&gt; and &lt;strong&gt;find everything related&lt;/strong&gt; to a specific topic &lt;strong&gt;on one page&lt;/strong&gt; if possible. In our case, there is a lot of content that needs to fit on a single content page, such as our product pages. A content page, therefore, becomes extraordinarily long, and &lt;strong&gt;scrolling takes time&lt;/strong&gt;. How can we ensure that our colleagues &lt;strong&gt;quickly identify if the desired information&lt;/strong&gt; is available and its &lt;strong&gt;exact location&lt;/strong&gt; upon opening a content page? How can they &lt;strong&gt;get there quickly&lt;/strong&gt;? How do we &lt;strong&gt;support our publishers&lt;/strong&gt; in publishing latest content pages quickly and easily?&lt;/p&gt;</description>
    </item>
    <item>
      <title>News – The Heart of the Intranet</title>
      <link>https://www.puntobello.ch/en/nicole/news--the-heart-of-the-intranet/</link>
      <pubDate>Wed, 16 Oct 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nicole/news--the-heart-of-the-intranet/</guid>
      <description>&lt;h2 id=&#34;our-challenge&#34;&gt;Our Challenge&lt;/h2&gt;&#xA;&lt;p&gt;How can we, as corporate communications, ensure that our employees are &lt;strong&gt;always well-informed&lt;/strong&gt; about all &lt;strong&gt;relevant topics&lt;/strong&gt; of our company, which operates throughout Switzerland and is multilingual? How can we &lt;strong&gt;highlight&lt;/strong&gt; particularly &lt;strong&gt;important news&lt;/strong&gt; prominently on the intranet homepage? How can we ensure that &lt;strong&gt;newly published&lt;/strong&gt; news is &lt;strong&gt;quickly seen and read&lt;/strong&gt;? How can we give employees the &lt;strong&gt;option to decide which topics&lt;/strong&gt; they want &lt;strong&gt;to be informed about&lt;/strong&gt;? How can our corporate publishers still &lt;strong&gt;publish news easily and quickly&lt;/strong&gt; despite all these options?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Deploy Az resources and integrate PuntoBello Installer</title>
      <link>https://www.puntobello.ch/en/fabian/deploy-az-resources-and-integrate-puntobello-installer/</link>
      <pubDate>Tue, 15 Oct 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/fabian/deploy-az-resources-and-integrate-puntobello-installer/</guid>
      <description>&lt;p&gt;In our last Engineering Blog &lt;a href=&#34;https://www.puntobello.ch/en/fabian/automate-the-build--and-deployment-process&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;post&lt;/a&gt;&#xA;, we wrote about an automated build and deployment process using the PuntoBello Installer. The PuntoBello Installer enables the deployment and configuration of SharePoint elements and the build and deployment of SPFx solutions. But what if additional resources are integrated into Azure and dependencies arise? We describe the integration of the PuntoBello Installer for use with Azure Developer CLI.&lt;/p&gt;&#xA;&lt;h2 id=&#34;puntobello-installer&#34;&gt;PuntoBello Installer&lt;/h2&gt;&#xA;&lt;p&gt;Looking for a standardized way to build and deploy all our PuntoBello solutions, we created the PuntoBello Installer. Our blog &lt;a href=&#34;https://www.puntobello.ch/en/fabian/automate-the-build--and-deployment-process&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;post&lt;/a&gt;&#xA; describes how the installer contains the complete tooling to build and deploy SPFx solutions, as well as all the scripts required in the process. To accommodate the different requirements of each solution for deployment to SharePoint, we defined a JSON file (solutions.json) that contains all the relevant information for the deployment scripts. Our GitHub &lt;a href=&#34;https://github.com/diemobiliar/puntobello-installer&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;repo&lt;/a&gt;&#xA; provides access to the PuntoBello Installer, which can be used on a Mac or a Windows PC with different CPU architectures, on your local system, in a devcontainer, and even in a CI/CD pipeline.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Warm Up Your SOCKet 🧦</title>
      <link>https://www.puntobello.ch/en/nello/warm_up_your_socket/</link>
      <pubDate>Tue, 15 Oct 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/warm_up_your_socket/</guid>
      <description>&lt;p&gt;As the cold months roll in, it’s time to make sure your WebSockets are snug and hole-free, just like your favorite pair of winter socks. In this post, I’ll show you how to load-test your socket connections. Nobody wants holes in their SOCKet—keeping things warm, cozy, and performing smoothly, no matter the load!&lt;/p&gt;&#xA;&lt;h3 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#introduction&#34;&gt;Introduction&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#development-setup&#34;&gt;Development Setup&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#load-testing&#34;&gt;Load Testing&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#artillery&#34;&gt;Artillery&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#running-the-load-test&#34;&gt;Running the Load Test&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#debugging-artillery&#34;&gt;Debugging Artillery&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#key-points&#34;&gt;Key Points&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#never-load-test-against-production&#34;&gt;Never Load-Test Against Production&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#every-server-has-its-limit&#34;&gt;Every Server Has Its Limit&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;Bringing real-time behavior to your solution is not just for the big players anymore—it’s easy to integrate! For this project, the goal was to add real-time updates (both attended and unattended) to a news feed that displays SharePoint Online news.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I Love Term Store – Why Terms are so Useful in a Multilingual Intranet</title>
      <link>https://www.puntobello.ch/en/nicole/i-love-term-store--why-terms-are-so-useful-in-a-multilingual-intranet/</link>
      <pubDate>Wed, 09 Oct 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nicole/i-love-term-store--why-terms-are-so-useful-in-a-multilingual-intranet/</guid>
      <description>&lt;h2 id=&#34;our-challenge&#34;&gt;Our challenge&lt;/h2&gt;&#xA;&lt;p&gt;Our employees primarily speak German and French. Italian and English are also present. Our intranet pages are all available in German and French. Documents are often in all four languages. Lists are available in at least two languages as needed. The intranet search should return relevant results, even if not all content is available in the user&amp;rsquo;s language. Meaningful filters should help find the desired content. Many of our &lt;strong&gt;terms are applied in various contexts&lt;/strong&gt; and can lead to mistakes because of differing spellings. Given our volume of content, dynamically displaying relevant content on pages is essential.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Introducing the Libero 🛡️</title>
      <link>https://www.puntobello.ch/en/nello/introducing_the_libero/</link>
      <pubDate>Wed, 09 Oct 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/introducing_the_libero/</guid>
      <description>&lt;p&gt;The SharePoint Framework (SPFx) is the versatile player, the libero, best known from the &amp;lsquo;Catenaccio&amp;rsquo; tactic, you rely on when extending SharePoint with your own components. I will show you the idea behind SharePoint Framework multilinguality, how it works, and how to avoid common pitfalls.&lt;/p&gt;&#xA;&lt;h3 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#spfx-localization&#34;&gt;SPFx localization&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#localization-in-spfx&#34;&gt;Localization in SPFx&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#first-example-matching-languages-through-the-whole-chain-of-command&#34;&gt;First Example: Matching Languages Through the Whole Chain of Command&amp;quot;&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#second-example-localization-logic-in-spfx&#34;&gt;Second Example: Localization logic in SPFx&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#the-sharepoint-online-language-switcher&#34;&gt;The SharePoint Online language switcher&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#training-the-libero&#34;&gt;&lt;strong&gt;Training the Libero&lt;/strong&gt;&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;spfx-localization&#34;&gt;SPFx localization&lt;/h2&gt;&#xA;&lt;p&gt;Microsoft has an introduction to localizing SPFx components &lt;a href=&#34;https://learn.microsoft.com/en-us/sharepoint/dev/spfx/web-parts/guidance/localize-web-parts&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;here 🔗&lt;/a&gt;&#xA;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Playing S⚽ccer with SharePoint Online, Part 2</title>
      <link>https://www.puntobello.ch/en/nello/playing_soccer_with_sharepoint_online_part2/</link>
      <pubDate>Wed, 02 Oct 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/playing_soccer_with_sharepoint_online_part2/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://www.puntobello.ch/en/nello/playing_soccer_with_sharepoint_online_part1/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;strong&gt;Part 1&lt;/strong&gt; of &amp;ldquo;Playing Soccer with SharePoint Online&amp;rdquo;&lt;/a&gt;&#xA;, we have set up a team and understood the rules of our game. You are now ready to go deeper in your multilingual communication strategy to ensure that your players understand your strategy and perform well on the field.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Automate the Build- and Deployment Process with the PuntoBello Installer</title>
      <link>https://www.puntobello.ch/en/fabian/automate-the-build--and-deployment-process/</link>
      <pubDate>Tue, 01 Oct 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/fabian/automate-the-build--and-deployment-process/</guid>
      <description>&lt;p&gt;This blog post will show you how to simplify the deployment of SPFx solutions using a .devcontainer setup, automate SharePoint site configurations, and make the process accessible — even for non-professionals. We’ll also look at using Docker and PowerShell to automate building, provisioning, and deployment.&lt;/p&gt;&#xA;&lt;h2 id=&#34;puntobello-installer&#34;&gt;PuntoBello Installer&lt;/h2&gt;&#xA;&lt;p&gt;Looking for a standardized way to build and deploy all our PuntoBello solutions we decided to create the PuntoBello Installer. The Installer should contain the complete tooling to build and deploy SPFx solutions as well as all the scripts required in the process. Every solution has different requirements for the deployment to SharePoint. One solution may need a list with specific fields or permissions, another solution may depend on terms from the TermStore and so on. We decided to define a JSON file (solutions.json) which contains all the relevant information for the deployment scripts. Last but not least, we wanted to create an installer that fits different usage scenarios. Whether you work on a Mac or a Windows PC with different CPU architectures, on your local system or in a devcontainer, the PuntoBello Installer has you covered. It can even be implemented in a CI/CD pipeline.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Playing S⚽ccer with SharePoint Online, Part 1</title>
      <link>https://www.puntobello.ch/en/nello/playing_soccer_with_sharepoint_online_part1/</link>
      <pubDate>Wed, 25 Sep 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/playing_soccer_with_sharepoint_online_part1/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Soccer is more than just a game&lt;/strong&gt;—it’s a global passion where teams from around the world come together to compete. You have landed your dream job: &lt;strong&gt;coach&lt;/strong&gt; of one of the most prestigious soccer teams. Congrats ! Now you’re at the center for assembling the best players, planning strategies, and motivating your team to success. ⚽&lt;/p&gt;&#xA;&lt;p&gt;But beyond skill and strategy, there’s another critical factor: &lt;strong&gt;communication&lt;/strong&gt;. To win, every one of your player must understand the game plan, no matter what language they speak. This is where &lt;strong&gt;SharePoint Online&lt;/strong&gt; comes in, with its powerful &lt;strong&gt;multilingual features&lt;/strong&gt;, acting as your assistant coach to break down language barriers.🏆&lt;/p&gt;</description>
    </item>
    <item>
      <title>To Observe and to Inject: Enhancing SharePoint with React Components</title>
      <link>https://www.puntobello.ch/en/nello/to_observe_and_to_inject/</link>
      <pubDate>Wed, 18 Sep 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/to_observe_and_to_inject/</guid>
      <description>&lt;p&gt;Ever dreamed of injecting a beautiful React component across all the pages on a SharePoint site? With the observer pattern, this is easily achievable.&lt;/p&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;Integrating custom React components into SharePoint&amp;rsquo;s standard UI can be challenging. It may work in some areas, but not all, for example, when you have to deal with dynamic page elements like the &amp;lsquo;shy&amp;rsquo; header that appears upon scrolling. In this blog post, I will show how to use the observer pattern to effectively inject a React element into the SharePoint header. I will also show how to handle SharePoint&amp;rsquo;s &amp;lsquo;shy&amp;rsquo; mode to ensure your injected elements remain visible.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My Applications: One of the most popular use cases in the intranet - despite browser favorites</title>
      <link>https://www.puntobello.ch/en/nicole/my-applications-one-of-the-most-popular-use-cases-on-the-intranet---despite-browser-favorites/</link>
      <pubDate>Tue, 17 Sep 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nicole/my-applications-one-of-the-most-popular-use-cases-on-the-intranet---despite-browser-favorites/</guid>
      <description>&lt;h2 id=&#34;our-challenge&#34;&gt;Our challenge&lt;/h2&gt;&#xA;&lt;p&gt;In addition to the intranet, our employees use many &lt;strong&gt;business applications&lt;/strong&gt; in their daily work. Some of these are used by all employees, while others are specific to certain departments. Our employees have no time to waste; they want to &lt;strong&gt;find and open the application&lt;/strong&gt; they need &lt;strong&gt;quickly and easily&lt;/strong&gt;, at &lt;strong&gt;any time&lt;/strong&gt; and in their &lt;strong&gt;preferred language&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;our-goal&#34;&gt;Our goal&lt;/h2&gt;&#xA;&lt;p&gt;Our employees should be able to &lt;strong&gt;access their relevant applications from anywhere on the intranet&lt;/strong&gt; at any time and in their preferred language. Each colleague can &lt;strong&gt;select and sort their applications as they see fit&lt;/strong&gt;.&lt;br&gt;&#xA;Our corporate publishing team can &lt;strong&gt;quickly and easily maintain the application list&lt;/strong&gt;, whether it is adding a new application, modifying an existing one or deleting an old one. When an existing application is changed, it is immediately available to our employees without any action being required on their part.&lt;br&gt;&#xA;This ensures that the application selection is &lt;strong&gt;always up to date&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Document cards: these are the benefits for our users and publishers</title>
      <link>https://www.puntobello.ch/en/nicole/multilingual-document-cards-these-are-the-benefits-for-our-users-and-publishers/</link>
      <pubDate>Tue, 03 Sep 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nicole/multilingual-document-cards-these-are-the-benefits-for-our-users-and-publishers/</guid>
      <description>&lt;h2 id=&#34;our-challenge&#34;&gt;Our challenge&lt;/h2&gt;&#xA;&lt;p&gt;As a company that operates throughout Switzerland and recognises the &lt;strong&gt;linguistic diversity&lt;/strong&gt; (4 national languages) and &lt;strong&gt;regional mentalities&lt;/strong&gt; of our beautiful country, we offer our employees and customers &lt;strong&gt;all documents in the three main national languages: German, French and Italian&lt;/strong&gt;. Many of our customers want to read some of our product documents in English. Our &lt;strong&gt;intranet is available&lt;/strong&gt; to employees in &lt;strong&gt;German and French&lt;/strong&gt;. How and where do we now offer the documents in their respective languages?&lt;/p&gt;</description>
    </item>
    <item>
      <title>PuntoBello: Open-sourcing our SharePoint enhancements</title>
      <link>https://www.puntobello.ch/en/nello/puntobello_journey/</link>
      <pubDate>Mon, 02 Sep 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/nello/puntobello_journey/</guid>
      <description>&lt;p&gt;We have demoed our intranet and our interpretation of a multilingual SharePoint intranet to various Swiss companies.&lt;br&gt;&#xA;The overwhelmingly positive feedback from our demos inspired us to take the next step: &lt;strong&gt;open-sourcing some of our best intranet components&lt;/strong&gt;.&lt;br&gt;&#xA;True to &lt;a href=&#34;https://www.mobiliar.ch/ueber-uns/die-mobiliar&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;our company’s long tradition&lt;/a&gt;&#xA; of giving back to the community and society, we want to give back to the &lt;a href=&#34;https://pnp.github.io/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Microsoft 365 community&lt;/a&gt;&#xA;. This decision marked the beginning of a new chapter, which we are excited to share with the community—thus, &lt;strong&gt;PuntoBello was born.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Welcome to PuntoBello.ch</title>
      <link>https://www.puntobello.ch/en/about/</link>
      <pubDate>Mon, 02 Sep 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/about/</guid>
      <description>&lt;div style=&#34;position: relative; display: block; line-height: 0; margin: 0; padding: 0;&#34;&gt;&#xA;    &lt;img src=&#34;https://www.puntobello.ch/images/puntobello_welcome.png&#34; alt=&#34;Welcome to PuntoBello.ch&#34; style=&#34;width: 30%; display: block; margin: 0; padding: 0; border-radius: 15px;&#34;&gt;&#xA;    &lt;div style=&#34;position: absolute; bottom: 10px; left: 10px; color: black; font-size: small; display: flex; align-items: flex-end; height: 100%; width: 100%; margin: 0; padding: 0;&#34;&gt;&#xA;        &lt;span style=&#34;margin-left: 5px; margin-bottom: 10px; color: rgba(0, 0, 0, 0.6); font-size: x-small; font-weight: 300; position: absolute; bottom: 10px; left: 10px;&#34;&gt;&#xA;            © 2024 PuntoBello&#xA;        &lt;/span&gt;&#xA;    &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Welcome to &lt;strong&gt;PuntoBello.ch&lt;/strong&gt;!&lt;/p&gt;&#xA;&lt;p&gt;PuntoBello.ch is a blog dedicated to sharing insights, components, and real-world solutions related to Microsoft 365, SharePoint, SPFx, and Azure. The blog is primarily authored by Nello D&amp;rsquo;Andrea, an experienced developer with a passion for Microsoft technologies. However, you may also find contributions from other professionals who share the same enthusiasm.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Our Authors</title>
      <link>https://www.puntobello.ch/en/authors/</link>
      <pubDate>Sun, 01 Sep 2024 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/authors/</guid>
      <description></description>
    </item>
    <item>
      <title></title>
      <link>https://www.puntobello.ch/manifest.json</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/manifest.json</guid>
      <description></description>
    </item>
    <item>
      <title></title>
      <link>https://www.puntobello.ch/en/search/_index.de/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/search/_index.de/</guid>
      <description></description>
    </item>
    <item>
      <title></title>
      <link>https://www.puntobello.ch/en/search/_index.fr/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/search/_index.fr/</guid>
      <description></description>
    </item>
    <item>
      <title></title>
      <link>https://www.puntobello.ch/en/search/_index.it/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>nello@dandrea.ch (Nello D&#39;Andrea)</author>
      <guid>https://www.puntobello.ch/en/search/_index.it/</guid>
      <description></description>
    </item>
  </channel>
</rss>
