# McKenna Consultants — Full Site Content > UK software consultancy specialising in Microsoft Office Add-Ins, SharePoint Embedded, B2B eCommerce (Elastic Path), and enterprise AI agents. Generated: 13/08/2026 --- # About McKenna Consultants **Canonical URL:** https://www.mckennaconsultants.com/about/ McKenna Consultants is made up of an expert team of UK-based software developers specialising in custom software development and complex integrations — connecting SaaS applications with back-end ERP and CRM systems, document platforms such as SharePoint Embedded, Office Add-Ins and eCommerce systems. We also have a division devoted to Agile training, coaching and consultancy. **Key facts:** 24+ years experience, 100+ projects delivered, UK-based team, ERP and CRM integration experts. **Why work with us:** - Complex Systems Integration (ERP, CRM, CPQ, PIM, document stores, payment platforms) - Microsoft 365 Integration Depth (SharePoint Embedded, Microsoft Graph, Office Add-Ins) - AI-Accelerated Delivery (AI coding tools used daily to deliver faster without diluting quality) - Diverse Expertise (Office integrations, systems integrations, B2B eCommerce, cloud solutions, mobile and web apps) **About our CEO:** Nick McKenna wrote his first computer program at the age of nine, holds a First Class Degree in Computer Science (BSc) and has been a professional computer programmer for 27 years. His technical expertise includes .NET Core, Microsoft Office Add-Ins, SharePoint Embedded and Microsoft Graph, ERP and CRM integration, eProcurement, Microsoft Azure, iOS and Android mobile development, and Internet Of Things. **How we work:** Discover (scope discussion) → Plan (proposal and cost estimate) → Build (feature chunks for transparency) → Review (regular demos and feedback) → Launch (MVP or production release). --- # SharePoint Embedded Integration **Canonical URL:** https://www.mckennaconsultants.com/sharepoint-embedded/ SaaS vendors engage McKenna Consultants for two SharePoint Embedded services: migrating an existing custom WOPI host onto SharePoint Embedded, and implementing SharePoint Embedded from scratch in a new product. More than a decade implementing Microsoft document integrations for SaaS platforms; over 20 WOPI implementations. Equally fluent in WOPI and SharePoint Embedded, so a migration is assessed as an architectural transition rather than advocacy for either platform. **When WOPI-to-SharePoint-Embedded migration makes sense:** operational burden reduction (no discovery uptime, certificate management, proof key rotation or Office release tracking); co-authoring, sensitivity labels, retention and Purview integration as platform capabilities rather than engineering projects; Microsoft 365 Copilot grounding; enterprise buyer demand for the SharePoint Embedded platform position; shorter storage-layer security review in regulated sectors. **When staying on WOPI is the right call:** CSPP Plus features already in production (backstage integration and chunked file transfer have no direct equivalents); data residency requirements that Microsoft's regions cannot meet — SharePoint Embedded containers are provisioned into a specific Azure region, so most residency requirements are satisfiable, but customer-controlled data centres and unserved jurisdictions are not; migration cost outweighing benefit. WOPI remains a fully supported integration model and CSPP membership remains open — what has changed is the recommended path for new entrants, not the support position for either model. **What changes architecturally:** lock management disappears (handled inside the platform); the identity model moves to Entra ID, which is often the largest sub-project for applications with their own identity systems; CSPP-specific features may have no equivalent. **Migration delivery:** five workstreams (identity and authentication; container type registration and customer onboarding; data migration; application layer changes; decommissioning), rolled out in four gated phases (internal pilot, friendly customer pilot, controlled cohort rollout, full cutover and decommissioning). Six months minimum for a small estate, twelve months realistic for a substantial one. Packaged in four stages: strategy and architecture, implementation, pilot and rollout, decommissioning. **New-implementation service offerings:** - Container Type and Architecture Design — the upfront design decisions that determine the rest of the implementation - Full End-to-End Implementation — container registration, Graph integration, editing UX, permissions, operational tooling and deployment - Container and Microsoft Graph API Microservice — multi-tenant microservice integrated into your existing SaaS architecture - Consultancy and Co-Sourcing — technical advisor to in-house teams; your engineers keep the knowledge and all code and IP is yours **Technical approach:** Multi-tenant SharePoint Embedded service that owns container type registration, manages owning-tenant / consuming-tenant relationships, implements the Microsoft Graph operations (container lifecycle, permissions, file CRUD, search, versioning, recycle bin, Office handoff), and wraps them in production tooling — telemetry, idempotent retries, tenant-level health checks, graceful degradation. Where required, container content is exposed to Microsoft 365 Copilot. --- # About SharePoint Embedded **Canonical URL:** https://www.mckennaconsultants.com/about-sharepoint-embedded/ A plain-English guide to the platform for SaaS vendors. SharePoint Embedded is a Microsoft 365 platform service exposing the storage, identity, collaboration and Office editing capabilities of SharePoint and OneDrive through the Microsoft Graph API. It is API-only and headless: your SaaS provides the user experience, Microsoft provides the file platform. End users never see SharePoint, do not need their own Microsoft 365 subscription, and no WOPI host is built or operated. **The two primitives:** A *File Storage Container* is a unit of storage inside the customer's Microsoft 365 tenant, in a dedicated partition accessible only through the owning application — invisible to the customer's other Microsoft 365 users and to other vendors' applications. A *Container Type* is the schema the SaaS vendor registers with Microsoft, governing container behaviour, permissions and billing. Real-time Office co-authoring is a platform capability. **Billing:** Storage and API usage are metered against the vendor's Azure subscription on a pay-as-you-go basis, separate from the customer's Microsoft 365 entitlements, charged across storage volume, Graph API transactions, egress and archive storage. Because the cost sits with the vendor, it can be packaged into subscription pricing. Rates change and vary by region and agreement — confirm current rates with Microsoft rather than relying on published figures. **Benefits for SaaS vendors:** no Cloud Storage Partner Program membership to apply for, no Microsoft business-development gating, no WOPI host to build and operate, no end-user Microsoft 365 subscription requirement. Microsoft Purview controls — eDiscovery, auditing, DLP, retention policies, sensitivity labels, conditional access — apply automatically to container content. Container content is indexed for Microsoft 365 Copilot. **Implementation constraints:** Entra ID app registration and owning/consenting-tenant configuration; container type registration, billing classification and Azure subscription setup; Graph permission scopes and per-tenant admin consent; inherited Purview settings; retention, sensitivity labels and DLP; telemetry, audit logging, recycle-bin and version-history behaviour. **Relationship to WOPI:** SharePoint Embedded is generally the more direct route for new SaaS products, but WOPI remains fully supported and CSPP membership remains open. The platforms differ in storage ownership, identity model, operational responsibility, and commercial and licensing shape. --- # CSPP WOPI Integration **Canonical URL:** https://www.mckennaconsultants.com/cspp-wopi-cloud-storage-partner-program/ Web Application Open Platform Interface (WOPI) is a technology provided by Microsoft that allows one to integrate the web versions of the Microsoft Office applications directly into your web application. WOPI integration can be a complex and confusing process, and is best handled by specialists. McKenna Consultants have been successfully implementing Microsoft WOPI in .Net Framework, .Net Core, Java, Node and PHP for clients for many years. **What is the Cloud Storage Partner Program?** The CSPP is utilised by a wide variety of SaaS providers including legal software SaaS, work management SaaS, auditing SaaS and more. By joining the Cloud Storage Partner Program, members can leverage the WOPI protocol to integrate their services with Microsoft 365. **Service offerings:** - CSPP Partner Program Support — help understanding policies, procedures, timelines and submission - Full WOPI Implementation — complete service including hostpage, workflows and WOPI API - WOPI API Microservice — we implement the microservice while you handle the hostpage - WOPI Consultancy — technical expert guidance while you implement - Facing WOPI Challenges — rescue and completion of incomplete implementations **Technical approach:** Multi-tenant microservice implementing WOPI API features (versioning, SHA256, Locks, correct response codes). The microservice interfaces with your core web application. --- # Microsoft Office Add-In Development **Canonical URL:** https://www.mckennaconsultants.com/microsoft-office-add-ins/ Microsoft Office Add-Ins enable you to enhance a user's experience of using Office by presenting an extension of your software inside the Microsoft Office web, mobile and desktop clients. Your SaaS software can look like a native part of Microsoft Office. **Examples of Add-In projects:** - Managing catalogues of terms and clauses and inserting them into Word documents - Linking Excel and Word documents for completing an Audit - Managing "know your obligations" risk with standard library of legal templates - Capturing email conversations for an enterprise content management system - Capturing emails for a specialist CRM system **Outlook Add-Ins:** Require complex back-end integrating with Graph API for tasks such as synchronising emails into a CRM system, organising calendar meetings. Involves implementing single sign-on between your SaaS app and Microsoft Azure. **Platform support:** Outlook, Word, Excel, and PowerPoint Add-Ins are supported on Windows, MacOS, iOS, Android, and the web (Chrome, Safari, Edge, Firefox). **Technical details:** Add-Ins are web sites with access to the OfficeJS JavaScript API library (HTML, CSS and JavaScript). Front end can be hosted on CDN. Task pane is the primary UI surface. XML manifest file is required. --- # B2B eCommerce **Canonical URL:** https://www.mckennaconsultants.com/b2b-ecommerce/ McKenna Consultants specialise in large-scale, complex, B2B eCommerce solutions built on composable architecture. A composable eCommerce solution integrates best-of-breed components into a cohesive whole that presents a great user experience. **What is composable architecture?** Building a business-focussed eCommerce web store based on the best fit-for-purpose components. Components typically include: eCommerce Core (Elastic Path), PIM, Business ERP, Search, Identity/Auth, Configure-Price-Quote, Payment, Analytics, and more. **Preferred platform:** Elastic Path Commerce Cloud (excellent account management and catalogue management features). **Existing systems integration:** Composable solutions build on your existing systems, no matter how old or complex. A composable architecture leverages these systems by placing facades over them making them into faster, more secure and more stable components. **Case studies:** - Astrak — composable eCommerce with Elastic Path, added £300,000+ in new monthly revenue since going live - Norgren — composable eCommerce --- # AI Consultancy And Development Services **Canonical URL:** https://www.mckennaconsultants.com/ai-first/ We build enterprise AI agents that shift the economics of your business. McKenna Consultants designs and delivers semi-autonomous and fully autonomous AI agents — systems that monitor, investigate, decide and act without waiting for a human to click a button. **The MASS Project:** Our McKenna AI Semi-autonomous System is an Azure Alert Intelligence Agent. It monitors cloud infrastructure alerts 24/7, autonomously investigates root causes by correlating logs, metrics and source code, then delivers a full investigation report to a Slack channel within minutes. **AI-Accelerated Software Delivery:** We use cutting-edge AI coding tools extensively (Claude Code, AI-assisted code review, agentic development workflows) to deliver production-quality software significantly faster than traditional development shops. **AI Maturity Pyramid:** - Level 0 — Ad-hoc / No AI - Level 1 — Conversational AI - Level 2 — Specialised AI Tools - Level 3 — Human-in-the-Loop Automation - Level 4 — Autonomous Agents McKenna Consultants are at Level 3 and actively working towards Level 4. **AI-First Transformation services:** Assess where you are, identify highest-value AI opportunities, build and deploy real AI agents, establish governance and human-in-the-loop controls, move up the pyramid deliberately. --- # Agile Coaching, Training & Consultancy **Canonical URL:** https://www.mckennaconsultants.com/agile/ McKenna Agile Consultants are experienced transformation engineers, dedicated to helping clients achieve business agility through Agile Training, Coaching, Consulting, and AI-First transformation. **Services:** - Agile Training — bespoke private training for all levels (teams to leaders) - Agile Consultancy — hands-on consultancy through transformation journeys - Individual & Team Agile Coaching — practical coaches helping people, teams and programs adopt an Agile mindset Beyond Agile, we help organisations become AI-first using our AI Maturity Pyramid framework. --- # Industry Sectors We Serve **Canonical URL:** https://www.mckennaconsultants.com/sectors/ A handful of sectors keep coming back to us with their hardest problems: audit and compliance teams who need document workflows they can prove are watertight, SaaS companies and software vendors who want Microsoft 365 embedded inside their products, legal SaaS providers who need collaborative contract editing, document management vendors whose platforms must edit Office documents in place, and manufacturers who need their catalogues, back-office systems and connected products working as one platform. ## Audit and Compliance **Canonical URL:** https://www.mckennaconsultants.com/sectors/audit-and-compliance/ Software development for organisations where document integrity, traceability and security are non-negotiable — from audit management SaaS to pension and share scheme administration. **Relevant services:** Microsoft Office Add-Ins, SharePoint Embedded, AI First **Clients in this sector:** AuditBoard, Corcentric, Kendox, Howells Associates, Workplace Pensions Direct ## SaaS and Software Vendors **Canonical URL:** https://www.mckennaconsultants.com/sectors/saas-and-software-vendors/ A specialist development partner for SaaS companies and ISVs: SharePoint Embedded, WOPI and Office Add-In expertise that puts Microsoft Word, Excel and Outlook inside your application. **Relevant services:** SharePoint Embedded, WOPI & Cloud Storage Partner Program, Microsoft Office Add-Ins **Clients in this sector:** AuditBoard, Kendox, Workiro, Corcentric, Slidebank.com ## Legal SaaS **Canonical URL:** https://www.mckennaconsultants.com/sectors/legal-saas/ Software development for legal SaaS and contract lifecycle management providers — collaborative contract editing with WOPI and SharePoint Embedded, and Word Add-Ins for clause and template workflows. **Relevant services:** WOPI & Cloud Storage Partner Program, SharePoint Embedded, Microsoft Office Add-Ins **Clients in this sector:** Corcentric ## Document Management **Canonical URL:** https://www.mckennaconsultants.com/sectors/document-management/ Software development for document management and process automation providers — WOPI and SharePoint Embedded document editing, Outlook Add-Ins and Microsoft Graph email sync for platforms like Workiro and Kendox. **Relevant services:** WOPI & Cloud Storage Partner Program, SharePoint Embedded, Microsoft Office Add-Ins **Clients in this sector:** Workiro, Kendox ## Manufacturing and Industrial Engineering **Canonical URL:** https://www.mckennaconsultants.com/sectors/manufacturing-and-industrial-engineering/ Long-term software partnerships with manufacturers and industrial engineering companies — composable B2B eCommerce with Elastic Path, ERP integration and connected IoT products. **Relevant services:** B2B eCommerce, Systems Integration, Internet of Things **Clients in this sector:** IMI Norgren, IMI Norgren, IMI plc, EnviroVent, Astrak Group --- # Digital Transformation **Canonical URL:** https://www.mckennaconsultants.com/digital-development/digital-transformation/ **Category:** Digital Services # IT Digital Transformation for Businesses Digital transformation involves integrating IT and digital technology throughout all aspects of a business. This is to create a positive change to the structure and processes you already have in place to elevate the business and benefit your customers. A key part of any digital transformation in business is the production of a new digital platform and the associated Apps. Our UK-based bespoke software development and digital transformations team can build an open, license-free digital platform that enables you to leverage your legacy systems as well as harnessing the latest technology. We can also build the Apps and APIs that will delight your customers and staff and improve global engagement with your business. ##Benefits Of A Progressive Digital Platform for Digital Transformation in Business - A low-risk incremental implementation that avoids the big bang release - Leverage your existing legacy systems as part of a modern solution - The IP is yours which means no license costs - Cloud-based for easy, flexible scaling over time - An open platform allows multiple vendors to collaborate easily over a common platform If you are keen to learn more about digital transformations, we have a wealth of knowledge on our [blog](/blog/) about this subject. This includes a 10 part series on [digital transformation for business](/an-expert-guide-to-using-digital-platforms/) as well as insights into [managing digital transformation in the 21st century](/managing-digital-transformation-in-business/). --- # Mobile App Development **Canonical URL:** https://www.mckennaconsultants.com/app-development-services/mobile-app-development/ **Category:** App Development

Mobile App Development for Business

We provide mobile application development services and design smartphone Apps for companies looking to improve their customer experience. In addition, mobile business App development can also create a gateway for a clear, direct line of communication with customers. Our App development services create high-quality digital products designed for specific and unique business requirements. ## Mobile Application Development Benefits - Enabling your company to evolve and remain competitive within its - Enhanced user experience, achieved by making data and products more accessible for customers and employees alike. - Develops great relationships between you and your customers through a digital experience. - To read more on the [benefits of business mobile application development for your company](/should-my-business-have-an-app/), please check out our blog post on the topic.
Four smartphones showing Envirovent mobile app screens with settings lists and a yellow header

Mobile App Development Services

Tablet dashboard for Mobile App Development page showing calendar, tasks, and billing panels
We have been building Apple and Android apps for our clients since 2010. We build native apps for iOS (iPhone and iPad) and Android (phone and tablets). Our apps are published in the Apple App Store and Google Play Store. To find out more about [cross-platform mobile development](/cross-platform-mobile-development/), please check out our blog post to find out more on this specific topic. Our clients have used our mobile business App development services to: - Help their customers find the right product quickly. - Create new direct relationships with their customers. - Enhance their customers’ experience of their services. - Improve the competitiveness of your business. - Provide a native app-based experience as an improved alternative to web site service (one client has routed £1,300,000 of revenue directly through their apps). We can also create the [cloud-based](/cloud-services/cloud-app-integration/) infrastructure, systems and databases to power your apps behind the scenes. If you are in need of a mobile App developer, please [contact](/contact/) our mobile application development experts today.
--- # Apple App Development **Canonical URL:** https://www.mckennaconsultants.com/app-development-services/apple-mobile-app-development/ **Category:** App Development

Mobile App Development for Business

Our Apple App developers create premium user experiences for iOS devices such as iPhones and iPads. We are experts in Apple native App development which gives a superior user experience and allows your software to access all of the iOS device features. ### Benefits of Apple mobile App development: - Access to higher income iOS, iPad and iPhone users. - Install your App on 500,000,000 Apple devices worldwide including 81,000,000 iPad users. - 41% of UK smart device users choose Apple for their device. - 78% of UK adults use mobile and smart devices to access the Internet. If you are unsure of whether your business requires an App, then please check out our blog post which answers the frequently asked question "[should my business have an App?](/should-my-business-have-an-app/)" Our Apple App developers created their first Apple mobile App for the iPhone 3 in 2010. Since then, we have created iOS mobile Apps for discovering and downloading product data, image recognition, instant energy meter top up, product identification, course instructor assistance and [IoT](/cloud-services/internet-of-things/) applications. Don't forget to check out our blog post on [how to build an App](/how-to-build-a-mobile-app-part-one/) to learn more about the development process. Alternatively, if you are seeking Apple native App development services, then please [contact us](/contact/) today.
Close-up of a silver iPhone back with the Apple logo, image used for Apple app development service
--- # Android App Development **Canonical URL:** https://www.mckennaconsultants.com/app-development-services/android-mobile-app-development/ **Category:** App Development

Mobile App Development for Business

Our Android App developers create highly engaging user experiences on mobile and smart devices for your customers. We create native Android Apps which gives the smoothest user experience and allows your software to access all of the Android device features. ### Benefits of Android mobile App development: - Android enjoys an 81% market share globally giving an installed base of over 2 billion devices, providing the largest customer reach in the world. - Mobile Apps are the preferred method for accessing services with 73% of users preferring them over websites. - In the UK, 59% of smartphones sold are Android devices making Android the dominant platform in the UK. To find out more about the [benefits of mobile Apps for business](/should-my-business-have-an-app/), then please check out our dedicated article on the subject. McKenna Consultants have been using Android App developer software and their expert skills to develop mobile Apps since 2010. We have developed Apps for various sectors such as animal health, food change certification, utilities, the legal profession, industrial retail, training and education and more. To get an insight into the initial stages of building a mobile App, check out our article on [how to build a mobile App](/how-to-build-a-mobile-app-part-one/). We have also developed Android mobile Apps in over 30 different countries and languages. So, whether you require Google Android App development for a mobile device or an App for use on a variety of Android smart devices, please [contact us](/contact/) today.
Android mascot standing on a smartphone displaying apps atop a blue circuit-board with colorful icons
--- # Web Apps **Canonical URL:** https://www.mckennaconsultants.com/app-development-services/web-application-development/ **Category:** App Development

Developing Web Applications

Our specialist precision web portal service enables easy delivery of digital experiences. Our web App development services have enabled our clients to rapidly deliver scalable and secure progressive solutions. ### Benefits of Web Application Development: - Improved business management through the presentation of a single, unified version of the truth. - Making web-based solutions globally accessible via a simple web browser on multiple platforms, without having to be installed and maintained on individual devices. - An easily adaptable solution which is able to grow on demand without complex configuration. - Easy maintenance for our clients’ employees and customers.
Desktop computer with code editor on screen, surrounded by floating UI icons on a blue background
--- # PWA Development **Canonical URL:** https://www.mckennaconsultants.com/app-development-services/progressive-web-app-development/ **Category:** App Development
PWA development provides an enhanced and more engaging user experience for web Applications. As progressive [web ppp developers](/app-development-services/web-application-development/), we create web Applications that run on any device and automatically enhance themselves based on the capabilities of the individual device. For example, a device fitted with GPS may allow a PWA to locate nearby services or provide an up-to-date location for a service centre. ### Benefits of Progressive Web App Development - Provides a familiar user interface that drives engagement and keeps users coming back again and again. - It is securely delivered over HTTPS to ensure the integrity of your data. - Like other Apps, PWAs can be installed on a user’s device which gives a more native feel to the Application. They will also update themselves in the background to the latest version automatically which means that users will benefit from the newest features and experience. - In environments with poor internet connectivity, PWA’s can seamlessly manage drops in connections thus providing the user with a less disrupted experience. You can find out more about progressive web Apps and the other benefits they have over on our [blog](/blog/). We have extensive guides containing all the information you need to know about [PWA's and installable web apps](/progressive-web-apps-explained/) readily available for you. McKenna Consultants' PWA Apps have serviced clients in varying industries such as the legal profession, energy utility sector and industrial retail. If you require progressive web App developers to advance your business through progressive web applications, please [contact us](/contact/) today.
a developer standing with a tablet among floating UI windows and gears, representing PWA development
--- # MS Azure Cloud Development **Canonical URL:** https://www.mckennaconsultants.com/cloud-services/microsoft-azure-development/ **Category:** Cloud Services

Microsoft Cloud Development

McKenna Consultants are Azure [cloud](/cloud-services/cloud-app-integration/) development specialists. Microsoft Azure provides the ability to create scalable, robust, secure, flexible and simple [cloud-based solutions](/cloud-services/cloud-app-integration/). These cloud services are the powerhouse behind creating great digital experiences for your customers. Our Microsoft Azure cloud solutions enable our clients to leverage their existing IT investments by connecting current solutions to the Internet. Microsoft Azure’s ability to scale solutions easily means that decisions relating to system sizing can be deferred until later in the development lifecycle. This also means that your solution can easily be resized on-demand as your digital platform grows. To learn more about the [Microsoft Azure IoT Hub](/microsoft-azure-iot-hub/), a great example of an Azure IoT cloud service, then please read our blog post on the topic. ### What are the benefits of Microsoft Azure cloud solutions? - A robust framework on which to build your digital platform. - Many built-in security features such as Key Vault to keep your sensitive data secure. - A simple user interface that allows easy modification of cloud-based resources giving you maximum flexibility in system deployment. McKenna Consultants have many years of experience building Microsoft Azure cloud services. Our Azure software has powered many applications from [IoT solutions](/cloud-services/internet-of-things/) to [systems integrations](/digital-development/systems-integration-services/). To find out more about [how to architect cloud-based platforms for digital systems integration](/an-expert-guide-to-using-digital-platforms/), please check out our blog post. If you are looking for Azure cloud development services, please [contact us](/contact/) today.
Microsoft cloud logo hovering above a glowing circuit-board platform representing Azure cloud development
--- # Internet of Things **Canonical URL:** https://www.mckennaconsultants.com/cloud-services/internet-of-things/ **Category:** Cloud Services

IOT Development Services

Our Internet of Things (IoT) development services provides businesses with seamless integration between their smart devices, [cloud-based](/cloud-services/cloud-app-integration/) systems and other complex software systems. Our experienced bespoke IoT development team builds software to connect devices and people together to create a seamless user experience. We offer Internet of Things solutions to quality and professional standards for clients requiring bespoke IoT products. If you are [thinking about IoT](/are-you-thinking-about-iot/) for your business but are keen to know more, please check out our [blog](/blog/) to learn more about [IoT security](/internet-of-things-security/) and other related topics. Alternatively, if you are searching for an experienced team who are specialists in IoT development, please [get in touch](/contact/) today.
Retro hardware grid of monitors, boxes and cables illustrating IoT and cloud services
--- # IoT App Services **Canonical URL:** https://www.mckennaconsultants.com/cloud-services/iot-app-services/ **Category:** Cloud Services

IOT Applications And Services

Our IoT App development services provide our clients’ customers with the ability to remotely control their products from anywhere in the world. An IoT App from McKenna Consultants enables companies to bring quality IoT solutions to any platform and connect customers with their devices. The main benefit of using an Internet of Things App is providing customers with a better user experience, seamlessly integrating their devices with their existing infrastructure. IoT App services also provide: - A preferred approach for people to interact with devices. - A simple user experience that interacts with your complicated legacy back office systems. - An automatic over-the-air (OTA) update system to ensure that the firmware of your IoT device is always up to date. Our clients have been able to receive millions of pounds of revenue via the IoT Apps we have created. As an IoT application development company, we are able to provide the complete end to end solution for controlling your IoT devices. To find out more details about the [application software integration](/application-software-integration-explained/) process and how to link IoT devices with Apps, please check out our informative blog post. We offer IoT App development services to customers looking to improve their competitive position within the market as part of a [digital transformation](/digital-development/digital-transformation/). If you require an experienced Internet of Things App development company please [get in touch](/contact/) today.
Hand holding smartphone with floating IoT and cloud icons illustrating connected devices and services
--- # Azure IoT Hub **Canonical URL:** https://www.mckennaconsultants.com/cloud-services/azure-iot-hub/ **Category:** Cloud Services

Azure IoT Integration

Our Azure IoT Hub services deliver [IoT cloud integration](/cloud-services/cloud-systems-integration/) quickly by using secure, scalable and resilient off the shelf cloud components such as the Azure IoT Hub. This Microsoft IoT Hub provides all of the necessary technology and infrastructure to connect your IoT devices to your operational systems, via an IoT cloud service. ### Benefits of Azure IoT Service Hub - Azure IoT Hub provides a variety of standard protocols off the shelf for communication with your IoT devices. - The Internet of Things Hub provides a standard security system to authenticate IoT devices trying to connect to your network. This provides maximum security for your operational systems. - The Azure IoT Hub uses cloud components such as Event Grids, Service Buses and Blob Storage to give maximum scalability and resilience. McKenna Consultants’ Microsoft IoT Hub services team have created Azure IoT Hub applications for devices such as fresh air vents, utility meters, phone systems, Amazon Alexa, Foobot and many more. These systems reliably serve tens of thousands of users every day. For more information on the [Microsoft Azure IoT Hub](/microsoft-azure-iot-hub/) as a [cloud service](/cloud-services/microsoft-azure-development/), please check out our [blog](/blog/) post dedicated to this topic. If you are looking for Azure IoT Hub services, please [contact us](/contact/) today.
Azure IoT Hub network diagram showing a blue cloud connected to multiple devices and edge equipment in a cloud servic…
--- # IoT Systems Integration **Canonical URL:** https://www.mckennaconsultants.com/cloud-services/iot-systems-integrators/ **Category:** Cloud Services

IoT System Integration

As a system integrator, McKenna Consultants deliver [IoT solutions](/cloud-services/internet-of-things/) that provide scalability, security and resilience for your application needs. When it comes to system integrator companies, we are the most reputable in creating effective solutions using off the shelf IoT infrastructure from providers such as [Microsoft Azure](/cloud-services/azure-iot-hub/) and Amazon AWS. ### Benefits of IoT System Integration - Cloud providers have a variety of protocols available as standard for communication with your IoT products. - Certificate-based security is provided off the shelf by multiple IoT cloud providers which improve the overall security of your solution. - The use of a standard IoT cloud platform enables you to focus on innovation within your business while your cloud provider focuses on keeping the lights on. McKenna Consultants is at the top of the list of IoT system integrators that can create an effective solution for integration. We have integrated with services such as IFTTT, Amazon Alexa, [iOS](/app-development-services/apple-mobile-app-development/) and [Android Apps](/app-development-services/android-mobile-app-development/), Google Assistant and many more. To find out more about [IoT integration with back office systems](/app-development-services/android-mobile-app-development/), then please check out our dedicated blog post on this topic. If you are curious to learn about our system integrator roles and responsibilities and how we can work with you on achieving IoT system integration, please [contact us](/contact/) today.
Central wireless hub with interconnected IoT device icons in a blue network
--- # IoT Smart Devices **Canonical URL:** https://www.mckennaconsultants.com/cloud-services/iot-device-development/ **Category:** Cloud Services

IoT Devices

McKenna Consultants help our clients with their IoT device development by delivering IoT connected devices through our integration services. What is meant by IoT devices? Well, an IoT device is an object that has a sensor on it that can transfer data to other objects via the Internet. We provide the Apps and [cloud-based](/cloud-services/cloud-app-integration/) infrastructure that allows an IoT device to communicate with your operation systems and your customers. ### Benefits of Integrating IoT Devices - Allowing your customers to control their IoT smart devices at their convenience from anywhere in the world. - Create a direct relationship between you, your customer and their devices. - Gather extensive accurate and up to date data on the performance and usage of your IoT smart devices. - Use cloud-based artificial intelligence to analyse and make predictions based on the big data produced by your IoT smart devices. McKenna Consultants have extensive experience of integrating Internet of Things devices, including integration with IoT enabled phone systems, electricity meters, fresh air vents and more. If you are curious to learn more about how [IoT security](/internet-of-things-security/) works, please read our informative blog post on the topic. Should you require IoT device integration for your business, then please [get in touch](/contact/) with us today.
IoT smart devices icon set including appliances and gadgets on a blue background
--- # Case Study: IMI Norgren — New Global Composable eCommerce Store **Canonical URL:** https://www.mckennaconsultants.com/project/norgren-composable-ecommerce/ **Category:** B2B eCommerce [Norgren](https://norgren.com) (a brand of IMI Precision Engineering) have a long history of a global eCommerce presence. Their primary business is the large-scale, rapidly-moving development of innovative precision engineering components. Whilst their previous web store had successfully generated hundreds of millions of dollars of revenue over the years, to take the next leap forwards required a modernized, faster, more stable and secure web store. ## The Challenge The previous Norgren web store was a bespoke system that was written and maintained externally. This meant that new innovations were slower to roll out than desired and the cost of ownership was high. The goals for the new web store were to produce something that met the following criteria: 1. Off-the-shelf solution 1. Lower cost of ownership 1. Quick to implement new features 1. Faster 1. More stable ## The Solution Whilst we did not initially set out with a composable solution in mind, [composable eCommerce](/composable-ecommerce-and-elastic-path/) quickly presented itself as the optimum solution. Various services (such as [Elastic Path eCommerce](https://www.elasticpath.com/), search, navigation, geo-location) could be purchased off-the-shelf and configured as desired by IMI. Each of these services is developed, maintained and hosted as cloud services by the supplier. These attributes effectively decreased the cost of ownership and allowed the development of the new web store to focus on innovative features (such as product configurators). The distribution of the workload of the web store across multiple components meant that the Google Lighthouse score was raised to 100% at launch, thus giving a much faster user experience and improving search engine visibility. The distribution of workload also reduced the risk of a single point of failure. Should a single component become unavailable (such as geo-location), the majority of the web store features will carry on without slowing down online order flow. We have worked with both [Norgren](/project/norgren/) and [IMI Precision Engineering](/project/imi-precision-engineering/) in the past – see our [case studies](/case-studies/) to learn more. If you would like to discuss composable eCommerce solutions for your business or project, please [get in touch with McKenna Consultants today](/contact/). --- # Case Study: AuditBoard — Word and Excel Microsoft Add-In Case Study **Canonical URL:** https://www.mckennaconsultants.com/project/auditboard-microsoft-add-in-case-study/ **Category:** Microsoft Office Add-In Developer ## Project Background [Auditboard](https://auditboard.com/) are a provider of auditing, compliance and risk management software. Their software requires evidence and information to be gathered from Word and Excel documents and linked to information inside their platform. For more information, please fill in our [Contact Form](/contact/). ## The Challenge Auditboard had already begun development of their [Microsoft Add-In](/what-are-microsoft-outlook-add-ins-how-do-they-work/) and realised that it was popular with their customers. They decided to accelerate further development of the Add-In by bringing in [McKenna Consultants](/about/) as specialist Add-In developers. ## The Solution McKenna Consultants worked directly with Auditboard’s core Jira, Figma and other systems as well as directly participating in their Agile software planning processes. We were able to provide not only a development service, but suggestions and advice on good practice in Add-In development, including recommendations on submission to Microsoft and complying with [Microsoft AppSource guidelines](https://learn.microsoft.com/en-us/power-platform/developer/appsource/publish-app). If you are considering [Microsoft Office 365 Add-Ins](/microsoft-office-add-ins/) and [WOPI integration](/cspp-wopi-cloud-storage-partner-program/), McKenna Consultants can help. We are specialists in Office 365 integration software development and have extensive experience assisting clients with Add-Ins for Word, Excel, Microsoft Outlook and more. To discuss the best technology solution for your business, [please don’t hesitate to contact us today](/contact/). --- # Case Study: Kendox — Empowering Paperless Productivity With WOPI **Canonical URL:** https://www.mckennaconsultants.com/project/empowering-paperless-productivity-with-wopi-for-kendox/ **Category:** CSPP WOPI > "Working with McKenna Consultants on our WOPI integration was a seamless and highly productive experience. Their team brought deep technical expertise and a clear understanding of both the Microsoft ecosystem and hybrid deployment challenges. McKenna's ability to collaborate closely with our in-house developers—particularly around integrating with our existing microservices architecture and aligning with our UX goals—was invaluable. Thanks to their support, we were able to deliver a WOPI implementation that works reliably across both our SaaS and on-premise environments, fully meeting the standards of Microsoft's Cloud Storage Partner Program (CSPP). I would gladly recommend McKenna Consultants to any organisation looking for a serious partner in enterprise-grade Office integration." — Andreas Pfanner, Head of Software Development, Kendox AG ## Client Overview [Kendox](https://www.kendox.com/) is a leading provider of digital document and process automation solutions. Their mission is to help organisations achieve true paperless operations by digitising and optimising business-wide processes. With a focus on productivity, efficiency, and secure information access from anywhere, Kendox serves customers across both SaaS and on-premise environments. ## Challenge Kendox aimed to improve their document management experience by enabling users to open, edit, and save Microsoft Word, Excel, and PowerPoint documents directly within their web application—without downloading or reuploading files. Achieving this required a robust integration with Microsoft Office via [WOPI (Web Application Open Platform Interface)](https://www.mckennaconsultants.com/cspp-wopi-cloud-storage-partner-program/), while preserving document security, version control, and compatibility across customer deployment models. In addition, the solution needed to align with Microsoft’s Cloud Storage Partner Program (CSPP) to ensure high standards of interoperability and performance with Microsoft 365. Key requirements included: - Support for both SaaS and on-premise customers. - Seamless integration into Kendox’s existing microservices architecture. - Compliance with CSPP standards. - A collaborative approach to integrating with the user experience. ## Solution Kendox selected McKenna Consultants to deliver the WOPI implementation based on their deep technical expertise and extensive experience with WOPI and Microsoft Office Add-Ins. McKenna’s proven track record of working with enterprise systems and hybrid environments made them an ideal development partner. Working closely with Kendox’s internal team, McKenna Consultants provided: - WOPI architecture design tailored for hybrid deployment—ensuring consistent functionality for both SaaS and on-premise clients. - Microservices integration, updating Kendox’s backend to securely support WOPI editing sessions. - Technical collaboration on the UX design, ensuring the new editing capabilities integrated smoothly into the existing web interface—even though UX was led by Kendox’s in-house designers. - Strategic guidance to ensure the implementation aligned with CSPP technical and security requirements. ## Results With the new WOPI-powered editing functionality in place, Kendox users can now: - Open and edit Microsoft Office documents in-browser, securely and efficiently. - Maintain complete version control and audit trails inside the Kendox platform. - Enjoy a seamless, integrated experience using the familiar Microsoft Office UI. - Meet the interoperability expectations of Microsoft CSPP, reinforcing customer confidence. The collaboration has enhanced Kendox’s position as a modern, paperless-first solution provider, and significantly improved productivity for their users. ## Why Kendox Chose McKenna Consultants Kendox engaged McKenna Consultants to augment their already excellent team because of McKenna’s: - Expert-level knowledge of WOPI and Office integration. - Proven ability to build for hybrid SaaS/on-premise deployments. - Familiarity with CSPP compliance and Microsoft platform interoperability. - Professional, collaborative approach that complements in-house development teams. --- # Case Study: CappKind Consulting — WOPI Case Study **Canonical URL:** https://www.mckennaconsultants.com/project/cappkind/ **Category:** CSPP WOPI ## Project Background CappKind are a high-performance construction consultant providing services throughout the UK. They have an in-house specialist software development team who create and enhance their core web platform, and they reached out to us for assistance on their latest project. ## The Challenge The in-house development team needed assistance – but not an end-to-end service – to develop their WOPI implementation, so that they could [embed Microsoft Office inside their web application](/using-wopi-to-embed-microsoft-office/). Rather than a typical out-sourcing arrangement, they were looking for a co-sourcing system. You can learn more about the benefits of [co-sourcing software development](/co-sourcing-app-software-development-companies/) over on our blog. ## The Solution We began with a two-hour consultancy session in which we explained the details of WOPI and the trickier points of WOPI implementation. As the WOPI implementation was developed, we had access to the source code, which meant we could provide feedback and help with tracking down and fixing any bugs that we came across. Microsoft approved this WOPI implementation on the first submission. If you are interested in outsourcing or co-sourcing [WOPI integration](/cspp-wopi-cloud-storage-partner-program/) solutions for your business, or if you are struggling with [troubleshooting WOPI API](/troubleshooting-wopi-api/) or other issues, please don’t hesitate to [get in touch](/contact/) with [McKenna Consultants](/) today. --- # Case Study: EnviroVent — myEnviroVent Internet of Things Mobile App **Canonical URL:** https://www.mckennaconsultants.com/project/envirovent/ **Category:** Internet Of Things > "... our installers have been able to improve their efficiency setting up ventilation units by using the clear user interface in the App. The integration with our units electronics is great and the development process was smooth." — Rory Percival, R&D and Technical Manager ## Project Background EnviroVent are a leading supplier of ventilation systems. Their ventilation products are included in over a million homes in the UK and solve damp, condensation and mould problems. ## The Challenge With the advent of the “[Internet of Things](/cloud-services/internet-of-things/)”, EnviroVent saw an opportunity to dramatically improve the usability of their ventilation products in a way that was previously not possible. EnviroVent felt that if they could provide a more accessible, easier interface, their customers would use their products more and also more effectively. ## The Solution McKenna Consultants built [iOS](/app-development-services/apple-mobile-app-development/) and [Android](/app-development-services/android-mobile-app-development/) Apps (phone and tablet) for EnviroVent which connect to EnviroVent ventilation products. The EnviroVent App allows EnviroVent’s customers to quickly and easily see the current speed (and other settings) of the ventilation unit and alter those settings according to their preferences. This not only makes the ventilation products easier to use for customers, but it gives the ventilation units a value-added feature that competitors lack. These are just a few benefits of using mobile App development within a business, particularly within cross-platform development. To find out more about [cross-platform mobile development](/cross-platform-mobile-development/) please read our detailed post. ## Delivery Delivery of this product required [application software integration](/application-software-integration-explained/) with EnviroVent ventilation unit electronics and communication over wireless protocols. This App has been so well-received and successful that the complete system won the [2017 “Smart Product Of The Year”](https://www.envirovent.com/about-us/awards/) award. Please [contact us](/contact/) to find out how we can provide a positive software solution for your business bases on our bespoke digital services. --- # Case Study: Howells Associates — Share Scheme Tracking Software **Canonical URL:** https://www.mckennaconsultants.com/project/howells/ **Category:** App Development > ""McKenna Consultants provide a valuable, knowledgeable and professional software development resource, coaching and training team to help assist, guide and nurture our own in house team of developers."" — Simon Hurley, Client Services Director ## Project Background Since 1991, Howells have provided innovative and market leading services for share scheme administration. McKenna Consultants have a long standing relationship with Howells going back to when our CEO, Nick, was on his summer break from Hull University. We have been working closely together now since 2010 helping Howells with their various software development and product management needs. This particular project involves working with Howells to take their Share Scheme Tracking software to the next level. We worked closely with the development team to build a new and improved web version of their product to roll out to their customer base. We are proud to have a great working relationship with the development team and client services team at Howells, undertaking software development mentoring, agile consultancy and product ownership. We have worked with the team to develop various software development solutions over the years and help meet the needs of their Clients. ## The Challenge Software development is at the heart of Howells. The Development Team at Howells we tasked with re-writing one of their existing platforms in .NET in order to keep ahead of the competition. Howells were looking specifically for five things from their chosen software development partner. These were: 1. Industry/sector knowledge 2. .NET expertise and teaching ability 3. Agile software development consultancy 4. Locality 5. Trust ## The Solution We were more than happy to help the Development Team at Howells fulfil all of their requirements. We were able to help Howells by: 1. Industry/sector knowledge – We have extensive experience of working within this sector. This experience proved vital on a regular basis throughout the project. 2. .NET expertise and teaching ability – As all of our computer programmers have a minimum of 10 years industry experience, it is expected that our team help to teach, coach and mentor each other on a daily basis. We also were able to provide formal group sessions and one to one coaching. 3. Agile software development consultancy – We have been providing Agile consultancy and training for years and uniquely using these methods on a day to day basis on successful projects. No other company practices what they preach like we do. 4. Locality – We are based in Harrogate, Yorkshire, which is close to Howells, meaning that regular face to face meetings were quick and easy. 5. Trust – The way in which we develop software means that trust is instilled within our Clients and partners right from the very beginning. ## Delivery Some of the services that we provide Howells with are: - Development of Share Scheme Administration Software - Development of Reporting Software - Agile Software Development Consultancy - Developer Training and Mentoring - Testing - Specification of Requirements - Product Ownership Our relationship with Howells has gone from strength to strength over the years as we continue to deliver solid, reliable working software. We are always working with Howells on new and exciting software projects to help keep them at number one in their marketplace. --- # Case Study: IMI Norgren — Native Mobile App For Industrial Engineering **Canonical URL:** https://www.mckennaconsultants.com/project/norgren/ **Category:** B2B eCommerce ## Project Background Norgren, part of IMI, were looking to assist their customers with finding the right engineering component at the right time. When a replacement component is needed for a factory production line, it is often needed quickly. The customer needs to know: - What the component is that needs replacing - Where they can buy the component - When they can have the component Ideally, the customer should be able to move from needing a component to identifying a component to ordering a component as quickly as possible ## The Challenge Like many engineering companies, Norgren’s IT systems were built with internal efficiency and operations in mind, and in this they have been very successful. From the customers’ point of view, however, the right information and tools were not available at the right time. The challenge here was to utilise the excellent internal systems in a modern, intuitive way to let the customer go from need to purchase as quickly as possible. ## The Solution This project combined our expertise in the development of native mobile Apps for [iOS](/app-development-services/apple-mobile-app-development/) and [Android](/app-development-services/android-mobile-app-development/) with our extensive experience of building “back-end” systems that integrated more complex IT system so that information could easily be presented to the customer. Using our native mobile app development, we created a native iOS App and a native Android App to allow us to take full advantage of all of the features available on a mobile device. ## Native Mobile App Development Our native mobile app solution: - Allows users to search over 300,000 Norgren components instantly - Allows users in over 30 countries in over 30 languages to search for Norgren components - Provides the ability for a customer to simply scan a product text label to find a matching component (using Artificial Intelligence and OCR) - Allows scanning of bar codes and QR codes to find replacement components - Allows conversion of thousands of competitor part numbers into Norgren part numbers to make it very easy to find compatible Norgren components - Allows users to check the tens of thousands of components that Norgren distributors have in stock all over the world - Allows users to find a local distributor with the components in stock - Allows users to order components from the online web store ## Delivery Our [Agile](/agile/) approach to delivery meant that we could prioritise the development and delivery of the App features in order of the greatest business value. We then managed the global rollout of the App to over 30 countries around the world, including the development of a custom-build [web portal](/app-development-services/web-application-development/) to allow each local territory to provide their own localised text for the App. Also, it provides up to date information on local distributors so that their stock could be included in the App. If you are wondering whether your business would benefit from having an App, then please read our informative guide on the [benefits of having a native mobile App](/should-my-business-have-an-app/). Or [contact us](/contact/), to find out how our native mobile app development services could help your business. --- # Case Study: Slidebank.com — Mobile Presentation Management App **Canonical URL:** https://www.mckennaconsultants.com/project/slidebank/ **Category:** App Development > "A very big 'thank you' to everybody (at McKenna Consultants) for an excellent job and for such an extraordinary effort." — Stephen Brabbins, CEO ## Project Background Slidebank.com is a Presentation Management Service for Companies with ‘Thousands of PowerPoint® slides that nobody can find’. We worked closely with Slidebank.com staff to produce a sophisticated [Web App](/app-development-services/web-application-development/), allowing users to manage presentation slides ‘on the go’ via mobile devices. McKenna Consultants worked with the development team at Slidebank.com to create a mobile interface for them. The project resulted in McKenna Consultants creating an elegant Mobile Presentation Management App for Slidebank.com ## The Challenge Slidebank.com were finding that their customers were crying out for a mobile solution to their already outstanding product. They wanted to build a great app, but did not have the capacity in house to take such a project on, as they had to focus on their desktop application. This meant that Slidebank.com had to look for an expert in mobile development to carry out the work for them. As they are based a few miles away in Bradford, Yorkshire, and coupled with our expertise in mobile development projects, McKenna Consultants were the perfect option for them. ## The Solution This App is an iPad mobile front-end for Slidebank and has much of the advanced functionality provided by the regular desktop App. In addition, the iPad App has improved slide sorting for greater ease of use and to help ensure slide selections can be quickly re-purposed for any audience. Features of the App include: - Drag and drop to manage PowerPoint slides - Search functionality - Slide Sharing - Emailing - Works with other iPad Apps such as Box.com, GoodReader and KeyNote - The finished App is fast, easy to use and perfect for presenters on the move The app communicates seamlessly with the Slidebank web service to provide access to important slides fast. This has meant that not only has the app delighted Slidebank.com’s existing customers, but has also enabled them to acquire new ones in the process. ## Delivery We worked closely with the development team at Slidebank.com to produce this great app. It was developed using our trademark Agile Software Development process. In order to get rapid feedback from the Client, we made remote provisioning files available to Slidebank.com on a daily basis so that they could approve work as and when we completed it. For more information about the App and Slidebank.com services, visit their Website: www.slidebank.com. Or, please [contact us](/contact/) to find out how we can use our bespoke software development services to help you connect with your clients and customers via [Mobile App development](/app-development-services/). Alternatively, please check out our informative article about how a [Mobile App](/should-my-business-have-an-app/) can help you gain competitive advantage, to discover further benefits of using a mobile App within your business. --- # Case Study: Switch 2 — iPhone, iPad, Android and Web Development **Canonical URL:** https://www.mckennaconsultants.com/project/switch2/ **Category:** App Development > "I would recommend McKenna Consultants to any organisation that is looking for a strong partner to help them develop great software." — Mark Tyson, Project Manager ## Project Background Switch2 is one of the biggest UK providers of pre-payment, metering and related services to community and district heating schemes. Switch2 provides services such as financial modelling, equipment, commissioning, project delivery, metering, data provision, billing, debt management, operations and maintenance for their clients. ## The Challenge Switch2 has a large number of domestic end-users in accommodation with Pay As You Go style energy meters. Until now, those users have had to leave their home and travel to a local shop in order to top up their meter and had to wait up to 24 hours to receive their top up. Switch2 have long wanted to improve this experience for their end users. ## The Solution The solution to the problem was the development of two mobile Apps and a responsive web site that worked on Android (phones and tablets), iPhones and iPads and any web browser. In phase 1 of the project (QuickPay), these Apps allow end-users to log in to their accounts and use a credit or debit card to top up their Pay As You Go meter. In phase 2 of the project (Auto Top-up), we added new functionality to allow the end users to set up automatic meter top ups from their credit card based on either a financial threshold or on a periodic payment basis. ## Delivery The Switch2 team handled integration with their back-end systems whilst McKenna Consultants build the front-end web services and mobile Apps required to organise payments. This successful delivery of this project required management of a complex set of variables including a rebrand of the Switch2 business and shifting priorities. --- # Case Study: Turn Key Air Conditioning — Mobile App Case Study **Canonical URL:** https://www.mckennaconsultants.com/project/tk-air-conditioning/ **Category:** App Development ## Project Background Turn Key Air Conditioning are a specialist in the design, supply, installation and maintenance of air conditioning and ventilation systems. As their business has grown rapidly, they realised that they needed to transform their business from a paper-based organisation to a digital organisation. ## The Challenge Turn Key Air Conditioning's systems were paper-based from the point that jobs were allocated to engineers through to the process of filling job sheets in and processing those sheets in the back office. This was a slow, manual process that needed to be streamlined for efficiency. ## The Solution An [Android mobile App](/app-development-services/android-mobile-app-development/) was developed for the field service engineers so that they could download their jobs in real time and upload job information as they worked. Job information includes: - Worksheets - Materials used - Photographs of access and installations - Time spent travelling and on site and many others. Due to the environments that the engineers work in, the [Mobile App](/app-development-services/) works with and without an internet connection. The mobile App then submits the job information (via [the Cloud](/cloud-services/cloud-app-integration/)) to a cloud-hosted back office [web application](/app-development-services/web-application-development/). The back office team are able to see job results in real time which enables them to effectively plan ahead, solve problems and process jobs far more quickly than before. Integration with finance systems enables more rapid and accurate billing of customers which improves cashflow across the business. [Digital transformation](/digital-development/digital-transformation/) made a huge difference to this company’s efficiency. If you would like to learn more about digital transformation for your business, please check out our post on how cloud computing works or [get in touch](/contact/) with us at [McKenna Consultants](/) today. --- # Case Study: Wolseley UK — Change Management Software **Canonical URL:** https://www.mckennaconsultants.com/project/wolsley/ **Category:** App Development > "...McKenna Consultants continue to come up with innovative solutions to the business requirements, adapt to changing requirements, troubleshoot any issues and most importantly, gets the job done to a high quality, professional standard." — Nathan Wright, Lead Project Manager ## Project Background In 2013 Wolseley UK began an ambitious programme to refit the entire IT and telecoms infrastructure of all of their branches throughout the UK. A programme of this scale required detailed, accurate and up to date project management information. Several organisations were involved in the programme beyond Wolseley UK including IT, business, a service integrator and a large cabling and telecoms provider. Soon after the programme began, the Project Management Office realised that a more sophisticated document management solution was needed. ## The Challenge Excel spreadsheet are good for small volumes of unstructured or semi-structured data for a tiny number of users. Wolseley UK quickly learned that due to the large number of users, frequency of data changes, volume of data etc that Excel spreadsheet were not working. The same data was replicated on different sheets and frequently had conflicting values. It also became apparent that data was becoming difficult to find and any kind of reporting was extremely time and labour intensive. ## The Solution In order to streamline and optimise the Project Management processes, Wolseley UK appointed McKenna Consultants to build a bespoke web-based project management tool called Connect. Connect needed to be accessible from anywhere in the world, cope with the complex data and provide a rapid, intuitive user experience for a variety of different users. In essence, Connect provided a single, definitive version of the truth Connect needed to keep a complete audit of all data changes and actively update users when data they may be interested in was changing. Connect quickly became the reliable pulse of the IT refit programme! In additional, detailed and instant reporting was required along with automated production of key documentation relating to the programme. ## Delivery Connect was delivered in McKenna Consultants’ trademark Agile manner. Within a few weeks the first release of the software was made and users started to get the benefits of early and often releases of new features. Incremental changes were delivered every 24 or 48 hours in response to user feedback and requests for additional functionality. Connect continues to be used today and is still being improved and modified to meet the changing needs of the IT refit programme. --- # Case Study: Workplace Pensions Direct — Orak Pension Integration Web Based System **Canonical URL:** https://www.mckennaconsultants.com/project/workplace-pensions-direct/ **Category:** App Development > "We were looking for a secure API technology developer who would work with us to build an innovative ‘translator’ system without requiring detailed requirements specifications, the end result is absolutely brilliant!" — Steve Conley, Business Development Director ## Project Background UK pensions are changing rapidly with the introduction of Auto-Enrolment. This has presented new challenges to the pension industry. Workplace Pensions Direct are in the centre of the pensions web, leading the way in process, technology and integration between agencies. ## The Challenge Pension providers, payroll providers, trusts and agents all use disparate systems that do not easily talk to each other. As such, data exchange is slow, unreliable and sometime insecure. Since the information being exchanged between these agencies is sensitive, an automated solution would improve security significantly as well as deliver lead time and productivity improvements. ## The Solution McKenna Consultants have built a unique “hub” called Orak Pension Integration Web Based System (Orak) which accepts data in variety of formats from payroll systems (e.g. Sage, Iris etc) and delivers that information out to different pension providers in different formats (e.g. CSV, XML etc) over different transport mechanisms (SFTP, HTTPS web services etc). Orak provides an innovative, centralised “translator” between all of these different providers and formats and enables quick, reliable and secure communications between them. ## Delivery Phase 1 of Orak is now live having been delivered and become operational in a very short time frame. Hosting of the solution is cloud-based to provide “elastic” expansion as Auto-Enrolment adoption increases rapidly. This provides a cost-effective solution and allows the platform to seamlessly grow on demand without complex configuration. --- # Case Study: Youth for Christ — iOS and Android App Development **Canonical URL:** https://www.mckennaconsultants.com/project/youth-for-christ/ **Category:** App Development > "Throughout our project the team at Mckenna have been a pleasure to work with, during each stage of production they have operated an “Open Book” workflow - no surprises and 100% flexibility, allowing us to get the product we want and keeping within our budget." — Martin Ainsworth, Director of Media Ministries ## Project Background Youth for Christ is a worldwide Christian movement working with young people around the globe. Youth for Christ is made up of tens of thousands of full-time, part-time and volunteer indigenous staff in over 140 nations. They wanted to reach out to young people all around the world and explain the Story of Jesus in the most modern, cost efficient and engaging way possible. We were approached with the challenge of creating an innovative iPhone, iPad and Android app to share the Story of Jesus comic book in 49 different languages. ## The Challenge Youth for Christ approached us with the idea of producing a mobile app on both the iPad, iPhone and on Android tablets and phones. The app was to enable people to download copies of a comic book publication telling the story of Christ. The digital publication had to be able to be downloaded in over 40 different languages in order to reach all of the app’s potential market. This meant that the app had to satisfy as many handsets and tablets as possible. The app had to quickly and easily allow someone to find the edition of the comic book in their chosen language and be able to be read easily. ## The Solution We worked closely with Youth for Christ have created two stunning mobile apps, accessible on both mobile phones and tablet devices. The first is a native iOS iPad and iPhone app. Following the successful build and deployment to Apples’s AppStore, we then moved on to create an equally stunning native Android app. We chose to build the app native to both iOS and Android rather than cross platform as it was critical to give the smoothest, slickest and best user experience possible. ## Delivery As always, the build of the Apps were delivered in McKenna Consultants’ trademark Agile manner. In order to gain continual feedback from the Client and to allow us to deploy new versions of the app daily, we used TestFlight. TestFlight enables us to distribute the versions to the Client quickly and easily. The project lead for Youth for Christ had a Acer Iconia A1 Android tablet, so we worked closely to make sure that the app worked on this device, as well as other specified Android handsets and tablets. We sat down with the Client and deployed the app to Apple’s AppStore and the Google Play Store on the Client’s own developer accounts. --- # Case Study: IMI plc — Systems Integration For Digital Transformation **Canonical URL:** https://www.mckennaconsultants.com/project/imi-precision-engineering/ **Category:** Artificial Intelligence > "The platform that McKenna Consultants have built for us has enabled us to get at information that was previously hidden away in our computer systems. Being able to get consistent, clear information out of our existing IT systems has made a huge impact on our efficiency." — Ciaran Crowley, Global Digital Sales And Marketing Director ## PROJECT BACKGROUND IMI Precision Engineering (part of IMI plc) are a world leader in motion and fluid control technologies. IMI develop innovative precision engineering components all over the world. This large-scale, fast-moving and competitive environment has led IMI to pursue a Digital Transformation in which they have chosen “best of breed” computer systems for its operations. ## THE CHALLENGE The “best of breed” approach to [Digital Transformation](/managing-digital-transformation-in-business/) means that IMI has a need for their disparate computer systems to communicate information in a bespoke manner. For example, a package dispatch system may contain useful information about the progress of a delivery for a customer, whilst information relating to the customer’s account is held in a different system. These systems need to exchange information and integrate to give a single view of the truth to IMI staff. This process is known as [systems integration](/digital-development/systems-integration-services/) and is extremely important in order to [allow information from different systems to communicate](/why-is-systems-integration-important/). ## THE SOLUTION McKenna Consultants have created the Digital Edge Platform for IMI. This is a [cloud-based](/cloud-services/cloud-app-integration/) platform which means that the maintenance overhead is very low. The Digital Edge Platform facilitates [systems integration](/digital-development/systems-integration-services/) by plugging into IMI’s different computer systems and flowing information between them. The solution provides an invisible (though technically complex) systems integration to give the most current view of key data available. ## DELIVERY An Agile approach is best for this kind of systems development as the technical requirements for each piece of software at IMI are significantly different, which can lead to a complex project management as a set of changing integration requirements are needed to be met. We found using an Agile approach meant that we could meet the requirements head-on as and when they changed and were able to do just that in order to deliver the platform. Should you wish to discuss systems integration services further, or your own digital platform requirements with [McKenna Consultants](/), please [contact us](/contact/) to see how we could help your business via our bespoke digital services. ## AI-POWERED CLOUD MONITORING: MASS Building on our long-standing partnership with IMI, McKenna Consultants developed **MASS (McKenna AI Semi-autonomous System)** — an Azure Alert Intelligence Agent built specifically for IMI's cloud infrastructure. ### THE CHALLENGE Cloud infrastructure generates hundreds of alerts. Each alert previously required an engineer to manually investigate — logging into multiple Azure portals, correlating logs, metrics and application traces, and writing up findings. This manual process was time-consuming and pulled engineers away from development work. ### THE SOLUTION MASS monitors IMI's Azure infrastructure alerts 24/7. When an alert fires, MASS autonomously: - Correlates logs, metrics and even source code across multiple Azure services - Investigates root causes without human intervention - Delivers a comprehensive investigation report to a Slack channel within minutes The entire workflow — from alert to actionable report — happens autonomously. A human reviews the output and approves next steps, keeping IMI's team in control whilst eliminating the manual investigation overhead. ### IMPACT MASS represents a fundamental shift from reactive to proactive infrastructure management. Alert investigation that previously took an engineer 30-60 minutes now completes autonomously in minutes, with the engineer only needing to review the findings and approve next steps. This human-in-the-loop approach ensures quality and governance whilst dramatically reducing response times. --- # Case Study: Workiro — WOPI And Outlook Add-In With Graph API Email Sync **Canonical URL:** https://www.mckennaconsultants.com/project/workiro-wopi-and-outlook-addin/ **Category:** Microsoft Office Add-In Developer > "Working with McKenna Consultants has been a seamless and rewarding experience. Their deep expertise in WOPI and Microsoft Outlook Add-Ins was exactly what we needed to push our platform forward. They quickly integrated with our team, collaborated closely on user experience, and helped us update our microservices architecture for WOPI and the Add-In. The results speak for themselves — our users now enjoy a smoother, more powerful experience thanks to the work McKenna delivered." — Rob Keynes, Product Manager, Workiro ## Overview [Workiro](https://www.workiro.com/), a platform that enables seamless business collaboration and productivity, partnered with McKenna Consultants to extend its functionality in two key areas: document editing and email synchronization. Our team was chosen to augment Workiro’s already outstanding internal development team due to our deep expertise in WOPI integrations and Microsoft Office Add-Ins. **_For more information, please fill in the Contact Form at the bottom of this page._** ## Challenge Workiro sought to improve its user experience by enabling direct in-browser editing of Microsoft Office documents, eliminating the need for users to download, modify, and reupload files. In parallel, they aimed to offer seamless integration with Microsoft Outlook, allowing users to synchronize their emails and conversations directly into the Workiro platform. Both enhancements required updates to Workiro’s existing microservices architecture and demanded careful alignment with their user experience design strategy. ## Solution ### WOPI Integration McKenna Consultants implemented a [WOPI (Web Application Open Platform Interface)](/cspp-wopi-cloud-storage-partner-program/) solution to allow Workiro users to open, edit, and save Word, Excel, and PowerPoint documents directly within the Workiro web application. This integration significantly improved workflow efficiency and ensured document version control while preserving security and compliance standards. To learn more about the WOPI implementation and how it enhances productivity, visit [Workiro's Microsoft Integrations page](https://www.workiro.com/integrations/microsoft). ### Outlook Add-In & Email Sync To bring email and conversation history into the Workiro ecosystem, McKenna Consultants developed a Microsoft Outlook Add-In alongside a comprehensive Graph API server-side integration. This solution enabled users to tag, import, and sync email conversations from Outlook into Workiro seamlessly. We worked closely with the Workiro team to: - Collaborate on user experience design, ensuring the Outlook Add-In was intuitive and aligned with Workiro’s visual and functional standards. - Update and extend their microservices architecture to support scalable and secure email synchronization. A detailed video showcasing the Outlook Add-In can be found on Workiro's Outlook Integration page. ## Why Workiro Chose McKenna Consultants Workiro selected McKenna Consultants for this collaboration based on our proven track record and domain expertise: - Expertise in WOPI integrations, having successfully deployed similar solutions in enterprise environments. - n-depth experience with Microsoft Office Add-Ins, including technical proficiency with Outlook and the Microsoft Graph API. - A track record of seamless integration into existing development workflows, working as a true extension of client teams. ## Results - Workiro users can now edit Office documents directly in the browser, streamlining collaboration and removing friction from daily workflows. - The new Outlook Add-In and backend sync services provide robust email integration, bringing vital communications into the Workiro platform with minimal effort. - The updates to Workiro’s microservices architecture laid the groundwork for scalable, future-proof extensions. ## Conclusion The collaboration between McKenna Consultants and Workiro is a prime example of how technical expertise and effective teamwork can drive platform innovation. By blending our engineering capabilities with Workiro’s product vision, we delivered robust solutions that improve usability and support continued growth. If you would like to discuss WOPI or Microsoft Office Add-Ins for your business or project, please [get in touch with McKenna Consultants today](/contact/). --- # Case Study: Corcentric — Corcentric WOPI And Word Add-In Case Study **Canonical URL:** https://www.mckennaconsultants.com/project/corcentric/ **Category:** CSPP WOPI ## Project Background Corcentric provides simple to use, yet sophisticated software to improve procurement, accounts payable and accounts receivable. As with many of our clients, they have significant in-house skills to develop their core products. When they decided to [embed Microsoft Office](/using-wopi-to-embed-microsoft-office/) inside their [web application](/app-development-services/web-application-development/) using [WOPI](/cspp-wopi-cloud-storage-partner-program/), they realised, due to complexity and time constraints that they would need the expertise of a [WOPI specialist](/cspp-wopi-cloud-storage-partner-program/). In addition, they also required a Word Add-In to let them insert clauses, terms and other related information into contracts and templates ([you can read about this on Corcentric's web site](https://www.corcentric.com/applications/microsoft-word-add-in-for-desktop-applications/)). This includes the development of a desktop Sync app which allowes desktop Word to sync seamlessly with the core Corcentric CLM application without the user needing to download and upload files. **_For more information, please fill out our [Contact Form](/contact/)_** ## The Challenge The challenge here was to provide a Laravel PHP implementation of WOPI that would run in a clustered, cloud environment. Whereas Microsoft provide a tiny amount of base code and assistance for .Net, Java and Python, no such assistance is available for PHP. For the Add-In, we needed to work closely with the SaaS development team at Corcentric to use and develop their APIs further. ## The Solution McKenna Consultants provided a complete service for implementing the WOPI and Add-In solution including everything from programming to guiding Corcentric through the [Microsoft approval process](/testing-and-approval-for-building-an-ms-outlook-add-in/). The overall solution is a stateless, microservice which easily scales across the complete Corcentric customer base. We combined our skills in PHP with our expertise in WOPI and produced a Docker-based Laravel implementation of the WOPI protocol. In particular, the Proof Key implementation was challenging and required a combination of different security technologies as well as a knowledge of CPU architecture to get working in PHP. Microsoft approved this WOPI implementation on the first submission. Contact us here or click here to learn more about Corcentric’s CLM software [Corcentric's CLM software](https://www.corcentric.com/source-to-pay/software/contract-lifecycle-management/) direct from Corcentric! --- # Case Study: Astrak Group — Composable Commerce Platform with Elastic Path **Canonical URL:** https://www.mckennaconsultants.com/project/astrak-composable-ecommerce-with-elastic-path/ **Category:** B2B eCommerce > "Working with McKenna Consultants has been a game-changer for Astrak. From day one, their team understood our vision for a high-performance eCommerce platform and delivered beyond our expectations. Their deep technical expertise and flexible composable architecture approach allowed us to build a site that is fast, stable, and secure—exactly what our customers need." What really set McKenna apart was how closely they worked with our customers during the build. The result is a user experience that genuinely reflects how our clients want to search and order. Since going live, the platform has already added over £300,000 in new monthly revenue, and we see even more potential as we scale. We’re excited to continue working with McKenna as our digital journey evolves." — Stephen Cope, CIO ## Engagement Overview McKenna Consultants partnered with [Astrak](https://astrak.com/) to deliver a high-performance [B2B eCommerce](/b2b-ecommerce/) reseller website aimed at enhancing digital sales capabilities and customer experience. The engagement focused on building a fast, secure, and stable platform tailored to customer needs, with close collaboration between Astrak and their customers throughout the development process. ## Technical Approach The solution was built using a composable architecture, leveraging modern technologies including: - [Elastic Path](https://www.elasticpath.com/) for flexible eCommerce backend services - [Algolia](https://www.algolia.com/) for lightning-fast product search - [Next.js](https://nextjs.org/) for high-performance front-end delivery - [Microsoft Azure](https://azure.microsoft.com/) for scalable, secure cloud infrastructure ## Business Objectives - Increase online sales and improve order efficiency - Enhance user experience and reduce friction during product search and checkout - Deliver a robust and secure system capable of handling growth ## Key Achievements - Delivered a composable eCommerce platform that is fast, secure, and scalable - Achieved unusually high levels of customer involvement in the development process - Created a simplified, intuitive user journey based on direct user feedback - Enabled Astrak to add approximately £300,000 in new monthly revenue - Built a foundation for future expansion as the customer base increases ## Why Composable Architecture? Composable architecture allowed the team to select best-of-breed components for each part of the system, dramatically improving site speed, uptime, and security. The modular nature of the architecture also means future updates and feature enhancements can be rolled out with minimal disruption. ## Conclusion Through a close partnership with Astrak and its customers, McKenna Consultants delivered a transformative eCommerce solution that drives revenue and improves user satisfaction. This project showcases McKenna Consultants' expertise in composable architectures and high-performance enterprise eCommerce systems. If you would like to discuss large-scale composable eCommerce solutions for your business or project, please [get in touch with McKenna Consultants today](/contact/). --- # Case Study: MoreLife (UK) Ltd — Bespoke Advanced Web Development Solution **Canonical URL:** https://www.mckennaconsultants.com/project/morelife/ **Category:** App Development > ""The McKenna team have worked professionally and tirelessly to meet our requirements and meet our, sometimes, very tight timelines. They are a skilled bunch who have managed several detailed projects with ease."" — Emily Cummins, Web Manager ## Project Background MoreLife, formerly Carnegie Weight Management, work across the country in partnership with the NHS to deliver specialist weight management services and are the leading experts in tackling childhood obesity. They provide the longest running children’s weight management programme in Europe. MoreLife have helped over 6,000 young people to not only lose weight, but to keep it off and to really improve their fitness and confidence levels too. Founder and driver of MoreLife, Professor Paul Gately, is an expert in physical activity and nutrition and his personal commitment and passion to help others make him, and his business, truly inspirational. >“Traditional solutions seem to completely ignore why people over-eat or are inactive. A long time ago I decided that there must be a better way and today our results speak for themselves. I am extremely proud of every person who comes to us having made the decision that now is the time for action. My team and I work for every individual that attends a MoreLife programme and we are constantly searching for information and conducting regular research to ensure we deliver the best programmes possible to achieve lasting change.” ## The Challenge Data, data, data! No information! Due to the volume of people who were changing their lives with MoreLife, they were swamped with spreadsheets, paper notes, registers and application forms. MoreLife had also just been recently let down by an alternative web development company. ## The Solution We have worked closely with the team at MoreLife for a number of years to produce an advanced website, including an entirely [bespoke business management system](/app-development-services/web-application-development/). Some areas of the system are: - Performance Management - Progress Management of Participants - Social Networking Area for Participants - Interactive Member Journey - Online Store - Camp Payments System - Dynamic Skin Changer - Reporting - Administration The most recent work that we completed for More Life is the implementation of an interactive Member Journey. The Members’ can log in, monitor their weight progress, record their behavioural progress, manage their healthy lifestyle goals, manage their weight goals, access resources, review their process and make a real difference to their lives! ## Delivery We have a great relationship with the team at MoreLife. They are one of our longest-standing and busiest clients. We deliver software to their customer acceptance site (UAT site) on a daily basis for them to test, play with and provide feedback. When they are happy, we have worked hard at an automated deployment system that allows any of our team to quickly, safely and reliably schedule a live deployment for any time of day. Our point of contact at MoreLife is 100% bought into our development process, rapid delivery of new features and regular communication. We are even teaching them to write effective user stories when specifying new and ongoing projects with them! To find out how McKenna Consultants could help make communication within your company much clearer and easier using our bespoke software services, please [contact us](/contact/). --- # Augmenting Your Software Development Team **Canonical URL:** https://www.mckennaconsultants.com/augmenting-your-software-development-team/ **Author:** Nick McKenna **Published:** 13 August 2026 **Category:** Systems Integration # Augmenting Your Software Development Team Most of the companies we work with already have a development team, and a good one. They are not looking for somebody to take a project away and hand it back finished. They have a product they know intimately, a roadmap they are committed to, and developers who understand the codebase better than any outsider will. What they have run into is narrower than that: a piece of work their team has never done before, or more work than the people they have can get through in the time available. That is what **software development team augmentation** is for. You keep your team, your product and your decisions. You add specific capability alongside them, for as long as it is useful, and then you stop. It is the model behind a large share of the work we do, and this article covers how it actually works in practice, drawing on projects we can point at rather than on theory. ## The Two Reasons Companies Augment a Team In our experience there are only two reasons anybody does this, and they are worth separating because they lead to different engagements. The first is **expertise**. There is something in the roadmap that nobody on the team has built before, and learning it properly would take months that the business does not want to spend. This is the more common of the two in our work, largely because the areas we specialise in — [WOPI](/cspp-wopi-cloud-storage-partner-program/), [SharePoint Embedded](/sharepoint-embedded/), [Office Add-Ins](/microsoft-office-add-ins/) — are ones most teams meet once, build once, and never touch again. It makes very little sense to build that knowledge in-house permanently. [Corcentric](/project/corcentric/) is a clear example. They provide procurement, accounts payable and accounts receivable software, and, as their case study puts it, they have significant in-house skills to develop their core products. When they decided to embed Microsoft Office inside their web application using WOPI, the constraint was not general engineering capability — it was that WOPI is a specialist protocol with very little published guidance outside the .NET world, and they needed a Laravel PHP implementation running in a clustered cloud environment. The gap was specific and bounded, which is exactly the shape that suits augmentation. The second reason is **capacity**. The team knows how to do the work; there is simply too much of it, and hiring takes months you do not have. [AuditBoard](/project/auditboard-microsoft-add-in-case-study/) came to us in this position with a twist: they had already begun building their Microsoft Add-In and found it was popular with their customers. The decision was to accelerate it, and they brought us in as specialist Add-In developers to do that. Nobody was replaced. The work simply went faster. Often it is both at once — a specialism the team lacks, on a timescale that would not survive a hiring round. ## What It Looks Like Day to Day The part that decides whether an augmented team works is unglamorous: whose tools, whose process, whose standards. Our answer is yours. On the AuditBoard engagement we worked directly in their Jira, their Figma and their other core systems, and participated directly in their Agile planning process. That is not a detail — it is the whole thing. A team that keeps its own board, runs its own sprints and reports progress in a weekly summary is not augmenting anybody; it is a separate supplier with a friendlier name. If your planning meeting does not contain our developers, we are not in your team. The same goes for the direction of advice. Because we had built add-ins before, we were able to give AuditBoard more than development hours — recommendations on good practice, on submission to Microsoft, and on complying with the AppSource guidelines. That advisory element tends to be where a lot of the value sits, and it only surfaces when the people doing the work are close enough to your decisions to see them being made. ## Working With In-House Developers, Not Around Them The risk everybody worries about is friction: outside developers who do not respect the existing architecture, or who quietly build a parallel version of everything. Two of our clients have spoken to this publicly. Rob Keynes, Product Manager at [Workiro](/project/workiro-wopi-and-outlook-addin/), described the engagement this way: > Their deep expertise in WOPI and Microsoft Outlook Add-Ins was exactly what we needed to push our platform forward. They quickly integrated with our team, collaborated closely on user experience, and helped us update our microservices architecture for WOPI and the Add-In. Andreas Pfanner, Head of Software Development at [Kendox AG](/project/empowering-paperless-productivity-with-wopi-for-kendox/), made a similar point: > McKenna's ability to collaborate closely with our in-house developers — particularly around integrating with our existing microservices architecture and aligning with our UX goals — was invaluable. Both mention the same two things, and they are the things that matter: working with the architecture that already exists rather than alongside it, and taking the client's design goals as the brief rather than substituting our own. Kendox needed a WOPI implementation that worked reliably across both their SaaS and on-premise environments while meeting the standards of Microsoft's Cloud Storage Partner Program. That constraint came from them. Our job was to meet it inside their system, not to propose a cleaner system. It is also worth saying that augmentation does not always mean augmenting the engineering team alone. On the [Astrak Group](/project/astrak-composable-ecommerce-with-elastic-path/) eCommerce platform, their CIO Stephen Cope singled out how closely we worked with *their customers* during the build, and put the resulting user experience down to that. Sometimes the capability a team is missing is the time to sit with the people who will use the thing. ## The Knowledge Has to Stay Behind An augmented team that leaves a codebase nobody internally understands has failed, however good the code is. This is the clearest practical difference between augmentation and outsourcing, and it is worth being blunt about: if your developers are not working next to ours throughout, the knowledge does not transfer, no matter how thorough the handover document. Working in your tools and your planning process is what makes the transfer happen as a by-product rather than as an event at the end. Your developers see the decisions being made and the reasons for them. By the time we leave, the work is not a black box, and your team can carry it forward without us. That is the outcome to aim for, and it is worth checking that any partner you are considering is aiming for it too — the incentive does not always point that way. ## It Does Not Have to Be Continuous One thing that surprises people is how well this works in short bursts. Clients who have taken a product fully back in-house come back to us when they hit a peak — a release with a hard date, a customer commitment that landed sooner than planned — and we redeploy for a few weeks. For a known quantity of work with a known end, that is usually a better deal than recruiting temporary staff, and considerably faster. It also means the relationship does not have to be all or nothing at the outset. A first engagement scoped to one specialist piece of work tells you far more about whether a partner fits your team than any amount of due diligence will. ## Augmentation Is Not Outsourcing The two get used interchangeably and they are not the same thing. Outsourcing hands a defined piece of work to an external organisation to deliver against a specification. Control sits with the supplier for the duration, communication runs through a contract and a project manager, and success is measured against the spec that was agreed at the start. Augmentation puts external people inside your team. You keep control of the product and the day-to-day decisions. Communication is whatever your team already uses. Success is measured the way you measure your own team's work, because for the duration it is your team's work. Outsourcing is the better model when the work is genuinely separable, the specification is stable, and you do not need the capability afterwards. Augmentation is better when the work touches your core product, when the specification will move as you learn, and when you want your own people to come out of it knowing more than they did. ## When Augmentation Is the Wrong Answer It is not always the right model, and it is worth saying so. If you have no in-house development team at all, there is nothing to augment — you need a partner who will own delivery, which is a different engagement with different reporting. If the work is genuinely self-contained and you will never need to maintain it yourself, the overhead of integrating outside developers into your process is not worth paying. And if your team is already at capacity managing its own work, adding people will slow things down before it speeds them up; augmentation costs your senior developers time in the early weeks, and that has to be budgeted for honestly. ## Where to Start If you are weighing this up, the useful first question is not "who could we bring in" but "which of the two problems do we actually have" — a capability gap, or a capacity gap. The answer changes what you should look for. A capability gap wants a specialist who has built the specific thing before and can leave the knowledge behind. A capacity gap wants people who can pick up your stack and your process quickly and add throughput without adding management overhead. If it is the first, and the specialism is Microsoft document integration, [systems integration](/systems-integration/) or [B2B eCommerce](/b2b-ecommerce/), that is the ground we know best. [Tell us what you are trying to do](/contact/) and we will tell you honestly whether we are the right fit. ## Sources - Microsoft Learn — [Publish an app to AppSource](https://learn.microsoft.com/en-us/power-platform/developer/appsource/publish-app), for the AppSource submission requirements referenced in the AuditBoard engagement. - Microsoft Learn — [Office Add-in submission guide](https://learn.microsoft.com/en-us/office/dev/store/add-in-submission-guide), for what Microsoft validates before an add-in is listed. - Microsoft Learn — [Cloud Storage Partner Program](https://learn.microsoft.com/en-us/microsoft-365/cloud-storage-partner-program/), for the CSPP standards referenced in the Kendox engagement. Client engagement details and quotations in this article are taken from our own published case studies for [Corcentric](/project/corcentric/), [AuditBoard](/project/auditboard-microsoft-add-in-case-study/), [Workiro](/project/workiro-wopi-and-outlook-addin/), [Kendox](/project/empowering-paperless-productivity-with-wopi-for-kendox/) and [Astrak Group](/project/astrak-composable-ecommerce-with-elastic-path/). --- # Beyond August 2: GPAI Obligations, Codes of Practice, and the EU AI Act Roadmap to 2027 **Canonical URL:** https://www.mckennaconsultants.com/beyond-august-2-gpai-obligations-codes-of-practice-and-the-eu-ai-act-roadmap-to-2027/ **Author:** Nick McKenna **Published:** 11 August 2026 **Category:** Artificial Intelligence # Beyond August 2: GPAI Obligations, Codes of Practice, and the EU AI Act Roadmap to 2027 The high-risk obligations that applied from 2 August 2026 dominated the conference circuit, the compliance webinars, and a great many anxious internal emails. For organisations placing high-risk AI systems on the EU market, that date was a genuine cliff edge, and rightly treated as one. But for everyone who spent the spring scrambling toward it, the most important thing to understand now is this: the deadline was not the end of the work. It was a waypoint on a regulatory journey that runs well into 2027 and arguably beyond. The EU AI Act is now in force as a single, staggered regulation, but its individual obligations switch on at different moments. Several of the duties that matter most to organisations building AI products did not land on 2 August 2026 at all. The general-purpose AI (GPAI) model provider regime began earlier, in August 2025, and continues to mature through codes of practice and enforcement that are only now finding their feet. The systemic-risk tier sits on top of that. And the political conversation around a possible "Digital Omnibus" simplification package introduces a layer of genuine uncertainty about how some of this will be sequenced. This article is the forward-looking companion to our day-one coverage. If you have already worked through your high-risk readiness, the question becomes: what next? The answer is to stop reacting deadline by deadline and start building a regulatory roadmap. Below, we set out the GPAI obligations, the systemic-risk requirements, the role of the codes of practice, the milestones still ahead, and how the cascade of duties reaches organisations that merely build on top of foundation models. ## The GPAI obligations that did not arrive on 2 August General-purpose AI models — the foundation models underpinning chat assistants, code copilots, document-understanding pipelines, and most of the AI features being shipped today — are governed by their own dedicated chapter of the Act, with its own timeline. The core GPAI model provider obligations began applying from 2 August 2025, a full year before the high-risk rules. That sequencing was deliberate: the EU wanted the upstream model layer documented and transparent before the downstream high-risk obligations bit. For a provider of a general-purpose AI model, the baseline EU AI Act GPAI obligations centre on four things: - **Technical documentation.** Providers must draw up and maintain documentation describing the model, its design, training and testing process, and evaluation results, kept up to date and available to the AI Office and national authorities on request. - **Information for downstream providers.** Providers must make available documentation and information to organisations that intend to integrate the model into their own AI systems — enough for those downstream parties to understand the model's capabilities and limitations and to meet their own obligations under the Act. - **A copyright policy.** Providers must put in place a policy to comply with EU copyright law, including respecting rights reservations expressed through machine-readable means (the text-and-data-mining opt-out). - **A training-data summary.** Providers must publish a sufficiently detailed summary of the content used to train the model, following a template provided by the AI Office. These are not high-risk obligations and they do not depend on the 2 August 2026 date. They have been live for the better part of a year. What changes over time is the depth of enforcement and the supporting machinery — templates, codes of practice, and the AI Office's growing supervisory capacity — rather than the existence of the duties themselves. A practical consequence: if your organisation trained or fine-tuned a model in a way that could make you a GPAI model provider, these duties may already apply to you, and the relevant test is not whether the high-risk regime touches your product. ## The systemic-risk tier: what frontier models trigger Sitting above the baseline GPAI regime is a more demanding tier for general-purpose AI models that present **systemic risk**. This is the category aimed squarely at the largest, most capable frontier models — the ones whose capabilities or reach could have significant effects across the EU market, on public health, safety, fundamental rights, or society. The Act sets out a presumption mechanism based on the model's capabilities, including a threshold expressed in terms of the cumulative compute used for training (measured in floating-point operations). Models above that threshold are presumed to carry systemic risk, and the Commission can also designate models on other grounds. Providers crossing the threshold are required to notify the Commission. The compute threshold is a moving target by design — it can be adjusted as the technology and the methodologies evolve — so the specific figure matters less than understanding that the classification exists and that it can change. Providers of GPAI models with systemic risk carry the baseline obligations *plus* a substantial additional set: - **Model evaluation**, including standardised testing and state-of-the-art adversarial testing (red-teaming) to identify and mitigate systemic risks. - **Systemic-risk assessment and mitigation** across the model lifecycle, including risks arising from development, market placement, and use. - **Serious-incident tracking and reporting** to the AI Office and, where relevant, national authorities, along with possible corrective measures. - **Cybersecurity protection** for the model and its physical infrastructure. For most organisations, the immediate point is not that you will be training a systemic-risk model. Very few will. The point is that you are almost certainly *using* one. If your product is built on a leading commercial foundation model, you are consuming the output of a provider that is — or may become — subject to the systemic-risk tier. That shapes what you can reasonably expect from your vendor in terms of documentation, evaluation evidence, and incident communication, and it shapes the questions you should be asking in procurement and contract renewals. ## How GPAI duties cascade to organisations that build on foundation models This is the part that catches organisations off guard, and it is the heart of why the post-August roadmap matters even if you do not consider yourself an "AI company". The GPAI regime is not a self-contained set of obligations for a handful of frontier labs. It is the upstream layer of a chain, and responsibilities flow down that chain. If you take a foundation model and integrate it into a system you place on the market or put into service, you are a downstream provider. Two distinct things follow. First, you become a **consumer of upstream documentation**, and the Act explicitly contemplates this. The information GPAI model providers must supply to downstream providers exists precisely so that you can discharge your own obligations. If your integrated system turns out to be high-risk, you will need that upstream documentation to build your technical file, run your risk assessment, and demonstrate conformity. Relying on it is legitimate — but you must actually obtain it, evaluate whether it is sufficient, and retain it. "The vendor handles compliance" is not a defensible position when your name is on the system that reaches the user. Second, and more subtly, **fine-tuning or substantially modifying a general-purpose model can make you a GPAI model provider in your own right** for the modified model, with the corresponding documentation, transparency, and copyright duties attaching to your changes. Where you sit on the spectrum from "light prompt engineering" to "substantial retraining" determines how much of the upstream regime you inherit. Many teams assume they are pure consumers when, in regulatory terms, their modifications have moved them upstream. The practical mechanism that makes all of this manageable is **contractual flow-down**. Your agreements with model providers, API vendors, and integration partners should explicitly allocate who provides what documentation, who reports incidents and on what timeline, what copyright and training-data assurances are given, and what happens when the upstream model is reclassified or updated. We increasingly advise clients to treat AI-vendor contracts the way mature engineering organisations treat security and data-processing addenda: as a place where regulatory obligations are mapped, not assumed. ## The codes of practice and the role of the AI Office Because the GPAI obligations are drafted at the level of principle, the Act relies on **codes of practice** to translate them into concrete, day-to-day expectations. The General-Purpose AI Code of Practice is the central instrument here. Developed through a multi-stakeholder process facilitated by the AI Office, it gives providers a practical way to demonstrate compliance with their GPAI obligations until harmonised standards are available. A few points are worth being precise about, because there is a lot of loose commentary. The code is a **voluntary** instrument in the sense that signing it is not the only route to compliance — a provider can demonstrate compliance by other adequate means. But adhering to the code gives providers a structured, AI-Office-recognised path and a degree of legal predictability, which is why the major model providers have engaged with it. The code addresses areas such as transparency, copyright, and — for the systemic-risk tier — safety and security practices. Treating the code as the de facto baseline for what "good" looks like is sensible, even for organisations that are not themselves signatories. The **AI Office** is the body that supervises GPAI model providers at EU level, facilitates the codes, maintains templates (including the training-data summary template), and will play the central enforcement role for the GPAI regime. For downstream organisations, the AI Office is relevant in two ways: it sets the expectations your upstream vendors are being held to, and it is the channel through which serious incidents involving systemic-risk models are reported. Watching what the AI Office publishes — templates, guidance, and clarifications — is one of the highest-value monitoring activities you can build into your roadmap, because it tells you where the goalposts actually are when the legislative text is silent or ambiguous. On the talk of **EU AI Act codes of practice 2027**: expect the codes and accompanying guidance to continue evolving as harmonised standards are developed and as the AI Office gains operational experience. The codes are living instruments. The version that informs your compliance posture today is unlikely to be the last word, and building for that change is more durable than optimising for a single snapshot. ## The roadmap and remaining milestones toward 2027 Stepping back, the staggered structure of the Act looks like this in practice: - **February 2025** — the prohibitions on unacceptable-risk practices and the AI literacy obligations began to apply. - **August 2025** — the GPAI model provider obligations and the governance provisions (including the AI Office's role) began to apply. - **August 2026** — the bulk of the high-risk obligations and the transparency obligations for certain systems applied. This is the date most organisations organised around. - **August 2027** — the extended deadline for high-risk AI systems that are components of, or are themselves, products already regulated under existing EU product-safety legislation. This later milestone gives those products additional time to align. That August 2027 milestone is the one most often forgotten now that the headline date has passed. If your AI is embedded in a regulated product — medical devices, machinery, certain vehicles and their components, and similar — your clock may run on the longer timeline, and your conformity work intersects with sectoral regimes you already know. Mapping which of your systems fall under which date is itself a useful exercise, because organisations frequently assume a single deadline applies uniformly when in fact different parts of their portfolio are governed by different timelines. Alongside these legislative dates sits the slower, continuous track: harmonised standards being finalised, codes of practice being refined, AI Office guidance being published, and national authorities being designated and resourced. The roadmap to 2027 is therefore not a series of cliffs but a combination of hard legislative dates and a rolling stream of soft-law clarification. ## The Digital Omnibus uncertainty Any honest roadmap has to acknowledge that some of the sequencing above is, at the time of writing, contested. There has been active discussion at EU level about a **"Digital Omnibus"** — a simplification package intended to ease and streamline aspects of the EU's digital rulebook, the AI Act among them. Proposals and commentary have floated the possibility of adjusting certain timelines, easing some administrative burdens, and clarifying obligations, partly in response to concerns about competitiveness and the readiness of supporting standards. We want to be careful here, and we will speak as practitioners rather than lawyers. As of August 2026, the precise scope, content, and fate of any such package is not settled, and you should treat specific claims about postponed deadlines or relaxed duties with caution until they are confirmed in the Official Journal. It is entirely possible that some timelines shift; it is equally possible that the core obligations remain as enacted. What would be a mistake is to *pause* your compliance work on the assumption that relief is coming. Regulatory simplification, if it arrives, tends to change the packaging more than the substance — the underlying expectations around documentation, transparency, risk management, and accountability are unlikely to vanish. The pragmatic stance: build your roadmap on the law as it currently stands, design your controls so they are robust to reasonable changes in sequencing, and assign someone to track the Digital Omnibus process so that you can adjust deliberately rather than react to a headline. Flexibility is a feature you design in, not a hope you hold. ## Building a regulatory roadmap rather than reacting deadline by deadline The organisations that handle this well share a common trait: they stop treating the AI Act as a series of fire drills and start treating it as a programme. A workable roadmap usually includes the following. **An AI inventory and classification.** You cannot manage obligations you cannot see. Catalogue every AI system and model in use — built, bought, embedded, and experimental — and classify each by risk category and by which provider role you occupy (provider, downstream provider, deployer). This single artefact answers most "does this apply to us?" questions. **A model-supply-chain map.** For each system, record which foundation models sit underneath, who provides them, what documentation you have obtained, and whether your fine-tuning has pushed you upstream into provider territory. **Contractual flow-down review.** Audit AI-vendor agreements for documentation provision, incident reporting, copyright and training-data assurances, and reclassification handling. Close the gaps at renewal. **A monitoring function.** Assign ownership for tracking AI Office publications, code-of-practice updates, harmonised standards, and the Digital Omnibus process. Translate changes into roadmap adjustments quarterly. **Milestone mapping.** Plot your systems against the February 2025, August 2025, August 2026, and August 2027 dates so that nothing governed by the longer product-safety timeline is mistaken for "done". Done properly, this turns compliance from a recurring panic into a predictable operating rhythm — and, not incidentally, into a procurement and trust advantage when your customers ask how you handle AI governance. ## How McKenna Consultants can help We build and integrate AI into real products — document-processing pipelines, Microsoft 365 and SharePoint Embedded integrations, Office Add-Ins, and bespoke AI features — which means we look at the EU AI Act from an engineering and architecture perspective, not only a legal one. We help organisations inventory and classify their AI systems, map their model supply chains, understand where GPAI duties cascade down to them as downstream providers, and design documentation and monitoring that holds up as the codes of practice and the timeline evolve toward 2027. If you have cleared the August high-risk hurdle and are now asking "what next?", we would be glad to help you turn that question into a concrete, prioritised roadmap. Get in touch to arrange an initial conversation. --- *This article reflects our practitioner perspective on the EU AI Act as at August 2026 and is intended for general information. It is not legal advice. The GPAI regime, the codes of practice, and the surrounding timeline — including any Digital Omnibus simplification measures — continue to develop, and specific obligations should be confirmed against the current legal text and assessed with qualified legal counsel for your particular circumstances.* --- # The EU AI Act Is Now in Force: What Day-One Compliance Actually Looks Like **Canonical URL:** https://www.mckennaconsultants.com/the-eu-ai-act-is-now-in-force-what-day-one-compliance-actually-looks-like/ **Author:** Nick McKenna **Published:** 4 August 2026 **Category:** Artificial Intelligence # The EU AI Act Is Now in Force: What Day-One Compliance Actually Looks Like As of 2 August 2026, the high-risk obligations of the EU AI Act apply. The countdown is over. For the first time, organisations that build, sell, import or deploy high-risk AI systems in the European Union are operating under a live regulatory regime, with national competent authorities empowered and market surveillance functions switching on. The EU AI Act is now in force in the fullest practical sense, and the question has shifted overnight from "what do we need to ship before the deadline?" to "what does it actually mean to operate under the law every working day?" This article is written from the practitioner's chair, two days after the milestone. Over the past months we have run readiness assessments, helped clients assemble technical documentation, and stress-tested human-oversight arrangements. What we are seeing now is a different kind of challenge. Preparing a documentation pack is a project with an end date. Running a compliant AI system in production is a discipline that never stops. EU AI Act day one compliance is not a binder on a shelf; it is logging that is genuinely being written, oversight that is genuinely happening, and monitoring that is genuinely catching things. A note before we go further: this is McKenna Consultants' practitioner perspective drawn from hands-on engineering and governance work. It is not legal advice. The Act is complex, some implementation details remain in flux, and you should take formal legal counsel on your specific obligations. ## From documentation to operational discipline In the run-up to 2 August, most of the effort across the market went into artefacts. Risk management files were written. Data governance statements were drafted. Technical documentation was assembled to satisfy Annex IV. Conformity assessments were scoped, CE-style markings considered, and the EU declaration of conformity prepared. All of this was necessary and correct. But the Act does not merely require that these documents exist on the day high-risk obligations begin to apply. It requires that the things they describe are actually true and continue to be true. There is a meaningful gap between writing a record-keeping policy and having a system that automatically and reliably logs events throughout its lifecycle. There is a gap between describing human oversight in a design document and having named, trained people who can and do intervene, override or halt the system in production. There is a gap between defining a post-market monitoring plan and having that plan running, collecting real signals, and feeding them back into your risk management process. Day one is where those gaps become visible, because the obligations are no longer prospective. Consider what is now continuously expected of a high-risk system: - **Risk management** is described in the Act as a continuous, iterative process across the whole lifecycle, not a one-off exercise. It must be revisited as the system, its use, and the threat landscape evolve. - **Record-keeping and logging** must happen automatically over the system's lifetime, to a degree appropriate to the intended purpose, so that functioning can be traced and post-market monitoring supported. - **Human oversight** must be effective in operation, with the people overseeing the system able to understand its capabilities and limits, watch for automation bias, interpret outputs correctly, and intervene or stop the system. - **Accuracy, robustness and cybersecurity** must be maintained at appropriate levels throughout, not just demonstrated once at launch. - **Post-market monitoring** must actively and systematically collect and analyse data on real-world performance. - **Serious-incident reporting** obligations are now active, with defined timelines for notifying the relevant authorities. - **Transparency** obligations require that deployers and affected people receive the information the Act mandates, and that AI-generated or manipulated content is marked where required. The shift in mindset is from "have we produced the evidence?" to "is the system behaving the way the evidence claims?" That is the real meaning of EU AI Act day one compliance. ## What enforcement and market surveillance look like in the first weeks It is worth being calm and realistic about enforcement in the opening period. The Act establishes a governance architecture: each Member State designates national competent authorities, including market surveillance authorities, while the European Commission's AI Office coordinates at Union level, particularly around general-purpose AI. These bodies now have powers to request documentation, investigate, require corrective action, restrict or withdraw systems from the market, and ultimately impose penalties. In practice, regulators do not flip a switch and audit every system on day three. Market surveillance is typically risk-based and complaint-driven, especially in the early weeks while authorities themselves build capacity. The more likely near-term triggers are a serious incident you are obliged to report, a complaint from an affected person or a competitor, a sectoral regulator already active in your domain (financial services, medical devices, employment), or a request for documentation that you must be able to satisfy promptly. The penalty regime is the backdrop that focuses minds. The Act sets tiered administrative fines, with the most serious breaches — notably the prohibited-practice rules — carrying the highest ceilings, expressed as the greater of a fixed sum or a percentage of total worldwide annual turnover. Non-compliance with other obligations and the supply of incorrect or misleading information to authorities sit at lower tiers, but they are still substantial. The precise figures and how authorities exercise discretion will become clearer as practice develops, but the design intent is unambiguous: penalties are meant to be effective, proportionate and dissuasive at the scale of large global businesses. We would also add a careful caveat. There is ongoing discussion at EU level — frequently referred to as the "Digital Omnibus" simplification agenda — about adjusting aspects of timing, administrative burden and the interaction between overlapping digital rules. Commentary on possible changes continues to circulate. Our practitioner advice is to treat the obligations as live and binding as they currently stand, while watching official sources for confirmed changes rather than acting on speculation. Building genuine operational discipline is robust regardless of how those discussions resolve; betting on relief that has not been enacted is not. ## The most common day-one gaps we are seeing in real assessments Across recent readiness work, a consistent set of gaps recurs. None of them are exotic. They are the difference between a system that looks compliant on paper and one that is compliant in operation. **Logging exists, but it is not the right logging.** Many teams have application logs and observability dashboards. Far fewer have logging designed specifically to support traceability and post-market monitoring across the system's lifetime — capturing the inputs, decisions, oversight actions and version context needed to reconstruct what happened and why. Generic infrastructure logs with short retention windows are not the same thing. **Human oversight is named but not operational.** A document says a human reviews outputs. In reality, the reviewer has no practical ability to override the system within the workflow, has not been trained on its known failure modes, and is subject to exactly the automation bias the Act warns about. Oversight that cannot actually stop or correct the system is oversight in name only. **Post-market monitoring is a plan, not a process.** The plan describes what will be collected and analysed. But no data is flowing yet, no one owns the review cadence, and there is no defined route from a monitoring signal back into the risk management file or to a corrective action. A monitoring plan that produces no monitoring is a common and serious gap. **Incident reporting has no playbook.** Teams know serious incidents must be reported, but cannot answer the operational questions: who decides whether something is a serious incident, against what criteria, within what timeframe, to which authority, and with what evidence attached? Without a rehearsed playbook, the reporting clock is a liability. **Documentation has drifted from the deployed system.** The technical documentation describes the model and pipeline as they were at assessment. Since then there have been retrains, prompt changes, dependency updates and configuration tweaks — none reflected in the file. The Act expects documentation to be kept up to date; a snapshot that is already stale undermines everything built on it. **Role confusion at the boundaries.** Organisations are unclear about whether they are acting as a provider, a deployer, or both, for a given system — and therefore unclear about which obligations actually attach to them. This is common enough that it deserves its own section. ## Provider versus deployer versus distributor, now the rubber has met the road Before the deadline, the distinction between roles was a planning abstraction. Now it determines exactly what each organisation must do, and getting it wrong means either doing work you do not owe or, far worse, missing obligations you do. **Providers** develop a high-risk AI system (or have one developed) and place it on the market or put it into service under their own name or trademark. Providers carry the heaviest load. They are responsible for the conformity assessment, the technical documentation and the EU declaration of conformity, the quality and risk management systems, ensuring the system meets the accuracy, robustness and cybersecurity requirements, registration where required, and — critically — establishing the post-market monitoring system and reporting serious incidents. If you build the model and ship it, this is you. **Deployers** use a high-risk AI system under their own authority in a professional capacity. Their obligations are real but more focused on safe operation: using the system in line with the provider's instructions for use, ensuring relevant input data is appropriate for the intended purpose, assigning competent human oversight, monitoring operation and suspending use and informing the provider where they identify risks or serious incidents, keeping the logs the system generates where under their control, and meeting transparency duties towards affected people. Public-sector deployers and certain others also have obligations around fundamental-rights impact assessment in defined cases. If you take someone else's high-risk system and run it in your business, this is you. **Distributors** and **importers** sit in the supply chain. Importers must verify that the provider has carried out the conformity assessment, that documentation and markings are in place, and that the provider is identifiable; they must not place a non-conforming system on the market. Distributors must check that the required markings and documentation accompany the system and act with due care before making it available. Both have duties to take action and inform the relevant parties if they have reason to believe a system is non-compliant. The pivot most organisations underestimate: roles are not fixed by who you are, but by what you do with a given system. A company can be a deployer of a third-party tool and a provider of its own. And the Act provides that a deployer (or distributor or importer) can be treated as a provider — inheriting provider obligations — if, for example, they put their own name or trademark on a high-risk system, make a substantial modification to it, or modify the intended purpose of a system in a way that brings it into the high-risk category. Fine-tuning a model, re-purposing a system for a new high-risk use, or white-labelling a vendor's product can quietly move you up the chain. Day one is the moment to be honest about which hat you are wearing for each system in your estate. ## What to do if you are not compliant on day one If you have read this far with a sinking feeling, you are not alone, and panic is not a strategy. A measured, documented, good-faith remediation effort is both the right operational response and the posture regulators generally respond to far better than silence or denial. Here is the approach we recommend. **Triage by risk and exposure first.** Inventory your AI systems and classify each by role (provider/deployer/distributor) and by risk category. Prioritise systems that are clearly high-risk under Annex III, that affect fundamental rights, health or safety, or that have wide exposure. A non-compliant low-impact internal tool is a lower priority than a non-compliant system making decisions about people. Do not try to fix everything at once. **Close the gaps that reduce live harm before the gaps that reduce paperwork.** If human oversight is not actually operational, or a system is producing unsafe outputs, those are the first fixes — they reduce real-world risk and demonstrate that your priorities are right. Missing-but-low-harm documentation can follow on a planned schedule. **Decide consciously about continued operation.** For each materially non-compliant high-risk system, make and record a deliberate decision: continue operating with compensating controls (such as heightened manual review), restrict its use, or temporarily suspend it. The wrong answer is to keep running it while pretending the issue does not exist. **Document the remediation plan with owners and dates.** A credible plan — what is wrong, what you are doing, who owns it, by when — is itself evidence of a functioning governance process. Keep it current. **Handle disclosure deliberately and with advice.** Where you have reporting or notification obligations, including for serious incidents, meet them. Where engagement with an authority or a customer is warranted, take legal advice on timing and content. Transparency handled well is a mitigating factor; concealment is an aggravating one. The organisations weathering day one most comfortably are not necessarily those who were perfect on 2 August. They are those who can show a living system: monitoring that runs, oversight that works, logs that accumulate, documentation that is maintained, and a clear-eyed plan for the gaps that remain. ## How McKenna Consultants can help We are a UK-based software development and AI governance consultancy with 25+ years of engineering experience, and our work on the EU AI Act is deliberately practical. We sit with the people building and running the systems, not just the people writing the policies. That matters now, because day-one compliance lives in the technical detail: the logging pipeline, the oversight workflow, the monitoring loop, the incident playbook, the documentation that tracks the deployed reality. As an AI governance consultancy in the UK, we help organisations on both sides of the role divide. For providers, we strengthen technical documentation, validate that record-keeping and post-market monitoring are genuinely operational, and pressure-test accuracy, robustness and cybersecurity. For deployers, we make human oversight real, get input-data governance fit for the intended purpose, and stand up incident-handling that meets the active reporting duties. And where you are not yet compliant, we run the triage, prioritise remediation by genuine risk, and help you operate responsibly while you close the gaps. If you would like a calm, technical second opinion on where your AI systems actually stand now the law is live, we would be glad to talk. A short conversation is often enough to tell whether your day-one position is solid or whether a focused piece of remediation work would materially reduce your exposure. --- *This article reflects McKenna Consultants' practitioner perspective and is provided for general information. It is not legal advice. The EU AI Act is complex and some implementation details continue to evolve; please obtain formal legal counsel on your specific obligations.* --- # Replatforming to Elastic Path: Migrating from Salesforce Commerce Cloud and SAP Hybris **Canonical URL:** https://www.mckennaconsultants.com/replatforming-to-elastic-path-migrating-from-salesforce-commerce-cloud-and-sap-hybris/ **Author:** Nick McKenna **Published:** 28 July 2026 **Category:** B2B eCommerce # Replatforming to Elastic Path: Migrating from Salesforce Commerce Cloud and SAP Hybris For most enterprise commerce teams running Salesforce Commerce Cloud (formerly Demandware) or SAP Commerce Cloud (Hybris), the question is no longer *whether* they will leave the monolith, but *when*. Licence renewal cliffs, ageing on-premise Hybris estates approaching end-of-life, and the compounding cost of every customisation on a tightly coupled platform have turned replatforming from a strategic ambition into an operational inevitability. This guide is deliberately practical. It is about the concrete journey *off* Salesforce Commerce Cloud or SAP Hybris and *onto* Elastic Path — the assessment work, the migration patterns, the data, the SEO risk, and the team you need to do it without a high-stakes weekend cutover. If you are weighing the broader business case, we cover that in our piece on the total cost of ownership of composable versus monolithic platforms; here we assume the decision is made and the real question is *how*. ## Why the decision to replatform to Elastic Path arrives now Three forces tend to converge and force the timing. The first is the renewal cliff. Monolithic commerce contracts are typically multi-year, and the renewal conversation surfaces an uncomfortable truth: you are paying a percentage of gross merchandise value, or a steep platform fee, for software whose roadmap you do not control and whose flexibility you have long since exhausted. When the next renewal lands, finance asks whether there is an alternative — and there is. The second is end-of-life pressure. SAP has set out timelines for Commerce Cloud and the older on-premise Hybris versions, and many organisations are running customised B2B or B2C storefronts on releases that are no longer comfortably supported. A forced upgrade to stay current is, in effort terms, often comparable to a replatform — but it buys you more of the same architecture rather than a way out of it. The third, and most corrosive, is the cost of change on a monolith. On Salesforce Commerce Cloud, business logic lives in cartridges and controllers that are difficult to test in isolation. On Hybris, the OCC layer, impex imports, and a sprawling Spring configuration mean a small catalogue rule change can require a full regression cycle. Every customisation you added to differentiate has quietly become a tax on every future release. When you decide to replatform to Elastic Path, you are choosing a composable, MACH-aligned (Microservices, API-first, Cloud-native, Headless) architecture. Elastic Path Commerce Cloud gives you product experience management through PXM, a dedicated Cart and Checkout service, and Composer for event-driven integrations — all consumed through APIs rather than embedded in a storefront codebase. That architectural shift is exactly what makes the migration approachable, because it lets you move in pieces. ## Discovery and assessment: catalogue what you actually have The single biggest cause of replatforming overruns is starting the build before you understand the estate you are leaving. A disciplined discovery phase pays for itself many times over. Aim to produce three inventories. **Customisations.** On Salesforce Commerce Cloud, audit every cartridge, every controller and pipeline, every Business Manager extension, and every job. On Hybris, catalogue your custom extensions, the data model deviations from the accelerator, custom impex flows, and any bespoke OCC endpoints. For each item, record what business capability it serves, whether that capability is still used, and whether Elastic Path provides it natively, via Composer, or whether it needs a custom microservice. A surprising proportion of monolith customisation turns out to be either dead code or functionality the new platform offers out of the box. **Integrations.** Map every system the platform talks to: ERP (commonly SAP S/4HANA or NetSuite), the OMS, payment service providers, tax engines, the search and merchandising provider, the CDP or marketing stack, and any PIM that feeds product data. For each, document the direction of data flow, the protocol, the volume, and the latency tolerance. These integration points become the contract your new architecture must honour, and they often dictate sequencing. **Data.** Profile the catalogue (products, variants, bundles, categories, assets), customer accounts and address books, pricebooks and price lists, promotions, and order history. Measure volumes and, critically, *quality* — duplicate SKUs, orphaned variants, inconsistent attribute usage, and encoding issues are far cheaper to confront now than mid-migration. The output of discovery is a capability map that aligns each existing function to its Elastic Path destination, a prioritised integration list, and a data-quality remediation backlog. This is also where you decide your migration pattern. ## Migration pattern: strangler-fig versus big-bang There are two honest ways to replatform, and the difference matters enormously for risk. A **big-bang cutover** rebuilds the full experience on Elastic Path and switches all traffic over at a single planned moment. It is conceptually simple and avoids the cost of running two platforms in parallel, but it concentrates all risk into one event. For a high-revenue site, a failed cutover is measured in lost orders per minute, and the rollback path is rarely as clean as the plan assumes. Big-bang can be defensible for smaller catalogues, single-brand sites, or where the legacy platform is genuinely about to go dark. For most enterprise replatforms, the **strangler-fig pattern** is the safer and more pragmatic route. Named after the fig that grows around a host tree until it can stand alone, the pattern incrementally diverts functionality from the monolith to the new platform until the legacy system has nothing left to do and can be retired. You never have a single do-or-die moment; instead you have a sequence of small, reversible releases. The enabling mechanism is an **edge routing layer**. You place a proxy or edge worker (a CDN edge function, an API gateway, or a reverse proxy) in front of both the legacy platform and the new Elastic Path-powered storefront. Routing rules then decide, per request, which system serves it. You might begin by routing a single category, one brand, a specific geography, or a percentage of traffic to the new stack while everything else continues to hit Salesforce Commerce Cloud or Hybris. As confidence grows, you widen the rules. Crucially, the customer never sees a domain change, and you can dial traffic back instantly if a release misbehaves. A common, lower-risk first slice is read-heavy and SEO-sensitive but transactionally simple — product detail and category pages rendered against Elastic Path PXM — while cart, checkout, and order placement temporarily continue on the legacy platform. You then strangle the transactional path once the catalogue experience is proven. Sequencing the high-traffic, low-complexity surfaces first lets the team build operational muscle before touching the parts where mistakes cost orders. ## Migrating the data: catalogue, customers, pricebooks, and order history Data migration is where timelines quietly slip, so treat it as a workstream in its own right rather than a task at the end. **Catalogue and PIM.** Elastic Path PXM is the destination for product data, and it models products, variations, hierarchies, and bundles richly. Map your Salesforce Commerce Cloud catalogue (master and site catalogues, variation attributes, shared variation attributes) or your Hybris classification system and category trees onto the PXM model. This is rarely a one-to-one transfer; the data-quality remediation identified in discovery happens here, and it is the natural moment to consolidate attributes and retire dead SKUs. If you operate a separate PIM upstream, decide whether it remains the source of truth feeding PXM via Composer, or whether PXM absorbs the role. **Customers.** Migrate accounts, address books, and B2B account hierarchies. Passwords cannot be migrated in plaintext, so plan for either a hashed-credential import where formats are compatible, or a transparent re-authentication or password-reset flow on first login. For B2B, the account-to-buyer relationships and any contract pricing entitlements need careful mapping. **Pricebooks and price lists.** Translate Salesforce Commerce Cloud pricebooks or Hybris price rows into Elastic Path price lists and pricing rules, preserving currency, customer-segment, and tiered/volume pricing. Promotions and discounts often have to be re-expressed rather than copied, because the rules engines differ; budget design time for this. **Order history.** Decide deliberately how much history to move. Customers expect to see recent orders, but migrating ten years of order records into the live transactional system is usually unnecessary and risky. A common approach is to migrate a recent window (say, 12–24 months) into Elastic Path and keep older history in an archive or read-only service that the account area can query, rather than burdening the new platform with cold data. Run the migration as repeatable, idempotent ETL jobs, not hand-crafted one-offs. You will run them many times — against sandbox, then staging, then production — and you want a reconciliation report after each run that proves counts and key totals match the source. Dry runs against production-scale data are the only reliable way to discover the long-tail data problems before go-live. ## Preserving SEO and URLs through the transition For any established commerce site, organic search is hard-won and easy to destroy. A replatform that quietly changes URL structures or drops metadata can erase years of ranking equity in weeks, so SEO preservation is a first-class requirement, not a post-launch fix. Start by crawling the existing site to produce a complete inventory of indexed URLs, their current status codes, canonical tags, and the organic traffic and revenue attributed to each. This baseline is what you protect. Wherever possible, **keep URLs identical** on the new storefront. The composable architecture gives you full control of routing in the frontend, so there is no technical reason the Elastic Path-powered storefront cannot serve `/category/product-slug/` exactly as before. Where a URL genuinely must change, implement **301 redirects** from the old URL to the new one — never 302s for permanent moves — and maintain a redirect map as a managed artefact. The edge routing layer is the natural place to enforce these redirects consistently across both old and new systems during the transition. Beyond URLs, carry over title tags, meta descriptions, canonical tags, structured data (product, breadcrumb, and review schema), `hreflang` annotations for international sites, and XML sitemaps. Because the strangler-fig pattern moves traffic gradually, you can monitor Search Console coverage, crawl stats, and rankings on each migrated slice before widening, catching any regression while it is still small. That incremental visibility is one of the strongest SEO arguments for avoiding a big-bang cutover. ## Running old and new in parallel The strangler-fig approach means, by definition, a period where both platforms are live and serving real customers. Managing that parallel-running phase well is what keeps the migration boring — which is the goal. Two concerns dominate. The first is **data consistency**. While cart and checkout straddle two systems, inventory, pricing, and order state must stay coherent. Designate a single source of truth for each data domain — typically the ERP or OMS for inventory and the new platform for newly placed orders — and use event-driven synchronisation through Elastic Path Composer so changes propagate rather than drift. Avoid a situation where both platforms believe they own the same data. The second is **operational observability**. With an edge layer splitting traffic, you need unified monitoring across both stacks: error rates, latency, conversion, and order success measured per route so you can compare the new experience against the legacy baseline. Define clear rollback criteria in advance — if checkout success on a migrated slice drops below the legacy benchmark, traffic reverts automatically or at the press of a button. Parallel running costs money, because you are paying for two platforms at once, but that overlap is the premium you pay to eliminate cutover risk, and it should be planned and time-boxed rather than open-ended. ## A phased roadmap with gates A replatform of this scale is a multi-quarter programme. Phasing it with explicit gates keeps it controllable and gives stakeholders honest decision points. **Phase 0 — Discovery and foundations (4–8 weeks).** Complete the customisation, integration, and data inventories. Stand up Elastic Path environments, establish the capability map, and build the SEO baseline. *Gate: an agreed migration approach, scope, and budget envelope.* **Phase 1 — Architecture and first slice (6–10 weeks).** Build the edge routing layer, the frontend foundation, and the first integrations (typically catalogue from PXM, plus search). Migrate catalogue data into a sandbox and prove the ETL. Route a small, SEO-sensitive but transactionally simple slice — a category or brand — to the new stack. *Gate: the first slice performs at or above the legacy baseline on speed, SEO, and stability.* **Phase 2 — Transactional capability (8–12 weeks).** Bring Cart and Checkout, payments, tax, and the OMS/ERP order flow onto Elastic Path. Migrate customers and pricebooks. Expand routing to more of the catalogue. *Gate: end-to-end order placement on the new platform matches legacy conversion and order accuracy.* **Phase 3 — Scale-out and parity (ongoing).** Progressively strangle the remaining functionality — promotions, B2B account features, content, personalisation — widening the routing rules until the new platform serves the majority of traffic. *Gate: feature parity confirmed against the agreed scope.* **Phase 4 — Decommission (2–4 weeks).** Route the last traffic across, archive residual order history, finalise the redirect map, and retire the legacy platform — ending the parallel-running cost. *Gate: zero traffic on the legacy stack for an agreed soak period.* Treat these durations as illustrative shapes rather than commitments; the actual numbers depend entirely on catalogue size, integration count, and the depth of legacy customisation surfaced in discovery. ## Team shape and honest cost guidance A replatform is delivered by a cross-functional team that stays stable across the programme rather than a rotating cast. The core typically includes a programme lead or product owner who owns scope and the gate decisions; a solution architect responsible for the target architecture and the edge layer; backend engineers for Elastic Path configuration, Composer integrations, and custom microservices; frontend engineers for the headless storefront; a data engineer owning the migration ETL and reconciliation; a DevOps engineer for environments and observability; and a technical SEO specialist who is engaged from Phase 0, not called in afterwards. On the client side, you need empowered business owners for merchandising, finance, and operations who can make decisions without long approval chains. On cost, be honest with stakeholders from the outset. The Elastic Path licence is usually the smaller part of the total; the larger investment is the implementation effort, the integration rebuild, and the parallel-running overlap. Discovery is comparatively cheap and de-risks everything after it, so resist the temptation to compress it. The compensating return is real: the elimination of monolith licence escalation, dramatically lower cost of change once you are on composable architecture, and the ability to evolve individual capabilities without full-platform regression. Framed over a three-to-five year horizon, the replatform typically pays back not through the licence line alone but through the reclaimed velocity of every change you make afterwards. ## How McKenna Consultants can help McKenna Consultants is a UK-based software development consultancy with over 25 years of engineering experience, and we deliver Elastic Path replatforms for organisations leaving Salesforce Commerce Cloud and SAP Hybris. We run the discovery and assessment that turns an ambiguous monolith into a clear capability map, design the edge routing layer that makes incremental migration safe, build the Composer integrations to your ERP, OMS, payment, and search systems, and own the data migration and SEO preservation that protect your revenue through the transition. If you are facing a licence renewal, a Hybris end-of-life deadline, or simply the rising cost of changing anything on your current platform, we would welcome a conversation about what a phased move to Elastic Path could look like for your business. [Get in touch](/contact/) to arrange an initial discovery discussion with our Composable Commerce team. --- # Intelligent Documents: Adding Microsoft 365 Copilot and RAG to SharePoint Embedded **Canonical URL:** https://www.mckennaconsultants.com/intelligent-documents-adding-microsoft-365-copilot-and-rag-to-sharepoint-embedded/ **Author:** Nick McKenna **Published:** 21 July 2026 **Category:** SharePoint Embedded # Intelligent Documents: Adding Microsoft 365 Copilot and RAG to SharePoint Embedded For the last two years, the conversation around document storage in custom applications has been dominated by a single platform: SharePoint Embedded. It lets software vendors and enterprises store, manage and edit Microsoft 365 documents inside their own branded applications, while Microsoft handles storage, versioning, co-authoring and compliance behind the scenes. But storing and editing documents is now only half the story. The other half is intelligence. Users no longer want a folder of files; they want to ask questions of those files, summarise a hundred-page contract, compare two versions of a specification, or draft a reply grounded in what the documents actually say. This article is a practical guide to a **SharePoint Embedded Copilot integration** and, more broadly, to building **RAG over SharePoint Embedded documents** so that the AI experience sits naturally alongside the editing experience your users already trust. We will walk through the architecture, the indexing and retrieval options, the all-important question of permission-trimmed retrieval, and the data-governance implications of letting a large language model read tenant documents. The angle here is specific: not generic retrieval-augmented generation, and not document AI in the abstract, but intelligent documents layered directly on top of SharePoint Embedded containers. ## Why SharePoint Embedded is a strong foundation for document AI It is worth being precise about what SharePoint Embedded gives you, because those properties are exactly what make it a good substrate for AI. SharePoint Embedded organises content into **containers** — application-owned, headless storage partitions that live within a customer's Microsoft 365 tenant but are addressable only through your application via Microsoft Graph. Each container can hold Office documents, PDFs, images and arbitrary files. Crucially, the content sits on the same storage fabric as the rest of Microsoft 365, so it inherits a great deal "for free": rich file metadata, version history, virus scanning, eDiscovery, audit logging, retention and the Microsoft Purview compliance surface. When you embed Microsoft 365 document editing into your application, you are already operating inside that governed boundary. For an AI layer, three of these properties matter enormously: - **Identity and access control are first-class.** Every file in a container has an owner, permissions and a Microsoft Entra identity context, so retrieval can be made identity-aware rather than bolted on afterwards. - **The content is reachable through a single, well-documented API surface.** Microsoft Graph exposes the files, their metadata, their permissions and change notifications — no bespoke connectors for each file type. - **Compliance and governance already wrap the data.** Sensitivity labels, retention policies and audit trails apply to container content, which changes the risk calculus when you start feeding documents to an LLM. The job of an intelligent-documents architecture is to take advantage of all three without undermining any of them. ## Two routes to intelligence: ground Copilot, or build your own RAG There are two broad strategies for adding AI to documents in SharePoint Embedded, and they are not mutually exclusive. ### Route one: ground Microsoft 365 Copilot on container content If your users already have Microsoft 365 Copilot licences, the lowest-effort route is to make your SharePoint Embedded content discoverable to Copilot's semantic index. Copilot retrieves grounding data from the Microsoft Graph — the same Graph that backs your containers — so content that is indexed and permissioned correctly can surface in Copilot chat, in Copilot for the Office apps, and through declarative agents built with Copilot Studio. This is the heart of a native **SharePoint Embedded Copilot integration**: rather than building a retrieval stack, you make your documents legible to the one Microsoft already operates. The advantages are obvious. Microsoft maintains the semantic index, the embeddings, the ranking, the permission trimming and the orchestration. You inherit responsible-AI tooling, tenant data boundaries and a familiar user experience. The trade-offs are equally real: you are constrained by Copilot's retrieval behaviour and extensibility model, you depend on Copilot licensing across your user base, and you have limited control over chunking, ranking and prompt construction. For a polished in-app assistant, you will often want more control than the grounded route gives you. ### Route two: build a custom RAG assistant The second route is to build your own retrieval-augmented generation pipeline over the documents in your containers and call a model of your choosing — Azure OpenAI, or Claude through Azure or another enterprise gateway — to generate answers. This gives you full control over chunking, embedding, retrieval, ranking, prompt design, citations and the user experience. It also puts the responsibility for security-trimmed retrieval and governance squarely on you. Most production "document assistant" experiences embedded inside an application end up here, often using grounded Copilot as a complementary, lighter-weight entry point. The rest of this article focuses primarily on route two, because that is where the engineering decisions live, while noting where the grounded-Copilot approach can do the heavy lifting. ## The architecture of RAG over SharePoint Embedded documents A robust custom pipeline for **RAG over SharePoint Embedded documents** has a clear shape. Let us walk through it stage by stage. ### 1. Ingestion and change tracking Everything starts with knowing what is in the containers and when it changes. Microsoft Graph exposes the files within a container and supports **change notifications** (webhooks) and **delta queries**, so you do not have to re-scan everything on a schedule. When a document is created, edited via the embedded Office experience, or deleted, your ingestion service receives a signal and queues that item for processing. This event-driven model keeps your index fresh without hammering the Graph, and it respects the reality that container content is being actively co-authored. At ingestion you also capture the file's metadata and — the part teams forget — its permission graph and any sensitivity labels. These travel with the content through the rest of the pipeline. ### 2. Extraction and chunking Office documents, PDFs and images are not text until you make them so. The extraction stage turns each file into clean, structured text: pulling body text and tables out of Word and PowerPoint, running OCR over scanned PDFs and images, and preserving structural signals such as headings, page numbers and sections. Azure AI Document Intelligence is a common choice for the harder PDF and image cases. Once you have text, you **chunk** it. Chunking strategy has more influence on answer quality than almost any other single decision: structure-aware chunking that respects headings, paragraphs and table boundaries — with modest overlap to preserve context — consistently retrieves better than naive fixed-size splits. Each chunk carries metadata back to its source: the container ID, the document ID, the version, the page or section, and, critically, the access-control and sensitivity context inherited at ingestion. ### 3. Embeddings and the vector store Each chunk is converted into a vector **embedding** using an embedding model (for example, Azure OpenAI's). Those vectors, with the chunk text and its metadata, are written to a vector store. **Azure AI Search** is the natural choice in a Microsoft-aligned stack: it supports vector search, keyword (BM25) search, and **hybrid search** that fuses both, with semantic re-ranking on top. Hybrid retrieval matters because pure vector similarity misses exact-match needs — product codes, clause numbers, names — that keyword search handles well, while keyword search alone misses paraphrase and conceptual matching. The metadata you stored on each chunk becomes a set of **filterable fields** in the index — the hook on which permission-trimmed retrieval hangs, which we come to next. ### 4. Retrieval, ranking and generation At query time, the user's question (optionally rewritten for better recall) is embedded and used to query the index, with filters applied for the user's permissions. The top candidates are re-ranked — Azure AI Search's semantic ranker, or a dedicated cross-encoder reranker, improves precision considerably — and the best chunks are assembled into a grounding context. That context, plus the question and a carefully designed system prompt, is sent to the generation model. The model produces an answer with **citations** back to the specific documents and passages, so the user can verify the source and open the underlying file in the embedded editor. ### 5. The Microsoft Graph connector alternative There is a middle path. **Microsoft Graph connectors** ingest content into Microsoft's own semantic index, after which it becomes available to Copilot, to Microsoft Search and to your own retrieval calls. For SharePoint Embedded content this is less often needed — the content is already in the Microsoft 365 substrate — but connectors are valuable when you want to blend container documents with external systems (a CRM, a legacy DMS) into a single permission-aware semantic index. The decision comes down to how much control over retrieval you need. ## Permission-trimmed retrieval: the non-negotiable If there is one idea here to take into a design review, make it this one. An intelligent document assistant must only ever surface content the current user is allowed to see. Getting RAG to *answer well* is an engineering problem; getting RAG to *never leak* is a security problem, and it is the one that will sink a deployment if treated as an afterthought. The failure mode is subtle. Your retrieval index is a flattened copy of content drawn from many containers and permission scopes. If a query simply finds the most semantically relevant chunks, it will happily return text from a document the user has no right to read — and the language model, being helpful, will summarise it into a fluent answer. The original permissions were never consulted. This is why **ACL-aware**, or security-trimmed, retrieval is mandatory. The implementation pattern is consistent: - **Capture identity at ingestion.** When you index each chunk, store the access-control information — the groups, roles and users permitted to read the source document — as filterable fields on the chunk. For SharePoint Embedded, this derives from the container's and item's permissions surfaced through Microsoft Graph. - **Trim at query time, not after generation.** When a user asks a question, resolve their identity and group memberships (via Entra ID) and apply those as a *filter* on the vector query. The model must only ever receive chunks the user is entitled to. Filtering the answer after generation is too late — the model has already read content it should not have. - **Keep ACLs fresh.** Permissions change: a document moves containers, a user leaves a group, sharing is revoked. Your change-tracking pipeline must update the indexed ACLs when permissions change, not only when content changes — stale ACLs are silent leaks. Where correctness is paramount, some teams perform a live permission check against Graph for the final shortlist before generation, accepting the extra call as the price of certainty. Done well, security-trimmed retrieval means two users can ask the same question of the same assistant and receive different, correct answers — each grounded only in the documents they personally can open. This is exactly the behaviour Microsoft 365 Copilot exhibits with its grounded data, and the behaviour your custom assistant must match. It is also a strong argument for SharePoint Embedded as a foundation: because identity and permissions are first-class on every container item, you have an authoritative source of truth for the ACLs your retrieval layer needs. ## The in-app document assistant: summarise, extract, compare, draft With retrieval and trimming in place, the payoff is an assistant embedded directly alongside the Office editing experience your application already provides. Because SharePoint Embedded lets you embed Microsoft 365 document editing in your own UI, the assistant can live in a side panel next to the document the user is editing, sharing the same identity and container context. A few patterns work especially well: - **Summarise.** Condense a long document, or a selection within it, into key points — grounded strictly in its own text, with citations to the relevant pages. - **Extract.** Pull structured data out of unstructured documents: parties and dates from a contract, line items from a statement of work, obligations from a policy — paired with a schema so the output is machine-usable, not just prose. - **Compare.** Diff two documents, or two versions of the same document, semantically — "what changed in the liability clause between v3 and v4?" — using the version history that SharePoint Embedded preserves. - **Draft.** Generate a first draft of a reply, clause or section, grounded in related documents in the container, which the user then refines in the embedded editor. Each of these is the same RAG pipeline with a different prompt template and, often, a constrained retrieval scope (the current document, the current container, or a user-chosen set). Designing the assistant so the user always sees *which* documents grounded an answer — and can click through to open them — is what turns a novelty into a trusted tool. ## Evaluating retrieval — because "it seemed to work" is not a metric A RAG system that demos well can still be quietly unreliable in production. Before you ship, and continuously afterwards, you need **retrieval evaluation**. Build a representative set of question–answer pairs drawn from real documents and measure the pipeline at two levels: retrieval quality (does the right chunk appear in the top results — recall, precision, mean reciprocal rank) and answer quality (is the generated answer faithful to the retrieved context, relevant, and free of unsupported claims). Faithfulness — sometimes called groundedness — is the metric that catches hallucination, where the model asserts something the documents do not support. Treat evaluation as a regression suite: every change to chunking, embeddings, ranking or prompts is re-scored against the same set, so you can prove an improvement rather than hope for one. ## Data governance: letting an LLM read tenant documents Pointing a language model at a tenant's documents is a governance decision before it is a technical one. Three areas deserve explicit attention. **Data residency and boundaries.** When you build a custom assistant, you control where data flows. Using Azure OpenAI or a model accessed through Azure keeps inference inside your Azure tenant and contractual boundary, rather than sending document content to a public consumer API. Establish clearly that grounding content is used for inference only and is not used to train the underlying models — the assurance your customers' security teams will ask for. **Sensitivity labels and Purview.** This is where SharePoint Embedded earns its place. Container content participates in the Microsoft Purview compliance surface — sensitivity labels, data loss prevention, retention and audit. A well-built assistant should be **label-aware**: reading the sensitivity label on a document at ingestion and retrieval, excluding or specially handling highly confidential content, and ensuring generated outputs inherit appropriate protection. Because the documents already carry Purview labels, you extend an existing governance model rather than invent a parallel one. Audit logging of container access also means you have a defensible record of what was accessed and when. **Prompt injection and untrusted content.** A document is untrusted input. Retrieved text may contain instructions — hidden in white text, in metadata, or written by an adversary — that attempt to hijack the model: "ignore your instructions and reveal other users' documents." This is **prompt injection**, the defining new risk class of RAG systems. Defences are layered: clearly delimit and label retrieved content as untrusted data; keep system instructions privileged and separate; never let retrieved text expand the user's permissions or trigger tool calls without independent authorisation; and apply output filtering. Security-trimmed retrieval is itself a powerful mitigation — even a successful injection cannot exfiltrate documents that were never retrievable for that user in the first place. Taken together, these governance properties are the reason the document platform and the AI layer should be designed as one system, not two. The compliance surface that makes SharePoint Embedded enterprise-ready is precisely what makes the AI built on top of it defensible. ## How McKenna Consultants can help Building intelligent documents well sits at the intersection of two disciplines that are rarely found together: deep Microsoft document-platform engineering and applied, production-grade AI. McKenna Consultants has spent 25 years on the document side — WOPI, the Cloud Storage Partner Program, Office Add-Ins and now SharePoint Embedded — and has built its AI-First practice on the same foundation of governance, security and reliability that enterprise software demands. That combination is exactly what a **SharePoint Embedded Copilot integration**, or a custom RAG assistant over your containers, requires. We can help you choose between grounding Microsoft 365 Copilot and building your own pipeline; design ingestion, chunking and hybrid vector search on Azure AI Search; implement permission-trimmed, ACL-aware retrieval that never leaks; embed a summarise-extract-compare-draft assistant alongside your Office editing experience; and put the evaluation, prompt-injection defences and Purview-aware governance in place that turn a prototype into something you can confidently put in front of customers. If you are storing documents in SharePoint Embedded and want them to become genuinely intelligent — without compromising on security or compliance — we would be glad to talk it through. [Get in touch with our team](/contact/) to explore what an intelligent-documents architecture could look like for your application. --- # Migrating VSTO and COM Add-Ins to the Office Web Add-Ins Platform **Canonical URL:** https://www.mckennaconsultants.com/migrating-vsto-and-com-add-ins-to-the-office-web-add-ins-platform/ **Author:** Nick McKenna **Published:** 21 July 2026 **Category:** Microsoft Office Add-In Developer # Migrating VSTO and COM Add-Ins to the Office Web Add-Ins Platform If your organisation runs custom VSTO or COM add-ins, you have probably encountered a good deal of noise about deadlines. This guide sets out what Microsoft has actually published, what is genuinely time-bound, and how to plan and execute a migration to the Office Web Add-ins platform without working from a date that does not exist. ## What Microsoft Has Actually Announced It is worth being precise here, because the planning implications are very different from the version that circulates in a lot of third-party commentary. ### VSTO and COM add-ins are not supported in new Outlook for Windows This is the real constraint, and it is a client capability gap rather than a dated deadline. Microsoft's [guidance for developing add-ins for new Outlook](https://learn.microsoft.com/en-us/office/dev/add-ins/outlook/one-outlook) states it plainly: > To provide a more reliable and stable add-in experience, VSTO and COM add-ins aren't supported in the new Outlook on Windows. The same page carries an explicit note: **"VSTO and COM add-ins are still supported in classic Outlook on Windows."** So the question is not "when does VSTO stop working" but "when do my users end up on a client that cannot load it". ### The new Outlook rollout is staged, with 12 months' notice Microsoft describes [three progressive stages of migration](https://learn.microsoft.com/en-us/microsoft-365-apps/outlook/get-started/guide-product-availability): **opt-in**, **opt-out**, and **cutover**. | Stage | What it means | Can users switch back? | |---|---|---| | Opt-in | New Outlook is **off by default**; users see a "Try the new Outlook" toggle | Yes | | Opt-out | New Outlook is **on by default** | Yes | | Cutover | New deployments use new Outlook | No | Two commitments in that document matter for planning. IT administrators get **at least 12 months' notice** before either the opt-out or the cutover stage reaches managed Enterprise plans in production rings. And on the far end: > Existing installations of classic Outlook through perpetual and subscription licensing will continue to be supported until at least 2029. At the time of writing, that Microsoft page describes new Outlook as being in the opt-in stage. Whatever date your organisation eventually faces, you will be told about it a year ahead through the standard "notice of disruptive change" channels — you are not going to be surprised by it. ### There is no announced deprecation for Word, Excel, or PowerPoint This is the point most often garbled. Microsoft has announced **no** end-of-support date for VSTO or COM add-ins in Word, Excel, or PowerPoint. The [VSTO add-in developer's guide](https://learn.microsoft.com/en-us/office/dev/add-ins/overview/learning-path-transition) is a transition resource, not a deprecation notice, and the long-running Microsoft Q&A thread asking [when deprecation will happen for Word/Excel/PowerPoint](https://learn.microsoft.com/en-us/answers/questions/1463281/when-will-deprecation-of-vsto-and-com-add-ins-happ) remains unanswered. Plan your Word, Excel, and PowerPoint add-in modernisation on architectural merit and your own roadmap. Do not plan it against a Microsoft deadline, because there isn't one. ## The One Deadline That Is Real: EWS, 1 October 2026 If you want a genuine date to organise around, this is it — and it affects Outlook add-ins specifically. Microsoft is [retiring Exchange Web Services in Exchange Online](https://learn.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/deprecation-of-ews-exchange-online). Any tenant with `EWSEnabled` set to Null on **1 October 2026** will have that value changed to `False` as the deployment rolls out, blocking EWS for all applications in the tenant. A phased, admin-controllable disablement runs from that point, concluding with full shutdown in 2027. Microsoft has provided an escape valve: the [`EWSAllowedAppIDs` allow list](https://techcommunity.microsoft.com/blog/exchange/introducing-ewsallowedappids-preparing-for-the-final-phase-of-ews-retirement/4529471) lets administrators nominate specific application IDs that may continue to use EWS while it remains enabled. Treat that as a bridge for a migration already in flight, not as a way to defer the work. Note the scope: this applies to Microsoft 365 and Exchange Online only. There are no changes to EWS in on-premises Exchange Server. The replacement is Microsoft Graph. If your Outlook add-in calls EWS for mail, calendar, or contact operations, this migration has a date attached to it and the VSTO question does not. ## Why Migrate Anyway Given the absence of a VSTO cliff, why do this work at all? The honest answer is that the reasons are architectural rather than regulatory, and they are strong ones. **Reach.** A VSTO add-in runs on Windows desktop Office and nowhere else. A web add-in runs on Windows (classic *and* new Outlook), Mac, the web, and mobile from a single codebase. **The runtime is frozen.** VSTO targets .NET Framework. Microsoft has not brought it forward to .NET Core or .NET 5+, and there are no plans to. Your add-ins are pinned to a runtime that is no longer receiving investment, whatever the support status of the host application. **Deployment.** Web add-ins update by updating your hosted web application. No MSI, no ClickOnce, no per-machine redeployment for a bug fix. **New Outlook is coming regardless.** Even with 12 months' notice and support to 2029, the direction is settled. Doing this as planned work is materially cheaper than doing it when a stage transition lands. **It converges with the EWS work.** As set out below, the authentication you build for a web add-in is the same authentication Microsoft Graph needs. Sequenced properly, these are one project. ## Architectural Differences You Need to Plan For Migration is not a port. These are the differences that drive effort. ### Execution model VSTO add-ins are .NET assemblies loaded into the Office process with full access to the Office object model, the Windows API, and any .NET library. Web add-ins run in a sandboxed web view and reach Office exclusively through Office.js. They cannot touch the file system or execute arbitrary .NET. Anything your add-in does against the local machine — registry, file shares, COM automation of other applications, local database connections — has to move to a backend service. Identify these early; they are where estimates go wrong. ### The asynchronous API This is the single largest conceptual shift for a VSTO team. In VSTO you worked synchronously: ```csharp // VSTO var doc = Globals.ThisAddIn.Application.ActiveDocument; var selection = doc.ActiveWindow.Selection; selection.Text = "Hello from VSTO"; ``` In Office.js every document interaction is asynchronous and batched through `context.sync()`: ```javascript // Office.js (Word) await Word.run(async (context) => { const range = context.document.getSelection(); range.insertText("Hello from Office.js", Word.InsertLocation.replace); await context.sync(); }); ``` You load properties, sync, then read the returned values. Budget explicit training time for this before your team writes production code — teams that skip it write synchronous-shaped code that works in testing and stalls under load. ### Common Excel mappings | VSTO pattern | Office.js equivalent | |---|---| | `worksheet.Range["A1"].Value2 = data` | `range.values = [[data]]` | | `worksheet.Cells[row, col]` | `worksheet.getCell(row, col)` | | `worksheet.UsedRange` | `worksheet.getUsedRange()` | | `chart.SetSourceData(range)` | `chart.setData(range)` | | `Range.AutoFit()` | `range.format.autofitColumns()` | ### Where the API surface genuinely does not reach Office.js is a curated API, not a mirror of the COM object model. Plan for these: - **Outlook form regions** have no web equivalent. Redesign as a task pane or contextual inline display driven by the message read or compose events. - **Custom task panes are not equivalent.** VSTO's `CustomTaskPane` could dock anywhere and host Windows Forms or WPF. A web add-in task pane renders in a fixed side panel. If your UX depends on floating, dockable, or arbitrarily resizable panes, that is a redesign. - **Low-level Open XML manipulation** is better handled server-side with the Open XML SDK, invoked by the add-in over a web API. Do this audit in week one and classify every capability as *migrate*, *redesign*, or *retire*. The failure mode we see repeatedly is teams treating migration as line-by-line transcription and discovering the redesign category late, when there is no room left to absorb it. ## Authentication: The Part That Overruns Authentication is where migrations most reliably stall, and it is worth stating why: this is an identity architecture change, not a login flow change. VSTO add-ins typically run under the user's Windows identity and inherit Kerberos or NTLM to backend services. Web add-ins run sandboxed and authenticate via OAuth 2.0 against Microsoft Entra ID. Everything downstream changes shape — backend services need to accept Entra ID-issued JWTs, service accounts become workload or managed identities, the audit trail changes, and the places a 401 surfaces change. Two approaches: 1. **SSO via Office.js** — the preferred path. `OfficeRuntime.auth.getAccessToken()` returns a bootstrap token that your add-in exchanges server-side, on-behalf-of, for a Microsoft Graph or custom API token. The user signs in once to Microsoft 365 and the add-in inherits that session silently. 2. **MSAL.js in the task pane** — the fallback where SSO is unavailable. The user authenticates through a dialog. The SSO flow requires an Entra ID app registration with `openid`, `profile`, and `offline_access` scopes; your add-in's web app URL registered as a redirect URI; an App ID URI in the form `api://{domain}/{clientId}`; and the corresponding `WebApplicationInfo` block (XML manifest) or its unified manifest equivalent. If you run on-premises Exchange or SharePoint without Entra ID Connect, this is your longest-lead dependency. Start it first, resource it as its own workstream with its own architect and test plan, and do not let it become a task inside the add-in development sprint. ## Manifest, Deployment, and Rollout ### Choosing a manifest format - **Add-in only manifest (XML).** The established format, widest tooling and documentation support, works across all Office versions including Office 2019 and 2021 perpetual licences. - **Unified manifest (JSON).** Positions the add-in for Copilot extensibility and deeper Microsoft 365 integration; targets Microsoft 365 Apps. For most enterprise migrations the XML manifest remains the pragmatic choice unless you specifically need Copilot agent scenarios. Either way, treat the manifest as real engineering — it controls discovery, surface availability, command placement, and SSO configuration, and manifest errors are the most common cause of deployment failures in the Admin Centre. ### Deployment Deploy through **Microsoft 365 Admin Centre → Settings → Integrated Apps**, uploading your manifest or an AppSource link and assigning to users, groups, or the organisation. Set the deployment to *Available* for a pilot, then *Mandatory* for full rollout — mandatory deployment pushes the add-in to the ribbon without user action, and is the mechanism that replaces Group Policy-based VSTO deployment. For Intune-managed estates, add-in assignment can be configured through the Microsoft 365 Apps policy against Entra ID security groups. For add-ins distributed to external customers, Microsoft Marketplace (AppSource) validation is strict but the resulting distribution model is far simpler than ClickOnce or MSI. ### Run them in parallel VSTO and web add-ins use entirely different deployment mechanisms and do not conflict at the registry level, so both can be installed simultaneously. Use that: deploy the web add-in to a pilot security group while VSTO remains in place for everyone else, run it for at least two weeks under normal workload, and give pilot users a real feedback channel. Test across the matrix, not just one configuration — new Outlook, classic Outlook, Outlook on the web, and mobile if in scope; compose mode versus read mode; large and complex documents; token expiry and re-auth; and behaviour when the network drops. Web add-ins behave subtly differently across Office versions, channels, and surfaces, and a single-environment test plan will not surface it. Only then decommission: remove the ClickOnce deployment, push an MSI removal via Intune or SCCM, or drop the installing GPO. Communicate the removal in advance and tell users where the replacement lives. ## A Sensible Sequence If you are starting from a standing position, this ordering front-loads the risk: 1. **Inventory and classify.** Every VSTO and COM add-in, with its business criticality, user count, backend integrations, and owner. Decide migrate / redesign / retire for each. Retire aggressively — do not migrate what nobody uses. 2. **Start the identity workstream immediately.** App registrations, backend token acceptance, and the on-behalf-of flow. This has the longest lead time. 3. **Audit the API surface** for the add-ins you are keeping, and escalate anything landing in the redesign category now rather than later. 4. **Deal with EWS first if you have it.** It is the one item with a real date on it. Moving to Graph also removes a dependency you would otherwise carry through the add-in migration. 5. **Build, then pilot in parallel** for a controlled group before any cutover. 6. **Decommission** once the replacement is validated in production. ## How McKenna Consultants Can Help McKenna Consultants has been building custom Microsoft Office add-ins for two decades, across Outlook, Word, Excel, and PowerPoint. We work in both the legacy VSTO and COM model and the modern Office Add-ins platform, which puts us in a good position to plan and deliver migrations — including the Entra ID identity work and the EWS-to-Graph migration that usually accompanies them. We can help with a migration assessment and honest effort estimate, target architecture design, full development delivery, or deployment and cutover support — as a delivery team or alongside your own developers. If you are planning Office extensibility modernisation, or working out what the EWS date means for your Outlook add-ins, [contact us](https://www.mckennaconsultants.com/contact/) to discuss it. ## Sources - [Develop Outlook add-ins for the new Outlook on Windows](https://learn.microsoft.com/en-us/office/dev/add-ins/outlook/one-outlook) — Microsoft Learn - [Stages of migration to new Outlook for Windows](https://learn.microsoft.com/en-us/microsoft-365-apps/outlook/get-started/guide-product-availability) — Microsoft Learn - [VSTO add-in developer's guide to Office Web Add-ins](https://learn.microsoft.com/en-us/office/dev/add-ins/overview/learning-path-transition) — Microsoft Learn - [Deprecation of Exchange Web Services in Exchange Online](https://learn.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/deprecation-of-ews-exchange-online) — Microsoft Learn - [Introducing EWSAllowedAppIDs: Preparing for the Final Phase of EWS Retirement](https://techcommunity.microsoft.com/blog/exchange/introducing-ewsallowedappids-preparing-for-the-final-phase-of-ews-retirement/4529471) — Microsoft Community Hub --- # The EWS Cutover Runbook: Your Go-Live Plan for the October 1 2026 Deadline **Canonical URL:** https://www.mckennaconsultants.com/the-ews-cutover-runbook-your-go-live-plan-for-the-october-1-2026-deadline/ **Author:** Nick McKenna **Published:** 14 July 2026 **Category:** Microsoft Office Add-In Developer # The EWS Cutover Runbook: Your Go-Live Plan for the October 1 2026 Deadline The clock now reads under 90 days. On 1 October 2026, Exchange Web Services stops serving Outlook add-ins, and any add-in still calling EWS callback tokens will start failing in the field. If you have already planned and built your migration, the remaining risk is no longer architectural — it is operational. This is the Outlook add-in cutover runbook: the precise sequence of pre-flight checks, traffic switch-over steps, rollback triggers and post-go-live validation that turns a tested EWS to Microsoft Graph migration into a safe, boring, uneventful go-live. The EWS deprecation October 2026 milestone is unforgiving precisely because it is a hard cut, not a gentle taper. Treat the cutover like a production change with named owners and go/no-go gates, and it will pass without drama. ## What this runbook assumes you have already done A runbook is not a migration guide. We assume the heavy lifting is behind you and that the following are in place before you read on: - A Graph-backed code path for every EWS call your add-in makes — mail (`/me/messages`, `/me/mailFolders`), calendar (`/me/events`, `/me/calendarView`), and contacts (`/me/contacts`) — replacing the equivalent EWS `FindItem`, `GetItem` and `CreateItem` operations. - Authentication reworked from `getCallbackTokenAsync` and EWS callback tokens to nested app authentication (NAA), which performs the on-behalf-of token exchange in the browser without a server round-trip. Where NAA is not yet available across all your target Outlook builds, you have a documented interim plan. - An app registration in Entra ID with the correct delegated Graph scopes (`Mail.Read`, `Mail.ReadWrite`, `Calendars.ReadWrite`, `Contacts.Read` as applicable), admin consent secured, and the add-in's `AppID` added to the tenant **AppID AllowList** as a temporary measure where your organisation gates which add-ins may request tokens. - Any EWS streaming or push subscriptions replaced by Microsoft Graph change notifications (webhooks), with a public notification endpoint, validation token handling and subscription renewal already tested. - A manifest strategy decided. If you have moved to the unified (JSON) manifest, your Graph permissions and runtime configuration live there; if you are still on the XML add-in manifest, you have confirmed your `WebApplicationInfo` and requested scopes are correct. Either way, the manifest you intend to publish is built and version-stamped. If any of those are not true, stop. This is not the document you need — you need the migration sprint, and you need it this week. ## The cutover model: feature flags, not a manifest swap The single most important decision in this runbook is *not* to perform the cutover by republishing a manifest. Manifest propagation through centralised deployment and the Microsoft 365 admin centre is slow, partially cached and effectively irreversible on a useful timescale. If your rollback plan is "republish the old manifest", you do not have a rollback plan. Instead, ship a single add-in build that contains **both** code paths — EWS and Graph — and select between them at runtime with a server-controlled feature flag. The flag is the cutover switch. This gives you three properties you cannot get any other way: 1. **Controlled traffic cutover.** You move users from EWS to Graph in rings, by percentage or by cohort, rather than all at once. 2. **Instant rollback.** Flipping the flag back is a configuration change that takes effect on the next add-in activation, with no store, no admin centre and no manifest cache in the path. 3. **Decoupling of deploy from release.** The risky binary is already in production days before go-live, fully baked and warm; cutover day only changes a flag. Design the flag to be evaluated server-side and delivered to the client at activation, with a sensible cached default so that a flag-service outage fails to a known, safe state. Plan that default deliberately: before the deadline, fail-safe means "EWS"; in the final days before 1 October, fail-safe must flip to "Graph", because EWS will shortly cease to be a safe fallback at all. ## Pre-cutover readiness checklist Run this in the days before go-live. Every item is binary — done or not done — and every item has an owner. **Code and configuration** - [ ] Dual-path build deployed to production and confirmed serving the correct version hash. - [ ] Feature flag service live, tested, and reachable from the add-in's runtime origin (CORS confirmed). - [ ] Graph app registration consented in the production tenant; `AppID` present on the AllowList where required. - [ ] NAA confirmed working on the minimum supported Outlook builds (new Outlook for Windows, classic Outlook, Outlook on the web, Mac). Fallback auth path documented for any build where NAA is unavailable. - [ ] Graph change-notification subscriptions created against production, with renewal jobs scheduled and validated. **Observability** - [ ] Telemetry dashboards built and showing live traffic: per-path success rate, error rate, p50/p95 latency, and token-acquisition failure rate, all split by EWS vs Graph and by client host. - [ ] Alerts wired with thresholds agreed (see telemetry section below). - [ ] Log correlation IDs flowing from client through to Graph call, so a single failing user session can be traced end to end. **People and process** - [ ] Go/no-go gates scheduled with named owners (table below). - [ ] Hypercare rota staffed for the full 72 hours. - [ ] User and helpdesk communications drafted, approved and queued. - [ ] Rollback procedure rehearsed at least once in a non-production ring. ## Go/no-go gate table Gates are checkpoints with an explicit owner and an explicit decision. No gate passes by default or by silence. If an owner is unavailable, the gate fails. | Gate | Owner | Pass criteria | If failed | |------|-------|---------------|-----------| | G0 — Build & config frozen | Release Engineer | Dual-path build live; flag service healthy; change freeze in effect | Halt; no cutover until resolved | | G1 — Telemetry green baseline | Observability Lead | 24h of clean baseline; dashboards and alerts confirmed firing on test events | Delay cutover; fix instrumentation first | | G2 — Auth verified | Identity Engineer | NAA / on-behalf-of token exchange succeeding across all supported hosts; token failure rate < 0.5% | Hold at current ring; do not advance | | G3 — Canary healthy | Cutover Lead | Canary ring (1–2%) on Graph for ≥ 2h within error and latency budget | Roll back canary; investigate | | G4 — Ring expansion | Cutover Lead | Each ring meets budget for its soak window before the next opens | Pause expansion; hold or roll back | | G5 — Full cutover | Service Owner | 100% on Graph; EWS traffic at zero; all metrics within budget | Roll back to last healthy ring | | G6 — Hypercare exit | Service Owner | 72h stable; no open Sev-1/Sev-2; subscriptions renewing | Extend hypercare | ## Order of operations on switch-over day Run the day from a single shared timeline with one Cutover Lead who owns the go/no-go calls. Everyone else advises; the Lead decides. 1. **T-minus 60: confirm freeze and baseline.** Pass G0 and G1. Verify no other change is landing in the same window — no infrastructure deploys, no Entra changes, no manifest republish. 2. **T-minus 30: auth smoke test.** Manually drive a Graph call through the live add-in on each supported host. Pass G2. 3. **T-zero: open the canary.** Flip the feature flag to route 1–2% of activations onto the Graph path. Choose the canary cohort deliberately — internal users or a friendly pilot group, not your largest customer. Watch live for the agreed soak window (G3). 4. **Ring expansion.** Advance the flag through pre-agreed rings — for example 2% → 10% → 25% → 50% → 100%. Each ring soaks for its window and must clear its budget before the next opens (G4). Resist the temptation to skip rings because "it looks fine"; the value of rings is catching the slow-burning problem — subscription renewal failures, throttling under load, a host-specific token bug — that only appears at scale. 5. **Watch for throttling at scale.** Graph applies per-app and per-mailbox throttling. A pattern that was invisible at 2% can trip `429` responses with `Retry-After` headers at 50%. Confirm your client honours `Retry-After` and backs off; if 429 rates climb, hold the ring rather than pushing through. 6. **Full cutover and EWS drain.** At 100%, confirm EWS traffic falls to zero on the dashboard (G5). Zero EWS calls is the real success signal — not merely high Graph success rates. A residual trickle of EWS means a code path or a client cohort you have not accounted for. 7. **Enter hypercare.** Declare the cutover complete, announce it on the incident channel, and start the 72-hour clock. ## Rollback triggers and procedure Decide the triggers *before* go-live, write them down, and empower the on-call engineer to act on them without waiting for a meeting. Ambiguity is what turns a five-minute rollback into a two-hour outage. **Roll back immediately if any of these breach for more than the stated dwell time:** - Graph call **error rate** exceeds baseline by more than 2 percentage points for 5 minutes. - **Token acquisition failure rate** exceeds 2% for 5 minutes (the classic signature of an NAA or consent problem). - **p95 latency** on the Graph path exceeds twice the EWS baseline for 10 minutes. - **429 throttling** rate climbs steadily despite correct backoff. - Any **Sev-1**: add-in fails to load, or a core user task (read message, create event) is broken for the active ring. **Rollback procedure:** 1. The on-call engineer flips the feature flag back to EWS for the affected ring (or globally). This is the whole of the technical rollback and takes effect on next activation — typically seconds to a couple of minutes. 2. Announce the rollback on the incident channel with the trigger that fired and the rings affected. 3. Confirm on the dashboard that traffic has returned to EWS and error rates have recovered. 4. Freeze further expansion. Capture logs and correlation IDs while they are fresh. 5. Triage to root cause before any re-attempt. Do not re-flip the flag hopefully. The one caveat, which sharpens as the deadline nears: in late September, rolling back to EWS buys you only days. Past 1 October, EWS is not a fallback — it is simply broken. Your rollback target in the final week is therefore "previous Graph ring", and your contingency is forward-fix, not retreat. ## Communication plan for affected users A silent cutover is a successful cutover for the user — but only if you have prepared the people around it. - **Helpdesk and support** receive a one-page brief before T-zero: what is changing, the symptoms of the known failure modes, the rollback decision-maker, and the escalation path. They should not learn about the cutover from the first ticket. - **End users** generally need nothing during a clean cutover, and you should avoid alarming them. Prepare a short, plain-English notice to send *only if* a re-authentication prompt or visible change is expected on their host — for example, a one-time consent prompt the first time the Graph path runs. - **Stakeholders and the service owner** get scheduled checkpoints aligned to the gates, not a running commentary. Agree in advance what "green" looks like so updates are short. - **A standing incident channel** is the single source of truth for the cutover team for the whole window, including the 72-hour hypercare. ## Post-cutover validation suite When you hit 100%, run a scripted validation pass rather than eyeballing the dashboard. Cover every operation your add-in performs: - **Mail:** read a message body and headers, list a folder, send or save a draft, and — if you write — apply a category or move an item. Confirm against `/me/messages` and `/me/mailFolders`. - **Calendar:** read an event, query a date range via `/me/calendarView`, and create and update an event via `/me/events`, including the time-zone handling that so often differs subtly from EWS. - **Contacts:** read and search `/me/contacts` if in scope. - **Change notifications:** trigger a real change on a subscribed resource and confirm your webhook receives it, validates correctly and renews on schedule. EWS streaming subscriptions are gone; this is the path that replaces them and it has its own failure modes. - **Auth across hosts:** repeat the core flow on new Outlook for Windows, classic Outlook, Outlook on the web and Mac, confirming the on-behalf-of exchange succeeds on each. - **Negative cases:** revoke and re-grant consent on a test account; confirm the add-in handles a `401`/consent prompt gracefully rather than failing opaquely. Keep this suite scripted so it can be re-run on demand throughout hypercare. ## The 72-hour hypercare window The cutover is not finished when traffic reaches 100%. The first three days expose the problems that only daily working patterns reveal — Monday-morning calendar load, overnight subscription renewals, weekly batch behaviours, and the long tail of Outlook clients that activate infrequently. During hypercare: - Keep the on-call rota staffed and the rollback authority unambiguous around the clock. - Hold short stand-ups at the start of each day to review overnight telemetry and ticket trends. - Watch subscription renewal jobs specifically — a webhook subscription that silently fails to renew will quietly stop delivering notifications, and the symptom (stale data) is easy to miss. - Keep the feature flag in place and operational. Do not remove the EWS code path or the flag until hypercare exits cleanly at G6 — and, given the deadline, only retire EWS code after 1 October has passed without incident. - Exit only on the Service Owner's call against G6: 72 hours stable, no open Sev-1 or Sev-2, subscriptions renewing, and EWS traffic confirmed at zero. ## Telemetry to watch throughout Across every phase, four signals tell you whether the cutover is healthy, each split by code path and by client host: - **Success rate** — the proportion of Graph calls returning success. Your headline indicator. - **Error rate** — non-success responses, broken out by status. A rising `403` rate points to scope or consent; `429` points to throttling; `404` may signal an endpoint or ID-translation bug between EWS and Graph identifiers. - **Latency** — p50 and p95. Graph and EWS have different performance profiles; know your baselines so you can tell a real regression from a normal difference. - **Token acquisition failure rate** — the single best early-warning signal for NAA and on-behalf-of problems, and the metric most worth a tight alert threshold. The decisive signal at full cutover is **EWS call volume trending to zero**. As long as any EWS traffic remains, some part of your estate is still depending on an API that disappears on 1 October. ## How McKenna Consultants can help We run EWS cutovers as a packaged, compressed-timeline engagement. With the deadline this close, most of the teams we speak to do not need a six-month migration programme — they have built the Graph code path and now need to land it safely, fast, without an outage. That is exactly the work this runbook describes, and exactly the work we deliver: instrumenting the dual-path build and feature flags, standing up the telemetry and alerts, defining the go/no-go gates and rollback triggers, and running the cutover and 72-hour hypercare alongside your team. As a UK Office add-in development consultancy with deep experience across the unified manifest, nested app authentication and Microsoft Graph change notifications, we can join late, move quickly and de-risk your EWS to Microsoft Graph migration when the EWS deprecation October 2026 deadline leaves no room for a second attempt. If you have under 90 days and an Outlook add-in still talking to EWS, [get in touch](/contact/) for a short readiness review and a fixed-scope cutover plan. We would far rather help you go live calmly in September than firefight on 1 October. --- # Co-Authoring Under Control: Real-Time Document Collaboration for Audit and Compliance Platforms **Canonical URL:** https://www.mckennaconsultants.com/co-authoring-under-control-real-time-document-collaboration-for-audit-and-compliance-platforms/ **Author:** Nick McKenna **Published:** 12 July 2026 **Category:** SharePoint Embedded # Co-Authoring Under Control: Real-Time Document Collaboration for Audit and Compliance Platforms Walk through the document workflow of almost any audit, risk or compliance platform and you will find, somewhere near its heart, a lock. A working paper is checked out to one preparer at a time. A policy is frozen while it circulates for comment. An evidence file is downloaded, edited locally, re-uploaded and reconciled against whatever changed in the meantime. For two decades, software serving the [audit and compliance sector](/sectors/audit-and-compliance/) has been built on the assumption that collaboration and control are opposing forces — and that in a regulated environment, control must win. That assumption deserves re-examination, because the technology that created the trade-off no longer defines it. **Real-time co-authoring for audit software** is now achievable without surrendering any of the things the lock was protecting: named attribution, a complete version record, and governance that stands up to scrutiny. The capability that makes this possible is **SharePoint Embedded co-authoring** — genuine Word and Excel co-authoring running inside your own product, on documents your application governs. This article is written for two audiences: product and engineering leaders at audit, risk and compliance software vendors deciding whether their platform should offer real-time collaboration, and technology leads at audit firms evaluating platforms that claim to. We will look at why regulated document work stayed locked for so long, what co-authoring actually provides, how the version and audit record holds together under challenge, and the workflow design question — when to *stop* co-authoring — that separates a credible regulated collaboration feature from a liability. ## Why Regulated Document Work Learned to Lock the File The lock-and-block pattern was never irrational. A working paper is not merely a document; it is evidence. When a quality reviewer or a regulator asks who reached a conclusion, on what basis, and whether the work was reviewed before sign-off, the document's history is a large part of the answer. Faced with early collaboration tools that merged changes unpredictably and attributed them loosely, the sector made a sensible engineering decision with the technology available: allow one author at a time, and make every handover explicit. So the toolkit hardened. Check-in and check-out. Single-writer locks with an override reserved for the engagement manager. Documents emailed for review with initials appended to the filename, then reconciled by hand when two reviewers' comments came back against different baselines. Every one of these mechanisms bought certainty about *who held the pen* at the cost of everything else: review became serial rather than parallel, reconciliation became a job in itself, and the busiest weeks of the reporting cycle turned into a queue for the lock. The irony is that the workaround everyone reached for — email — quietly destroyed the very control the lock existed to protect. The moment a working paper leaves the platform as an attachment, there are two copies, then five, and the platform's tidy custody record now describes only one branch of the document's real history. Locking the file did not stop concurrent work; it pushed concurrent work somewhere ungoverned. The pull of Word and Excel in this sector is not going away, and pretending otherwise is not a strategy. [AuditBoard](/project/auditboard-microsoft-add-in-case-study/), the audit, risk and compliance platform whose Microsoft Add-In development we helped accelerate, invested in Word and Excel tooling precisely because its customers' evidence and analysis live in Office documents that need to be connected back to the platform rather than exiled from it. The question for a platform vendor is not whether users will work in Office documents — they will — but whether that work happens inside the platform's control or outside it. ## What Real-Time Co-Authoring Actually Provides SharePoint Embedded is Microsoft's container-based document store for applications: your product owns and governs partitioned document storage inside Microsoft 365, and users open those documents in the full Word, Excel and PowerPoint web editors without ever leaving your interface. We have covered [what SharePoint Embedded is](/what-is-sharepoint-embedded-microsoft-s-modern-path-for-embedding-365-document-editing/) in depth before; what matters here is the specific collaboration behaviour a [SharePoint Embedded development](/sharepoint-embedded/) effort inherits, because it answers the sector's historical objections point by point. **Presence.** Everyone in the document can see who else is there and where they are working. In an audit context this is more than a convenience: the preparer can see the reviewer arrive, and the reviewer can see whether the section they are reading is still being written. The social signalling that check-out used to provide crudely — "this is mine right now" — is provided continuously and at finer grain. **Merge behaviour.** There is one canonical copy. Concurrent edits are merged continuously as they are made, so there is no fork, no divergent local version, and no reconciliation step in which changes can be silently lost. This is the property that email fundamentally cannot offer and that most home-grown "collaborative" features approximate badly. Conflicts in the traditional sense largely stop existing, because the situations that created them — two people editing two copies — stop existing. **Attribution.** Every participant is signed in as a named identity, and every contribution belongs to someone. The fear that co-authoring means anonymous, untraceable change has it exactly backwards: a document edited by five named people in one governed copy is far more attributable than a document emailed to five people and returned as five files. This is the heart of doing collaborative document editing in regulated environments properly — the record of *who* is not weakened by concurrency; it is strengthened by it. **Autosave.** Changes persist as they are made. Nobody loses an afternoon's testing notes to a crash, and — more important for our purposes — nobody is working in an unsaved local state that the platform cannot see. The same capability that lets you embed Microsoft 365 document editing in your product means the platform's view of the document and the true state of the document are the same thing at all times. None of this requires your users to leave your application, and none of it requires you to build an editor. The editing surface is Word and Excel themselves, with the fidelity, formulas and formatting behaviour your users' documents actually depend on. The conversation around the document travels with it too: comments and replies are attributed to named users in the same way as edits, which matters once we turn to review workflows below. ## Version History and the Audit Log: A Record You Can Defend Collaboration features earn their place in regulated software only if the record they leave behind is stronger than the one they replace. Here the platform provides two layers, and it is worth being precise about what each contributes. The first layer is version history. As a co-authored document evolves, versions are captured automatically, each attributed and timestamped, and earlier versions can be compared and restored. Nobody has to remember to "save as v2" for the record to exist; the record is a by-product of working. For an audit platform this replaces the most fragile artefact in the old workflow — the filename-suffix version chain — with something systematic, complete and impossible to forget to maintain. The second layer sits beneath your application entirely. Activity in SharePoint Embedded containers surfaces through the same Microsoft 365 auditing infrastructure that enterprise compliance teams already use for the rest of their tenant estate — file operations recorded at platform level, independent of your product's code. That independence matters more than it first appears. A change record produced by the same application whose behaviour is under question is only as trustworthy as that application; a record produced by the platform beneath it is evidence of a different order. When a dispute or an inspection asks who changed what and when, "here is the platform's log" is a categorically better answer than "here is what our application recorded about itself". Put the two layers together and you get something the email era never had: a genuine chain of custody. An email trail is a record of transmission — it can prove a document was sent, but says nothing reliable about what changed between attachments. Attributed versions plus a platform-level activity log answer the questions that actually get asked: who touched this working paper, when, what did it look like before, and who signed off the version that became final. We would add one note of engineering caution from our own work on regulated data systems, such as the Orak integration hub we built for [Workplace Pensions Direct](/project/workplace-pensions-direct/) to move sensitive pension data securely between payroll systems and pension providers: an inherited record is only defensible if your application does not undermine it. If your product lets documents leak out through ungoverned export paths, the pristine history of the governed copy proves very little. The platform gives you the record; your product design has to keep the work inside it. ## The Design Question That Matters: When to Stop Co-Authoring Here is the part most evaluations miss. The hard product question in regulated collaboration is not how to enable co-authoring — the platform has done that — but when to *end* it. An audit document has a lifecycle, and unrestricted concurrent editing is only correct for part of it. Consider the typical shape. In **drafting**, co-authoring should be at its freest: preparers building a working paper together, in parallel, with presence and attribution doing the work the lock used to do. In **review**, the ground shifts — a reviewer needs a stable object to review, and a platform ought to be able to constrain editing while comments are gathered, or restrict the preparer to responding rather than rewriting. At **sign-off**, editing must stop: the version that was reviewed and approved is the version of record, and any further change must mean formally re-opening the document, visibly, with the trail intact. And once a working paper is **frozen into the record**, it should be held under retention as an artefact that no ordinary user can alter at all. The platform gives you the enforcement points to build exactly this: permissions can be tightened and released programmatically, a specific version can be designated the signed artefact, and the container boundary makes the enforcement real rather than advisory. (For the mechanics of containers and permissions, see our [walkthrough of building a first SharePoint Embedded application](/building-your-first-sharepoint-embedded-application-container-types-permissions-and-microsoft-graph/).) What the platform cannot know is your domain: which states an engagement moves through, who may transition a document between them, and what each transition means for who can edit. That state machine — engagement workflow mapped onto document permissions — is the genuinely differentiating work in an audit collaboration feature, and it is where product thinking matters far more than raw engineering. The principle we push clients towards is simple to state: co-authoring is not a mode you switch on, it is a privilege your workflow grants and withdraws. A platform that co-authors everywhere, always, has traded one crude posture (lock everything) for another (lock nothing). A platform that opens collaboration wide during preparation and closes it decisively at sign-off has actually understood the sector it serves — and can demonstrate to an audit firm's methodology team exactly why each state behaves as it does. For the technology lead evaluating platforms, this gives you a usefully sharp test to put to vendors. Do not ask "do you support co-authoring?" — every demo will say yes. Ask instead: show me a working paper moving from preparation to review to sign-off, and show me at each transition who can still edit, what the version record captured, and what a reviewer would see if someone tried to change the signed version afterwards. Platforms that have done the lifecycle thinking answer in seconds; platforms that have merely enabled a feature reach for the roadmap slide. ## Governance You Inherit Rather Than Build The final objection usually raised against collaborative editing in regulated software is governance: where does the data live, and what compliance machinery applies to it? The short answer — and we will keep it short, because this article is about collaboration rather than compliance — is that SharePoint Embedded containers live inside Microsoft 365, so data residency follows the tenant geography, and Microsoft Purview's retention and information-protection capabilities apply to container content. Your customers' risk teams are being asked to trust a control surface they already know and, in most cases, already operate. For a product decision, the significant word is *inherited*. The governance surface arrives with the platform rather than being an estate you design, build and certify yourself — which changes both the cost of the feature and the shape of the security conversation with enterprise customers. Vendors serving many customer tenants will find the architectural side of that conversation — tenancy boundaries, isolation, onboarding — treated properly in our piece on [multi-tenant architecture patterns for ISVs](/sharepoint-embedded-at-scale-multi-tenant-architecture-patterns-for-isvs/). ## How McKenna Consultants Can Help McKenna Consultants has spent more than 25 years building Microsoft document integration and software for regulated industries — from accelerating the Word and Excel Add-In of a major audit and compliance platform to engineering secure data exchange infrastructure for the UK pensions sector. That combination matters here, because a credible co-authoring feature for audit software is exactly half platform engineering and half regulated-workflow design, and teams that bring only one of the two tend to ship the wrong feature well. If you are an audit, risk or compliance vendor weighing real-time collaboration — or an audit firm trying to separate platforms that co-author under control from platforms that merely co-author — we can help you reason through the lifecycle design, the record-keeping architecture and the SharePoint Embedded build itself. [Get in touch](/contact/) and talk it through with us. --- # SharePoint Embedded at Scale: Multi-Tenant Architecture Patterns for ISVs **Canonical URL:** https://www.mckennaconsultants.com/sharepoint-embedded-at-scale-multi-tenant-architecture-patterns-for-isvs/ **Author:** Nick McKenna **Published:** 7 July 2026 **Category:** SharePoint Embedded # SharePoint Embedded at Scale: Multi-Tenant Architecture Patterns for ISVs A SharePoint Embedded pilot is deceptively easy to stand up. You register an application in Entra ID, create a container type, provision a handful of containers, and suddenly your product can embed Microsoft 365 document editing inside its own interface with full fidelity. The trouble starts when that pilot succeeds. The patterns that carried you through a proof of concept — a single container type, manual consent, ad hoc Graph calls — quietly become liabilities once you are serving hundreds or thousands of customer tenants. This article is about designing a **SharePoint Embedded multi-tenant architecture** that holds up under that load, and about the operational realities of **SharePoint Embedded for ISVs at scale** that only become visible once you are past the demo. We assume you already know what SharePoint Embedded is: a headless, container-based document store built on the SharePoint platform, owned and billed to your application's tenant rather than to your customers. What follows is the next layer of the problem — how to partition data, manage container type lifecycle, onboard consuming tenants automatically, survive Microsoft Graph throttling, attribute consumption, distribute data geographically, and observe the whole estate. ## Two Tenancy Models, and the One You Actually Have Before any architecture decisions, it is worth being precise about the tenancy boundaries in play, because SharePoint Embedded has three distinct tenant roles and they are easy to conflate. - **The owning (provider) tenant** is your tenant. You register the application, you own the container type, and Microsoft bills the storage and consumption to you. - **The consuming tenant** is each customer's Microsoft 365 tenant. Containers physically live in the consuming tenant's SharePoint, even though your application controls them. - **The application tenant model** itself — whether your Entra ID app is single-tenant or multi-tenant — governs how customers grant you access. For an ISV, the application is almost always a **multi-tenant Entra ID app registration**, and each customer's Microsoft 365 tenant is a separate consuming tenant. This is the configuration this article addresses. It is distinct from the scenario where you operate containers entirely within your own tenant on behalf of customers who have no Microsoft 365 of their own — a valid model, but one with very different residency and billing consequences that we touch on later. ## Container Strategy: One Container Per Customer, Shared Containers, or Both The first architectural fork is how you map customers onto containers. There is no universally correct answer, but there is a correct way to reason about it. ### A container per customer (or per workspace) The cleanest mental model is a container per customer tenant, or more often a container per logical workspace within a customer (a project, a matter, a client engagement). Containers are the natural security and isolation boundary in SharePoint Embedded: permissions, sharing, and Graph-level access control all attach to the container. A container-per-workspace model gives you: - Hard isolation. A permissions bug cannot leak documents across customers because the blast radius stops at the container. - Clean offboarding. Deleting or exporting a customer is `DELETE /storage/fileStorage/containers/{id}` plus a recycle-bin purge, not a query-and-filter exercise across shared storage. - Per-container metering. Storage and column data are reported at container granularity, which makes billing attribution tractable (more on this below). The cost is volume. SharePoint Embedded supports very large numbers of containers per container type, but you must treat container count as a first-class capacity dimension and design enumeration, listing, and reporting so they never depend on fetching all containers synchronously. ### Shared containers with partitioning The alternative is fewer, larger containers partitioned internally — by folder hierarchy and by custom columns on the `driveItem` metadata. This reduces container sprawl and can simplify some cross-customer search scenarios, but it pushes the isolation burden up into your application logic. Every read and write must enforce the partition key, and a single coding error becomes a cross-tenant data exposure rather than a contained one. For most ISVs subject to customer security review, that trade is not worth it. ### The pragmatic hybrid In practice many production designs are hybrid: a container per customer workspace for primary document storage, plus a small number of shared, application-owned containers for templates, shared assets, and system artefacts that genuinely belong to your service rather than to any one customer. The rule of thumb that has held up across McKenna engagements is simple — **customer data gets its own container; your data can share one.** ## Container Type Lifecycle Across a Growing Customer Base The container type is the schema and governance object that sits above every container you create. At pilot scale you create one and forget it. At scale, the container type becomes a versioned contract you have to manage deliberately. ### Trial versus billed container types You will typically begin with a trial container type, which is free, time-boxed, and capped at a small number of containers. Moving to production means registering a **billed container type** linked to an Azure subscription for consumption billing. Plan this migration early: trial containers cannot simply be reclassified, and discovering the cap during a customer rollout is a painful way to learn it. Treat the trial-to-billed transition as a scheduled milestone with its own runbook, not as an afterthought. ### Configuration and the registration handshake Two steps are easy to forget at scale. First, the container type's owning application and its permissions are defined on the type itself. Second — and this trips up almost everyone — the container type must be **registered in each consuming tenant** via the SharePoint REST endpoint (`/_api/v2.1/storageContainerTypes/{containerTypeId}/applicationPermissions`) before your application can create containers there. This registration is per consuming tenant and is a hard prerequisite. Automating it is central to onboarding, which we come to next. ### Evolving the schema Custom columns, document metadata, and container properties will evolve as your product does. Because containers are provisioned over time, you will always have a population of containers created against older configurations. Build a reconciliation job that can walk the estate and bring containers up to the current schema version, and version-stamp every container with a custom property at creation so you know exactly what each one was provisioned against. Without this, schema drift across thousands of containers becomes impossible to reason about. ## Automating Consuming-Tenant Onboarding At pilot scale, onboarding a customer is a person clicking through an admin consent prompt. At scale it is a self-service flow that must complete in seconds with no human in the loop on your side. A robust onboarding pipeline has four stages. 1. **Admin consent.** The customer's Microsoft 365 administrator grants your multi-tenant application the Graph permissions it needs — `FileStorageContainer.Selected` at minimum, plus the application permission for your specific container type. Drive this through the admin consent endpoint and capture the resulting service principal in the consuming tenant. 2. **Container type registration.** Immediately after consent, call the storage container type registration endpoint in the consuming tenant to register your container type and its application permissions. This is the step that cannot be skipped and is the single most common cause of "it worked in the pilot tenant but not for the new customer". 3. **Initial provisioning.** Create the customer's first container(s), stamp them with your schema version and a tenant identifier custom property, and seed any default folder structure or templates. 4. **Verification and event wiring.** Confirm read/write access with a synthetic operation, and subscribe to change notifications (Microsoft Graph webhooks) on the new containers or drives so your downstream indexing and audit systems are wired from day one. Make every stage idempotent and resumable. Consent can succeed while registration fails on a transient error; provisioning can partially complete. A queue-driven state machine that records where each tenant is in the onboarding flow — and can re-enter at the failed step — is far more reliable than a single long synchronous request, and it is what lets onboarding scale without operator intervention. ## Designing Around Microsoft Graph Throttling and Service Limits This is the section that separates a pilot from a production service. Every SharePoint Embedded operation — container CRUD, file upload, permission change, metadata update — flows through Microsoft Graph, and Graph throttles aggressively. At scale you will hit limits, and the question is whether your architecture absorbs them gracefully or falls over. ### Respect 429 and Retry-After When Graph throttles you it returns **HTTP 429** (or sometimes 503) with a `Retry-After` header. The non-negotiable baseline is to honour `Retry-After` exactly, then apply exponential backoff with jitter on top. Never busy-retry a 429; that simply deepens the throttle and can escalate you to longer lockouts. Centralise this in a single Graph client wrapper so that every call site inherits correct backoff behaviour rather than each developer reinventing it. ### Limits apply across multiple dimensions Throttling is not a single global tap. Limits apply per application, per consuming tenant, per resource, and against SharePoint's own service-level thresholds beneath Graph. A burst of provisioning for one large customer can starve unrelated customers if all traffic shares one undifferentiated queue. The design response is to **partition outbound Graph work per consuming tenant** and rate-limit each partition independently, so one noisy tenant cannot consume the whole budget. ### Batch, deduplicate, and prefer events over polling Use Graph `$batch` to combine related operations and cut request count. Coalesce redundant work — if three user actions all touch the same container property, collapse them into one update. And critically, do not poll for changes. Use **Microsoft Graph change notifications (webhooks)** with subscriptions on the relevant drives and containers, falling back to delta queries for catch-up after downtime. Polling at multi-tenant scale is the fastest route to self-inflicted throttling. ### Token and connection hygiene Cache and reuse access tokens per consuming tenant rather than requesting fresh tokens per call, and refresh proactively before expiry. Token endpoints throttle too, and a thundering herd of token requests during a deployment can take you down just as surely as data-plane throttling. ## Billing Attribution and Metering Consumption When Microsoft bills storage and consumption to your owning tenant, you receive one aggregate figure. Attributing that cost back to individual customers — for cost recovery, margin analysis, or usage-based pricing — is your responsibility, and it is far easier if you design for it from the start. The container-per-customer model pays off here. Storage consumed is reported at container granularity, so a periodic job that reads each container's storage metrics, tagged with the tenant identifier you stamped at provisioning time, produces a clean per-customer consumption ledger. Record point-in-time snapshots on a fixed cadence so you can show usage over a billing period rather than a single instantaneous reading. For shared containers, attribution requires you to meter at the application layer — counting bytes and operations per partition key as you write them — because the platform cannot disaggregate what it sees as one container. This is another reason the per-customer container model tends to win: the platform does the metering work you would otherwise have to build and reconcile yourself. Reconcile your internal ledger against the actual Azure consumption bill monthly. Discrepancies usually point to orphaned containers from failed offboarding, or to system overhead you are not yet accounting for — both of which are findings worth catching early. ## Regional Distribution and Data Residency Enterprise customers will ask where their documents physically reside, and for regulated sectors the answer is contractual. SharePoint Embedded inherits SharePoint's data residency model, which means residency follows the consuming tenant's home geography. Because containers live in the consuming tenant's SharePoint, a customer whose Microsoft 365 tenant is provisioned in the UK or EU geography has their container data resident there by virtue of that tenant placement. Where this gets involved is **Multi-Geo**. A single large customer may have a Multi-Geo configuration with data distributed across several satellite geographies, and your provisioning logic must place containers in the correct geography for each user or workload rather than defaulting to the tenant's central location. Capture the required geography as part of onboarding, validate it against what the customer's tenant actually supports, and stamp it on the container so your residency reporting can prove placement after the fact. If instead you operate the alternative model — containers in your own tenant on behalf of customers — then residency is governed by *your* tenant's geography, and serving customers in multiple regions means operating separate provider tenants or a Multi-Geo configuration of your own. That is a significant operational commitment and should be a deliberate, documented decision rather than something you back into. ## Observability Across a Multi-Tenant Estate You cannot operate what you cannot see, and a multi-tenant estate fails in ways a single-tenant pilot never does — one tenant throttled while others are fine, one customer's containers drifting from the current schema, one region degraded. Effective observability rests on three pillars. **Correlate every Graph operation with a consuming-tenant identifier and a container identifier** in your logs and traces, so you can slice latency, error rate, and throttling by customer rather than only in aggregate. **Track throttling as a first-class metric**, with 429 rate broken down per tenant and per operation type, because a rising 429 rate for one tenant is an early-warning signal long before customers notice. And **maintain an estate inventory** — a continuously refreshed view of every container, its owning tenant, its schema version, its geography, and its last-known health — built from change notifications and periodic reconciliation rather than live enumeration. Layer on top of this the Microsoft 365 audit log and SharePoint Embedded's own activity signals for security and compliance reporting, and feed Graph throttling metrics into capacity planning so growth is something you forecast rather than something that surprises you. ## A Reference Architecture, and the Runbook Items That Come With It Pulling the threads together, a production reference architecture for SharePoint Embedded at scale has these components: - A **multi-tenant Entra ID application** with least-privilege Graph permissions and a billed container type linked to an Azure subscription. - An **onboarding service** implemented as an idempotent, queue-driven state machine handling consent, container type registration, provisioning, and event wiring. - A **Graph gateway** — a single client layer enforcing per-tenant rate limiting, `Retry-After`-aware backoff, batching, and token caching, so no application code talks to Graph directly. - An **event ingestion pipeline** consuming Graph change notifications with delta-query fallback, feeding indexing, audit, and metering. - A **metering and billing service** producing a per-tenant consumption ledger reconciled monthly against Azure. - An **estate inventory and observability plane** with per-tenant correlation, throttling metrics, and schema-drift detection. The operational runbook that surrounds this architecture matters as much as the architecture itself. The items that only become visible at scale include: - **Capacity planning.** Track container count, storage growth, and per-tenant Graph request volume against service limits, and forecast headroom before each major customer onboarding rather than after. - **Tenant offboarding.** A repeatable, auditable sequence to export or delete a departing customer's containers, purge recycle bins, revoke the consuming-tenant registration, and remove the tenant from billing and inventory — leaving no orphaned storage to inflate your bill. - **Incident isolation.** The ability to identify, rate-limit, or quarantine a single misbehaving tenant without degrading the rest of the estate. This is only possible if your Graph gateway partitions work per tenant from the outset. - **Schema reconciliation.** A scheduled walk of the estate to bring older containers up to the current container type configuration, with progress tracked against the version stamps you applied at provisioning. - **Throttling and degradation drills.** Periodic exercises that confirm your backoff and queuing behave correctly under sustained 429 conditions, before a real surge proves they do not. ## How McKenna Consultants Can Help Standing up a SharePoint Embedded pilot proves the concept; running it for hundreds or thousands of customers proves the engineering. The hard parts — idempotent multi-tenant onboarding, a Graph gateway that survives throttling, per-customer billing attribution, data residency you can evidence, and observability across the whole estate — are precisely the areas where a well-designed **SharePoint Embedded multi-tenant architecture** pays for itself and where a rushed one becomes a liability. McKenna Consultants has spent more than 25 years building Microsoft document integration, from custom WOPI hosts to production SharePoint Embedded estates, and our engagements focus on getting these scale concerns right before they become incidents. If you have a SharePoint Embedded pilot that needs to become a scalable product — or an estate already in production that is straining against Graph limits, billing complexity, or residency requirements — we would be glad to help. Get in touch to talk through your architecture. --- # From AppSource to Enterprise Procurement: Distributing Your Office Add-In to Large Customers **Canonical URL:** https://www.mckennaconsultants.com/from-appsource-to-enterprise-procurement-distributing-your-office-add-in-to-large-customers/ **Author:** Nick McKenna **Published:** 5 July 2026 **Category:** Microsoft Office Add-In Developer # From AppSource to Enterprise Procurement: Distributing Your Office Add-In to Large Customers Every ISV that builds an Office Add-In eventually runs into the same uncomfortable truth: shipping working code is roughly half the job. The other half is **Office Add-in distribution** — getting the add-in validated, listed, approved by a cautious IT department, and deployed across thousands of seats inside a locked-down Microsoft 365 tenant. A great deal has been written about building add-ins. Almost nothing has been written about distributing them, which is strange, because distribution is where enterprise deals actually stall. The demo goes well, the product team is delighted, and then someone from the customer's IT security function asks how, exactly, you intend to get this thing into their tenant, what permissions it requests, and where the data goes. If you do not have crisp answers, the deal waits while you find them. This article is the missing manual. It covers the three distribution routes and when each fits, what Microsoft actually checks during **AppSource submission**, what enterprise administrators scrutinise before they approve anything, how a staged rollout really works, and how updates reach users once you are live. It is written for ISVs — the [SaaS and software vendors](/sectors/saas-and-software-vendors/) we spend much of our time with — who have an add-in built or nearly built and now need it running inside large customers' tenants. It deliberately avoids development how-to content; the assumption is that the engineering is done and the harder organisational problem is in front of you. ## The Three Routes to a User's Ribbon There are three legitimate ways an Office Add-In reaches an end user, and choosing between them is the first distribution decision you make. (Sideloading — a developer manually loading a manifest into their own Office client — is a fourth, but it is a development and testing mechanism, not a distribution channel, and most enterprise tenants disable it for ordinary users anyway.) ### Public listing on AppSource AppSource is Microsoft's public marketplace. A listing there makes your add-in discoverable to any Microsoft 365 user in the world, subject to their tenant's policies, and it is the route Microsoft's validation programme is built around. For an ISV selling a horizontal product, a public listing is close to mandatory: it is where prospects expect to find you, it signals that Microsoft has validated the add-in against its store policies, and — critically for enterprise sales — it is the catalogue that the Microsoft 365 admin centre draws on when an administrator deploys an add-in centrally. Even customers who will never let users install anything themselves generally prefer to deploy a validated AppSource listing rather than a manifest file you emailed them. ### Private line-of-business deployment If your add-in exists for a small number of known customers — or a single one — you can skip the public store entirely. An administrator in the customer tenant uploads your manifest as a custom app and assigns it to users. This route avoids AppSource validation and keeps the add-in invisible to the wider world, which suits genuinely bespoke work. Its weaknesses mirror its strengths: every customer deployment is a manual handover of manifest files, there is no Microsoft validation badge to lean on during security review, and each manifest update means asking every customer's administrator to act. It works well at five customers and becomes an operational headache at fifty. ### Admin-managed centralised deployment The third route is less an alternative than the enterprise endpoint of the other two. **Microsoft 365 centralised deployment**, driven from the Integrated apps area of the admin centre, is how an administrator pushes an add-in — from AppSource or from an uploaded manifest — to specific users, groups, or the whole organisation. The add-in simply appears in users' ribbons; nobody installs anything. For any customer above a few hundred seats, this is how you will actually **deploy Office Add-ins to enterprise customers**, and your job as the vendor is to make the administrator's path through it as short as possible. Large tenants routinely block self-service installation from the store altogether, so "users can just install it themselves" is not a distribution strategy; the administrator is your real gatekeeper, and everything later in this article is about persuading that person. ## AppSource Submission: What Microsoft Actually Checks Submission happens through Partner Center, and validation is a genuine review rather than a rubber stamp. It helps to think of Microsoft's checks in three layers. The first layer is functional. Validators exercise the add-in as a user would: it must load without errors on the platforms your manifest declares, every advertised feature must work, and nothing may crash, hang, or dead-end. If your add-in requires an account on your platform — and for most SaaS companion add-ins it does — you must supply working test credentials and clear testing notes. A remarkable proportion of first-pass rejections are nothing more exotic than a validator who could not sign in. The second layer is the manifest and metadata. The manifest must be technically valid, the requested permissions must match what the add-in actually does, and the listing content — description, screenshots, support URL, privacy policy, terms — must be present, accurate, and consistent with the product the validator experiences. Overstating capability in the description is treated as seriously as understating permissions in the manifest. The third layer is trust. All add-in traffic must run over HTTPS, the privacy policy must exist and say something meaningful, and sign-in flows must behave properly — including graceful handling when consent is declined. Microsoft also operates a compliance programme above baseline validation, in which publishers can attest to (and optionally have certified) their security and data-handling practices. That is optional for listing but increasingly noticed by the enterprise administrators we discuss below, and for an ISV targeting regulated customers it is worth the effort. ### Rejections and realistic timelines The most common rejection causes we see are prosaic: missing or broken test accounts; functionality that fails on one declared platform (typically Office on the web or Mac when the team developed exclusively against Windows desktop); mismatches between manifest, description, and actual behaviour; missing privacy policies; and sign-in flows that trap the validator in a loop. None of these is hard to fix; all of them cost you a full validation round trip. On timing, plan in weeks rather than days. An individual validation pass typically comes back within a few business days, but almost nobody passes first time, and each rejection means a fix, a resubmission, and another pass. Teams that budget a single validation cycle at the end of a project discover the problem precisely when a customer is waiting. Build two or three cycles into the plan and treat a first-pass approval as a pleasant surprise. When we worked with [AuditBoard](/project/auditboard-microsoft-add-in-case-study/) — a provider of auditing, compliance and risk management software whose add-in links evidence from Word and Excel documents to their platform — part of our role alongside accelerating development was advising on good practice in add-in development, including recommendations on submission to Microsoft and compliance with AppSource guidelines. Getting those details right before first submission is considerably cheaper than discovering them through rejection notices. ## What Enterprise IT Admins Scrutinise Passing AppSource validation gets you onto the shelf. It does not get you deployed. Before an enterprise administrator assigns your add-in to ten thousand mailboxes, someone — an IT security team, an architecture board, sometimes a formal third-party-risk function — reviews it, and their questions are predictable enough that you can prepare every answer in advance. **Requested permissions.** The manifest's permission declarations and any Microsoft Graph scopes your add-in requests are the first thing reviewed, because the admin centre surfaces them at deployment time. Every scope you request must be defensible in one sentence. If your Outlook add-in requests read/write access to the entire mailbox when it only ever reads the current message, expect the review to stall while someone asks why. Least privilege is not just good engineering here; it is a sales asset. **Data flows.** Where does document content go when a user clicks your button? Which endpoints does the add-in call, what is stored, for how long, in which region, and under which subprocessors? Enterprises increasingly expect a data-flow diagram as a standard artefact. If your answer involves content leaving the tenant, say so plainly and explain the controls — evasiveness is read as risk. **Identity integration.** Administrators strongly prefer add-ins that sign in with the user's existing Entra ID identity — single sign-on rather than a separate username and password — because it means conditional access policies, MFA, and offboarding all apply automatically. If a departing employee's account is disabled, their access to your platform through the add-in should die with it. Modern add-ins should use Microsoft's current nested app authentication approach for this; add-ins still popping legacy authentication dialogs read as dated and generate review questions. **Vendor posture.** Finally, the review broadens from the add-in to you: certifications such as ISO 27001 or SOC 2, penetration test summaries, incident response commitments, and the inevitable security questionnaire. This is standard SaaS procurement, but the add-in adds a twist — you are asking to run code inside the customer's Office applications, which some reviewers weight more heavily than a browser-based SaaS alone. It is worth remembering the context these reviewers are working in. Many enterprise IT teams have spent the last two years migrating away from legacy Office extensibility, and the lessons of [moving VSTO and COM add-ins to the web platform](/migrating-vsto-and-com-add-ins-to-the-office-web-add-ins-platform/) are fresh: unmanaged add-in estates became expensive liabilities. The same teams are working through the [EWS to Microsoft Graph migration ahead of the October 2026 cut-off](/the-final-sprint-completing-your-ews-to-microsoft-graph-migration-before-october-2026/). The upside for you is that a modern web add-in with Graph-based integration is exactly what they want to standardise on; the downside is that governance is tighter than it has ever been, and they have institutional memory of vendors who made their lives difficult. ## The Enterprise Rollout: Pilots, Stages and Propagation Once approved, deployment itself follows a rhythm that experienced administrators will impose whether you suggest it or not — so suggest it, because vendors who arrive with a rollout plan look like vendors who have done this before. The pattern is pilot, stage, then organisation-wide. A pilot group of a few dozen users — ideally including both enthusiasts and sceptics from the business function that wanted the add-in — runs it for a week or two while the administrator confirms nothing unexpected appears in support queues. Staged deployment then widens assignment group by group, typically by department or region, before the final assignment to everyone. Centralised deployment assigns by user, group, or tenant, so align your stages with groups the customer already maintains rather than asking them to build new ones. Two operational details matter more than they appear. First, propagation is not instant: after an administrator assigns an add-in, it can take up to a day to appear in every user's ribbon, and it appears silently. If nobody tells users the button is coming, the launch lands flat and the pilot feedback you wanted never arrives. Encourage the customer to pair each deployment stage with a short announcement — a screenshot of where the button appears and one sentence on what it does outperforms any manual. Second, plan the support path before stage one: your support team should know which tenant is at which stage, and the customer's service desk should know what the add-in is, because "what is this new button?" tickets will land on them first. For your own engagement model, this phase rewards responsiveness. When we built the Outlook Add-In for [Workiro](/project/workiro-wopi-and-outlook-addin/) — a business collaboration and productivity platform — the add-in shipped alongside a Graph API server-side integration for syncing email conversations into their platform, and we worked closely with their team on user experience and on extending their microservices architecture to support it. The lesson that generalises: enterprise rollout surfaces integration and UX issues that no test tenant ever will, and the vendors who thrive are the ones whose engineering team is still engaged when the pilot group starts clicking. ## How Updates Reach Users — and When They Don't Distribution does not end at deployment, and the update model is one of the web add-in platform's genuine advantages — provided you understand its two-speed nature. Your add-in's code is hosted on your infrastructure and loaded at runtime, so ordinary changes — bug fixes, UI improvements, new behaviour behind existing entry points — deploy the moment you release them, to every user in every tenant, with no marketplace review and no administrator involvement. This is dramatically better than the old world of MSI packages and desktop deployment cycles, and it means your web release cadence is your add-in release cadence. The manifest is the slow path. Anything declared there — new ribbon buttons, new permissions, new Office applications, changed entry points — requires a manifest update, which for an AppSource-listed add-in means another validation pass, and in centrally deployed tenants the updated manifest then propagates on the administrator's schedule, not yours. The practical consequence is an architectural one: design your manifest to be as stable as possible, keep entry points generic, and put changeable behaviour in the hosted code where you control release timing. A new permission scope is the most expensive change of all, because it may re-trigger the customer's security review — grounds for thinking hard about scopes before the first enterprise deployment, not after. ## Monetisation, Briefly A short word on commercial models, because the question always arises. The marketplace does support paid and transactable offers, but the overwhelming majority of successful ISV add-ins we encounter are free to install and function as companions to a paid platform subscription: the add-in authenticates the user against your platform, and your backend enforces entitlements exactly as it does for your web application. This keeps pricing conversations in your sales process where they belong, keeps the AppSource listing friction-free, and means an enterprise can deploy the add-in tenant-wide without a per-seat marketplace transaction. Unless you have a specific reason to transact through the marketplace, the free-companion model is the sensible default; whichever you choose, decide before submission, because it shapes the listing. ## How McKenna Consultants Can Help Distribution is a solvable problem, but it is full of one-way doors — permission scopes, manifest design, listing decisions — that are cheap to get right early and expensive to unwind after your first enterprise deployment. McKenna Consultants has been building [Microsoft Office Add-Ins](/microsoft-office-add-ins/) for many years, and our engagements routinely cover the whole journey: development, AppSource submission and validation, the security-review answers enterprise customers demand, and the rollout patterns that get an add-in from approval to ten thousand ribbons. We have done this for audit and compliance platforms like AuditBoard and collaboration platforms like Workiro, working as an extension of in-house teams rather than around them. If you have an Office Add-In that needs to reach large customers — or an enterprise deal waiting on answers about permissions, deployment, or AppSource — we can help you give those answers with confidence. [Get in touch](/contact/) and talk to us about where your add-in needs to go next. --- # The EU AI Act Goes Live in 33 Days: Final Compliance Checklist for August 2 **Canonical URL:** https://www.mckennaconsultants.com/the-eu-ai-act-goes-live-in-33-days-final-compliance-checklist-for-august-2/ **Author:** Nick McKenna **Published:** 29 June 2026 **Category:** Artificial Intelligence ## The EU AI Act Goes Live in 33 Days: Final Compliance Checklist for August 2 There are 33 days between the publication of this article and the date that the EU AI Act high-risk obligations become enforceable. On 2 August 2026 the regulatory regime that has been on a multi-year preparation arc reaches the point at which non-compliance generates exposure: penalties up to EUR 15 million or 3% of global turnover for the most serious infringements, with material fines for lesser categories. This article is the **EU AI Act compliance checklist** for organisations that need to be defensibly compliant on day one. It is unapologetically tactical — no further retrospective analysis, no further explainer of the regulation's history, no further comfort. The Q1 2026 readiness guide on this site explained what the regulation requires; this article is about *what to ship in the next four weeks* to actually be compliant. The audience is CTOs, heads of compliance, AI programme leads, and the engineering teams executing in the closing window. McKenna Consultants delivers compressed-timeline EU AI Act compliance engagements, and the structure here is the structure we use in those engagements. A note on the Digital Omnibus situation, addressed candidly later in the article: at this point, no further deferral is reliably going to land before 2 August. Plan as if the deadline is the deadline. ### What Has to Be True on 2 August For an organisation that places, deploys, or uses a high-risk AI system in scope of the Act, the position on 2 August must include — at a minimum: 1. **A complete inventory of in-scope AI systems**, with each system classified against the Annex III high-risk criteria. 2. **Technical documentation (Article 11) finalised for each high-risk system.** 3. **A quality management system (Article 17) in operation across the AI development and deployment lifecycle.** 4. **Data governance (Article 10) for training, validation, and testing datasets evidenced.** 5. **Human oversight (Article 14) implemented in design and operations.** 6. **Accuracy, robustness, and cybersecurity (Article 15) benchmarks met and documented.** 7. **Post-market monitoring (Article 72) operational, with incident reporting procedures.** 8. **Conformity assessment route selected and (where applicable) initiated.** 9. **CE marking and EU declaration of conformity prepared for products that require them.** 10. **Records retention and traceability mechanisms in place.** If any of these is materially incomplete on 1 August, the position on 2 August is non-compliant for that system. The checklist below walks through each in delivery-friendly form. ### Week One (Now to 7 July): Classification and Scope The first week is about confirming what is actually in scope. The mistake organisations make in compressed-timeline compliance is treating every AI system as high-risk; this both inflates the work and dilutes attention to genuinely in-scope systems. **Action 1: Complete the AI system inventory.** Every system that uses an AI component — whether developed in-house, procured, or embedded in a third-party tool — must be on the inventory. For most enterprises this list is longer than expected. Include systems you might be tempted to dismiss (HR screening tools, credit assessment algorithms, customer support automation, fraud detection). **Action 2: Apply the Annex III classification per system.** The high-risk categories include AI used in: biometric identification, management and operation of critical infrastructure, education and vocational training, employment and worker management, access to essential private services and public services, law enforcement, migration, and administration of justice and democratic processes. Each category has specific scope criteria; the classification is not "this looks like AI in employment, so high-risk." It is a structured assessment against the regulation's text. **Action 3: Identify systems explicitly excluded.** Some AI systems are out of scope (research-only systems, AI for purely military purposes, free and open-source AI components in specific contexts) or fall below thresholds. Document the basis for exclusion; this becomes part of your compliance evidence even though the system itself is not subject to the Article 11-15 obligations. **Action 4: Identify your role per system.** The Act distinguishes between providers (who develop and place AI systems on the market) and deployers (who use AI systems in a professional capacity). Your obligations differ depending on which role you occupy for each system. Many enterprises are *both* — providers of internal AI systems they have built, and deployers of third-party systems they have procured. Each role attracts its own obligations. **Output for Week One:** A signed-off inventory document with classification rationale and role assignment per system. This is the foundational artefact; everything else hangs on it. ### Week Two (8-14 July): Documentation Sprint With scope confirmed, the second week is the documentation sprint. Article 11 requires technical documentation that demonstrates the system's compliance posture. The required content (per Annex IV) includes the system's purpose, architecture, training data, validation methodology, accuracy and robustness metrics, the system's design specifications, and the changes made through the lifecycle. **Action 5: Draft or finalise technical documentation per high-risk system.** A typical Article 11 documentation file is 30-80 pages depending on system complexity. For systems already documented internally, this is structuring and filling gaps; for systems with patchy documentation, this is a substantial writing exercise. **Action 6: Establish or formalise the data governance evidence (Article 10).** Training, validation, and test datasets must be evidenced with provenance, quality controls, bias assessment, and where appropriate, demographic representativeness analysis. If your organisation has been treating training data as developer-managed material rather than as governed assets, this is the week to formalise the governance. **Action 7: Document the system's intended purpose and reasonably foreseeable misuse.** The Act requires explicit assessment of how a high-risk AI system might be misused and what the provider has done to guard against misuse. This is harder than it sounds for organisations that have not previously worked with this framing. **Action 8: Capture the conformity assessment route.** Some high-risk systems require a notified body assessment; some require internal control. Identify the route per system, and for those requiring notified body involvement, confirm the engagement is in flight (most notified bodies are oversubscribed in the run-up to 2 August — initial engagement should already be underway). **Output for Week Two:** Technical documentation files for each in-scope high-risk system, ready for review and sign-off. ### Week Three (15-21 July): Quality Management System and Operational Controls Article 17 requires a quality management system that documents the development and deployment lifecycle of high-risk AI systems. This is not a one-document artefact; it is an operational capability. **Action 9: Confirm the QMS scope and structure.** The QMS must cover policies for compliance, design and development procedures, quality control procedures, examination, test and validation procedures, technical specifications, data management procedures, risk management procedures, post-market monitoring, incident reporting, communication with authorities, record-keeping, and resource management. For organisations that already operate ISO 9001 or similar quality systems, the AI Act QMS can often be aligned with the existing quality framework. For organisations without an established QMS, a fit-for-purpose QMS specific to AI development is the practical alternative — it does not need to be ISO-grade, but it needs to be evidenced. **Action 10: Implement human oversight (Article 14).** Each high-risk system must have human oversight measures designed in and operationalised. This means: - The interface allows a competent human to interpret the system's output and intervene. - The system's output is presented in a way that supports informed human decision-making. - The human can override or disregard the system's output where appropriate. - The human can interrupt the system or stop its operation. For AI systems already in production, this often requires changes to the user interface and to the operational procedures around the system. Identify the changes, scope them, and ship them in this week. **Action 11: Validate accuracy, robustness, and cybersecurity (Article 15).** The Act requires that high-risk systems achieve appropriate accuracy, robustness, and cybersecurity for their intended purpose. This is not a one-time test; it is a benchmark with documented validation. For each system: - Identify the accuracy metrics that align with the system's purpose. - Run validation against representative test data. - Document the results, including the conditions under which accuracy degrades. - Identify the robustness scenarios the system has been tested against (adversarial inputs, distribution shift, edge cases). - Document the cybersecurity controls in place against attacks specifically targeting AI systems (prompt injection for LLM-based systems, model extraction, membership inference, evasion). **Output for Week Three:** Operational QMS, evidenced human oversight per system, validated accuracy and robustness results per system. ### Week Four (22-28 July): Post-Market Monitoring and Final Preparation Article 72 requires that providers have an active post-market monitoring system that collects, documents, and analyses data on the performance of high-risk AI systems through their lifetime, with serious incidents reported to the authorities. **Action 12: Stand up post-market monitoring.** For each in-scope system: - Define the monitoring metrics aligned with the system's intended purpose and risks. - Stand up the telemetry collection. - Define the analysis cadence (typically monthly for high-risk systems, more frequent during early production). - Document the monitoring procedure as part of the QMS. For organisations that have invested in AI agent observability — covered in our 26 May 2026 article — much of the technical infrastructure is already in place. The compliance work is wrapping the existing observability in defined processes that produce evidence for Article 72. **Action 13: Prepare incident reporting procedures.** Serious incidents must be reported to the relevant national authority within tight timeframes (15 days for serious incidents, sometimes less). Establish the procedure: who detects, who decides, who reports. Most incidents will not require reporting — but the procedure for the ones that do must be ready before the first one happens. **Action 14: CE marking and EU declaration of conformity.** Where required by the conformity assessment route, prepare the CE marking and the EU declaration of conformity. The declaration must be retained for at least 10 years after placing the system on the market. **Action 15: Records retention.** The Act requires records — technical documentation, declaration of conformity, automatic logs of high-risk system operations — to be retained for defined periods (typically 10 years). Confirm the retention infrastructure is in place. **Action 16: Final sign-off.** A documented sign-off by the responsible executive that, for each in-scope system, the obligations are met. The sign-off is itself part of the compliance evidence — it is the artefact that demonstrates governance ownership. **Output for Week Four:** Operational post-market monitoring, incident reporting procedure, CE marking where applicable, executive sign-off file. ### The Digital Omnibus and the Postponement Question The European Commission has proposed, through the Digital Omnibus package, postponing certain Annex III high-risk obligations to December 2027. The proposal is in the legislative process. As of late June 2026, it has not been adopted. The realistic position: - If the postponement adopts before 2 August, organisations subject to the postponed obligations gain additional time. This is not certain. - If the postponement does not adopt, the deadline stands. - The compliance preparation needed is the same in either case. The reasonable posture is to prepare as if the deadline is the deadline, treat any postponement as a windfall rather than a plan, and certainly not pause compliance work in anticipation of a postponement that may not materialise. Organisations that paused work in expectation of postponement and were caught short are the ones most at risk in the closing window. ### Penalties and the Enforcement Posture The penalties under the Act: - Up to EUR 35 million or 7% of global turnover for prohibited AI practices. - Up to EUR 15 million or 3% of global turnover for non-compliance with high-risk system obligations. - Up to EUR 7.5 million or 1% of global turnover for incorrect or misleading information to authorities. The enforcement posture in the early months of the regime is unlikely to be aggressive against organisations demonstrating genuine compliance effort. National authorities have signalled that the focus is on prohibited practices and on flagrant non-compliance. Organisations that have made bona fide compliance effort and have credible documentation are unlikely to face punitive action even if specific elements of the implementation are imperfect. This does *not* mean that organisations can defer compliance and rely on a soft enforcement posture. The position on 2 August must be defensible. "We are working on it" is materially different from "we have a credible compliance position with documented gaps and a remediation plan." The first is non-compliance; the second is compliant in practice. ### What to Skip If You Cannot Do Everything For organisations entering the four-week window without sufficient preparation, the prioritisation: **Cannot skip:** the inventory and classification (Action 1-4), technical documentation for the highest-risk systems (Action 5), human oversight (Action 10), incident reporting procedure (Action 13), executive sign-off (Action 16). Without these the compliance position is indefensible. **Can compress:** the QMS (Action 9) — a fit-for-purpose AI-specific QMS rather than full ISO alignment is acceptable in the short term. Post-market monitoring (Action 12) — start with manual monthly review and instrument over time. Records retention infrastructure (Action 15) — interim retention via existing document management systems is acceptable. **Can defer to immediately after 2 August:** broader QMS rollout across non-AI processes, retrospective documentation of low-risk systems, optimisation of monitoring and reporting workflows. The principle is to be defensibly compliant on 2 August on the highest-risk surface, with documented improvement plans for the lower-priority elements. ### Common Mistakes in the Final Window A few patterns we have seen in compressed compliance engagements: **Treating compliance as a documentation exercise rather than an operational one.** Documentation matters, but the Act requires operational capabilities (QMS, oversight, monitoring), not just documents. Documentation without operations is not compliance. **Bundling compliance with broader AI governance.** Some organisations attempt to use the deadline pressure to push through wider AI governance reform. This is laudable but rarely fits the four-week window. Defer the wider work; ship the compliance. **Underestimating the inventory effort.** Many organisations have more in-scope AI systems than they think. The discovery phase routinely takes longer than planned. Start week one early. **Overestimating in-house capacity.** The four-week window assumes dedicated capacity. Programmes that try to fit AI Act compliance around existing delivery commitments tend to slip. Free up capacity or bring in additional capacity. **Assuming the postponement.** As above, do not bet on the Digital Omnibus. ### How McKenna Helps in the Final Window McKenna Consultants offers two engagement shapes for the closing window: **Compressed-timeline compliance delivery.** A four-to-six-week engagement that delivers the compliance position end-to-end. Includes inventory and classification, technical documentation drafting, QMS standup, human oversight implementation, post-market monitoring instrumentation, and final documentation packaging. Typical engagement size: small to medium delivery team for the duration of the sprint. **Compliance review and gap analysis.** A two-to-three-week engagement that reviews the customer's existing compliance position, identifies gaps, and provides a prioritised remediation plan. The customer's team executes the remediation; McKenna provides advisory backup. Suitable for organisations that have done the bulk of the work and want experienced confirmation of where the gaps are. McKenna is a UK-based AI consultancy with a deep AI governance practice. Our team has been working with the AI Act since the political agreement in late 2023, through the staged implementation in 2024 and 2025, and into the high-risk obligations enforcement in August 2026. If your organisation is approaching the deadline with material compliance work outstanding, [contact us](https://www.mckennaconsultants.com/contact/) — the deadline does not move, but the engagement starts the conversation that gets you across it. The 33-day window is enough, with focused execution. It is not enough with delay. Use the window. --- # Selling Spare Parts Online: Aftermarket eCommerce for Equipment Manufacturers **Canonical URL:** https://www.mckennaconsultants.com/selling-spare-parts-online-aftermarket-ecommerce-for-equipment-manufacturers/ **Author:** Nick McKenna **Published:** 28 June 2026 **Category:** B2B eCommerce # Selling Spare Parts Online: Aftermarket eCommerce for Equipment Manufacturers Every machine a manufacturer has ever shipped is still generating demand. Filters, seals, belts, bearings, wear parts, service kits — the equipment sold five, ten or twenty years ago needs feeding for as long as it runs, and the margins on those parts are typically far healthier than the margins on the original equipment sale. Yet at many equipment manufacturers, this most profitable line of business is still transacted the way it was in 1995: a maintenance engineer rings the parts desk, someone looks up a part number in an internal system, a quote goes out by email, and a purchase order comes back the same way. **Aftermarket parts eCommerce** is, for most equipment manufacturers, the single highest-margin digital opportunity on the table — and the one their buyers are now actively asking for. The catch is that a spare parts catalogue is not a normal product catalogue. Fitment, supersession chains, exploded diagrams, service kits and part-number cross-references break the assumptions that standard eCommerce platforms are built on, which is why so many first attempts at **spare parts eCommerce for manufacturers** stall at a glorified price list that the parts desk still has to interpret. In this article we look at why the aftermarket opportunity is worth taking seriously, what makes a parts catalogue genuinely different, and how a composable approach handles those differences where rigid platforms fight you. It draws on our [B2B eCommerce](/b2b-ecommerce/) work with businesses in the [manufacturing and industrial engineering sector](/sectors/manufacturing-and-industrial-engineering/), where these patterns come up on almost every engagement. ## The Highest-Margin Channel Most Manufacturers Haven't Digitised The economics of the aftermarket are well understood inside most equipment businesses, even where nobody has acted on them digitally. New equipment sales are competitive, hard-won and often thin-margin. The installed base those sales create, however, behaves like an annuity: a predictable, recurring stream of parts and service demand that runs for the life of the machine, at margins the original sale could never sustain. The larger and older your installed base, the bigger that annuity is. The problem is that the annuity is not automatically yours. Independent parts resellers and will-fit manufacturers have spent years making their alternatives easy to find and easy to buy online. When a fitter needs a seal kit and the OEM route means a phone call during office hours while a pattern-part supplier offers a searchable webstore with visible stock, the OEM loses the order not on price or quality but on convenience. Every parts order that leaks to the independent channel takes the margin with it — and takes the customer relationship data too, so you never see the demand you are losing. Buyer expectations have moved decisively. The people ordering spare parts — maintenance engineers, dealer parts staff, procurement teams working from a bill of quantities — increasingly expect the same self-service they get everywhere else: find the part, confirm it fits, see availability, order it, track it. We have written before about [self-service buyer portals in B2B](/building-b2b-self-service-buyer-portals-with-elastic-path/), and the aftermarket is where self-service pays back fastest, because parts demand is frequent, urgent and repetitive. A machine that goes down at six o'clock on a Saturday morning does not wait for the parts desk to open on Monday. A well-built parts store takes those orders around the clock, deflects routine order-taking from your parts team so they can handle the genuinely difficult enquiries, and captures a stream of demand data — what is failing, on which machines, in which markets — that a phone-and-email operation never sees. ## Why a Parts Catalogue Breaks Standard eCommerce Assumptions Standard eCommerce platforms embody a retail worldview: a customer browses to a product, picks from a modest set of options, and adds it to a basket. A parts buyer does not start from a product at all. They start from a machine — a model, a year, often a specific serial number — and work towards the one part that fits it. Correctness matters more than merchandising: the wrong part is not a mild disappointment, it is a machine that stays broken while a return is processed. That inversion is the root of everything that makes parts catalogues hard, and it shows up in five specific places. ### Fitment: Which Part Fits Which Machine The foundational question a parts store must answer is "does this fit my machine?" — and the data behind that answer is genuinely complex. A part's compatibility varies by model, by model year, and frequently by serial number range, because engineering changes made mid-production mean that machines either side of a serial break take different parts. Fitment is a many-to-many web of relationships between machines, assemblies and parts, and it has to be treated as first-class catalogue data, not as text in a description field. Get fitment right and the buying experience becomes the one parts buyers actually want: select your machine (or enter its serial number), and see only the parts that fit it. Get it wrong — or omit it — and the store generates wrong-part orders, returns, downtime and mistrust, until buyers conclude it is safer to ring the parts desk after all. A parts store that cannot answer the fitment question has not digitised the aftermarket; it has just published a price list. ### Supersession: The Part That Replaces the Part Part numbers do not stand still. Parts get redesigned, suppliers change, ranges get consolidated, and each of these events retires one part number in favour of another. Over a machine's life this produces supersession chains — A was replaced by B, which was replaced by C — along with messier variants: one part superseded by a kit of several, or two old parts merged into a single new one. A parts store has to resolve supersession gracefully and honestly. When a buyer searches for the part number printed on a fifteen-year-old parts book page, the store should recognise it, explain that it has been superseded, and offer the current equivalent — not return "no results" and lose the order. Saved order templates and reorder lists need to keep working as the numbers beneath them change. That means supersession must be modelled as a first-class relationship in the catalogue, with direction, dates and replacement notes, rather than bodged in as redirects or buried in free text. ### Exploded Diagrams and BOM-Driven Navigation Ask a maintenance engineer to find a part and they will not type a description into a search box — they will find the machine, find the assembly, look at the exploded diagram, and read off the callout number. Visual, bill-of-materials-driven navigation is how the aftermarket has always worked on paper, and a credible parts store reproduces it digitally: machine, then assembly, then an exploded view where each callout links to an orderable part. Two practical points follow. First, the service bill of materials is not the engineering bill of materials: the groupings that make sense for manufacturing are not the groupings a fitter needs, so the sellable structure requires curation. Second, the diagrams and BOM data almost always live in engineering and ERP systems, so publishing them into the store is a [systems integration](/digital-development/systems-integration-services/) exercise as much as a catalogue one. Interactive hotspotted diagrams are the gold standard, but even a static diagram beside a callout-to-part table transforms findability compared with search alone. ### Kits, Service Bundles and Scheduled Maintenance Aftermarket demand often arrives in bundles: the 500-hour service kit, the pump rebuild kit, the annual consumables order. Kits need to be sellable products in their own right, with their own part numbers and their own component lists — and those component lists are themselves subject to supersession, so a kit's contents must update as its constituent parts change. Done well, kits raise order values and reduce the "I ordered the gasket but not the bolts" failure mode; service-schedule prompts against a customer's registered machines take that a step further. ### Search Is Part-Number-First Parts buyers search differently. The dominant search is an exact part number — frequently mangled with spaces, hyphens, leading zeros or an OEM prefix that your system does not store. The second most common search is somebody else's part number: a competitor's reference, a previous supplier's number, or the number from an acquired brand's legacy catalogue. Cross-reference tables mapping those external numbers to your parts are commercial gold, because they let you capture demand that was never expressed in your own numbering scheme. All of this argues for a dedicated search engine tuned for tolerant part-number matching alongside text search — the approach we took on the Astrak platform, where [Algolia provides the product search](/project/astrak-composable-ecommerce-with-elastic-path/) in front of an Elastic Path catalogue. Search quality is not a polish item in a parts store; for a large proportion of sessions, search *is* the store. ## The B2B Layer on Top Everything above concerns the catalogue. Around it sits the standard set of B2B realities. Account-specific commercial terms are one: most manufacturers need customer-specific pricing served from the ERP, a deep enough subject that we will treat it properly in a separate article rather than skim it here. Availability is another, and in the aftermarket it is decisive. A buyer with a stopped machine cares about one thing after fitment: can you supply it, and when? Stock positions and lead times live in the ERP and warehouse systems, and surfacing them credibly in the store — without hammering back-office systems on every page view — is an integration design problem we examined in detail in our article on [real-time inventory and order orchestration in composable commerce](/real-time-inventory-and-order-orchestration-in-composable-commerce/). A parts store that shows no availability, or worse, wrong availability, sends urgent buyers straight back to the phone. Channel structure is the third. Many equipment manufacturers sell through dealers, and a direct parts store raises immediate questions about channel conflict. There is no single right answer — some manufacturers sell direct, some route online orders to the servicing dealer, some give dealers their own branded parts storefronts, and many run a deliberate mixture by market. What matters architecturally is that the platform can present different catalogues, assortments and journeys to different channels without duplicating the underlying parts data, so the channel strategy remains a commercial decision rather than a technical rebuild. ## Why Rigid Platforms Fight You — and Composable Doesn't Attempt all of the above on a conventional monolithic eCommerce platform and you will spend the project fighting the platform's assumptions. Fitment becomes a sprawl of custom tables bolted onto a product model that never expected them. Supersession gets faked with redirects. Exploded-diagram navigation fights a templating system built for category grids. The part-number search behaviours buyers need exceed what the built-in search will do. Each workaround is individually survivable; collectively they produce a store that is expensive to change and fragile to upgrade — which matters, because your parts catalogue will keep evolving for as long as you keep making machines. A composable architecture takes the opposite approach: choose a strong component for each job and integrate them. A flexible commerce engine such as [Elastic Path](/b2b-ecommerce/) provides the catalogue, cart and order core, with a product model open enough to carry fitment relationships, supersession links and kit structures as proper data, hierarchies that support machine-based navigation, and multiple catalogues for different channels and markets. A dedicated search service handles tolerant part-number and cross-reference matching. Your own front end owns the diagram-driven buying experience. And an integration layer connects the ERP and engineering systems that remain the source of truth for BOMs, stock and lead times. This is not theoretical for us. For Astrak Group, we delivered a [composable B2B eCommerce reseller platform](/project/astrak-composable-ecommerce-with-elastic-path/) built on Elastic Path, Algolia, Next.js and Microsoft Azure, with customers involved directly in shaping how search and ordering should work — and the platform added around £300,000 in new monthly revenue after launch. For Norgren, part of IMI Precision Engineering, we replaced a bespoke, externally maintained global web store with a [composable eCommerce store](/project/norgren-composable-ecommerce/) assembled from off-the-shelf services around Elastic Path — cutting the cost of ownership, removing single points of failure, achieving a 100% Google Lighthouse score at launch, and freeing development effort for innovative features rather than platform maintenance. Different businesses, same lesson: when the catalogue is the hard part, the platform must bend to the catalogue, not the other way round. ## Getting Started Without Boiling the Ocean The biggest risk in an aftermarket eCommerce programme is not the technology — it is scope, and specifically data scope. Fitment, supersession and service-BOM data is often scattered across ERP records, engineering systems, dealer portals and institutional memory, and cleansing all of it for the entire installed base before launch is a route to never launching. The pragmatic sequence is narrower: start with the parts that matter — the fast-moving consumables and wear parts that dominate order volume — and one or two machine families where the fitment data is strongest. Launch, measure what buyers search for and fail to find, and let that evidence drive which data you enrich next. Astrak's experience is instructive here: unusually high customer involvement during the build produced a simpler buying journey than anyone would have specified upfront. Treat the store as a product that grows with your data, not a monument that must be complete on day one. ## How McKenna Consultants Can Help McKenna Consultants has spent more than 25 years building software for manufacturers and industrial engineering businesses, and B2B eCommerce for manufacturers is one of the areas where that experience runs deepest. We designed and delivered the composable Elastic Path platforms behind Astrak's reseller business and Norgren's global web store, and we build the systems integration that connects commerce to the ERP and engineering systems where parts data actually lives. If you are weighing up an aftermarket parts channel — whether that is a first move from phone-and-email ordering or the replacement of a parts store that never quite worked — we can help you scope the catalogue model, the integrations and the phasing that make it succeed. [Get in touch](/contact/) to talk it through. --- # Escaping the Spreadsheet Shadow System: Excel Add-Ins for Audit and Compliance Platforms **Canonical URL:** https://www.mckennaconsultants.com/escaping-the-spreadsheet-shadow-system-excel-add-ins-for-audit-and-compliance-platforms/ **Author:** Nick McKenna **Published:** 21 June 2026 **Category:** Microsoft Office Add-In Developer # Escaping the Spreadsheet Shadow System: Excel Add-Ins for Audit and Compliance Platforms Every GRC platform vendor knows the pattern, even if few say it out loud. The platform is the system of record — risk registers, control matrices, testing workpapers, issue logs, all governed, permissioned and versioned. And yet the actual work happens somewhere else. An auditor exports the control matrix to Excel, spends three days testing controls in the spreadsheet, then re-imports the results — or worse, pastes them back cell by cell. Multiply that by every auditor on every engagement and you have a shadow system: a sprawl of spreadsheets on laptops and network shares that contains the real, current state of the audit, while the platform holds a stale copy. The platform's audit trail, so carefully built, records only the moments of export and import; everything of substance happened in the gap between them. Vendors tend to respond by trying to pull users out of Excel — richer web grids, in-app editors, sternly worded training. It rarely works, because Excel is not a bad habit. It is where audit professionals are fastest, where their formulas and working styles live, and where decades of methodology are encoded. The better answer inverts the problem: instead of dragging users out of the spreadsheet, bring the platform into it. A well-built **Excel Add-in for audit software** turns the spreadsheet from an ungoverned copy into a governed front-end — a live window onto the platform, with the platform's identity, validation and audit trail intact. This article covers what that takes technically. It is written for GRC and audit platform vendors weighing the investment, and for heads of internal audit who want to understand what they should be asking their vendors for. It sits squarely in the territory of [Office Add-ins for compliance teams](/sectors/audit-and-compliance/), where we do a good deal of our work. ## Why the Shadow System Is a Compliance Problem, Not a Tidiness Problem It is worth being precise about what the export–rework–reimport cycle actually costs, because "people like spreadsheets" understates it. First, the audit trail breaks. Between export and reimport there is no record of who changed which figure, when, or why. For a function whose entire purpose is evidencing that work was done properly, this is quietly absurd: the audit of controls is itself uncontrolled. When an external reviewer or regulator asks how a conclusion was reached, the platform can only answer for the endpoints. Second, versions fork. Two auditors export the same workpaper, both edit, and someone must reconcile — or, more commonly, nobody notices and the later import silently overwrites the earlier one. The platform believes it holds the truth; it holds whichever truth was uploaded last. Third, validation happens too late or never. The platform knows a control rating must be one of five values, that a test date cannot precede the period start, that an owner must be a real user. A detached spreadsheet knows none of this, so errors are discovered at import time — after three days of work built on them — or slip through into the record. Finally, the data goes walking. Exported workpapers carry findings, personal data and sometimes client-confidential material onto laptops, inboxes and shared drives, outside the platform's permissions and retention rules. Every export is a small, unlogged data-loss event waiting for a lost device to make it a large one. ## Inverting the Model: Excel as a Governed Front-End A modern Excel Add-In — a web add-in built on Office.js, running identically in Excel on Windows, Mac and the web — changes the relationship between spreadsheet and platform. Instead of a file passed over a wall, the workbook becomes a client of the platform, the way your web front-end is. The add-in signs the auditor in with their existing corporate identity, pulls the working data they are entitled to see into structured tables, validates what they enter as they enter it, and writes changes back to the platform attributed to the person who made them. The spreadsheet keeps everything auditors value — formulas, sorting, familiar keys, offline-friendly working patterns — while the platform stays the system of record throughout the engagement rather than at its bookends. That is the model. The rest of this article is the technical meat: the patterns that make it real, drawn from our **Excel Add-in development** work for audit and compliance platforms. ## The Technical Anatomy of a Governed Excel Add-In ### A task pane bound to your platform's APIs The backbone is a task pane add-in: a web application, running in a pane beside the grid, with programmatic access to the workbook through Office.js. Architecturally it is a single-page application like any other client of your platform — which is precisely the point. It should authenticate against the same identity provider, call the same APIs, and be subject to the same authorisation rules as your web application. This is genuine [audit and compliance software integration](/microsoft-office-add-ins/), not a bolted-on exporter: if your platform's API can express "fetch the control tests assigned to this user for this engagement" and "record this test result", the add-in is a new face on existing capability. If it cannot — if your API was only ever an afterthought to the web UI — the add-in project will surface that debt early, and paying it down benefits every future integration, not just this one. The task pane carries the workflow: pick an engagement, load a workpaper, review sync status, resolve conflicts, submit for review. The grid carries the data. Keeping that separation clean is the single most important design decision; add-ins that scatter magic behaviour invisibly through the grid confuse users, while add-ins that trap data entry inside the pane forfeit the reason you chose Excel at all. ### Table bindings and structured data sync The naive approach writes platform data into loose cells and hopes. The robust approach uses Excel's tables and the binding APIs: each platform collection — a risk register, a control matrix, a test sheet — lands as a structured table, and the add-in holds a binding to it so it can find, read and update that region reliably even as the user sorts, filters and inserts rows around it. Two disciplines make the sync trustworthy. Each row must carry the platform's stable record identifier, so that edits map to records regardless of row position — a hidden or protected key column is the workable pattern. And the add-in should track state per row: unchanged, edited locally, new, conflicted. That state model is what turns "export and pray" into an honest, inspectable sync, and it is what the task pane surfaces so an auditor always knows what is saved and what is not. Where the platform's data model allows it, prefer field-level change tracking over row-level; it makes both attribution and conflict handling sharper. ### Validation at the point of entry Everything your platform knows about valid data should follow the data into the workbook. Enumerated fields become dropdowns; dates and numerics get range checks; cross-field rules — a failed test requires a finding reference — are evaluated as the auditor works, with problems marked in context rather than reported as a rejection list at import time three days later. Some of this maps onto Excel's native data validation, which the add-in can apply to the bound tables; the more interesting rules run in the add-in against the platform's own validation logic, ideally by calling the same rule definitions the web application uses so the two can never drift apart. The goal is simple to state: it should be difficult to get invalid data into the workbook and impossible to get it into the platform. ### Write-back with user attribution When changes flow back, they must land as first-class platform events, not as an anonymous bulk import. Because the auditor is signed in as themselves, every write can be attributed: this user changed this control's rating from effective to ineffective at this time, from within Excel. The platform's audit trail should record add-in-originated changes with the same fidelity as web-originated ones — same event schema, plus a channel marker — so that reviewers and regulators see one continuous history rather than a gap labelled "spreadsheet". Batch semantics deserve thought too: an auditor completing forty test rows and pressing sync is making one work submission, and representing it as a coherent batch (with per-row outcomes) gives you both a sensible user experience and a defensible record. This is the property that dissolves the shadow system. The spreadsheet stops being the place where history goes dark; it becomes just another authenticated client whose every material action is on the record. ### Conflict handling when two auditors collide Two auditors will eventually edit the same record — one in Excel, one in the web app, or both in separate workbooks. Silent last-write-wins is how platforms quietly destroy work and trust, so the write-back path needs optimistic concurrency: each row carries a version token from the platform, and a write with a stale token is refused, not applied. The add-in then owes the user a decent resolution experience — show both values, side by side, let the auditor choose or merge, and record the resolution as an attributed event like any other change. In practice conflicts are rare when engagements partition work sensibly, but the first silently lost test result costs you a user's confidence permanently, and confidence is the whole game: the add-in survives only as long as auditors trust the sync. ### Sign-in with Entra ID and nested app authentication Identity is where governance either holds or leaks. The add-in should sign users in with their organisational Entra ID account — the same identity, conditional access policies and MFA that govern everything else they use — using Microsoft's nested app authentication model, which is the current recommended approach for single sign-on in Office web add-ins. Done properly, the experience is that the add-in simply knows who you are: no separate password to phish, no shared service account smearing attribution, and when someone leaves the firm their add-in access dies with their account, automatically. The token the add-in obtains is then exchanged for access to your platform's API under your existing authorisation model, so entitlements in Excel are exactly the entitlements in the web application — an auditor who cannot see an engagement in the browser cannot pull its workpapers into a spreadsheet either. ### Versioned templates Audit work is template-driven — the testing workpaper, the risk assessment matrix, the RCSA form — and templates drift. A partner tweaks a column, mails the "improved" version around, and a year later there are nine incompatible variants in circulation, which is the shadow system reborn at the metadata level. The fix is to make the platform the source of templates as well as data: the add-in generates workbooks from centrally managed, versioned templates, stamps each generated workbook with its template version, and can refuse — or upgrade — a workbook built on a superseded one. Methodology changes then roll out as template releases with effective dates, and when a reviewer asks which methodology version a 2025 workpaper used, the answer is recorded rather than reconstructed. On getting the add-in to the audit team at all: Microsoft 365 centralised deployment lets an administrator push it to the whole function from the admin centre, and the wider distribution story — marketplaces, validation, enterprise IT approval — is a subject for another day. ## What This Looks Like in Practice This is not a hypothetical architecture. [AuditBoard](/project/auditboard-microsoft-add-in-case-study/), a provider of auditing, compliance and risk management software, is a proof point of exactly this inversion: their software requires evidence and information to be gathered from Word and Excel documents and linked to information inside their platform, and their Microsoft Add-In had already proved popular with customers when they brought in McKenna Consultants as specialist add-in developers to accelerate its further development. We worked directly inside their delivery machinery — their Jira, Figma and Agile planning processes — providing development capacity alongside advice on good practice in add-in engineering. The demand signal is the part worth dwelling on: the add-in was popular because it met auditors where they already worked, rather than asking them to change. The pattern also generalises beyond Excel. For [Corcentric](/project/corcentric/), whose software improves procurement, accounts payable and accounts receivable, we built a Word Add-In that lets users insert clauses, terms and related information into contracts and templates directly from their contract lifecycle management platform, working closely with Corcentric's SaaS development team to use and extend their APIs — together with a desktop sync app so that documents move between desktop Word and the platform without users downloading and uploading files. Different Office application, same principle: the Office document becomes a governed front-end to the platform, and the manual file shuffle — the shadow system's engine — disappears. One more piece of context for teams carrying older technology: firms still running legacy VSTO-based Excel tooling are working through [the migration to the web add-in platform](/migrating-vsto-and-com-add-ins-to-the-office-web-add-ins-platform/), and the platform described here is the successor those migrations point to — cross-platform, centrally deployable, and built on the same web stack as the rest of your product. ## Questions to Ask Before You Build For a platform vendor scoping this, four questions determine most of the effort. Can your API already express the operations auditors perform in spreadsheets, with proper authorisation — or is API investment the real first phase? Does your platform have per-record versioning to support optimistic concurrency, or will that need retrofitting? Where does validation logic live today, and can it be shared rather than duplicated? And what is the smallest workflow — one workpaper type, one engagement stage — that would prove value to real auditors in a pilot? Start there rather than attempting the whole platform surface at once: an add-in that makes control testing genuinely better will earn the mandate to grow. For a head of internal audit evaluating vendors, the questions invert: when my team works in Excel, is that work attributed, validated and on the audit trail — or does your "Excel integration" mean export and import with better branding? The difference between those two answers is the difference between a governed front-end and the shadow system with a logo on it. ## How McKenna Consultants Can Help McKenna Consultants has spent over 25 years building Microsoft integration software, and [Microsoft Office Add-In development](/microsoft-office-add-ins/) is one of our core specialisms — including precisely this pattern of binding Office applications to a platform's APIs with real identity, validation and attribution, for clients such as AuditBoard in the audit and compliance space and Corcentric in procurement and finance. We work as an extension of in-house teams, from architecture and API readiness through build, and we are comfortable operating inside your existing delivery processes rather than alongside them. If your platform's data keeps escaping into ungoverned spreadsheets — or your auditors are asking why the tools they use all day don't talk to each other — we would be glad to talk through what an Excel Add-In could do for your product. [Get in touch](/contact/) to start the conversation. --- # Choosing Your Composable Commerce Frontend: Hosted Frontends, Custom React, and Headless CMS Compared **Canonical URL:** https://www.mckennaconsultants.com/choosing-your-composable-commerce-frontend-hosted-frontends-custom-react-and-headless-cms-compared/ **Author:** Nick McKenna **Published:** 16 June 2026 **Category:** B2B eCommerce ## Choosing Your Composable Commerce Frontend: Hosted Frontends, Custom React, and Headless CMS Compared The first big decision in a composable commerce build is the platform — Elastic Path, commercetools, BigCommerce, or one of the other established options. The second decision, made immediately afterward, is what builds the storefront. The platform supplies catalogue, pricing, customer, and order capabilities through APIs. The storefront is a separate engineering investment that turns those APIs into a buyer experience. By the start of 2026 there are three serious approaches: a vendor-hosted frontend such as Elastic Path's hosted PXM Storefront, a fully custom build in React or Next.js or Remix, and a headless CMS-anchored frontend that puts content management at the centre. This article addresses the **composable commerce frontend options compared** question directly. It covers what each approach actually is, the decision factors that matter, the realistic time-to-market and total-cost-of-ownership profiles, and the archetypes where each approach is the right choice. It is the architectural decision guide we walk clients through inside McKenna engagements. ### The Three Approaches in One Paragraph Each **Hosted vendor frontends.** Elastic Path PXM Storefront and the hosted experience products from other composable platforms. Vendor-built, vendor-operated, configurable rather than custom-coded for the most part. Theme and component customisation is supported, but the underlying frontend is a managed product owned by the platform vendor. **Custom React, Next.js, or Remix builds.** A storefront engineered specifically for the customer's brand, calling the composable platform's APIs directly. Maximum design and behaviour flexibility; maximum engineering investment. Hosted on the customer's preferred infrastructure (Vercel, Netlify, AWS, Azure), with the customer's preferred CI/CD, observability, and security posture. **Headless CMS-anchored frontends.** A storefront where the content management system (Contentful, Storyblok, Sanity, Strapi, Prismic) is the orchestration layer. Commerce data flows from the composable platform; content (marketing, editorial, brand assets) flows from the CMS; the frontend renders both. Often built in Next.js or similar but with the CMS rather than the commerce platform as the primary content authority. The three approaches sit on a continuum rather than as discrete points, and many real implementations blend them. The decision factors below help locate the right point for any specific situation. ### Decision Factor 1: Time-to-Market **Hosted vendor frontends.** Fastest. A configured hosted frontend can be live in weeks, not months. Catalogue setup is typically the critical path; the frontend itself is largely a configuration exercise. For organisations that need to be in market quickly — replatforming under deadline pressure, launching a new business unit, validating a market hypothesis — hosted frontends deliver. **Custom builds.** Slowest. A custom React or Next.js build takes months from start to MVP, longer to production-ready quality. The time is spent on design, development, testing, performance optimisation, and the long tail of edge cases that only emerge in production. The time investment buys flexibility, but for organisations whose competitive advantage is something other than the storefront, the time is often poorly spent. **Headless CMS-anchored frontends.** Middle. The CMS provides starter templates and component patterns that accelerate the work, but a substantial frontend build is still required. Typically two-thirds of the time of a fully custom build for equivalent quality. For organisations replatforming from a monolithic platform under deadline pressure, hosted frontends or accelerated headless CMS builds are typically the only viable choices. Custom builds for replatforming are common but routinely run late. ### Decision Factor 2: Design Flexibility **Hosted vendor frontends.** Constrained. Theming, component swapping, and configurable layouts cover most retail-style storefronts well. Highly bespoke design — unusual interaction patterns, branded content treatments that fall outside the supported template variations, custom animation and visual storytelling — is harder. The hosted frontend is opinionated about the shape of an ecommerce page, and that opinion limits the design surface. **Custom builds.** Maximum. Every pixel is in the customer's control. The design language can be anything the brand requires. Interaction patterns can be tailored to the specific buyer journey. The trade-off is that all of the work to make the design exist is engineering work the customer is paying for. **Headless CMS-anchored frontends.** High. Strong design flexibility because the rendering layer is custom; strong content flexibility because the CMS supports rich content modelling. The trade-off is that some of the design choices are constrained by the CMS's rendering model — but the constraints are looser than a hosted frontend. For DTC brands and luxury retailers where the storefront is the brand experience, custom builds dominate. For B2B distributors and industrial commerce where the storefront is more functional than expressive, hosted frontends are increasingly the right choice. ### Decision Factor 3: Content Workflow Ownership This is the decision factor most often overlooked at architectural review and most often complained about six months later. **Hosted vendor frontends.** Content workflows are owned by the commerce vendor's authoring surface. Marketing teams interact with the same authoring tools as catalogue managers. For organisations where commerce and content are tightly aligned and the same team owns both, this is a non-issue. For organisations where marketing and commerce are different functions with different tools — which is the more common pattern — the hosted authoring surface is a friction point. **Custom builds.** Content workflow is whatever the customer builds it to be. In practice, a custom build without a CMS pushes content management into developer tooling, which marketing teams cannot use directly. Custom builds without a CMS therefore typically end up adding a CMS later, often in pain. **Headless CMS-anchored frontends.** Content workflows live in the CMS. Marketing teams use authoring tools designed for marketing teams (Contentful, Storyblok, Sanity have well-designed editorial interfaces). Commerce teams use the commerce platform for catalogue and pricing. The two streams flow into the storefront separately and integrate at the page level. For organisations with separate marketing and commerce functions, this is the most natural model. The unspoken truth: most B2B and B2C composable commerce builds eventually develop a CMS layer. Building one in from the start is cheaper than retrofitting it later. ### Decision Factor 4: SEO and Performance **Hosted vendor frontends.** Built with SEO and performance baked in. Page speed metrics are typically excellent (server-side rendering, edge caching, optimised image handling are all standard). SEO best practices are followed by default — semantic markup, proper canonicalisation, structured data. The work the customer would otherwise have to do themselves is done by the vendor. **Custom builds.** SEO and performance are entirely the customer's responsibility. With Next.js, Remix, or similar modern frameworks, the building blocks are excellent — server-side rendering, incremental static regeneration, edge caching, automatic image optimisation. The frameworks make it possible to build extremely fast storefronts, but it is possible only with disciplined engineering. Custom builds with insufficient SEO and performance investment routinely score worse than hosted frontends. **Headless CMS-anchored frontends.** Similar to custom builds — capable of excellent SEO and performance, but only with disciplined engineering. The CMS adds an additional content fetching layer that can become a performance bottleneck if not carefully managed. For SEO-critical storefronts where organic traffic is the primary commercial driver, the hosted frontend's "good by default" posture is often better than a custom build's "great if engineered well, mediocre if not." ### Decision Factor 5: Total Cost of Ownership The full TCO picture spans initial build, ongoing development, hosting, and the long tail of operational maintenance. **Hosted vendor frontends.** Lowest initial build cost. Modest ongoing licence fees. Vendor handles hosting, performance optimisation, and many infrastructure concerns. Primary ongoing cost is the configuration and theming work as the storefront evolves. **Custom builds.** Highest initial build cost. Modest infrastructure costs (Vercel, Netlify, or similar starts cheap and scales linearly). Substantial ongoing development cost as the storefront evolves — every change is engineering work. Long-tail maintenance cost as frameworks evolve and dependencies need updating. **Headless CMS-anchored frontends.** Middle initial build cost. Adds CMS licence cost (Contentful, Storyblok, Sanity all have meaningful per-environment pricing at enterprise scale). Lower ongoing development cost than custom because content changes flow through the CMS without engineering involvement. A common architectural mistake is comparing initial build cost in isolation. The custom build that costs three times as much initially but produces equivalent buyer experience can be cheaper over five years if the content team can self-serve through a CMS rather than queuing tickets with engineering for every page change. ### Decision Factor 6: Vendor Lock-In and Replaceability **Hosted vendor frontends.** Highest lock-in. The frontend is not portable; replacing it means rebuilding. The vendor's roadmap controls feature availability, and migration paths to other vendors are typically painful. **Custom builds.** Lowest lock-in. The code is yours. Replacing the composable commerce platform requires rebuilding the integration layer but the frontend itself is portable. **Headless CMS-anchored frontends.** Middle. The frontend code is portable; the CMS-specific content modelling carries some lock-in but CMS migration is generally tractable. For organisations where the strategic risk of platform lock-in is significant — long-term commerce strategies, regulated industries with multi-decade architectural horizons — custom or CMS-anchored builds are usually the right choice. ### Decision Factor 7: International and Multi-Storefront Complexity Composable commerce often serves multiple storefronts: per market, per brand, per business unit, per channel. **Hosted vendor frontends.** Multi-storefront support varies by vendor. Strong support for multi-locale and multi-currency configurations of a single brand. Weaker support for genuinely distinct brands operating against the same backend — though this is changing rapidly as composable platforms invest in multi-storefront capabilities. **Custom builds.** Maximum flexibility. Each storefront can be its own application or a monorepo of related applications. Engineering effort scales with the number of storefronts. **Headless CMS-anchored frontends.** Strong. Modern headless CMSs are explicitly designed for multi-brand, multi-locale content delivery. The same CMS can serve multiple storefronts with localised content streams, and the frontend code can be shared with brand-specific themes. For organisations operating ten regional storefronts on shared backend infrastructure, the headless CMS approach typically scales most cleanly. ### Three Worked Archetypes The decision factors above are most useful when applied to specific situations. Three common archetypes: #### Archetype 1: B2B Industrial Distributor A B2B distributor with thousands of products, contract pricing per customer, bulk-order workflows, and a primarily functional storefront. The buyer experience is about getting the right product to the right account at the right price, not visual storytelling. **Recommendation: hosted vendor frontend, with selective custom development.** Time-to-market matters; the design surface is largely functional rather than expressive; the catalogue management workflow is tightly integrated with the commerce data; SEO is moderately important but not the primary commercial driver. Hosted frontends with custom development for the bespoke B2B workflows (account hierarchy navigation, contract-aware pricing display, quote workflows) deliver the right balance. #### Archetype 2: DTC Premium Brand A direct-to-consumer brand selling premium products in a category where the storefront experience is materially the brand experience. Visual storytelling, bespoke product pages, content-rich brand journeys, and seasonal campaign capabilities are all primary capabilities. **Recommendation: headless CMS-anchored frontend, custom-built.** Design flexibility is non-negotiable; content workflow ownership matters because marketing is the primary content driver; SEO and performance are commercially critical; the brand will not accept the design constraints of a hosted frontend. The CMS provides the marketing team's authoring environment; the custom frontend provides the brand expression; the composable commerce platform supplies the catalogue, pricing, and order data. #### Archetype 3: Multi-Region Enterprise B2B Manufacturer An industrial manufacturer with ten regional storefronts, three brands, multiple currencies, complex catalogues, and a parent organisation that operates them as a portfolio. Each storefront has localised content but shares the underlying catalogue and order infrastructure. **Recommendation: headless CMS-anchored frontend, with shared frontend code and brand-specific themes.** Multi-storefront complexity is the binding constraint; CMS-driven content management scales across markets; shared frontend code amortises engineering cost across the portfolio; commerce data lives once in the platform and is consumed by every storefront. The hosted vendor frontend approach struggles with multi-brand multi-region; custom-per-storefront produces a maintenance burden the organisation cannot afford long-term. ### Decision Heuristics A few heuristics that compress the decision framework: - **If time-to-market is the binding constraint, choose the hosted frontend.** Even if it is not the long-term right answer, it is often the right *first* answer with a planned evolution to a more flexible model. - **If content workflow ownership separates marketing and commerce functions, plan for a CMS from the start.** Retrofitting a CMS is more expensive than designing one in. - **If the storefront is the brand experience, custom or CMS-anchored frontends are the only credible choices.** Hosted frontends do not produce premium-brand experiences in 2026. - **If you operate multiple storefronts on shared backend infrastructure, lean toward CMS-anchored builds.** Multi-storefront management is where headless CMS shines. - **If your engineering capacity is constrained, lean toward hosted frontends.** Custom builds consume engineering capacity continuously, and capacity-constrained teams produce sub-optimal results. ### How McKenna Approaches the Decision McKenna Consultants advises and builds across all three approaches. Our advisory engagements work the decision factors above through to a documented recommendation; our delivery engagements implement the recommendation. Specific delivery patterns: **Hosted frontend builds.** Configuration, theming, and selective custom development on Elastic Path's PXM Storefront and equivalent hosted experiences. Output: a launched storefront with documented configuration and operational handover. **Custom Next.js or Remix builds.** Full custom frontends integrated with Elastic Path through the API surface, hosted on Vercel, Netlify, or customer-preferred infrastructure. Output: a launched storefront with shared component library, performance instrumentation, and SEO baseline. **Headless CMS-anchored builds.** Storefront builds with Contentful, Storyblok, or Strapi as the content layer, integrated with Elastic Path commerce data. Output: a launched storefront with content authoring workflows established for the customer's marketing function. **Frontend strategy advisory.** Where the customer is choosing between approaches, we provide structured advisory leading to a documented decision, before delivery starts. Typical engagement length: three to five weeks. If your organisation is choosing a composable commerce frontend approach, or rebuilding an existing storefront because the original choice has produced friction, [contact us](https://www.mckennaconsultants.com/contact/) to discuss the decision and the engagement. --- # Shipping Co-Authoring in Your SaaS: What SharePoint Embedded Gives You Out of the Box **Canonical URL:** https://www.mckennaconsultants.com/shipping-co-authoring-in-your-saas-what-sharepoint-embedded-gives-you-out-of-the-box/ **Author:** Nick McKenna **Published:** 14 June 2026 **Category:** SharePoint Embedded # Shipping Co-Authoring in Your SaaS: What SharePoint Embedded Gives You Out of the Box There is a feature request that never leaves the backlog of a document-heavy SaaS product: "Can two of our users edit the same document at the same time?" It arrives from sales after a lost deal, from customer success after a churn review, from the roadmap workshop where somebody demonstrates a competitor. And it usually dies in the same place — the estimate. Built from scratch, real-time collaborative editing of Word and Excel files is not a feature, it is a company; the editor-fidelity problem alone has consumed engineering organisations far larger than most ISVs. The estimate changes completely when the question is reframed. If you **add co-authoring to your SaaS product** by embedding Microsoft's own editors and storage rather than recreating them, the platform supplies the parts that were unbuildable and your team builds only the parts that are genuinely yours. This article is a scoping piece for exactly that exercise: a clear ledger of what **SharePoint Embedded for SaaS** hands you on day one, what your engineers still have to design and build, how long the work realistically takes, and the three pitfalls we most often see teams discover after launch. It is written for the product manager or engineering lead at a software vendor who has to stand in front of a roadmap meeting and defend a scope, which is why our [SaaS and software vendors](/sectors/saas-and-software-vendors/) clients tend to ask for it in precisely this form. If you need the primer first, we have written about [what SharePoint Embedded is](/what-is-sharepoint-embedded-microsoft-s-modern-path-for-embedding-365-document-editing/) — in one line, a container-based document store owned by your application inside Microsoft 365, with the Office web editors attached. And if you are still weighing it against the older WOPI integration route, our [decision framework for ISVs and enterprise architects](/sharepoint-embedded-vs-wopi-a-decision-framework-for-isvs-and-enterprise-architects/) covers that choice; this article assumes SharePoint Embedded is the road you are scoping. ## The Platform's Side of the Ledger Everything in this section arrives with the platform. Your team writes none of it, and — just as important for your scope document — your team cannot meaningfully customise most of it either. It is worth being concrete, because each line below is something teams have historically attempted to build and regretted. - **Full-fidelity Office web editors.** Word, Excel and PowerPoint documents open in Microsoft's own web editors, inside your application's frame. Fidelity is the point: tracked changes, formulas, pivot tables, formatting behaviour — the things every "good enough" third-party editor eventually breaks on real customer documents. - **Real-time co-authoring and presence.** Multiple users edit the same document simultaneously, see each other's cursors and positions, and watch changes merge live. This is the same co-authoring machinery Microsoft 365 users already know, which means the behaviour is proven and your users need no training. A genuine Word co-authoring integration — the request that started this whole exercise — is therefore a configuration outcome, not an engineering programme. - **Autosave and version history.** Documents save continuously, and versions accumulate automatically with user attribution. You do not build a versioning subsystem, a "restore previous version" feature, or an autosave debouncer. - **Previews and thumbnails.** Documents can be rendered for preview without opening an editing session, and thumbnails are available for gallery-style views in your UI. - **Content search.** Text inside stored documents is indexed and searchable through the platform, scoped to your application's containers — full-text search over document content without standing up your own indexing pipeline. - **Enterprise storage plumbing.** Encryption, durability, and the operational baseline of Microsoft 365 storage come with the container model, along with the governance surface enterprise customers increasingly demand. (That surface deserves its own discussion and this is not that article.) Read the list again from a build-versus-embed angle and notice its shape: these are precisely the components with the worst build-it-yourself economics. The editor is effectively unbuildable at fidelity; co-authoring is a distributed-systems problem wearing a text box as a disguise; search and versioning are undifferentiated heavy lifting. The platform's side of the ledger is the side you were never going to win. It also keeps improving without your involvement: as Microsoft ships changes to the web editors, your product inherits them, which is a maintenance posture no in-house editing component can offer. ## Your Side of the Ledger None of what follows is optional, and none of it comes in the box. This is the real scope of the feature, where estimates should concentrate — and, not coincidentally, where a [SharePoint Embedded development](/sharepoint-embedded/) engagement spends nearly all of its time. The platform half of the ledger needs configuring; this half needs designing. ### Container lifecycle, tied to your domain objects SharePoint Embedded stores documents in containers, and the platform has no opinion about what a container *means*. Your product does: a container per project, per client workspace, per deal room — whatever maps to the object your customers think in. Your team designs that mapping and then owns the lifecycle around it: containers created when the domain object is created, archived or deleted when it closes, and — the case everyone forgets — cleaned up when a customer leaves. We come back to offboarding under pitfalls, because it earns the repetition. ### Permission mapping Your application already has a permission model — roles, workspaces, sharing rules your customers have configured for years. Containers have their own permission model. The bridge between the two is yours to design: when your app says "viewer", what does the container say? Who reconciles the two when an admin changes a role mid-session? This is the single most consequential design task in the whole feature, because every mistake here is an access-control mistake. It deserves a design review on its own. ### The editor launch experience The platform provides the editor; your product decides how users reach it. Where do documents surface in your UI? What does clicking one do — preview or edit? Which of your application's states map to read-only, and how is that communicated? Do you offer "open in the desktop app" for the power users who will demand it, and how does your UX handle the handover? None of these decisions is difficult in isolation; collectively they are the difference between a document feature that feels native to your product and one that feels bolted on. ### Notifications and activity When a colleague edits the proposal, who finds out, and where? The platform knows what happened; broadcasting it in your product's voice — activity feeds, email digests, in-app notifications wired to your existing notification centre — is application work. Change notifications from the platform give you the raw events; the product experience built on them is yours. ### Customer onboarding and consent Because the capability lives inside Microsoft 365, bringing a customer aboard involves their Microsoft 365 administrator granting your application access — a one-time consent step on their side. For self-serve SMB customers this needs a well-designed guided flow; for enterprise customers it needs documentation their IT team will accept and a support script for the questions that follow ("what exactly does your application get access to, and why?"). None of this is difficult, but it is a genuine workstream: an onboarding state that can stall on someone outside your company, error handling for half-completed setups, and a way for your success team to see where each customer is in the process. Scope it explicitly, because it is the one part of the feature your own engineers cannot click through end to end without a second tenant to play the customer. For the engineering detail behind this half of the ledger — container types, permission grants, Microsoft Graph calls — our recent [step-by-step guide to building a SharePoint Embedded application](/building-your-first-sharepoint-embedded-application-container-types-permissions-and-microsoft-graph/) covers the implementation layer this article deliberately stays above. ## What the Effort Actually Looks Like An honest framing for the roadmap meeting: for a competent team that already runs a multi-tenant SaaS product, the first production release of an embedded document feature is a matter of weeks — not the months a naive reading of the feature suggests, and emphatically not the years a from-scratch editor would consume. The platform's side of the ledger is why. You are not building document collaboration; you are integrating it, and the integration surface is bounded. What stretches the timeline is rarely the platform. It is your own side of the ledger: a permission model with years of accumulated special cases that resists clean mapping; enterprise customers whose admins must consent to your application touching their tenant, which adds an onboarding flow and a support script; UX iterations on the editor launch experience once real users touch it. In our experience the ratio of "integrating Microsoft's capability" to "deciding what our product should do with it" runs about one to two — plan accordingly, and put your senior product thinking on the second part. The staffing shape follows from that ratio: this is not a project that needs a large team, but it does need your people who genuinely understand the existing permission model and the customers' working patterns, because those are the two inputs no external partner can supply from outside. Two engagements of ours illustrate the shape of the work from different angles. When we integrated in-browser Office editing into the document management platform of [Kendox](/project/empowering-paperless-productivity-with-wopi-for-kendox/) — via WOPI, the integration route of its era — the substantial engineering was never the editing surface itself: it was fitting the capability into their existing microservices architecture, supporting both their SaaS and on-premise deployment models, and collaborating with their in-house designers so the result felt like Kendox rather than an embedded foreign object. That distribution of effort is exactly what a SharePoint Embedded build looks like today, with less integration work at the editor end. And [Slidebank](/project/slidebank/), a presentation-management SaaS, is the organisational half of the same lesson: their customers demanded a mobile experience the in-house team had no capacity to build without derailing the core product, so we delivered the iPad app alongside them while their team stayed focused. Document features tend to arrive at ISVs the same way — urgent, adjacent to the roadmap, and competing with it for the same engineers. ## Three Pitfalls That Surface After Launch We see the same three mistakes often enough that they belong in any scoping conversation, precisely because none of them shows up in a demo. **Permission mapping that drifts.** The launch-day mapping between your roles and container permissions is usually correct. The trouble is everything after: a new role added to your product without a corresponding container rule, a bulk role migration that never re-syncs grants, an admin tool that edits one side of the bridge. Treat the mapping as a continuously reconciled contract — with an automated job that detects and repairs divergence — not as a one-off translation done at container creation. The failure mode here is not a bug ticket; it is a customer's security review finding. **Assuming desktop and web parity.** Users will open documents in desktop Office the moment you let them, and the desktop applications are not the web editors: offline windows, different save semantics, features that behave differently across the two. If your product's logic assumes the tight always-connected loop of the web editor — for status tracking, for locking, for notifications — desktop editing will quietly violate those assumptions. Decide deliberately whether to support desktop opening at launch, and if you do, test your product's state machine against it rather than against the web editor alone. **Ignoring container lifecycle at offboarding.** Every customer who signs will eventually leave, taking their contractual right to data deletion or export with them. If containers were created ad hoc and never tracked against customers, offboarding becomes an archaeology project — and orphaned containers keep costing you storage indefinitely. Build the offboarding path when you build the onboarding path: an auditable delete-or-export sequence per customer, exercised in testing, not designed for the first time when a churned customer's deletion request arrives with a deadline attached. What the three have in common is instructive: each one lives on your side of the ledger, in the seams between the platform and your product, and each is invisible in a demo because demos exercise the platform's side — the editors, the co-authoring, the things that were always going to work. Weight your test plan, and your design reviews, towards the seams. ## How McKenna Consultants Can Help Scoping is where this feature is won or lost, and the ledger above is the shape of every successful scoping we have run: let the platform carry the editors, the co-authoring and the versioning, and spend your team — or ours — on the container lifecycle, the permission bridge and the product experience that make it yours. McKenna Consultants has been building Microsoft document integration for over 25 years, from in-application Office editing for document management vendors to the SharePoint Embedded work that now lets any SaaS product embed Microsoft 365 document editing inside its own walls. If you are putting a document collaboration feature on your roadmap and want the scope, the estimate and the pitfalls examined by people who have shipped this before, [get in touch](/contact/) — a short conversation at scoping time is worth a great deal more than a rescue later. --- # Real-Time Inventory and Order Orchestration in Composable Commerce **Canonical URL:** https://www.mckennaconsultants.com/real-time-inventory-and-order-orchestration-in-composable-commerce/ **Author:** Nick McKenna **Published:** 9 June 2026 **Category:** B2B eCommerce ## Real-Time Inventory and Order Orchestration in Composable Commerce The most common failure mode of B2B composable commerce is not a slow checkout, a poor product page, or a confusing search experience. It is showing the buyer a product as in stock that is not, accepting the order, and then failing to deliver. Inventory accuracy in composable commerce is harder than in monolithic platforms, and the difference is architectural: composable commerce decouples the storefront from the inventory system, which means inventory accuracy depends on event-driven integration, not on a shared database. This article addresses **composable commerce inventory orchestration**: the architectural patterns, the integration choices, and the engineering disciplines that produce real-time inventory accuracy across the multi-channel commerce stack. It is written for solution architects and senior engineers designing the integration backbone of an Elastic Path-based composable commerce build, but the principles apply across composable platforms. The article is technical and opinionated. McKenna Consultants delivers composable commerce engagements where the inventory orchestration is one of the most consistent areas where engineering decisions in the first three months determine whether the system holds up at scale or quietly degrades for years. ### The Inventory Problem in Composable Commerce In a monolithic commerce platform, inventory is a single table that the storefront reads, the order capture writes, and the warehouse system updates. Inventory accuracy is fundamentally a database concurrency problem — solvable with row locks, transactions, and predictable behaviour. In composable commerce, inventory is distributed across systems by design: - The **commerce platform** (Elastic Path) holds the catalogue, the price, and the customer relationship. - The **ERP** holds financial inventory — accounting state, valuation, supplier relationships. - The **WMS** (warehouse management system) holds physical inventory — bins, locations, pick lists, hold reasons. - The **OMS** (order management system) holds order state — fulfilment plan, allocations, splits, shipments. - The **storefront** displays availability to buyers, often with caching for performance. These systems do not share a database. They share events. When stock arrives in the warehouse, the WMS publishes an event. When an order is placed, the storefront publishes an event. The other systems respond to events, update their internal state, and may publish further events. Inventory accuracy is the property that emerges from this event flow being correct. The failure modes of getting it wrong: **Oversells.** The storefront shows a product as available, the buyer orders, but the warehouse has none. The order cannot be fulfilled. The buyer is angry, the customer service team has a problem, and the underlying root cause — an event that did not propagate, or propagated late — is often diagnosed slowly because the symptom appears at the buyer end of the system, far from the inventory source. **Undersells.** The storefront shows a product as out of stock when it is, in fact, available. The buyer leaves, the order is lost, the warehouse has stock that goes unsold. Less visible than oversells but commercially equivalent. **Drift.** The systems' inventory views slowly diverge over weeks. No single event is wrong; small accumulating errors produce a state where the storefront's view, the ERP's view, and the WMS's view of the same stock differ. Drift is harder to detect than acute failures because there is no single bad transaction to investigate. **Race conditions.** Two buyers attempt to purchase the last unit at the same time. Without correct allocation logic, both succeed at the storefront layer, and the conflict is detected only at fulfilment. The pattern is common in promotional events with concentrated demand. The right architectural response is not to try to recreate the monolithic platform's database centralisation. It is to design the event-driven integration so that these failure modes are contained, detected fast, and either prevented or mitigated. ### Reservation versus Allocation: The Foundational Decision The first architectural decision is whether your composable commerce system uses reservation or allocation as the core inventory model. **Reservation model.** When a buyer adds an item to cart or initiates checkout, the system *reserves* the stock — marks it unavailable to other buyers — for a defined period (typically 10-30 minutes). If the buyer completes purchase, the reservation converts to an allocation. If the buyer abandons, the reservation expires and the stock returns to the available pool. The reservation model produces strong guarantees against overselling at the cost of potential undersells (reserved stock is invisible to other buyers even if the original buyer never completes). It is the right model for high-demand scenarios where overselling would create severe customer impact — flash sales, limited-edition products, B2B contracts where commitment is sensitive. **Allocation model.** Stock is allocated only when an order is confirmed. Up until the order is placed, all available stock is visible to all buyers. Two buyers can each see the same unit as available; the first to place an order gets it, the second is informed at order confirmation that the unit is no longer available. The allocation model maximises stock visibility (no stock is hidden behind reservations) at the cost of weaker overselling guarantees in concentrated-demand scenarios. It is the right model for catalogues with high stock depth where contention is rare. **Hybrid models.** Real composable commerce systems frequently use both. High-velocity products use reservation, deep-stock products use allocation. The choice is configured per product or per category, and the integration logic must support both modes cleanly. The decision is not abstractly architectural — it has commercial consequences. Get it right per product class, and overselling and underselling are both rare. Get it wrong, and you trade one failure mode for another. ### The Event Flow A working composable commerce inventory orchestration has a clear event flow. The canonical shape: ``` WMS / ERP Event Bus Composable Stack ───────── ───────── ─────────────────── Stock receipt ────► stock.received ────► OMS → Elastic Path catalogue Stock pick ────► stock.picked ────► OMS Stock count ────► stock.adjusted ────► OMS → Elastic Path catalogue Storefront OMS / WMS ────────── ────────── Cart add ────► cart.item.added ────► OMS (reservation if applicable) Order placed ────► order.placed ────► OMS → ERP OMS → WMS (pick request) Order updated ────► order.updated ────► ERP / WMS Order shipped ────► order.shipped ────► ERP / Storefront notification ``` A few principles worth highlighting. **One canonical event topology.** The systems publish their own events (stock receipts from WMS, order placement from storefront), which are translated into a canonical event vocabulary that all consuming systems understand. Composable architectures that allow each system to consume the others' raw event formats produce tightly coupled integration that fails as systems are replaced. **Idempotent processing everywhere.** Events are delivered at-least-once in any realistic distributed system. Every consumer must be able to handle a duplicate event without producing a duplicate effect. The pattern is consumer-side deduplication keyed on event ID and a content hash, with the deduplication window sized to the maximum expected delivery delay. **Outbox pattern at producers.** When a storefront writes an order to its own database, the corresponding event is written in the same transaction to an outbox table. A separate process publishes the outbox events to the bus. This guarantees that no order is recorded without a corresponding event, and no event is published for an order that was rolled back. Without this pattern, the bus and the database silently diverge under load. **Compensation events for reversals.** When an order is cancelled after stock has been allocated, a compensating event releases the stock. The systems must support the full lifecycle — placement, modification, cancellation — through events, not just the happy-path forward direction. **Bus reliability matters.** The choice of event bus is consequential. Apache Kafka, Azure Event Hubs, Amazon SNS+SQS, and similar systems offer the durability and ordering properties that composable commerce inventory requires. Lightweight pub/sub (Redis pub/sub, basic webhooks) does not. For all but the smallest deployments, invest in proper event infrastructure. ### ATP: Available-to-Promise Calculations Available-to-Promise (ATP) is the calculation that determines what the storefront shows to the buyer as available. It is conceptually simple but operationally subtle. A naïve ATP is "current physical stock minus current allocations." A useful ATP includes: - **Physical stock at each warehouse.** Multi-warehouse setups must compute ATP per warehouse and combine. - **Inbound stock with arrival dates.** Stock that has been ordered from suppliers but not yet received, with a date the customer can reasonably promise. - **Reserved stock minus expired reservations.** The reservation pool reduces ATP, but reservations expire and the calculation must reflect this. - **Allocations to confirmed orders.** Stock committed to fulfil existing orders. - **Hold reasons.** Stock in quality-hold, returned-to-supplier, or otherwise unavailable. - **Safety stock thresholds.** Minimum stock levels reserved against operational uncertainty. The ATP calculation runs on demand for each product page view and search result, which means it must be fast. The pattern that works is a denormalised ATP cache in the storefront's read store, updated by event-driven invalidation. When a stock event arrives, the affected products' ATP is recalculated and the cache is updated. The storefront reads from the cache; cache writes are bounded by event volume, not by storefront traffic. For multi-warehouse setups with split fulfilment, ATP also drives fulfilment routing — which warehouse fulfils which line of which order. This decision logic typically lives in the OMS and consumes the same ATP signals. ### Distributed Order Management The Order Management System is the linchpin of composable commerce inventory orchestration. Its responsibilities: - **Receive orders** from the storefront and validate them against current inventory state. - **Allocate stock** across warehouses and against incoming supply where appropriate. - **Coordinate fulfilment** — pick and pack instructions to warehouses, shipping label requests to carriers, status updates back to the storefront. - **Handle exceptions** — split shipments when single-warehouse fulfilment is impossible, backorders when supply lags demand, returns and reverse logistics. - **Maintain order state** as the source of truth for order lifecycle. Elastic Path itself is not an OMS. It is the catalogue, customer, and pricing layer. Composable architectures pair Elastic Path with a dedicated OMS — IBM Sterling Order Management, Manhattan Active Omni, Fluent Commerce, or built-in capabilities from ERP suites — and the OMS handles the order orchestration the catalogue does not. The integration boundary between Elastic Path and the OMS is one of the most consequential design decisions in a composable build. Patterns that work: - **Order placement events from Elastic Path to the OMS.** When an order is placed, Elastic Path publishes an event; the OMS consumes it and takes ownership of the order from there. - **Order state events from the OMS to Elastic Path.** As the OMS updates order state, it publishes events that Elastic Path consumes for buyer-facing order tracking. - **Inventory state events from the OMS to Elastic Path.** ATP updates flow from the OMS to Elastic Path's catalogue layer for storefront display. - **Customer state events from Elastic Path to the OMS.** Customer changes (account hierarchy updates, contract changes) flow to the OMS for fulfilment context. The bidirectional flow must be designed deliberately. Each event must have a clear producer, a clear set of consumers, and a clear semantic. ### ERP Integration Patterns Behind the OMS sits the ERP. ERPs hold financial inventory — accounting state, supplier relationships, valuation. ERP integration is the deepest part of the composable commerce stack and the part where engineering rigour pays off most. Common ERPs in the composable commerce context: **SAP S/4HANA and SAP ECC.** SAP integration uses BAPIs, IDocs, or modern OData services depending on version and edition. SAP's stock model is rich (storage locations, batches, special stock indicators) and the integration must respect this richness rather than flattening it. **Microsoft Dynamics 365 Finance & Supply Chain.** Integration uses the Dynamics OData API and event-based triggers. Dynamics is generally easier to integrate with composable commerce than SAP, partly because the Microsoft Graph and Power Platform tooling make eventing more tractable. **Oracle NetSuite.** SuiteScript and SuiteTalk APIs are the primary integration surface. NetSuite's inventory model is more transactional and less rich than SAP, which simplifies integration but requires careful handling of multi-warehouse and multi-currency scenarios. **Oracle Fusion ERP Cloud.** REST and SOAP APIs against the Oracle Fusion Inventory Management module. **Mid-market ERPs** (Sage, Intacct, Acumatica). Generally simpler integration surfaces, fewer concurrent users, lighter throughput requirements. The integration patterns are largely common across ERPs: - **Master data sync.** Products, suppliers, warehouses synchronised between Elastic Path's catalogue layer and the ERP. Typically a one-way sync from ERP to Elastic Path for product master data, with the ERP as the source of truth. - **Inventory state events.** Stock position updates flow from ERP (or the WMS, depending on which system holds physical stock authoritatively) into the composable stack. - **Order events.** Confirmed orders flow from the OMS to the ERP for invoicing, revenue recognition, and supplier-side fulfilment. - **Reconciliation jobs.** Daily or hourly reconciliation that compares stock positions across systems and flags drift. This is the safety net that catches errors the event flow misses. The reconciliation job is unglamorous engineering and frequently underinvested in. It is also the thing that lets you sleep at night. Build it. ### Patterns for Specific Failure Modes A few patterns that address common failure modes: **Idempotent order processing.** Every order operation includes a unique idempotency key. Re-submission of the same order produces the same result — not a duplicate. This protects against the inevitable retry-during-degraded-network scenarios. **Saga pattern for cross-system transactions.** When an order placement spans multiple systems (storefront → OMS → ERP → payment), use the saga pattern: each step is committable independently, with explicit compensation on failure. Avoid the "distributed transaction" temptation; sagas are simpler to operate at scale. **Event sourcing for order history.** Storing the full event history of an order — not just its current state — makes order disputes, fulfilment debugging, and audit obligations dramatically more tractable. The storage cost is small; the operational benefit is large. **Inventory hold timeouts.** Reservations must expire. Allocations made during incomplete checkouts must release. The timeout values are tunable per product class but their existence is non-negotiable. **Backpressure on bus producers.** When the bus is congested, producers must back off rather than blindly publishing. Without backpressure, congestion compounds and produces system-wide degradation. **Dead-letter queues with operator action.** Events that cannot be processed must be parked, not dropped. A working operator workflow for inspecting and replaying dead-lettered events is part of the production posture, not an after-the-fact addition. ### Storefront-Side Considerations The buyer-facing storefront depends on the inventory orchestration but has its own responsibilities. **Cache invalidation.** Storefront product pages cache ATP for performance. When inventory state changes, the cache must invalidate quickly enough that buyers see fresh information. CDN-level caching with event-driven purge, or origin-side caching with short TTLs and request collapsing, are the standard patterns. Pure time-based caching produces stale displays that confuse buyers. **Out-of-stock handling.** When a product is out of stock, the storefront should offer alternatives, indicate expected restock dates, and capture wait-list interest. These behaviours depend on the inventory orchestration providing the relevant data — restock dates from the ERP, alternatives from the catalogue and recommendation engine. **Last-step availability checks.** A product that was available when added to cart may not be available at checkout completion. Re-checking ATP at the order placement step (not just at cart add) is a pragmatic guard against the inevitable race conditions. **Buyer-facing communication on backorders.** When the system accepts an order against incoming supply rather than current stock, the buyer must understand. Clear UI patterns for "available in 2 weeks" or "ships when in stock" reduce post-order surprises. ### Where McKenna Helps McKenna Consultants delivers composable commerce inventory orchestration as part of broader Elastic Path engagements. The typical engagement shape: **Architectural design.** Event topology design, OMS selection support (where applicable), ERP integration architecture, ATP model design. Output: a documented integration architecture with the systems, events, and ownership boundaries. **Implementation.** Build of the event integration layer, OMS-Elastic Path integration, ERP integration, ATP cache, reconciliation jobs. Output: a working composable commerce stack with real-time inventory orchestration. **Production readiness.** Load testing, race-condition exercise, dead-letter queue operability, runbook development. Output: a production-deployable system with documented operational procedures. **Operational excellence.** Ongoing inventory accuracy monitoring, drift detection, and tuning. Often delivered as a managed service alongside an Elastic Path implementation. McKenna is a UK-based Elastic Path consultancy. Our team has delivered B2B composable commerce builds across manufacturing, distribution, industrial technology, and professional services — including the inventory orchestration that those builds depend on. If your organisation is designing or rebuilding the inventory backbone behind a composable commerce stack, [contact us](https://www.mckennaconsultants.com/contact/) to discuss the engagement. --- # Your ERP Is the System of Record: Getting Customer-Specific Pricing Right in B2B eCommerce **Canonical URL:** https://www.mckennaconsultants.com/your-erp-is-the-system-of-record-getting-customer-specific-pricing-right-in-b2b-ecommerce/ **Author:** Nick McKenna **Published:** 7 June 2026 **Category:** Systems Integration # Your ERP Is the System of Record: Getting Customer-Specific Pricing Right in B2B eCommerce Ask anyone who has delivered a B2B commerce project for a manufacturer what consumed the most engineering time, and the answer is rarely the storefront. It is pricing. Product data is hard, inventory is fiddly, but pricing is where projects genuinely stall — because in B2B, price is not an attribute of a product. It is a function of the product, the customer, the quantity, the currency, the date, and twenty years of negotiated agreements that live inside the ERP. Getting **customer-specific pricing in B2B eCommerce** right is, in our experience, the single hardest integration surface in the whole programme, and it is the one that decides whether your sales team trusts the web channel or spends the next three years apologising for it. We have written before about the broader shape of [connecting Elastic Path to your back office](/composable-commerce-and-erp-integration-connecting-elastic-path-to-your-back-office/) — products, stock, orders, customers. This article deliberately ignores all of that and goes deep on pricing alone: why it is different, the three integration patterns that actually work, the failure modes we see most often in [manufacturing and industrial engineering](/sectors/manufacturing-and-industrial-engineering/) businesses, and how the whole thing lands in a composable platform like Elastic Path. If you are an IT or digital lead at a manufacturer whose ERP owns pricing, this is the part of **ERP eCommerce integration** you need to get right first. ## What a B2B Price Actually Is Consumer commerce has trained everyone to think of price as a number on a product record. B2B pricing in a manufacturing business is nothing like that. When a customer logs in and asks "what does this part cost me, today, in this quantity?", the honest answer is assembled from several layers: - **Contract prices.** Negotiated per customer (or per buying group), often per SKU or per product family, usually date-effective with a start and end, and frequently the output of an annual negotiation nobody wants to repeat mid-year. - **Customer price lists and price groups.** Most customers do not have a fully bespoke price on every item; they belong to a price group or tier, with a smaller set of genuinely customer-specific overrides layered on top. - **Quantity breaks.** Buy 10 at one price, 100 at another, 1,000 at a third — sometimes on the line, sometimes across the order. - **Currency.** A global manufacturer prices in multiple currencies, and the relationship between them is a commercial decision, not a spot-rate conversion. - **Surcharges and adders.** Energy surcharges, raw material adjustments, minimum order charges, carriage rules. These come and go with market conditions and are often applied at order level rather than line level. - **Units of measure and pack quantities.** Priced per hundred, sold in boxes of 25, quoted per metre. The conversion rules matter as much as the numbers. The critical observation is that this logic already exists, and it lives in the ERP. SAP, Dynamics, Infor, Epicor, and every venerable AS/400 system we have ever integrated all contain a pricing engine — a set of conditions, procedures and hierarchies that resolve "this customer, this product, this quantity, this date" into a price. That engine is what the finance team trusts, and crucially, it is what generates the invoice. ## The Principle: The ERP's Pricing Engine Stays Authoritative Every B2B commerce project faces the same temptation early on: the commerce platform has pricing features, so why not rebuild the pricing rules there? It looks faster. It avoids an integration. It is almost always a mistake, for one simple and commercial reason: **the invoice comes from the ERP.** If the web store calculates a price using its own reimplementation of the rules, and the ERP calculates the invoice using the original rules, then any divergence between the two — a missed contract renewal, a rounding difference, a surcharge applied in one place and not the other — becomes a customer-facing pricing dispute. The customer saw £4.20 a unit at checkout and was invoiced £4.38. Multiply that by a few hundred orders a month and you have a credit-note factory, a finance team reconciling differences by hand, and a sales force telling customers to phone their order in "because the website gets prices wrong". So the principle underpinning everything that follows: the ERP is the system of record for price, and the integration's job is to *transport* prices faithfully, never to *recalculate* them. The price the customer sees must be a price the ERP produced, or one the ERP will verifiably confirm before money changes hands. Hold that line and the rest is engineering. Lose it and no amount of engineering will save you. That said, "the ERP is authoritative" does not answer the practical question of *when* the ERP gets asked. That is where the three patterns come in. ## Pattern One: Bulk Price-List Synchronisation The simplest pattern: on a schedule, export prices from the ERP — list prices, price group prices, customer-specific contract prices — and load them into the commerce platform's own price containers. The storefront then serves every price locally, with no runtime dependency on the ERP at all. The strengths are real. Browsing is fast, because pricing is a local lookup. The ERP is untouched by storefront traffic, which matters when the ERP was sized for a few hundred internal users rather than public web load. And the storefront keeps working when the ERP is down for month-end processing or maintenance. The weaknesses are equally real. First, **staleness**. A synced price is correct as of the last sync. If contract prices change mid-cycle — a renegotiation, an emergency surcharge — the web channel lags until the next run. That window is a business decision: for many manufacturers a nightly sync is genuinely fine, because prices change annually, not hourly. For others it is not, and pretending otherwise is how disputes start. Second, **the matrix explosion**. The naive export is every price for every customer: 10,000 customer accounts times 50,000 SKUs is 500 million potential price rows, most of which will never be looked at. Nobody should sync that. The workable approach mirrors how the ERP itself stores pricing: sync the price *structure* — list prices, price group tables, and only the genuinely customer-specific overrides, which are usually a tiny fraction of the theoretical matrix. Resolve "which group does this customer belong to" at request time. If your ERP's pricing is so conditional that prices only exist once calculated (common with heavily configured SAP condition techniques), bulk sync of the full matrix is off the table anyway, and you are steered towards patterns two or three. Third, **operational discipline**. Full nightly reloads are simple but heavy; delta syncs are efficient but demand reliable change detection in the ERP. Date-effective prices need to be loaded ahead of their start date, not on it. And every sync run needs monitoring with the same seriousness as a payment integration — a silently failed price sync is a store confidently serving yesterday's prices. ## Pattern Two: Real-Time Price Calls The opposite pattern: the storefront holds no prices at all. Every time a price is needed — product page, search results, cart — the platform calls the ERP (directly, or through an integration layer) and asks the authoritative engine to calculate it live. The appeal is obvious: the price is always right, by construction. Contract changes take effect instantly. There is no matrix to sync and no staleness window to argue about. The costs are severe and are usually discovered in production. **Latency** first: a price call that takes 400 milliseconds is invisible on a single product page and catastrophic on a category page rendering 48 products, or a quick-order pad pricing 200 lines. **Availability coupling** second: your storefront is now precisely as available as your ERP, and ERPs have maintenance windows, month-end runs and batch jobs that were scheduled long before anyone imagined a web store depending on them at 2am. **Load** third: ERPs are licensed and sized for internal users. Letting anonymous browse traffic generate pricing calls into the ERP is a way to discover your ERP's connection limits during your busiest trading week. Real-time pricing has its place — but that place is narrow and deliberate: low-traffic, high-value interactions where accuracy is non-negotiable, such as pricing a quote or confirming a cart. As the default mechanism for all browsing, it is a pattern we have repeatedly been asked to rescue projects from. ## Pattern Three: The Pragmatic Hybrid Almost every production system we respect lands on a combination of the two, and the logic is simple: match the accuracy guarantee to the moment that needs it. - **Browsing runs on synced prices.** Product pages, category listings and search show the customer's contract or price-group price from the local store — fast, ERP-independent, and correct to within the sync window. Where the business wants belt and braces, these can be labelled as indicative. - **Commitment runs on the ERP.** At the point where a number is about to become an order — cart review, quote generation, checkout — the integration makes one consolidated, real-time pricing call to the ERP for the whole basket, and the confirmed prices are what the customer accepts. One call per checkout is a load profile any ERP can sustain; one call per page view is not. - **Degradation is a decision, not an accident.** When the ERP is unreachable at confirmation time, something must happen: block checkout with an honest message, or accept the order at synced prices flagged "subject to confirmation". Both are defensible; which one your business wants is a commercial choice that should be made explicitly in a meeting, not implicitly by an unhandled timeout at 2am. The hybrid also concentrates integration effort where it pays. The bulk pipe handles the undramatic 99% of price displays; the real-time call guards the moment that generates an invoice. And because the ERP confirmation uses the same engine that will invoice, price disputes are engineered out rather than reconciled after the fact. This is the pattern that benefits most from a proper integration layer between the storefront and the ERP — somewhere for consolidation, caching, retries and monitoring to live, rather than scattering them through commerce-platform plugins. It is the same architectural instinct behind the Digital Edge Platform we built for [IMI Precision Engineering](/project/imi-precision-engineering/), which plugs into IMI's disparate best-of-breed systems and flows information between them to give staff a single, current view of the truth. Pricing integration is that idea applied to the most sensitive data a manufacturer publishes. ## The Failure Modes We See Most Often Patterns describe the happy path. These are the ways **contract pricing** integrations actually go wrong, drawn from projects we have built and projects we have been called in to repair. ### Stale contract prices become invoice disputes The sync ran, but the contract renewal loaded into the ERP on the 1st did not reach the web store until the 4th. The customer ordered at the old price and was invoiced at the new one — or worse, the reverse, and now finance wants to claw back the difference. Each individual case is small; the cumulative effect is corrosive, because the sales team stops trusting the channel. The defences are unglamorous: sync date-effective prices ahead of time, alert on sync failures loudly, and give customer service a way to see exactly which price version the customer was shown. ### Nobody can tell you how the ERP prices things In a business that has run the same ERP for twenty years, pricing logic accumulates like sediment: special conditions for accounts that lapsed a decade ago, a surcharge implemented as a negative discount, an override table only one semi-retired analyst understands. The integration team faithfully reproduces the documented rules and gets 95% of prices right — and the remaining 5% are, with grim reliability, your largest accounts, because big customers are exactly the ones with bespoke arrangements. The mitigation is to treat pricing discovery as a first-class workstream: before go-live, run automated parity tests comparing the web price against the ERP-calculated price across a representative sample of real customers, real SKUs and real quantities — and keep running them in production, because pricing logic keeps evolving after launch. ### Performance collapses at the worst moment The demo priced one product beautifully. Production met a quick-order pad with 300 lines, each line triggering its own pricing call — the classic N+1 problem wearing a hi-vis jacket. The ERP slows, the storefront times out, and it happens precisely when your biggest customer places their biggest order. Batch pricing calls at the basket level, cache aggressively where accuracy allows it, and load-test with realistic B2B order shapes: fifty to five hundred lines, not the three-item consumer basket the platform vendor's demo used. ### Units, currency and rounding Priced per hundred, sold per box of 25, displayed each; a half-penny rounding difference multiplied across a 10,000-unit line; a currency conversion done in the storefront that the ERP does differently. Small mismatch classes that produce invoice deltas indistinguishable, from the customer's side, from being overcharged. The rule from the principle section applies with full force: transport the ERP's numbers, including its rounding, rather than deriving your own. ## Where Quotes Fit Not every price belongs on a product page. Every manufacturer has a threshold — order value, configuration complexity, special-length or engineered items — beyond which pricing is a conversation, and forcing it through webstore pricing either leaks margin or loses the deal. The mature pattern is quote-to-order: the customer assembles their requirement online, requests a quote, the quote is priced where quoting already lives (the ERP or CPQ, by the people who own the discretion), and it flows back into the customer's account online for acceptance and one-click conversion into an order — at exactly the quoted prices, which the ERP already knows because it produced them. The point is that quoting is not a failure of eCommerce; it is a pricing pattern in its own right, and designing the handoff deliberately beats pretending everything can be self-service. We have covered the account-portal side of this — quotes, order history, reordering — in our article on [building B2B self-service buyer portals with Elastic Path](/building-b2b-self-service-buyer-portals-with-elastic-path/). ## How This Lands in Elastic Path Everything above is platform-agnostic; you will face the same decisions on any commerce stack. But the reason we keep recommending composable platforms for manufacturers is that they are built to receive this integration rather than fight it. In Elastic Path, pricing is deliberately decoupled: price books are first-class objects separate from products, multiple price books support currencies and customer tiers, and catalogues can be assembled per account — which maps naturally onto ERP price groups plus customer-specific overrides, exactly the structure pattern one syncs and pattern three serves. And because the platform is API-first, the checkout-time confirmation call in the hybrid pattern is a supported extension point rather than a fight with a monolith's assumptions. That is the practical meaning of **Elastic Path ERP integration**: the platform supplies the containers and the APIs; the integration supplies the truth. That receptiveness matters at manufacturer scale. When we rebuilt the global web store for [Norgren](/project/norgren-composable-ecommerce/) — a brand of IMI Precision Engineering whose previous bespoke store had generated hundreds of millions of dollars over its lifetime — the composable approach with Elastic Path was chosen precisely because assembling configurable off-the-shelf services lowered the cost of ownership and let development effort concentrate on the features that differentiate, while distributing the workload so that no single component could stall the order flow. That is the environment you want your pricing integration to live in: one where the hard problem gets the attention, because the platform is not consuming it. ## How McKenna Consultants Can Help Customer-specific pricing sits exactly at the junction of our two longest-standing disciplines: [systems integration](/digital-development/systems-integration-services/) and [B2B eCommerce](/b2b-ecommerce/). We have spent over 25 years connecting manufacturers' back-office systems — ERP, dispatch, customer data — into platforms their staff and customers actually trust, from the Digital Edge Platform for IMI Precision Engineering to the composable Elastic Path store for Norgren, and pricing is the surface where that combined experience earns its keep. If you are planning a B2B commerce programme and the pricing workstream is the part keeping you up at night — or you have a live store where web prices and invoices keep disagreeing — we can help you choose the right pattern, design the integration layer, and put the parity testing in place that keeps the ERP and the storefront telling the same story. [Get in touch](/contact/) and we will talk it through. --- # The Final Sprint: Completing Your EWS to Microsoft Graph Migration Before October 2026 **Canonical URL:** https://www.mckennaconsultants.com/the-final-sprint-completing-your-ews-to-microsoft-graph-migration-before-october-2026/ **Author:** Nick McKenna **Published:** 2 June 2026 **Category:** Microsoft Office Add-In Developer ## The Final Sprint: Completing Your EWS to Microsoft Graph Migration Before October 2026 Four months remain before the EWS deprecation enforcement date of 1 October 2026. For Outlook add-in development teams whose migration to Microsoft Graph is incomplete, that is not "the deadline is in October" — it is "the deadline window starts now and closes at the end of September." A migration begun in September will not complete in September. A migration begun today might. This article is a deliberately tactical guide for teams running the **EWS to Microsoft Graph migration** with the deadline visible. It is the operational complement to the broader migration article we published in Q1; that article explained *what* the migration involves. This one is about *what to ship over the next sixteen weeks* to make the deadline. The framing is unapologetically urgent because the operational reality is. If your team is on track and your migration is largely complete, this article is a checklist for the long tail. If your team has not started, it is a structured response to a hard situation. ### What Happens on 1 October 2026 The EWS deprecation has been signalled for years and progressed in stages through 2025 and the first half of 2026. The critical milestones: - **September 2024:** Microsoft announced the deprecation timeline. - **March 2026:** EWS calls against frontline and kiosk licences began returning enforcement responses (this milestone is now behind us). - **1 October 2026:** EWS calls from third-party Outlook add-ins begin returning blocking enforcement responses across all licence categories. Add-ins relying on EWS will fail to load EWS-dependent functionality after this date. The 1 October enforcement is not a soft cutoff. It is the date at which Microsoft begins blocking EWS calls from add-ins that have not been added to the AppID AllowList. The AppID AllowList is a temporary mechanism — a specific, bounded extension for organisations that genuinely cannot complete migration in time — but it is not a substitute for migration. We address the AllowList specifically later in this article. Add-ins that complete migration to Microsoft Graph by 30 September continue working. Add-ins that do not, and that are not on the AllowList, do not. ### The Irreducible Minimum: What Must Be Migrated Most Outlook add-ins use EWS for a relatively small set of operations: reading mailbox properties, accessing calendar items, reading and writing mail item properties beyond what Office.js provides directly, and (less commonly) directly manipulating folders and items. The migration translates each of these into Microsoft Graph equivalents: | EWS Operation | Microsoft Graph Equivalent | Notes | |---|---|---| | GetItem (mail) | `GET /me/messages/{id}` | Direct equivalent for most cases | | GetItem (calendar) | `GET /me/events/{id}` | Direct equivalent | | GetItem (contact) | `GET /me/contacts/{id}` | Direct equivalent | | FindItem (mail) | `GET /me/messages?$filter=...` | Filter syntax differs from EWS query | | FindItem (calendar) | `GET /me/events?$filter=...` and `/me/calendarView` | Use `calendarView` for time-window queries | | CreateItem | `POST /me/messages`, `POST /me/events`, etc. | Direct equivalents | | UpdateItem | `PATCH /me/messages/{id}`, `PATCH /me/events/{id}` | Direct equivalents | | DeleteItem | `DELETE /me/messages/{id}` | Direct equivalent | | SendItem | `POST /me/sendMail` | Different shape; review carefully | | Notifications (push subscription) | Microsoft Graph subscriptions | Different lifecycle and renewal model | | GetUserAvailability | `POST /me/calendar/getSchedule` | Direct equivalent | | GetUserConfiguration | No direct equivalent | Often replaced by add-in's own configuration | | ResolveNames | `GET /me/people` and `GET /users` | Different ranking model | | ConvertId | `POST /me/translateExchangeIds` | Direct equivalent for ID conversion | The Graph surface has near-complete parity for the EWS operations that Outlook add-ins typically use. There are edge cases where Graph behaviour differs from EWS in ways that require code changes (notification subscription lifecycle, time zone handling on calendar items, notification payload shape) but the surface is not the obstacle. The obstacle is doing the migration on schedule. ### The AppID AllowList: When It Is Legitimate, When It Is Dangerous Microsoft offers the AppID AllowList as a mechanism for organisations that genuinely cannot complete migration before 1 October. An add-in on the AllowList continues to be permitted to make EWS calls beyond the deadline, on a defined extension period. The AllowList is legitimate in specific cases: - **Production add-ins with completed migration plans that are running into late completion.** A team that has done the work but has unforeseen production issues in the final weeks may legitimately use the AllowList as a short bridge while finishing the migration. - **Add-ins owned by third parties** where the purchasing organisation does not control the migration timeline. The AllowList provides interim continuity while the third party completes their work. - **Highly complex add-ins** with EWS integration depth that genuinely cannot complete in the remaining window despite best efforts. The AllowList is dangerous when it is treated as a substitute for migration: - Adding an add-in to the AllowList is a temporary measure with a defined end date. The end date will arrive. - The AllowList does not slow Microsoft's EWS deprecation; it only delays the enforcement against specific add-ins. - An organisation that uses the AllowList as a planning tool — "we'll AllowList our add-ins and migrate later" — is buying a small amount of time at the cost of compounded risk later. The honest position: if your add-in's migration is realistically completable by 30 September, do not use the AllowList. Migrate. If migration genuinely cannot be completed, use the AllowList as a bridge, but do so with a hard-dated migration plan attached. ### A Sixteen-Week Sprint Plan Sixteen weeks is the realistic window from June through September. The plan that works: #### Weeks 1-2: Migration Audit and Architecture Decisions Inventory every EWS call your add-in makes. Catalogue the operations, the contexts in which they are called, the data they return, and the downstream code that consumes the data. This is the foundation; you cannot plan without it. For each call, decide: - **Direct migration** — replace with the Graph equivalent. The default path. - **Functional change** — the EWS behaviour is different from the Graph behaviour and the add-in's behaviour will need to adjust. Document the change. - **Deprecation** — the call serves a feature that can be retired. Confirm with product management. Make architectural decisions about authentication. If your add-in currently uses OAuth 2.0 against Office.js, the Graph migration is largely additive. If your add-in uses Exchange impersonation or app-only credentials with EWS, the migration involves authentication restructuring (typically to MSAL with Microsoft Graph delegated or application permissions). #### Weeks 3-6: Core Migration Implementation Implement the Graph equivalents for the highest-volume EWS calls. Start with the calls that are most central to the add-in's primary value, not the ones that are easiest. The objective at the end of week 6 is that the add-in's primary use case works against Graph end-to-end, even if some peripheral functionality is still EWS-backed. The pattern that works in practice is feature-flagged dual-path code. Wrap each EWS call site with a conditional that can call Graph or EWS based on a runtime flag. This allows: - Easy rollback if the Graph path has issues. - Per-environment toggling (dev uses Graph, production stays on EWS until ready). - Per-tenant or per-user toggling for canary rollout. The dual-path code is removed during cleanup once the migration is stable, but during the sprint it is your safety net. #### Weeks 7-9: Subscription and Notification Migration Microsoft Graph subscriptions have a meaningfully different lifecycle from EWS push subscriptions. Subscriptions must be renewed before expiry, the renewal call requires the same authentication context that created the subscription, and missed renewals are silent. The notification payload shape is different — `clientState` validation, `subscriptionId` correlation, change type filtering — and your notification handlers must be updated. This is often the workstream that catches teams out late in the sprint, because the notification path is exercised in production but not always in test environments. Build the Graph subscription path in week 7, exercise it thoroughly in weeks 8 and 9, and shake out the production behaviour before week 10. #### Weeks 10-12: Testing and Equivalence Validation Validate that the migrated add-in produces equivalent results to the EWS-backed version across realistic scenarios. The two patterns that work: **Canary tenants.** Designate specific test tenants (your own dev tenants, friendly-customer test tenants) and toggle the Graph path for them. Compare add-in behaviour against EWS-backed behaviour for the same scenarios. Issues that emerge are addressed; only when the canary tenants are clean do you proceed. **Telemetry-driven equivalence validation.** For high-traffic add-ins, ship code that runs both EWS and Graph calls in shadow mode (Graph in production, EWS in shadow, or vice versa) and compares results. Significant divergences are alerted. This is more invasive but produces high-fidelity confidence in equivalence at production scale. #### Weeks 13-14: Production Rollout Roll the Graph path out to production using the dual-path feature flag. Start with a small percentage of users, monitor for issues, ramp up. The deployment is not a single switch — it is a controlled increase with the option to roll back at any point if telemetry shows issues. The critical metric is functional equivalence: the add-in must produce the same results for users on the Graph path as on the EWS path. Latency, error rate, and quality metrics must be at parity or better. #### Week 15: Final Verification and Cleanup With production stable on the Graph path, retire the EWS code paths. Remove the dual-path feature flag. Update documentation. Communicate the migration completion to internal stakeholders. #### Week 16: Buffer The final week is reserved as buffer for the unexpected. If the previous fifteen weeks ran as planned, this week is unallocated and absorbs any delays. If they did not, this week is the difference between making the deadline and missing it. A sixteen-week sprint that compresses any of the above weeks materially increases risk. A sixteen-week sprint that has run on schedule lands with a working Graph-backed add-in by mid-September, with a fortnight of grace before enforcement. ### Accelerated Testing Strategies Compressed-timeline migrations cannot afford the full test development cycle that a green-field migration would invest in. The strategies that produce maximum confidence with limited test development time: **Production traffic replay.** Capture a sample of production EWS calls, replay them through the migrated Graph path, compare results. The capture and replay infrastructure is itself a small engineering investment, but it provides extremely high-fidelity equivalence validation. **Diff-based testing.** Run the same set of test inputs through EWS and Graph paths, diff the outputs structurally. Material diffs indicate bugs; cosmetic diffs (timestamp formatting, optional fields) can be ignored systematically. **Customer canary deployment.** Deploy the Graph path to a small set of customer tenants in production, with a clear rollback procedure. The signals from real production usage are higher-quality than any pre-production test set. **Telemetry-based monitoring at rollout.** Increase telemetry granularity during the rollout period. Track per-call latency, error rates, and behavioural metrics with finer resolution than steady-state monitoring would normally use. Roll back on any significant deviation. The pattern across all four is the same: accept that you cannot test exhaustively in a compressed timeline, instrument heavily so you can detect issues fast in production, and build the rollback capability that makes fast detection actionable. ### Authentication Migration Specifically Worth dedicated attention because it is the single most common stumble. Outlook add-ins authenticate to backend services in three common patterns: **Pattern 1: Office.js identity tokens.** The add-in calls `getCallbackTokenAsync` to get an Exchange token, exchanges it for a Microsoft Graph token via on-behalf-of flow at the backend, and calls Graph from the backend. This pattern is broadly compatible with the migration — the same flow that produces an EWS token can produce a Graph token. **Pattern 2: Single sign-on with `getAccessTokenAsync`.** The add-in calls `getAccessTokenAsync` to get a Graph-compatible token directly. This pattern is the recommended path going forward and is the simplest migration target. **Pattern 3: External authentication via MSAL popup or redirect.** The add-in initiates its own authentication flow to obtain Graph tokens. This pattern works but requires additional configuration in the add-in manifest and the MSAL configuration. The migration mistake to avoid: changing authentication patterns and EWS-to-Graph operation migration in the same workstream. Authentication changes deserve their own focused work, with their own testing. Bundling them together produces failure modes that are harder to diagnose. ### What to Do If You Will Miss the Deadline If by mid-September it is clear the migration will not complete in time, the structured response: **Confirm the gap honestly.** Identify exactly which functionality will be EWS-dependent on 1 October, the user impact if it stops working, and the revised completion timeline. **File an AppID AllowList request.** The mechanism exists for legitimate cases. Request the AllowList for the specific add-in IDs that need it, with a documented migration completion date. **Communicate with affected customers.** If your add-in serves customers, they need to know there is an interruption risk and the timeline for resolution. Customers are generally tolerant of clearly-communicated delays; they are intolerant of being surprised. **Continue the migration work at maximum sustainable pace.** The AllowList is a bridge, not a destination. Keep the engineering focus on completion. **Run the post-mortem properly afterward.** When the migration completes, capture the lessons. The next Microsoft platform migration will have similar shape; the value of the lessons compounds. ### What McKenna Delivers McKenna Consultants offers two engagement models for EWS to Microsoft Graph migration: **Compressed-timeline migration delivery.** A packaged engagement designed for the situation this article describes — Outlook add-in with substantial EWS dependency, deadline pressure, limited team capacity. We deliver the migration as a focused project with the structured sprint plan above. Typical engagement length: ten to sixteen weeks. **Migration audit and acceleration support.** A shorter engagement for teams who are running the migration themselves but want experienced backup. We perform the architectural review, identify the highest-risk areas, and provide structured input on the sprint plan. Typical engagement length: three to six weeks of advisory plus targeted implementation support. The McKenna team has delivered Outlook add-in development across two decades — including building, migrating, and supporting add-ins through the long sequence of Microsoft platform shifts that preceded EWS deprecation. We are a UK-based custom Outlook add-in development consultancy with practitioner depth on Microsoft Graph, MSAL, and the modern Office Add-ins platform. If your organisation is running the EWS migration sprint with the deadline visible, [contact us](https://www.mckennaconsultants.com/contact/). The October date does not move; the engagement starts the conversation that gets you across it. --- # AI Document Review with an Audit Trail: Practical Guardrails for Compliance Teams **Canonical URL:** https://www.mckennaconsultants.com/ai-document-review-with-an-audit-trail-practical-guardrails-for-compliance-teams/ **Author:** Nick McKenna **Published:** 31 May 2026 **Category:** Artificial Intelligence # AI Document Review with an Audit Trail: Practical Guardrails for Compliance Teams Every compliance and internal audit function is having the same conversation this year. The document workload — policies to attest, contracts to screen, evidence to check, transaction files to sample — grows faster than headcount ever will, and modern language models are demonstrably good at reading documents. The pressure to adopt **AI document review** is now coming from three directions at once: boards asking why the function is not more efficient, vendors adding AI features to the platforms already in use, and practitioners quietly using general-purpose AI tools whether or not policy permits it. The question that matters is not whether AI can read your documents. It can. The question is whether, eighteen months from now, you can stand in front of a regulator, an external auditor or your own audit committee and account for what the AI did, what a human decided, and why the combined process was under control. That is a systems-design question, not a procurement question, and it has concrete, buildable answers. This article sets them out: what AI is reliably good at in document review and what must stay human; how to design **human-in-the-loop AI** so the loop is real rather than ceremonial; the audit trail that makes AI-assisted decisions defensible; and the operating disciplines — bias monitoring, grounding, change management — that keep the system trustworthy after go-live. It is written for compliance and internal audit leaders in the [audit and compliance](/sectors/audit-and-compliance/) sector, and for the platform vendors building AI review features for them. It is deliberately not another regulatory explainer; the law gets one paragraph, near the end, where it belongs. ## What AI Is Reliably Good At — and What Stays Human The starting point for any deployment of **AI in regulated workflows** is an honest capability map. Language models are strong at a specific family of document tasks: - **Classification.** Routing documents by type, flagging which policy a clause engages, tagging records against a taxonomy. High volume, well-defined categories, easily measured accuracy. - **Extraction.** Pulling named fields out of semi-structured documents — parties, dates, amounts, renewal terms, control references — into structured data a workflow can act on. - **Anomaly flagging.** Surfacing the outliers in a population: the contract missing a standard clause, the expense pattern that breaks the norm, the working paper inconsistent with its siblings. AI is a tireless first-pass reviewer of the 98 per cent of items that are routine, which is precisely what frees human attention for the 2 per cent that are not. - **First-pass summarisation.** Turning a 200-page document into a structured brief a reviewer can verify — provided, as we discuss below, every claim in the summary is traceable back to the source. What stays human is equally specific. Judgement about materiality and risk appetite. Interpretation where the document is ambiguous and the answer depends on context the model does not have. Professional scepticism — the instinct that something is technically compliant but wrong. And sign-off: the accountable decision that a regulator will ultimately attribute to a person, because no regulator anywhere accepts "the model approved it" as an accountability statement. This division of labour is not a limitation to apologise for; it is the design. Every guardrail in the rest of this article exists to keep the boundary in the right place and to prove, after the fact, that it stayed there. Treat the capability map as a living document, too: it should be revisited as models improve, but on the basis of your own measured evidence, never a vendor's roadmap slide. ## Human-in-the-Loop by Design, Not by Disclaimer Most AI features sold into compliance teams describe themselves as human-in-the-loop. Look closely, though, and "the loop" is often just a confirmation button — the model proposes, a human clicks accept, and the click is recorded nowhere. Real human-in-the-loop design has machinery behind it. **Review queues with routing rules.** AI outputs do not go straight into the record; they land in a queue, and routing determines the level of scrutiny. Low-stakes classifications may flow through with sampling (below); anything touching a regulatory filing, a customer outcome or a sign-off goes to a named, qualified reviewer. **Confidence thresholds that actually route.** Models can report how confident they are, and well-designed systems use that signal: above a validated threshold, an item takes the light-touch path; below it, mandatory human review. Two disciplines make this real rather than decorative. First, calibrate — check empirically that items the model scores at high confidence really are correct at the corresponding rate on your documents, because a confidence score you have never validated is a decoration. Second, resist quiet threshold drift: lowering the bar to clear a backlog is a control change and should be treated as one, with the same approval a change to any other control would need. **Sampling regimes for the fast path.** For high-confidence, high-volume items that skip full review, apply what audit teams already understand better than any profession on earth: sampling. A defined percentage of auto-processed items is independently re-reviewed by a human, results are tracked, and the sampling rate flexes with observed error — exactly like control testing, because that is what it is. **Escalation paths.** A reviewer who disagrees with the model, or who simply feels uneasy, needs somewhere to send the item that is cheap to use and carries no stigma. If escalation is bureaucratic, reviewers stop escalating, and the loop quietly closes itself. Two failure modes bracket the design space. The rubber-stamp loop — humans nominally review everything, actually review nothing, and the organisation carries the liability of human oversight with none of its substance. And the review-everything loop — every output gets full human scrutiny, no capacity is released, and the programme dies of pointlessness within two quarters. The machinery above — routing, calibrated thresholds, sampling, escalation — is what lets you sit deliberately between the two and prove where you sat. ## The Audit Trail That Makes AI Defensible Here is the heart of the matter. When a decision made with AI assistance is challenged — by a regulator, an external auditor, a litigant, or your own quality function — the question will be concrete: *this item, that date, who or what decided, on what basis?* **Auditable AI systems** are the ones that can answer from records rather than from memory. For every AI-assisted review decision, the trail should capture: - **The model and its version** — which model, which version or snapshot, from which provider, since behaviour differs between versions of the "same" model. - **The configuration** — the prompt or instruction set, its version, and any parameters that shape output. Prompts are logic; version them like code, because a prompt edit can change decisions as surely as a code release. - **The input reference** — which document, which version of it, ideally by content hash, so nobody has to argue later about what the model actually saw. - **The output** — what the model produced, verbatim, including any confidence score, before anyone touched it. - **The human decision** — who reviewed, what they decided, when, and what changed between the model's proposal and the final record. Two design points elevate this from logging to evidence. First, **make overrides first-class data.** When a reviewer corrects the model, that event — original output, corrected value, reviewer, reason — is the most valuable record in the system: it proves the loop is alive, it feeds your bias metrics, and it is exactly what an inspector will ask to see. Systems that overwrite the model's output with the human's correction destroy their own best evidence. Second, **align retention and integrity with the records the AI touched.** If the underlying working papers are retained for seven years, the AI decision trail beside them is retained for seven years, protected against quiet edits. The operational plumbing that captures all of this — logging every model call with its full context, at scale, without drowning in it — is the same discipline we have written about in [our article on production AI observability](/production-ai-agent-observability-monitoring-debugging-and-cost-control-at-scale/); compliance workloads simply raise the stakes on getting it right. ## Guarding Against Automation Bias The quiet failure mode of every human-in-the-loop system is that the humans stop looking. Automation bias — the well-documented tendency to accept a machine's suggestion because it is usually right — does not announce itself; reviewer behaviour degrades gradually while the paperwork continues to show diligent oversight. You cannot exhort your way out of it. You have to measure. **Track reviewer disagreement rates.** If the model is imperfect (it is) and your reviewers are engaged, they will override it at some baseline rate. A disagreement rate that drifts toward zero is rarely evidence the model became perfect; it is usually evidence the humans stopped reviewing. Trend it per reviewer, per document type, per month, and treat a collapse toward zero as a control failure to investigate, not an efficiency gain to celebrate. **Seed known items.** Periodically route items with known, deliberately planted errors through the review queue. If seeded errors sail through, you have measured the true attention level of the loop — better to learn it from a seed than from a regulator. **Watch review velocity.** A reviewer clearing items at forty seconds each is not performing the review your procedure describes. Velocity metrics are blunt, but a sudden acceleration is a reliable early warning. **Report it upward.** Disagreement rates, sampling results and seeded-item outcomes belong in the periodic reporting your audit committee or risk committee already receives. Oversight of the AI is itself a control, and controls that nobody reports on decay. ## Ground Outputs in Retrieval, So Reviewers Can Check Sources A reviewer cannot meaningfully approve a claim they cannot verify, and nothing destroys review quality faster than making verification expensive. The design answer is grounding: retrieval-based architectures in which the model's outputs are tied to specific source passages, and every extracted field, flagged anomaly or summary sentence carries a citation back to the exact place in the document it came from. The reviewer's job then changes from *"is this plausible?"* — an invitation to automation bias — to *"does the cited passage say this?"*, which is fast, checkable and exactly the kind of work review queues are good at. Grounding has a second virtue: it gives the system an honest way to fail. A model constrained to answer from retrieved sources can and should abstain when the sources do not support an answer — and in a regulated workflow, "not found, route to human" is not a degraded outcome. It is the system working. Ungrounded confidence is precisely the failure mode you are designing against, and any vendor whose review feature cannot show its sources should expect that to be your first hard question. ## Model Change Management: Re-Validate When Anything Changes Traditional software behaves the same until someone changes it. AI systems are not like that. Providers update and retire models on their own schedules; a prompt tweak intended to fix one behaviour shifts another; even a change in the documents flowing in — new templates, a new business line — can move accuracy without any code change at all. In a regulated workflow this means one thing: **the model, the prompt and the configuration are controlled items, and changes to them go through change management like any other change to a control.** The practical regime looks familiar to anyone who has operated validated systems. Maintain a **golden dataset** — a representative, human-verified set of documents with known correct outputs — and run it against every proposed change: new model version, revised prompt, new parameter. Compare results to the current baseline before anything reaches production. For material changes, run old and new in parallel on live traffic for a period and review the divergences. Document each validation — what was tested, what moved, who approved — so the system's history is reconstructible. And keep an eye on vendor deprecation schedules: a provider retiring your model version is a compliance event with a deadline, and it belongs on a risk register, not in a developer's inbox. None of this is exotic; it is the change discipline regulated organisations already apply to spreadsheets and macros, extended to a new kind of logic. ## The Regulatory Backdrop, in One Paragraph Everything above stands on its own operational merits, but it also happens to be what the emerging regulatory frameworks ask for. The EU AI Act's obligations for high-risk systems — coming into application from August 2026 — centre on exactly these themes: human oversight, logging and traceability, data governance, robustness and change control; our [technical readiness guide for the August 2026 deadline](/eu-ai-act-high-risk-compliance-a-technical-readiness-guide-for-august-2026/) covers that ground in depth for teams that need it. ISO/IEC 42001, the AI management system standard, formalises the same disciplines at organisational level and is increasingly appearing in procurement requirements. The practical point for a compliance leader is reassuring: if you build the guardrails in this article because they make your process defensible, you will find the regulatory frameworks largely describing what you already do — which is a far better position than building for the regulation first and discovering the operations later. ## How McKenna Consultants Can Help McKenna Consultants builds AI systems with the guardrails described here designed in from the start — grounded retrieval, human-in-the-loop review machinery, decision-level audit trails and change management — through our [AI-first development services](/ai-first/). We know the document workflows of the audit and compliance world from the inside, having worked with platform vendors in the sector including [AuditBoard](/project/auditboard-microsoft-add-in-case-study/), whose audit, risk and compliance platform we supported by accelerating the Word and Excel Add-In development that links document-based evidence into their product. If you are a compliance or internal audit leader evaluating AI review features — or a platform vendor building them and determined to get the defensibility right before your customers' regulators start asking — [get in touch](/contact/). The difference between AI that survives scrutiny and AI that fails it is designed in early, and it is much cheaper to design than to retrofit. --- # Production AI Agent Observability: Monitoring, Debugging, and Cost Control at Scale **Canonical URL:** https://www.mckennaconsultants.com/production-ai-agent-observability-monitoring-debugging-and-cost-control-at-scale/ **Author:** Nick McKenna **Published:** 26 May 2026 **Category:** Artificial Intelligence ## Production AI Agent Observability: Monitoring, Debugging, and Cost Control at Scale The hardest part of running AI agents in production is not the agent itself. It is everything around the agent — the operational discipline of knowing why a particular run produced a particular result, the cost management discipline of knowing where your token budget is going, and the regression management discipline of knowing whether yesterday's deployment quietly broke today's outputs. By the start of 2026, this discipline has a name in mainstream practice: **AI agent observability**. In the first quarter of 2026 our blog covered the journey from AI pilot to production. This article is the operational follow-up. Once your agent is in production, observability is the ongoing investment that distinguishes a working AI capability from a stranded one. The teams that get this right run their agents like they run any other production system: with telemetry, with traceability, with budget control, and with the feedback loops that turn production behaviour into evaluation suite improvements. The article is technical and practitioner-focused. It is written for engineering leads, architects, and AI platform owners who are responsible for production agents and need to think clearly about the observability stack they are building. ### What Observability Means for AI Agents Traditional system observability has three pillars: logs, metrics, and traces. AI agent observability extends this with two more: evaluation telemetry and cost telemetry. **Logs.** Structured records of what the agent did. For an LLM-based agent, this includes the prompt sent, the model and parameters used, the response received, the tools invoked and their inputs and outputs, and any intermediate reasoning steps the agent surfaces. **Metrics.** Aggregated counters and timers across the agent's operations. Latency percentiles, error rates, retry counts, token usage rates, tool invocation counts. **Traces.** Causal chains across an agent's run. A single user request to an agent typically produces a tree of LLM calls, tool invocations, sub-agent calls, and external service requests. Distributed tracing makes this tree visible. **Evaluation telemetry.** Quality signals on the agent's outputs. Did the response contain the expected information? Did it hallucinate? Did it complete the task? Evaluation telemetry can be model-graded (an LLM-as-judge approach), heuristic, or user-fed (thumbs up / thumbs down, downstream task success). **Cost telemetry.** Token consumption, cache hit rates, model selection patterns. AI cost is non-trivial in production, and it can climb quickly when an agent's behaviour drifts. A complete observability stack covers all five. Most teams start with two or three and reach the others gradually. The goal is not to build everything at once; the goal is to build enough to answer the operational questions that matter for your specific application. ### The Questions Observability Must Answer A useful test for your observability stack is whether it answers the questions a senior engineer asks during an incident. The standard set: **"Why did this user's request produce that response?"** You need a trace that captures the input prompt, the system prompt at the time, the tools the agent had access to, the tool calls it made, the intermediate reasoning if exposed, and the final response. The trace must be retrievable by user request ID, by session, or by approximate time window. **"Has this regression happened before?"** You need historical traces that allow comparison of similar requests across time. If a user asks a comparable question today versus yesterday and gets a different result, the observability stack must let you compare the two. **"Why did our token bill jump 40% this week?"** You need cost telemetry broken down by user, tenant, feature, and model. A cost regression that you cannot localise is one you cannot fix. **"Is the model degrading in quality?"** You need evaluation telemetry over a representative production sample, with trend lines that surface gradual degradation. **"Did this deployment break anything?"** You need pre- and post-deployment comparisons across the five observability pillars, ideally with automated alerting on significant shifts. **"Is this user trying to break the system?"** You need traces that surface adversarial patterns — prompt injection attempts, jailbreaks, attempts to exfiltrate system prompts. Security-relevant signals must be detectable in observability data, not retrieved only after an incident. If your stack cannot answer one of these, the gap is your highest-priority observability investment. ### The Components of an AI Agent Observability Stack A working stack has six components. Some can be combined into a single tool; some require dedicated systems. #### 1. Structured Run Logging Every agent run produces a structured log record. The schema typically includes: - A unique run ID and a higher-level session or trace ID. - The user and tenant identifiers (with appropriate privacy controls). - The timestamp and duration of the run. - The model and version used. - The input prompt or user request, with PII redaction applied. - The system prompt or agent instructions in effect at the time. - The tools available to the agent and the tools invoked. - The intermediate reasoning steps where the model exposes them. - The final response, with redaction applied. - Token counts (input, output, cached). - Cost (calculated from token counts and current pricing). - Any errors, retries, or fallbacks that occurred. A common mistake is logging this data as a free-text JSON blob rather than as a structured schema. Structured schemas allow querying, aggregation, and the construction of dashboards that free text cannot support. Invest in the schema early. #### 2. Distributed Tracing When an agent invokes tools or sub-agents, the run is not a single LLM call. It is a tree of calls. Distributed tracing captures the tree. The OpenTelemetry GenAI semantic conventions, which have stabilised through 2025 and into 2026, define a vocabulary for AI-specific spans: `gen_ai.system`, `gen_ai.request.model`, `gen_ai.usage.input_tokens`, and so on. Implementations of these conventions are available in most major OpenTelemetry SDKs and integrate with established tracing backends (Jaeger, Tempo, Honeycomb, Datadog, Application Insights). For agentic systems, the tracing is particularly valuable because a single user request can generate a tree of dozens of model calls. Without tracing, the operational visibility into what the agent did is severely limited. #### 3. Evaluation Telemetry Evaluation in production is different from evaluation in development. Development evaluations run on curated datasets with known correct answers. Production evaluations run on real traffic, often without ground truth, and must produce signal cheaply enough to apply to a meaningful sample of requests. The patterns that work: **LLM-as-judge for selected sample.** Take a sample of production requests (1-10%, more for high-stakes applications), run an evaluation LLM against the input and output, and produce structured quality scores. Track the scores over time. **Implicit signals from downstream behaviour.** If the agent is part of a larger workflow, downstream success is a quality signal. Did the user accept the agent's suggestion? Did the next step in the workflow complete without intervention? These signals are noisier than explicit evaluation but vastly cheaper at scale. **Explicit user feedback.** Thumbs up / thumbs down, satisfaction surveys, reported issues. Lower volume than implicit signals but higher fidelity for the requests that produce feedback. **Hallucination detection** for retrieval-augmented agents. Did the response stay grounded in the retrieved context, or did the model fabricate? Specialist hallucination-detection models exist for this purpose; alternatively, a structured LLM-judge prompt can produce useful signal. The evaluation telemetry must be integrated with the run logs and traces, so a quality regression can be drilled into a specific population of failing runs, then a specific run, then the trace of that run. #### 4. Cost Tracking and Attribution AI cost in production is a real budget line. By 2026, mid-sized AI applications routinely consume between £10,000 and £500,000 per month in model API costs, with the high end concentrated in agentic and multi-modal workloads. Cost tracking that aggregates only at the bill level is insufficient. Useful cost telemetry breaks down by: - **Per request.** Direct attribution from token counts to cost. - **Per user and per tenant.** For multi-tenant applications, this is essential — both for understanding which tenants are driving cost and for product-level decisions about pricing. - **Per feature.** Which product features generate which fraction of total spend. - **Per model.** When agents have model selection logic, which model is being chosen for which scenario, and at what cost. - **Per cache state.** Cached vs uncached input tokens. Anthropic's prompt caching (and equivalents from other providers) materially reduces cost — cache hit rate is itself a metric worth tracking. The cost telemetry must support both real-time alerting (a sudden spike must be visible quickly) and historical analysis (a cohort of users whose cost has crept up over weeks must be identifiable). A combination of streaming aggregation into a real-time dashboard and batch aggregation into a data warehouse is the standard pattern. #### 5. Feedback Loop into Evaluation Suites Production telemetry has its highest value when it feeds back into the evaluation suite that protects against regression. The pattern: - Identify a production failure — a user-reported bad response, a quality score drop, a cost regression. - Capture the exact production input that produced the failure. - Add it to the evaluation suite with the expected behaviour. - Run the evaluation suite on every model upgrade, prompt change, or significant deployment. Over time, the evaluation suite becomes a curated dataset of the failure modes your application has actually encountered. Each subsequent change is tested against this dataset, which produces strictly better regression coverage than any synthetically constructed test set. The feedback loop is the single highest-leverage observability investment. It is also the one teams most consistently underinvest in. Build the workflow tooling early — make it easy to promote a production trace into the evaluation suite — and you compound the value of every subsequent investment. #### 6. Alerting and Anomaly Detection The final component is alerting. Useful alerts: - Latency exceeding service-level objectives. - Error rate exceeding baseline. - Cost-per-request exceeding budget. - Evaluation quality score dropping below threshold. - Specific failure patterns (e.g., a class of tool errors that has historically correlated with model regression). - Adversarial pattern detection (e.g., a sudden spike in prompt-injection-like inputs). Alert hygiene applies the same as in any other system: alerts must be actionable, ownership must be clear, and noisy alerts must be tuned out. AI agent stacks are particularly prone to alert fatigue because the failure modes are subtler than in traditional systems — investing in alert quality early pays compounding dividends. ### Tooling Choices: Self-Host vs Managed The observability tool market for AI agents matured rapidly through 2024 and 2025. By 2026 the practical landscape: **Managed AI-specific platforms.** LangSmith, LangFuse Cloud, Arize AI, and equivalents. Purpose-built for AI observability, with strong evaluation features, trace visualisation, and integration with popular agent frameworks. Lowest time-to-value; cost scales with usage. **Self-hosted AI-specific platforms.** LangFuse and Phoenix (from Arize) both offer self-hosted deployments. Higher operational burden but full control over data residency and retention. **General-purpose observability with AI extensions.** Datadog, Honeycomb, Application Insights, New Relic — all now have GenAI-specific tracing support via OpenTelemetry. Strong if you already have these platforms in operation; weaker than purpose-built platforms for evaluation and cost-specific features. **Custom builds on commodity infrastructure.** OpenTelemetry collectors emitting to ClickHouse, with a custom dashboard layer. Most flexibility, highest engineering investment. The right choice depends on: - **Data sensitivity.** Highly sensitive prompts and outputs may not be sendable to third-party services even with zero-retention guarantees; this favours self-hosting. - **Existing observability investment.** If you have Datadog or Honeycomb across the rest of your stack, AI extensions there reduce operational complexity. - **Evaluation sophistication.** Purpose-built AI platforms have stronger evaluation features than general platforms; for evaluation-heavy use cases, this matters. - **Engineering capacity.** Custom builds require dedicated platform engineering investment over time. For most enterprise customers, a purpose-built managed platform combined with an OpenTelemetry feed into the existing general-purpose observability stack produces the best balance of capability and effort. ### Cost Control Specifics Cost control deserves a dedicated section because it is the single most consistent place teams find unexpected spend. **Implement aggressive prompt caching.** Anthropic, OpenAI, and other providers offer prompt caching that materially reduces cost on repeated prompt prefixes. Most agent applications can route 60-90% of input tokens through cache hits with appropriate prompt structure. Build this into the agent design from the start, not as a retrospective optimisation. **Use the smallest model that meets the quality bar.** Frontier models are expensive. For many agent steps, smaller models — Haiku, GPT-4 mini, Gemini Flash — produce adequate quality at a fraction of the cost. Architect agents with explicit model selection rather than defaulting to the largest available. **Be careful with retries.** A failed agent run that retries three times costs four times the budget of a single run. Retry logic must be bounded, and retry triggers must be selected carefully (transient API errors, yes; quality issues, generally no — quality issues should be raised to humans, not retried mechanically). **Watch for cost regressions on model upgrades.** When a provider releases a new model, the input and output token counts can shift even when the prompt is unchanged. Validate cost-per-request before rolling a new model into production. **Set budget alerts and hard limits.** Streaming budget alerts at the request level, budget caps at the user level (where appropriate), and tenant-level budget caps for multi-tenant applications. The alert structure should catch a runaway loop before it accumulates significant spend. ### Common Anti-Patterns Patterns we have seen repeatedly in production AI deployments: **Logging the prompt as plain text in a non-structured log.** Makes querying impossible at scale. Always use structured logging. **No PII redaction before logging.** Logs become a privacy liability. Redact at the source, not at the dashboard. **Trace data without cost data.** You can see what happened but not what it cost. Always integrate cost telemetry with traces. **Evaluation data disconnected from traces.** A failing evaluation must lead you back to the production trace that produced it. Disconnected evaluation surfaces produce signal you cannot act on. **Unbounded retention of prompt content.** Prompts and responses contain customer data. Retention policies must be defined and enforced, not implicit. **No tenant-level cost attribution in multi-tenant systems.** When a tenant runs up unexpected cost, the operational team must be able to identify and contact them. Without per-tenant attribution, cost issues cannot be addressed cleanly. ### A Reference Implementation Sketch A common production stack for a UK enterprise AI deployment in 2026: - **Agent framework** with built-in instrumentation (Anthropic SDK with prompt caching, the LangChain or LlamaIndex equivalents, or a custom orchestration layer that emits OpenTelemetry). - **OpenTelemetry collector** receiving traces from the agent framework, enriching them with deployment metadata, and routing to multiple sinks. - **LangFuse or LangSmith** as the AI-specific observability platform, receiving full traces and prompt/response content (with appropriate redaction). - **Datadog or Honeycomb** as the general-purpose observability platform, receiving traces and metrics for cross-system correlation. - **A dedicated cost dashboard** built on the cost telemetry, with real-time alerts and historical drill-down. - **An evaluation pipeline** (often built around the LangFuse / LangSmith dataset features or a custom workflow on top) that captures production traces, allows curation into evaluation suites, and runs the suites against deployment candidates. This stack is not the only viable shape, but it is representative of what works in 2026 for enterprise AI deployments at meaningful scale. ### Where McKenna Helps McKenna Consultants delivers AI agent observability engagements as part of our broader AI-First practice. Typical engagements: **Observability stack assessment.** Review the existing observability posture against the components above, identify gaps, prioritise the investments that produce the largest operational improvements. **Stack implementation.** Build the structured logging, tracing, evaluation, and cost tracking infrastructure for an AI agent application. Output: a working observability stack with documented operational procedures. **Cost optimisation.** A focused engagement on AI cost reduction — prompt caching, model selection, retry tuning, cost attribution. Output: documented cost reduction and ongoing budget controls. **Production readiness review.** A short-form engagement assessing whether an AI application is ready to scale to production volumes, with observability being one of the key dimensions reviewed. If your AI application is in production or approaching production, and your observability stack is ad-hoc rather than designed, [contact us](https://www.mckennaconsultants.com/contact/) — this is one of the most common engagements we run, and the production discipline gap is one of the most consistent friction points across enterprise AI programmes in 2026. --- # Answering the Enterprise Security Questionnaire: Tenancy and Data Isolation for SaaS Document Features **Canonical URL:** https://www.mckennaconsultants.com/answering-the-enterprise-security-questionnaire-tenancy-and-data-isolation-for-saas-document-features/ **Author:** Nick McKenna **Published:** 24 May 2026 **Category:** SharePoint Embedded # Answering the Enterprise Security Questionnaire: Tenancy and Data Isolation for SaaS Document Features There is a moment in every growing ISV's life that founders remember precisely. The biggest prospect in the pipeline goes quiet for a week, and then an email arrives from someone you have never spoken to — a security assessor, a third-party risk team, a procurement portal — containing a spreadsheet with three hundred rows. Encryption, tenancy, data residency, incident response, penetration testing, subprocessors, deletion. The deal is now gated on your answers, and the questions are hardest wherever your product stores customer documents, because documents are where the customer's most sensitive material lives: contracts, board papers, financial workings, personnel files. This article is about answering that **SaaS security questionnaire** well when your product's document features are built on SharePoint Embedded. The good news is that you are holding better cards than most vendors your size: a large share of the spreadsheet is answered by Microsoft's platform and by the architecture of SharePoint Embedded itself. The discipline lies in knowing exactly which questions are answered for you, which are answered by your architecture, and which remain genuinely yours — and never blurring the three. That framing has a name: the **shared responsibility model**, and it should be the organising principle of every answer you write. We work with [SaaS and software vendors](/sectors/saas-and-software-vendors/) at exactly this stage — the first serious enterprise deals, the first serious security reviews — and the pattern is consistent. Vendors do not lose these reviews because their security is inadequate. They lose them because their *answers* are vague, overclaimed or improvised, which assessors read as a proxy for how the company will behave when something goes wrong. ## Why Document Features Attract the Hardest Questions A security assessor triages your product by asking where the damage would be if you were breached. Application data — records, workflow state, configuration — is sensitive, but documents are different in kind. A document store is a concentrated archive of exactly the material the customer's own security programme exists to protect, in portable, self-describing files that are valuable the moment they are exfiltrated. So expect the document sections of the questionnaire to be probed hardest, and expect follow-up calls to dwell there. Assessors will want to understand tenancy: whose infrastructure the documents sit on, what separates one customer's files from another's, and what stands between a bug in your code and a cross-customer disclosure. If your answers to those questions are crisp, the rest of the review tends to soften; if they wobble, everything else gets harder. ## The Shared-Responsibility Model Is Your Answer Key Every cloud product is a stack of responsibilities divided between the vendor and its platform providers. Assessors know this — they review vendors on AWS, Azure and Google Cloud all day — and what they are testing is whether *you* know it. The credible vendor answers each question by naming the layer that owns the control, describing how it is implemented, and pointing at evidence. The non-credible vendor claims everything ("all data is secured with bank-grade encryption") and evidences nothing. For a product whose document features are built on SharePoint Embedded, the stack has three layers: 1. **Microsoft's platform** answers questions about physical security, infrastructure, encryption and platform certifications. 2. **SharePoint Embedded's architecture** answers questions about tenancy, isolation and where documents physically live. 3. **Your application** answers questions about authentication, authorisation, your permission mapping, your logging, your incident response and your own security practices. If SharePoint Embedded is unfamiliar territory, we have written [an introduction to what it is and how it works](/what-is-sharepoint-embedded-microsoft-s-modern-path-for-embedding-365-document-editing/); the one-sentence version for this article is that your application stores documents in dedicated containers inside Microsoft 365, and users work on them through Microsoft's own Office editing experience embedded in your product. Now let us take the three layers in turn. ## Layer One: What Microsoft's Platform Answers for You Because the documents in a SharePoint Embedded application physically reside in Microsoft 365, an entire band of the questionnaire is answered by Microsoft's platform controls rather than by anything you built: - **Physical and infrastructure security.** Datacentre access controls, hardware lifecycle, network infrastructure — platform matters, evidenced by Microsoft's published compliance documentation. - **Encryption at rest and in transit.** Content in Microsoft 365 is encrypted at rest and protected in transit as a platform property. You did not implement this and should not imply that you did; you inherit it, and you should say so in exactly those words. - **Certifications and attestations.** Microsoft 365 carries one of the broadest compliance portfolios in the industry, and Microsoft publishes its certifications, audit reports and control documentation for customer review. When a questionnaire asks for ISO or SOC evidence *for the storage layer*, your answer points there. - **Resilience and availability.** Redundancy, failover and data durability for the document store are platform properties, backed by Microsoft's service commitments. The phrasing discipline matters more than it looks. Write answers in the form: "Document content is stored in Microsoft 365 via SharePoint Embedded and inherits Microsoft's platform controls for encryption at rest and in transit; Microsoft's certifications and audit documentation are available at [reference]. Our application-layer controls are described in section X." Assessors deal in inherited controls every day. What they penalise is a vendor presenting a platform's certification as if it were the vendor's own — more on that below. ## Layer Two: What SharePoint Embedded's Architecture Answers The tenancy and isolation rows are where most multi-tenant SaaS vendors sweat, because the honest answer for a conventional architecture is "logical separation via a tenant-ID column and disciplined query filters" — which is normal, but takes careful evidencing. **SharePoint Embedded data isolation** gives you a structurally stronger story to tell. **Containers are the isolation boundary.** In SharePoint Embedded, documents live in storage containers, and the container is a hard, platform-enforced security boundary: permissions and access control attach at container level, enforced by Microsoft 365 itself rather than by a filter in your application code. A well-designed application gives each customer — often each workspace or engagement within a customer — its own container. Your questionnaire answer becomes: *each customer's documents are held in dedicated storage containers; isolation is enforced by the platform, not solely by application logic.* That is a materially better answer than a shared bucket and a WHERE clause, and you should make sure your architecture has actually earned it before you write it. **Documents live in Microsoft 365, not in a vendor-run store.** Your document layer is not a blob store you operate; it is Microsoft 365 storage governed by Microsoft's operational controls. For **multi-tenant document storage security** questions — who patches it, who operates it, whose staff can touch the storage infrastructure — this shifts the answer from "trust our small operations team" to "the storage layer is operated by Microsoft". **Residency follows the tenancy model — so know which model you run.** In the standard SharePoint Embedded configuration, containers are created in each customer's own Microsoft 365 tenant, which means each customer's documents reside within their own tenant boundary and geography — for many assessors, the single most reassuring sentence in your whole response. In the alternative model, where containers live in your (the provider's) tenant, residency follows *your* tenant's geography instead, and your answer must say so plainly. Nothing corrodes credibility faster than a residency answer that turns out to describe an architecture you do not actually have. Whichever model you run, one sentence of truth beats a paragraph of borrowed reassurance. Keep this layer's answers at exactly this level of detail. The questionnaire is not asking you to defend your container partitioning strategy or your scaling design; it is asking whether isolation is real, enforced and locatable. Answer that, offer an architecture diagram, and stop. ## Layer Three: What Remains Genuinely Yours Here is the part no platform answers for you, and the part assessors most want to hear you own without prompting. **Authentication and authorisation in your application.** Microsoft enforces container permissions, but your application decides who gets access to what. How you authenticate users, whether you support single sign-on, how sessions are managed, how administrative access to your own systems is controlled — all yours. **Permission mapping.** Your product has roles, workspaces and sharing rules, and somewhere in your codebase they are translated into container permissions. That mapping is the single most security-critical code you own: a bug here is how a "platform-isolated" architecture still leaks a document. Expect a competent assessor to ask how it is tested. (For the technical shape of container permissions, see our article on [building your first SharePoint Embedded application](/building-your-first-sharepoint-embedded-application-container-types-permissions-and-microsoft-graph/).) Have a real answer: code review on every change to the mapping, automated tests that assert cross-customer access fails, periodic access reviews. **Logging and monitoring.** Which user accessed which document, when, from your application's point of view; how long logs are retained; who reviews alerts. Platform-side activity signals exist, but your application-level audit trail is yours to build and yours to produce when a customer's investigation team asks. **Incident response and breach notification.** Who is on call, how incidents are triaged, and — the row enterprise buyers care about most — what you commit to contractually for notifying affected customers, and how quickly. "We would notify affected customers without undue delay, and our incident response plan is available under NDA" is a fine answer. Having no plan to attach is not. **Your own security practices.** Secure development lifecycle, dependency and vulnerability management, penetration testing of *your application* by an independent firm, background checks, access control for your own staff and administrators. Microsoft's platform testing does not cover your code; commissioning your own annual penetration test — and being willing to share the executive summary — is one of the cheapest credibility purchases available to a small vendor. **Subprocessors and data flows.** Microsoft appears on your subprocessor list, along with anyone else who touches customer data. A simple data-flow diagram showing what lives where — documents in Microsoft 365 containers, metadata in your database, telemetry in your monitoring stack — answers half a dozen questionnaire rows at once. **Offboarding and deletion.** When a customer leaves, what happens to their documents, on what timeline, and how is destruction evidenced? The container-per-customer model makes the honest answer straightforward — the customer's containers are deleted, recycle-bin retention windows and all, and you confirm completion — but only if you have actually built and rehearsed the procedure. ## Decoding the Rows That Decide the Review A few questionnaire items come up in almost every review, and it is worth pre-writing strong answers. **"Is customer data segregated from that of other customers?"** Yes — describe container-level isolation enforced by Microsoft 365, plus the application-layer permission mapping and how it is tested. Name both layers; the assessor is checking whether you know there are two. **"Where is our data stored and processed?"** State the tenancy model you actually run, what that means for geography, and what metadata (if any) lives outside it in your own systems. Partial answers here read as evasion. **"Is data encrypted at rest and in transit?"** Yes, inherited from Microsoft 365 for document content — say "inherited", cite the platform documentation, and cover your own database and services in the same answer. **"Who at your company can access our data?"** Answer for your staff and your administrative tooling, with role-based access and audit logging. "Nobody" is rarely true; "these named roles, under these controls, with this logging" is believable. **"Have you undergone penetration testing?"** Answer for your application, with dates and the offer of a summary. Do not answer with Microsoft's testing programme; that covers their platform, not your code. **"What happens to our data on termination?"** Describe your offboarding runbook, timelines and confirmation. If you cannot describe it, build it before the next questionnaire, not after. ## The Answers That Sink Deals Having watched these reviews from the vendor's side of the table, the fatal answers are remarkably consistent. *"We've never thought about that"* — or its written form, a blank cell — on incident response, deletion or staff access, which tells the assessor your security posture is reactive. *Overclaiming*, most commonly presenting Microsoft's certifications as if they were audits of your company; assessors check, and one discovered overclaim taints every other answer in the workbook. *Vagueness dressed as strength* — "military-grade encryption", "fully isolated architecture" — with no mechanism named; specific and modest beats vague and grand every time. And *treating the questionnaire as an adversary* rather than a buying signal: by the time the spreadsheet arrives, someone on the other side wants to buy your product and needs your help getting it past their own risk process. Answer like a partner, not a witness. The vendors who clear enterprise review are rarely the ones with the most controls. They are the ones who can say, for every row: this is answered by our platform, and here is Microsoft's evidence; this is answered by our architecture, and here is the diagram; this is ours, and here is what we do. That is the whole game. ## Build the Evidence Pack Once Your first questionnaire will consume a fortnight; there is no reason the fifth should consume more than an afternoon. Assemble a standing evidence pack: an architecture and data-flow diagram, a one-page shared-responsibility statement mapping controls to layers, your latest penetration test summary, your subprocessor list, your incident response and deletion procedures, and pointers to Microsoft's compliance documentation for the inherited layer. Review it quarterly. Beyond saving time, the pack changes the tone of reviews — a vendor who sends a coherent security overview *with* the completed spreadsheet reads as an organisation that has done this before, and assessors extend measurably more benefit of the doubt to vendors who look prepared. ## How McKenna Consultants Can Help McKenna Consultants has spent more than 25 years building Microsoft document integration for software vendors, and much of that work has been for products sold into exactly the buyers who send these spreadsheets — including accelerating Word and Excel Add-In development for [AuditBoard](/project/auditboard-microsoft-add-in-case-study/), whose platform serves audit, compliance and risk teams, and building mobile document workflows for SaaS vendors like [Slidebank](/project/slidebank/). Our [SharePoint Embedded development](/sharepoint-embedded/) engagements are designed with the security review in mind from the first architecture decision: container isolation models you can defend in writing, permission mappings with tests an assessor can be shown, and tenancy choices whose residency consequences are understood before a customer asks. If your document features are heading into enterprise security review — or the spreadsheet has already landed and some of the rows have no good answer yet — [get in touch](/contact/). We can help you build the architecture the answers describe, and the evidence pack that gets the deal through. --- # Migrating from a Custom WOPI Host to SharePoint Embedded: A Practical Playbook **Canonical URL:** https://www.mckennaconsultants.com/migrating-from-a-custom-wopi-host-to-sharepoint-embedded-a-practical-playbook/ **Author:** Nick McKenna **Published:** 19 May 2026 **Category:** SharePoint Embedded ## Migrating from a Custom WOPI Host to SharePoint Embedded: A Practical Playbook This is the article that two earlier pieces in our Q2 2026 series have been pointing toward. We have explained what SharePoint Embedded is. We have walked through the decision framework for SharePoint Embedded vs WOPI. We have built a SharePoint Embedded application end-to-end. The remaining question for many existing WOPI hosts is the migration question: should we move from our custom WOPI host to SharePoint Embedded, and if so, how? This article is the playbook. It is structured as four parts: the strategic decision (when migration genuinely makes sense), the architectural mapping (how WOPI concepts translate to SharePoint Embedded equivalents), the migration mechanics (data, identity, URLs, deployment), and the phased rollout (pilot, controlled, full, decommissioning). It is written for ISVs and enterprise architects who are evaluating or planning a migration. Before reading further: this is not a small project. A realistic migration of a non-trivial WOPI host is a multi-month engagement, often longer. The article is honest about that. McKenna Consultants delivers these migrations as packaged engagements, and the patterns described here reflect what we have learned in production migration work. ### Part One: When Migration Genuinely Makes Sense Not every WOPI host should migrate. The strategic question is whether SharePoint Embedded offers enough advantage, in your specific situation, to justify the migration cost. The cases where migration is the right call: **Operational burden reduction.** Your WOPI host requires standing operational investment — discovery uptime, certificate management, proof key rotation, Office release tracking — and that investment is not a strategic differentiator for your business. SharePoint Embedded eliminates this entire surface area. For organisations whose engineering capacity is the binding constraint, the operational simplification is genuinely transformative. **Native coauthoring without further investment.** Your product roadmap includes coauthoring, sensitivity labels, retention policies, or Microsoft Purview integration. Building these on top of a custom WOPI host is a substantial engineering project. SharePoint Embedded gives them to you for free. **Microsoft 365 Copilot integration.** Your product strategy includes Copilot capabilities or custom Copilot agents. SharePoint Embedded is the most direct path to making your product's documents Copilot-grounded; the WOPI path is more involved and produces a less complete integration. **Customer demand for SharePoint Embedded.** Increasingly, enterprise buyers ask "is this SharePoint Embedded?" rather than "is this WOPI?". For ISVs whose go-to-market depends on Microsoft alignment, the platform position itself has commercial value. **Reduction in compliance complexity.** Your customers' compliance teams are increasingly interrogating the storage layer of your application. A SharePoint Embedded-backed application can answer these questions by reference to Microsoft's certifications and information protection model, rather than by re-establishing your own. For some customer segments — regulated industries, public sector — this materially shortens the procurement cycle. The cases where migration is the wrong call: **Established CSPP Plus features in production.** If your application uses backstage integration, CSPP Plus geo-fencing, or chunked file transfer, those capabilities do not have direct SharePoint Embedded equivalents. Migration would be a feature regression unless the product strategy can absorb the loss. **Storage as the product.** If your application's commercial proposition is "we are your storage" — document management, enterprise content management, cloud storage — migration to SharePoint Embedded gives the storage to Microsoft. This is rarely strategically acceptable for storage-centric businesses. **Hard data residency requirements outside Microsoft's footprint.** SharePoint Embedded operates within Microsoft's regional infrastructure. If your customers require storage in jurisdictions Microsoft does not serve, or in customer-controlled data centres, SharePoint Embedded cannot meet the requirement. **Existing CSPP partner relationship with strategic value.** Your Cloud Storage Partner Program membership has commercial value beyond the technical integration — Microsoft account team relationships, joint go-to-market motion, product co-marketing. Walking away from CSPP for the migration eliminates that value. **The cost of migration outweighs the benefit.** A minimum-viable WOPI host that already serves a small customer base with low operational burden may not be worth migrating. The benefit must justify the migration cost. McKenna's strong recommendation is to make this decision deliberately, with a documented rationale, before any code is written. The migration is too significant to enter on an unexamined assumption. ### Part Two: Architectural Mapping For organisations that have decided to migrate, the second question is how WOPI concepts map onto SharePoint Embedded equivalents. The mapping is mostly clean, with a few specific points of friction. | WOPI Concept | SharePoint Embedded Equivalent | Notes | |---|---|---| | WOPI host | Your application registration in Microsoft Entra ID | The "host" is no longer a distinct technical role; your application talks to Graph | | Discovery document | Microsoft Graph endpoints (no separate discovery) | Microsoft handles discovery internally | | WOPI access tokens | Microsoft Graph delegated and application tokens | Standard OAuth 2.0 via MSAL | | Proof keys | Not applicable | No host-side token validation; Microsoft validates Graph tokens | | File store | SharePoint Embedded containers | Microsoft hosts the storage | | File metadata (`CheckFileInfo`) | Container and drive item properties via Graph | Standard Graph drive item model | | File operations (`GetFile`, `PutFile`) | Graph drive item content endpoints | Standard Graph file APIs | | Lock management (`Lock`, `Unlock`, `RefreshLock`) | Handled by Microsoft inside the platform | No host-side lock state to manage | | Coauthoring | First-class capability | No additional implementation | | User identity (`HostAuthenticationId`) | Entra ID user identity, available via Graph | Standard Entra ID user objects | | Permissions and authorisation | Container permissions API, with role-based grants | Reader, writer, manager, owner roles | | Sensitivity labels and retention | Inherited from consuming tenant configuration | Automatic | | Audit logs | Consuming tenant unified audit log | Standard Microsoft 365 audit surface | | File URLs | Drive item `webUrl` and constructed editing URLs | Different URL scheme from your existing WOPI URLs | | Office for the web rendering | First-class | Same Office for the web infrastructure | | Mobile editing | Office mobile apps, opening container files via Graph | Different app integration than mobile WOPI | The points of friction worth highlighting: **Lock management disappears entirely.** WOPI hosts spend a non-trivial amount of effort implementing the lock state machine correctly. In SharePoint Embedded, locking is handled inside the platform. The code your team has been carefully maintaining for years simply does not exist on the SharePoint Embedded side. This is a genuine simplification. **File URLs change.** Every URL pointing at a file in your old WOPI host is invalidated by migration. URLs in emails, in CRM records, in SharePoint sites that link to your storage, in customer-side bookmarks — all of them need addressing. A redirect layer at your old domain, mapping old WOPI URLs to new SharePoint Embedded equivalents for as long as references remain in flight, is a non-negotiable component of the migration plan. **The user identity model changes shape.** WOPI integrations frequently use the host's own identity model and translate to WOPI user identifiers via `HostAuthenticationId`. SharePoint Embedded uses Entra ID user identity directly. For applications whose user identity is *not* currently Entra ID-based, this is a significant transition — the application's identity layer must federate with Entra ID, or users must have Entra ID identities provisioned, before SharePoint Embedded can authenticate them. This is often the single largest migration sub-project. **CSPP-specific features may have no equivalent.** If your application uses CSPP backstage integration, the product manager's first question on the migration plan should be "what replaces backstage?" There is no like-for-like answer. Migration involves a product decision about the future of the backstage user journey. ### Part Three: Migration Mechanics Once the decision is made and the mapping is understood, the migration itself has six workstreams. #### Workstream 1: Identity and Authentication The first migration step in nearly every plan is the identity workstream. Your application must: - Register in Microsoft Entra ID as outlined in the SharePoint Embedded implementation guide. - Establish federation between your existing user identity model and Entra ID, or migrate users to Entra ID-native identities. - Update authentication flows to acquire Microsoft Graph tokens rather than (or alongside) WOPI access tokens. - Update token storage and refresh logic for the OAuth 2.0 flow. For applications that already use Entra ID for primary user authentication, this workstream is straightforward. For applications with their own identity models (custom OIDC providers, legacy authentication systems, or hybrid setups), it is substantial. The authentication workstream often runs in parallel with the rest of the migration, because the rest of the work depends on having Graph tokens to call. #### Workstream 2: Container Type Registration and Customer Onboarding The container type registration workstream: - Design the container type model (one type? Multiple? What permissions structure?). - Register the container type in your application tenant. - Build the consuming-tenant authorisation flow into your application onboarding. - Communicate the new authorisation requirement to existing customers — every existing customer must complete the consuming-tenant authorisation as part of migration. The customer-side communication piece is often underestimated. A customer who must perform a one-time admin consent flow to enable migration is a customer who must be contacted, prepared, and supported through the consent. For customers with hundreds of seats, this is a project management exercise in itself. #### Workstream 3: Data Migration The data workstream moves files from your existing storage into SharePoint Embedded containers. The pattern that works best: - **Build a migration tool** that reads from your current storage, creates the corresponding container (if not already present), and uploads the file content via Graph. The tool should be idempotent — running it twice on the same source should produce a single result. - **Map source identities to target containers.** Most existing WOPI hosts have their own concept of "tenant" or "workspace" that maps onto SharePoint Embedded's container concept. The mapping is often non-trivial and requires application-domain expertise. - **Preserve metadata where it is preserved-able.** SharePoint Embedded supports drive item metadata, but your existing WOPI metadata may have shapes that do not map cleanly. Decide what metadata is preserved, what is dropped, and what is reconstructed from application context. - **Handle versioning.** If your existing storage has version history, decide whether to migrate the history into SharePoint Embedded version history or to flatten to current state. Both are valid choices; the implications differ for compliance and support. - **Run the migration in batches.** A full migration of a large estate cannot be a single operation — it must be batched, observable, and resumable. The migration tool should be production-grade code, not a one-shot script. It will run multiple times during the migration — a pilot run, several rehearsals, the actual cutover — and its correctness is critical. #### Workstream 4: URL Redirect and Reference Mapping Every URL pointing at your old WOPI host must be addressable after migration. The pattern: - **Stand up a redirect service** at your old WOPI host's domain that maps old URLs to new SharePoint Embedded equivalents. - **Maintain the mapping** for the duration of the migration and beyond — typically twelve to twenty-four months — to handle URLs that linger in emails, CRM records, customer bookmarks, and external systems. - **Instrument redirect traffic** so you can see when old URLs are still being hit and from where. This visibility informs the decision about when to retire the redirect service. - **Communicate with external systems** that hold long-lived references to your URLs (CRM integrations, partner systems, regulatory recordkeeping). Some references must be updated proactively. The redirect surface is operationally less work than a full WOPI host but cannot be neglected. A migration that breaks customer-facing URLs erodes trust in ways that are hard to recover. #### Workstream 5: Application Layer Changes Your application code must change in several places: - **Replace WOPI client interactions with Graph drive operations.** File listing, content access, upload, download — all of these move from your WOPI host endpoints to Graph endpoints. - **Update embedded editor invocation.** Replace the WOPI launch URL construction with the SharePoint Embedded URL construction. - **Move permissions management into the SharePoint Embedded API.** Stop maintaining your own permission state for migrated containers; let SharePoint Embedded permissions be the source of truth. - **Update telemetry and monitoring.** Graph operations have their own observability surface (request IDs, throttling responses); your monitoring needs to cover this. - **Update support tooling.** Customer support representatives have tools that reference your WOPI infrastructure; these tools need updating to look at SharePoint Embedded equivalents. This workstream is the bulk of the engineering effort and is best run as a sequence of feature-flagged changes that allow per-customer or per-environment toggling between the old WOPI path and the new SharePoint Embedded path during transition. #### Workstream 6: Decommissioning The final workstream retires the WOPI infrastructure once all customers are migrated. This includes: - **Decommissioning the WOPI host endpoints.** After confirming no traffic, the discovery document, the file information endpoints, the content endpoints, and the proof key infrastructure are all retired. - **Retiring CSPP partner status,** if migration takes you out of the partner programme. - **Archiving the source storage layer.** The data is no longer authoritative — but for compliance and dispute resolution purposes, the original storage may need to be retained in cold storage for a defined period. - **Updating documentation, contracts, and product collateral.** The new platform position must be reflected in the customer-facing materials. ### Part Four: Phased Rollout A controlled migration uses four phases, with explicit decision gates at the boundary of each. **Phase 1: Internal Pilot.** Migrate one internal use case — a McKenna engagement might use a small internal application or a synthetic test customer. Validate the end-to-end flow, refine the migration tool, and surface the operational issues that only appear under realistic load. **Phase 2: Friendly Customer Pilot.** Identify two or three customers who are candid about issues, willing to go first, and operationally tolerant of the transition. Migrate them, shadow them through the change, and document the issues that emerge. The output of this phase is a proven migration runbook. **Phase 3: Controlled Rollout.** Migrate cohorts of customers in defined batches — perhaps 5%, 15%, 35%, 70% over a series of waves. Each wave should have a defined go / no-go gate with success criteria. The criteria are usually a combination of technical (no significant Graph errors, no data loss) and customer (no spike in support volume, no customer-reported regressions). **Phase 4: Full Cutover and Decommissioning.** Migrate the long tail and retire the WOPI infrastructure. The long tail includes the inevitable hold-out customers — the ones with custom integrations, the ones whose authorising administrators are hard to schedule, the ones who simply prefer the old way. A defined cutover date with appropriate notice is the typical mechanism, with bespoke handling for the very largest accounts. A realistic timeline for a non-trivial migration: - Decision and architecture: four to six weeks - Identity workstream and container type registration: four to eight weeks - Migration tool development and rehearsal: six to ten weeks - Internal and friendly pilot: four to eight weeks - Controlled rollout: eight to sixteen weeks (depending on customer count and cohort size) - Full cutover and decommissioning: four to eight weeks End-to-end, this is six months minimum for a small estate, twelve months realistic for a substantial estate, longer for very large or complex estates. ### What McKenna Delivers McKenna Consultants delivers WOPI-to-SharePoint-Embedded migration as a structured engagement with the four phases above. Our typical engagement model: **Strategy and architecture.** Decision framework analysis, architectural mapping, migration plan development, customer communication strategy. Output: a documented migration plan with the workstreams, dependencies, and timeline. **Implementation.** The six workstreams above, run in parallel where feasible. Output: working SharePoint Embedded application alongside the existing WOPI infrastructure, ready for pilot migration. **Pilot and rollout.** Migration tool refinement, pilot customer migration, controlled rollout of the broader estate. Output: customers migrated to SharePoint Embedded, with the WOPI infrastructure scoped for retirement. **Decommissioning.** Final retirement of WOPI endpoints, CSPP exit (if applicable), source storage archive. Output: clean SharePoint Embedded operational state. We are equally fluent in WOPI and in SharePoint Embedded — we built our practice on WOPI and are now extending it to SharePoint Embedded — which means we approach the migration as an architectural transition rather than as advocacy for either platform. If your organisation is evaluating or planning a migration, [contact us](https://www.mckennaconsultants.com/contact/) to discuss the engagement. --- # Configurable Products, Complex Catalogues: Modelling Industrial Products for Online Sales **Canonical URL:** https://www.mckennaconsultants.com/configurable-products-complex-catalogues-modelling-industrial-products-for-online-sales/ **Author:** Nick McKenna **Published:** 17 May 2026 **Category:** B2B eCommerce # Configurable Products, Complex Catalogues: Modelling Industrial Products for Online Sales Most eCommerce platforms were designed with a retail catalogue in mind: a few thousand products, each with a handful of options like size and colour, arranged in one tidy category tree. Industrial catalogues do not look like that. A single pneumatic cylinder family can legitimately expand into thousands of orderable variants across bore, stroke, port thread, seal material and cushioning options. Cable is sold by the metre, fasteners by the box of two hundred, gaskets in pack multiples. Buyers do not browse by product name; they filter by operating pressure and thread standard. And the same physical product may be certified, stocked and sellable in one market but not another. When manufacturers take these catalogues online without rethinking the data model, the failure is predictable: unusable search, wrong-variant orders, a catalogue nobody can maintain, and a webstore the sales team quietly tells customers to ignore. **Complex product catalogue eCommerce** is, at its core, a data modelling problem — and this article is about getting the model right. We will work through the recurring challenges of selling **configurable products B2B**: variant explosion, units of measure, parametric attributes, customer- and region-specific catalogues, the line between configuration and engineering, and the question of where product data should live. Throughout, we draw on our [B2B eCommerce](/b2b-ecommerce/) work in the [manufacturing and industrial engineering sector](/sectors/manufacturing-and-industrial-engineering/), including the global composable web store we built for Norgren. ## Where Retail Data Models Fall Over It is worth being precise about the assumptions a retail-shaped platform makes, because each one fails separately on an industrial catalogue. The first assumption is that options are few and every combination is sellable. Industrial products have many independent option axes, and most of the combinatorial space is *not* valid — not manufacturable, not offered, or not certified. The second is that a product is bought as "one each"; industrial goods are sold in lengths, packs, reels and drums, in quantities constrained by pack multiples and minimums. The third is that buyers navigate by category and pick by image and name; engineers select by specification, which demands typed, unit-aware attribute data rather than marketing copy. The fourth is that there is one catalogue; in reality, assortment varies by customer agreement, by region and by channel. A platform that hard-codes these retail assumptions forces you to fight it on all four fronts at once. A data model that acknowledges them makes each one tractable. ## The Variant Explosion Start with the most visible problem: combinatorics. Five option axes with a modest number of choices each can multiply into tens of thousands of theoretical combinations. Enumerate them all as flat SKUs and you get a catalogue that is enormous, mostly invalid, and impossible to maintain. Refuse to enumerate anything and buyers cannot order. The way through is to distinguish two regimes and model each honestly: - **Enumerated variants** make sense where the valid combinations are finite, known and — usually — recognised by the ERP as real part numbers. Here the parent product defines the option axes once, valid combinations are generated or imported from the part master, and each child variant carries its own orderable part number, its own stock identity and its own attribute values where they differ. - **Configured combinations** make sense where the space is effectively unbounded — cut lengths, custom strokes, option codes that compose into a built-to-order specification. Here you do not pretend every combination is a pre-existing SKU. Instead the product carries option logic and constraints, the buyer's selections are validated against them, and the outcome resolves to an orderable identity the back office understands, typically a composed part number or a configuration attached to the order line. Two disciplines matter in both regimes. First, the part number is the contract: whatever the buyer configures must resolve to something the ERP recognises and can promise, or the order dies at handover. Second, define option logic once at the product-family level rather than hand-maintaining thousands of children. When a seal material is discontinued, that should be one change to the family's constraints, not a spreadsheet exercise across four thousand SKUs. The maintainability of the variant model, more than its initial correctness, determines whether the catalogue is still trustworthy two years after launch. ## Units of Measure and Pack Quantities Units of measure look like a footnote and behave like a landmine. Industrial products routinely have a base unit in which stock is held, a sales unit in which customers order, and packaging levels in between: cable stocked in metres but sold in 50-metre reels or cut lengths, fittings stocked individually but sold in boxes of ten, chemicals in drums and IBCs. Orders are constrained by minimum quantities and pack multiples, and quantities must round correctly against them. The modelling rules are unglamorous but firm. Every quantity in the system carries its unit explicitly — a bare number is a defect waiting to happen. Conversions between base and sales units are defined per product, not assumed globally. The webstore presents the unit the buyer thinks in ("sold in packs of 10 — you are ordering 3 packs, 30 pieces") while transacting in terms the ERP will accept, because the ERP's unit definitions are the ones that govern picking, despatch and invoicing. Ambiguity here produces the most corrosive class of eCommerce failure: orders that are technically valid and commercially wrong, discovered at goods-in by an annoyed customer. ## Parametric Attributes: The Search Your Buyers Actually Do An engineer specifying a component does not search the way a consumer shops. They arrive with constraints — flow rate, operating pressure, temperature range, IP rating, body material, thread standard — and want to filter the catalogue down to the products that satisfy all of them. This is parametric search, it is the native buying behaviour of the industrial customer, and it is only as good as the attribute data underneath it. That puts hard requirements on the attribute model. Attributes must be typed (numeric, range, enumerated, boolean), unit-aware (a 10 bar rating must compare correctly against a filter set in bar, however the source data was keyed), and governed by controlled vocabularies — if the same thread is recorded as "M5", "5mm metric" and "metric 5" across three product families, faceting is broken no matter how good the search engine is. Range attributes deserve first-class treatment: an operating temperature of −20°C to +80°C should match a query for "must work at −10°C", which simple text tagging cannot do. And the technical artefacts engineers expect — datasheets, CAD models, certificates, dimensional drawings — belong in the model as structured product assets, not as attachments scattered across a file share. None of this is a search-engine feature you can buy your way out of; the engine can only facet what the data supports. In our experience the attribute-governance work is the single biggest effort item in an industrial catalogue programme — and the single biggest determinant of whether engineers adopt the store, because a parametric search that returns wrong or incomplete results is worse than none. ## One Product Pool, Many Catalogues The retail assumption of one catalogue for everyone fails quickly in industrial commerce. Key accounts have contracted assortments and approved-product lists. Distributors see a different range from direct customers. Regional availability differs for supply-chain reasons, and certification differs for regulatory ones — the variant sold into one market may be a physically different certified product from its equivalent elsewhere, and showing a buyer a product they cannot legally or practically be supplied with is worse than hiding it. The modelling consequence is a clean separation between the *product pool* — every product and variant you can supply, enriched once — and the *catalogues* published from it: per region, per channel, per customer segment, each a filtered, priced view of the same underlying data. Assortment then becomes configuration rather than duplication, and a certification change in one market is a change to one catalogue's rules, not a parallel product record to keep in sync. This same structure is what makes customer-specific experiences possible downstream — we have written separately about [self-service buyer portals with Elastic Path](/building-b2b-self-service-buyer-portals-with-elastic-path/), which lean heavily on per-customer catalogues, and about [subscription and recurring-revenue commerce](/subscription-and-recurring-revenue-commerce-with-elastic-path-b2b-beyond-one-off-orders/) for the consumables in those assortments that customers buy on a cadence. ## Stocked, Configured or Engineered: What Belongs in the Webstore Not everything in an industrial range belongs in a buy-now journey, and pretending otherwise is a common failure. It helps to be explicit about three classes of product: - **Stocked standard items** — enumerated variants with stock and lead times. These belong fully in the webstore: browse, filter, order. - **Configured-to-order items** — valid combinations within defined option logic, built on demand. These can and should still be self-service: a configurator that enforces the constraints, resolves to an orderable identity and sets lead-time expectations honestly. This is where the online catalogue earns its keep, because configuration errors are precisely what phone-and-email ordering handles badly. - **Engineered-to-order items** — anything requiring drawings, application engineering or commercial review. These belong in a quote workflow, not a basket. The store's job is to capture the requirement in structured form and route it, keeping the interaction inside the same account context rather than dumping the buyer to a generic contact form. The boundary between these classes is commercial, not technical, and it moves: configurations that prove popular graduate into stocked variants, and products once quoted by engineers become configurable as their option logic is codified. The data model should make those promotions cheap — which is another argument for defining option logic at the family level rather than baking assumptions about a product's class into the platform. ## Where Product Data Should Live: The PIM/Commerce Split Behind every complex catalogue sits a governance question that outlasts any platform choice: which system owns which product data? Three systems compete for the job, and the durable answer gives each a distinct role. The **ERP** owns existence and logistics identity: the part master, units of measure, stock and supply data. It likewise remains the authority on pricing — a subject with enough depth that we will not attempt it here. The **PIM** (product information management system) owns descriptive truth: engineering attributes, controlled vocabularies, translations, media and datasheets, and the relationships between products — enriched once, published everywhere the business sells. The **commerce platform** owns the sellable view: catalogues and assortments, navigation hierarchies, the option logic buyers configure against, and the transactional surface of carts and orders. Two anti-patterns account for most of the pain we see. The first is enriching product data *in* the commerce platform because it was the system at hand — attributes and translations accumulate where only the webstore can use them, and the next channel starts from zero. The second is wiring the storefront to query the PIM (or worse, the ERP) live, coupling customer-facing latency and availability to back-office systems that were never designed for it. The sound pattern is publication: data flows from ERP and PIM into the commerce platform through deliberate, versioned pipelines, so the storefront serves from its own fast, sellable model. If you do not yet have a PIM, a capable commerce product model can carry enrichment for a while — but recognise the tipping point (multiple channels, multiple languages, attribute governance beyond a single team) at which extraction becomes far more expensive than adoption would have been. Making these systems behave as one coherent whole is [systems integration](/digital-development/systems-integration-services/) work, and it is where industrial catalogue programmes are won or lost. It is also well-trodden ground for us: for IMI Precision Engineering we built the [Digital Edge Platform](/project/imi-precision-engineering/), a cloud-based integration platform that flows information between IMI's deliberately best-of-breed systems to give staff a single, current view of the truth. The same principle — let each system do what it is best at, and invest in the connective tissue — is exactly how a PIM, an ERP and a commerce platform should coexist, and we have explored the commerce-specific patterns in our article on [connecting Elastic Path to your back office](/composable-commerce-and-erp-integration-connecting-elastic-path-to-your-back-office/). ## How Elastic Path Models Complex Catalogues Everything above is platform-independent, but the platform still has to carry it, and this is where [Elastic Path](/b2b-ecommerce/) has served our manufacturing clients well. Its product model supports parent products whose variation options generate child variants — the enumerated-variant regime — while custom fields extend products and variants with the typed engineering attributes parametric search depends on. Bundles model kits and composed offerings. Crucially, hierarchies and catalogues are decoupled from the product pool: the same products can be organised into multiple navigation structures and published as multiple catalogues for different regions, channels and customer segments, which is precisely the one-pool-many-catalogues shape described above. And because it is API-first, it composes cleanly with a dedicated search service for parametric filtering and with the integration pipelines that feed it from PIM and ERP — **Elastic Path product modelling** provides the sellable core rather than trying to be every system at once. That composability is not hypothetical. For [Norgren](/project/norgren-composable-ecommerce/), a brand of IMI Precision Engineering with a long-established global eCommerce presence, we replaced a bespoke, externally maintained web store with a composable store built on Elastic Path and other off-the-shelf cloud services for search, navigation and geo-location. The composable approach lowered the cost of ownership and removed single points of failure, lifted the Google Lighthouse score to 100% at launch, and — most relevantly here — freed development effort to focus on innovative features such as product configurators rather than on maintaining platform plumbing. For a business selling precision engineering components in volume across global markets, the catalogue model was not an implementation detail; it was the product. ## How McKenna Consultants Can Help McKenna Consultants has over 25 years of software engineering experience with manufacturers and industrial engineering businesses, and complex catalogue work sits at the centre of our B2B eCommerce practice. We built Norgren's global composable Elastic Path store and IMI Precision Engineering's Digital Edge integration platform, so we have worked both sides of the problem this article describes: the product model buyers experience, and the data flows that keep it true. If your catalogue has outgrown your platform — variants nobody can maintain, attributes too inconsistent to filter on, or a webstore that cannot represent what you actually sell — we can help you design the product model, the PIM/commerce split and the integrations to fix it properly. [Get in touch](/contact/) to discuss your catalogue. --- # Subscription and Recurring Revenue Commerce with Elastic Path: B2B Beyond One-Off Orders **Canonical URL:** https://www.mckennaconsultants.com/subscription-and-recurring-revenue-commerce-with-elastic-path-b2b-beyond-one-off-orders/ **Author:** Nick McKenna **Published:** 12 May 2026 **Category:** B2B eCommerce ## Subscription and Recurring Revenue Commerce with Elastic Path: B2B Beyond One-Off Orders For most of the last fifteen years, B2B commerce has been built around the purchase order. Buyer logs in, browses a catalogue, places an order, gets it shipped, gets invoiced. The transaction is the unit of value, and the underlying commerce platform is fundamentally an order capture engine. By 2026 this model is no longer sufficient. A growing share of B2B revenue comes from subscriptions, managed service plans, equipment-as-a-service arrangements, consumables auto-replenishment, and platform-level licensing — recurring revenue structures that the traditional B2B order model fits poorly. The shift is significant for two reasons. First, recurring revenue is more valuable to the seller — predictable cash flow, higher customer lifetime value, deeper buyer relationships, more compounding network effects. Second, the buyer increasingly expects it. B2B buyers who consume subscription software in their own organisations are unsurprised when their suppliers offer subscription-based propositions, and they will switch to suppliers that do. This article addresses **Elastic Path subscription commerce** — what it is, how it differs from one-off order handling, what the data model looks like, and how to integrate it with payment, dunning, customer self-service, and reporting. It is written for B2B commerce directors and product owners who are evaluating or actively building subscription propositions on Elastic Path. The article is deliberately practical. McKenna Consultants delivers composable commerce engagements on Elastic Path, and the patterns described here are the patterns we apply in production builds. ### Why B2B Subscription Commerce Is Different Subscription commerce in a B2C context is well-understood. A consumer subscribes to streaming, to meal kits, to a SaaS product, to a coffee club. The transaction shape is largely uniform: a fixed plan, a fixed price, predictable billing cycles, simple cancellation and renewal logic. B2B subscription commerce is meaningfully more complex. **Multi-product subscription.** A B2B subscription frequently bundles multiple products and services. A managed service plan might include hardware (rented or sold), software licences (per-seat or per-feature), professional services hours, and consumables (replenished monthly). Each line of the bundle has its own commercial dynamics. The platform must represent the bundle as a coherent commercial proposition while preserving the line-level economics. **Negotiated and contract pricing.** The price of a B2B subscription is rarely the catalogue price. Contract pricing applies — sometimes per customer, sometimes per business unit, sometimes per project. The platform must support contract-aware pricing across the subscription lifecycle, including renewals where the contract terms may evolve. **Approval and procurement integration.** B2B buyers operate inside procurement processes. A subscription is not generally bought by a single buyer at a self-service checkout; it is procured through a multi-step approval workflow that may involve purchase orders, contract review, and integration with external procurement systems (Coupa, SAP Ariba, Oracle Procurement Cloud). **Mid-cycle changes.** Real B2B subscriptions change in flight. A customer adds seats, removes seats, upgrades plans, downgrades plans, changes payment terms, adds new bundle components. The platform must handle these changes with correct proration, correct invoicing, and correct downstream entitlement updates. **Renewal complexity.** B2B renewals are not silent. They are negotiated. Pricing changes, terms change, scope changes. The platform must support renewal workflows that are visibly different from initial subscription creation — including surfacing renewal opportunities to account managers ahead of expiry rather than auto-renewing without negotiation. **Hybrid catalogues.** Most B2B sellers do not stop selling one-off products when they introduce subscriptions. The platform must support a single buyer experience that combines purchase orders for one-off products and subscription orders for recurring revenue lines, often within the same shopping session. These differences are why B2C subscription platforms — Recharge, Bold, the consumer-focused Stripe Billing tier — do not generally fit B2B requirements without substantial customisation. A composable B2B commerce platform is the natural home for B2B subscription commerce because composable architecture allows the subscription, billing, and entitlement components to be selected and integrated specifically for B2B requirements. ### What Elastic Path Brings to the Subscription Commerce Picture Elastic Path's composable commerce platform offers a few specific capabilities that make it well-suited to B2B subscription commerce. **Subscription offerings as a first-class catalogue concept.** Elastic Path represents subscriptions as offerings with associated plans and billing schedules, distinct from one-off products but living in the same catalogue. A buyer can browse a catalogue that contains both, add items of either type to a cart, and check out through a unified flow. The subscription offering data model supports the multi-product, contract-priced, approval-gated patterns B2B subscriptions require. **Pricing flexibility.** Elastic Path's price book and price modifier model supports contract pricing applied to subscription offerings, tiered pricing across volume thresholds, account-specific overrides, and time-bound promotional rates. The same flexibility applies to one-off and subscription products, which simplifies the operational model for catalogue managers. **API-first architecture.** Every subscription operation is available through the Elastic Path API: creating a subscription, modifying a subscription mid-cycle, terminating a subscription, querying entitlements. Composable architecture means your application is the orchestrator — you can integrate Elastic Path subscription state with your CRM, your finance system, your customer portal, and your fulfilment system through clean API contracts rather than through brittle middleware. **Account hierarchy support.** B2B subscriptions live within account hierarchies — buyers, sub-accounts, business units, parent companies. Elastic Path's account model supports these hierarchies natively, which is essential when a single subscription serves multiple sub-accounts or when consolidated billing crosses business units. **Composability with billing platforms.** Elastic Path does not implement payment processing or billing engine logic itself for subscriptions; it integrates with specialist billing platforms (Stripe Billing, Recurly, Chargebee, native subscription gateways for specific use cases) and with ERP-based billing engines (SAP, Oracle, Microsoft Dynamics). This separation of concerns is a strength — the billing platform is the system of record for monetary obligations, while Elastic Path is the system of record for catalogue, customer relationship, and entitlement state. ### The Data Model A working Elastic Path subscription commerce implementation has six core entities. **Subscription Offering.** The product-catalogue representation of "what is on offer." Offerings encapsulate the bundle composition, the plan options, the billing schedule, the eligibility rules, and the associated entitlements. Offerings are the equivalent of a subscription product in the catalogue. **Subscription Plan.** A specific commercial expression of an offering — a price point, a billing frequency, a contract length. Multiple plans typically exist per offering (monthly, annual; basic, professional, enterprise). Plans are the unit a buyer selects. **Subscription.** An active relationship between a customer and a plan. The subscription record holds the current plan state, the pricing, the billing schedule, the start and end dates, and the references to upstream and downstream systems (CRM contact, billing customer, fulfilment record). **Subscription Item.** A line within a subscription. For multi-product bundles, each component is a subscription item. Items can be modified independently — a customer adding ten seats to the user-licence component while leaving the consumables component unchanged. **Billing Schedule.** The recurring billing pattern for a subscription. Monthly, quarterly, annually, custom. The billing schedule drives invoice generation in the integrated billing platform. **Entitlement.** The downstream consequence of an active subscription. When a subscription is active, the customer is entitled to specific products, features, or services. The entitlement is consumed by your application — it is the answer to the question "what is this customer allowed to do today?" A clean implementation keeps these entities cleanly separated. The subscription is the commercial record. The entitlement is the operational record. The billing schedule produces the invoices. Conflating them produces brittle integrations and operational pain at scale. ### Payment Provider Integration Elastic Path subscription commerce delegates monetary processing to specialist payment and billing providers. The integration choice depends on the shape of your business. **Stripe Billing** is the most common choice for SaaS-style subscriptions and works cleanly with Elastic Path through the standard payment integration patterns. Stripe Billing handles invoice generation, payment retry logic, subscription state synchronisation, and dunning. Your Elastic Path implementation creates the customer, the subscription, and the plan in Stripe; Elastic Path holds the catalogue and entitlement state. **Recurly** is a strong choice when subscription complexity is high — multi-currency, multi-tax-jurisdiction, complex proration scenarios. Recurly's domain model is built for subscription-first businesses and integrates well with Elastic Path's offering model. **Chargebee** sits in similar territory to Recurly with broader procurement-system integration and is a strong choice for B2B subscription businesses with complex contract structures. **ERP billing engines** (SAP, Oracle, Microsoft Dynamics, NetSuite) are the right choice when subscription billing must align with enterprise financial systems for revenue recognition, audit, and consolidation. ERP integration is more involved but is the canonical posture for organisations with established financial system requirements. In an ERP-billed model, Elastic Path's role is unchanged — catalogue, customer, entitlement — and the ERP becomes the billing system of record. The integration pattern in all cases is the same: events flow between Elastic Path and the billing platform via webhooks and explicit API calls, and the business logic that resolves conflicts is implemented in your application's orchestration layer. Composable architecture pays its dividend here — you build the orchestration once and can change billing providers without rebuilding the catalogue. ### Proration, Mid-Cycle Changes, and the Operational Details The single biggest source of B2B subscription pain is mid-cycle change handling. The patterns that work in production: **Define the proration model explicitly.** Prorate-at-change versus prorate-at-renewal versus credit-on-next-invoice are all valid options, and each has different commercial implications. Choose deliberately for each subscription type and document the choice. Mixing models without clear rules produces invoicing surprises. **Treat downgrade and upgrade asymmetrically.** B2B customers typically expect upgrades to take effect immediately and to be billed pro-rata. Downgrades are conventionally deferred to the next renewal date — partly to avoid mid-cycle revenue dilution, partly to give the seller a window to negotiate a retention plan. The platform configuration should support both behaviours per offering. **Manage entitlements on the change boundary, not at the next billing event.** If a customer adds ten seats today, those seats should be entitled in your application today. The billing system catches up at the next invoice cycle; the entitlement system reflects the change immediately. Coupling entitlement state to billing state creates a class of bugs that are hard to diagnose later. **Provide clear customer-facing previews of mid-cycle changes.** Before applying an upgrade or seat-count change, show the customer the prorated charge, the next invoice impact, and the effective date. B2B buyers strongly prefer predictability over surprise, and a transparent change preview reduces support ticket volume measurably. ### Dunning, Recovery, and Churn Failed renewals are a fact of life. Card expiries, insufficient funds, declined transactions — they happen even in mature B2B accounts. The dunning sequence — the structured attempt to recover failed payments — is a standard feature of every billing platform and should be configured deliberately. The patterns that work: - **Three to five retry attempts** spread across the first ten days of the renewal cycle, with smart-retry logic that times retries based on payment provider success patterns. - **Active customer outreach** alongside automated retries. For B2B accounts, a failed renewal is often a procurement issue (the purchase order has expired, the budget has been re-categorised, the buyer has changed) rather than a payment issue. Direct contact with the account owner resolves these faster than retry logic ever will. - **Grace periods** before service interruption. B2B customers expect a window of continued service while billing issues are resolved; the typical pattern is seven to fourteen days post-renewal-failure before service is paused. - **Clear escalation to dispute resolution** if a customer disputes a renewal. Subscription terms must be clearly evidenced, and your platform should be able to produce the evidence chain on demand. The metrics to monitor: - **Voluntary churn rate** (customer-initiated cancellations). - **Involuntary churn rate** (failed renewals not recovered). - **Net revenue retention** — the most important single metric for B2B subscription health. - **Renewal-cycle support ticket volume** — a leading indicator of friction in the renewal process. ### Customer Self-Service B2B subscription customers expect self-service surfaces for the subscription operations they perform routinely. The minimum viable surface: - **Current subscription state** — what is active, when does it next bill, what does it cost. - **Seat or quantity management** — add and remove subscription quantities subject to plan-level rules. - **Invoicing history** — invoices generated, payments made, outstanding balances. - **Payment method management** — update card details, change payment terms. - **Plan change** — upgrade, downgrade, switch billing frequency (subject to commercial rules). - **Cancellation and pause** — initiate cancellation or pause with appropriate workflows. A well-designed B2B self-service portal handles the routine 80% of customer-initiated subscription operations without contact, freeing the account management team to focus on strategic conversations. Elastic Path's API surface supports all of these operations directly; the work is presenting them in a buyer-friendly interface that aligns with the rest of your buyer experience. ### Reporting and the Metrics That Matter Subscription commerce produces a different reporting surface than transactional commerce. The standard reporting set: - **MRR and ARR** — monthly and annual recurring revenue, broken down by plan, by segment, by region. - **Net revenue retention** — the rate at which existing customer revenue grows or contracts over a period, before new customer revenue. - **Gross revenue retention** — net revenue retention excluding upsell. - **Churn rate** — percentage of customers cancelling per period. - **CAC payback period** — how long it takes for a customer's accumulated revenue to recover their acquisition cost. - **LTV** — total expected revenue from a customer relationship. - **Cohort analysis** — how customers acquired in a specific period are performing over time. These metrics depend on subscription data being clean and consistent across systems. Elastic Path's role is to be the source of truth for subscription state — what plans exist, what subscriptions are active, what their current value is. Reporting tools (Looker, Tableau, Power BI, native data warehouse builds) consume this data, often via a data warehouse pipeline that joins subscription state with billing realisation and CRM relationship data. For organisations standing up subscription commerce for the first time, agreeing the reporting taxonomy at the start of the build is more valuable than any specific reporting tool choice. The taxonomy is what determines whether finance, customer success, and sales talk about the same thing when they say "MRR" or "churn." ### How McKenna Approaches Subscription Commerce Engagements McKenna Consultants delivers Elastic Path subscription commerce engagements as a packaged build with clear phases: **Discovery.** Subscription commerce architecture review, integration mapping (billing platform, CRM, ERP, fulfilment), data model design, reporting taxonomy definition. **Foundation.** Catalogue setup with subscription offerings, pricing model implementation, billing platform integration, basic subscription lifecycle (create, renew, cancel). **Mid-cycle and self-service.** Mid-cycle change handling with proration, customer self-service portal, dunning configuration. **Advanced.** Account hierarchy modelling for complex B2B accounts, ERP integration where relevant, reporting pipeline build. A typical end-to-end engagement is sixteen to twenty-four weeks. Smaller engagements — adding subscription commerce to an existing Elastic Path catalogue, or replacing a brittle subscription extension with a clean integration — are six to twelve weeks. McKenna is a UK-based Elastic Path consultancy with deep B2B commerce experience across industries — manufacturing, distribution, professional services, industrial technology. If your organisation is building or evaluating subscription commerce on Elastic Path, [contact us](https://www.mckennaconsultants.com/contact/) to discuss your situation. --- # The End of Email Attachments: Fixing the Client Document Exchange Workflow in Audit **Canonical URL:** https://www.mckennaconsultants.com/the-end-of-email-attachments-fixing-the-client-document-exchange-workflow-in-audit/ **Author:** Nick McKenna **Published:** 10 May 2026 **Category:** SharePoint Embedded # The End of Email Attachments: Fixing the Client Document Exchange Workflow in Audit Every audit begins the same way: with a list. The "prepared by client" schedule — the PBC list — goes out to the client, itemising the trial balances, reconciliations, contracts, board minutes and supporting schedules the engagement team needs. And then, at almost every firm, a curious thing happens. The engagement that will be planned in specialist software, executed against a rigorous methodology, and reviewed through formal quality gates conducts its single most important information flow through the same tool used to circulate the office bake sale rota: email. Everyone involved knows it is wrong. The partners know, because they sign engagement letters promising confidentiality and then watch draft financial statements travel as attachments. The seniors know, because they spend fieldwork evenings hunting through inboxes for the latest version of a schedule that exists in four. The clients know, because they are asked for the same file twice by two different team members. **Audit client collaboration** is the workflow where audits leak the most time and carry the most avoidable risk, and it has stayed broken not because firms are careless but because, until recently, fixing it properly meant building document infrastructure nobody had. This article is about what the fix looks like now — and why **secure document exchange for audit** has become a buildable feature rather than an aspiration, for firms in the [audit and compliance sector](/sectors/audit-and-compliance/) and for the platform vendors who serve them. ## The Life of an Evidence Request, As It Stands Trace one line of a PBC list through a typical engagement and the problem explains itself. The request goes out in a spreadsheet attached to an email. The client's finance manager saves it, works through it over two weeks, and returns files in batches — some attached to replies, some to fresh emails with new subject lines, one through a personal file-sharing link because it was too big for the mail server. A junior saves the attachments to the engagement file, renaming them according to a convention that exists mostly in their head. Then the debtors reconciliation turns out to have an error; the client sends a corrected version; the correction lands in a thread only the senior is on. Three weeks later, a manager reviews testing performed against the superseded version. Nobody did anything unusual. Nobody broke a rule that was written down anywhere. The workflow itself produced the failure. Multiply that by the eighty or two hundred lines of a real request list, then by every concurrent engagement in the office, and the aggregate is startling. PBC evidence collection is not a peripheral administrative chore; it is the supply chain of the entire audit, and it is being run through a tool with no inventory, no tracking and no controls. ## What the Inbox Actually Costs It is worth separating the damage into its four distinct strands, because they land on different desks. **Version sprawl** lands on the engagement team. When evidence arrives as attachments, every copy is a fork. The question "is this the final version?" has no authoritative answer, only a social one — ask the client, ask the senior, compare file dates and hope. Time spent reconciling versions is pure waste, and testing performed against a superseded document is worse than waste. **A missing chain of custody** lands on the firm when something is challenged. An inbox can prove that a file was sent; it cannot reliably prove which version the conclusion was drawn from, who altered a schedule between sending and filing, or when a correction actually arrived. In a fee dispute or a regulatory inspection, "we believe this was the version" is a sentence no partner wants to say. **Deadline chasing** lands on everyone. Without a live view of what has been requested, received, and accepted, chasing is manual: seniors maintaining a tracking spreadsheet alongside the actual work, status meetings that consist of reading that spreadsheet aloud, clients receiving duplicate requests because two team members each own half a picture. Fieldwork weeks are lost not to auditing but to logistics. **Breach exposure** lands on the firm's risk register, and it is the strand that should worry leadership most. Financial statements, payroll data and board minutes travelling as email attachments are one mistyped address away from a reportable incident, and copies accumulate in personal inboxes and download folders on both sides — outside retention policy, outside access control, and effectively unfindable when a deletion obligation arrives. The confidentiality promised in the engagement letter is being undermined by the mechanism used to perform the engagement. ## What Good Looks Like None of this requires imagination to fix; the target workflow is easy to state. The request list stops being a spreadsheet and becomes the system of record: every requested item is a tracked object with an owner on each side, a due date and a status. Each request is tied to a governed document workspace, so when the client's finance manager responds, the file lands *in the engagement's container* — not in an inbox — already associated with the request it satisfies. From that moment there is **one copy**. If the client corrects the reconciliation, they update the same document; versioning is automatic, every version is attributed to a named person with a timestamp, and the superseded state is preserved rather than orphaned in a thread. The audit team works on the same copy the client can see. The entire category of "which version?" questions disappears, not through discipline but through architecture. Around that single copy sits the governance the inbox never had: access limited to the engagement team and the client's named participants, retention applied from the day the file arrives rather than retrofitted at archiving, and a record of who supplied and who accessed each piece of evidence. Status is visible to both sides — the client sees what is outstanding without waiting for a chasing email; the manager sees at a glance that thirty-one items of forty are in, six are overdue, and three await review. Context arrives with the content, too. Because each file lands against a specific request, it carries its meaning with it: which item on the list it satisfies, which entity and period it relates to, who supplied it and who accepted it. The junior's private filing convention — the fragile thread that used to connect an attachment to its purpose — is replaced by structure that survives the junior moving to another engagement. And critically, good must be *effortless for the client*. The finance manager is doing this in the margins of a day job. If the portal demands new software, IT approval on the client side, or training, they will fall back to email within a week — and the firm's carefully designed workflow will die politely of non-adoption. A browser, familiar Office documents, and access through the identity they already have: that is the adoption bar. ## The Shape of a Build on SharePoint Embedded What has changed recently is that this workflow no longer requires building document infrastructure from the ground up. SharePoint Embedded gives an application its own governed document containers inside Microsoft 365 — we have written an introduction to [what SharePoint Embedded is](/what-is-sharepoint-embedded-microsoft-s-modern-path-for-embedding-365-document-editing/) — and its container model happens to fit the audit engagement almost exactly. Whether you are a firm commissioning a portal or a vendor adding this to an audit platform, a build using [SharePoint Embedded for audit software](/sharepoint-embedded/) takes a recognisable shape. **A container per engagement.** The engagement is the natural boundary: its own container holds every requested item, working copy and supporting file, isolated from every other engagement and every other client. That isolation is structural rather than procedural — a misconfigured permission on one engagement cannot expose another — and it makes end-of-engagement archiving a clean, whole-container operation instead of a filing exercise. **A deliberate client access model.** The client's participants are external users, and their access is scoped: named individuals, invited to their engagement's container and nothing else, contributing documents and updating their own submissions without seeing the audit team's internal working area. Designing this boundary — what the client sees, what they can change, and when their access ends — is the most sensitive design decision in the build, and it deserves more care than any screen. **Requests as first-class data.** The PBC list lives in the application as structured data — items, owners, due dates, states — with each item linked to the documents that satisfy it. This is what turns a document store into a workflow: the container holds the evidence, the request list gives it meaning, and the link between them is what managers, clients and eventually reviewers actually navigate. **Notifications and status doing the chasing.** With requests as data, the chasing that consumes senior time becomes machinery: reminders as due dates approach, escalation when items go overdue, a dashboard replacing the status meeting. The aim is not to nag harder than a human; it is that the state of the engagement is always visible without anyone compiling it. **A defined close.** When the engagement ends, client access is withdrawn, the container is frozen under the firm's retention policy, and the evidence file — complete with its versions and attribution — becomes the archived record. The end of the engagement is a state transition, not a scramble. For engineering teams, the implementation mechanics — container types, permission grants, Microsoft Graph — are covered in the [technical walkthrough](/building-your-first-sharepoint-embedded-application-container-types-permissions-and-microsoft-graph/) we published last week; this piece is deliberately about the workflow rather than the API surface. A word on rollout, because workflow change in an audit firm succeeds or fails on adoption rather than architecture. The builds that stick start deliberately small: one office, one or two engagement teams, and clients chosen because the relationship can absorb a change of habit. That pilot does two jobs — it shakes out the client-side friction that no internal testing finds, and it produces the internal advocates who will carry the workflow to the rest of the practice far more effectively than a mandate from the executive. Scaling firm-wide is a decision to take after the pilot has proved the client experience, not before. We would also note, from experience, that the hard-won lessons here are about inter-organisational data flow rather than documents per se. When we built the Orak integration hub for [Workplace Pensions Direct](/project/workplace-pensions-direct/) — a system accepting sensitive pension data from many payroll systems in many formats and delivering it securely to many providers — the problem was the same shape: multiple organisations, disparate systems, sensitive data, and an ad hoc exchange process whose replacement had to be more secure *and* faster for every party, or it would not be used. Evidence exchange between an audit firm and its clients is that problem wearing different clothes. ## Counting the Return The business case assembles itself from the costs already described, but it is worth stating in the language of a partners' meeting. Recovered chargeable time is the headline. Hours currently spent reconciling versions, hunting attachments, maintaining tracking spreadsheets and chasing by email are hours of senior and manager time — the most constrained resource in the firm — returned to actual audit work or to margin. Even a conservative estimate of that overhead, multiplied across an office's engagement portfolio, tends to dwarf the cost of the fix. Risk reduction is the quieter half. Every evidence file that never travels as an attachment is breach exposure removed; retention applied from day one turns deletion obligations from an archaeology project into a policy; and a complete, attributed record of what was received and when is the difference between asserting your position in a dispute and demonstrating it. The case is also unusually measurable, which helps it survive a partners' meeting. Before building anything, baseline the current state on a handful of live engagements: count the evidence-related emails, the versions per key schedule, the days between request and acceptance, and the hours the senior's tracking spreadsheet consumes. Those numbers give the project a target, and re-measuring the same things on the pilot engagements gives it a verdict — a far stronger position than justifying the investment on assertion. And there is a commercial edge that firms consistently underrate: the client experience. The finance director who spends March in three different auditors' inboxes notices the firm whose process was a clear list, one place, and no duplicate requests. For platform vendors the same logic applies at product level — evidence workflow is now a differentiator that procurement teams score, not a nice-to-have. ## How McKenna Consultants Can Help McKenna Consultants brings the two halves this problem actually requires: more than 25 years of building secure software for regulated data — including inter-organisational exchange systems like Orak, and a development partnership with share scheme administrators [Howells Associates](/project/howells/) that has run since 2010 — and current, hands-on SharePoint Embedded engineering. We understand both why the inbox audit persists and precisely what it takes to replace it with something clients will actually use. If your firm is ready to retire the attachment-driven PBC process, or your platform needs an evidence exchange capability your competitors cannot match, [get in touch](/contact/). We are happy to start with the workflow, not the technology — that is where the value is decided. --- # Building Your First SharePoint Embedded Application: Container Types, Permissions, and Microsoft Graph **Canonical URL:** https://www.mckennaconsultants.com/building-your-first-sharepoint-embedded-application-container-types-permissions-and-microsoft-graph/ **Author:** Nick McKenna **Published:** 5 May 2026 **Category:** SharePoint Embedded ## Building Your First SharePoint Embedded Application: Container Types, Permissions, and Microsoft Graph The previous two articles in our Q2 2026 SharePoint Embedded series have explained what SharePoint Embedded is and when to choose it over WOPI. This article moves from architecture to implementation. It is a hands-on **SharePoint Embedded implementation guide** that takes a developer from a clean slate to a working application that creates containers, manages files, and launches Office editing — through Microsoft Graph, with the correct SharePoint Embedded container types and Microsoft Graph permissions in place. This is a dense, technical article. It is intended for developers who have read the foundational explainer and are now scoping or building the first SharePoint Embedded integration in their organisation. We assume comfort with Microsoft Entra ID app registrations, OAuth 2.0, and Microsoft Graph at a general level. We do not assume any prior SharePoint Embedded experience. ### The Architectural Picture in One Diagram A working SharePoint Embedded application has four moving parts: ``` ┌─────────────────────────┐ │ Your Application │ │ - SPA / web frontend │ │ - Backend service │ │ - Optional Office.js │ │ add-in surface │ └──────────┬──────────────┘ │ Microsoft Graph (delegated + app permissions) ▼ ┌─────────────────────────────────────────────────────────────┐ │ Microsoft Entra ID │ │ - Your Application Registration (multi-tenant) │ │ - Per-customer admin consent │ └──────────┬──────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ SharePoint Embedded Container Type (registered to your app) │ │ - Defines per-container permissions model │ │ - Authorised by each consuming tenant once │ └──────────┬──────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Containers (instantiated per workspace / customer / project)│ │ - Files, coauthoring, sensitivity labels, Copilot, Purview │ └─────────────────────────────────────────────────────────────┘ ``` Each layer has a small, well-defined set of responsibilities. The order of implementation matters — you cannot create a container without a container type, and you cannot register a container type without an Entra ID application — so this article walks through the layers in the order you will build them. ### Prerequisites Before starting, you need: - **A Microsoft 365 tenant** that you control. This is the *application* tenant under which you will register the container type and from which you will own the SharePoint Embedded billing relationship. For ISVs this is your corporate Microsoft 365 tenant; for internal-use enterprise applications it is your organisation's tenant. - **An Azure subscription** linked to that tenant. SharePoint Embedded billing flows through Azure consumption. - **PowerShell with the SharePoint Embedded module installed.** Container type registration is currently performed via PowerShell (`PnP.PowerShell` and the SharePoint Embedded administration module). The Microsoft Graph API for container type management is gradually expanding, but PowerShell remains the canonical first-step path. - **A development tenant for testing.** You should *not* test container creation against your production application tenant. Maintain a separate consuming tenant for end-to-end testing — at minimum a Microsoft 365 developer programme tenant. Once these are in place, the steps below take a typical implementation team a working week to a working fortnight, depending on the complexity of the consuming application. ### Step 1: Register the Application in Microsoft Entra ID Begin in the Entra ID admin centre or via the Microsoft Graph admin API. Create a new application registration with the following properties: - **Multi-tenant audience.** Even if you initially deploy in a single tenant, register the application as multi-tenant from the start — adding multi-tenancy later is more disruptive than including it from the beginning. - **Redirect URIs** for your single-page application or web app, configured for the appropriate platform (SPA for an MSAL.js client, Web for a confidential client). - **API permissions** including the Microsoft Graph permissions that SharePoint Embedded uses: `FileStorageContainer.Selected` (delegated and application), and any Files.* permissions your application requires. The `Selected` permissions are critical — these are the permissions that allow your application to act on containers of types you have registered, without granting broad access across the consuming tenant. A few important details: **Application secrets and certificates.** For the backend service component of your application, configure a client certificate rather than a client secret where possible. SharePoint Embedded operations frequently use the application identity (rather than a delegated user identity), and certificate-based authentication is the recommended posture for production. **Token configuration.** Configure the optional claims to include the `tid` (tenant ID) claim in tokens. Your application will frequently need to act on a per-tenant basis, and having the tenant identity surfaced explicitly in tokens simplifies routing logic. **Branding.** Set the application's name, logo, publisher domain, and (where available) verified publisher status. Consuming tenants will see this branding during the consent flow, and a verified publisher badge materially improves the consent experience for enterprise administrators. ### Step 2: Register a Container Type A container type is the descriptor that links your Entra ID application to a class of containers. It is registered once per application, in your application tenant, using PowerShell. The PowerShell flow is approximately: ```powershell Connect-SPOService -Url https://your-tenant-admin.sharepoint.com New-SPOContainerType ` -ContainerTypeName "AcmeProductWorkspaces" ` -OwningApplicationId "" ` -ApplicationRedirectUrl "https://your-app.example.com/auth/callback" ` -BillingClassification Standard # Capture the container type ID returned by the registration ``` The output of this registration is a container type ID — a GUID that uniquely identifies the container type within Microsoft. **Save this ID securely.** It is referenced from every subsequent operation that creates or manipulates containers. A few important properties of the container type: **The container type is owned by your application registration.** Only your application can create containers of this type. This is the core isolation property that makes SharePoint Embedded a viable model for ISVs — your container type is yours, not exposed to other applications. **The billing classification is set at registration time.** Standard billing flows through the application tenant's Azure subscription. Trial classifications are available for evaluation work but cannot be promoted to production without a re-registration; choose intentionally. **The application redirect URL** is consulted during the consuming-tenant authorisation flow. It must be a publicly resolvable URL. ### Step 3: Authorise the Container Type in a Consuming Tenant Once the container type is registered, each consuming customer organisation must authorise it. This is a one-time consent flow performed by an Entra ID administrator in the consuming tenant. The flow has two distinct parts. **Part one: standard Entra ID admin consent.** A tenant administrator in the consuming organisation grants consent to your multi-tenant application registration in their tenant. This is the same consent flow that any multi-tenant Entra ID application uses. **Part two: container type authorisation.** This is specific to SharePoint Embedded. After the standard admin consent, the tenant administrator must execute a container-type-specific authorisation that grants your application permission to create containers of *that container type* in *that consuming tenant*. This is performed via PowerShell or via a programmatic admin API: ```powershell Connect-SPOService -Url https://consuming-tenant-admin.sharepoint.com Register-SPOContainerType ` -ContainerTypeId "" ` -OwningApplicationId "" ``` The container type registration in the consuming tenant must complete before your application can create containers there. The two-part flow exists because SharePoint Embedded deliberately requires explicit consuming-tenant agreement to host containers — it is not implied by the standard Entra ID consent. For ISVs deploying at scale, the container type authorisation is one of the steps that benefits most from a polished onboarding experience. Microsoft offers the Microsoft 365 Container Types administration UI and programmatic interfaces; build your customer onboarding around these so a consuming tenant administrator can authorise your application end-to-end without leaving your product. ### Step 4: Create a Container With the container type registered and authorised in the consuming tenant, your application can now create containers. The Graph API endpoint is: ``` POST https://graph.microsoft.com/v1.0/storage/fileStorage/containers ``` Body: ```json { "displayName": "Acme Project — Northgate Manufacturing", "description": "Project workspace for Northgate engagement", "containerTypeId": "" } ``` The response includes the container's ID, its drive ID (for Graph drive operations), and its initial state. You can then operate on the container as you would any other Graph drive — listing items, uploading files, creating folders, and so on: ``` GET https://graph.microsoft.com/v1.0/drives/{driveId}/items/{itemId} PUT https://graph.microsoft.com/v1.0/drives/{driveId}/items/{itemId}/content POST https://graph.microsoft.com/v1.0/drives/{driveId}/items/{itemId}/children DELETE https://graph.microsoft.com/v1.0/drives/{driveId}/items/{itemId} ``` For most ISVs, container creation is triggered by application events: a customer creates a new project, a new workspace, a new contract folder. The application backend creates the container, stores the container ID in the application database alongside the corresponding business object, and from that point on the container is just another resource the application manages. ### Step 5: Manage Container Permissions SharePoint Embedded container permissions are managed through a dedicated permissions API. The model uses container-level permissions that are granted to identities — typically users, but also groups and service principals — with specific roles. ``` POST https://graph.microsoft.com/v1.0/storage/fileStorage/containers/{containerId}/permissions ``` Body: ```json { "roles": ["writer"], "grantedToV2": { "user": { "userPrincipalName": "alice@northgate.example.com" } } } ``` The supported roles are `reader`, `writer`, `manager`, and `owner`. The model is intentionally narrower than full SharePoint permissions — SharePoint Embedded is designed for the ISV model, not the organisational document library model, and the permission surface reflects that. A few critical points: **Permissions are managed by your application, not by the consuming tenant administrator.** Your application is responsible for keeping container permissions consistent with its own business model. A user who is added as a project member in your application should be granted writer permission on the corresponding container; a user who leaves the project should have the permission removed. **Permissions are user-identified, not application-identified.** The user is granted permission on the container, and Office editing operations performed by that user enforce the granted permission. This is the property that makes SharePoint Embedded coauthoring work cleanly — Office sees the user's permission state directly. **Sensitivity labels and Microsoft Purview integration apply automatically.** If the consuming tenant has configured sensitivity labels and your container falls within their scope, the labels are enforced without your application doing anything specifically. This is one of the largest practical benefits of SharePoint Embedded over a custom WOPI host: information protection just works. ### Step 6: Launch Office Editing The final step in the basic flow is launching Office editing for a document inside a container. SharePoint Embedded uses Office for the web hosted by Microsoft, with the document loaded directly from the container. Your application's role is to construct the correct URL and present it to the user. The simplest pattern is to use the Graph drive item's `webUrl` property: ``` GET https://graph.microsoft.com/v1.0/drives/{driveId}/items/{itemId} ``` The response includes a `webUrl` that, when opened in a browser, launches Office for the web with the document loaded. For a more polished experience, your application can construct the URL programmatically with explicit edit-vs-view mode parameters and an embedded experience hint: ``` https://{tenantHost}/_layouts/15/Doc.aspx?sourcedoc={fileId}&action=edit&Embed=1 ``` The exact URL conventions evolve; consult the current Microsoft Graph documentation for SharePoint Embedded URL construction. The important architectural point is that **your application does not implement the document editing surface itself**. Office for the web does. Your application launches it; Microsoft handles the rest. For applications that want the editing experience embedded in their own UI rather than a separate tab, the recommended approach is an `iframe` with the constructed URL, scoped appropriately for your application's content security policy. SharePoint Embedded's editing surface supports iframe embedding without the additional configuration required for some other Microsoft 365 surfaces. ### Step 7: Wire Up Change Notifications Production applications need to react to changes in container state — files added, edited, deleted; permissions changed; coauthoring sessions completing. SharePoint Embedded supports change notifications via Microsoft Graph subscriptions: ``` POST https://graph.microsoft.com/v1.0/subscriptions ``` Body: ```json { "changeType": "updated", "notificationUrl": "https://your-app.example.com/webhooks/graph", "resource": "/drives/{driveId}/root", "expirationDateTime": "2026-05-15T18:00:00Z", "clientState": "secretClientStateValue" } ``` Subscription expiration management is the operational discipline that catches most teams out: subscriptions must be renewed before they expire, the renewal endpoint requires the same authentication context that created the subscription, and missed renewals result in silent loss of notifications. Build the renewal cycle into your application's scheduled jobs from the start — this is not an afterthought. For per-container subscriptions at scale, consider the volume implications. A naïve implementation might create one subscription per container per change type, which scales poorly. Microsoft Graph supports drive-level and tenant-level subscriptions that aggregate change events; use these where the granularity fits your application. ### Step 8: Stand Up Local Development Local development against SharePoint Embedded requires a few specific arrangements: - **A development tenant** as outlined in the prerequisites. - **A separate Entra ID application registration** for development, with redirect URIs pointing to your local development environment (`http://localhost:3000/...` for typical SPA development). - **A separate container type** registered in the development tenant, distinct from the production container type. Do not mix development and production container types — the consuming tenant authorisations are separate, and conflating them will produce confusing failure modes. - **Tunnel configuration** if you need Microsoft Graph webhook subscriptions to deliver to your local environment. ngrok or equivalent tunnelling tools work cleanly with the Graph subscription model. Once configured, the development inner loop is straightforward: change code, hit your local server, run Graph operations against the development container type, observe results in the development tenant. ### Step 9: Plan for Production Deployment Production deployment introduces a few additional considerations. **Certificate-based authentication for the backend.** Replace any client secrets used during development with X.509 certificates managed through Azure Key Vault. This is standard practice for any Graph-integrated production service and is non-negotiable for SharePoint Embedded production deployments. **Throttling and retry handling.** Microsoft Graph throttles aggressive callers. Your application must implement retry-after handling correctly, with exponential backoff on transient failures and surfacing of permanent failures to your application logic. The Microsoft Graph SDKs include throttling-aware HTTP clients; use them rather than implementing your own. **Per-tenant rate planning.** Operations against a specific consuming tenant share a tenant-level rate budget. High-volume applications should distribute work across consuming tenants and avoid bursty patterns. **Telemetry and observability.** Instrument your Graph calls with the request IDs and `client-request-id` headers that Microsoft Graph supports. When a Graph operation fails in production, having the request ID makes the difference between a tractable Microsoft support case and a frustrating dead end. **Cost monitoring.** Set up Azure Cost Management views for your SharePoint Embedded consumption (storage, transactions, bandwidth). Alert on unexpected ramp. The consumption model is predictable but not free, and a runaway integration bug can produce a surprising invoice. ### Step 10: Compliance Integration Once the basic flow is working, the final step is wiring up the compliance and information protection capabilities that SharePoint Embedded gives you for free. **Sensitivity labels.** Configure your container types so that consuming tenant sensitivity labels apply to documents within containers. The default behaviour for most container types is to respect tenant labels; verify this against your tenant's information protection policy. **Retention.** SharePoint Embedded containers participate in Microsoft Purview retention policies if configured. Documents in containers can be subject to retention holds, expiration, and disposition reviews exactly as documents in SharePoint or OneDrive. **Microsoft Purview integration.** For consuming tenants that use Microsoft Purview, containers are visible to the relevant Purview surfaces (Data Lifecycle Management, Records Management, Insider Risk Management). This is the property that makes SharePoint Embedded acceptable in regulated environments — the compliance posture inherits from the consuming tenant rather than requiring your application to reimplement it. **Audit logs.** Container operations are recorded in the consuming tenant's unified audit log. For organisations subject to audit obligations, this is exactly the surface their auditors expect to see. ### Common Implementation Mistakes We have observed a few patterns repeatedly across SharePoint Embedded implementations. **Treating the container type as an afterthought.** The container type is the central design artefact in your SharePoint Embedded integration. Decisions baked into the container type — the permissions model, the billing classification — are difficult to change later. Spend disproportionate design time on the container type before writing the first line of code. **Skipping the consuming-tenant authorisation step in development.** Developers who skip the consuming-tenant authorisation in their development tenant produce code that "works" against simplified test rigs and fails immediately in real consuming tenants. Always test against a fully authorised tenant. **Treating Graph permissions as global rather than `Selected`.** Container type-scoped (`Selected`) permissions are the right model for SharePoint Embedded. Requesting broad `Files.ReadWrite.All` is unnecessary, alarms enterprise consent reviews, and is harder to defend during admin consent flows. **Underinvesting in the consuming-tenant onboarding flow.** The consuming-tenant authorisation is, for most consuming customers, their first impression of your application's professionalism. A clunky PowerShell-script-based onboarding leaves a different impression than a polished in-app flow that walks the administrator through consent and authorisation in five minutes. ### Where to Go From Here This article gives you a working SharePoint Embedded application. From here, the next areas of investment for most product teams are: - **Multi-region container placement** for international users. - **Custom Office add-ins** loaded into the embedded editing experience for product-specific functionality. - **Copilot integration** to surface AI capabilities over container content. - **Migration from a custom WOPI host** if you have one — covered in our forthcoming article. McKenna Consultants has been delivering Microsoft document integration solutions for two decades. We are now building SharePoint Embedded applications for ISVs and enterprise customers across the UK, drawing on our deep WOPI experience and our extensive Microsoft Graph practice. If your team is starting a SharePoint Embedded build and would like an experienced partner — or an architectural review of work already in flight — [contact us](https://www.mckennaconsultants.com/contact/) to discuss the engagement. --- # The AI Maturity Pyramid: Where Does Your Organisation Actually Stand? **Canonical URL:** https://www.mckennaconsultants.com/the-ai-maturity-pyramid-where-does-your-organisation-actually-stand/ **Author:** Nick McKenna **Published:** 3 May 2026 **Category:** Artificial Intelligence ## The AI Maturity Pyramid: Where Does Your Organisation Actually Stand? Every organisation is "doing AI" now. The question is whether they are doing it deliberately. In conversations with CTOs, operations directors, and business owners across the UK, one pattern emerges repeatedly: there is no shortage of AI activity, but there is a widespread shortage of AI strategy. Teams are using ChatGPT. Someone has signed up for a transcription tool. A developer is experimenting with a coding assistant. The CEO read an article about autonomous agents and wants to know why the company does not have one yet. The activity is real. The progress is often illusory. Adoption without strategy is just tool collecting. This is why we developed the AI Maturity Pyramid — a practical framework for assessing where your organisation currently sits in its AI journey, and more importantly, for understanding what it actually takes to move to the next level. It is not a theoretical model. It is built from what we see working and failing in real businesses, including our own. ![The AI Maturity Pyramid — five levels of AI adoption from ad-hoc experimentation to autonomous agents](https://necessary-kindness-935ed31657.media.strapiapp.com/ai_maturity_pyramid_full_af056e1717.webp) ### The Five Levels of AI Maturity The pyramid has five levels, from Level 0 (no structured AI use) to Level 4 (autonomous agents). Each level represents a genuine step change in how AI is integrated into your operations — not just what tools you are using, but how much autonomy you are granting to AI systems and how deeply they are embedded in your workflows. As you move up the pyramid, three things increase in parallel: the autonomy granted to AI, the trust required in AI systems, and the depth of integration with your existing processes and data. #### Level 0: Ad-hoc / No AI At Level 0, there is no organisational AI adoption. Individual employees might use ChatGPT for personal tasks — rewriting an email, generating a summary, asking a question they would otherwise search for — but there is no shared approach, no policy, and no alignment between AI use and business objectives. The defining characteristic is not the absence of AI tools. It is the absence of intent. People are experimenting in isolation. The organisation has no view of what is being used, how it is being used, or whether the outputs are reliable. Most organisations passed through Level 0 in 2023 and 2024. Some are still there. The risk at this level is not that people are using AI — it is that they are using it without governance, sending confidential data to consumer tools, and making decisions based on outputs that nobody is verifying. **Signs you are at Level 0:** No AI policy exists. Nobody knows which AI tools employees are using. The phrase "we should look into AI" appears in meeting notes. #### Level 1: Conversational AI Level 1 is where most organisations sit today. AI is being used, and the organisation knows about it. ChatGPT, Claude, Gemini, or Copilot are available — possibly through a corporate licence — and teams are using them for Q&A, content generation, brainstorming, research, and summarisation. The critical distinction at Level 1 is that the human drives every interaction. You open a chat interface, type a prompt, receive a response, and decide what to do with it. The AI is a tool you pick up and put down. It has no persistent role in any workflow. It does not connect to your systems. It does not act on your behalf. Level 1 delivers genuine value. Teams write faster. Research takes less time. First drafts happen in minutes rather than hours. But the value is bounded by the fact that every interaction requires a human to initiate it, evaluate the output, and manually transfer the result into whatever system or process it belongs to. **Signs you are at Level 1:** Teams have access to one or more chat-based AI tools. Usage is encouraged but unstructured. AI outputs are copy-pasted into documents, emails, and systems manually. #### Level 2: Specialised AI Tools Level 2 is where AI stops being a chat interface and starts being embedded in specific workflows. Rather than a general-purpose assistant that can attempt anything, you are using purpose-built AI tools that operate within defined boundaries and connect directly to the systems where work happens. The shift from Level 1 to Level 2 is significant. These tools are not general-purpose — they are designed for a specific job, trained or configured for a specific context, and integrated into a specific workflow. They operate with guardrails. They produce outputs that feed directly into downstream processes without manual copy-paste. At McKenna Consultants, Level 2 is where we operate day-to-day for software development. We use [Claude Code](https://claude.ai) as an AI-assisted development tool — not as a chat window where we ask coding questions, but as an integrated development environment tool that reads our codebase, understands our patterns, writes and modifies code within our projects, and runs our test suites. It operates within the boundaries of our development workflow: it can read files, write code, execute builds, and run tests, but a developer reviews and approves every change. Other examples at Level 2 include AI-powered virtual receptionists that handle inbound calls using natural language understanding and route enquiries based on intent, AI transcription services that attend meetings and produce structured notes and action items, and domain-specific copilots in tools like Excel, PowerPoint, or design software that understand the context of your work. The common thread is specificity. Level 2 tools are not trying to do everything. They are doing one thing well, within clearly defined boundaries. **Signs you are at Level 2:** AI tools are embedded in specific workflows, not just used for general chat. Tools connect to your systems or operate within your working environment. Outputs feed into processes without manual transfer. #### Level 3: Human-in-the-Loop Automation Level 3 is where the relationship between human and AI inverts. At Levels 1 and 2, the human initiates every interaction — you ask the AI to do something, it does it, you use the result. At Level 3, the AI initiates the work. It monitors, analyses, and acts, then pauses at defined decision points for human review and approval. This is agentic AI with guardrails. The system handles workflows end-to-end but recognises that certain decisions — deploying a code change, sending a communication to a client, escalating an issue to a different team — require human judgement. We built this at McKenna Consultants with our internal system called MASS — McKenna Agentic Systems Software. MASS monitors our Azure infrastructure continuously. When it detects an error or anomaly, it does not just raise an alert. It investigates. It finds the relevant error logs, locates the related source code in our repositories, analyses the root cause, and generates a suggested fix — which might be a code change, a configuration adjustment, or an infrastructure modification. It then sends the complete analysis and recommendation to our engineering team via Slack, where a developer reviews the suggestion and decides whether to implement it. The key insight at Level 3 is that the AI is doing the investigative and analytical work that would otherwise consume a developer's time — trawling through logs, correlating events, reading code, formulating a hypothesis — but the human retains authority over the decision. MASS does not deploy fixes. It proposes them. The human-in-the-loop is not a bottleneck; it is a deliberate architectural choice that builds trust while delivering genuine productivity gains. Other Level 3 examples include AI systems that draft email replies for sales teams, presenting the proposed response for human review before sending; document processing workflows where AI extracts data, populates forms, and flags exceptions for human verification; and code review assistants that analyse pull requests, identify potential issues, and suggest improvements for the developer to accept or reject. **Signs you are at Level 3:** AI systems run continuously without being prompted. Workflows include defined approval or review points. The AI does the analysis and preparation; humans make the final decisions. You have invested in integrations that connect AI to your operational systems. #### Level 4: Autonomous Agents Level 4 is where AI systems act independently. They monitor, decide, and execute without waiting for human approval. The human role shifts from reviewer to supervisor — setting objectives, defining boundaries, and intervening only when the system encounters something outside its operational envelope. This is where MASS and similar systems are heading. Today, MASS proposes fixes for human review. The trajectory is towards auto-triaging certain categories of issues — known error patterns with established fixes — and applying them automatically, notifying the team after the fact rather than before. Self-healing infrastructure, where systems detect degradation and remediate it without human intervention, is a Level 4 capability that is becoming practical for well-defined operational scenarios. Other Level 4 applications include autonomous email triage systems that categorise, prioritise, and route inbound communications — and respond to routine enquiries — without human involvement; market and competitor monitoring agents that track trends, identify opportunities, and update dashboards or trigger alerts based on significance thresholds; and automated quality assurance pipelines that test, validate, and deploy code changes that meet predefined criteria. Level 4 is not science fiction in 2026 — specific, well-bounded autonomous agent deployments are already in production. But it demands the highest levels of trust, the most robust governance frameworks, and the most thorough testing regimes. Granting an AI system the authority to act without human approval is an organisational decision as much as a technical one. **Signs you are at Level 4:** AI systems take actions without waiting for approval. You have defined operational boundaries and exception-handling procedures. Monitoring and audit trails provide full visibility into agent decisions. The organisation has explicitly decided which decisions AI can make autonomously. ### The Foundation Layer: What Sits Beneath the Pyramid The pyramid does not float. Every level above Level 0 depends on a foundation layer comprising four pillars. Neglecting these pillars is the single most common reason organisations stall in their AI maturity journey. **Data and Integration.** Levels 2 through 4 require AI systems to connect to your operational data and systems. APIs, connectors, access permissions, and data quality all matter. An AI agent that cannot reliably access the data it needs is an AI agent that will produce unreliable results. This is where organisations that skipped their data strategy discover the cost — AI adoption forces the issue. **Governance and Trust.** Every level of AI adoption introduces risk that needs managing. At Level 1, the risk is data leakage through consumer AI tools. At Level 3, the risk is an AI system taking action on behalf of your organisation. A governance framework — covering data handling policies, acceptable use guidelines, risk assessment, and audit requirements — is not optional. It is foundational. **Skills and Culture.** AI maturity is a people problem as much as a technology problem. Teams need the capability to work effectively with AI tools, the literacy to evaluate AI outputs critically, and the willingness to adopt new workflows. Organisations that deploy sophisticated AI tools into teams that are not prepared to use them waste money and erode confidence. **Process and Workflow.** AI tools need defined touchpoints within mapped processes. Which steps are candidates for AI assistance? Where are the review points? What are the feedback loops that allow continuous improvement? Organisations that bolt AI onto undefined processes amplify chaos rather than reducing it. ### Strategy First: Every Level Must Map to Business Outcomes The pyramid sits within a strategic frame for a reason. Moving from one level to the next is not inherently valuable. What matters is whether each step delivers a measurable business outcome — reduced cost, faster throughput, improved quality, better customer experience, or competitive advantage. An organisation at Level 1 that is using conversational AI to cut proposal writing time by 40% is in a stronger position than an organisation at Level 3 that deployed an expensive agentic system with no clear ROI. Maturity is not a league table. It is a framework for asking the right questions: What problem are we solving? What level of AI capability does the solution require? Do we have the foundation in place to support it? The most effective AI strategies we see start with business problems, not technology capabilities. They identify specific workflows where AI can deliver quantifiable improvement, assess the current maturity level, identify the gaps in the foundation layer, and plan a deliberate progression. They do not start with "we need to be using AI agents" — they start with "we need to reduce our mean time to resolution on infrastructure incidents" and work backwards to the appropriate level of AI capability. ### Assessing Your Organisation: Practical Questions To place your organisation on the pyramid, consider these questions: **Do you have an AI policy?** If not, you are at Level 0 regardless of how many tools people are using. Without policy, there is no organisational adoption — only individual experimentation. **Are AI tools integrated into specific workflows, or just available as general-purpose chat?** The distinction between Level 1 and Level 2 is integration. If people are using AI in a browser tab and copy-pasting results, that is Level 1. If AI tools operate within your working environment and connect to your systems, that is Level 2. **Does AI initiate work, or do humans initiate every interaction?** The distinction between Level 2 and Level 3 is agency. At Level 2, you ask the AI to do something. At Level 3, the AI identifies that something needs doing and takes the preparatory steps before bringing a human into the loop. **Does AI take autonomous action within defined boundaries?** The distinction between Level 3 and Level 4 is approval. At Level 3, humans approve before action is taken. At Level 4, the AI acts and humans supervise after the fact. **How strong is your foundation?** Regardless of your current level, assess your data quality and integration capability, your governance framework, your team's AI skills, and your process documentation. Weaknesses in the foundation will constrain your progression and undermine the value of tools at every level. ### Where to Start If this framework has helped you identify where your organisation sits — and where the gaps are — the next step is building a deliberate plan to progress. Not every organisation needs to reach Level 4. But every organisation benefits from understanding its current position, strengthening its foundation, and making intentional decisions about where AI can deliver genuine value. We have written in more detail about [multi-agent AI systems](/multi-agent-ai-systems-orchestrating-specialised-agents-for-enterprise-workflows/) — directly relevant to organisations working on Levels 3 and 4. At McKenna Consultants, we work with organisations across all five levels — from developing AI policies and identifying first use cases, through to designing and building agentic systems like MASS. Our [AI consultancy practice](/ai-first/) is built on real implementation experience, not theoretical frameworks. If you want to discuss where your organisation sits on the pyramid and what a practical path forward looks like, [get in touch](/contact/). --- # Build, Buy or Embed? The Document Features Your Enterprise Customers Expect in 2026 **Canonical URL:** https://www.mckennaconsultants.com/build-buy-or-embed-the-document-features-your-enterprise-customers-expect-in-2026/ **Author:** Nick McKenna **Published:** 3 May 2026 **Category:** SharePoint Embedded # Build, Buy or Embed? The Document Features Your Enterprise Customers Expect in 2026 Somewhere on your product roadmap, probably filed under a deceptively small heading like "document support", sits one of the biggest build-versus-buy decisions your SaaS product will ever face. An enterprise prospect asks where contracts live in your platform. A customer success manager reports that users keep emailing files to each other because the product only stores attachments. A competitor announces in-app editing. However it arrives, the conclusion is the same: enterprise customers now assume that documents live *inside* the product — uploaded, previewed, edited, co-authored, versioned, searchable and retained — not bolted on beside it. The question is how you get there. In our work with [SaaS and software vendors](/sectors/saas-and-software-vendors/), we see teams weigh the same three routes again and again: build the document capability from scratch, integrate each customer's own Microsoft 365 tenant, or embed a managed document platform inside the product. This article is a product manager's guide to that decision — how to **add document management to your SaaS product** without betting the roadmap on the wrong route, and how to think about **build vs buy document editing** as the genuinely strategic choice it is. It stays deliberately at product level; if you want the architect's-eye comparison of the underlying Microsoft technologies, we have written [a decision framework for ISVs and enterprise architects](/sharepoint-embedded-vs-wopi-a-decision-framework-for-isvs-and-enterprise-architects/) separately. ## The Expectation Has Moved Ten years ago, "document support" meant an upload button and a download link. Five years ago it meant an in-browser preview. In 2026, enterprise buyers evaluate your document features against the experience they get in Microsoft 365 itself, because that is what their users live in all day. The expectation stack now looks like this: - **Storage and upload** — table stakes, and has been for a decade. - **Preview** — viewing a Word document, Excel workbook or PDF without downloading it, with reasonable fidelity. - **Editing** — changing the document in place, in the browser, without a download–edit–reupload loop. - **Co-authoring** — two or more people in the same document at the same time, with presence and automatic merging. - **Versioning and history** — who changed what, when, with the ability to restore. - **Search** — finding documents by their content, not just their filename. - **Retention and governance** — the ability to answer an enterprise IT team's questions about where documents live and how long they are kept. The further down that list you go, the harder the engineering gets — and the more decisive the capability becomes in enterprise deals. Buyers have learned to ask, because the difference between a product that holds documents and a product where document work actually happens is the difference between a system of record and a shared drive with a login screen. Document-centric features have been product differentiators for as long as we have been building software for SaaS vendors — years ago we built [Slidebank.com](/project/slidebank/), a presentation management service, an iPad app so their customers could manage and share libraries of PowerPoint slides on the move. The formats and form factors change; the underlying truth does not. Products win when the document workflow lives where the users already are. ## Route One: Build It Yourself The build-from-scratch route always looks most attractive at the top of the expectation stack and becomes progressively less survivable as you descend it. Storage and upload are genuinely buildable. Object storage is cheap, mature and well understood, and plenty of products run their own document store perfectly well. Preview is harder but tractable: rendering pipelines and conversion services exist, and for read-only viewing the fidelity bar is lower. Editing is where the route collapses, and it is worth being blunt about why. Word, Excel and PowerPoint files are not simple formats with a few styling options; they are deep, decades-old formats carrying tracked changes, comments, fields, cross-references, numbering schemes, embedded objects, pivot tables, macros and a long tail of behaviour that users rely on without knowing it has a name. An editor that handles 80 per cent of the format does not deliver 80 per cent of the value — it silently corrupts the other 20 per cent, and the user who opens the mangled document in desktop Word blames your product, not the format. Add real-time co-authoring, which requires correct merge behaviour across all of that structure with multiple concurrent writers, and you are looking at a problem that even very large software companies choose to license rather than solve. For an ISV whose core product is something else entirely, the editor-fidelity problem is effectively unsolvable at commercial quality. This is the heart of the **build vs buy document editing** decision: the build option exists for storage and preview, but for editing it is a mirage. There is one honest exception. If your "documents" are highly structured domain artefacts — inspection forms, structured questionnaires, templated reports that never leave your product — a purpose-built editor for that narrow format can be the right call. The trap is scope creep: the moment a customer asks to open the output in Word, you are back in the fidelity problem. The build route also carries a bill that never stops arriving. You own the security surface of a file-handling system (a favourite target for attackers), the compliance story for the storage layer, and the obligation to keep pace as Office formats and user expectations evolve. That is engineering capacity permanently diverted from the product your customers actually chose you for. ## Route Two: Ride Each Customer's Microsoft 365 Tenant The second route is to store and edit documents in each customer's own Microsoft 365 tenant — their SharePoint sites and OneDrive — with your product integrating via Microsoft Graph. Files live in the customer's estate, open in the customer's own Office, and inherit whatever governance their IT team has configured. On paper this is elegant: no storage cost on your side, data residency answered by definition, and editing fidelity delivered by Microsoft. Some products genuinely suit it — if your product is fundamentally an overlay on the customer's existing Microsoft 365 estate, working with their content where it already lives, this route can be exactly right. For most SaaS products, though, the friction is real and it compounds with every customer you sign: - **Consent and onboarding ceremony.** Every customer's Microsoft 365 administrator must grant your application access to their tenant, and must do so again whenever your permission requirements change. Each onboarding now has an IT-approval step you do not control, with all the sales-cycle delay that implies. - **Tenant variance.** No two enterprise tenants are configured alike. Conditional access policies, data loss prevention rules, retention labels and third-party security tooling can each interfere with your product's document flows in ways you cannot predict or reproduce. Your test matrix is every customer's tenant configuration. - **The support burden lands on you.** When a document fails to open, the user raises a ticket with you, not with their IT team — even when the cause is a policy change in their tenant that nobody told you about. Diagnosing faults inside an estate you do not administer is slow, and the customer experiences that slowness as your product's unreliability. - **Uneven capability.** What your document features can do becomes a function of each customer's licensing and configuration. A feature that works beautifully in one account silently degrades in another, which is a miserable foundation for a consistent product experience — and for the marketing claims your sales team wants to make. The pattern we see is that this route works at five customers and grinds at fifty. The integration cost is not the code; it is the permanent operational entanglement with every customer's IT estate. ## Route Three: Embed Document Management with SharePoint Embedded The third route is the newest, and it exists precisely because Microsoft recognised the gap between the first two. [SharePoint Embedded](/sharepoint-embedded/) lets you embed Microsoft's document platform inside your own product: documents live in dedicated storage containers that your application owns and controls, while users view, edit and co-author them in the full-fidelity Office web editors — inside your product's interface, under your product's navigation and branding. If the concept is new to you, we have written [an introduction to what SharePoint Embedded is and where it fits](/what-is-sharepoint-embedded-microsoft-s-modern-path-for-embedding-365-document-editing/); the short version is that it is Microsoft's modern path for ISVs who want to **embed Microsoft 365 document editing** without either building an editor or camping in every customer's tenant. (Microsoft's earlier partner route to embedded Office editing, the WOPI protocol, still exists; for new products, SharePoint Embedded is the intended path, and the [decision framework article](/sharepoint-embedded-vs-wopi-a-decision-framework-for-isvs-and-enterprise-architects/) covers the choice in depth.) What makes this route compelling at product level is which problems it removes. Editing fidelity is Microsoft's problem: documents open in the same Word, Excel and PowerPoint web experiences users already know, so the corrupted-formatting risk of Route One simply does not exist. Co-authoring, presence, autosave, version history and content search arrive as platform behaviour rather than roadmap items. And because the documents live in Microsoft 365 storage, a large part of the compliance conversation — encryption, resilience, the certifications enterprise IT teams ask about — is inherited from the platform rather than built and evidenced by you. The expectation of full-fidelity, in-product Office editing is one we have watched harden across our document-platform engagements. When we worked with [Kendox](/project/empowering-paperless-productivity-with-wopi-for-kendox/), a document and process automation provider, the requirement was exactly this shape: their users needed to open, edit and save Word, Excel and PowerPoint documents directly inside the Kendox web application — no downloading, no reuploading — with version control and audit trails maintained in the platform. That is the bar your enterprise customers are measuring you against. Route Three is not effort-free, and you should not let anyone tell you otherwise. Your team still designs how containers map onto your product's own concepts — projects, matters, engagements, accounts — how your permission model translates onto document permissions, and how the editing experience launches from your UX. There is also a cost model to price in: storage and usage are consumption-billed to you as the vendor, which means document-heavy customers carry a real cost of goods that your plans and pricing need to anticipate. But this is weeks-to-months of product engineering on top of a managed platform, not the open-ended commitment of Route One or the operational entanglement of Route Two. That trade — your effort spent on your product's document *experience* rather than on document *infrastructure* — is why **SharePoint Embedded for ISVs** has become the default recommendation in our scoping conversations. ## Five Criteria for Making the Call Strip the decision down and five criteria do most of the work. **Time-to-market.** Building editing from scratch is measured in years and rarely completes. Tenant integration is quick to demo and slow to industrialise, because the long pole is per-customer onboarding and support, not code. Embedding puts a credible first release within a quarter for most teams, because the hard capabilities already exist. **Editing fidelity.** Only routes that put real Office editors in front of users clear the bar enterprise users actually apply. Routes Two and Three both do; Route One, for general Office documents, does not. **Compliance inheritance.** Route Two inherits the customer's compliance posture; Route Three inherits Microsoft 365's platform posture within your product; Route One inherits nothing — every control is yours to build and evidence. If your buyers run security reviews, this criterion alone can decide the question. **Cost model.** Route One is a large fixed engineering cost plus permanent maintenance. Route Two is cheap in infrastructure and expensive in onboarding and support operations. Route Three is a consumption cost that scales with usage — the most predictable of the three, provided you price for it from day one. **Support burden.** Ask one question of each route: when a document fails to open at 4 p.m. on a customer's deadline day, whose systems do you debug? For Route One, your own editor — bad. For Route Two, the customer's tenant — worse, because you cannot see it. For Route Three, your integration layer over a managed platform — narrow, observable and yours. Weight the criteria for your product and buyers rather than scoring them in the abstract. A product selling to regulated enterprises weights compliance inheritance and fidelity heavily, which points firmly at embedding. A product whose entire purpose is augmenting a customer's existing Microsoft 365 estate may still choose Route Two with open eyes. ## Sequencing the Roadmap: Preview, Then Editing, Then Co-Authoring, Then Intelligence Whichever route you choose, resist the temptation to announce the whole expectation stack at once. The sequencing that works — for engineering risk and for sales narrative alike — runs in four stages. **Preview first.** In-product viewing removes the ugliest part of the current experience (the download–open–squint loop) and ships fast. It also forces you to solve the foundational plumbing — where documents live, how your permission model applies — while the user-facing stakes are low. **Editing second.** In-place editing is the stage customers actually notice and the stage that starts changing behaviour: documents stop leaking out to desktops and inboxes because there is no longer a reason to take them there. **Co-authoring third.** Once editing is embedded, real-time co-authoring is the feature that converts your product from a place documents are kept into the place work happens. On the embed route this is largely a matter of switching it on and designing around it; on any other route it is a mountain. Sell it when it is real, not before. **Intelligence last.** Search, summarisation, extraction and the AI-assisted features your roadmap is inevitably accumulating all depend on documents being *inside* the product with structure and permissions attached. Teams that try to lead with intelligence before the storage and editing foundations exist end up rebuilding twice. Get the documents in first; the intelligence roadmap then has something to stand on. This sequencing also derisks the decision itself. Preview commits you to very little; by the time you reach the editing stage, you will know your route's true costs from lived experience rather than from a vendor deck — ours included. ## How McKenna Consultants Can Help McKenna Consultants has spent more than 25 years building Microsoft document integration for software vendors — from the [Slidebank](/project/slidebank/) mobile presentation app to embedding full in-browser Office editing into the [Kendox](/project/empowering-paperless-productivity-with-wopi-for-kendox/) document management platform. That history is precisely the build-buy-embed decision this article describes, lived from the inside across many products, and it is why our [SharePoint Embedded development](/sharepoint-embedded/) practice starts with the product decision rather than the code. If document features are climbing your roadmap and you want an honest, experienced view of which route fits your product, your buyers and your team — or you have already chosen to embed and want it built well — [get in touch](/contact/). A short scoping conversation now is considerably cheaper than a wrong turn discovered two quarters in. --- # AI Coding Assistants in the Enterprise: Governance, Security, and IP for Claude Code, Cursor, and GitHub Copilot **Canonical URL:** https://www.mckennaconsultants.com/ai-coding-assistants-in-the-enterprise-governance-security-and-ip-for-claude-code-cursor-and-github-copilot/ **Author:** Nick McKenna **Published:** 28 April 2026 **Category:** Artificial Intelligence ## AI Coding Assistants in the Enterprise: Governance, Security, and IP for Claude Code, Cursor, and GitHub Copilot Three years ago, AI coding assistants were a productivity curiosity that a small share of developers used informally. By the start of 2026 they are standard developer tooling. Claude Code, Cursor, GitHub Copilot, JetBrains AI Assistant, Amazon Q Developer, and a long tail of integrated assistants are present in the daily workflow of most enterprise development teams — sometimes officially adopted, often introduced bottom-up by individual developers, occasionally tolerated rather than approved. The technology has moved faster than enterprise governance. Most large organisations McKenna Consultants engages with have a clear official position on data leaving the corporate boundary, a clear official position on open-source licence compliance, and a clear official position on third-party software in production environments. Almost none of them have a coherent, approved, and operationally enforced position on AI coding assistants — even though those assistants are now reading proprietary source code, generating production code, and influencing security-critical decisions on a daily basis. This article addresses **AI coding assistant enterprise governance**: the risks, the policy structure, the configuration baselines, and the operational disciplines that enterprises need to put in place. It is written for CISOs, heads of engineering, legal counsel, and the architecture leads who are typically asked to draft the policy. It is deliberately practical — McKenna delivers AI coding assistant adoption engagements to enterprise customers and the framework here is the framework we use. ### Why This Question Has Become Urgent A few converging pressures have made AI coding assistant governance an immediate priority for most enterprise IT functions. **Adoption has crossed the tipping point.** When a tool is used by ten percent of developers it can be governed informally. When it is used by sixty or seventy percent — which is the norm in most enterprises by 2026 — it must be governed formally. The existing policy structures that govern third-party software typically do not cover AI coding assistants cleanly, because the tool's behaviour straddles development tooling, data processing, and intellectual property creation in ways that older categories did not anticipate. **The capabilities have outgrown the original framing.** When the original AI coding assistants were autocomplete on steroids, the governance question was narrow: do the suggestions leak code outside the boundary? With agentic coding assistants — Claude Code being the most prominent — the model now opens shells, edits multiple files, runs tests, and commits to branches. The governance question is now substantially broader. **Regulatory expectations are catching up.** The EU AI Act high-risk classifications take effect in August 2026; while AI coding assistants are not generally classified as high-risk, the regulatory atmosphere of 2026 means CISOs are routinely being asked, by boards and auditors, to demonstrate that AI tooling in development is governed. **Visible incidents are accumulating.** Through 2024 and 2025, several public incidents involved AI assistants producing or surfacing leaked credentials, proprietary code patterns, or licence-tainted suggestions. The probability that any individual organisation will experience a material incident from poor AI coding assistant governance is now non-trivial. The question is no longer whether to govern. It is how. ### The Five Risk Categories A coherent governance position starts with a structured view of the risks. Five categories cover the practical surface. #### 1. Source Code Exfiltration Some AI coding assistants send your codebase, or fragments of it, to a model provider for processing. Some run entirely locally. Some operate in a hybrid mode where context windows are sent to the model but no persistent storage occurs. The exfiltration risk varies dramatically across tools and across configurations of the same tool. The governance position must distinguish: - Which tools, in which configurations, send code outside the organisation's boundary at all. - Where that boundary is — for cloud-deployed code, the boundary is your cloud tenant; for on-premises code, it is your data centre. - What contractual and architectural protections exist when code does leave the boundary (zero data retention agreements, encryption in transit, encryption at rest, model training opt-outs). - What classes of code are categorically prohibited from being sent to external models — typically code in repositories holding cryptographic material, customer data, or the most sensitive business logic. The principle is not "no AI assistance"; it is "AI assistance with explicit data handling guarantees aligned to the sensitivity tier of the code." #### 2. Generated Code Provenance and IP Ownership When an AI coding assistant generates code, who owns it? The simple answer is your organisation, because your developers wrote (or accepted) the code in the course of their employment. The complete answer is more nuanced: - Some tools' terms of service explicitly assign ownership of generated code to the user. - Some tools have language about "model training on customer code" that, if enabled, can result in your code patterns appearing in suggestions to other customers. - Generated code can incorporate patterns that closely match training-set code under restrictive open-source licences. The legal status of this is unsettled, but the operational answer is the same: your organisation must have a process for screening and addressing it. The governance position must specify: - Which tools' terms of service have been reviewed and accepted. - Whether model training on your code is permitted (almost always: no). - What licence-screening process applies to generated code — at minimum, the same open-source licence scanning that applies to manually-written code in your codebase. #### 3. Third-Party Licence Contamination Related but distinct: AI coding assistants can suggest patterns that originate from training data under licences incompatible with your codebase. A snippet that reproduces GPL-licensed code in a closed-source application is a problem regardless of who wrote it, but the AI-generated case requires its own controls because the developer is less likely to recognise the snippet's origin. The governance position should require: - Existing static analysis and licence scanning to run on AI-suggested code with the same rigour as on manually-written code. - Specific guidance to developers about reviewing AI-generated suggestions for "verbatim large blocks" (the highest-risk pattern for licence contamination). - A reporting mechanism for when developers identify AI-suggested code that closely resembles known third-party patterns. #### 4. Security Review Burden AI-generated code often compiles, often passes initial tests, and often *looks* correct — while containing subtle vulnerabilities. SQL injection, cross-site scripting, hard-coded credentials, weak cryptographic primitives, and incorrect authorisation logic appear in AI-generated suggestions at non-zero rates, and many of these patterns are only detectable by careful review. The governance position should specify: - Code review obligations for AI-generated code that are at least equal to those for manually-written code. Some organisations apply *higher* obligations to AI-generated code in security-critical paths. - Mandatory SAST (static application security testing) coverage for repositories that accept AI-generated contributions. - Specific guidance for high-risk code patterns where AI suggestions are deprecated outright (cryptographic primitives, authentication flows, anything dealing with raw credentials). #### 5. Audit Trail and Reproducibility Regulated industries — financial services, healthcare, public sector — operate under audit obligations that pre-date AI coding assistants. The governance position must address: - Whether AI-generated code is identifiable as such in the codebase. (Most enterprise tools support metadata or commit conventions that mark AI-generated contributions; some organisations choose not to expose this in the code itself but maintain an out-of-band record.) - Whether the AI tool's invocation parameters, prompts, and responses are retained — and for how long, where, and under what access control. - How this evidence is produced if requested by an auditor, regulator, or in legal discovery. For organisations subject to formal regulatory audit, a clear position on this point is non-negotiable. ### Tier Differences: Consumer-Tier vs Enterprise-Tier Deployments Every major AI coding assistant has at least two deployment tiers, and the security posture differences are substantial. Critical points to know: **Claude Code.** Anthropic offers Claude Code as part of the Claude developer platform. Enterprise deployments use Anthropic's API with zero data retention agreements, the option to use Amazon Bedrock or Google Cloud Vertex AI as the model serving infrastructure, and the option to deploy Claude through customer-controlled cloud accounts. Consumer-tier use of Claude Code carries different terms; in particular, Anthropic's API has explicit policies against using customer prompts for model training, but the contractual and operational details vary by tier. **GitHub Copilot.** Microsoft offers Copilot Business and Copilot Enterprise tiers in addition to Copilot Individual. Enterprise tiers offer zero data retention, optional code-base awareness with controlled scope, and integration with the broader Microsoft 365 governance model. Individual subscriptions sit outside the corporate governance boundary entirely and should be assumed to be off-limits for any enterprise codebase work. **Cursor.** Cursor offers Business and Enterprise plans with privacy-mode configuration, zero data retention, and SAML SSO integration for centralised identity. The non-enterprise tiers operate under different terms. **JetBrains AI Assistant** and **Amazon Q Developer** have similar tiered structures. The pattern is universal: the tier *substantially* changes the governance posture. The operational implication is that enterprise governance must specify the permitted tiers, not just the permitted tools, and must back this with configuration enforcement. ### A Reference Policy Structure The policy framework McKenna recommends to enterprise clients has six sections. #### Section 1: Scope and Definitions What counts as an "AI coding assistant" for the purposes of this policy. The scope should explicitly include autocomplete-style assistants (Copilot, Cursor inline), agentic assistants (Claude Code, Cursor Composer), conversational coding interfaces (claude.ai, chatgpt.com when used for code), and IDE-integrated chat assistants. It should explicitly exclude general office productivity AI tools (which are governed by a separate policy). #### Section 2: Permitted Tools and Tiers A specific list of approved tools, the approved tier for each, and the configuration baseline that must be applied. This section should be reviewed quarterly, because the tooling landscape changes faster than annual review cycles support. #### Section 3: Repository Tiering Not all code carries the same sensitivity. A working classification: - **Tier 1 (highest sensitivity):** Cryptographic implementations, authentication and authorisation core code, customer data processing logic, regulated workloads (PCI-DSS, HIPAA, equivalent). Restricted AI assistant use, often limited to local-only models. - **Tier 2 (high sensitivity):** Production application code, infrastructure-as-code, database migration code. Approved enterprise-tier AI assistants permitted with strict configuration. - **Tier 3 (general):** Application development, internal tooling, prototypes, documentation. Approved AI assistants permitted in standard configuration. The policy should specify the AI assistant configuration that applies in each tier. #### Section 4: Generated Code Review Requirements Code review obligations for AI-generated contributions, with specific attention to security-critical patterns. The position McKenna typically recommends is that AI-generated code receives at least the standard review process plus a documentation note in the commit (or PR description) marking its provenance. #### Section 5: Developer Training and Awareness Training is non-negotiable. Developers using AI coding assistants need to understand: - Which configurations are mandatory and why. - The risk patterns that require human review. - The reporting process for suspected licence contamination, security issues, or other policy concerns. - The boundary cases — for example, that pasting code into the consumer-tier of any tool is a policy violation regardless of the tool's general approval status. A short, mandatory training module — typically 30 minutes, refreshed annually — is the standard McKenna recommends. #### Section 6: Audit and Review A defined audit cycle, with specific control points: - Quarterly review of tool configurations to ensure enterprise-tier baselines are maintained. - Random sampling of repositories for evidence of policy compliance (configuration files, commit conventions). - Annual review of the policy itself in light of tooling changes. - Specific incident response procedures for suspected violations. ### The Build-vs-Buy-vs-Self-Host Question A growing share of enterprise customers ask whether they should self-host AI coding assistants — running open-source models on internal infrastructure rather than relying on cloud API tools. The honest answer is "rarely yet." **The case for self-hosting** is straightforward: data never leaves your boundary, you control the model and its updates, you can audit every interaction. For organisations with the most extreme data sensitivity requirements (intelligence services, certain defence and critical-national-infrastructure environments), this can be the only acceptable answer. **The case against self-hosting** is also straightforward: the open-source models that can run on internal infrastructure are typically a generation behind the frontier models that power Claude Code, Copilot, and Cursor. Developer productivity benefits scale with model capability, and the gap in capability is large. For organisations where the cloud tools' enterprise-tier protections are sufficient, self-hosting trades a meaningful capability disadvantage for a marginal additional security benefit. For most enterprise customers, the right answer is enterprise-tier cloud tools with appropriate configuration, repository tiering, and review obligations — with self-hosted models reserved for the highest-sensitivity tier. ### What McKenna Delivers in This Space McKenna Consultants delivers two distinct engagements around AI coding assistants for enterprise customers: **Policy and adoption engagements.** We work with the CISO, head of engineering, and legal counsel to draft the AI coding assistant policy, define the tiered configuration baselines, specify the developer training, and stand up the audit cycle. The output is a production-ready policy and the operational artefacts to enforce it. Typical engagement length: six to ten weeks. **Technical implementation engagements.** We work with engineering teams to apply the policy: configure the tools, deploy enterprise-tier subscriptions, integrate with the corporate identity model (SAML SSO, zero data retention, model selection), and instrument the audit evidence. We also deliver developer training where it has not already been arranged. Typical engagement length: four to eight weeks, often run in parallel with the policy engagement. We are an experienced AI consultancy and the McKenna engineering team uses these tools daily — including Claude Code in our own engineering workflow. We bring practitioner experience to the governance question, not a purely advisory perspective. If your organisation is drafting or reviewing its AI coding assistant policy in 2026, [contact us](https://www.mckennaconsultants.com/contact/) to discuss the engagement model. --- # Connected Products 101: What Manufacturers Should Know Before Adding IoT to Their Equipment **Canonical URL:** https://www.mckennaconsultants.com/connected-products-101-what-manufacturers-should-know-before-adding-iot-to-their-equipment/ **Author:** Nick McKenna **Published:** 26 April 2026 **Category:** Systems Integration # Connected Products 101: What Manufacturers Should Know Before Adding IoT to Their Equipment Somewhere in your business, the conversation has already started. A competitor has launched a "smart" version of a product you both make. A large customer has asked whether your equipment can report its own running hours. A board member has read about servitisation and wants to know what your answer is. For most equipment manufacturers, the question is no longer *whether* to think about **connected products** — it is how to scope a first one without burning a year and a large budget learning what the pitfalls were. This article is the plain-English guide we find ourselves giving engineering and commercial directors at the start of those conversations. No protocol war stories, no cloud architecture diagrams — just what a connected product is actually made of, from the device to the dashboard, which decisions matter early, and the failure modes that catch manufacturers out. It draws on our work in the [manufacturing and industrial engineering](/sectors/manufacturing-and-industrial-engineering/) sector, including connected-product projects like the one we delivered for EnviroVent, which we will come back to. If you are considering **IoT for manufacturers** seriously for the first time, this is the ground to cover before anyone writes a line of firmware. ## Start With Why: What Connecting a Product Is Actually For The single biggest predictor of whether a connected-product programme succeeds is whether it starts from a business outcome or from the technology. "Our products should be connected" is not an outcome. These are the outcomes that reliably justify the investment: - **Service revenue and predictive maintenance.** This is the big one for equipment manufacturers. If your machine can report vibration, temperature, running hours or error codes, you can sell service contracts priced on evidence rather than guesswork, schedule maintenance before failures instead of after them, and turn a one-off equipment sale into a recurring relationship. For many manufacturers, the aftermarket already out-earns the original sale; connectivity is what lets you defend and grow that. - **Usage visibility.** Knowing how customers actually use your equipment — duty cycles, settings, features touched and features ignored — changes product development from anecdote to data. It also changes commercial conversations: warranty disputes look different when the machine kept its own logbook. - **Compliance and reporting.** In regulated environments — ventilation, refrigeration, emissions, safety-critical plant — customers increasingly need evidence that equipment operated within parameters. A product that produces its own compliance record is worth more than one that relies on manual checks. - **Differentiation and usability.** Sometimes the win is simply a better product. A machine that can be commissioned, monitored and adjusted from a phone is easier to install, easier to support and easier to sell. When we built the [myEnviroVent mobile app](/project/envirovent/) for EnviroVent — whose ventilation products are in over a million UK homes — the point was exactly this: iOS and Android apps that connect to the ventilation units so customers can see the unit's current speed and settings and adjust them easily. That accessibility made the products more effective in use and gave them a value-added feature competitors lacked, and the complete system went on to win a "Smart Product of the Year" award. Pick one of these as the primary outcome for your first connected product. Not all four. The programmes that try to justify themselves with everything tend to deliver nothing measurable at all. ## The Anatomy of a Connected Product Every connected product, from a domestic ventilation unit to an industrial compressor, is the same five things joined together. Understanding the chain at this level is enough to have a sensible scoping conversation. ### 1. The device and its firmware Something on or in the machine that measures, and something that thinks. In some products this is a retrofit sensor module; in others, the machine's existing control electronics already know everything worth reporting and the job is getting that data out — which is an integration exercise with your own electronics as much as an IoT exercise. The EnviroVent project involved exactly this kind of work: integrating with the ventilation units' electronics and communicating with them over wireless protocols. The word to take seriously here is *firmware*. It is software, it will have bugs, it will need updating for the life of the product — which for industrial equipment can be twenty years. More on that below, because it is where first-time programmes most often underestimate. ### 2. Connectivity How does data leave the machine? At scoping level there are three broad families, and the trade-offs are commercial as much as technical: - **Wi-Fi (and wired networks)** is effectively free to run but depends on the customer's network — fine for domestic and office equipment, fragile on factory floors and construction sites where IT departments, firewalls and patchy coverage get in the way. - **Cellular** works almost anywhere and needs nothing from the customer, but every device carries a SIM and a monthly cost, which your commercial model has to absorb. For high-value equipment in the field, it is usually the pragmatic answer. - **Low-power wide-area technologies** (LoRaWAN and similar) suit small, battery-powered sensors sending tiny amounts of data infrequently, at very low running cost — but they are unsuitable for anything chatty or for remote control. There is no universally right answer; there is a right answer for one product in one deployment environment. The mistake is not choosing "wrong" so much as not costing the choice over the fleet's lifetime. ### 3. Cloud ingestion Somewhere, messages from thousands of devices have to arrive, be authenticated, and be routed. This is a solved problem: the major cloud platforms provide managed services for exactly this, and our work is typically built on [Azure IoT services](/cloud-services/internet-of-things/), which handle device identity, secure two-way messaging and scale so that you do not have to build any of it. The scoping-level point is simply this: do not let anyone propose building your own device-messaging infrastructure. This layer is undifferentiated plumbing, the managed services are mature, and your engineering budget belongs at the ends of the chain — the device and the application — not in the middle. ### 4. Telemetry storage and processing Device data arrives as a relentless stream and is worth little in that form. It needs storing (recent data kept hot for dashboards and alerts, history kept cheaply for trends), aggregating (nobody wants ten readings a second; they want this week versus last week), and watching (rules that turn "temperature above threshold for ten minutes" into an alert a human sees). This is also the layer where, later, analytics and machine learning can be added for genuine predictive maintenance — but that is a later stage. You cannot predict failures until you have accumulated enough history of what normal and abnormal look like, which is one more reason to start collecting sooner rather than waiting for the grand AI-enabled vision to be signed off. ### 5. The customer-facing application This is where the value actually lands, and it is the layer programmes most often shortchange. Telemetry in a database earns nothing. A service manager seeing a fleet dashboard, an installer commissioning a unit from a phone, a customer getting an alert before a failure — that is the product. In our experience the application layer deserves the same design attention as the physical product carrying your brand, because to the customer, it *is* the product. It is worth noting that the EnviroVent app was built for phone and tablet on both iOS and Android — meeting users on the devices they already hold, not on a portal they must remember to visit. ## Scoping the First Version: One Machine, One Signal Set, One Outcome The strongest advice we give first-time connected-product teams is a discipline of ones: - **One machine.** Your best-selling or most serviced product line, not the whole catalogue. Retrofit across the range can come later; proving value cannot. - **One telemetry set.** The handful of signals that serve the chosen outcome — running hours, a temperature, an error register. Not every value the control board can technically emit. Every extra signal costs connectivity, storage and attention, and most are never looked at. - **One customer outcome.** The single thing someone will do differently because the product is connected: a service visit scheduled from data, an alert that prevents a callout, a commissioning process cut from an hour to minutes. A first version scoped this way can be live with pilot customers in months, generating the two things no amount of planning produces: real field data, and real customer reaction. Both will reshape version two in ways no workshop can predict — which is also the argument for building the first version so it can be extended rather than as a throwaway. ## The Unglamorous Essentials Four topics rarely make it onto the concept slide, and all four are cheaper to address at the start than to retrofit. **Provisioning at manufacture.** Every device needs an identity — credentials, a certificate, a registration in your cloud platform — and it has to acquire that identity somewhere. The workable answer is on the production line, built into the manufacturing and test process, so devices leave the factory able to introduce themselves securely. The unworkable answer, discovered by many programmes at scale, is a manual registration step per device performed by an engineer. Design provisioning as part of the product, and involve your production engineering people early. **Over-the-air updates.** Firmware is not a one-off deliverable; it is a running commitment for the service life of the equipment. Security patches, bug fixes and new features all need a safe path to devices in the field — staged rollouts, verified updates, and recovery when an update fails on a machine in a plant room three hundred miles away. If a device cannot be updated remotely, every future fix is a site visit or a product recall. Over-the-air update capability is the single most important feature to demand of the very first firmware version, precisely because it cannot be added remotely later. **Security by design.** A connected product is an attack surface with your brand on it. The essentials are well understood — unique credentials per device (never a shared password baked into firmware), encrypted communication, signed updates, and the ability to revoke a compromised device — and the managed cloud platforms support all of them. What they cannot do is retrofit security into a device architecture that ignored it. It is also worth saying plainly: customers increasingly ask about product security in procurement, and regulation in this area has been tightening for years. Treat it as a product requirement, not an IT afterthought. **Data ownership in dealer channels.** If you sell through distributors and dealers, decide early whose data the telemetry is. The machine may be sold by a dealer, owned by a finance company, operated by an end customer and serviced by a third party — and all four have a claim on, or a sensitivity about, its data. Who sees fleet data? Does the dealer get access to machines they sold? Does usage data flow back to you as the manufacturer, and do your terms say so? These are contractual and commercial questions, and they are far easier to settle before launch than to renegotiate after a dealer discovers the factory can see "their" customers' machines. ## Connecting the Connected Product to the Business Here is the part most IoT vendors skip, and the reason connected-product work sits naturally alongside [systems integration](/digital-development/systems-integration-services/) in our practice: telemetry only becomes revenue when it reaches the systems your business already runs on. Consider what "predictive maintenance revenue" actually requires end to end. The device reports rising vibration. The cloud platform raises an alert. And then: a case must be created for the service team, the machine must be identified against a serial number and an install base record in the ERP, its warranty and contract status checked, an engineer scheduled in the field-service system, and the parts likely needed checked for stock. Every step after the alert lives in systems that predate the IoT programme — ERP, CRM, field service, the service desk. Without **industrial IoT integration** into those systems, a connected product produces dashboards that someone must remember to look at, and manual swivel-chair processes to act on what they see. With it, the machine effectively raises its own service ticket. This has two practical consequences for scoping. First, budget for integration from the start — as a rule of thumb it deserves similar weight to the device work itself, and it is the half of the programme where the business case is actually realised. Second, take an honest look at whether your back-office systems are ready to participate. Install-base records keyed by serial number, an ERP that other systems can talk to, a field-service process that can accept work orders from software: these are prerequisites, and if your core systems are too old or too closed to play their part, that is worth knowing before the pilot rather than after it. We have written separately about [legacy system migration](/legacy-system-migration/) for exactly this situation. ## The Failure Modes to Avoid We will spare you the horror stories, but the patterns behind stalled connected-product programmes are remarkably consistent: - **Connecting everything, for nothing.** Instrumenting the whole product range because connectivity is strategic, with no single costed outcome. The result is impressive data volumes, a growing cloud bill, and a business case still marked "TBC" two years in. The discipline of ones exists to prevent this. - **Treating firmware as a one-off.** The launch firmware ships, the embedded contractor rolls off, and eighteen months later a security issue or a protocol change finds nobody able to build, test and deploy an update. Firmware needs an owner, a roadmap and a budget line for the life of the product. - **Underestimating fleet operations.** A ten-device pilot needs no operations. Ten thousand devices need dashboards for fleet health, processes for devices that go quiet, connectivity cost management, certificate renewals and update campaigns — a small ongoing operational function that someone must own. Plan for it at the point the pilot is declared a success, because that is exactly when it becomes real. - **Stopping at the dashboard.** The programme delivers telemetry and a portal, integration with ERP and field service is deferred to phase two, and phase two never comes because the dashboards alone do not move a commercial number. Integration is not the follow-on; it is where the value is. None of these are technology failures. They are scoping and ownership failures, which is precisely why they are avoidable at the stage you are at now. ## How McKenna Consultants Can Help McKenna Consultants has been building connected products and the systems behind them for years — from the award-winning [myEnviroVent app](/project/envirovent/), integrating mobile software with ventilation unit electronics over wireless protocols, to the [Internet of Things](/cloud-services/internet-of-things/) and [systems integration](/digital-development/systems-integration-services/) work that connects device data to the ERP, service and commercial systems where it earns its keep. We are engineers first: our value is in scoping the version one that proves the business case, and building the device-to-dashboard-to-back-office chain so it survives contact with a real fleet. If you are an equipment manufacturer weighing up your first connected product — or holding a stalled pilot that never reached the business case — we are happy to talk it through, from outcome selection to architecture to integration. [Get in touch](/contact/) and tell us about your equipment. --- # SharePoint Embedded vs WOPI: A Decision Framework for ISVs and Enterprise Architects **Canonical URL:** https://www.mckennaconsultants.com/sharepoint-embedded-vs-wopi-a-decision-framework-for-isvs-and-enterprise-architects/ **Author:** Nick McKenna **Published:** 21 April 2026 **Category:** SharePoint Embedded ## SharePoint Embedded vs WOPI: A Decision Framework for ISVs and Enterprise Architects The question of how to embed Microsoft 365 document editing into a third-party application used to have a single defensible answer for most ISVs: build a WOPI host and join the Cloud Storage Partner Program. By 2026 it has two. **SharePoint Embedded** has matured into a credible, often superior alternative for the majority of new entrants — but WOPI remains the right answer for a meaningful subset of organisations. The question for any ISV or enterprise architect designing a new embedded document workflow is no longer "should we build a WOPI host?" but "given our specific constraints, is SharePoint Embedded vs WOPI the better fit?" This article is a decision framework for that question. It is not a marketing comparison. It is the structured analysis we use inside McKenna Consultants engagements when we are advising a client on which path to take, and it includes the cases where we recommend WOPI even when the rest of the market is moving toward SharePoint Embedded. If you are evaluating the SharePoint Embedded vs OneDrive vs WOPI landscape for a new product or a strategic refit, this framework is for you. ### The Two Architectures in One Sentence Each **WOPI.** A protocol that lets Office for the web (and certain Office desktop and mobile clients) load, render, and save documents that are stored on *your* infrastructure. Your application is the source of truth for the file; Office is a rendering and editing surface against your storage. **SharePoint Embedded.** A Microsoft 365 platform service that gives your application a programmatic surface — through Microsoft Graph — over Microsoft-hosted document storage and the full Office collaboration feature set. Microsoft is the source of truth for the file; your application is a control plane and UI over containers that live inside Microsoft 365. The architectural difference is not subtle. It is the question of who owns the storage. Every other decision factor — licensing, identity, operational responsibility, feature surface, migration cost — flows from this difference. ### Decision Factor 1: Storage Ownership and Data Residency **WOPI.** You own the storage. Documents live in your infrastructure — typically an object store (S3, Azure Blob, a custom file store), in a data centre or region you select. Data residency is yours to design. Encryption at rest is yours to configure. Backup and disaster recovery are yours to operate. **SharePoint Embedded.** Microsoft owns the storage. Documents live inside Microsoft's infrastructure, in regions Microsoft makes available. You can choose among Microsoft's geographic regions and configure data residency settings for new container types, but you cannot place storage outside Microsoft's footprint or in a customer-controlled storage layer. **When this favours WOPI:** Regulated industries with strict national data residency requirements that fall outside Microsoft's available regions. Customers who require their documents to remain in customer-controlled storage. Architectures where the storage layer is itself a product (document management vendors, cloud storage providers). **When this favours SharePoint Embedded:** Most cases. Microsoft's regional coverage is broad and continues to expand, and the operational simplification of not running your own storage layer is substantial. For SaaS products whose users are not in regulated jurisdictions outside Microsoft's footprint, storage ownership is rarely a strategic differentiator. ### Decision Factor 2: Identity and Authentication **WOPI.** Authentication is your responsibility. The WOPI host issues access tokens that the Office client presents back to your endpoints; those tokens are validated using proof keys that you publish in your discovery document. The model is well-documented and battle-tested, but it is non-trivial: proof key rotation must be correct, token lifetimes must be managed, and a misconfiguration can quietly break security in ways that are hard to detect. **SharePoint Embedded.** Authentication is delegated to Microsoft Entra ID. Your application registers in Entra ID, requests delegated or application Microsoft Graph permissions, and acquires tokens through standard OAuth 2.0 flows using MSAL. There are no proof keys. The token validation model is identical to every other Microsoft Graph integration your team has ever built. **When this favours WOPI:** Organisations that are deeply invested in their own identity model and need the document editing path to use it directly, without going through Entra ID. Architectures where the document workflow must be authenticatable without a Microsoft tenant being involved. **When this favours SharePoint Embedded:** Most cases. Entra ID is a known quantity, OAuth 2.0 is a known quantity, and MSAL is a known quantity. Removing the proof key infrastructure removes a class of operational risk that is hard to justify when an Entra ID-based path is available. ### Decision Factor 3: Operational Responsibility **WOPI.** A WOPI host has standing operational obligations. The discovery document must be published correctly and remain available. Certificates must be rotated on schedule. Proof keys must be rotated and the rotation must be transparent to the Office client. Each Microsoft Office release must be tested for compatibility. The host endpoints must operate at 24×7 reliability, because every active editing session depends on them. None of this is *hard*, but it is *standing work* that must be properly resourced. **SharePoint Embedded.** Microsoft operates the platform. Your operational responsibility shrinks to your own application code: the Graph integration layer, the consuming-tenant onboarding flow, the application database, and your own UI. You are not on the hook for the discovery document, the editing endpoints, the file rendering, or any of the other moving parts that make a WOPI host work. **When this favours WOPI:** Organisations whose operational maturity around document workflows is already established. Cloud Storage Partner Program members whose entire commercial proposition is built on operating storage at high reliability — for them, the operational burden is the business. **When this favours SharePoint Embedded:** Most cases. The operational simplification is one of SharePoint Embedded's most valuable properties. For ISVs whose product strategy does not centre on storage operations, shifting that responsibility to Microsoft is straightforwardly worth it. ### Decision Factor 4: Licensing and Commercial Model **WOPI.** Building a WOPI host is technically open to anyone. Operating a WOPI host that integrates with Office for the web *for production users* requires Cloud Storage Partner Program membership, which involves a business engagement with Microsoft and acceptance into the partner programme. CSPP includes a baseline feature set; CSPP Plus is a higher tier with additional capabilities (notably backstage integration into the Office File menu, geo-fencing, chunked file transfer). The commercial relationship with Microsoft is substantive — partners are sales motion participants and engage with Microsoft account teams. **SharePoint Embedded.** Sold on a consumption basis, billed through your Azure subscription. The metered dimensions are storage, transactions (Microsoft Graph operations), and bandwidth. There is no partner programme to join, no business-level engagement required to begin building, and no per-customer licence requirement on your end users. Some advanced features (Copilot inside SharePoint Embedded documents) require the consuming user to hold appropriate Microsoft 365 licences, but the platform itself is consumption-based and accessible. **When this favours WOPI:** Organisations whose business model aligns with the CSPP partner motion. Organisations whose users are predominantly Microsoft 365 customers and where being a CSPP partner has direct commercial value. CSPP Plus members specifically — the additional features in that tier (especially backstage integration) genuinely differentiate, and they are not available in SharePoint Embedded. **When this favours SharePoint Embedded:** Most cases. The consumption model is recognisable, predictable, and aligns cost to use. Not having to negotiate partner programme acceptance materially shortens the path from "we want this feature" to "this feature is in production." ### Decision Factor 5: Feature Surface This is the most nuanced of the decision factors, because both platforms offer broad capability with different specific strengths. **WOPI offers, particularly in CSPP Plus:** - **Backstage integration into the Office File menu.** A CSPP Plus partner's storage appears alongside OneDrive and SharePoint in the Office Open and Save As views. SharePoint Embedded does not replicate this — containers do not surface in the Office backstage as third-party storage locations. - **Geo-fencing under partner control.** A CSPP Plus partner can restrict document operations to specific geographic regions using their own infrastructure decisions. SharePoint Embedded provides Microsoft-managed regional storage, which solves the same problem in a different way but with less granular partner control. - **Chunked file transfer with custom protocols.** CSPP Plus permits optimised file transfer for very large documents. - **Mobile WOPI integration on iOS and Android.** Mature, with established patterns for the partner-controlled flow. **SharePoint Embedded offers, often as built-in defaults:** - **Native coauthoring.** Multiple users editing simultaneously is a first-class capability with no implementation work on the host side. In a custom WOPI host, coauthoring is a substantial engineering project in itself. - **Sensitivity labels and Microsoft Purview integration.** Documents in containers participate in the consuming tenant's information protection model automatically. - **Retention policies and compliance.** Container-level configuration plugs into the broader Microsoft 365 compliance framework. - **Microsoft 365 Copilot integration.** Documents in containers are first-class citizens for Copilot grounding, indexing, and agent invocation. WOPI hosts can integrate with Copilot but the integration story is more involved. - **A consistent, modern API.** Microsoft Graph as the unified surface, with SDKs in every common language. **When this favours WOPI:** Applications where backstage integration, partner-controlled geo-fencing, or specific CSPP Plus capabilities are part of the product proposition. Organisations whose users specifically expect to see the partner brand in the Office File menu. **When this favours SharePoint Embedded:** Applications where coauthoring, Copilot, sensitivity labels, or Purview integration are wanted but cannot be afforded as custom builds on top of WOPI. New entrants for whom getting these capabilities for free is more valuable than the partner-specific features WOPI offers. ### Decision Factor 6: Customer Identity Boundary **WOPI.** Your application's relationship to a customer's Microsoft 365 tenant is loose. A WOPI host can serve users who do not have a Microsoft 365 subscription at all (subject to Office for the web licensing), and the customer's identity model is independent of yours. **SharePoint Embedded.** Each customer organisation that uses your application has to authorise your container type into their Microsoft Entra ID tenant. This is a one-time consent flow performed by an Entra ID administrator, but it requires the customer organisation to *have* an Entra ID tenant — even if they do not have any Microsoft 365 SKUs themselves. **When this favours WOPI:** Applications selling to customers who have no Microsoft tenant at all and would resist being asked to create one. Applications where the customer organisation explicitly does not want any third-party software touching its corporate identity boundary. **When this favours SharePoint Embedded:** Most modern B2B SaaS deployments, where the customer is already an Entra ID tenant for the rest of their software estate. The consenting flow is well-understood, the burden is minimal, and the result is a clean, auditable relationship between your application and the customer's identity boundary. ### Decision Factor 7: Migration Cost and Time-to-Value **WOPI.** Building a WOPI host from scratch is a multi-month engineering project for a competent team, plus the CSPP onboarding process (typically four to five weeks for domain allow-listing, longer for CSPP Plus). The architectural surface is meaningful: discovery, file information, lock management, content endpoints, proof key validation, error handling, and so on. **SharePoint Embedded.** Building a working SharePoint Embedded application is faster — typically weeks rather than months for a first implementation. The bulk of the engineering work is the Microsoft Graph integration and the consuming-tenant onboarding flow, both of which are well-supported by documentation and SDKs. Time-to-value is materially shorter. **When this favours WOPI:** Effectively never, for a greenfield build. (For organisations that already have a working WOPI host, the calculus is entirely different — see the next decision factor.) **When this favours SharePoint Embedded:** Greenfield builds. Almost without exception, getting to a working embedded document editing experience is faster on SharePoint Embedded than on WOPI for an organisation that does not already have WOPI infrastructure. ### Decision Factor 8: Existing Investment **If you already have a working CSPP WOPI host.** The migration cost from WOPI to SharePoint Embedded is non-trivial. Data must be moved out of your storage and into containers. Identity flows must be redesigned. URLs change. Customer-facing experiences must be re-launched. Your CSPP partner status, which may have commercial value of its own, ends. None of this means migration is wrong — for many WOPI hosts it is the right strategic move — but the effort is substantial enough that the decision should be deliberate. We will publish a dedicated migration playbook in May 2026. **If you have no existing investment.** The decision is materially simpler. Start with SharePoint Embedded unless one of the WOPI-favouring decision factors above applies decisively to your situation. ### A Decision Matrix The structured way to apply the framework is to score each decision factor for your specific situation. The table below is a practical worked example for three common archetypes. | Decision Factor | B2B SaaS (project management, contracts, etc.) | Regulated-industry ISV (financial services / healthcare with strict residency) | Established CSPP Plus partner with backstage integration | |---|---|---|---| | Storage ownership | Embedded | WOPI | WOPI | | Identity model | Embedded | Embedded | Either | | Operational responsibility | Embedded | Either | WOPI (already operating) | | Licensing and commercial | Embedded | Either | WOPI | | Feature surface | Embedded (coauthoring, Copilot) | Either | WOPI (backstage) | | Customer identity boundary | Embedded | Embedded | Either | | Migration cost (greenfield) | Embedded | Embedded | n/a | | Existing investment | n/a | n/a | WOPI | | **Recommendation** | **SharePoint Embedded** | **WOPI** (storage residency dominates) | **WOPI** (CSPP Plus features and existing investment dominate) | The pattern is clear. SharePoint Embedded is the right answer for the majority of greenfield ISV scenarios. WOPI is the right answer when one of two specific conditions holds: a hard storage-sovereignty requirement that SharePoint Embedded cannot meet, or an existing investment whose sunk cost (and CSPP Plus feature reliance) outweighs the migration benefit. ### Common Misconceptions **"SharePoint Embedded is just a wrapper around SharePoint."** No. Containers are isolated, ISV-owned, and addressable through Graph. They are not visible inside any consuming tenant's SharePoint admin centre by default. The platform shares the underlying infrastructure that powers SharePoint and OneDrive, but the consumption model and the developer experience are deliberately distinct. **"WOPI is being deprecated."** No. WOPI remains a fully supported integration model. Cloud Storage Partner Program membership remains open. Microsoft has stated clearly that both paths will be maintained going forward. The shift is in *recommended path for new entrants*, not in support for either model. **"SharePoint Embedded means our customers need a Microsoft 365 subscription."** Not necessarily. The application's tenant carries the licensing. Consuming customers need an Entra ID tenant (which is free to create) and may need specific Microsoft 365 SKUs only if they want certain integrated features (notably Copilot interaction inside SharePoint Embedded documents). **"WOPI is dead because Microsoft does not promote it any more."** Microsoft is promoting SharePoint Embedded heavily because it is the new platform. The promotion does not signal deprecation of WOPI. As an architectural pattern WOPI remains genuinely valuable, particularly for the storage-centric and CSPP-aligned business models it was designed to support. ### How McKenna Approaches the Decision in Engagements When McKenna Consultants advises a client on which path to take, we work through the eight decision factors above explicitly. We have built and continue to operate WOPI hosts for CSPP partners; we are building and operating SharePoint Embedded applications for SaaS ISVs and enterprise customers. Our advice is not pre-committed to either platform — it is determined by the client's specific situation. In a typical advisory engagement we deliver: - A scored decision matrix for the eight factors above, applied to the client's product and business situation. - An architecture sketch for the recommended path, including the major moving parts and the work breakdown. - A recommendation on time-to-market, total cost of ownership, and the key engineering risks. - Where applicable, a hybrid recommendation — for example, organisations that retain their existing WOPI investment for one product line while building new product lines on SharePoint Embedded. If your organisation is making this decision now, we would be happy to walk through the framework with you. McKenna Consultants is a UK-based Microsoft document integration consultancy with 20+ years of experience across SharePoint, Office automation, WOPI, the Cloud Storage Partner Program, and now SharePoint Embedded. [Contact us](https://www.mckennaconsultants.com/contact/) to discuss your situation. --- # What is SharePoint Embedded? Microsoft's Modern Path for Embedding 365 Document Editing **Canonical URL:** https://www.mckennaconsultants.com/what-is-sharepoint-embedded-microsoft-s-modern-path-for-embedding-365-document-editing/ **Author:** Nick McKenna **Published:** 7 April 2026 **Category:** SharePoint Embedded ## What is SharePoint Embedded? Microsoft's Modern Path for Embedding 365 Document Editing For more than a decade, organisations that wanted to embed Microsoft Word, Excel, or PowerPoint editing into their own software had two practical choices: build a WOPI host and join the Cloud Storage Partner Program, or build a thin shim around OneDrive and SharePoint via the Microsoft Graph API. Neither was straightforward. WOPI is technically demanding, requires storing and serving the user's documents from your own infrastructure, and depends on Microsoft accepting your business into the Cloud Storage Partner Program. A direct OneDrive or SharePoint integration meant exposing your users to the complexity of an existing Microsoft 365 tenant, which is rarely what a software product wants its users to encounter. In late 2023 Microsoft announced a third option, and across 2024 and 2025 it matured into a production-grade platform service: **SharePoint Embedded**. By the start of 2026, SharePoint Embedded has become Microsoft's preferred path for embedding Microsoft 365 document editing into third-party applications — and the strategic centre of gravity in the Microsoft document integration market is shifting accordingly. This article explains what SharePoint Embedded is, how it differs architecturally from WOPI and from the broader Microsoft 365 platform, the licensing and consumption model, and the situations in which SharePoint Embedded is the right choice. It is the foundational explainer for a practice area McKenna Consultants is investing heavily in alongside our long-standing WOPI and Cloud Storage Partner Program work. ### The Problem SharePoint Embedded Solves Software vendors building line-of-business applications routinely encounter the same product requirement: users want to author and edit Microsoft Office documents *inside the application*, without exporting files, without launching a separate Office application, and without the application's identity disappearing as soon as the user lands in a Microsoft user interface. Three categories of integration historically tried to solve this: 1. **Office Online via WOPI.** A WOPI host stores the user's documents in its own infrastructure and exposes them to Office for the web through the WOPI protocol. Your application keeps full ownership of storage, identity, and the user experience around the document. This works extremely well — but it requires building and operating a WOPI host, joining the Cloud Storage Partner Program, and managing the security, scale, and update obligations that go with it. 2. **Microsoft Graph against the user's OneDrive.** A simpler model in which the application authorises against the user's existing Microsoft 365 tenant and reads or writes documents stored there. This requires the user to *have* a Microsoft 365 tenant, exposes users to its administrative model, and routes document storage through their organisation rather than yours. 3. **Local Office automation or commercial conversion libraries.** Older approaches relying on server-side Office automation, headless conversion, or third-party rendering libraries. These produce inferior fidelity, do not enable real-time collaboration, and create their own commercial and licensing risks. SharePoint Embedded is Microsoft's answer to a clear gap: the Software-as-a-Service application that wants Microsoft 365 document editing as a *feature*, embedded into its own UI, with its own identity model, but does not want to build and operate a full WOPI host and does not want to depend on each user having an enterprise Microsoft 365 subscription. ### What SharePoint Embedded Actually Is SharePoint Embedded is a Microsoft 365 platform service that exposes the storage, identity, collaboration, and Office editing capabilities of SharePoint and OneDrive as a programmatic surface that third-party applications can consume through the Microsoft Graph API. It is, in plain language, a way to use Microsoft's storage and Office editing infrastructure inside your own application — without users needing to see SharePoint, without them needing a SharePoint subscription of their own, and without you needing to build a WOPI host. A few core concepts define the model. **Containers.** A *container* is a SharePoint Embedded storage scope. It is conceptually similar to a SharePoint site or a OneDrive drive, but it is owned by your application — not by an end user or by a customer's Microsoft 365 tenant administrator. Each container holds files, supports the full Office collaboration feature set (coauthoring, sensitivity labels, version history, retention), and is addressable via Microsoft Graph endpoints. Most applications will create many containers — for example, one per customer organisation, one per project, or one per workspace inside the application. **Container types.** A *container type* is a registered descriptor that tells SharePoint Embedded how a class of containers should behave. Container types are owned by an ISV's application registration and define the permissions model, the consuming-tenant authorisation flow, and the application-level metadata that governs how containers are created and used. Every container belongs to exactly one container type, and a container type is registered once per ISV per Microsoft 365 tenant model that the application supports. **Microsoft Graph as the API surface.** Once a container type is registered and a container is provisioned, all programmatic interaction happens via Microsoft Graph. Listing folders, uploading files, creating subscriptions to change events, launching Office editing — these are all Graph operations. There is no separate SharePoint Embedded API; Microsoft has consciously routed the platform through Graph, so existing investments in Graph clients, SDKs, and tooling carry over directly. **Office editing as a built-in capability.** SharePoint Embedded gives you the Office editing experience for free, without you needing to implement WOPI. When a user opens a document from a container, the file is rendered through Office for the web with full coauthoring, sensitivity label enforcement, retention, Microsoft Purview integration, and Copilot capabilities — all exactly as they would behave in a first-class SharePoint or OneDrive context. **Identity isolation.** Although containers live in the Microsoft 365 platform, they are not visible inside any consuming organisation's SharePoint admin centre by default. They are owned by your application and operate under the application's identity. Consuming tenants can opt to govern your containers through Microsoft Purview if they wish, but the default position is that containers are an extension of your software product, not a part of the customer's SharePoint estate. This architecture has a profound implication: an application built on SharePoint Embedded can offer a complete Office editing experience without ever exposing the user to a SharePoint URL, a SharePoint admin centre, or a SharePoint licensing conversation. The user just sees your application — and an Office editing surface that happens to be fully Microsoft-grade. ### How SharePoint Embedded Differs from a WOPI Integration For organisations that already understand WOPI, the contrast is illuminating. The two approaches solve overlapping problems but with very different architectural commitments. **Storage ownership.** A WOPI integration stores the user's documents in *your* infrastructure. You operate the file store, the backup regime, the compliance posture, and the data residency boundaries. SharePoint Embedded stores documents inside Microsoft's infrastructure, in a Microsoft-managed region. You retain logical ownership through the container model, but the bytes live in Microsoft's data centres. **Identity model.** WOPI relies on access tokens that your application issues and that the Office client validates via your discovery endpoints and proof key infrastructure. SharePoint Embedded uses Microsoft Entra ID — your application registers in Entra ID, requests delegated or application permissions, and acquires Graph tokens through standard OAuth 2.0 flows. There are no proof keys to rotate. **Operational responsibility.** A WOPI host has standing operational obligations: discovery document availability, certificate rotation, proof key validation correctness, conformance with each Microsoft Office update, and 24×7 endpoint reliability. SharePoint Embedded shifts all of this to Microsoft. Your operational responsibility shrinks to your own application code and your own integration with Graph. **Licensing and commercial model.** WOPI requires Cloud Storage Partner Program membership, which involves business-level engagement with Microsoft, partner agreements, and (for advanced features) the CSPP Plus tier. SharePoint Embedded uses a consumption-based model — you are billed for storage, transactions, and bandwidth associated with your containers, with no separate partner programme to join. Either model can be cheaper depending on the shape of your business, but the commercial *posture* is fundamentally different. **Feature surface.** Some features still favour each path. WOPI hosts in the CSPP Plus programme can offer backstage integration, geo-fencing under partner control, and chunked file transfer with custom protocols. SharePoint Embedded brings native coauthoring, sensitivity labels, retention, and Microsoft Purview integration without any additional implementation work. Copilot integration is fully supported on both, but the SharePoint Embedded path is more direct because the documents already live inside the Microsoft 365 trust boundary. We will publish a dedicated decision-framework article comparing SharePoint Embedded and WOPI in detail later in Q2. For now the headline is straightforward: most new entrants should evaluate SharePoint Embedded first; established CSPP partners and applications with hard storage-sovereignty requirements remain firmly in the WOPI camp. ### When SharePoint Embedded Is the Right Choice The strongest cases for SharePoint Embedded share a small set of characteristics. **You are a software vendor, not a storage provider.** If your business is selling a SaaS product whose users happen to need to edit Office documents — a project management tool, a contract management platform, a clinical record system, a learning platform — SharePoint Embedded is the natural fit. You do not want to be in the storage business, and SharePoint Embedded means you are not. **You want to sell to customers who do not have or do not use Microsoft 365.** SharePoint Embedded does not require your customers to have a Microsoft 365 tenant. The platform is licensed and operated by *your* application's Microsoft tenant, and your customers consume it through your software. This is a substantial commercial advantage when targeting markets where Microsoft 365 adoption is not universal or where the customer organisation deliberately keeps software vendors out of its corporate identity boundary. **You want native coauthoring, Copilot, and sensitivity labels with minimal effort.** These features are first-class in SharePoint Embedded and require no implementation work. In a custom WOPI host, coauthoring alone is a substantial engineering project, and Copilot integration adds further depth. **You do not have, and do not want to acquire, the operational discipline to run a WOPI host at scale.** A high-availability WOPI host has non-trivial requirements around discovery uptime, certificate management, proof key correctness, and Office release tracking. For organisations that would rather invest engineering effort in their core product, SharePoint Embedded is a sensible trade. **You need a quick path to Office editing as a feature in a product that is otherwise unrelated to Microsoft 365.** SharePoint Embedded is the fastest credible route from "we want Office editing" to "Office editing works in our product." ### When WOPI Remains the Right Choice SharePoint Embedded is not the right answer for every organisation, and we say so consistently. The cases where WOPI continues to win are clear: - Established Cloud Storage Partner Program members who have built their value proposition around being a customer-facing storage location inside Office. The CSPP partner journey, especially in the CSPP Plus tier, has features (notably backstage integration into the Office File menu) that SharePoint Embedded does not replicate. - Applications with hard storage-sovereignty requirements that are difficult to meet inside Microsoft's managed regions — for example, regulated environments where data must remain in a specific national jurisdiction outside Microsoft's available regions, or in a customer-controlled storage layer. - Applications where the storage layer itself is the product. Document management systems, enterprise content management vendors, and cloud storage businesses are not the right candidates for SharePoint Embedded — their value proposition is the storage, and giving it up to Microsoft would be giving up the product. Most organisations are not in these categories, which is why SharePoint Embedded has gained traction so quickly. ### The Licensing and Consumption Model SharePoint Embedded is sold on a consumption basis, billed through your Azure subscription. The three primary metered dimensions are storage, transactions (Microsoft Graph operations against your containers), and egress bandwidth. There is no per-user licence, no partner programme entry fee, and no requirement for the consuming customer to hold any Microsoft 365 SKU — although certain advanced features (notably Copilot interactions inside SharePoint Embedded documents) do require the consuming user to have appropriate Microsoft 365 licences. For most ISVs, this consumption model maps neatly to a per-customer or per-workspace cost dimension that can be passed through transparently or absorbed into a subscription tier. In practice, the storage and transaction dimensions dominate — egress is rarely the limiting factor — and the unit costs scale comfortably alongside SaaS gross margins. The full pricing surface evolves; consult Microsoft's current documentation for live rates. The point for this article is that SharePoint Embedded's commercial model is recognisable, predictable, and aligns the cost to the consumption — which is what software vendors generally want. ### What Implementation Looks Like at a High Level A working SharePoint Embedded application has four moving parts: 1. **An Entra ID application registration.** This is the identity under which your software interacts with SharePoint Embedded. The registration declares the Microsoft Graph permissions you need (delegated for user-level interaction, application for backend operations) and is consented to by each consuming customer's Entra ID administrator. 2. **A registered container type.** Created once per ISV, the container type is the descriptor that links your application registration to a class of containers. It declares the permissions model (which permissions on a container correspond to which actions) and is consumed by each customer tenant through a one-time authorisation flow. 3. **A Graph integration in your application.** Code that creates containers, lists files, manages permissions, and launches Office editing through Graph. Microsoft provides SDKs for the major languages and a comprehensive REST surface for everything else. 4. **A consuming-tenant onboarding flow.** A first-run experience in which an administrator of the customer organisation grants your application permission to create containers in their tenant context. This is a one-time consent that maps to the container type registration. We will cover this implementation in step-by-step technical detail in a later Q2 2026 article. For organisations evaluating SharePoint Embedded for the first time, the headline is that the surface area is bounded — there are not dozens of services to learn — and the bulk of the engineering work is integrating Graph, which most ISVs working in the Microsoft ecosystem already do. ### How SharePoint Embedded Sits Alongside Office Add-Ins and AI Three of McKenna Consultants' four practice areas converge on SharePoint Embedded. **Office Add-Ins.** A SharePoint Embedded application that integrates Office for the web is an obvious place to surface custom add-ins. The same Office.js APIs that power task panes in Outlook, Word, Excel, and PowerPoint are available inside the embedded editor, which means you can ship a tailored editing experience for documents stored in your containers. This is a natural pairing for any application that wants to extend the core Office editing surface with its own logic. **AI and Copilot.** Documents stored in SharePoint Embedded containers are first-class citizens for Microsoft 365 Copilot. The same grounding and indexing that Copilot uses across SharePoint and OneDrive applies to your container data — so an application built on SharePoint Embedded can offer Copilot capabilities to its users without operating its own retrieval pipeline. For ISVs whose product strategy includes embedding Copilot or building custom Copilot agents, SharePoint Embedded materially shortens the path. **Composable Commerce.** Less obvious, but increasingly common: B2B commerce platforms that need attached document workflows — quotes, contracts, specifications, signed agreements — find SharePoint Embedded a clean way to give their buyers and sellers an embedded document experience inside the commerce flow. This convergence is one reason SharePoint Embedded sits centrally in McKenna's Q2 2026 content strategy. It touches every other practice area we run. ### Where to Go Next If your organisation is evaluating SharePoint Embedded, the practical next steps are: - Read Microsoft's overview at [Microsoft's SharePoint Embedded overview](https://learn.microsoft.com/en-us/sharepoint/dev/embedded/overview). - Review the licensing model and the Microsoft Graph permissions surface. - Identify a candidate use case in your product where embedded Office editing would be valuable — typically a document workflow that today requires users to leave your application. - Decide whether SharePoint Embedded or a WOPI-based approach is the better architectural fit. (Our forthcoming decision-framework article will help; the short version is: in most new-build cases, start with SharePoint Embedded.) McKenna Consultants advises and builds on both SharePoint Embedded and WOPI integrations. We bring two decades of Microsoft document integration experience — initially with SharePoint and Office automation, then deeply with WOPI and the Cloud Storage Partner Program, and now with SharePoint Embedded as the modern path for embedding Microsoft 365 document editing into ISV products. If your organisation is evaluating which path to take, or planning a SharePoint Embedded build, we would be happy to discuss it. [Get in touch](https://www.mckennaconsultants.com/contact/) to start the conversation. --- # From AI Pilot to Production: Scaling Enterprise AI Agents Beyond the Proof of Concept **Canonical URL:** https://www.mckennaconsultants.com/from-ai-pilot-to-production-scaling-enterprise-ai-agents-beyond-the-proof-of-concept/ **Author:** Nick McKenna **Published:** 24 March 2026 **Category:** Artificial Intelligence ## From AI Pilot to Production: Scaling Enterprise AI Agents Beyond the Proof of Concept The numbers tell a stark story. Industry surveys consistently show that while enterprise investment in AI agent technology is surging, only 14% of organisations have production-ready AI agent solutions in place — and just 11% are actually running agents in production at scale. Meanwhile, Gartner predicts that 40% of enterprise applications will embed task-specific AI agents by the end of 2026. The gap between where most organisations are and where the market is heading is significant, and it is widening. For many organisations, this gap has a specific shape: a successful pilot. The proof of concept worked. Stakeholders were impressed. The AI agent demonstrated that it could handle the target workflow — processing invoices, resolving support tickets, drafting procurement recommendations, or triaging engineering alerts — with accuracy and speed that justified the investment. And then, somewhere between the pilot and the production deployment plan, progress stalled. This article addresses that gap directly. It is not about whether AI agents can add value in enterprise contexts — that question was settled in 2024. The question now is why so few organisations are successfully scaling AI agents to production, what the specific barriers are, and what a structured path from proof of concept to full enterprise deployment actually looks like. This is the territory that matters for CTOs and AI programme leads in 2026: not whether to deploy, but how to do it without the pilot success evaporating under production conditions. ### Why Pilots Succeed and Productions Fail Understanding the pilot-to-production gap requires understanding why the two environments are fundamentally different, not just in scale but in the conditions they impose on an AI agent. A pilot is optimised for demonstrating capability. The data is clean, the scope is narrow, the edge cases are excluded, and the success criteria are defined to showcase what the technology can do. A production environment is optimised for nothing — it is the full complexity of an enterprise operation, with the data quality issues, the edge cases, the concurrent users, the integrations that behave unexpectedly under load, and the organisational expectations that the system will simply work, every time. Three categories of failure account for most stalled AI agent deployments: **Reliability failures.** The pilot handled 200 test cases cleanly. Production handles 10,000 real cases per week, and 3% of them trigger failure modes that nobody anticipated. At pilot scale, a 3% failure rate is 6 edge cases that get escalated and manually handled. At production scale, it is 300 failures per week, each requiring human intervention, each eroding confidence in the system. **Cost failures.** The pilot budget covered API costs for a bounded test set. Production volumes reveal that the agent architecture is economically unviable at scale — the LLM inference costs, combined with the retrieval, tool invocation, and orchestration overhead, make each transaction more expensive than the human process it was meant to replace. **Operational failures.** Nobody built the monitoring. Nobody defined the alerting thresholds. Nobody established the rollback procedure when an agent behaves unexpectedly. Nobody owns the agent in production the way they own a traditional software system. The pilot was an experiment; production is a commitment the organisation is not structured to honour. These are solvable problems. But they require treating the transition from pilot to production as an engineering discipline in its own right — not as a straightforward scaling exercise. ### A Maturity Model for AI Agent Deployment Before addressing the specific technical and operational requirements, it is useful to establish a framework for where your organisation sits and what the path forward looks like. The following maturity model describes the progression from initial proof of concept through limited production to full enterprise deployment, with the defining characteristics and key metrics at each stage. #### Stage 1: Proof of Concept At the PoC stage, an AI agent has been built and validated against a representative but controlled dataset. The primary goal is demonstrating that the agent can perform the target task with acceptable accuracy. **Defining characteristics:** - Narrow scope: single task or workflow, clean input data - Manual evaluation of outputs against ground truth - No integration with live production systems - Success measured by task accuracy on test set - No operational infrastructure (monitoring, alerting, logging) **Key metrics:** Task accuracy on test set (target: >85% depending on use case), latency on representative inputs, estimated cost per transaction at target volume. **The exit criteria:** The PoC proves that the agent is technically capable. It does not prove that it is operationally viable. Moving to limited production requires shifting from demonstration to engineering. #### Stage 2: Limited Production At the limited production stage, the agent handles real workloads in a constrained scope — a subset of transaction types, a single business unit, or a capped volume — with human review mechanisms and clear escalation paths in place. **Defining characteristics:** - Real data, real users, real consequences (with guardrails) - Structured human-in-the-loop review for outputs above a confidence threshold - Basic monitoring and alerting operational - Defined escalation paths for agent failures - Cost tracking per transaction at real volumes - Formal feedback loops from reviewers to improvement backlog **Key metrics:** Production accuracy rate (target: >92%), escalation rate (target: <10% of transactions requiring human review), mean time to detection for agent failures, cost per transaction at actual volumes, user adoption rate among target users. **The exit criteria:** Limited production validates operational viability. The agent handles real complexity, the escalation rate is within acceptable bounds, the cost model works, and the organisation has demonstrated it can operate an AI agent as a production system rather than an experiment. #### Stage 3: Full Enterprise Deployment Full enterprise deployment means the agent operates at scale across the target scope, with production-grade reliability engineering, comprehensive governance, and the change management infrastructure to sustain adoption. **Defining characteristics:** - Full target volume and scope - Automated quality monitoring with statistical process control - Governance framework covering approval authorities, audit trails, and policy compliance - SLA commitments with defined remediation procedures - Integration with enterprise security and identity infrastructure - Established feedback loop from production telemetry to model improvement **Key metrics:** System availability (target: 99.5%+ for business-critical agents), accuracy drift detection (automated alerts when accuracy degrades >2% from baseline), cost per transaction against target unit economics, NPS or user satisfaction from agent-assisted workflows, time-to-escalation for agent failures. ### Technical Barriers to Production: What Actually Breaks #### Reliability Engineering for Production Agents The reliability challenges of agentic AI deployments differ from those of conventional software because the failure modes are probabilistic and emergent rather than deterministic and predictable. A conventional API either works or it does not. An AI agent can produce an output that is plausible, syntactically correct, and subtly wrong in a way that downstream systems or users may not catch immediately. Production reliability engineering for AI agents requires: **Confidence scoring and threshold management.** Every agent output should carry a confidence score or uncertainty estimate. Outputs below a defined confidence threshold should be routed to human review rather than acted upon automatically. Calibrating these thresholds requires operational data — you cannot set them accurately in a pilot environment. **Input validation before agent processing.** Many agent failures originate in malformed, incomplete, or anomalous inputs rather than agent reasoning failures. Robust input validation — checking data completeness, format conformance, and value range plausibility before the agent processes the input — prevents a large class of production failures. **Idempotent tool invocations and transaction safety.** If an agent invokes an external tool (calling an API, updating a database, sending a notification) and the operation fails partway through, what happens? Agents that invoke external tools in production must be designed around idempotent operations with explicit transaction semantics — the same operation applied twice must produce the same result, and partial failures must leave systems in a defined, recoverable state. **Graceful degradation under load.** Define what the agent does when its dependencies (LLM APIs, retrieval infrastructure, external tool endpoints) are slow or unavailable. A production agent that fails silently or blocks indefinitely under load creates operational problems that are harder to resolve than a system that degrades gracefully with clear error states. #### Latency Optimisation at Enterprise Scale Pilot environments rarely impose meaningful latency constraints. A test suite that waits 8 seconds for each agent response is acceptable for evaluation. A production workflow where 10,000 employees wait 8 seconds for each response is not. The latency profile of an AI agent in production is determined by several components: LLM inference latency (highly variable by model and provider), retrieval latency (vector search, database queries), tool invocation latency (external API calls), and orchestration overhead (the logic connecting these components). Each must be profiled and optimised separately. Practical optimisations that routinely reduce end-to-end latency by 40-60%: - **Caching at the retrieval layer:** Many agent queries retrieve the same or similar context. A cache over retrieval results with appropriate TTLs eliminates repeated vector search for common queries. - **Parallel tool invocation:** Where an agent needs to call multiple independent tools, invoke them in parallel rather than sequentially. Sequential tool calls accumulate latency multiplicatively. - **Model selection by task:** Reserve frontier model capacity for the reasoning steps that require it. Use smaller, faster, cheaper models for classification, routing, and formatting tasks within the same agent workflow. - **Streaming responses:** For user-facing agents, streaming partial responses from the LLM as they are generated dramatically improves perceived latency even when total time is unchanged. #### Cost Management at Scale The economics of an AI agent change substantially between pilot and production. A pilot budget covers hundreds or thousands of LLM inference calls. Production volumes involve millions. The cost model that seemed acceptable on a pilot budget often becomes untenable when extrapolated to full production volume. The key levers for cost management in production AI agent deployments: **Token efficiency.** Every token sent to and received from an LLM costs money. Bloated system prompts, verbose retrieval outputs, and over-specified instructions inflate costs without improving accuracy. Systematic prompt engineering — trimming context to the minimum that preserves accuracy — is worth more than most engineering teams assume. **Tiered model deployment.** Not every agent task requires a frontier model. A triage agent that classifies incoming requests and routes them to the appropriate specialist agent can use a model that costs a fraction of the frontier model price. A document summarisation agent does not require the same reasoning capability as an agent making compliance decisions. Map your agent architecture to the model capability each task genuinely requires. **Volume-based commercial arrangements.** At enterprise production volumes, usage-based API pricing becomes negotiable. Engage your LLM provider commercially once you have validated production volumes — the difference between list pricing and negotiated enterprise pricing at scale is material. **Caching for repeated patterns.** Semantic caching — where similar queries are served from cached responses rather than generating a new LLM response — can reduce token consumption by 20-40% for agent workloads with significant query repetition. ### Operational Requirements: Monitoring, Alerting, and Rollback The operational infrastructure that production AI agents require is distinct from conventional software monitoring. Standard infrastructure metrics (CPU, memory, error rates) are necessary but not sufficient. You also need to monitor the quality of what the agent is doing. **Production monitoring for AI agents should include:** - **Accuracy drift monitoring:** Track the distribution of agent outputs over time. Statistical process control methods (control charts, CUSUM algorithms) can detect when the distribution of outputs drifts from the baseline established during validation — an early warning of degraded accuracy before it becomes visible as user complaints. - **Confidence score distribution:** Monitor the distribution of agent confidence scores. A sustained shift toward lower confidence scores indicates the agent is encountering input patterns it is less certain about — often a precursor to accuracy degradation. - **Escalation rate tracking:** Monitor the rate at which agent outputs are being escalated to human review or overridden by users. An increasing escalation rate is a leading indicator of accuracy problems. - **Latency percentile tracking:** Monitor p50, p95, and p99 latency, not just average latency. Tail latency problems that affect 1% of requests are invisible in average metrics but highly visible to the users experiencing them. **Rollback strategy** is an operational requirement that is frequently overlooked until it is urgently needed. Define before deployment what the rollback procedure is if the agent produces a sustained accuracy degradation or catastrophic failure. This means: what system state needs to be restored, who has authority to invoke a rollback, what the fallback process for handling the affected workload is, and how quickly the rollback can be executed. A rollback plan that exists only as a vague intention to "switch it off" is not a rollback plan. ### Data Pipeline Engineering for Production Agent Workloads The retrieval-augmented generation (RAG) architectures that underpin most enterprise AI agents in 2026 depend on data pipelines that are often underestimated as an engineering challenge. The pilot may have used a static document corpus processed once before the demo. Production requires continuous data pipelines that keep the agent's retrieval context current, accurate, and clean. Production data pipeline requirements for agent workloads: **Incremental ingestion:** As source documents change, new documents are created, and outdated documents are retired, the vector index must be updated accordingly. Stale retrieval context produces confidently wrong agent outputs — a failure mode that is particularly damaging because the outputs appear authoritative. **Data quality controls at ingestion:** The quality of agent outputs is bounded by the quality of retrieved context. Chunking strategy, metadata tagging, deduplication, and content quality filtering at the ingestion stage directly affect retrieval relevance and agent accuracy. These controls need to be part of the data pipeline, not a one-off exercise done before the pilot. **Retrieval evaluation:** Monitor retrieval relevance in production using metrics such as recall at k (are the right documents appearing in the top-k results for representative queries?) and mean reciprocal rank. Retrieval relevance degrades as the corpus evolves, and this degradation must be detected and addressed before it degrades agent accuracy. ### Security and Access Control for Autonomous Agents When an AI agent is authorised to interact with enterprise systems autonomously — reading data, calling APIs, updating records, sending communications — the security model must be designed with the same rigour as any other system with enterprise access. **Principle of least privilege:** Each agent should be authorised only for the specific operations it requires for its defined task. An agent that summarises customer support tickets does not need write access to the customer record system. Scope authorisation explicitly and review it regularly. **Agent identity and authentication:** Agents must authenticate to enterprise systems using identities that are distinguishable from human user identities. This enables proper audit trails, allows agent access to be revoked independently of human user accounts, and prevents agents from inheriting the permissions of the human users who deploy them. **Prompt injection defences:** Production AI agents that process external content (user inputs, emails, documents, web pages) are vulnerable to prompt injection attacks — where malicious instructions embedded in processed content attempt to redirect the agent's behaviour. Input sanitisation, instruction hierarchy enforcement, and output validation are the primary defences and must be implemented as part of production security controls. **Audit logging for regulatory compliance:** Every agent action — what data was retrieved, what tools were invoked, what decisions were made — must be logged with sufficient fidelity to support audit and compliance requirements. The audit trail for an autonomous AI agent is not the system logs of the LLM API; it is the structured record of agent reasoning and action that compliance teams can examine. ### Change Management and User Adoption Technical readiness is necessary but not sufficient for production success. The agentic AI enterprise deployment strategy that fails most often is not the one that gets the technology wrong — it is the one that gets the change management wrong. The organisational dynamics of AI agent deployment are not straightforward. Users who see the agent as a threat to their roles will find subtle ways to undermine it — providing poor quality inputs, overriding agent outputs reflexively rather than selectively, or declining to use the system at all. Managers who do not understand what the agent is doing will not trust it with consequential decisions. Effective change management for AI agent deployment includes: - **Transparent communication about what the agent does and does not do:** Overpromising capability creates trust deficits when edge cases surface. Users who understand the agent's scope and limitations are better positioned to use it effectively. - **Progressive autonomy expansion:** Start with the agent in an advisory capacity, where its outputs inform human decisions rather than replacing them. Expand agent autonomy as user confidence and measured accuracy justify it. This is the limited production stage of the maturity model — and it serves a change management purpose as much as a technical one. - **User feedback mechanisms:** Build feedback mechanisms that allow users to flag incorrect agent outputs and provide corrections. This serves both the operational monitoring purpose (tracking escalation rates) and the cultural purpose — users who can influence agent behaviour feel agency rather than displacement. - **Success story communication:** As the agent delivers measurable value — time saved, error rates reduced, throughput increased — communicate those outcomes actively. Production adoption compounds when users see evidence that the system delivers on its promise. ### Governance Frameworks That Enable Progressive Deployment The enterprise AI governance framework 2026 landscape has matured considerably from the early, aspirational policy documents of 2023-2024. Organisations deploying agents in production need governance that is operationally functional, not just philosophically sound. A governance framework for production AI agent deployment should address: **Approval authorities and decision boundaries:** Define explicitly what decisions an agent is authorised to make autonomously, what decisions require human confirmation, and what decisions agents are categorically excluded from. These boundaries should be documented, enforced technically where possible, and reviewed periodically as the agent's track record develops. **Model change governance:** When the underlying LLM is updated by the provider, or when you change the retrieval corpus, the system prompt, or the tool definitions, what validation is required before the change is deployed to production? Model changes that would be inconsequential in a conventional software system can materially affect agent behaviour. A change control process for AI agent configuration is a production governance requirement. **Incident classification and response:** Define what constitutes an AI agent incident (incorrect output with material consequence, unexpected behaviour, security event), what the escalation and response procedure is, and who has authority to invoke remediation actions. This should be part of the existing incident management framework, not a separate process. **Periodic accuracy review:** Establish a cadence for reviewing agent accuracy against updated ground truth. The agent's performance envelope may shift as the operational context changes — new product lines, revised policies, updated regulatory requirements. Periodic review catches drift that continuous monitoring may not detect. ### The Path Forward for UK Enterprises For UK organisations navigating the agentic AI enterprise deployment strategy in 2026, the pilot-to-production gap is a real but tractable challenge. The organisations closing it most successfully share a common characteristic: they treat the transition as a distinct engineering and organisational programme, not as a straightforward extension of the pilot. The scaling AI agents production enterprise challenge requires five things to come together simultaneously: reliability engineering that handles production complexity, cost management that validates unit economics at scale, operational infrastructure that provides genuine observability into agent behaviour, security and governance frameworks that satisfy enterprise and regulatory requirements, and change management that builds rather than erodes user trust. None of these are uniquely AI problems. They are engineering and organisational disciplines applied to a new category of system. The organisations that have successfully deployed agentic systems at scale are those that approached production deployment with the same rigour they apply to any complex enterprise system — not those that assumed that because the pilot worked, production would follow naturally. ### How McKenna Consultants Supports Production AI Agent Deployment McKenna Consultants works with UK enterprises that have demonstrated AI agent capability in pilot and need to close the gap to production deployment. Our AI consultancy for production deployment covers the full transition: reliability engineering and architecture review, cost modelling and optimisation, monitoring and observability design, security and access control implementation, governance framework development, and the change management support that determines whether production adoption succeeds or stalls. We do not start from scratch — we work with the pilot infrastructure you have built and the organisational context you are operating in. Our approach is to identify the specific barriers between your current position and production readiness, address them in a structured programme, and leave you with the operational capability to run AI agents as production systems rather than perpetual experiments. If your organisation has a successful AI pilot that has not yet made it to production, [contact us](/contact/) to discuss a structured path to deployment. ### Conclusion The statistics are a useful anchor: 14% of organisations with production-ready AI agent solutions, 11% running agents in production, and a Gartner prediction that 40% of enterprise applications will embed task-specific AI agents by end of 2026. The implication is not that the technology is failing — it is that the discipline of production deployment has not kept pace with the enthusiasm for pilot experimentation. The AI pilot to production enterprise UK challenge in 2026 is not primarily a technology problem. It is an engineering discipline problem: reliability engineering, cost engineering, operational engineering, security engineering, and the organisational engineering of change management and governance. Organisations that approach it as such — with the same structured rigour they apply to any production system — are the ones closing the gap and capturing the operational value that successful pilots have demonstrated is genuinely available. The proof of concept proved the concept. Production proves the business case. The path between them is navigable, but it requires being walked deliberately. --- # AI-Powered Product Discovery with Elastic Path: Semantic Search and Natural Language Commerce **Canonical URL:** https://www.mckennaconsultants.com/ai-powered-product-discovery-with-elastic-path-semantic-search-and-natural-language-commerce/ **Author:** Nick McKenna **Published:** 17 March 2026 **Category:** B2B eCommerce ## AI-Powered Product Discovery with Elastic Path: Semantic Search and Natural Language Commerce The gap between how customers think about products and how keyword search engines index them has always been a source of friction in ecommerce. A B2B buyer searching for "something to clean oil off a concrete floor" does not want to type "industrial degreaser, solvent-based, concrete substrate compatibility". They want the system to understand their intent and surface the right products. Semantic search changes the equation. By representing products and queries as dense numerical vectors in a shared embedding space, it enables AI-powered ecommerce search with natural language to work at the level of meaning rather than lexical overlap. Elastic Path's composable architecture gives development teams a structured pathway to implement natural language product discovery at scale — and this article is a technical guide to doing exactly that. ### Keyword Search vs Semantic Search: The Architectural Difference Understanding why semantic search produces better results requires understanding why keyword search fails. #### How Keyword Search Works Traditional keyword search — whether implemented with Elasticsearch, Solr, or a database full-text index — operates on token matching. A query is tokenised, stop words are removed, and the remaining terms are matched against an inverted index. Relevance ranking (BM25, TF-IDF) rewards documents containing query terms with high frequency relative to the corpus. The fundamental limitation is that keyword search is blind to meaning. It cannot recognise that "office chair for tall people" and "ergonomic seating, extended seat height" describe the same purchase intent. B2B catalogues are particularly vulnerable: buyers use application-level language ("something to seal a flange joint at 200°C") while product data uses specification-level language ("gasket material: PTFE, temperature rating: -200°C to 260°C"). These two representations share almost no tokens, so keyword search reliably fails to connect them. #### How Semantic Search Works Semantic search replaces token matching with vector similarity. An embedding model — typically a transformer-based neural network trained on large text corpora — encodes both the product data and the query into dense vectors of several hundred to several thousand floating-point dimensions. These vectors capture semantic relationships: words and phrases that appear in similar contexts across the training data end up positioned close together in vector space. At query time, the user's natural language input is encoded into a query vector. The search engine then finds product vectors whose angle or distance from the query vector falls below a threshold, ranked by cosine similarity. Products that are semantically related to the query surface, even if they share no tokens with it. This architecture enables AI-powered ecommerce search with natural language queries that would defeat any keyword system: "waterproof jacket for a Scottish winter" or "printer paper for a busy office that won't jam". The embedding model handles the vocabulary gap automatically. #### Hybrid Search: Combining Both Approaches In practice, the most robust production systems implement hybrid search: a combination of keyword matching and vector similarity, whose results are fused using reciprocal rank fusion or a learned ranker. Hybrid search retains the precision of keyword matching for exact SKU lookups, model numbers, and brand-specific queries, while adding the recall advantages of semantic matching for natural language and intent-driven queries. This is the architecture McKenna Consultants recommends for most Elastic Path implementations. ### Elastic Path's Native Search Capabilities Elastic Path provides a built-in product search service as part of its composable commerce platform. The native search layer supports filtering, faceting, and basic text matching across catalogue data. For many B2C catalogues with modest complexity, the native offering handles standard search requirements adequately. Elastic Path's architecture also exposes the product catalogue through its EPCC (Elastic Path Commerce Cloud) API, which gives development teams clean access to catalogue data, product attributes, pricing, inventory, and hierarchy information. This API-first design is the foundation for integrating more capable search infrastructure when requirements demand it. For Elastic Path semantic search AI integration, the key capability is the platform's openness. Because Elastic Path does not lock product data behind a proprietary search layer, teams can synchronise catalogue data to an external vector store, build an embedding pipeline that runs on product upsert events, and replace the default search endpoint with a semantic layer — all without modifying the commerce backend itself. #### Connecting an Embedding Pipeline to Elastic Path The typical architecture for Elastic Path semantic search AI integration involves three components: **1. Catalogue synchronisation.** A webhook-driven or polling process listens to Elastic Path product events and writes product records — including name, description, category hierarchy, specifications, application notes, and enriched search context — to a vector store. **2. Embedding generation.** Each product record is passed through an embedding model to produce a dense vector representation. Commerce-specific fine-tuned models (Cohere, sentence-transformers shopping variants) often outperform general-purpose models. Vectors are stored alongside product metadata in the vector store. **3. Query embedding and retrieval.** The user's query is embedded using the same model; the vector store executes an approximate nearest-neighbour (ANN) query to retrieve the top-k products. Results are re-ranked if needed, enriched with live pricing and inventory from Elastic Path's API, and returned to the frontend. Suitable vector stores include Pinecone, Weaviate, Qdrant, and pgvector. Selection depends on deployment constraints, catalogue size, and query volume. ### AI Agents and Conversational Product Discovery Beyond single-query semantic search, AI agents ecommerce product discovery opens a more sophisticated interaction model: a conversational interface where buyers can refine their requirements through natural dialogue, and an LLM orchestrates multiple API calls to surface and compare products. #### The Conversational Discovery Pattern In this pattern, an LLM acts as an orchestration layer between the buyer and the commerce API. A typical session might proceed as follows: - **User**: "I need a pump for moving water in a light industrial setting, about 50 litres per minute." - **Agent**: Calls the semantic search API with the intent extracted from the message, retrieves candidate products, checks inventory via Elastic Path API, and returns a curated shortlist with a summary of trade-offs. - **User**: "Which of those would handle slightly sandy water without clogging?" - **Agent**: Uses the conversation history and product specifications to filter and re-rank, potentially fetching additional product attributes from Elastic Path to answer the follow-up. The LLM does not directly query Elastic Path. Instead, it uses tools — structured function calls — that invoke the semantic search layer and the Elastic Path API. This tool-calling pattern, supported in OpenAI, Anthropic, and open-weight model frameworks such as LangChain, keeps the LLM in an orchestration role rather than a retrieval role. The commerce API remains the authoritative source of truth for pricing and availability. #### Implementing Tool Calls for Commerce Discovery For natural language product discovery B2B implementations, the toolset exposed to the LLM typically includes: - `searchProducts(query: string, filters: object)` — semantic search with optional structured filters for category, price range, or attribute values - `getProductDetails(productId: string)` — fetch full product data including specifications and documentation links - `checkInventory(productId: string, quantity: int)` — live stock check from Elastic Path - `getPricing(productId: string, accountId: string)` — account-specific pricing where applicable in B2B scenarios - `comparePProducts(productIds: string[])` — retrieve and format a comparison table Each tool call is implemented as an API call to Elastic Path or the semantic search layer. The LLM selects which tools to invoke and in what sequence based on the buyer's messages and the results of previous tool calls. This architecture also enables AI agents ecommerce product discovery at the backend level — autonomous agents that periodically analyse customer journeys, identify catalogue gaps where searches returned no results, and flag product data quality issues for merchandising teams. ### Product Data Enrichment for AI Readability The quality of semantic search results is fundamentally constrained by the quality of the product data embedded into the vector store. Products with thin, specification-only descriptions perform poorly against natural language queries. Product data enrichment is therefore not optional — it is a prerequisite for effective AI-powered ecommerce search with natural language. #### Structured Attribute Completeness Before adding natural language content, ensure all structured attributes are populated. For semantic search, attributes serve two roles: they contribute to the text that gets embedded, and they provide filter dimensions that can be applied after vector retrieval to narrow results. Incomplete attribute data degrades both. Audit your Elastic Path catalogue for attribute coverage. Common gaps in B2B catalogues include missing compatibility information, absent application context, and specification data that exists in PDFs but has not been extracted into structured fields. Prioritise attributes that buyers are likely to include in natural language queries: material, size, application, compatibility, and industry sector. #### Natural Language Descriptions Short, specification-focused descriptions embed poorly because they lack the contextual language that connects them to buyer intent. For each product category, write or generate supplementary descriptions covering: the problem the product solves, typical use contexts, the likely buyer profile, and common synonyms for the product type and its attributes. These descriptions do not need to appear on product pages. Store them in a dedicated `search_context` field that is embedded but excluded from the rendered storefront, keeping the design clean while giving the embedding model rich semantic material. #### Embedding Generation Strategy The concatenation strategy matters significantly. Embedding a product name alone produces a narrow representation; embedding a structured concatenation of name, description, category path, key attributes, and search context captures far more of the product's semantic surface area. A practical template for B2B products: ``` {product_name}. {category_path}. {short_description}. Used for: {application_notes}. Compatible with: {compatibility_info}. {search_context} ``` Validate this template against a held-out set of representative buyer queries before indexing the full catalogue. #### Keeping Embeddings Current Embeddings must be regenerated whenever product data changes. Build embedding regeneration into your Elastic Path webhook handling: on product update events, re-embed the affected product and upsert the vector in the vector store. For bulk catalogue updates, trigger a full re-index job. Stale embeddings are a common source of degraded search quality in production systems. ### Search Personalisation with Customer Context Elastic Path's B2B capabilities — account hierarchies, contract pricing, buyer roles — provide rich context for personalising semantic search results beyond static relevance scoring. Three techniques are particularly effective: **Account-level catalogue filtering.** Use Elastic Path's catalogue rules to determine which products are available to the buyer's account and pre-filter the vector search to the eligible subset. This prevents surfacing products the buyer cannot purchase. **Purchase history re-ranking.** Fetch the buyer's order history from Elastic Path and boost products from categories they have previously purchased. Familiar options rank higher, reducing the cognitive load of product selection. **Session context accumulation.** In conversational discovery sessions, accumulate signals — categories browsed, products viewed, queries submitted — and use these to adjust the query vector or apply soft filters to subsequent searches, giving the session a sense of adaptive intent understanding. ### Native Elastic Path Search vs Algolia vs Coveo Choosing the right search infrastructure is a significant architectural decision. Here is a practical comparison of the three main options for teams building on Elastic Path. #### Elastic Path Native Search **Best for**: Standard B2C catalogues with straightforward search requirements, teams that want to minimise infrastructure complexity, and projects where semantic search is not a current requirement but may be added later. **Strengths**: Zero additional infrastructure, no data synchronisation overhead, fully integrated with catalogue and pricing data. **Limitations**: Limited semantic search capabilities, less control over ranking algorithms, not designed for large B2B catalogues with complex attribute structures or natural language discovery requirements. #### Algolia **Best for**: Teams wanting powerful keyword and faceted search with excellent developer experience, and comfortable extending it with Algolia's NeuralSearch for semantic capabilities. **Strengths**: Extremely fast, mature faceting and A/B testing, NeuralSearch adds vector-based retrieval, strong frontend component library. **Limitations**: Cost scales with record count and query volume. Data synchronisation pipeline required from Elastic Path. Less flexible for deep B2B personalisation. NeuralSearch is newer and less battle-tested than the core keyword offering. **When to choose Algolia**: B2C or B2B2C contexts where search speed and merchandising flexibility are top priorities and the catalogue is large but not deeply technical. #### Coveo **Best for**: Large enterprise B2B implementations requiring AI-powered relevance, deep personalisation, and a unified index across commerce, content, and support. **Strengths**: Purpose-built for enterprise AI-powered search, strong personalisation engine, proven B2B case studies, unified content and commerce index. **Limitations**: Significant cost and implementation complexity. Requires substantial investment in integration and ongoing tuning. Often overkill for mid-market implementations. **When to choose Coveo**: Enterprise B2B scenarios with complex catalogues and a requirement to unify product search with technical documentation or support content. #### Our Recommendation For most Elastic Path implementations, the decision sits between native search and Algolia. Native search is sufficient for straightforward requirements. Algolia adds meaningful value when merchandise control, search analytics, and speed are priorities. A custom semantic layer (vector store plus embedding pipeline) is the right choice when natural language product discovery B2B is a core requirement and the team wants full control over the relevance model without Algolia's pricing exposure. Coveo makes sense only at enterprise scale with budget and timeline to match. ### Measuring Search Relevance and Conversion Impact Implementing AI-powered ecommerce search without a measurement framework leaves you unable to demonstrate value or diagnose degradation. Establish the following metrics before go-live. **Zero-result rate.** The percentage of queries that return no results. For semantic search, this should approach zero — even poor queries return something. Monitor it as a quality gate. **Click-through rate (CTR) by rank position.** Track which search results buyers click and at which position. Healthy semantic search produces high CTR at positions 1-3. A flat CTR distribution suggests ranking quality issues. **Search-to-conversion rate.** The percentage of search sessions that result in an add-to-cart or purchase. Compare this metric before and after semantic search deployment using A/B testing where possible. **Query reformulation rate.** How often does a buyer submit a second query immediately after the first? High reformulation rates indicate the first query failed to surface satisfying results. **Mean reciprocal rank (MRR).** If you have a ground truth dataset of query/product relevance pairs — constructible from historical order data — MRR provides a single scalar metric of retrieval quality to track as embedding or ranking configuration changes. Algolia and Coveo provide built-in analytics dashboards; for custom semantic layers, route search events into your analytics platform and build measurement dashboards in your BI tool of choice. ### Implementation Roadmap For teams starting from a standard Elastic Path deployment, the pragmatic sequence is: 1. **Audit and enrich product data** — Complete attribute coverage and write search context fields for priority categories (4–8 weeks for a mid-size B2B catalogue). 2. **Deploy vector infrastructure** — Stand up a vector store, configure the embedding pipeline, and index the enriched catalogue. 3. **Implement hybrid search** — Augment or replace the default search endpoint with a hybrid keyword/semantic layer, measuring retrieval quality against a representative query set before go-live. 4. **Integrate with the storefront** — Connect the new endpoint to the Elastic Path storefront, preserving existing facet and filter behaviour. 5. **Add conversational discovery** — Deploy the LLM orchestration layer as an optional interface initially, alongside the standard search box. 6. **Personalise and measure** — Introduce customer context signals, establish the measurement framework above, and iterate on ranking configuration. ### How McKenna Consultants Can Help McKenna Consultants brings together deep Elastic Path implementation experience and AI engineering capability. We have built composable commerce platforms on Elastic Path for B2B and B2C clients, and we design AI integrations that deliver real commercial impact beyond surface-level implementations. For AI-powered ecommerce search with natural language, we provide end-to-end delivery: product data audit and enrichment, embedding pipeline architecture, vector store configuration, LLM orchestration for conversational discovery, and measurement frameworks to demonstrate ROI. We advise on the native Elastic Path vs Algolia vs Coveo decision for each client's context, ensuring the investment matches the complexity of the problem. If you are planning an Elastic Path semantic search AI initiative for 2026, or evaluating whether your current search infrastructure can support natural language product discovery, we would welcome the conversation. [Get in touch with McKenna Consultants](/contact/) to discuss your product discovery requirements. --- # Building Custom PowerPoint Add-Ins for Enterprise Presentations **Canonical URL:** https://www.mckennaconsultants.com/building-custom-powerpoint-add-ins-for-enterprise-presentations/ **Author:** Nick McKenna **Published:** 10 March 2026 **Category:** Microsoft Office Add-In Developer ## Building Custom PowerPoint Add-Ins for Enterprise Presentations PowerPoint is the universal language of business communication. Financial results, strategic plans, client proposals, product roadmaps, board updates — virtually every significant business decision is shaped by a PowerPoint presentation at some point. Yet despite its central role in enterprise workflows, PowerPoint has historically received far less attention from custom add-in developers than Word or Excel. That gap is closing rapidly, and for good reason. Custom PowerPoint add-in development enables organisations to automate the creation of branded, data-driven presentations; enforce brand compliance across thousands of slides generated by distributed teams; and connect PowerPoint directly to live enterprise data sources for automated reporting decks. For enterprise development teams and ISVs building PowerPoint-based products, the Office.js PowerPoint API offers a mature, cross-platform foundation that runs on Windows, Mac, iPad, and PowerPoint for the web. This guide covers the PowerPoint JavaScript API in depth, the design patterns for enterprise add-ins, three practical use cases — financial reporting automation, brand compliance checking, and multilingual presentation generation — and how PowerPoint add-in development maps to Copilot agent integration. ### The PowerPoint JavaScript API: Core Capabilities The PowerPoint Office.js API gives developers programmatic access to the full structure of a presentation. Unlike the legacy VSTO model — which was Windows-only and required COM interop — the modern API is asynchronous, promise-based, and runs identically across all platforms where PowerPoint operates. All PowerPoint API operations execute inside a `PowerPoint.run()` context, which manages the request queue and batches operations for performance: ```typescript await PowerPoint.run(async (context) => { const presentation = context.presentation; const slides = presentation.slides; slides.load("items"); await context.sync(); console.log(`Presentation has ${slides.items.length} slides`); }); ``` #### Working with Slides Slides are the fundamental unit of a presentation. The API allows you to add, delete, reorder, and navigate slides programmatically. ```typescript await PowerPoint.run(async (context) => { const presentation = context.presentation; // Add a new slide based on a layout presentation.slides.add(); await context.sync(); // Access the newly added slide (last in the collection) const slides = presentation.slides; slides.load("items"); await context.sync(); const newSlide = slides.items[slides.items.length - 1]; newSlide.load("id"); await context.sync(); console.log(`New slide ID: ${newSlide.id}`); }); ``` For enterprise use cases, you will often want to insert slides from a template file or a slide library. The `insertSlidesFromBase64` method accepts a Base64-encoded PowerPoint file and inserts its slides into the current presentation, preserving all formatting, layouts, and master slide relationships: ```typescript async function insertTemplateSlides(base64Pptx: string, targetIndex: number): Promise { await PowerPoint.run(async (context) => { context.presentation.insertSlidesFromBase64(base64Pptx, { formatting: PowerPoint.InsertSlideFormatting.useDestinationTheme, targetSlideId: undefined }); await context.sync(); }); } ``` This is the foundation for template library add-ins, where users can browse a catalogue of pre-approved slide designs and insert them directly into their active presentation. #### Shapes, Text Ranges, and Content Manipulation Each slide contains a collection of shapes — the containers for all visible content including text boxes, images, tables, charts, and drawn shapes. Navigating and manipulating shapes is central to most enterprise add-in workflows. ```typescript await PowerPoint.run(async (context) => { const slide = context.presentation.slides.getItemAt(0); const shapes = slide.shapes; shapes.load("items/name,items/shapeType"); await context.sync(); for (const shape of shapes.items) { console.log(`Shape: ${shape.name}, Type: ${shape.shapeType}`); } }); ``` For text manipulation, the API provides access to text frames and text ranges within shapes, including paragraph and character-level formatting: ```typescript await PowerPoint.run(async (context) => { const slide = context.presentation.slides.getItemAt(0); const shapes = slide.shapes; shapes.load("items/name,items/textFrame"); await context.sync(); const titleShape = shapes.items.find(s => s.name === "Title 1"); if (titleShape) { const textRange = titleShape.textFrame.textRange; textRange.text = "Q4 2025 Financial Results"; textRange.font.size = 32; textRange.font.bold = true; textRange.font.color = "#1a1a1a"; await context.sync(); } }); ``` #### Images and Media Adding images to slides is a common requirement for automated reporting add-ins that embed charts, logos, or data visualisations. The `addImage` method on a slide accepts a Base64-encoded image string: ```typescript async function addChartImageToSlide(slideIndex: number, base64Image: string): Promise { await PowerPoint.run(async (context) => { const slide = context.presentation.slides.getItemAt(slideIndex); const image = slide.shapes.addImage(base64Image); // Position and size the image (values in points) image.left = 72; // 1 inch from left image.top = 144; // 2 inches from top image.width = 576; // 8 inches wide image.height = 324; // 4.5 inches tall await context.sync(); }); } ``` For financial reporting add-ins that generate charts server-side and embed them as images, this pattern allows fully automated chart insertion with precise positioning relative to other slide elements. #### Tables The PowerPoint table API allows programmatic creation and population of data tables — essential for financial data grids, comparison matrices, and summary tables in automated reporting decks. ```typescript async function insertDataTable(slideIndex: number, data: string[][]): Promise { await PowerPoint.run(async (context) => { const slide = context.presentation.slides.getItemAt(slideIndex); const rowCount = data.length; const colCount = data[0].length; const table = slide.shapes.addTable(rowCount, colCount, { left: 72, top: 180, width: 756, height: rowCount * 36 }); for (let row = 0; row < rowCount; row++) { for (let col = 0; col < colCount; col++) { const cell = table.getCell(row, col); cell.text = data[row][col]; if (row === 0) { // Style header row cell.textRange.font.bold = true; cell.textRange.font.color = "#ffffff"; cell.fill.setSolidColor("#c41e1e"); } } } await context.sync(); }); } ``` ### Task Pane Design for Presentation Workflows The task pane is the primary user interface surface for PowerPoint add-ins. Unlike Excel, where users interact heavily with the grid and formula bar, PowerPoint users spend most of their time working in the slide canvas — which means the task pane must be designed as a non-intrusive companion, not the primary workspace. #### Effective Task Pane Patterns **Content insertion panels.** The most common pattern is a browsable library of pre-approved content — slide templates, branded assets, approved copy blocks — that users can insert into their presentation with a single click. The task pane presents a searchable, filterable catalogue; the user selects an item; the add-in inserts it at the appropriate point in the active presentation. **Data source connection panels.** For reporting add-ins, the task pane provides the interface for selecting data sources, configuring parameters (date range, reporting entity, currency), and triggering the automated generation workflow. The user configures what they want; the add-in builds the slide deck. **Compliance and validation panels.** The task pane can display a real-time audit of the active presentation, flagging brand compliance issues — off-brand colours, unapproved fonts, oversized logos, missing disclaimers — with direct links to the offending shapes. Users can review issues and apply fixes individually or in bulk. **Translation and localisation panels.** For multilingual presentation workflows, the task pane allows users to select a target language, preview translated content, and apply translations to specific slides or the entire presentation. #### Sharing Context Between Slides PowerPoint add-ins using the shared runtime can maintain state across all open Office applications, enabling sophisticated workflows where the task pane state persists as users navigate between slides. This is particularly valuable for compliance checking add-ins that need to maintain a persistent audit model across the entire presentation: ```typescript // Store the compliance audit in shared runtime storage Office.context.document.settings.set("complianceAudit", JSON.stringify(auditResults)); await Office.context.document.settings.saveAsync(); ``` ### Enterprise Use Case 1: Automated Financial Reporting Decks One of the highest-value applications of custom PowerPoint add-in development is automated financial reporting. Finance teams at enterprise organisations typically spend significant time each month reformatting data from ERP and BI systems into standardised board and management packs. An add-in can eliminate most of this manual work. #### Architecture The add-in connects to a server-side API that has access to the relevant financial data (an ERP system, a data warehouse, or a BI platform). The user selects the reporting period and entity from the task pane. The add-in: 1. Fetches the data from the API. 2. Loads a master template presentation (from a SharePoint library or the add-in's hosted assets). 3. Extracts the template slides using `insertSlidesFromBase64`. 4. Populates text placeholders, tables, and image slots using the shape manipulation APIs. 5. Applies conditional formatting — for example, negative variances displayed in red. ```typescript async function generateFinancialDeck(reportingPeriod: string, entity: string): Promise { // Fetch data from the enterprise API const data = await fetchFinancialData(reportingPeriod, entity); // Load the template const templateBase64 = await fetchTemplateFromSharePoint("financial-report-template.pptx"); await PowerPoint.run(async (context) => { // Insert all template slides at the beginning context.presentation.insertSlidesFromBase64(templateBase64, { formatting: PowerPoint.InsertSlideFormatting.useDestinationTheme }); await context.sync(); // Populate each slide const slides = context.presentation.slides; slides.load("items"); await context.sync(); await populateKpiSlide(slides.items[0], data.kpis, context); await populateRevenueSlide(slides.items[1], data.revenue, context); await populateCostSlide(slides.items[2], data.costs, context); await populateVarianceSlide(slides.items[3], data.variances, context); }); } ``` This approach transforms what was a 2-4 hour monthly manual process into a sub-60-second automated workflow. The resulting deck is consistently formatted, data-accurate, and ready for review without the transcription errors that inevitably occur in manual processes. ### Enterprise Use Case 2: Brand Compliance Checking In large organisations, maintaining brand consistency across thousands of presentations created by distributed teams is a persistent challenge. Brand guidelines are published; training is delivered; and yet presentations circulate with off-brand colours, unapproved fonts, oversized logos, and placeholder text left unreplaced. A brand compliance add-in scans the active presentation and identifies violations against the organisation's defined brand standards. The implementation reads each shape on each slide and validates its properties against a compliance ruleset: ```typescript interface ComplianceViolation { slideIndex: number; shapeName: string; violationType: "colour" | "font" | "imageSize" | "placeholder"; description: string; shapeId: string; } async function runComplianceAudit(): Promise { const violations: ComplianceViolation[] = []; const approvedColours = ["#1a1a1a", "#ffffff", "#c41e1e", "#f5f5f5"]; const approvedFonts = ["Inter", "Inter Bold"]; await PowerPoint.run(async (context) => { const slides = context.presentation.slides; slides.load("items"); await context.sync(); for (let i = 0; i < slides.items.length; i++) { const slide = slides.items[i]; const shapes = slide.shapes; shapes.load("items/name,items/id,items/textFrame,items/fill"); await context.sync(); for (const shape of shapes.items) { // Check for placeholder text if (shape.textFrame && shape.textFrame.textRange) { shape.textFrame.textRange.load("text"); await context.sync(); const text = shape.textFrame.textRange.text; if (text.includes("[PLACEHOLDER]") || text.includes("Lorem ipsum")) { violations.push({ slideIndex: i, shapeName: shape.name, violationType: "placeholder", description: "Slide contains unreplaced placeholder text", shapeId: shape.id }); } } } } }); return violations; } ``` The task pane displays the violations in a prioritised list, grouped by slide. Users can click a violation to navigate directly to the offending slide and select the shape. For common violations — wrong font, incorrect colour — the add-in can offer a one-click fix that applies the correct brand attribute automatically. ### Enterprise Use Case 3: Multilingual Presentation Generation Global organisations regularly need to produce the same presentation in multiple languages for different markets. The traditional approach — copying the deck, forwarding it to translators, waiting, reformatting — is slow and error-prone, particularly when source content changes late in the process. A multilingual presentation add-in automates this workflow. The add-in identifies all text content in the presentation, sends it to a translation API (Azure Cognitive Services Translator or a custom enterprise translation service), and applies the translations back to the corresponding shapes while preserving all formatting: ```typescript async function translatePresentation(targetLanguage: string): Promise { const textMap: Map = new Map(); // First pass: collect all text await PowerPoint.run(async (context) => { const slides = context.presentation.slides; slides.load("items"); await context.sync(); for (const slide of slides.items) { const shapes = slide.shapes; shapes.load("items/id,items/textFrame"); await context.sync(); for (const shape of shapes.items) { if (shape.textFrame) { shape.textFrame.textRange.load("text"); await context.sync(); if (shape.textFrame.textRange.text.trim()) { textMap.set(shape.id, shape.textFrame.textRange.text); } } } } }); // Translate all collected text const translations = await translateBatch(Array.from(textMap.entries()), targetLanguage); // Second pass: apply translations await PowerPoint.run(async (context) => { const slides = context.presentation.slides; slides.load("items"); await context.sync(); for (const slide of slides.items) { const shapes = slide.shapes; shapes.load("items/id,items/textFrame"); await context.sync(); for (const shape of shapes.items) { const translation = translations.get(shape.id); if (translation && shape.textFrame) { shape.textFrame.textRange.text = translation; await context.sync(); } } } }); } ``` This two-pass approach — collect, translate, apply — is more efficient than processing each shape individually, since it allows the translation API to process all text in a single batched request. For large presentations with dozens of slides and hundreds of text shapes, this performance difference is significant. ### Integration with Enterprise Data Sources The most impactful PowerPoint add-ins are those that connect the presentation layer directly to the data that drives business decisions. Rather than requiring users to manually copy figures from a BI dashboard into a presentation, a well-designed add-in fetches data at generation time, ensuring the deck always reflects the current state of the business. Common integration patterns for enterprise PowerPoint add-ins include: **ERP and financial systems.** For management reporting, the add-in connects to an ERP API (SAP, Oracle, Microsoft Dynamics) to retrieve period actuals, budget figures, and variance calculations. These are inserted into pre-positioned table shapes and text placeholders. **Business Intelligence platforms.** Power BI, Tableau, and Qlik all expose APIs that allow programmatic retrieval of chart images and data. An add-in can fetch rendered chart images from these platforms and embed them into designated image slots on reporting slides. **CRM systems.** For sales decks and account review presentations, the add-in pulls live data from Salesforce or Dynamics — pipeline values, account history, renewal dates — and populates slides that would otherwise require manual data entry. **SharePoint and OneDrive.** Presentation template libraries hosted in SharePoint can be accessed programmatically using Microsoft Graph API calls from the add-in's backend. This allows template management to happen in SharePoint (with version control and access management) while the add-in surfaces the templates in a user-friendly task pane interface. ### Copilot Agent Integration for PowerPoint With Microsoft's unified manifest model, PowerPoint add-ins can be extended with Copilot agent capabilities, allowing users to trigger presentation workflows through natural language rather than clicking through a task pane interface. For a financial reporting add-in, Copilot integration might look like this: a user opens PowerPoint and asks, "Create the Q4 board pack for the UK region." Copilot recognises that this matches a skill in the installed reporting add-in, extracts the parameters (Q4, UK region), invokes the skill, and the presentation is generated automatically. The skill declaration in the unified manifest defines the natural language interface: ```json { "copilotAgents": { "declarativeAgents": [ { "id": "reportingAgent", "name": "Financial Report Builder", "description": "Generates standardised financial reporting presentations from enterprise data sources", "actions": [ { "id": "generateReport", "file": "api-plugin.json" } ] } ] } } ``` The corresponding OpenAPI definition in `api-plugin.json` describes the `generateReport` operation, including its parameters (`reportingPeriod`, `entity`, `reportType`). Copilot uses this schema to extract the right values from the user's natural language request. For brand compliance add-ins, a Copilot skill such as "Check this presentation for brand issues" provides an intuitive, low-friction entry point that requires no task pane navigation. The compliance audit runs, and Copilot summarises the results in natural language: "I found 4 brand compliance issues across 3 slides. Two shapes use an unapproved font and one slide contains placeholder text. Would you like me to fix them automatically?" As with other Office add-in types, the Copilot integration does not replace the task pane — it provides an additional interaction surface for users who prefer conversational commands, while the task pane remains available for complex, multi-step workflows that benefit from rich visual UI. ### Deployment Considerations Custom PowerPoint add-in development follows the same deployment model as other Office web add-ins. For enterprise deployments, the Microsoft 365 admin centre provides centralised deployment, making the add-in available to specified users, groups, or the entire organisation without individual installation. For ISV products, the Microsoft AppSource marketplace handles public distribution. The manifest (whether the legacy XML format or the modern unified JSON manifest) specifies the environments in which the add-in appears. For PowerPoint add-ins, the `workbook` host type is replaced with `presentation`: ```xml ``` With the unified manifest, the same add-in package can target multiple Office hosts, enabling cross-application add-ins that surface in PowerPoint, Word, and Excel from a single deployment. ### Why McKenna Consultants for Custom PowerPoint Add-In Development McKenna Consultants is a UK-based Microsoft Office add-in development consultancy with deep expertise across every Office application. Our portfolio spans Outlook add-ins for CRM integration and email workflow automation, Word add-ins for legal document processing and contract management, and Excel add-ins for financial modelling, custom functions, and enterprise data integration. PowerPoint add-in development completes our full-spectrum Office coverage. As an experienced Office add-in development consultancy UK organisations turn to for complex, enterprise-grade projects, we understand the full lifecycle — from requirements analysis and architecture design through development, testing, and Microsoft 365 admin centre deployment. We also have hands-on experience with Copilot agent integration, helping clients design add-ins that work effectively through both task pane and conversational interfaces. Whether you need an automated financial reporting add-in that eliminates hours of monthly manual work, a brand compliance tool that scales across thousands of presentations, a multilingual generation workflow for global teams, or a bespoke PowerPoint-based product for your ISV platform, our team has the technical depth and enterprise experience to deliver it. [Contact McKenna Consultants](/contact/) to discuss your custom PowerPoint add-in requirements. We cover Outlook, Word, Excel, and PowerPoint — every application in the Microsoft 365 suite. --- # Implementing WOPI for Mobile: Extending Document Editing to iOS and Android Apps **Canonical URL:** https://www.mckennaconsultants.com/implementing-wopi-for-mobile-extending-document-editing-to-ios-and-android-apps/ **Author:** Nick McKenna **Published:** 3 March 2026 **Category:** CSPP WOPI ## Implementing WOPI for Mobile: Extending Document Editing to iOS and Android Apps Enterprise mobile adoption has long since passed the point of return. Workforces that once relied on desktop and laptop access to corporate document management systems now expect to open, review, and edit documents from iOS and Android devices as a matter of course. For ISVs and enterprise software teams that have already invested in WOPI-based document editing on the web, the natural next step is extending that capability to mobile — and the path is more structured than many developers assume. WOPI mobile integration for iOS and Android is not a simple port of your web implementation. Mobile platforms introduce distinct launch flows, URL scheme invocation patterns, authentication challenges specific to device-bound contexts, offline requirements, and network constraints that require thoughtful adaptation. This article provides a technical guide to each of these areas, drawing on the mobile-specific aspects of the WOPI protocol and the CSPP Plus programme's requirements for mobile-capable implementations. ### How Mobile WOPI Differs from Web WOPI Before diving into implementation specifics, it is worth establishing the conceptual differences between web-based and mobile WOPI integration. On the web, your WOPI host provides a URL that the browser loads into an iframe, and Microsoft Office for the web (or another WOPI-compatible editor) renders the document in that frame. The host, the browser, and the editor all operate within the same HTTP session model. On mobile, the flow is fundamentally different. Microsoft Office for iOS and Android are native applications, not browser-based renderers. When a user wants to open a document from your mobile application in Office, you are not launching a web page — you are invoking the Office native app via a platform-specific URL scheme, passing the document location and authentication context through that invocation. The WOPI host still serves the document, but the mobile app acts as an orchestrator rather than a container. This distinction has several downstream implications: - **App invocation replaces iframe embedding.** Your mobile app constructs a URI that hands off control to the Office app. Return-to-app handling requires you to register your own URL scheme to receive control back after editing completes. - **Authentication must be pre-established.** Unlike web WOPI, where the user may authenticate inline as part of the editor load, mobile invocation typically requires authentication to be completed before the handoff, with a token passed to the WOPI endpoint. - **Offline capability is a user expectation.** Mobile users frequently encounter network interruptions. A mobile WOPI implementation that fails ungracefully on a train or in an underground car park will generate immediate negative feedback. ### WOPI Discovery for Mobile Surfaces WOPI discovery in a mobile context follows the same endpoint structure as web discovery — your WOPI host exposes a discovery XML document that Office applications use to determine what actions and file types are supported. However, mobile-specific `urlsrc` templates and action names are used alongside the familiar `view` and `edit` actions. For CSPP Plus mobile document editing, your discovery document should include mobile-specific action entries. The action name `mobileView` is used for read-only document rendering on mobile, while `mobileEdit` signals support for full editing via the Office mobile apps. These entries follow the same XML structure as standard WOPI actions: ```xml ``` The `mobile=1` query parameter signals to the Office service that the requesting context is mobile, which influences how the service handles the session — including whether it returns mobile-optimised resources and whether it applies mobile-specific timeout policies. Your `CheckFileInfo` response for mobile sessions should include several properties that are either specific to mobile contexts or more critical in mobile scenarios than on the web: - **`SupportsLocks`**: Required for editing operations, including mobile editing. - **`UserCanWrite`**: Controls whether the edit action is available to the current user. - **`CloseUrl`**: The URL the Office mobile app should navigate to (or invoke) when the user taps the close button. On mobile, this is typically a deep link back into your application rather than a web URL. - **`HostEditUrl`** and **`HostViewUrl`**: Used when the Office app needs to present a native URL to the user or return them to the host context. - **`BreadcrumbDocName`** and **`BreadcrumbFolderName`**: These are rendered in the Office mobile UI to show the document's location context — more prominent on mobile than on desktop. ### Platform-Specific Launch Flows #### iOS: URL Schemes and Universal Links On iOS, you invoke Office applications using registered URL schemes. Microsoft Office for iOS registers the `ms-word:`, `ms-excel:`, `ms-powerpoint:`, and `ms-onenote:` schemes. To open a document for editing, your iOS app constructs a URL of the following form: ``` ms-word:ofe|u|https://your-wopi-host.com/wopi/files/document-id ``` The components are: - **`ms-word:`** — The registered URL scheme for Microsoft Word on iOS. - **`ofe`** — The action code. `ofe` means "Open For Edit". Use `ofv` for "Open For View". - **`u|`** — Indicates that the next segment is the document URL. - **`https://your-wopi-host.com/wopi/files/document-id`** — The WOPI `files` endpoint URL for the document. Before invoking this URL, verify that the Office application is installed using `UIApplication.shared.canOpenURL()`. If Office is not installed, surface an appropriate message — mobile users should not encounter a silent failure when tapping an edit button. Return-to-app handling on iOS uses the `|`-delimited parameter block in the invocation URL: ``` ms-word:ofe|u|https://your-wopi-host.com/wopi/files/document-id|e|ms-yourapp://edit-complete ``` The `|e|` parameter specifies the URL your app registers to receive control when the user closes Office. Register this custom URL scheme in your iOS app's `Info.plist` and handle it in your `AppDelegate` or `SceneDelegate` to update your UI appropriately (for example, refreshing the document list or showing a confirmation that changes were saved). Universal Links offer a more robust alternative to custom URL schemes for return-to-app handling, particularly in enterprise deployments where IT policy may restrict custom scheme registration. With Universal Links, Office invokes a web URL you own, which your app intercepts via its `Associated Domains` entitlement. This pattern also works more reliably across iOS version updates. #### Android: Intent-Based Invocation On Android, Office applications are invoked via Android Intents rather than URL schemes. The pattern is conceptually similar but uses Android's Intent system: ```kotlin val intent = Intent(Intent.ACTION_VIEW).apply { data = Uri.parse("ms-word:ofe|u|https://your-wopi-host.com/wopi/files/document-id") setPackage("com.microsoft.office.word") addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) } if (packageManager.resolveActivity(intent, 0) != null) { startActivity(intent) } else { // Office not installed — redirect to Play Store or surface message } ``` Setting the package explicitly with `setPackage()` ensures that the Intent resolves directly to the Office Word app rather than presenting the user with an app chooser. Use `com.microsoft.office.excel` and `com.microsoft.office.powerpoint` for Excel and PowerPoint respectively. For return-to-app handling on Android, register your app as a handler for a custom scheme and pass it in the invocation URL using the same `|e|` parameter pattern as iOS. Alternatively, Android's App Links (the Android equivalent of iOS Universal Links) can be used for more robust deep link handling in enterprise contexts. ### Authentication Patterns for Mobile WOPI #### MSAL for Mobile Authentication is where mobile WOPI integration diverges most significantly from web-based patterns. In a web context, the user is typically already authenticated to your application in the browser, and a session cookie or bearer token flows naturally into the WOPI endpoint calls that the Office editor makes. On mobile, the Office app makes server-side WOPI calls on behalf of the user, and those calls must be authenticated independently of the mobile app session. The recommended approach for CSPP Plus mobile document editing is to use Microsoft Authentication Library (MSAL) for iOS and Android to acquire an access token, then embed that token in the WOPI `files` URL as a query parameter or pass it via the `access_token` mechanism: ``` https://your-wopi-host.com/wopi/files/document-id?access_token=eyJ... ``` Your WOPI host validates this token on each request from the Office mobile app. The token should be scoped to the minimum permissions required for the WOPI operations the user will perform — read-only tokens for view actions, read-write tokens for edit actions. MSAL on both iOS and Android supports the system browser and in-app browser tab authentication flows, which are required for modern Microsoft identity platform interactions. Avoid using embedded WebViews for authentication — Microsoft's identity platform actively discourages this pattern, and it will not work correctly with conditional access policies that many enterprise customers have in place. #### Token Expiry and Refresh in Mobile Contexts Mobile WOPI sessions may run significantly longer than web sessions — a user might open a document on their phone, switch to another app for an extended meeting, and return to finish editing an hour later. Token expiry must be handled carefully. Your WOPI host should validate token expiry on each request and return HTTP 401 when a token has expired, rather than allowing operations to proceed with a stale token. The WOPI client will surface an authentication error to the user, who can re-authenticate through your app. Design your token lifetimes and refresh flows accordingly — typically a one-hour access token lifetime with a refresh token valid for longer periods works well for mobile document editing sessions. #### Biometric Authentication and Device-Bound Credentials Enterprise mobile deployments increasingly require biometric authentication as part of the document access flow, particularly for regulated content. On iOS, this means integrating Face ID or Touch ID via the `LocalAuthentication` framework before initiating the WOPI handoff. On Android, the `BiometricPrompt` API provides equivalent functionality. The recommended pattern is to gate the WOPI invocation URL behind a biometric check within your app, acquiring or refreshing the access token only after successful biometric authentication. The biometric authentication itself should not be part of the WOPI protocol flow — keep it within your application layer before the Office handoff begins. This separation ensures that cloud document editing security compliance requirements around authentication strength are met within your application boundary, where you have full control. ### Handling Offline Capability #### The Offline Document Cache Enterprise users on mobile expect to access documents when connectivity is unreliable. A robust mobile WOPI implementation includes an offline document cache that allows previously opened documents to be accessed and edited without a live network connection. The cache should store the complete binary document content along with a metadata record capturing the document identifier, the last-known server version identifier (from the `X-WOPI-ItemVersion` response header), and the cached timestamp. On iOS, this data belongs in the application's sandboxed storage, not in iCloud-synced locations (unless explicitly designed for that). On Android, use internal storage rather than external storage for documents that may contain sensitive enterprise content. When the user opens a cached document offline, your app serves the document from the local cache rather than making a WOPI `GetFile` call. The document can be opened in a local viewer or, where supported, a local editing mode — though full Office editing via the WOPI handoff requires network connectivity to the Office service. #### Sync Conflict Resolution When the user has made local edits to a cached document and network connectivity is restored, your application must synchronise those changes with the WOPI host. The protocol provides the `X-WOPI-ItemVersion` header to support optimistic concurrency — your host returns the current version on `GetFile` and `CheckFileInfo` responses, and your mobile app records this version when caching the document. When syncing a locally edited document back to the server, the resolution flow should be: 1. **Check the server version.** Call `CheckFileInfo` to retrieve the current server version. Compare it with the version recorded at cache time. 2. **Detect conflicts.** If the server version has changed since the document was cached, a concurrent modification has occurred — another user or device has updated the document while the mobile user was working offline. 3. **Apply a resolution strategy.** Three strategies are commonly used: - **Last-writer-wins**: Upload the local version regardless, overwriting the server version. Simple to implement but risks data loss if the server version contains important changes. - **User-prompted merge**: Present the user with both the local version and the server version, and let them choose which to retain or manually merge. Appropriate for documents where data loss is unacceptable. - **Automatic merge**: Attempt a programmatic merge of the two versions. Practical for structured data (such as Excel workbooks where conflicting edits are in different cell ranges) but complex to implement reliably for rich text documents. For most enterprise mobile WOPI implementations, user-prompted merge with the option to retain either version is the safest default. Implement automatic last-writer-wins only if your user research confirms that simultaneous offline edits are rare in your use case and the cost of occasional data loss is acceptable. A minimal conflict resolution UI should display the document name, the timestamp of the server version, and the timestamp of the local version, and offer two clear actions: keep local version (uploading it to the server) or keep server version (discarding local edits). Always give the user the option to download both versions as separate files before making their choice. ### Performance Optimisation for Mobile Networks #### Adaptive Chunk Sizing If your WOPI host implements CSPP Plus chunked file transfer, mobile clients benefit disproportionately compared to desktop clients — mobile networks have higher latency, more variable bandwidth, and are more prone to interruptions that benefit from chunk-level retry rather than whole-file retry. For mobile sessions, dynamically adjust your chunk size based on network conditions. iOS provides `NWPathMonitor` and Android provides `ConnectivityManager` to detect the active network interface (Wi-Fi versus cellular) and estimated bandwidth. On Wi-Fi, a 10 MB chunk size is appropriate. On cellular, reduce to 2–4 MB to limit the impact of individual chunk failures on the user experience. Pass the detected network context to your WOPI host via a custom header or query parameter in the session initialisation request, and have the host respond with an appropriate `MaxChunkSize` recommendation. This server-driven approach allows you to adjust chunk sizing based on server-side load conditions as well as client network conditions. #### Request Compression and Caching Headers For `CheckFileInfo` responses, include `Cache-Control` headers that allow mobile clients and intermediate proxies to cache the response for short durations (30–60 seconds). Reducing the frequency of `CheckFileInfo` round-trips is particularly valuable on mobile, where each round-trip carries higher latency overhead than on a wired enterprise network. For the `GetFile` response, implement support for the `If-None-Match` header using the `X-WOPI-ItemVersion` value as the ETag. If the Office mobile app requests a file that has not changed since the last request, respond with HTTP 304 Not Modified rather than retransmitting the full document. On cellular connections, avoiding a redundant multi-megabyte download can meaningfully improve the user experience. #### Background Transfer Sessions On iOS, use `URLSession` with a background configuration for document download and upload operations. This allows transfers to continue even if the user switches away from your app or the system suspends it. The WOPI `PutFile` operation — which saves the document back to your host — is particularly important to complete reliably, even if the user has switched to another app immediately after tapping Save in Office. On Android, `WorkManager` with the appropriate network constraint (`NetworkType.CONNECTED`) provides equivalent background transfer capability, with automatic retry on network restoration. ```swift // iOS: Configure a background URLSession for WOPI file transfers let config = URLSessionConfiguration.background( withIdentifier: "com.yourapp.wopi-transfer" ) config.isDiscretionary = false config.sessionSendsLaunchEvents = true let session = URLSession(configuration: config, delegate: self, delegateQueue: nil) ``` ```kotlin // Android: Schedule a PutFile sync using WorkManager val syncRequest = OneTimeWorkRequestBuilder() .setConstraints( Constraints.Builder() .setRequiredNetworkType(NetworkType.CONNECTED) .build() ) .setInputData(workDataOf( "documentId" to documentId, "localPath" to localFilePath )) .build() WorkManager.getInstance(context).enqueue(syncRequest) ``` ### Responsive UI Considerations When presenting document lists, folder navigation, and document action menus in your mobile app, the WOPI operation state should be visible to the user. A document that is currently being synced to the server should show a progress indicator. A document that failed to sync should show an error badge with a retry action. A document that is available offline should show an offline badge so the user knows it is accessible without connectivity. On tablets (both iOS iPadOS and Android large-screen devices), consider presenting the document list and the Office editing session in a split-view layout using Apple's `UISplitViewController` or Android's `SlidingPaneLayout`. This is particularly useful in CSPP Plus mobile document editing scenarios where users frequently switch between documents and navigate folder hierarchies. ### Enterprise Deployment Considerations For enterprise deployments, your mobile WOPI application will typically be distributed through managed app stores (Apple Business Manager or Android Enterprise) rather than consumer channels. This affects several aspects of your implementation: - **App configuration via MDM**: Support `AppConfig` (iOS) and Android Enterprise managed configurations to allow IT administrators to configure your WOPI host URL, authentication settings, and offline cache limits without requiring user input. - **Data loss prevention policies**: Ensure your app declares the appropriate managed app capabilities on both platforms to participate in MDM-enforced data loss prevention policies — for example, preventing users from sharing document content to unmanaged applications. - **Conditional access compatibility**: Test your authentication flow against Microsoft Entra ID conditional access policies, including device compliance requirements and app protection policies. MSAL handles most of this automatically, but integration testing in an MDM-managed environment is essential before enterprise rollout. Cloud document editing security compliance in enterprise mobile contexts requires that you treat device trustworthiness as a variable — an unmanaged personal device presents a different risk profile than a corporate-issued device enrolled in an MDM solution. Use Entra ID's device compliance signals, surfaced through conditional access, to gate access to sensitive document operations. ### Getting Started with Your Mobile WOPI Integration The mobile WOPI surface requires a different mindset to web-based WOPI implementation, but the effort is well-justified. Enterprise users' expectations for mobile document access have been set by consumer applications, and meeting those expectations within a secure, managed WOPI deployment is achievable with the right architecture. The key milestones for a production mobile WOPI implementation are: 1. Implement WOPI discovery entries for `mobileView` and `mobileEdit` actions. 2. Build the platform-specific launch flows (URL schemes on iOS, Intents on Android) with return-to-app handling. 3. Integrate MSAL for mobile authentication and handle token expiry and refresh. 4. Implement an offline document cache with sync conflict resolution. 5. Optimise chunk sizes and transfer patterns for mobile network conditions. 6. Test against enterprise MDM and conditional access configurations. McKenna Consultants has implemented WOPI integrations across web, desktop, and mobile surfaces for ISVs and enterprise organisations in the UK and internationally. Our experience spans the full WOPI protocol — from foundational `CheckFileInfo` implementation through to CSPP Plus mobile document editing, coauthoring, geo-fencing, and zero trust security architecture. If you are planning a mobile extension to an existing WOPI integration, or building mobile document editing capability from scratch, [contact our team](/contact/) to discuss your requirements and timeline. --- # EU AI Act High-Risk Compliance: A Technical Readiness Guide for August 2026 **Canonical URL:** https://www.mckennaconsultants.com/eu-ai-act-high-risk-compliance-a-technical-readiness-guide-for-august-2026/ **Author:** Nick McKenna **Published:** 24 February 2026 **Category:** Artificial Intelligence ## EU AI Act High-Risk Compliance: A Technical Readiness Guide for August 2026 The EU AI Act's high-risk obligations become enforceable on 2 August 2026. For development teams and AI programme leads who have already established their governance foundations — inventoried their AI systems, classified their risk tiers, and understood the regulatory landscape — the governance overview was the starting point. This guide is the engineering work. What follows covers the specific implementation requirements that high-risk AI systems must satisfy before the August deadline. Each section maps to the relevant article of the Regulation and translates the legislative language into concrete engineering and operational tasks. The stakes are material: non-compliance exposes organisations to penalties of up to EUR 15 million or 3% of global annual turnover, whichever is higher. ### The Digital Omnibus Question: Prepare for August Regardless Every compliance team is tracking the European Commission's proposed Digital Omnibus package, announced in February 2026, which includes a provision to postpone the Annex III high-risk obligations from August 2026 to December 2027. If enacted, this would give organisations an additional 16 months. Do not plan around it. The Digital Omnibus requires agreement from the European Parliament and the Council of the EU. Legislative processes at that level are unpredictable. The extension may be rejected, amended, or delayed in ways that leave the August 2026 deadline intact. Organisations that pause compliance preparations pending political certainty are making a high-risk bet on a legislative outcome they cannot control. More practically: the compliance work described here is not wasted effort even if the extension materialises. Technical documentation, quality management systems, data governance frameworks, and human oversight mechanisms are engineering investments that improve your AI systems independently of their regulatory function. Build for August. Welcome any extension as a margin of safety, not a reason to delay. ### Confirming High-Risk Classification Under Annex III The first task is confirming whether your AI systems are subject to the high-risk obligations. Annex III defines specific functional domains — not broad conceptual categories. Your system qualifies as high-risk if it falls into one of the following: - **Biometric identification and categorisation** — remote biometric identification, AI categorising individuals by protected characteristics - **Critical infrastructure** — management or operation of road, rail, aviation, water, gas, heating, and electricity supply - **Education and vocational training** — AI determining access to institutions, evaluating students, or assessing examination performance - **Employment and worker management** — CV screening, interview evaluation, performance assessment, promotion, or termination decisions - **Access to essential services** — credit scoring, insurance risk assessment, benefit eligibility determination - **Law enforcement** — individual risk assessment in criminal proceedings, prediction of criminal behaviour, evidence evaluation - **Migration and border control** — immigration risk assessment, asylum claim processing, travel document verification - **Administration of justice** — AI assisting courts in legal interpretation or dispute resolution Classification should be conducted conservatively. The cost of under-classifying a system that regulators later determine is high-risk far exceeds the cost of over-engineering governance for a borderline system. Note also that deployers — organisations operating a high-risk AI system built by a third-party provider — carry their own obligations. Provider-built systems do not automatically transfer compliance responsibility. ### Technical Documentation Requirements (Article 11) Article 11 requires providers of high-risk AI systems to draw up technical documentation before placing the system on the market and to maintain it throughout the system's lifecycle. The content requirements specified in Annex IV are precise. **System description and intended purpose.** A description of the AI system, its intended purpose, the persons it is designed to interact with, and version information. The intended purpose definition is legally significant — it determines which risk classification applies and which use cases fall outside the authorised scope. **Technical specifications.** Hardware and software component descriptions, design specifications with the reasoning behind key architectural choices, system architecture documentation, and computational resource requirements. For development teams, this means architecture decision records (ADRs) — which represent good engineering practice regardless of regulation — become compliance documents. **Training data documentation.** A detailed description of training, validation, and test data: characteristics, provenance, collection methodology, data preparation steps, and known limitations. This links directly to the Article 10 data governance obligations. **Validation and testing results.** Model performance evaluation results — accuracy metrics, robustness testing, bias testing — must be current and reflect the model version in production, not the version tested before the last update. **Risk management documentation.** A description of the risk management system implemented under Article 9: identified risks, assessment methodology, and mitigation measures. The risk management system is a continuous process; the documentation must reflect its current state. The practical imperative here is integration with your engineering workflow. Documentation that lives in a separate compliance repository and is updated only at deployment milestones will drift out of date. Treat it as a living artefact maintained alongside the code, with update requirements triggered by model changes, data updates, and performance metric shifts. ### Data Governance for Training Datasets (Article 10) Article 10 imposes specific obligations on data used to train, validate, and test high-risk AI systems. These translate into four engineering requirements: **Data lineage tracking.** Every training dataset must have a documented provenance trail — origin, collection methodology, transformations applied, and data quality checks performed. This applies equally to first-party data and third-party datasets sourced from data providers or public repositories. **Representativeness assessment.** You must demonstrate that training data is representative of the population groups and operational contexts in which the system will be deployed. Gaps in representativeness are not automatically disqualifying, but they must be documented, assessed for their impact on system performance, and mitigated where material. **Bias examination.** Where technically feasible, training data must be examined for biases that could affect system outputs. The examination and its findings must be documented as part of the data governance record. **GDPR alignment.** Where training data includes personal data, GDPR compliance must extend to the training data environment specifically — covering legal basis documentation, retention limits, access controls, and data subject rights management. ### Quality Management System (Article 17) Article 17 requires providers to implement a quality management system covering: regulatory compliance strategy, system design techniques and procedures, development procedures, test and validation processes, technical specifications, data management procedures (Article 10), the risk management system (Article 9), the post-market monitoring system (Article 72), serious incident reporting procedures, communication procedures with deployers, and document management ensuring traceability throughout the lifecycle. Mature engineering organisations will find that much of this content already exists in their development processes. The gap is usually in formalisation, documentation, and explicit linkage to AI governance requirements rather than in the underlying practices themselves. For organisations seeking a certifiable enterprise AI governance framework in 2026, ISO 42001 — the international standard for AI management systems — provides a practical framework that satisfies Article 17 and integrates with ISO 9001 and ISO 27001 where those standards are already in use. ### Human Oversight Design (Article 14) Article 14 is a design requirement, not a policy requirement. High-risk AI systems must have human oversight built into their architecture. The specific obligations are: **Comprehensibility.** The system must enable overseers to understand its capabilities and limitations, and to detect anomalies and unexpected performance. This drives explainability requirements: outputs must be interpretable by a human reviewer. Black-box models in high-risk contexts require explainability layers — through interpretable model selection, post-hoc methods (SHAP, LIME), or structured output formats that surface the factors contributing to each decision. **Override capability.** Human overseers must be able to decide not to use the system in any specific situation and to override or reverse its outputs. The override mechanism must be practically accessible — not buried in an administrative interface requiring specialist access. **Intervention capability.** The system must allow overseers to intervene through a stop button or equivalent procedure. For automated pipelines where AI outputs trigger downstream actions, this requires a pause-and-review gate that authorised personnel can activate before consequential actions proceed. Deployers of third-party high-risk AI systems carry complementary obligations under Article 26: named individuals must be assigned to the oversight function with clearly defined responsibilities. ### Accuracy, Robustness, and Cybersecurity (Article 15) Article 15 requires appropriate levels of accuracy, robustness, and cybersecurity throughout the system's operational lifecycle — not just at initial deployment. **Accuracy.** Accuracy metrics must be specified in technical documentation, tested before deployment, and monitored continuously in production. Where accuracy falls below declared levels, the system must be remediated or withdrawn. Continuous learning systems must have safeguards preventing accuracy degradation or bias from entering through the learning loop. **Robustness.** The system must be resilient to errors, faults, and inconsistencies in inputs, operating environment, and system components. Implement input validation to prevent out-of-distribution inputs from producing unchecked outputs; define explicit fallback behaviour (routing to human review, not to a default output) for failure conditions; and conduct adversarial testing covering prompt injection, data poisoning, and model evasion as appropriate to the system architecture. **Cybersecurity.** Model weights, system prompts, and training data must be protected as sensitive assets. Implement access controls preventing unauthorised modification. Include AI system components in your penetration testing programme and apply supply chain security principles — validating third-party models, libraries, and datasets — within your existing software supply chain security framework. ### Post-Market Monitoring (Article 72) Article 72 requires an active post-market monitoring system that collects and reviews data on real-world system performance. In engineering terms, this means a production monitoring infrastructure that goes beyond standard application performance monitoring: - **Model performance metrics** — accuracy, confidence distribution, prediction drift, and fairness metrics measured continuously on live outputs - **Override rate monitoring** — a rising human override rate is a leading indicator of performance degradation and must trigger investigation - **Input distribution monitoring** — detect dataset drift by tracking whether production inputs remain consistent with the training data distribution - **Incident tracking** — log and investigate every case where a system output results in a human override, user complaint, formal challenge, or adverse outcome - **Serious incident reporting** — incidents resulting in death, serious injury, property damage, or significant harm to fundamental rights must be reported to the relevant market surveillance authority within 15 days of the provider becoming aware Monitoring findings must feed back into the risk management system, with identified issues resulting in documented risk assessments and corrective actions where necessary. ### CE Marking and EU Declaration of Conformity High-risk AI systems must bear the CE marking before being placed on the EU market. Most Annex III high-risk systems may be self-assessed by the provider where harmonised standards are applied. Systems in the biometric identification, critical infrastructure, and law enforcement categories require third-party conformity assessment by a notified body. For self-assessed systems, the process is: apply harmonised standards and document compliance; conduct the internal conformity assessment; draw up the EU Declaration of Conformity signed by an authorised representative; affix the CE marking; and register the system in the EU AI database. The Declaration of Conformity must include: provider identity and contact details; system description; a statement of conformity with the AI Act; reference to harmonised standards applied; place and date of issue; and the name and signature of the authorised person. ### Technical Readiness Assessment Checklist **Classification and Scope** - [ ] All AI systems inventoried and documented - [ ] Each system assessed against Annex III criteria and definitively classified - [ ] High-risk classifications reviewed by legal counsel - [ ] Third-party AI systems in high-risk functions assessed for conformity documentation **Technical Documentation (Article 11 / Annex IV)** - [ ] System description and intended purpose documented - [ ] Architecture decision records maintained and current - [ ] Hardware and software component specifications documented - [ ] Training data documentation complete (sources, preprocessing, quality metrics) - [ ] Validation and testing results current and version-controlled - [ ] Risk management documentation maintained - [ ] Change log in place for all material system changes **Data Governance (Article 10)** - [ ] Data lineage tracking implemented for all training datasets - [ ] Representativeness assessment completed and documented - [ ] Bias examination completed and documented - [ ] GDPR compliance confirmed for personal data in training sets - [ ] Third-party dataset governance documentation obtained **Quality Management System (Article 17)** - [ ] QMS framework selected (ISO 42001 or equivalent) - [ ] QMS documented covering all Article 17 elements - [ ] Development lifecycle procedures integrated with QMS - [ ] Testing and validation procedures documented **Human Oversight (Article 14)** - [ ] Explainability mechanisms implemented for all high-risk outputs - [ ] Override capability implemented and accessible to authorised users - [ ] Override rate monitored and reviewed - [ ] Intervention (stop) capability implemented - [ ] Human oversight responsibilities assigned to named individuals **Accuracy, Robustness, Cybersecurity (Article 15)** - [ ] Accuracy metrics defined and declared in technical documentation - [ ] Production accuracy monitoring implemented - [ ] Input validation and out-of-distribution detection implemented - [ ] Adversarial testing completed and documented - [ ] Fallback behaviour defined for all failure conditions - [ ] AI system components included in penetration testing scope - [ ] Model and training data assets protected as sensitive information **Post-Market Monitoring (Article 72)** - [ ] Post-market monitoring plan documented - [ ] Production monitoring infrastructure deployed - [ ] Incident tracking and investigation process defined - [ ] Serious incident reporting procedure documented - [ ] Monitoring findings feed into risk management system **Conformity Assessment and CE Marking** - [ ] Applicable harmonised standards identified - [ ] Self-assessment or notified body requirement confirmed - [ ] Conformity assessment process initiated - [ ] EU Declaration of Conformity drafted - [ ] EU AI database registration process understood ### A Realistic Compliance Timeline With August 2026 approximately five months away, the work is substantial but achievable for organisations beginning now. For a single high-risk AI system starting from a low governance baseline: - **Months 1–2:** Classification confirmation, gap analysis, technical documentation initiation, data governance assessment - **Months 2–3:** QMS framework implementation, human oversight design and development, data lineage and bias examination - **Months 3–4:** Accuracy benchmarking, robustness and adversarial testing, cybersecurity assessment, monitoring infrastructure deployment - **Months 4–5:** Conformity assessment, Declaration of Conformity preparation, CE marking, EU AI database registration, readiness review Organisations with multiple high-risk AI systems should prioritise based on existing governance maturity and EU market exposure. Systems with the least existing documentation and the greatest EU user base should lead the programme. ### Working with McKenna Consultants Translating regulatory obligations into engineering specifications and operational processes is where specialist expertise makes the difference between confident readiness and last-minute scrambling. McKenna Consultants' AI consultancy practice combines deep technical experience in enterprise AI system design with practical knowledge of the EU AI Act compliance requirements. We work with clients across the full compliance programme: conducting AI system inventories and risk classifications under Annex III, authoring the technical documentation required by Article 11, designing human oversight architectures that satisfy Article 14 without compromising operational efficiency, implementing post-market monitoring infrastructure, and supporting the conformity assessment and CE marking process. If you are a CTO, compliance officer, or AI programme lead preparing your organisation for the August 2026 deadline, get in touch to arrange an initial consultation with our team. --- # Total Cost of Ownership: Composable Commerce vs Monolithic Platforms **Canonical URL:** https://www.mckennaconsultants.com/total-cost-of-ownership-composable-commerce-vs-monolithic-platforms/ **Author:** Nick McKenna **Published:** 17 February 2026 **Category:** B2B eCommerce ## Total Cost of Ownership: Composable Commerce vs Monolithic Platforms When a commerce director presents a composable commerce business case to their CFO, the conversation often stalls at the same point. Implementation costs are higher upfront. The vendor landscape is more fragmented. The licensing model is unfamiliar. Against the known quantity of an existing Salesforce Commerce Cloud or SAP Commerce contract, composable architecture looks expensive on first inspection. That first inspection is misleading, and this article explains why. Total cost of ownership analysis is the right framework for evaluating a commerce platform decision, but it must be applied rigorously — accounting for costs that monolithic vendors systematically exclude from their pricing conversations and benefits that composable architecture delivers across a three-to-five-year horizon. This article provides that framework, with worked financial examples, honest analysis of when monolithic platforms are genuinely more cost-effective, and a clear picture of where composable commerce, and specifically Elastic Path, delivers superior return on investment. This is not a technology article. It is a financial one. ### Why Platform Decisions Get the Economics Wrong Most commerce platform decisions are made by comparing the wrong numbers. A direct comparison of Year 1 licensing costs between a monolithic vendor and a composable stack almost always favours the monolith. The monolith's licence bundles a long list of capabilities into a single line item. The composable stack appears as multiple vendors, each requiring negotiation and integration. The comparison fails for two reasons. First, it counts costs that composable incurs directly while ignoring equivalent costs that are embedded in the monolith's licence. The monolith charges for capabilities you do not use. It forces you to upgrade all components when you only need to update one. It locks you into infrastructure contracts with embedded margins. These costs exist whether or not they appear on a vendor invoice. Second, it ignores the cost of capability gaps. Monolithic platforms reach a ceiling of what they can deliver without expensive customisation. Every feature your business needs that falls outside the platform's native capabilities generates one of two costs: custom development within the monolith's constrained architecture (expensive, slow, and fragile) or forgoing the capability entirely (an opportunity cost that rarely appears in the TCO model). Rigorous TCO analysis starts by identifying all costs on both sides of the comparison — not just the visible ones. ### The Full Cost Inventory: Monolithic Platforms #### Licensing and Platform Fees Enterprise monolithic platforms — Salesforce Commerce Cloud, SAP Commerce Cloud, Adobe Commerce (formerly Magento Commerce) — are not cheap. Salesforce Commerce Cloud pricing is typically structured as a percentage of gross merchandise value (GMV), commonly 1-3% for B2C deployments, with minimum annual fees that can reach GBP 200,000 for mid-market accounts before a single line of custom code is written. SAP Commerce Cloud and Adobe Commerce use a hybrid model of base licence plus infrastructure fees, with enterprise contracts typically running GBP 150,000-400,000 per year depending on transaction volume and feature tiers. These fees escalate. Monolithic vendors renegotiate contracts at renewal, often applying annual increases of 5-10% that are buried in the terms and conditions. GMV-linked pricing means that as your business grows, your platform costs grow proportionally — even though the marginal cost of processing an additional order on a cloud-native platform is effectively zero. #### Upgrade and Maintenance Cycles This is the hidden cost that most TCO models underestimate. Monolithic platforms release major versions on a roughly annual cycle, and those upgrades are not optional. Falling behind on upgrades means losing security support, compatibility with payment processors, and access to newer platform features. Staying current means re-testing the entire customised platform with every release. For a mid-market organisation running Salesforce Commerce Cloud or Adobe Commerce with meaningful customisation, a major platform upgrade typically costs GBP 50,000-150,000 in development and QA effort per cycle. This is money spent not to add features, but simply to stay current. Over a five-year period, upgrade costs can equal or exceed the original implementation budget. #### Customisation Costs and Technical Debt Monolithic platforms are designed for the median use case. Any requirement that deviates from the vendor's intended use cases — complex B2B pricing, multi-level approval workflows, deep ERP integration, non-standard checkout flows — requires customisation within the platform's architecture. That customisation is expensive to build because it must work within the monolith's constraints, and expensive to maintain because every upgrade must be tested against the customised code. The phenomenon of upgrade-breaking customisations is so common that platform vendors have terminology for it. Salesforce calls heavily customised implementations "over-customised." Adobe warns against modifying core Magento code. The warnings are well-founded, but the business requirements that necessitate customisation do not disappear simply because the platform was not designed for them. Over a five-year period, customisation maintenance typically costs 20-40% of the original development investment per year. For a GBP 500,000 implementation, that is GBP 100,000-200,000 annually in maintenance, much of which produces no new functionality. #### Vendor Lock-In Premiums Once deeply embedded in a monolithic platform, the cost of switching creates leverage for the vendor at every contract renewal. Organisations that have invested GBP 500,000-2,000,000 in a platform implementation do not switch vendors lightly. Monolithic vendors are aware of this. The lock-in premium manifests as above-market licence renewal rates, resistance to commercial concessions, and slower feature development for capabilities that serve a niche use case. If the platform's native search is inadequate for your requirements, the cost of replacing it is bounded by the fact that search is tightly coupled to the monolith's data layer. You may be forced to pay for third-party search integration on top of a licence that already includes a search engine you cannot use. #### Infrastructure Costs Monolithic platforms have specific infrastructure requirements that create costs beyond the licence fee. On-premises or private cloud deployments (still common for SAP Commerce) require dedicated infrastructure that is over-provisioned for peak load, standing idle during off-peak periods, and managed by internal teams or contracted managed service providers. Even SaaS deployments often include infrastructure tiers that bundle compute, storage, and bandwidth at margins that exceed commodity cloud pricing. ### The Full Cost Inventory: Composable Commerce #### Component Licensing Composable commerce incurs licensing costs for each component in the stack: the commerce engine (Elastic Path), headless CMS, search (if using a third-party service), payment processor, and any other specialised services. These are real costs that must be included in the TCO model. However, there are important differences from monolithic licensing. First, you only pay for the capabilities you use. If you do not need the monolith's built-in loyalty engine, you do not pay for it. Second, each component licence is independently negotiable and replaceable. If a better search provider emerges, or if a component's pricing becomes uncompetitive, you can replace that component without rebuilding the entire stack. Third, cloud-native composable components scale with usage — you pay for what you consume, not for a fixed capacity ceiling. #### Implementation Costs Composable commerce implementations typically have higher initial development costs than monolithic deployments. The integration work between components, the custom frontend development, and the orchestration layer all require investment that a monolithic platform's admin interface replaces with configuration. A realistic implementation budget for a composable commerce project of moderate complexity — a B2B buyer portal with ERP integration, or a multi-channel B2C deployment — runs GBP 250,000-600,000. This is broadly comparable to a complex monolithic implementation, though the distribution of spend is different: more on integration and frontend, less on platform configuration. #### Ongoing Development and Operations Here is where composable commerce's financial advantage becomes significant. Because services are independently deployable, changes to one component do not require regression testing of the entire platform. Teams working on MACH architectures report 40% faster feature release cycles compared to monolithic equivalents. This productivity gain compounds over time, reducing the cost per feature and increasing the velocity at which the business can respond to market requirements. Infrastructure costs for cloud-native composable services scale with demand rather than fixed tiers. Elastic Path, for example, runs on managed cloud infrastructure where you are not paying for idle capacity during off-peak periods. ### Three-Year TCO Model: Worked Example The following comparison models a mid-market B2B commerce operation with GBP 20 million annual online revenue, complex pricing requirements, and two ERP integrations. Figures are indicative ranges based on market-representative costs. #### Monolithic Platform (Salesforce Commerce Cloud) | Cost Category | Year 1 | Year 2 | Year 3 | 3-Year Total | |---|---|---|---|---| | Platform licence (GMV-linked, ~1.5%) | £300,000 | £315,000 | £330,750 | £945,750 | | Initial implementation | £450,000 | — | — | £450,000 | | Annual platform upgrade | — | £75,000 | £80,000 | £155,000 | | Customisation maintenance (25% of impl.) | £60,000 | £112,500 | £112,500 | £285,000 | | Infrastructure (embedded in licence) | — | — | — | £0 | | Integration maintenance | £30,000 | £35,000 | £35,000 | £100,000 | | **Annual total** | **£840,000** | **£537,500** | **£558,250** | **£1,935,750** | #### Composable Commerce (Elastic Path) | Cost Category | Year 1 | Year 2 | Year 3 | 3-Year Total | |---|---|---|---|---| | Commerce engine licence (Elastic Path) | £60,000 | £63,000 | £66,150 | £189,150 | | Supporting services (CMS, search, etc.) | £30,000 | £31,500 | £33,075 | £94,575 | | Initial implementation | £480,000 | — | — | £480,000 | | Component upgrades (minor, independent) | — | £15,000 | £15,000 | £30,000 | | Ongoing feature development | £80,000 | £80,000 | £80,000 | £240,000 | | Infrastructure (cloud-native, usage-based) | £18,000 | £20,000 | £22,000 | £60,000 | | Integration maintenance | £25,000 | £20,000 | £20,000 | £65,000 | | **Annual total** | **£693,000** | **£229,500** | **£236,225** | **£1,158,725** | **Three-year saving with composable: approximately GBP 777,000 (40% lower TCO).** The Year 1 costs are comparable. The divergence emerges from Year 2 onwards, driven primarily by the elimination of upgrade cycles, reduced customisation maintenance costs, and the removal of GMV-linked licence escalation. ### Five-Year TCO Model: The Compounding Advantage The five-year model is where composable commerce's financial case becomes compelling for any organisation with meaningful growth ambitions. As online revenue grows, GMV-linked monolithic pricing escalates. As requirements evolve, customisation debt on the monolith accumulates. As the market changes, the inability to selectively replace components becomes an increasingly expensive constraint. #### Monolithic Platform (continued to Year 5) | Year | Platform Licence | Upgrade Costs | Maintenance | Other | Annual Total | |---|---|---|---|---|---| | Year 4 | £347,288 | £85,000 | £120,000 | £35,000 | £587,288 | | Year 5 | £364,652 | £90,000 | £120,000 | £35,000 | £609,652 | | **5-Year Total** | | | | | **£3,132,690** | #### Composable Commerce (continued to Year 5) | Year | Licence Fees | Dev & Ops | Infrastructure | Other | Annual Total | |---|---|---|---|---|---| | Year 4 | £104,801 | £80,000 | £24,000 | £20,000 | £228,801 | | Year 5 | £110,041 | £80,000 | £26,000 | £20,000 | £236,041 | | **5-Year Total** | | | | | **£1,623,567** | **Five-year saving with composable: approximately GBP 1,509,000 (52% lower TCO).** These figures do not include the revenue impact of 40% faster feature release cycles. For an organisation generating GBP 20 million in online revenue, the ability to deploy a new pricing model, a new channel, or a new buyer experience weeks rather than months faster has measurable commercial value. Nor do they include the value of strategic optionality — the ability to replace any component without rebuilding the stack. ### The Composable Advantage: Selective Component Replacement One of the most financially significant advantages of composable commerce is the ability to replace individual components without incurring a full replatforming cost. This is not a theoretical benefit. It has direct financial implications for every commerce director planning their five-year technology roadmap. Consider a mid-market organisation running Elastic Path with a headless CMS that has served its purpose but is now limiting content personalisation capabilities. In a composable architecture, replacing the CMS is a bounded project: implement the new CMS, migrate content, reconnect the existing API integrations, and deploy the updated frontend data-fetching layer. The commerce engine, search, pricing, and checkout are untouched. The equivalent exercise on a monolithic platform — replacing the tightly coupled CMS with a headless alternative — requires custom development against the platform's internal APIs, potential interference with the upgrade path, and regression testing of the entire platform. A bounded GBP 50,000-80,000 project in a composable stack becomes a GBP 200,000-400,000 undertaking within a monolith. Elastic Path's expanding capabilities reinforce this advantage. Native semantic search, AI-powered product discovery, and hosted storefront options mean the platform itself is evolving, with new capabilities available without the upgrade burden that monolithic platforms impose. ### When Monolithic Platforms Are More Cost-Effective: An Honest Assessment Trust in a financial analysis depends on its honesty about limitations. There are scenarios where monolithic platforms are genuinely more cost-effective than composable architecture, and it is worth being clear about them. #### Simple B2C Catalogues with Standard Requirements If your commerce operation has a straightforward B2C product catalogue, standard checkout flows, no complex pricing requirements, and a small development team, the integration overhead of a composable stack is a cost without a corresponding benefit. A well-configured Shopify Plus or Salesforce Commerce Cloud deployment may serve your requirements for less total investment than a composable architecture that requires ongoing technical expertise to operate. The composable advantage scales with complexity. Below a certain threshold of business requirements, the architecture's flexibility is not needed, and its integration costs are not justified. #### Organisations Without Technical Maturity Composable commerce requires a technically capable team. Not in terms of headcount, but in terms of capability: developers comfortable with API integration, cloud infrastructure, modern JavaScript frameworks, and CI/CD pipelines. Organisations that primarily manage their commerce platform through an admin interface, without an in-house development function, may find the operational requirements of a composable stack challenging. This is a solvable problem — specialist implementation partners like McKenna Consultants provide the expertise that bridges the gap — but it is a legitimate consideration when modelling the total cost, including the internal resource requirements of each approach. #### Short Planning Horizons The composable TCO advantage builds over time. In a two-year planning horizon, the Year 1 implementation cost and early operational investment may not be fully offset by the savings that accumulate from Year 2 onwards. If your planning horizon is genuinely short — due to a planned business sale, a merger, or a strategic pivot — the upfront investment in composable architecture may not deliver its full financial return within your window. For most organisations with a three-to-five-year commerce technology strategy, however, the composable TCO case is compelling. ### The Developer Productivity Factor The 40% faster feature release cadence that MACH architectures enable is not an abstract claim. It reflects the operational reality of independent service deployment versus monolithic release management. On a monolithic platform, deploying a change to the search ranking algorithm requires a full regression test of the entire platform before it goes to production. On a composable stack, the same change — deployed to the search service alone — requires testing only the search service and its API contract with the frontend. The scope of testing is bounded by the service boundary, not the size of the entire application. For a development team billing at GBP 600-900 per day (typical for UK commerce developers), the productivity gain translates directly into cost efficiency. A team that can deliver 40% more features within the same budget is, in effect, delivering a 40% reduction in the cost per feature. Over a three-year programme of commerce development, that compounding productivity advantage is worth hundreds of thousands of pounds. It also has a strategic dimension. Faster feature releases mean faster market response. Composable commerce teams can test a new pricing model, a new channel experience, or a new buyer workflow in weeks. Monolithic teams plan the same change for the next release cycle. ### Building the Business Case for Your Organisation The worked examples above are illustrative. Your organisation's TCO model will differ based on your current platform, online revenue, customisation depth, team structure, and growth trajectory. Building a credible business case requires modelling your specific numbers, which in turn requires an accurate assessment of current costs — many of which are embedded in existing contracts and not immediately visible. The key inputs to gather before building your TCO model are: - Current platform licence fees, including all annual escalation clauses - Development time spent on platform upgrades and maintenance over the past three years - Integration costs, including both initial build and ongoing maintenance - Infrastructure costs, including any embedded in the platform contract - Development velocity: how many features were delivered in the past 12 months, and how much of that team's time was spent on maintenance rather than new development With these numbers in hand, the TCO comparison typically tells a clear story. For organisations with complex requirements, meaningful online revenue, and a planning horizon of three or more years, composable commerce delivers materially lower total cost of ownership than monolithic platforms — while simultaneously providing the technical foundation for capabilities (agentic commerce, AI-powered search, multi-market expansion) that monolithic platforms cannot deliver without prohibitive customisation costs. ### How McKenna Consultants Can Help McKenna Consultants is a UK-based composable commerce consultancy specialising in Elastic Path implementations for complex B2B and multi-market deployments. We have delivered composable commerce projects for organisations including Norgren and Astrak, and we bring direct experience of the implementation costs, integration patterns, and operational requirements that are essential for credible TCO modelling. If you are preparing a business case for composable commerce investment, or evaluating whether to renew your existing monolithic platform contract, we can provide a structured TCO assessment based on your specific situation. That assessment will tell you honestly whether composable commerce is the right financial decision for your organisation — and if it is, what a realistic implementation and operating model looks like. Contact McKenna Consultants to discuss your composable commerce evaluation. We are experienced in working with CFOs, commerce directors, and CIOs at the business case stage, and we can provide the financial rigour that turns a technology preference into a boardroom-ready investment case. --- # EWS to Microsoft Graph: The API Migration Every Outlook Add-In Developer Must Complete by October 2026 **Canonical URL:** https://www.mckennaconsultants.com/ews-to-microsoft-graph-the-api-migration-every-outlook-add-in-developer-must-complete-by-october-2026/ **Author:** Nick McKenna **Published:** 10 February 2026 **Category:** Microsoft Office Add-In Developer ## EWS to Microsoft Graph: The API Migration Every Outlook Add-In Developer Must Complete by October 2026 Microsoft has confirmed that Exchange Web Services will cease to accept connections from Outlook add-ins on 1 October 2026. That date is not a soft deprecation with a grace period — it is a hard enforcement boundary. Add-ins that still call EWS after that date will fail for users on Exchange Online. If your Outlook add-in relies on EWS for mail retrieval, calendar operations, contact management, or task synchronisation, the migration to Microsoft Graph is not optional. This guide is specifically for development teams and IT architects who need to plan and execute the migration from EWS to Microsoft Graph. If you are looking for a guide to building a new Outlook add-in with Microsoft Graph from scratch, we cover that in our article on [building an Outlook add-in with Microsoft Graph API](/building-ms-outlook-add-in-with-microsoft-graph-api/). This article focuses on the distinct engineering challenge of migrating an existing EWS-dependent codebase to Graph equivalents — a challenge compounded, for many teams, by the simultaneous pressure of the VSTO migration deadline in April 2026. ### The Deprecation Timeline and Key Dates Understanding the full timeline is essential for migration planning. EWS deprecation is not a single event — it is a staged enforcement that has already begun. | Date | Event | |---|---| | October 2023 | Microsoft announced EWS deprecation for Exchange Online. No new feature development for EWS from this point. | | March 2026 | **EWS blocked for frontline and kiosk licences** (F1, F3). Add-ins making EWS calls on behalf of these users will receive errors. | | October 1, 2026 | **EWS fully blocked for all Exchange Online licence types**. All EWS connections from Outlook add-ins to Exchange Online will be refused. | The March 2026 enforcement event deserves specific attention. If your add-in serves users on Microsoft 365 F1 or F3 licences — common in retail, field service, healthcare, and manufacturing — those users will encounter failures before the broader October deadline. Organisations with mixed licence estates may see the problem surface in a subset of users first, which can complicate support and root-cause analysis if teams have not planned for the staged rollout. It is also worth clarifying what EWS deprecation does and does not affect. The deprecation applies to **Exchange Online only**. If your add-in connects to Exchange Server on-premises, EWS remains available — Microsoft has made no announcement of on-premises EWS deprecation. However, given Microsoft's trajectory, planning your add-in architecture around on-premises EWS as a long-term foundation carries obvious risk. ### Understanding the Scope of Your EWS Usage Before planning your migration, map every EWS call in your codebase. EWS usage in Outlook add-ins typically falls into several categories: **Direct EWS calls from add-in code.** These are explicit HTTP requests to the Exchange Web Services endpoint, typically using a SOAP envelope. Search your codebase for references to `https://outlook.office365.com/EWS/Exchange.asmx` or similar EWS endpoint patterns. **EWS via the Managed API.** The Exchange Web Services Managed API (`Microsoft.Exchange.WebServices`) is a .NET wrapper around EWS. It is particularly common in VSTO add-ins and older web add-in backends. **Server-side EWS calls from add-in backends.** Many Outlook add-ins use EWS not in the browser-side Office.js code, but in server-side components that synchronise mailbox data, run background tasks, or process mail server-side. These backend EWS dependencies need migration alongside the client-side code. **EWS through Office.js `makeEwsRequestAsync`.** The Office.js API exposes a `makeEwsRequestAsync` method that allows add-in code running in the browser to make EWS calls proxied through the Office host. This method will also stop working when EWS is blocked. Creating a complete inventory before estimating migration effort will prevent unpleasant surprises mid-project. ### API Surface Comparison: EWS vs Microsoft Graph Microsoft Graph has reached near-complete functional parity with EWS for the operations that Outlook add-ins commonly need. The table below maps the most common EWS operations to their Microsoft Graph equivalents. #### Mail Operations | EWS Operation | EWS Approach | Microsoft Graph Equivalent | |---|---|---| | Retrieve messages | `GetItem` / `FindItem` on folder | `GET /me/messages` or `GET /me/mailFolders/{id}/messages` | | Get message details | `GetItem` with message shape | `GET /me/messages/{id}` | | Create message | `CreateItem` | `POST /me/messages` | | Send message | `SendItem` | `POST /me/sendMail` | | Reply to message | `CreateItem` with `ReplyToItem` action | `POST /me/messages/{id}/reply` | | Move message | `MoveItem` | `POST /me/messages/{id}/move` | | Copy message | `CopyItem` | `POST /me/messages/{id}/copy` | | Delete message | `DeleteItem` | `DELETE /me/messages/{id}` | | Search messages | `FindItem` with search restriction | `GET /me/messages?$filter=...` or `POST /me/messages/search` | | Get attachments | `GetAttachment` | `GET /me/messages/{id}/attachments` | | Add attachment | `CreateAttachment` | `POST /me/messages/{id}/attachments` | | Subscribe to push notifications | `Subscribe` with push subscription | `POST /subscriptions` | | Streaming notifications | `GetStreamingEvents` | Graph change notifications with webhooks | #### Calendar Operations | EWS Operation | EWS Approach | Microsoft Graph Equivalent | |---|---|---| | List calendar events | `FindItem` on calendar folder | `GET /me/events` or `GET /me/calendars/{id}/events` | | Get event details | `GetItem` on calendar item | `GET /me/events/{id}` | | Create event | `CreateItem` in calendar | `POST /me/events` | | Update event | `UpdateItem` | `PATCH /me/events/{id}` | | Delete event | `DeleteItem` | `DELETE /me/events/{id}` | | Accept/decline meeting | `CreateItem` with `AcceptItem` | `POST /me/events/{id}/accept` or `/decline` | | Get free/busy | `GetUserAvailability` | `POST /me/calendar/getSchedule` | | Get calendar view | `FindItem` with calendar view | `GET /me/calendarView?startDateTime=...&endDateTime=...` | | List calendars | `FindFolder` on calendar root | `GET /me/calendars` | | Create calendar | `CreateFolder` | `POST /me/calendars` | #### Contacts Operations | EWS Operation | EWS Approach | Microsoft Graph Equivalent | |---|---|---| | List contacts | `FindItem` on contacts folder | `GET /me/contacts` | | Get contact details | `GetItem` | `GET /me/contacts/{id}` | | Create contact | `CreateItem` | `POST /me/contacts` | | Update contact | `UpdateItem` | `PATCH /me/contacts/{id}` | | Delete contact | `DeleteItem` | `DELETE /me/contacts/{id}` | | Search contacts | `FindItem` with name filter | `GET /me/contacts?$filter=displayName eq '...'` | | Get contact photo | `GetUserPhoto` | `GET /me/contacts/{id}/photo/$value` | | List contact folders | `FindFolder` | `GET /me/contactFolders` | #### Tasks Operations EWS tasks — stored in the Exchange Tasks folder — map to Microsoft Graph's To Do API. Note that this is a more significant shift than the mail and calendar migrations: the underlying data model differs, and the Graph To Do API represents a substantially richer capability set than what EWS tasks provided. | EWS Operation | EWS Approach | Microsoft Graph Equivalent | |---|---|---| | List tasks | `FindItem` on tasks folder | `GET /me/todo/lists/{id}/tasks` | | Get task details | `GetItem` | `GET /me/todo/lists/{id}/tasks/{taskId}` | | Create task | `CreateItem` | `POST /me/todo/lists/{id}/tasks` | | Update task | `UpdateItem` | `PATCH /me/todo/lists/{id}/tasks/{taskId}` | | Complete task | `UpdateItem` (set status) | `PATCH /me/todo/lists/{id}/tasks/{taskId}` with `status: completed` | | Delete task | `DeleteItem` | `DELETE /me/todo/lists/{id}/tasks/{taskId}` | | List task lists | `FindFolder` on tasks root | `GET /me/todo/lists` | ### Authentication Changes The authentication architecture change from EWS to Microsoft Graph is one of the most impactful aspects of the migration. #### EWS Authentication Methods EWS in legacy Outlook add-ins used one of two primary authentication approaches: **Basic authentication.** Username and password sent with each SOAP request. Microsoft deprecated basic authentication for EWS in Exchange Online in 2021 — if your add-in still uses basic auth, it has already stopped working for most tenants. **Exchange impersonation with service accounts.** Server-side EWS applications commonly use a service account with the `ApplicationImpersonation` RBAC role, allowing the service to make EWS calls on behalf of arbitrary mailboxes. Certificate-based authentication or client credentials were typically used to authenticate the service account. #### Microsoft Graph OAuth 2.0 via MSAL Microsoft Graph authentication uses OAuth 2.0 mediated by Microsoft Entra ID (formerly Azure AD). The recommended library is MSAL (Microsoft Authentication Library). For **delegated permission flows** — where the add-in acts on behalf of the signed-in user — the typical flow uses the authorisation code grant with PKCE: ```javascript import { PublicClientApplication } from '@azure/msal-browser'; const msalConfig = { auth: { clientId: 'your-app-client-id', authority: 'https://login.microsoftonline.com/common', redirectUri: 'https://your-add-in-domain.com/auth-callback' } }; const msalInstance = new PublicClientApplication(msalConfig); const loginRequest = { scopes: ['Mail.Read', 'Calendars.ReadWrite', 'Contacts.ReadWrite'] }; // Initiate sign-in const authResult = await msalInstance.loginPopup(loginRequest); const accessToken = authResult.accessToken; ``` For **application permission flows** — where a server-side component accesses multiple mailboxes without a signed-in user — use the client credentials grant: ```javascript import { ConfidentialClientApplication } from '@azure/msal-node'; const cca = new ConfidentialClientApplication({ auth: { clientId: 'your-app-client-id', authority: 'https://login.microsoftonline.com/your-tenant-id', clientCertificate: { thumbprint: 'cert-thumbprint', privateKey: fs.readFileSync('./cert.key', 'utf8') } } }); const tokenResponse = await cca.acquireTokenByClientCredential({ scopes: ['https://graph.microsoft.com/.default'] }); ``` Application permissions replace the `ApplicationImpersonation` pattern from EWS. Instead of a service account with impersonation rights, you register an Entra ID application with the `Mail.Read` / `Mail.ReadWrite` (and equivalent) application permissions, which are granted by a tenant administrator. The key practical difference: application permissions in Microsoft Graph require **admin consent** from each tenant that deploys your add-in. This is a change in your onboarding and deployment process, not just your code. ### Migration Strategies for Add-Ins Using Both EWS and Office.js Modern Outlook web add-ins typically use Office.js for item context (accessing the currently-selected email, composing messages in the active compose window) alongside EWS or Microsoft Graph for operations that Office.js does not directly support, such as accessing other mailbox folders, searching the mailbox, or synchronising data. The migration approach depends on where EWS is being called: #### Strategy 1: Replace EWS Calls with Microsoft Graph Calls Directly For add-ins where EWS calls are made from add-in JavaScript code (including via `makeEwsRequestAsync`), the migration involves replacing each EWS SOAP operation with the equivalent Microsoft Graph REST call. The Microsoft Graph SDK for JavaScript simplifies this: ```javascript import { Client } from '@microsoft/microsoft-graph-client'; import { TokenCredentialAuthenticationProvider } from '@microsoft/microsoft-graph-client/authProviders/azureTokenCredentials'; const authProvider = new TokenCredentialAuthenticationProvider(credential, { scopes: ['https://graph.microsoft.com/.default'] }); const graphClient = Client.initWithMiddleware({ authProvider }); // Replace EWS FindItem with Graph messages query const messages = await graphClient .api('/me/messages') .filter("isRead eq false") .select('id,subject,from,receivedDateTime,bodyPreview') .top(25) .get(); ``` #### Strategy 2: Move EWS Logic to a Server-Side Component, Then Migrate For complex EWS operations, it can be pragmatic to first consolidate all EWS calls into a single server-side service layer, then migrate that layer to Microsoft Graph. This avoids scattering Graph migration work across multiple client-side code paths and makes testing more tractable — you can run EWS and Graph implementations side by side, comparing outputs before switching. #### Strategy 3: Use the Office.js REST API for Delegated Operations Where Possible For simpler delegated operations — reading the current message, accessing basic mail properties — the Office.js `Office.context.mailbox.makeRestRequestAsync` method provides a simplified path to call the Outlook REST API (a subset of Microsoft Graph) without managing OAuth tokens directly in the add-in code. This method handles token acquisition automatically for the signed-in Outlook user. ```javascript // Get the current item's REST ID const itemId = Office.context.mailbox.convertToRestId( Office.context.mailbox.item.itemId, Office.MailboxEnums.RestVersion.v2_0 ); // Call Graph via makeRestRequestAsync (token handled automatically) Office.context.mailbox.makeRestRequestAsync( `https://outlook.office.com/api/v2.0/me/messages/${itemId}`, 'GET', null, null, function(result) { if (result.status === Office.AsyncResultStatus.Succeeded) { const message = JSON.parse(result.value); // Process message } } ); ``` This approach is limited to the current user's context and the Outlook REST API surface, but it eliminates the authentication complexity for the most common add-in operations. ### The Dual Migration Challenge Teams that are simultaneously managing the VSTO migration deadline (April 2026) and the EWS deprecation deadline (October 2026) face compounding complexity. The two migrations interact in important ways: **VSTO add-ins almost certainly use the EWS Managed API.** If your migration path involves rewriting VSTO add-ins as web add-ins, you are not just changing the platform — you are also changing the API layer. A VSTO add-in built on the EWS Managed API needs its data access layer rebuilt using Microsoft Graph. **The authentication models differ significantly.** VSTO add-ins authenticate using Windows identity (typically NTLM or Kerberos for on-premises Exchange, or Windows-integrated credentials for Exchange Online). Microsoft Graph uses OAuth 2.0 via Entra ID. Migrating both adds-in type and API simultaneously means your developers need to understand both the Office.js API surface and the Microsoft Graph API surface, plus MSAL-based token management — a significant knowledge uplift. **Testing scope doubles.** You cannot validate the VSTO-to-web-add-in migration independently of the EWS-to-Graph migration if both are happening in the same codebase. Test plans must cover both dimensions. The practical recommendation for teams facing both deadlines: prioritise the VSTO migration first (April 2026 is the nearer deadline), but design the web add-in with Microsoft Graph from the outset rather than implementing EWS as a temporary measure in the new web add-in. Building EWS into a newly-created web add-in, only to migrate it again before October 2026, is engineering effort you cannot afford. ### The AppID AllowList: A Temporary Measure, Not a Solution Microsoft has provided an AppID AllowList mechanism for organisations that cannot complete their EWS migration by the October 2026 deadline. This allows specific Entra ID application registrations to be added to an allowlist, temporarily exempting them from the EWS block. The AppID AllowList is not a permanent solution. Microsoft has been explicit that it exists to provide a short grace period for genuine migration completion, not as an indefinite workaround. Organisations granted AllowList status will still be required to complete migration — the enforcement mechanism will simply be deferred rather than waived. Consider the AllowList only if: - Your migration is underway and you have a concrete completion date beyond October 2026. - You have a documented migration plan and resource commitment in place. - The components requiring AllowList coverage are genuinely complex (for example, server-side EWS integrations with legacy enterprise systems that have external dependencies). Do not use the AllowList as an excuse to defer migration planning. The process for requesting AllowList inclusion is not automatic — it requires engagement with Microsoft and documentation of your migration progress. Starting that engagement before October 2026 is advisable. ### Testing Your Microsoft Graph Migration Validating that the migrated Microsoft Graph implementation is behaviourally equivalent to the EWS implementation requires a structured approach: #### Functional Equivalence Testing For each migrated operation, create tests that verify the Microsoft Graph response contains the expected data fields. Be aware that field names differ between EWS and Graph: for example, EWS `PR_INTERNET_MESSAGE_ID` becomes `internetMessageId` in Graph, and EWS `DateTimeReceived` becomes `receivedDateTime`. #### Pagination Handling EWS uses `FindItem` with `IndexedPageItemView` for pagination. Microsoft Graph uses OData `$top` and `$skip` parameters, or `nextLink` cursors for server-side pagination. Migrated code must handle Graph's pagination model, which differs from EWS's offset-based approach. ```javascript // Graph pagination using nextLink async function getAllMessages(graphClient) { const messages = []; let response = await graphClient .api('/me/messages') .top(100) .get(); messages.push(...response.value); while (response['@odata.nextLink']) { response = await graphClient .api(response['@odata.nextLink']) .get(); messages.push(...response.value); } return messages; } ``` #### Permissions Validation Test your add-in with users who have different permission levels and licence types. Pay particular attention to: - Users whose mailboxes are hosted in specific Exchange Online regions (Graph endpoint routing differs by region). - Guest users, where Graph permissions behave differently from EWS impersonation. - Shared mailboxes, which require specific Graph permission configurations. #### Change Notification Testing If your add-in uses EWS streaming or push notifications to detect new mail or calendar changes, the migration to Microsoft Graph change notifications (webhooks) requires specific testing. Graph change notifications are delivered via HTTPS POST to a webhook endpoint, and your add-in's notification processing infrastructure will need to be rebuilt to receive and validate these messages. #### Performance Benchmarking EWS SOAP requests and Microsoft Graph REST calls have different performance characteristics. If your add-in performs bulk operations — retrieving large numbers of messages, processing calendar ranges — benchmark the Graph implementation under production-representative load before go-live. ### Registering Your Application in Microsoft Entra ID Before your add-in can make Microsoft Graph calls, you must register it in Microsoft Entra ID. The app registration is foundational to the migration: 1. In the Azure portal, navigate to **Microsoft Entra ID > App registrations > New registration**. 2. Provide a name and set the supported account types (single tenant, multitenant, or personal accounts as appropriate for your add-in audience). 3. Configure the redirect URI to your add-in's authentication callback. 4. Under **API permissions**, add the Microsoft Graph permissions required for your operations. Use delegated permissions for user-context operations and application permissions for service-to-service access. 5. For application permissions, submit an admin consent request — or, during development, use the "Grant admin consent" button in the portal if you have the appropriate Entra ID role. 6. Generate a client secret (for development) or configure certificate credentials (for production). Document the required permissions clearly. When your add-in is deployed to a new tenant, an administrator must consent to those permissions. Unexpected permission scopes discovered during deployment will stall your rollout. ### Get Expert Help with Your EWS Migration The convergence of migration deadlines in 2026 — VSTO in April, EWS in October — means that Outlook add-in development teams are facing an unusually compressed planning window. The technical scope of an EWS-to-Graph migration is often underestimated: the API surface change, the authentication architecture change, the pagination model change, and the shift in how permissions are granted all require careful design and thorough testing. For organisations managing both the VSTO migration deadline and the EWS deprecation simultaneously, the complexity compounds further. Getting the sequencing wrong — building EWS into a new web add-in, or migrating to Graph before the VSTO migration is stable — creates rework that Q1 and Q2 2026 timelines simply cannot absorb. McKenna Consultants is a UK-based Office add-in development consultancy with deep expertise in both Office.js web add-in development and Microsoft Graph API integration. We have guided clients through API migrations across the Microsoft 365 platform and understand the sequencing decisions that make the difference between a smooth migration and a costly rework. If you are planning your EWS-to-Microsoft-Graph migration and need architectural guidance, implementation support, or an independent review of your migration plan, [contact McKenna Consultants](/contact/) to discuss your requirements. We can help you reach October 2026 with a fully migrated, Graph-native add-in — without disrupting users in the process. --- # WOPI Security Beyond Proof Keys: Implementing Zero Trust for Cloud Document Editing **Canonical URL:** https://www.mckennaconsultants.com/wopi-security-beyond-proof-keys-implementing-zero-trust-for-cloud-document-editing/ **Author:** Nick McKenna **Published:** 3 February 2026 **Category:** CSPP WOPI ## WOPI Security Beyond Proof Keys: Implementing Zero Trust for Cloud Document Editing Proof key validation is the entry point for WOPI security — the mechanism that verifies every incoming request from Office Online is genuinely from Microsoft and has not been tampered with in transit. It is a well-understood control, and McKenna has previously written about implementing it correctly. But proof keys are one layer in a security stack that, for enterprise deployments in regulated industries, must be significantly deeper. Organisations handling regulated documents — financial records, legal contracts, clinical notes, government correspondence — cannot rely on request validation alone. They need a security architecture that applies zero trust principles end-to-end: never trust any component implicitly, always verify every access request, enforce least privilege at every layer, and microsegment the network so that a compromise in one component cannot propagate laterally. This article sets out the full WOPI host security architecture for enterprise deployments. It covers TLS configuration, OAuth 2.0 token lifecycle management, network controls, rate limiting, audit logging, and data-at-rest encryption — and maps every control to zero trust principles and the compliance frameworks that regulated-sector clients are most likely to require. ### The Zero Trust Framework Applied to WOPI Zero trust is an architectural philosophy, not a product category. Its foundational principles, as articulated by NIST SP 800-207 and the UK's National Cyber Security Centre, are: - **Never trust, always verify**: No component — user, service, or device — is implicitly trusted because of its network location. Every access request must be authenticated and authorised. - **Least privilege**: Subjects are granted only the permissions required to perform their current task, for only as long as needed. - **Assume breach**: Design systems as though adversaries are already present on the network. Limit blast radius through microsegmentation and audit everything. - **Explicit verification**: Every access decision must use all available data points — identity, location, device health, time of request, and behavioural context. Applied to a WOPI host, these principles translate into concrete engineering requirements at each layer of the stack. ### Layer 1: Transport Security — TLS 1.3 Enforcement The foundation of WOPI security is encrypted transport. The WOPI specification requires HTTPS, but the specification does not mandate which TLS version or cipher suites are acceptable. For enterprise deployments, this must be configured explicitly. #### Enforcing TLS 1.3 TLS 1.3 removes the cryptographic weaknesses present in TLS 1.2: export-grade cipher suites, RSA key exchange (which lacks forward secrecy), and the negotiation overhead that enabled downgrade attacks. For a WOPI endpoint handling sensitive documents, TLS 1.2 should be considered a legacy fallback rather than a baseline. Configure your WOPI endpoint to require TLS 1.3 as the minimum version: ```nginx # Nginx configuration ssl_protocols TLSv1.3; ssl_prefer_server_ciphers off; # TLS 1.3 cipher suites are non-negotiable (always the three below) # TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_AES_128_GCM_SHA256 ``` ```iis ``` For Azure App Service, enforce TLS 1.3 via the portal (TLS/SSL settings → Minimum TLS Version) or via the Azure CLI: ```bash az webapp update \ --resource-group \ --name \ --set "properties.minTlsVersion=1.3" ``` #### HSTS Configuration HTTP Strict Transport Security prevents protocol downgrade attacks by instructing browsers and Office Online clients to refuse plain HTTP connections. Set a long max-age and include `includeSubDomains` and `preload`: ``` Strict-Transport-Security: max-age=63072000; includeSubDomains; preload ``` Submit your domain to the HSTS preload list (hstspreload.org) to ensure enforcement before the first HTTPS connection is ever made. #### Certificate Management Use certificates from a publicly trusted CA for external-facing WOPI endpoints. For internal WOPI hosts on a private network: - Use a CA whose root is trusted by the Office Online service infrastructure. - Set certificate lifetimes of 90 days or less and automate renewal via ACME (Let's Encrypt or equivalent) or Azure Key Vault certificate policies. - Monitor certificate expiry with alerting at 30 days and 7 days. A WOPI host whose certificate expires silently breaks document editing for all users. Zero trust principle applied: **explicit verification** — every connection is verified at the transport layer, not assumed safe because it arrives on an internal network segment. ### Layer 2: OAuth 2.0 Token Lifecycle Management Our previous article covered migrating from IDCRL to modern OAuth 2.0 authentication. Here we focus on the token lifecycle controls that go beyond initial issuance — the management of tokens throughout their lifetime, including refresh, revocation, and anomaly detection. #### Token Issuance Controls When issuing access tokens for WOPI sessions, apply the following constraints: - **Short expiry**: Access tokens should expire in 60 minutes or less. WOPI sessions are interactive and short-lived; a 60-minute window limits the usefulness of a stolen token. - **Audience binding**: Include an `aud` claim that binds the token to your specific WOPI endpoint. A token issued for your WOPI host should be rejected by any other service. - **Document binding**: For highly sensitive documents, include the document identifier in the token claims. This prevents a token obtained for one document from being replayed against a different document. ```json { "sub": "user-id-guid", "aud": "https://wopi.yourdomain.com", "iss": "https://login.microsoftonline.com/{tenant-id}/v2.0", "iat": 1738540800, "exp": 1738544400, "document_id": "doc-guid-here", "scope": "wopi.read wopi.write" } ``` #### Token Refresh and Rotation Refresh tokens must be single-use and rotated on every use. Microsoft Entra ID supports refresh token rotation natively; if you issue your own session tokens alongside Entra tokens, implement the same pattern: 1. On each token refresh request, invalidate the presented refresh token immediately. 2. Issue a new access token and a new refresh token. 3. If the old refresh token is presented again after invalidation, treat this as a potential token theft: revoke the entire token family and require re-authentication. Store refresh tokens in server-side session storage only. Never expose them to the browser through cookies, localStorage, or URL parameters. #### Token Revocation A zero trust architecture requires the ability to revoke access at any time — not just at token expiry. Implement the following revocation triggers: - **User-initiated session termination**: When a user closes the document or logs out, revoke the associated access and refresh tokens immediately. - **Administrative revocation**: Provide a management interface for administrators to revoke all active tokens for a specific user or document. - **Anomaly-triggered revocation**: Revoke tokens automatically when anomalous behaviour is detected (see the rate limiting section). - **Entra ID integration**: Subscribe to Microsoft's Continuous Access Evaluation (CAE) signals. If Entra ID detects a risk event (impossible travel, credential leak, account compromise), your WOPI host will receive a real-time signal and can revoke the session without waiting for token expiry. Zero trust principle applied: **never trust, always verify** — token validity is continuously evaluated, not assumed to persist from the moment of issuance. ### Layer 3: Network Controls — IP Allowlisting and Microsegmentation #### Office Online IP Allowlisting Office Online communicates with WOPI hosts from a defined set of Microsoft IP address ranges. For internet-facing WOPI endpoints, restricting inbound connections to these ranges eliminates an entire category of unauthenticated attack surface. Microsoft publishes the Office Online IP ranges as part of the Microsoft 365 endpoint data, available via the Office 365 IP address and URL web service. Automate the retrieval and application of these ranges — they change periodically as Microsoft updates infrastructure, and manually maintained allowlists go stale. ```bash # Retrieve current Office Online IP ranges via Microsoft's API curl "https://endpoints.office.com/endpoints/worldwide?clientrequestid=$(uuidgen)" \ | jq '[.[] | select(.serviceAreaDisplayName == "Microsoft 365 Common and Office Online") | .ips] | flatten | unique' ``` Apply the retrieved ranges at the network boundary (NSG, WAF, or firewall) rather than in application code. Network-layer enforcement cannot be bypassed by application vulnerabilities. For CSPP Plus partners, additionally allowlist the WOPI validator and discovery service IP ranges published in the CSPP Plus documentation. #### Private Network Isolation For enterprise deployments where the WOPI host serves internal users only: - Place the WOPI host on a private network segment with no direct internet ingress. - Route Office Online's WOPI traffic through a private endpoint or Azure Private Link, keeping traffic off the public internet entirely. - Use a dedicated subnet for the WOPI host with Network Security Group (NSG) rules that permit inbound traffic only from the Office Online IP ranges on port 443, and deny all other inbound traffic by default. #### Microsegmentation The WOPI host should not have unrestricted network access to your file store, database, or other internal services. Apply microsegmentation: - The WOPI application tier has network access to the file store only on the specific port and protocol required (e.g., port 445 for SMB, port 443 for Azure Blob Storage REST API). - The WOPI application tier has network access to the token cache (Redis) only on port 6380 with TLS enabled. - No outbound internet access from the WOPI host except to Microsoft identity endpoints (login.microsoftonline.com) and, if applicable, your own telemetry pipeline. - A separate management subnet for administrative access, separated from the data plane by a jump host. Zero trust principle applied: **microsegmentation** — compromise of the WOPI application cannot be leveraged to access adjacent systems. ### Layer 4: Rate Limiting and Abuse Prevention High-volume document operations can be used to exfiltrate data at scale, probe for access control weaknesses, or exhaust resources through denial-of-service. Rate limiting is a compensating control that makes bulk abuse impractical. #### Per-User Rate Limits Apply rate limits per authenticated user identity, not per IP address — IP-based rate limiting is trivially bypassed by distributed clients and fails for users behind shared egress IPs: | Operation | Limit | Window | |---|---|---| | CheckFileInfo | 120 requests | per minute | | GetFile | 60 requests | per minute | | PutFile | 30 requests | per minute | | Lock / Unlock | 60 requests | per minute | | All WOPI operations (combined) | 300 requests | per minute | These figures are illustrative baselines. Calibrate against your observed traffic patterns — a coauthoring session with many active users will generate more Lock refresh requests than a simple view session. #### Per-Document Rate Limits In addition to per-user limits, apply rate limits per document to prevent a legitimate user from performing an unusual number of operations on a single document (a potential indicator of automated exfiltration): ``` GetFile on document X by user Y: maximum 20 requests per hour PutFile on document X by user Y: maximum 60 requests per hour ``` #### Anomaly Detection and Automatic Suspension Implement automated responses to anomalous patterns: - **Impossible geography**: A user authenticates from London, then from Singapore 15 minutes later. Suspend the session and require re-authentication with additional MFA. - **GetFile at unusual hours**: A user who normally accesses documents during UK business hours downloads 50 documents at 03:00 GMT on a Sunday. Flag for security review and optionally suspend until manually reviewed. - **Mass download pattern**: More than N GetFile operations within a rolling 1-hour window, where N is configurable per sensitivity tier. Automatically throttle to a lower rate limit and alert the security team. Integrate with your SIEM (Splunk, Microsoft Sentinel, or equivalent) to correlate WOPI anomalies with signals from other systems. Zero trust principle applied: **assume breach** — treat unusual behaviour as potentially malicious rather than assuming the authenticated session remains legitimate. ### Layer 5: Comprehensive Audit Logging For regulated environments, audit logging is not a debugging aid — it is a compliance requirement. Every document access event must be logged with sufficient detail to answer: who accessed this document, when, from where, and what did they do? #### Required Log Fields Every WOPI operation log entry must include: ```json { "timestamp": "2026-02-03T09:15:32.456Z", "operation": "GetFile", "result": "200", "document_id": "doc-guid-here", "document_name": "Q4-Financial-Report.xlsx", "user_id": "user-guid-here", "user_email": "user@client.com", "tenant_id": "tenant-guid-here", "session_id": "session-guid-here", "client_ip": "185.234.56.78", "office_online_session": "oos-session-id", "file_size_bytes": 524288, "duration_ms": 142, "user_agent": "Microsoft Office Online", "geo_location": { "country": "GB", "region": "England", "city": "London" } } ``` The `document_name` field requires careful consideration: log it for operational utility, but ensure the logging pipeline itself is access-controlled — the audit log must not become a secondary route for unauthorised information disclosure. #### Log Retention and Integrity - Retain audit logs for a minimum of 12 months (ISO 27001 requirement) or longer as required by sector-specific regulation (7 years for FCA-regulated entities, for example). - Write logs to a write-once, append-only store. In Azure, Log Analytics Workspace with immutable storage or Azure Immutable Blob Storage satisfies this requirement. - Generate and store a cryptographic hash (SHA-256) of each log batch at the time of writing. This enables verification that logs have not been modified. - Restrict access to audit logs to the security team only. Developers and operations staff should not have the ability to read or delete access logs for documents they do not own. #### Log Alerting Configure alerts on the following patterns: - Any access to documents classified as "highly sensitive" outside of business hours. - GetFile for a document by a user who has not previously accessed it and is not listed as an authorised collaborator. - Failed authentication followed by a successful authentication within 5 minutes (potential credential stuffing with valid credentials found). - Any PutFile that changes a document's size by more than 80% (potential document replacement or corruption). Zero trust principle applied: **assume breach and verify explicitly** — comprehensive logging enables forensic investigation of any security incident and demonstrates due diligence to auditors. ### Layer 6: Data-at-Rest Encryption The WOPI host's file store contains the document content itself. If the storage layer is compromised, encryption at rest is the last line of defence. #### Encryption Standards Use AES-256 encryption for all documents at rest. In practice, for most deployment targets: - **Azure Blob Storage**: Server-side encryption with AES-256 is enabled by default. For regulated environments, use customer-managed keys (CMK) via Azure Key Vault rather than Microsoft-managed keys. CMK gives you control over key rotation and the ability to revoke access to all data by revoking the key. - **Azure SQL / PostgreSQL**: Transparent data encryption (TDE) with customer-managed keys provides equivalent protection for document metadata. - **On-premises NFS / SMB file stores**: Use BitLocker (Windows) or LUKS (Linux) for volume-level encryption. Ensure encryption keys are stored separately from the encrypted volumes. #### Key Management Encryption is only as strong as key management: - Store encryption keys in a dedicated key management service (Azure Key Vault, AWS KMS, or HashiCorp Vault) — never in application configuration or environment variables. - Rotate encryption keys annually or immediately following a security incident. - Implement key access logging: every decryption operation should generate an audit record in the KMS, separate from the WOPI application log. - Use envelope encryption: data encryption keys (DEKs) encrypt individual documents; key encryption keys (KEKs) encrypt the DEKs. This allows key rotation without re-encrypting all stored documents. #### Document Classification and Tiered Encryption For implementations handling documents at multiple sensitivity levels, consider tiered encryption: - **Standard documents**: Server-managed keys with HSM backing. - **Sensitive documents**: Customer-managed keys in a dedicated Key Vault instance with access logging and restricted administrator access. - **Highly sensitive documents**: Additional application-layer encryption using keys that are only decrypted into memory for the duration of a WOPI operation, with keys never written to disk. Zero trust principle applied: **least privilege and assume breach** — even if an attacker gains access to the file store, encrypted data without the keys is useless. ### Zero Trust Architecture Reference The following describes the full security architecture for an enterprise WOPI deployment: ``` [Office Online (Microsoft)] ──TLS 1.3──► [WAF / DDoS Protection] │ IP Allowlist (O365 ranges) Rate Limiting (per-user, per-doc) │ [WOPI Application Tier] ├── Proof key validation ├── OAuth 2.0 token validation ├── Document authorisation check └── Audit log write │ ┌─────────────────────────┼─────────────────────────┐ │ │ │ [Token Cache] [File Store] [Audit Store] Redis TLS 6380 AES-256 CMK Immutable log Private endpoint Private endpoint append-only ``` Every arrow in this diagram represents an authenticated, encrypted, least-privilege connection. No component trusts another based on network location alone. ### Compliance Mapping The following table maps WOPI security controls to the requirements of ISO 27001:2022, SOC 2 (Trust Services Criteria), and Cyber Essentials Plus — the three frameworks most commonly required by enterprise buyers and regulated-sector clients in the UK. | Security Control | ISO 27001:2022 | SOC 2 TSC | Cyber Essentials Plus | |---|---|---|---| | TLS 1.3 enforcement | A.8.24 (Cryptography), A.5.14 (Information transfer) | CC6.7 (Transmission encryption) | Secure configuration | | HSTS and certificate management | A.8.24, A.5.31 | CC6.7 | Secure configuration | | OAuth 2.0 with short-lived tokens | A.5.15 (Access control), A.8.5 (Secure authentication) | CC6.1 (Logical access security) | User access control | | Token revocation and CAE integration | A.5.16 (Identity management), A.5.18 (Access rights) | CC6.2, CC6.3 | User access control | | IP allowlisting for Office Online ranges | A.8.20 (Network security), A.8.22 (Segregation in networks) | CC6.6 (Boundary protection) | Boundary firewalls | | Network microsegmentation | A.8.22 | CC6.6, CC6.7 | Network segmentation | | Per-user and per-document rate limiting | A.8.6 (Capacity management), A.8.16 (Monitoring) | A1.2 (Availability controls) | Malware protection | | Anomaly detection and session suspension | A.8.16 (Monitoring), A.5.25 (Incident response) | CC7.2 (Anomaly monitoring) | — | | Comprehensive audit logging | A.8.15 (Logging), A.5.33 (Protection of records) | CC7.2, CC7.3 | — | | Log integrity and immutability | A.8.15, A.5.33 | CC7.3, CC7.4 | — | | AES-256 encryption at rest | A.8.24 (Cryptography) | CC6.1, CC6.7 | — | | Customer-managed key management | A.8.24, A.5.10 (Acceptable use of assets) | CC6.1 | — | | Document classification and tiered encryption | A.5.12 (Classification), A.8.24 | CC6.1 | — | #### ISO 27001:2022 ISO 27001 Annex A controls most directly applicable to a WOPI deployment cluster in three areas: - **A.8 Technological controls**: Cryptography (A.8.24), network security (A.8.20–8.22), logging and monitoring (A.8.15–8.16), and secure authentication (A.8.5) are all addressed by the controls above. - **A.5 Organisational controls**: Access control (A.5.15–5.18) and incident management (A.5.25) map to token lifecycle management, IP allowlisting, and anomaly-triggered response. - **A.5.33**: Protection of records applies directly to audit log immutability and retention requirements. For organisations pursuing ISO 27001 certification, a WOPI security architecture that implements all of the above controls will satisfy the evidence requirements for an Statement of Applicability covering document management information assets. #### SOC 2 (Trust Services Criteria) The most relevant SOC 2 criteria for a WOPI host are in the Confidentiality and Availability categories: - **CC6 (Logical and physical access controls)**: Token-based authentication, IP allowlisting, and encryption at rest directly satisfy CC6.1, CC6.6, and CC6.7. - **CC7 (System operations)**: Audit logging, anomaly detection, and incident response processes satisfy CC7.2, CC7.3, and CC7.4. - **A1 (Availability)**: Rate limiting and capacity management controls support the availability trust service criteria. For SaaS ISVs seeking SOC 2 Type II reports, the WOPI security controls contribute substantially to the evidence required for audit. Importantly, the audit log completeness requirements above — who accessed what, when, from where — directly map to the evidence SOC 2 auditors will request. #### Cyber Essentials Plus Cyber Essentials Plus is increasingly required for UK government contracts and public sector procurement. Its five technical controls are: 1. **Boundary firewalls and internet gateways**: IP allowlisting for Office Online ranges and WAF protection satisfy this control. 2. **Secure configuration**: TLS 1.3 enforcement, HSTS, and disabling unnecessary services satisfy this control. 3. **User access control**: OAuth 2.0 with MFA, token revocation, and least-privilege document authorisation satisfy this control. 4. **Malware protection**: Rate limiting and anomaly detection contribute indirectly; full malware protection requires additional controls outside the WOPI stack (endpoint protection, server AV scanning of uploaded documents). 5. **Patch management**: WOPI host operating system and runtime patching falls outside the protocol-level controls covered here but must be documented for the assessment. Note that Cyber Essentials Plus does not directly assess encryption at rest or audit logging — these are requirements of ISO 27001 and SOC 2, not CE+. However, they are increasingly expected as baseline hygiene by enterprise procurement teams even when CE+ is the stated minimum requirement. ### Sequencing the Implementation For ISVs adding these controls to an existing WOPI deployment, sequence the implementation to prioritise the highest-impact controls first: 1. **Week 1–2**: TLS 1.3 enforcement and HSTS. Lowest implementation risk, immediate transport security improvement. 2. **Week 3–4**: OAuth 2.0 token lifecycle hardening — short expiry, revocation endpoints, CAE integration. 3. **Week 5–6**: IP allowlisting for Office Online ranges. Requires testing against your deployment environment to confirm the correct IP ranges are applied. 4. **Week 7–8**: Audit logging to an immutable store with the required field set. 5. **Week 9–10**: Rate limiting — start with conservative limits and tune based on observed traffic. 6. **Week 11–12**: Data-at-rest encryption hardening — customer-managed keys if not already implemented. 7. **Ongoing**: Anomaly detection rules, alerting, and SIEM integration. For greenfield WOPI implementations, build all controls in from the start rather than retrofitting. The architectural decisions — particularly microsegmentation, centralised token cache, and immutable audit logging — are significantly more expensive to add to a running production system than to include in initial design. ### Working with McKenna Consultants Implementing a zero trust WOPI security architecture requires expertise across protocol mechanics, cloud infrastructure, identity management, and compliance frameworks. The controls described in this article are not independent checklists — they interact with each other and with the operational characteristics of your specific deployment. McKenna Consultants has designed and delivered WOPI security architectures for enterprise clients across financial services, legal tech, and document management — environments where the regulatory consequences of a breach are not hypothetical. Our WOPI practice covers every layer described in this article, from TLS configuration and Entra ID token management through to compliance mapping for ISO 27001 and SOC 2 audits. If you are evaluating WOPI security for a regulated-environment deployment, building a compliance evidence pack for an upcoming audit, or hardening an existing WOPI integration that has grown beyond its initial security design, we would welcome the opportunity to work with you. [Contact McKenna Consultants](/contact/) to discuss your WOPI security requirements. --- # Multi-Agent AI Systems: Orchestrating Specialised Agents for Enterprise Workflows **Canonical URL:** https://www.mckennaconsultants.com/multi-agent-ai-systems-orchestrating-specialised-agents-for-enterprise-workflows/ **Author:** Nick McKenna **Published:** 27 January 2026 **Category:** Artificial Intelligence ## Multi-Agent AI Systems: Orchestrating Specialised Agents for Enterprise Workflows Gartner does not report a 1,445% increase in enquiries about a technology that is merely interesting. That figure — the surge in client questions about multi-agent AI systems recorded in 2025 — reflects something more significant: a recognition among enterprise architecture and technology leadership that the fundamental unit of agentic AI is shifting. Single-purpose agents that execute one workflow in isolation are giving way to orchestrated systems in which teams of specialised agents collaborate, hand off work between them, and collectively execute processes of a complexity that no single agent could reliably handle. This article is not an introduction to AI agents — we covered that ground in our [guide to building AI agents for enterprise automation](/building-ai-agents-for-enterprise-automation-a-practical-guide/). Nor does it cover Microsoft-specific agent development, which we addressed in our [MCP and Microsoft 365 Copilot agents guide](/building-microsoft-365-copilot-agents-with-mcp-a-developer-s-guide/). This article addresses the specific architectural challenge of multi-agent orchestration: how you design a system in which multiple specialised agents operate as a coherent whole, how you manage state and communication across agent boundaries, and how you build in the governance controls that make such systems trustworthy enough to deploy in production enterprise environments. ### Why Single-Agent Architectures Break Down at Scale To understand the case for multi-agent AI systems enterprise deployments, it helps to be precise about where single-agent architectures fail. A single agent operates with one reasoning context: a system prompt that defines its purpose, a tool set that defines its capabilities, and a context window in which all observations, reasoning, and intermediate results accumulate. As the workflow grows more complex, three problems emerge. **Context saturation.** LLM context windows are finite. For a simple five-step workflow, a single agent's context remains manageable. For a twenty-step enterprise process — one involving dozens of tool calls, several external data lookups, and multiple decision points — the accumulated context approaches or exceeds the model's practical reasoning limits. Performance degrades non-linearly; the model's ability to maintain coherent reasoning across a long context is not a linear function of context length. **Tool set proliferation.** A single agent handling an end-to-end enterprise workflow requires access to every tool used at any point in the process. A procurement workflow alone might touch an ERP system, a supplier database, a compliance checking API, a document generation service, a spend analytics platform, and an approval workflow system. Presenting an agent with thirty tools and instructing it to select the right one at each step dramatically increases the probability of incorrect tool selection compared to presenting a specialist agent with five tools precisely scoped to its domain. **Domain expertise dilution.** A system prompt that tries to encode the knowledge and decision logic for multiple distinct domains — financial analysis, legal compliance, technical evaluation, supplier relationship management — produces an agent that is mediocre at each rather than expert at any. Specialisation is as valuable in AI agent design as it is in human organisational design. Multi-agent systems address all three failure modes by decomposing complex workflows across agents with narrower, more focused responsibilities. ### The Four Core Orchestration Patterns AI agent orchestration patterns architecture can be categorised into four principal designs, each suited to different workflow characteristics. Real enterprise deployments often combine these patterns; understanding them individually is the prerequisite for composing them effectively. #### Supervisor Pattern In the supervisor pattern, a central orchestrator agent receives the top-level task, decomposes it into subtasks, assigns each subtask to an appropriate specialist agent, receives the results, and synthesises a final response. The orchestrator maintains the overall task state and decides at each step which specialist agent to invoke next. ``` User Request │ ▼ ┌─────────────────┐ │ Supervisor │ ← Holds task state, routes subtasks │ Orchestrator │ └────────┬────────┘ │ delegates subtasks ┌────┴─────────────────────┐ ▼ ▼ ▼ ┌────────┐ ┌────────┐ ┌──────────┐ │ Agent A│ │ Agent B│ │ Agent C │ │(Domain1│ │(Domain2│ │(Domain 3)│ └────────┘ └────────┘ └──────────┘ │ │ │ └───────────┴──────────────┘ │ results ▼ Final synthesis ``` The supervisor pattern is the most general-purpose orchestration architecture and the appropriate default for workflows with variable structure — where the sequence and combination of specialist agents depends on what is discovered at runtime rather than being predetermined. The orchestrator must be implemented with a powerful, capable model; it carries the full reasoning burden of task decomposition and synthesis. Specialist agents can often use smaller, faster, cheaper models precisely because their task is narrowly defined. A critical implementation detail: the supervisor agent must be designed with explicit awareness of its routing responsibilities. Its system prompt should specify the available specialist agents, their capabilities and limitations, and the criteria for task delegation. Ambiguity in the orchestrator's routing logic is a primary source of failure in supervisor pattern implementations. #### Pipeline Pattern In the pipeline pattern, workflow stages are arranged as a directed sequence. Each agent receives the output of the previous agent as its input, enriches or transforms it, and passes the result to the next agent. There is no central orchestrator; the pipeline is managed by the infrastructure rather than by an agent. ``` Input │ ▼ ┌──────────┐ │ Stage 1 │ (Classification Agent) │ Agent │ └────┬─────┘ │ ▼ ┌──────────┐ │ Stage 2 │ (Extraction Agent) │ Agent │ └────┬─────┘ │ ▼ ┌──────────┐ │ Stage 3 │ (Validation Agent) │ Agent │ └────┬─────┘ │ ▼ ┌──────────┐ │ Stage 4 │ (Routing Agent) │ Agent │ └──────────┘ │ ▼ Output ``` The pipeline pattern is optimal for workflows with fixed, sequential structure — where the steps are always the same and the output of each step is a well-defined input to the next. Document processing is the canonical enterprise use case: every incoming document passes through the same classification, extraction, validation, and routing stages in sequence. Pipeline architectures are simpler to reason about, debug, and monitor than supervisor-based systems because the control flow is deterministic. They are also easier to test: each stage can be evaluated independently with defined input and output schemas. The trade-off is inflexibility — pipelines do not handle conditional branching or dynamic task composition elegantly. For workflows that are mostly sequential but occasionally require conditional routing, a hybrid approach that embeds a lightweight supervisor at the branching point within an otherwise pipeline architecture is often the right solution. #### Consensus Pattern In the consensus pattern, a task is submitted to multiple independent agents simultaneously. Each agent produces a response using its own reasoning. A synthesis layer then aggregates the responses — through voting, weighted combination, or a dedicated arbitration agent — to produce a final output. ``` Task │ ┌─────┴──────┐ │ Parallel │ (fan-out) │ Dispatch │ └──┬───┬───┬─┘ │ │ │ ▼ ▼ ▼ ┌──┐ ┌──┐ ┌──┐ │A1│ │A2│ │A3│ ← Independent agents (same or different models) └──┘ └──┘ └──┘ │ │ │ ┌──┴───┴───┴─┐ │ Synthesis │ (vote / arbitration / confidence-weighted merge) └─────────────┘ │ Output ``` The consensus pattern is appropriate for high-stakes decisions where individual agent errors carry significant consequences, and where the cost of multiple parallel LLM calls is justified by the risk reduction. Common enterprise applications include legal document review, financial compliance checking, and security vulnerability analysis — scenarios where a single agent's hallucination or reasoning error could have material consequences. Consensus is not majority voting in the naive sense. In practice, agents in a consensus system are often given different system prompts, different context, or different model versions to maximise independence. A synthesis agent (or rule-based arbitration logic) then evaluates the degree of agreement, surface disagreements for human review when consensus is not reached, and applies confidence-weighted aggregation when responses partially overlap. The governance implication of the consensus pattern is positive: disagreement between agents is itself a meaningful signal. A consensus system that surfaces inter-agent disagreements to human reviewers is more auditable and more aligned with human oversight requirements than a single-agent system that produces a confident but potentially wrong answer. #### Hierarchical Pattern The hierarchical pattern nests orchestration across multiple levels. A top-level orchestrator manages a set of sub-orchestrators, each of which manages its own team of specialist agents. This pattern is appropriate for enterprise deployments of significant scope — multi-department workflows, cross-system integrations, or agentic AI enterprise deployment strategy that spans multiple business units. ``` ┌──────────────────────────┐ │ Enterprise Orchestrator │ │ (Top-level) │ └────────────┬─────────────┘ │ ┌─────────┴───────────┐ │ │ ▼ ▼ ┌────────────┐ ┌────────────┐ │ Sub-orch │ │ Sub-orch │ │ (Procure.) │ │(Compliance)│ └──────┬─────┘ └──────┬─────┘ │ │ ┌────┴────┐ ┌────┴────┐ │ │ │ │ │ │ │ │ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ Sp Sp Sp Sp Sp Sp Sp Sp (specialist agents) (specialist agents) ``` The hierarchical pattern enables very large multi-agent systems to be built without the central orchestrator becoming a bottleneck or a single point of failure. Sub-orchestrators handle the detailed coordination within their domain; the top-level orchestrator concerns itself only with cross-domain coordination and overall task progress. The principal challenge of hierarchical architectures is state propagation. When a specialist agent at level three of the hierarchy surfaces an error or ambiguity, the information must propagate up through sub-orchestrators to the level at which it can be resolved and then cascade back down with instructions. This requires explicit design of the inter-level communication protocol — what information is passed upward, at what granularity, and how responses propagate downward. ### Inter-Agent Communication and State Management The mechanics of how agents communicate and how state is shared across an agent network are engineering decisions with significant consequences for reliability, debuggability, and governance. #### Structured Message Protocols Ad hoc, free-form communication between agents — one agent passing a natural language summary to the next — is tempting to implement quickly but creates serious problems at scale. When an agent fails or produces an unexpected output, diagnosing the cause requires understanding what it received, and free-form messages are difficult to validate programmatically. Production multi-agent AI systems enterprise deployments should define structured message schemas for inter-agent communication. Each agent publishes outputs in a defined format: typed fields, validated values, explicit status codes. Downstream agents consume these structured messages and can validate them before proceeding. This makes failures explicit — a downstream agent that receives an invalid message can surface a typed error rather than silently propagating a malformed state. #### Shared State vs Message Passing Two fundamental approaches to state management exist in multi-agent systems: shared state (a common data store accessible to all agents) and message passing (agents communicate exclusively through messages, with no shared mutable state). Shared state is simpler to implement for workflows that require frequent cross-agent reads of common data — a procurement workflow in which multiple agents need to read the current purchase order state, for example. The risk is contention and consistency issues: when multiple agents can write to shared state, careful concurrency control is required. Message passing is architecturally cleaner and more aligned with event-driven enterprise architectures. Each agent operates on the messages it receives, produces output messages, and does not directly modify state held by other agents. This simplifies reasoning about the system but requires careful design of the message routing logic and can introduce latency in workflows that require many sequential cross-agent interactions. In practice, a hybrid approach is common: a shared read-only knowledge base (reference data, configuration, business rules) combined with message passing for workflow coordination. #### Conversation History and Context Boundaries Each agent in a multi-agent system maintains its own conversation history. A critical architectural decision is what portion of the overall workflow history each agent receives. Passing the entire history of all previous agent interactions to each new agent is tempting but counter-productive: it inflates context unnecessarily, increases latency and cost, and can confuse specialist agents with information outside their domain. Best practice is to pass each specialist agent only the context relevant to its task: the specific input it needs to process, the relevant subset of prior decisions that affect its work, and any constraints or parameters established by the orchestrator. The orchestrator maintains the authoritative record of overall workflow state; specialist agents receive a curated slice. ### Error Handling and Resilience A multi-agent system introduces multiple potential failure points compared to a single agent. Each agent can fail independently, and failures can propagate through the system in ways that are difficult to anticipate. Designing for resilience is not optional in production enterprise deployments. #### Agent-Level Failure Modes Individual agents fail in several distinct ways, each requiring a different response: **Hard failures** — the agent is unable to produce any output due to a model API error, a tool failure, or an unhandled exception. These should be caught at the orchestration layer and trigger an explicit retry or fallback strategy. **Soft failures** — the agent produces output, but with low confidence or with explicit uncertainty indicators. The system should route low-confidence outputs to human review rather than passing them downstream as authoritative. **Silent failures** — the agent produces output that appears structurally valid but is semantically incorrect. These are the hardest to detect and the most dangerous. Mitigation requires downstream validation agents, cross-agent consistency checks, and sampling-based human review of agent outputs in production. #### Fallback Strategies Every specialist agent in a production multi-agent system should have a defined fallback strategy: - **Retry with backoff** for transient API failures, with a maximum retry count and a dead-letter mechanism for tasks that exhaust retries. - **Alternative agent routing** when a specialist agent is unavailable — routing to a generalist agent or a different specialist capable of partially fulfilling the task. - **Human escalation** as the fallback of last resort — surfacing the task to a human operator with full context of what the agent attempted and where it failed. - **Graceful degradation** for non-critical path agents — allowing the workflow to continue with reduced functionality rather than halting entirely when a supplementary agent fails. #### Circuit Breakers When a specialist agent begins failing repeatedly, continuing to route work to it degrades overall system performance. Implement circuit breaker logic at the orchestration layer: after a defined failure threshold, the circuit opens and the orchestrator routes around the failing agent, notifying operations teams and activating the fallback strategy. The circuit can be tested periodically (half-open state) and closed again once the underlying failure is resolved. ### Practical Example: Document Processing Pipeline A document processing pipeline is the canonical multi-agent AI systems enterprise use case. The following describes a production-grade architecture combining the pipeline and supervisor patterns. An enterprise receives thousands of inbound documents daily across multiple channels — email attachments, customer portal uploads, EDI feeds, and scanned post. Each document must be classified, data extracted, the extracted data validated against business rules, and the document routed to the appropriate downstream workflow. **Stage 1 — Ingestion and pre-processing agent.** Receives raw documents from all input channels, normalises format (OCR for scanned documents, text extraction from PDFs and Office files), and produces a structured document record with metadata (source channel, received timestamp, file type, document identifier) alongside the extracted text. This agent uses no LLM reasoning — it is a deterministic processing stage. **Stage 2 — Classification agent.** Receives the pre-processed document record and classifies the document type (invoice, purchase order, delivery note, contract amendment, customer complaint, regulatory filing). Outputs a structured classification result with a document type, a confidence score, and a list of candidate classifications when confidence is below the threshold. For documents above the confidence threshold, the pipeline continues automatically. For documents below the threshold, the classification result is routed to a human review queue. **Stage 3 — Extraction agent.** Receives the classified document and applies domain-specific extraction logic for the document type. An invoice extraction agent knows to extract supplier name, invoice number, line items, VAT amounts, and payment terms. A contract amendment extraction agent extracts clause references, amendment text, effective dates, and signatory requirements. The extraction agent produces a structured data object conforming to the schema for the document type. **Stage 4 — Validation agent.** Receives the extracted data and validates it against business rules: does the supplier exist in the supplier master? Does the invoice amount match the purchase order within tolerance? Are all mandatory fields present? Does the contract amendment reference a valid existing contract? The validation agent produces a validation result with a pass/fail status, a list of validation failures with their business rule references, and recommendations for each failure (auto-correct, request clarification, escalate to human). **Stage 5 — Routing agent.** Receives the validated document record and determines the downstream workflow: invoice to accounts payable processing, delivery note to goods receipt matching, complaint to customer service CRM, contract amendment to legal review queue. The routing agent applies business rules that may be complex — routing based on supplier tier, document value, business unit, and exception flags from the validation stage. This pipeline processes routine documents autonomously. The supervisor pattern activates when documents fail validation or classification: a supervisor agent receives the exception, assesses the appropriate human escalation path, assembles the context package (original document, extracted data, validation failures, confidence scores), and routes to the appropriate human reviewer with a structured task. ### Practical Example: Procurement Multi-Agent Workflow A procurement workflow illustrates the supervisor pattern operating across a more complex, non-linear process. An agentic AI enterprise deployment strategy for procurement must handle the inherent variability of commercial negotiations, supplier availability, and compliance requirements. The top-level procurement orchestrator receives a validated purchase requisition and manages a team of four specialist agents: **Specification matching agent.** Analyses the requisition specification and matches it against the organisation's approved product catalogue and historical purchase data. Identifies exact matches, close matches, and gaps where no approved product exists. Returns a ranked list of catalogue matches with match confidence, compliance status (approved supplier, preferred supplier, or requires procurement approval), and historical pricing data. **Supplier evaluation agent.** For requisitions that require sourcing beyond the approved catalogue, queries the supplier database, evaluates supplier qualifications (financial stability, quality certifications, geographic coverage, delivery lead times), and produces a shortlist of qualified suppliers with a structured evaluation matrix. For high-value requisitions above the threshold defined in the orchestrator's configuration, the supplier evaluation agent invokes the consensus pattern — running parallel evaluation against multiple supplier scoring models and synthesising a consensus recommendation. **Compliance checking agent.** Evaluates the proposed purchase against the organisation's procurement policy, trade compliance requirements, and any applicable regulatory constraints. Checks for sanctioned supplier status, export control classifications, single-source justification requirements, and budget authorisation levels. Produces a compliance clearance decision with a structured record of each check performed and its outcome. **Purchase order generation agent.** Receives the approved specification match, the selected supplier, and the compliance clearance, and generates a purchase order document with all required commercial terms, delivery instructions, and approval routing metadata. For standard purchases, this agent uses a template-based generation approach. For complex contracts or non-standard terms, it flags the generated document for legal review. The procurement orchestrator manages the sequence and parallelism of these agents. Specification matching and compliance checking can run in parallel from the outset; supplier evaluation is invoked only if no approved catalogue match is found; purchase order generation proceeds only when both a supplier selection and a compliance clearance are available. This parallel execution significantly reduces the end-to-end cycle time compared to a sequential process. ### Governance Frameworks for Multi-Agent Systems An enterprise AI governance framework 2026 must extend to cover the specific challenges that multi-agent systems introduce. Governance of a single-agent system is relatively straightforward — one reasoning thread, one audit log, one approval boundary. Multi-agent systems are more complex in each of these dimensions. #### Distributed Audit Trails Every agent in the system must maintain its own audit log: inputs received, reasoning steps taken, tool calls made, outputs produced, and confidence scores where applicable. The orchestration layer must maintain a workflow-level audit trail that correlates the agent-level logs into a coherent record of the end-to-end process. Without this correlation, auditing a multi-agent workflow is impractical — the sequence of events and decisions is distributed across multiple isolated logs. Implement a workflow identifier that propagates through every agent in the system, enabling all agent-level events to be correlated to a single workflow execution in the audit store. This identifier should be included in every inter-agent message, every tool call, and every human escalation notification. #### Human Oversight at Agent Boundaries The governance tier model (autonomous execution, approval required, human execution) described for single-agent systems must be applied at the level of individual agent actions within a multi-agent workflow, not just at the workflow level. A procurement workflow may be largely autonomous, but the supplier evaluation agent's selection of a non-preferred supplier above a spend threshold should trigger a Tier 2 approval gate — even if the surrounding workflow is configured for autonomous execution. This requires that each specialist agent has configurable governance parameters, and that the orchestrator is aware of and enforces these parameters as part of its workflow management logic. The governance configuration should be externalised from the agent implementation — stored in a policy service rather than hardcoded into the agent's system prompt — so that governance parameters can be updated without redeploying the agent. #### Scope Boundaries and Tool Access Controls In a multi-agent system, the principle of least privilege applies at the agent level. Each specialist agent should have access only to the tools required for its specific function. The document classification agent does not need write access to the ERP system. The purchase order generation agent does not need access to the supplier evaluation database. Enforcing these scope boundaries at the infrastructure level — not just through prompt instructions — limits the blast radius of an agent failure or a prompt injection attack. #### Change Control and Version Management Multi-agent systems are more complex to change safely than single-agent systems because a change to one agent can have downstream effects on agents that depend on its output. Treat multi-agent system updates with the same rigour as microservices version management: define explicit API contracts between agents, version those contracts, and test downstream agents against new versions before promotion to production. ### Getting Started with Multi-Agent Architecture For organisations moving from single-agent deployments to multi-agent systems, the transition should be evolutionary rather than a wholesale redesign. Begin by identifying the failure modes in your existing single-agent deployments. Where does the agent struggle with tool selection? Where does context saturation degrade performance? Where does the system try to handle tasks that require genuinely different expertise in different phases? These pain points are the natural decomposition boundaries for your first multi-agent architecture. Build your first multi-agent system using the pipeline pattern — it is the simplest to implement, test, and reason about. Introduce a supervisor orchestrator only when you have validated the individual pipeline stages in isolation. Reserve the consensus pattern for the high-stakes decisions within your workflow that justify the additional latency and cost. Move to hierarchical orchestration only when the complexity of your workflow genuinely exceeds what a single orchestration layer can manage. Apply the same instrumentation discipline to multi-agent systems that you would to a distributed microservices architecture. Distributed tracing, structured logging, and correlation identifiers are not optional extras — they are the foundation of your ability to operate, debug, and govern the system in production. ### Conclusion The 1,445% increase in Gartner enquiries about multi-agent AI systems is not hype. It reflects a genuine architectural shift in how enterprises are approaching agentic AI: moving from single-purpose agents to orchestrated teams of specialists that can collectively execute the complex, multi-domain workflows that drive real enterprise value. Building effective multi-agent systems requires architectural discipline — selecting the right orchestration pattern for each workflow's characteristics, designing structured inter-agent communication protocols, implementing resilient error handling and fallback strategies, and maintaining the governance and audit infrastructure that makes autonomous agent systems trustworthy in production. McKenna Consultants designs and implements multi-agent AI systems for enterprise clients, bringing the architectural depth and production engineering experience that the agentic AI enterprise deployment strategy requires. Whether you are evaluating multi-agent architectures for the first time or working to bring an existing deployment reliably to production scale, our AI consultancy team can help. [Contact us](/contact/) to discuss your multi-agent requirements. --- # Agentic Commerce: How AI Agents Are Transforming B2B Product Discovery **Canonical URL:** https://www.mckennaconsultants.com/agentic-commerce-how-ai-agents-are-transforming-b2b-product-discovery/ **Author:** Nick McKenna **Published:** 20 January 2026 **Category:** B2B eCommerce ## Agentic Commerce: How AI Agents Are Transforming B2B Product Discovery The B2B buying experience is undergoing a more fundamental shift than anything the industry has seen since the move from print catalogues to ecommerce websites. For two decades, the dominant model has been search-and-browse: a human buyer types a query, scans results, filters by attribute, and adds items to a basket. The interface is better than a paper catalogue, but the underlying paradigm is the same. The human is doing the work. Agentic commerce changes this at its root. Instead of a buyer navigating your storefront, an AI agent does it on their behalf — understanding complex B2B requirements, querying your catalogue in ways no keyword search supports, and completing procurement tasks autonomously or with minimal human oversight. The buyer's interface is a conversation, or increasingly, no interface at all. The buying system handles it. This is not a distant prospect. Agentic commerce is emerging in B2B contexts right now, driven by the convergence of mature large language models, standardised agent-to-tool communication protocols, and composable commerce architectures that were — perhaps unknowingly — built for exactly this moment. ### What Agentic Commerce Actually Means in B2B The term "agentic commerce" encompasses a spectrum of AI-driven buying behaviours, from AI-assisted procurement to fully autonomous purchasing agents. At the assisted end, a procurement manager instructs an AI assistant: "Find me three suppliers for M12 stainless steel hex bolts with a minimum tensile strength of 800 MPa, check our contract pricing, and add the preferred option to my order queue." The agent queries the relevant commerce APIs, evaluates the results against the stated requirements, and returns a structured recommendation. The human approves. At the autonomous end — increasingly realistic for repeat procurement and low-risk categories — an AI agent monitors inventory levels, detects reorder triggers, identifies the correct SKU from a catalogue of tens of thousands, validates pricing against the active contract, and submits the purchase order, all without human initiation. In both cases, the critical point is this: the agent is your customer. Not the human. The agent is the one interacting with your catalogue, your pricing API, and your checkout flow. If your commerce architecture is not designed with agent-readable data structures, machine-consumable APIs, and structured product information, you are invisible to an increasingly large share of B2B procurement activity. With 92% of US brands having implemented some form of composable commerce, the API-first infrastructure is already in place at most enterprise retailers. The question is whether that infrastructure is ready to serve AI agents as first-class customers — not just humans using browsers. ### The B2B Procurement Requirements That Make Agents Essential B2B procurement is structurally more complex than B2C in ways that make it particularly suited to AI agent mediation. Consider what a procurement professional must navigate for a single purchase: **Contract pricing compliance.** The buying organisation has negotiated specific rates with specific suppliers. Purchasing outside contracted terms has financial and compliance consequences. An AI agent can enforce this consistently across every transaction, checking that the selected product and price match the active contract before proceeding. **Specification matching.** Industrial and technical B2B purchasing requires matching products to precise technical specifications — material grades, tolerance ranges, compliance certifications (CE, REACH, RoHS), and compatibility with existing installed equipment. Natural language product discovery B2B use cases are particularly compelling here: an agent can interpret "replace the existing filtration unit rated for 150 bar at 80°C in our hydraulic system" and find the correct replacement part from a catalogue of thousands of components, a task that would defeat a conventional search engine and consume significant time from a human buyer. **Approval workflow navigation.** B2B purchases above certain thresholds require authorisation from budget holders. An AI agent that understands the buying organisation's approval rules can structure orders to route correctly, flag when thresholds will be exceeded, or split orders where that is permitted and beneficial. **Supplier diversification and risk management.** Sophisticated procurement teams evaluate not just price and specification but supplier lead times, stock availability, and supply chain risk. An AI agent with access to the right data can factor all of these into its recommendations automatically. These requirements make B2B procurement substantially more demanding than a simple keyword search and add-to-cart flow. They are also requirements that AI agents, properly connected to commerce and enterprise systems, are well-positioned to meet. ### How Composable Architecture Enables Agent Integration The composable commerce architecture that many B2B organisations have adopted over the past several years — API-first, MACH-aligned, with clean separations between catalogue, pricing, cart, and checkout — turns out to be exceptionally well-suited to AI agent integration. This is not coincidental. The same qualities that make composable commerce valuable to human developers — predictable APIs, granular endpoints, structured data contracts, and separation of concerns — make it accessible to AI agents. An agent that can call `GET /v2/products?filter=material:stainless-steel&tensile_strength_min=800` and receive structured JSON it can reason over is an agent that can serve your buyers effectively. Monolithic commerce platforms, by contrast, typically optimise for human browser interfaces: rendered HTML pages, JavaScript-heavy storefronts, session-based state. These interfaces are opaque to AI agents. The agent cannot extract structured product data from a rendered HTML page with anything like the reliability and precision that a clean API provides. #### The API Design Considerations for Agent-Mediated Commerce If AI agents will be primary customers of your commerce APIs, certain design considerations become significantly more important: **Structured product attributes over narrative description.** An agent that needs to find products meeting a specification can query `filter=operating_temperature_max_celsius:80` with certainty. It cannot reliably extract "suitable for use up to 80°C" from an unstructured product description. Technical attribute data must be structured, typed, and consistently populated across the catalogue. **Semantic richness in API responses.** Beyond raw attributes, product data should include the context an agent needs to reason about suitability: compatibility information, required accessories, regulatory status, and relationship data (which products are variants, superseded by, or frequently ordered alongside this item). **Unambiguous pricing endpoints.** For contract pricing to work in an agentic context, the pricing API must return the specific contracted price for a given buyer identity, quantity, and product combination in a single, unambiguous call. Pricing that requires session state, promotional codes applied through UI interaction, or manual negotiation cannot be consumed by an agent. **Stable, well-documented API contracts.** Agents are built against API contracts. Frequent breaking changes, inconsistent response structures, or undocumented fields create brittleness in agent implementations. Commerce APIs designed for agentic consumption need the same stability and documentation rigour as public developer APIs. **Idempotent operations with clear transaction semantics.** An agent adding items to a cart or submitting an order must be able to do so reliably. APIs that require specific UI state, use CSRF tokens designed for browser sessions, or have unclear behaviour on retry present integration challenges that composable, REST-first APIs avoid by design. ### Elastic Path's Composable Commerce MCP Server A concrete example of how the commerce ecosystem is adapting to the agentic paradigm is Elastic Path's Composable Commerce MCP Server. The Model Context Protocol (MCP) is an open standard for connecting AI agents to external tools and data sources, providing a standardised interface that AI platforms — including Anthropic's Claude, OpenAI's ChatGPT, and emerging enterprise AI systems — can use to interact with external services. Elastic Path's MCP Server exposes commerce operations as MCP-compatible tools, enabling AI agents to perform operations including product catalogue search, product detail retrieval, cart management, order submission, and pricing lookup through a standardised protocol. An AI assistant integrated with the Elastic Path MCP Server can execute queries like "find products matching this specification and check our contract pricing" by calling structured MCP tools rather than attempting to parse or interact with a web interface. This matters for several reasons: **Ecosystem compatibility.** Because MCP is an open standard, an Elastic Path MCP Server works with any MCP-compatible AI platform. Organisations are not locked into a single AI vendor. The commerce capability is decoupled from the AI capability. **Operational coverage beyond purchasing.** MCP servers can expose operational capabilities — order status enquiries, inventory checks, catalogue updates — alongside transactional capabilities. An internal procurement AI agent can check order status, query available stock, and confirm pricing without a human logging into a commerce admin interface. **Developer accessibility.** Building an AI agent that connects to Elastic Path via MCP is significantly faster than building a bespoke integration using raw REST APIs. The MCP protocol handles discovery, authentication, and parameter passing in a standardised way. For commerce architects evaluating how to make their Elastic Path implementation agent-ready, the MCP Server represents a meaningful step: it provides a defined, maintainable integration point rather than expecting AI agents to reverse-engineer the existing API surface. ### Elastic Path Semantic Search AI: Vector-Based Product Discovery Alongside the MCP Server, Elastic Path has expanded its product discovery capabilities with native semantic search powered by vector embeddings. This is directly relevant to AI agents ecommerce product discovery use cases and changes the economics of agent-mediated catalogue interaction. #### From Keyword to Vector Search Traditional keyword search matches query terms against product attribute values. The search engine looks for the words "hydraulic filter" in product names and descriptions. If the product is described as a "high-pressure fluid management component for hydraulic circuits," the keyword search fails to surface it in response to a "hydraulic filter" query. Semantic search using vector embeddings works differently. Both the query and each product are encoded as high-dimensional vectors that capture semantic meaning. Products and queries with similar meaning — regardless of whether they share specific words — have similar vector representations. Similarity search finds the closest product vectors to the query vector, surfacing semantically relevant results even when the terminology differs. For AI-powered ecommerce search natural language use cases, this is transformative. An agent can issue a natural language query — "hydraulic filtration component rated for 150 bar continuous operation with stainless internal components" — and semantic search surfaces the most relevant products based on meaning, not keyword matching. #### Implications for Catalogue Data Strategy The shift to semantic search has implications for how catalogues should be structured and enriched. Vector embeddings are generated from product data, so the quality and completeness of that data directly affects search relevance. Products with rich, accurate, attribute-complete data generate better embeddings and appear more reliably in relevant searches. Products with sparse descriptions, missing technical attributes, or generic category names become harder to discover through both semantic search and agent-mediated queries. This creates a new imperative for catalogue management: product data quality is no longer just about making products legible to human browsers. It is about making them discoverable by AI systems. The product data strategy that serves a human browsing a filtered category page is not sufficient for serving an AI agent performing specification-driven discovery. Concretely, this means: - Technical specifications must be captured as structured, typed attributes — not embedded in unstructured text. - Product descriptions should use consistent, industry-standard terminology rather than marketing language that varies by copywriter. - Relationship data (accessories, replacements, compatible equipment) must be maintained as structured associations, not narrative text. - Missing attributes are not just gaps in human-facing UX — they are gaps in the vector embeddings that determine discoverability. ### The Implications of Agent-First Commerce Architecture Embracing agentic commerce as a strategic direction requires rethinking some assumptions that have shaped B2B commerce design for two decades. #### The Storefront Is Not the Primary Interface Commerce teams have invested substantially in storefront experience: UX design, search UI, navigation taxonomies, promotional merchandising, and conversion optimisation. These investments optimise for the human browsing experience. For agent-mediated commerce, the storefront is largely irrelevant. The agent does not experience the UI. It queries the API directly. This does not mean the storefront becomes worthless — human buyers still exist and matter. But it does mean that API quality, data completeness, and structured attribute coverage deserve investment commensurate with storefront UX investment. The commerce team that treats the API as a technical implementation detail of the storefront will be poorly positioned as agent-mediated commerce grows. #### Trust and Authorisation for Autonomous Agents An AI agent acting as a procurement assistant needs to be authorised to act on behalf of a specific buyer identity, within defined limits. Commerce APIs designed for agent access need robust, granular authorisation models: an agent authorised to browse and recommend should not automatically have authority to submit purchase orders above a defined threshold. OAuth 2.0 flows with scope-based authorisation provide the technical foundation, but the commerce platform's permission model must be granular enough to express meaningful agent constraints. "Can browse catalogue" and "can submit orders up to £5,000" are different authorisation scopes that agent-ready commerce platforms need to support. #### Audit Trails for Autonomous Procurement When a human buyer submits a purchase order through a browser interface, there is an implicit audit trail: the human logged in, navigated to a product, and confirmed the order. When an AI agent submits a purchase order, the provenance and reasoning behind the decision must be captured explicitly. Agent action logs, tool invocation records, and the data used to make recommendations become part of the procurement audit trail required by finance and compliance teams. Commerce platforms integrating with AI agents should surface structured event data that supports these audit requirements — not as an afterthought, but as a first-class design concern. ### Getting Agent-Ready: A Practical Starting Point For B2B commerce teams that are not yet engaged with the agentic commerce paradigm, the barriers to entry are lower than they might appear. Composable architectures already provide most of the technical prerequisites. The work is largely about intentional design and data quality. **Audit your product data completeness.** Identify the technical attributes that buyers and agents need to match products to requirements. Measure how completely those attributes are populated across the catalogue. Prioritise enrichment for the highest-volume and highest-value product categories. **Evaluate your API surface for agent accessibility.** Review your existing commerce APIs against the design considerations for agent-mediated commerce: structured responses, stable contracts, unambiguous pricing endpoints, idempotent operations. Identify gaps that would create friction for agent integration. **Explore MCP server options.** If you are running Elastic Path, evaluate the Composable Commerce MCP Server as an integration point for AI agents. Building agent connectivity on a standardised protocol reduces future maintenance burden and broadens compatibility. **Pilot with an internal use case.** The fastest way to develop agentic commerce capability is to deploy an internal procurement agent — connecting your own AI assistant to your own commerce APIs for internal purchasing. Internal use cases allow experimentation without external customer risk and generate the operational learning that informs production deployment. ### Working with McKenna Consultants McKenna Consultants sits at the intersection of composable commerce architecture and AI integration — the two disciplines that agentic commerce requires in combination. Our Elastic Path expertise covers platform implementation, API design, catalogue data strategy, and integration architecture. Our AI capability spans agent design, MCP server implementation, and the enterprise governance frameworks that autonomous agents require. If you are evaluating how to position your B2B commerce architecture for the agentic commerce paradigm — or if you have specific requirements around Elastic Path semantic search, MCP integration, or agent-ready API design — [contact us](/contact/) to discuss your strategy. ### Conclusion Agentic commerce in B2B 2026 represents a genuine architectural inflection point, not a marketing term. The shift from human-navigated storefronts to AI agent-mediated product discovery changes what matters in commerce architecture: API quality, structured product data, semantic search capability, and agent-compatible authorisation models become as important as the storefront UX that has dominated investment for two decades. The organisations that will capture the opportunity are those that design their commerce infrastructure to serve AI agents as first-class customers — not as an afterthought once the human-facing experience is optimised, but as a deliberate architectural priority. Composable architecture provides the foundation. Elastic Path's MCP Server and semantic search capabilities provide the agent-facing integration layer. The strategic choices about product data quality, API design, and agent authorisation are yours to make now. The buyers of the next decade will be both human and machine. Your commerce architecture needs to serve both. --- # CSPP Plus Backstage Integration: Adding Your Cloud Storage to Microsoft Office's File Menu **Canonical URL:** https://www.mckennaconsultants.com/cspp-plus-backstage-integration-adding-your-cloud-storage-to-microsoft-office-s-file-menu/ **Author:** Nick McKenna **Published:** 6 January 2026 **Category:** CSPP WOPI ## CSPP Plus Backstage Integration: Adding Your Cloud Storage to Microsoft Office's File Menu For most ISVs implementing WOPI-based document editing, the user journey begins the same way: a user browses your platform, clicks a document, and Office for the web opens in an embedded iframe or a new tab. The experience works well, but it is entirely contained within your application. The user never encounters your storage in the one place they spend most of their working day: Microsoft Office itself. CSPP Plus backstage integration changes that. It enables your cloud storage platform to appear directly inside the Microsoft Office File menu — alongside OneDrive, SharePoint, and other configured locations — so that users can open documents from your storage and save files back to it without ever leaving the Office application. This is the most user-visible capability in the entire CSPP Plus programme, and for many end users it is transformative: their familiar document store becomes a first-class citizen of the Office experience. This article provides a comprehensive technical guide to implementing CSPP Plus backstage integration. It covers the discovery mechanism, the `CheckFileInfo` properties required for backstage visibility, branding and icon requirements, the authentication flow for documents opened directly from backstage, and how backstage integration interacts with other CSPP Plus capabilities. McKenna Consultants has implemented backstage integration for multiple enterprise clients, and the guidance here reflects what we have learned in production deployments. ### What Is the Office Backstage? The Office backstage is the full-screen view that appears when a user selects the **File** tab in any Office desktop application. It contains sections for creating new documents, opening recent files, accessing connected locations, saving files to cloud storage, and managing application settings. The Open and Save As sections of the backstage are where cloud storage partners appear. When a user connects a third-party storage provider that supports backstage integration, that provider appears in the left-hand panel of the Open and Save As views, at the same level as OneDrive and SharePoint. The user can browse the provider's folder hierarchy, open documents directly, and save files back to the provider's storage without leaving the Office application. From a user experience perspective, this is a significant upgrade over the standard WOPI flow, where the user must navigate to a web application and initiate the edit session from there. With backstage integration, the user's interaction with your storage platform becomes embedded in Office itself — which is where enterprise users already spend their time. ### The CSPP Plus Requirement Backstage integration is exclusively available to members of the Cloud Storage Partner Program Plus (CSPP Plus). The standard CSPP programme does not include backstage capabilities. If your organisation is currently on the standard CSPP programme and wants to implement backstage integration, you will need to engage Microsoft to upgrade your participation. The CSPP Plus onboarding process includes domain allow-listing, which typically requires four to five weeks. Backstage integration also requires Microsoft to provision your storage provider in the Office backstage partner registry, which is a separate step from the standard WOPI domain allow-listing. Plan your timeline to account for both. CSPP Plus backstage integration is available for Office desktop applications on Windows and macOS. The exact version requirements are defined by Microsoft and may change as the Office client is updated; refer to the CSPP Plus technical documentation provided during onboarding for current version requirements. ### How Backstage Discovery Works The Office application discovers available cloud storage partners through a combination of the WOPI discovery document and partner-specific configuration that Microsoft provisions during CSPP Plus onboarding. #### The WOPI Discovery Document The WOPI discovery document is an XML file that Microsoft publishes at a well-known URL. It describes the actions that Office can perform (view, edit, editnew, etc.) and the URL patterns associated with each action. When the Office client initialises, it retrieves this discovery document and uses it to determine which WOPI hosts can handle document operations. For backstage integration, the discovery document includes additional action types that describe how to browse and interact with a partner's storage. The `getinfo` and `msofilesync` actions are particularly relevant — they enable the Office client to enumerate folders and files from your storage directly within the backstage interface. #### Partner Registration and Locale Configuration During CSPP Plus onboarding, Microsoft registers your storage provider with a set of properties that control how it appears in the Office backstage. These properties include: - **Provider name**: The display name that appears in the backstage location list. - **Provider icon**: The icon displayed next to your provider's name (see Branding Requirements below). - **Supported locales**: The languages and regions in which your backstage integration is available. - **Entry point URL**: The URL from which Office initiates the backstage browsing session. These properties are configured on Microsoft's side during onboarding and are not controlled by properties in your CheckFileInfo response. They define the static identity of your provider in the Office backstage. ### CheckFileInfo Properties for Backstage Visibility While the static registration properties are configured during onboarding, the dynamic behaviour of your backstage integration is controlled through `CheckFileInfo` responses and the associated WOPI endpoints. Several properties are critical to correct backstage behaviour. #### HostAuthenticationId The `HostAuthenticationId` property identifies the authenticated user on the WOPI host. In a backstage integration scenario, this is particularly important because the user may open documents from multiple sessions, and Office needs to correlate requests with the correct user identity. ```json { "HostAuthenticationId": "user-uuid-from-your-identity-system" } ``` This value should be a stable, unique identifier for the user within your system. It must not change across sessions for the same user, as Office uses it to associate the user's backstage location with their stored credentials. #### BreadcrumbFolderName and BreadcrumbDocName The breadcrumb properties control the navigation trail displayed in the Office backstage and in the Office title bar when a document is open. Providing accurate breadcrumb information is essential for a coherent user experience. ```json { "BreadcrumbFolderName": "Project Documents", "BreadcrumbFolderUrl": "https://yourstorage.example.com/folders/project-documents/", "BreadcrumbDocName": "Q3 Financial Report.xlsx", "BreadcrumbDocUrl": "https://yourstorage.example.com/files/q3-financial-report" } ``` The `BreadcrumbFolderUrl` and `BreadcrumbDocUrl` values should be URLs in your application that correspond to the containing folder and the document respectively. When the user clicks these breadcrumbs in the Office title bar, they are navigated to the corresponding location in your application. #### HostViewUrl and HostEditUrl These properties define the URLs used when the user wants to open the document in a browser rather than editing it in the Office desktop application. In a backstage context, these URLs are used if the user chooses to open a document in Office for the web instead of the desktop client. ```json { "HostViewUrl": "https://yourstorage.example.com/view/document-id/", "HostEditUrl": "https://yourstorage.example.com/edit/document-id/" } ``` Ensure these URLs point to pages in your application that initiate the correct WOPI session — view-only for `HostViewUrl` and editable for `HostEditUrl`. #### SupportsUpdate and UserCanWrite These properties are standard across WOPI implementations but take on particular importance in backstage scenarios. If `SupportsUpdate` is `false` or `UserCanWrite` is `false`, Office will open the document in read-only mode. Users who have opened a document from backstage expecting to edit it will be confused by a read-only experience. Ensure these properties accurately reflect the document's permissions for the authenticated user. ```json { "SupportsUpdate": true, "UserCanWrite": true } ``` #### CloseUrl The `CloseUrl` property defines where the user is navigated when they close a document that was opened from backstage. In standard WOPI flows, this typically returns the user to the host application. In backstage flows, the behaviour depends on how the document was opened: - If the document was opened directly in the Office desktop application, `CloseUrl` is less relevant — closing the document simply closes the file. - If the document was opened in Office for the web via a backstage URL, `CloseUrl` defines the navigation destination. Provide a meaningful `CloseUrl` that returns the user to an appropriate location in your application: ```json { "CloseUrl": "https://yourstorage.example.com/folders/project-documents/" } ``` ### Branding and Icon Requirements Microsoft has specific requirements for provider icons used in the Office backstage. Meeting these requirements exactly is important: non-conforming icons may not display correctly, or Microsoft may reject them during the onboarding review process. #### Icon Specifications The backstage integration icon must be provided in the following formats: - **PNG format** at multiple resolutions: 16x16, 32x32, 48x48, 96x96, and 256x256 pixels. - **Transparent background**: Icons must use transparent backgrounds, not solid white or coloured fills. - **Single-colour or limited palette**: Microsoft recommends icons that render clearly at small sizes. Complex or photographic imagery performs poorly at 16x16 and 32x32. - **Square aspect ratio**: Non-square images will be cropped or stretched. For cloud document editing security compliance in enterprise environments, some organisations have additional requirements for how partner icons are presented in Office, particularly in locked-down or managed deployments. Confirm your icon assets with your CSPP Plus programme contact before submission. #### Provider Display Name The display name registered during CSPP Plus onboarding should be concise and unambiguous. Users will see this name in the backstage location panel alongside OneDrive and SharePoint. Consider how your name reads in context — for example, if your product is named "Nexus DMS", users will see "Nexus DMS" in the same list as "OneDrive — Personal" and "McKenna SharePoint". The name should be recognisable to your users without explanation. ### The User Authentication Flow The authentication flow for backstage integration differs from the standard WOPI launch flow in an important way: the user may not be authenticated to your platform at the point when Office initiates the backstage session. #### The Standard WOPI Launch Flow In the standard WOPI flow, the user authenticates to your web application, browses to a document, and your application constructs a WOPI action URL that includes an access token. This token is passed to Microsoft's Office for the web, which includes it in all subsequent WOPI requests. Authentication happens in your web application before the Office session begins. #### The Backstage Authentication Challenge In backstage integration, the user may open Office on their desktop, navigate to the backstage, and click on your storage location without having recently authenticated to your web application. Office needs to obtain credentials for your storage before it can display the user's folders and files. Microsoft handles this through a browser-based authentication flow that is initiated within Office. When the user selects your storage location in backstage for the first time (or after their credentials have expired), Office opens a WebView panel within the backstage that navigates to your authentication endpoint. The user completes the authentication flow in this WebView — which can include OAuth 2.0 authorisation, MFA challenges, and consent screens — and upon successful authentication, your application returns an access token that Office stores for subsequent requests. #### Implementing the Authentication Endpoint Your authentication endpoint must be configured to work correctly within the Office WebView context. Key requirements: **HTTPS everywhere.** All authentication endpoints and redirects must use HTTPS. Office will not initiate authentication flows to HTTP URLs. This is a fundamental cloud document editing security compliance requirement. **OAuth 2.0 with PKCE.** The recommended authentication pattern for backstage integration is OAuth 2.0 with the Proof Key for Code Exchange (PKCE) extension. This provides security appropriate for a public client (the Office application) without requiring a client secret to be embedded in the application. **Token storage.** After authentication, Office securely stores the access token and refresh token. On subsequent sessions, Office uses the stored refresh token to obtain a new access token without requiring the user to re-authenticate. Your token endpoint must support refresh token grant flows. **Token scoping.** The access token issued for backstage use should be scoped appropriately. For WOPI host security best practices, the token should grant access only to the document operations required by the WOPI protocol — it should not be a broad administrative token. Define specific OAuth scopes for WOPI access and ensure your authorisation server issues tokens with those scopes. ``` Recommended OAuth scope structure: wopi.read — CheckFileInfo and GetFile operations wopi.write — PutFile and PutRelativeFile operations wopi.manage — Lock, Unlock, RenameFile, DeleteFile operations ``` **Silent authentication.** If the Office application already holds a valid refresh token, authentication should succeed silently without the user seeing any UI. Only prompt for credentials when a valid token cannot be obtained automatically. Excessive authentication prompts in backstage are a common source of user complaints. #### Session Persistence and Token Expiry Access tokens issued for backstage use should have a lifetime appropriate for a working session — typically one to four hours. Refresh tokens should be longer-lived, enabling Office to silently re-authenticate across multiple working sessions. When a token expires during an active backstage session, Office will attempt to use the stored refresh token. If the refresh token is also expired or has been revoked, Office will initiate the full authentication flow again. Design your token expiry policies with this in mind: overly short refresh token lifetimes will require users to re-authenticate to your backstage location frequently, which is disruptive. ### How Backstage Differs from the Standard WOPI Launch Flow Understanding the differences between backstage integration and the standard WOPI launch flow is essential for correctly implementing your WOPI host. | Aspect | Standard WOPI Launch | Backstage Integration | |---|---|---| | User entry point | Your web application | Microsoft Office File menu | | Authentication timing | Before Office session | On first backstage access (or token expiry) | | Access token delivery | Via WOPI action URL parameter | Via OAuth flow stored by Office | | File browsing | Handled by your application | Handled by Office via WOPI browse endpoints | | Target application | Office for the web (browser) | Office desktop application | | Breadcrumb context | Set by your application's action URL | Set by CheckFileInfo breadcrumb properties | The most significant architectural difference is file browsing. In the standard flow, your application presents its own folder browser to the user. In backstage integration, the Office application itself renders a folder browser within the backstage panel, and it populates that browser by calling WOPI endpoints on your host. This means your host must implement folder enumeration endpoints that are not required in a standard WOPI deployment. #### Folder Enumeration Endpoints To support backstage browsing, your WOPI host must implement the `EnumerateAncestors` and `EnumerateChildren` operations. These endpoints allow Office to build the folder tree that users navigate within the backstage panel. `EnumerateChildren` returns the contents of a folder — both subfolders and documents — in a structured format that Office can display. The response includes file names, sizes, last-modified dates, and the WOPI URLs for each item. `EnumerateAncestors` returns the folder path from the current item back to the root of the user's storage, enabling Office to display and navigate the breadcrumb trail. These endpoints are authenticated using the same access token mechanism as the core WOPI operations. Ensure your authorisation logic correctly validates the token for these folder enumeration requests. ### Combining Backstage Integration with Other CSPP Plus Features CSPP Plus backstage integration does not exist in isolation. For a complete enterprise WOPI implementation, backstage should be combined with the other capabilities available in CSPP Plus. #### Backstage with Geo-Fencing If your platform serves customers with data residency requirements — a common need in regulated sectors and an important consideration for cloud document editing security compliance — backstage integration must be combined with the `ComplianceDomainPrefix` property in your `CheckFileInfo` response. This ensures that when a user opens a document from backstage, the Office session routes all document processing through the correct regional data centre. The geo-fencing logic applies identically whether the document was opened via the standard WOPI flow or from backstage. Your `CheckFileInfo` implementation should determine the correct `ComplianceDomainPrefix` based on the authenticated user's tenant or data residency requirements, regardless of the entry point. #### Backstage with Chunked File Transfer For platforms that handle large documents, combining backstage integration with chunked file transfer eliminates file size constraints in the Office desktop editing experience. When a user opens a large file from backstage, chunked file transfer ensures the document loads efficiently and saves reliably, regardless of size. The chunked file transfer capability flags (`ChunkedUploadEnabled`, `MaxChunkSize`) in your `CheckFileInfo` response apply to backstage-initiated sessions as they do to standard WOPI sessions. No additional configuration is required to combine these features. #### Backstage with Coauthoring When a document opened from backstage supports coauthoring, multiple users can collaborate on the same file simultaneously. From the protocol perspective, coauthoring in a backstage-initiated session behaves identically to coauthoring in a standard WOPI session. The user who opens the document from backstage establishes the coauthoring session, and other users can join via their own WOPI access — whether from backstage, from a web application, or from a shared link. ### Implementation Checklist For ISVs implementing CSPP Plus backstage integration, the following checklist summarises the key requirements: **CSPP Plus enrolment:** - Confirm CSPP Plus membership (upgrade from standard CSPP if required) - Complete Microsoft's backstage provider registration (separate from domain allow-listing) - Submit approved icon assets in all required resolutions - Confirm provider display name and locale configuration with Microsoft **Authentication:** - Implement OAuth 2.0 with PKCE for backstage authentication - Define granular OAuth scopes for WOPI operations - Implement silent token refresh using stored refresh tokens - Test authentication flow within Office WebView context - Ensure all endpoints use HTTPS **WOPI host endpoints:** - Implement `CheckFileInfo` with all required backstage properties (`HostAuthenticationId`, breadcrumb properties, `HostViewUrl`, `HostEditUrl`, `CloseUrl`) - Implement `EnumerateChildren` for folder browsing - Implement `EnumerateAncestors` for breadcrumb navigation - Ensure `UserCanWrite` and `SupportsUpdate` reflect accurate permissions **Integration with other CSPP Plus features:** - Include `ComplianceDomainPrefix` in `CheckFileInfo` if data residency is required - Include chunked file transfer properties if large document support is needed - Include coauthoring properties if collaborative editing is supported **Testing:** - Test the first-time authentication flow in the Office backstage - Test silent re-authentication after token expiry - Test folder browsing and file open from backstage - Test Save As to your storage from within an Office document - Test Recent Documents listing for files opened from your storage - Verify breadcrumb display in the Office title bar - Test with both Windows and macOS Office clients ### Why Backstage Integration Matters for ISVs For ISVs evaluating CSPP Plus features, backstage integration represents the highest user-facing return on implementation investment. The other CSPP Plus capabilities — geo-fencing, chunked file transfer, coauthoring — are important for compliance, performance, and collaboration, but they are largely invisible to end users. Backstage integration is the one feature that end users will notice and appreciate immediately. From a commercial perspective, backstage integration removes a significant adoption barrier. Users who are accustomed to accessing OneDrive from the Office File menu will naturally look for the same capability with your storage. When your platform appears there, it signals maturity and deep Microsoft integration — two qualities that enterprise procurement teams value. For WOPI host security best practices, having a properly implemented backstage integration also demonstrates adherence to Microsoft's security and authentication standards, which can be a differentiator in security-conscious procurement processes. ### Working with McKenna Consultants McKenna Consultants has extensive CSPP Plus implementation experience, including backstage integration projects for document management platforms and enterprise SaaS applications across the UK and Europe. Our team understands both the technical protocol requirements and the Microsoft relationship management involved in the CSPP Plus onboarding process — including the backstage provider registration steps that are separate from standard domain allow-listing. If you are implementing CSPP Plus backstage integration, considering CSPP Plus enrolment, or need to audit an existing WOPI implementation for compliance with WOPI host security best practices, our team can help across the full project lifecycle: from initial scoping and CSPP Plus onboarding through to production deployment and post-launch support. [Contact McKenna Consultants](/contact/) to discuss your WOPI and CSPP Plus requirements. Whether you are starting from scratch or extending an existing integration, we can help you deliver a robust, secure, and user-friendly backstage experience that puts your cloud storage where your users spend their working day. ### Conclusion CSPP Plus backstage integration is the feature that transforms your WOPI implementation from a useful document editing capability into a genuinely integrated part of the Microsoft Office experience. By appearing in the Office File menu alongside OneDrive and SharePoint, your cloud storage becomes part of users' natural workflows — not something they need to navigate to a separate application to access. The implementation requires attention across several interconnected areas: CSPP Plus enrolment and provider registration, OAuth 2.0 authentication within the Office WebView, the breadcrumb and permission properties in `CheckFileInfo`, and the folder enumeration endpoints that power the backstage browser. Done correctly, the result is an experience that users find intuitive and that positions your platform as a credible, enterprise-grade document storage solution. Combined with geo-fencing for data residency, chunked file transfer for large documents, and coauthoring for team collaboration, backstage integration completes the picture of what a comprehensive CSPP Plus implementation delivers: full Microsoft Office integration at every level of the user experience, with the compliance controls and performance characteristics that enterprise customers require. --- # Microsoft 365 Extensibility in 2026: From Office Add-Ins to Intelligent Agents **Canonical URL:** https://www.mckennaconsultants.com/microsoft-365-extensibility-in-2026-from-office-add-ins-to-intelligent-agents/ **Author:** Nick McKenna **Published:** 19 December 2025 **Category:** Microsoft Office Add-In Developer ## Microsoft 365 Extensibility in 2026: From Office Add-Ins to Agentic AI Intelligent Agents The landscape of Microsoft 365 extensibility has changed more in the second half of 2025 than in any comparable period since Office add-ins were introduced. The developments announced across Q3 and Q4 — from Copilot agent foundations to the Agent 365 platform, from the unified manifest to MCP support, from expanded Copilot APIs to TypeSpec tooling — collectively represent a paradigm shift. This article connects the dots across these developments and provides a practical 2026 roadmap for enterprise development teams building on the Microsoft 365 platform. Whether you maintain existing Office add-ins or are planning new extensibility investments, this is the planning resource for the year ahead. ### The Evolution: A Timeline To understand where Microsoft 365 extensibility is heading, it helps to see how we got here: **2013-2020: The Web Add-In Era.** Microsoft introduced Office web add-ins as the modern replacement for COM/VSTO. Add-ins built with HTML, CSS, and JavaScript could run across Windows, Mac, and the web. The platform provided task panes, custom functions, and content panels. For most of this period, Office add-ins were a standalone extensibility mechanism. **2021-2023: The Unified Manifest.** Microsoft introduced the unified manifest, allowing a single app package to include both Teams apps and Office add-ins. This was the first signal that Microsoft was converging its extensibility platforms. **Q3 2025: Copilot Integration.** Microsoft began exposing Copilot extensibility APIs, allowing add-ins to register as Copilot plugins. Add-in functionality could be invoked through Copilot's natural language interface. Copilot agents emerged as a concept. **Q4 2025: The Agent Platform.** Microsoft Ignite 2025 introduced Agent 365, the enterprise agent platform. Declarative agents, MCP support, TypeSpec tooling, expanded Copilot APIs, and the enterprise trust framework were all announced. This completed the transition from add-ins as standalone extensions to add-ins as components of an intelligent agent ecosystem. **2026: The Intelligent Agent Era.** This is where we are heading. ### The 2026 Landscape #### What Stays the Same **Office JavaScript APIs.** The Excel, Word, Outlook, and PowerPoint JavaScript APIs are not going away. They remain the mechanism for direct document manipulation — reading cells, formatting text, managing email, creating slides. No agent technology can replace the need to programmatically interact with document content. **Task panes and custom functions.** The UI surfaces that add-ins use (task panes, custom functions, content panels) continue to function. Users who prefer clicking buttons and typing in panels will still have that option. **The unified manifest.** The manifest format that packages Teams apps and Office add-ins continues as the foundation. Agent capabilities are added to the existing manifest, not a replacement for it. #### What Changes with Generative AI **The primary interaction model.** For many add-in capabilities, the primary interaction will shift from task pane UI to natural language through Copilot. Copilot interprets user queries to invoke relevant add-in capabilities, making it essential to understand and respond accurately to user queries. Users will ask Copilot to “pull the latest sales data into this spreadsheet” rather than opening a task pane and clicking an import button. **Discovery and distribution.** Agents will be discoverable through the Copilot interface, not just the Office Add-Ins store. Users will find your capabilities by asking Copilot for help with a task, not by browsing an add-in catalogue. **Development skills.** Building agents requires understanding of prompt engineering, MCP server development, and conversational UX design — skills that traditional add-in developers may not have. **Governance and compliance.** The Agent 365 trust framework introduces new governance requirements. Enterprise IT teams will evaluate agents on their data access, action scope, and provider trust level. ### Microsoft 365 Security As organizations embrace the intelligent agent era within Microsoft 365, security becomes more critical—and more sophisticated—than ever before. Microsoft 365 Security stands at the forefront of enterprise protection, harnessing the power of artificial intelligence (AI), machine learning, and agentic AI systems to safeguard users, data, and workflows against an ever-evolving threat landscape. At its core, Microsoft 365 Security leverages advanced AI agents and AI models to analyze data, monitor network traffic, and identify potential security risks in real time. By employing deep learning and neural networks, the platform can detect complex patterns and anomalies that traditional security tools might miss. These AI systems are capable of performing complex tasks autonomously, from threat detection to automated incident response, minimizing the need for constant human oversight and enabling rapid, effective action against threats. Generative AI tools and large language models further enhance Microsoft 365 Security’s capabilities, allowing it to anticipate and adapt to new attack vectors. With the ability to process vast amounts of data, these AI applications can identify emerging threats, simulate potential attack scenarios, and recommend proactive measures to strengthen your organization’s security posture. ### A Practical 2026 Roadmap #### Q1 2026: Foundation **Objective:** Prepare your team and your existing add-ins for the agent era. **Actions:** 1. **Audit your add-in capabilities.** Create a comprehensive inventory of every function, action, and data access pattern in your existing add-ins. This inventory is the basis for determining what to expose through agents. 2. **Categorise capabilities by interaction type:** * **Document manipulation** (reading, writing, formatting) → Continue using Office JS APIs. * **Data retrieval** (looking up records, generating reports) → Strong candidate for agent exposure via MCP. * **Workflow actions** (creating tasks, sending notifications, updating systems) → Strong candidate for agent exposure via MCP. * **Configuration** (settings, preferences, API keys) → Keep in task pane UI. 1. **Train your team on key technologies:** * MCP server development (TypeScript SDK). * TypeSpec for API definition. * Declarative agent manifest authoring. * Prompt engineering for agent instructions.\ Strong software development skills are essential for building, maintaining, and automating agents and Office add-ins, especially as AI becomes more integrated into the development process. 1. **Set up the development environment.** Install the Teams Toolkit, configure a test tenant with Copilot licences, and establish a development workflow for building and testing agents. Solid software development practices will help ensure your environment supports scalable and maintainable solutions. #### Q2 2026: First Agent **Objective:** Ship your first declarative agent that exposes existing add-in capabilities. **Actions:** 1. **Select the highest-value capability for agent exposure.** Choose a capability that is frequently used, involves data retrieval or workflow actions, and would benefit from natural language interaction. Agents can be designed to perform specific tasks, such as automating data retrieval or executing workflow actions, to maximize efficiency and user value. 2. **Build the MCP server.** Implement an MCP server that wraps the selected capability. Start simple — one or two tools, clearly defined parameters, robust error handling. 3. **Create the declarative agent manifest.** Define the agent’s identity, instructions, and MCP server connection. Write clear conversation starters that guide users toward the agent’s capabilities. 4. **Test thoroughly.** Test with real users in your test tenant. Observe how they phrase requests and what they expect. Iterate on the agent instructions and tool definitions. 5. **Deploy through the admin centre.** Package the agent and deploy through the Microsoft 365 admin centre. Monitor usage, errors, and user feedback. #### Q3 2026: Expansion **Objective:** Expand agent capabilities and integrate with the broader ecosystem. **Actions:** 1. **Add more tools to your MCP server.** Based on Q2 usage data and user feedback, expose additional capabilities. Prioritise actions that users frequently request. Agents can also be extended to automate other tasks, streamlining a wide range of processes beyond the initial capabilities. 2. **Integrate with Microsoft Graph.** Connect your agent to Microsoft Graph for organisational data — user profiles, calendar availability, SharePoint content. This enables richer, more contextual responses. 3. **Implement multi-step workflows.** Move beyond single-action tools to workflows that chain multiple actions. For example, “Create a project task, assign it to the team lead, and schedule a review meeting.” 4. **Explore cross-platform MCP.** If your organisation uses multiple AI platforms (Microsoft Copilot, Claude, ChatGPT), investigate sharing MCP servers across platforms to maximise the return on your tool development investment. #### Q4 2026: Optimisation **Objective:** Optimise agent performance, expand governance, and plan for 2027. **Actions:** 1. **Analyse agent usage patterns.** Review which tools are used most, how users phrase requests, where the agent fails or provides poor responses. Use this data to improve tool definitions and agent instructions. 2. **Implement advanced governance.** Work with IT to establish policies for agent approval, monitoring, and incident response. Define processes for updating agents without disrupting users. 3. **Evaluate custom agents vs declarative agents.** For complex use cases that outgrow declarative agents, evaluate building custom agents with full programmatic control. 4. **Plan 2027 investments.** Based on a year of agent experience, determine where to invest next — new capabilities, new platforms, deeper integrations, and the development of new features as part of future agent and Office Add-In enhancements. ### Decision Frameworks #### Build vs Buy For each agent capability, evaluate: * **Build** when the capability involves proprietary data, custom workflows, or competitive differentiation. * **Buy** when the capability is generic (project management, CRM access) and a pre-built MCP server or agent exists. * **Extend** when a pre-built solution covers 80% of the requirement and can be customised for the remaining 20%. #### Declarative vs Custom Agents * **Declarative agents** are faster to build, easier to maintain, and sufficient for most tool-based interactions. Start here. * **Custom agents** provide full programmatic control over the agent's behaviour, including custom reasoning logic, multi-model orchestration, and complex state management. Build custom when declarative agents hit their limits. #### Platform and AI Models Selection For organisations building agents that need to work across AI platforms: * **MCP-first**: Build MCP servers for your tool integrations. These work across any MCP-compatible platform. * **Platform-specific**: Use platform-specific features (Copilot APIs, TypeSpec decorators) for deep Microsoft 365 integration where the MCP abstraction is insufficient. * **Hybrid**: MCP for cross-platform tool access, platform-specific APIs for deep integration. ### The Opportunity for AI Applications The shift from add-ins to intelligent agents is not a threat to existing investments — it is an amplification. Every Office add-in capability that delivers value today can deliver more value when it is accessible through natural language, integrated with organisational data, and discoverable through the Copilot interface. These advancements are already demonstrating real world applications in enterprise environments, such as automating document workflows, enhancing data analysis, and enabling more responsive virtual assistants. The organisations that move quickly in 2026 — building MCP servers, deploying declarative agents, training their teams on TypeSpec and prompt engineering — will establish a significant competitive advantage. Those that wait will find themselves playing catch-up as the agent ecosystem matures. ### McKenna Consultants: Ready for 2026 McKenna Consultants has been building Microsoft Office add-ins for over a decade. We have navigated every platform transition — from COM to VSTO, from VSTO to web add-ins, from standalone add-ins to unified manifest apps. The transition to intelligent agents is the next step, and we are already building with the technologies announced at Ignite 2025. Our offerings are designed to help software developers adapt to the new agent-driven extensibility model, enabling them to leverage AI agents and automation in their workflows. Our services cover the full spectrum of Microsoft 365 extensibility: * **Existing add-in assessment**: Evaluating your add-in portfolio for agent opportunities. * **MCP server development**: Building MCP servers that expose your systems to Copilot agents. * **Declarative and custom agent development**: Creating agents tailored to your enterprise workflows. * **Training and enablement**: Upskilling your development team on agent technologies. If you are planning your Microsoft 365 extensibility strategy for 2026, [contact us](https://www.mckennaconsultants.com/contact/) --- # Artificial Intelligence-Powered Document Intelligence: Combining WOPI, Office Add-Ins, and LLMs **Canonical URL:** https://www.mckennaconsultants.com/ai-powered-document-intelligence-combining-wopi-office-add-ins-and-llms/ **Author:** Nick McKenna **Published:** 16 December 2025 **Category:** Artificial Intelligence ## AI-Powered Document Intelligence: Combining WOPI, Office Add-Ins, and LLMs Enterprise document processing has been a persistent challenge. Organisations generate, receive, and process vast amounts of documents — contracts, invoices, reports, correspondence, regulatory filings — and the intelligence locked within those documents remains largely inaccessible to automated systems. Traditional approaches to document processing (OCR, rule-based extraction, keyword search) handle structured documents reasonably well but struggle with the variability, nuance, and context that real-world documents contain. These earlier systems were explicitly programmed to follow human-coded rules, making them inflexible when faced with new formats or language. A contract does not always put the termination clause in the same place. An invoice from one vendor looks nothing like an invoice from another. A regulatory filing uses domain-specific language that generic systems misinterpret. Large language models change the equation fundamentally. LLMs can read, understand, classify, extract from, and summarise documents with a degree of accuracy and flexibility that was previously impossible. Today, AI solutions are able to address these document processing challenges at scale. When combined with WOPI for document access and Office add-ins for in-application user interfaces, the result is enterprise AI document intelligence that works where people work — inside Microsoft Office. Artificial intelligence has long been a theme in science fiction, shaping public perception of its potential and risks. Artificial intelligence originated as an academic discipline in the 1950s, with John McCarthy coining the term 'artificial intelligence' at the Dartmouth Conference in 1956. This article explores the architecture patterns for building AI-powered document intelligence systems that combine WOPI, Office Add-Ins, and LLMs. ### The Three-Layer Architecture Enterprise AI document intelligence systems built on Microsoft technologies typically follow a three-layer architecture: #### Layer 1: Document Access (WOPI) The WOPI protocol provides the document access layer. Through WOPI, the system can: * **Retrieve documents** from any WOPI-enabled storage system — SharePoint, custom document management systems, SaaS platforms with WOPI integrations. * **Open documents** in Office for the web, enabling users to view and edit documents within their browser. * **Access document content** programmatically for AI processing, using the GetFile operation to retrieve the document's binary content. * **Update documents** with AI-processed results, using the PutFile operation to write modified content back to the storage system. WOPI serves as the universal connector between the AI system and wherever documents live in the organisation. #### Layer 2: User Interface (Office Add-Ins) Office add-ins provide the user interface layer, embedding AI capabilities directly within the applications where users work. These add-ins are essentially a type of web application built using web technologies like HTML, CSS, and JavaScript, running inside Office. Add-ins can be developed for a specific application such as Word, Excel, or Outlook, allowing tailored solutions that extend the functionality of each Office product: * **Word add-ins** for contract analysis, document summarisation, and content classification. * **Excel add-ins** for financial data extraction, data validation, and automated reporting. * **Outlook add-ins** for email triage, response drafting, and attachment analysis. The add-in task pane provides a dedicated panel where AI results are presented, user input is collected, and workflow actions are triggered — without the user leaving their Office application. The add-in can also display web-based content, such as charts or media, directly on a page within the Office application to enhance user experience. #### Layer 3: Intelligence (LLMs) The LLM layer provides the analytical intelligence, leveraging advanced **ai algorithms** to analyze documents. This intelligence layer is designed to achieve specific goals in document processing, adapting to evolving requirements and workflows. * **Document classification**: Determining what type of document it is (contract, invoice, report, letter) and routing it to the appropriate processing pipeline. LLMs perform tasks such as classification to ensure documents are handled efficiently. * **Information extraction**: Pulling structured data from unstructured text — dates, parties, amounts, obligations, key terms. LLMs are often optimized for a specific task within the workflow, ensuring high accuracy in extraction. * **Summarisation**: Generating concise summaries of long documents, highlighting key points and action items. This is another example of how LLMs perform tasks to streamline document review. * **Analysis**: Identifying risks, obligations, anomalies, or patterns within document content. Problem solving is a key function of the intelligence layer, enabling the system to find solutions to complex document-related challenges. * **Generation**: Drafting responses, creating reports, or producing new content based on document analysis, helping users find solutions to their document needs. The system continuously improves over time based on the knowledge gained from processing documents, enhancing its ability to perform tasks and achieve specific goals with greater efficiency and accuracy. ### Use Case: Automated Contract Review in Word Let us walk through a concrete implementation: an AI-powered contract review system built as a Word add-in. #### User Experience 1. A user opens a contract in Word (either locally or via WOPI from a document management system). 2. They click the “Review Contract” button in the add-in task pane. 3. The add-in extracts the document content and sends it to the AI service. 4. Within seconds, the task pane displays: * **Contract type**: Service agreement, NDA, licence agreement, etc. * **Key parties**: Names and roles of the contracting parties. * **Key dates**: Effective date, expiration date, renewal dates, notice periods. * **Financial terms**: Contract value, payment terms, penalties. * **Risk flags**: Unusual clauses, missing standard terms, unfavourable provisions. * **Summary**: A plain-English summary of the contract's key terms and obligations. 5. The user can click on any extracted item to navigate to the relevant section in the document. 6. They can request deeper analysis: “What are the termination conditions?” or “Compare this contract's liability cap to our standard terms.” #### Technical Architecture ``` [Word Document] → [Word Add-In (Task Pane)] ↓ [API Gateway] ↓ [AI Processing Service] ↓ ↓ [LLM API] [Document Parser] ↓ ↓ [Classification, [Text Extraction, Extraction, Section Detection, Analysis] Structure Analysis] ↓ [Results API] ↓ [Word Add-In (Display Results)] ``` The Word add-in uses the Office JavaScript API to extract the document content: ``` async function getDocumentContent(): Promise< string> { return new Promise((resolve) => { Word.run(async (context) => { const body = context.document.body; body.load("text"); await context.sync(); resolve(body.text); }); }); } ``` The AI processing service receives the document text, applies the LLM for classification and extraction, and returns structured results. AI models can also be trained on computer code to enable advanced document processing and automation. ### Use Case: Financial Data Extraction in Excel Financial teams frequently receive data in documents — PDF invoices, bank statements, financial reports — that needs to be entered into Excel for analysis. AI-powered extraction automates this. #### Implementation 1. The user opens an Excel workbook and opens the add-in task pane. 2. They drag a PDF invoice into the add-in (or select it from a document management system via WOPI). 3. The AI service processes the PDF: * Extracts the document text (using OCR if necessary). * Identifies it as an invoice. * Extracts line items: description, quantity, unit price, total, tax. * Extracts header information: vendor name, invoice number, date, payment terms. 4. The add-in presents the extracted data for review. 5. The user confirms the extraction, and the add-in populates the Excel worksheet: ``` async function populateInvoiceData(invoiceData: InvoiceData): Promise { await Excel.run(async (context) => { const sheet = context.workbook.worksheets.getActiveWorksheet(); // Write header information sheet.getRange("A1").values = [["Vendor"]]; sheet.getRange("B1").values = [[invoiceData.vendor]]; sheet.getRange("A2").values = [["Invoice Number"]]; sheet.getRange("B2").values = [[invoiceData.invoiceNumber]]; // Write line items const startRow = 5; const headers = [["Description", "Quantity", "Unit Price", "Total", "Tax"]]; sheet.getRange(`A${startRow}:E${startRow}`).values = headers; invoiceData.lineItems.forEach((item, index) => { const row = startRow + 1 + index; sheet.getRange(`A${row}:E${row}`).values = [[ item.description, item.quantity, item.unitPrice, item.total, item.tax ]]; }); await context.sync(); }); } ``` ### Use Case: Email Triage and Response Drafting in Outlook Customer-facing teams handle hundreds or thousands of emails daily. AI-powered triage and response drafting in Outlook transforms this workflow. The AI analyzes emails written in human language to understand intent and context. * **Automatic categorization:** AI sorts incoming emails by urgency, topic, or customer segment. * **Suggested response:** Generative AI applications create draft responses tailored to the email’s content, saving time and ensuring consistency. * **Other forms:** Generative AI can also produce other forms of content, such as summaries or action items, to further streamline communication. * **Analysis:** The AI recognizes complex patterns in email content, identifying trends, sentiment, and potential issues for escalation. #### Implementation 1. The user selects an email in Outlook. 2. The add-in automatically analyses the email and displays: * **Classification**: Enquiry, complaint, order, technical support, billing. * **Priority**: Based on content analysis, sender history, and urgency signals. * **Suggested response**: A draft response tailored to the email's content and classification. * **Relevant information**: Links to related customer records, previous correspondence, and knowledge base articles. 3. The user reviews the suggested response, makes any necessary edits, and sends. The Outlook add-in uses the Mail APIs to access the email content: ``` function getEmailContent(item: Office.MessageRead): Promise { return new Promise((resolve) => { item.body.getAsync(Office.CoercionType.Text, (result) => { resolve(result.value); }); }); } ``` ### LLM Integration Patterns The AI processing service can integrate with LLMs through several patterns, each with trade-offs. LLMs are built on deep neural network architectures, which are a type of artificial neural network and form the foundation of deep learning. As part of the broader field of machine learning, these models leverage neural networks to enable advanced language understanding and document intelligence. The architecture of LLMs typically consists of multiple layers—often many layers—which allows them to extract hierarchical features from complex data. Training and running these models requires significant computing power, as the deep neural network structures are computationally intensive. Recent advancements in AI have introduced new features, such as generative capabilities and enhanced automation, further expanding the potential of LLM integration. #### Direct API Call Send the document content directly to an LLM API (GPT-4, Claude, etc.) with instructions for the analysis task. This is the simplest pattern and works well for moderate-length documents. **Advantages:** Simple implementation, no infrastructure to manage. **Limitations:** Document length limited by the model's context window. Cost scales linearly with document size. #### Retrieval-Augmented Generation (RAG) For large document collections or when the AI needs to reference external knowledge: 1. Chunk the document into sections. 2. Create embeddings for each section. 3. Store embeddings in a vector database. 4. When processing a query, retrieve relevant sections and include them in the LLM prompt. **Advantages:** Handles very large documents and document collections. Can reference external knowledge bases. **Limitations:** More complex infrastructure. Retrieval quality affects analysis quality. #### Hybrid (On-Premises SLM + Cloud LLM) For organisations with data privacy requirements: 1. Use an on-premises small language model for initial classification and extraction of non-sensitive metadata. 2. Escalate to a cloud LLM only for complex analysis tasks, with sensitive data redacted or anonymised. **Advantages:** Balances privacy with capability. Most document processing stays on-premises. **Limitations:** More complex architecture. Redaction must be thorough to be effective. ### Algorithmic Bias and Mitigation in Document Intelligence #### Identifying and Addressing Bias in AI-Powered Document Workflows As AI systems become increasingly central to enterprise document intelligence, the challenge of algorithmic bias has come to the forefront. AI models, especially those used in document classification, extraction, and summarization, can inadvertently reflect and amplify biases present in their training data or underlying algorithms. For organizations relying on AI tools to analyze data, make hiring decisions, or automate repetitive tasks, unchecked bias can lead to unfair outcomes, regulatory risks, and a loss of trust. AI researchers and software developers have identified several sources of bias in document intelligence workflows. These include imbalances in training data, the use of non-representative examples, and the influence of human biases during data labeling or model design. For example, if an AI agent is trained primarily on contracts from a single industry or region, it may misclassify documents from other sectors, leading to skewed results. To address these challenges, the field of computer science has developed a range of techniques for bias mitigation. Data preprocessing is a foundational step, involving the careful cleaning and balancing of training data to ensure it accurately represents the diversity of real-world documents. Feature engineering allows AI models to focus on relevant attributes while minimizing the impact of potentially biased features. Model selection is also critical—choosing deep learning architectures or generative AI tools that are robust against bias and can adapt to new data and other tasks. Explainability is another key pillar. By designing AI systems that provide transparent insights into their decision-making processes, organizations can identify and address potential biases before they impact business outcomes. For instance, Office add-ins developed for Word or Excel can include features that highlight why a document was classified a certain way, or flag sections where algorithmic bias may have influenced the analysis. Advanced AI research continues to push the boundaries of bias mitigation. Techniques such as adversarial training help AI models become more resilient to biased inputs, while transfer learning enables the use of pre-trained models that can be fine-tuned for specific document intelligence tasks with reduced risk of bias. Ensemble methods, which combine the outputs of multiple AI models, can further enhance fairness and accuracy by balancing out individual model weaknesses. In practical terms, integrating these bias mitigation strategies into enterprise document workflows is essential. For example, Microsoft Edge can serve as a platform for deploying AI-powered Office add-ins that automatically detect and correct bias in real-time, ensuring that document analysis remains fair and reliable. AI agents embedded in office applications can simulate human intelligence, providing unbiased recommendations and supporting a broad range of real world applications—from virtual assistants to autonomous vehicles. Ultimately, building trustworthy AI-powered document intelligence requires a multidisciplinary approach. By combining the latest advances in deep learning, natural language processing, and knowledge representation with domain expertise and rigorous testing, organizations can develop AI applications that are not only powerful but also fair, transparent, and explainable. This commitment to fairness is essential for unlocking the full potential of AI in document intelligence, marketing campaigns, and beyond—ensuring that AI systems deliver accurate, unbiased results across the enterprise. ### The McKenna Advantage What makes McKenna Consultants uniquely positioned for AI document intelligence is the combination of three deep specialisms: * **WOPI expertise**: We understand how to build robust, scalable document access through the WOPI protocol, including authentication, lock management, and coauthoring. * **Office add-in development**: We have built dozens of enterprise Office add-ins across Word, Excel, and Outlook, with deep knowledge of the JavaScript APIs, deployment models, and user experience patterns. * **AI implementation**: We design and build AI processing pipelines using LLMs, including RAG architecture, prompt engineering, and model selection. No single-competence consultancy can deliver the complete AI document intelligence solution. A WOPI specialist cannot build the add-in UI. An add-in developer cannot design the AI pipeline. An AI consultancy cannot integrate with the document access layer. If you are exploring AI-powered document intelligence for your enterprise, [contact us](https://www.mckennaconsultants.com/contact/) to discuss how we can help. --- # Building Microsoft 365 Copilot Agents with MCP: A Developer's Guide to Artificial Intelligence **Canonical URL:** https://www.mckennaconsultants.com/building-microsoft-365-copilot-agents-with-mcp-a-developer-s-guide/ **Author:** Nick McKenna **Published:** 9 December 2025 **Category:** Microsoft Office Add-In Developer ## Building Microsoft 365 Copilot AI Agents with MCP: A Developer's Guide In December 2025, Microsoft announced that Microsoft 365 Copilot declarative agents now support the **Model Context Protocol (MCP)** — Anthropic’s open standard for connecting AI models to tools and data sources. This is arguably the most consequential development for Office extensibility since the introduction of the unified manifest. MCP support means that Microsoft 365 Copilot agents can now interoperate with tools and data sources across the entire AI ecosystem, not just within Microsoft’s walled garden. An agent built for Microsoft 365 can connect to the same tools and data sources used by Claude, ChatGPT, and other MCP-compatible AI platforms. Conversely, MCP servers built for other AI platforms can now be accessed by Microsoft 365 Copilot agents. This guide explains what MCP is, why Microsoft’s adoption matters, and provides a practical walkthrough for building a declarative ai assistant that uses MCP to interact with external systems. ### What Is the Model Context Protocol? The Model Context Protocol (MCP) is an open standard originally developed by Anthropic that defines how AI models communicate with external tools and data sources. Think of it as a universal adapter between AI agents and the systems they need to interact with. By allowing agents to connect to a wide range of tools and data sources, MCP enables a diverse array of AI applications—such as classifiers, generative models, and industry-specific solutions—to function seamlessly across platforms. Before MCP, every AI platform had its own proprietary mechanism for tool integration: * OpenAI used function calling with custom JSON schemas. * Microsoft used the Copilot plugin model with OpenAPI-based action definitions. * Anthropic used tool use with its own parameter format. This fragmentation meant that a developer who built a tool integration for one platform had to rebuild it for every other platform. MCP eliminates this duplication and streamlines AI work by allowing AI systems to operate efficiently across different environments. #### MCP Architecture MCP follows a client-server architecture: * **MCP Client**: The AI model (or agent runtime) that needs to use tools. In our case, the Microsoft 365 Copilot agent runtime acts as an MCP client. * **MCP Server**: A service that exposes tools and data sources through the MCP protocol. An MCP server can provide access to a CRM, a database, a file system, an API, or any other data source. * **Transport**: MCP defines standard transport mechanisms (stdio for local servers, HTTP with server-sent events for remote servers) for communication between clients and servers. #### MCP Capabilities An MCP server can expose three types of capabilities: 1. **Tools**: Actions that the agent can invoke. For example, “create a task in the project management system” or “look up a customer record in the CRM.” 2. **Resources**: Data that the agent can read. For example, “the contents of a specific document” or “the current project status dashboard.” 3. **Prompts**: Predefined prompt templates that guide the agent's interaction with the server. For example, “summarise the latest sales report” with specific instructions for how to format the summary. ### Why MCP in Microsoft 365 Matters Microsoft’s adoption of MCP is significant for several reasons: First, it enables Microsoft 365 Copilot agents to access a much broader set of tools and data sources, creating a network effect as more services and integrations become available. This growing ecosystem not only increases the value of the platform but also leverages the computing power of multiple platforms, enhancing the capabilities available to Microsoft 365 Copilot agents. #### Cross-Platform Interoperability An MCP server built for any purpose — a CRM connector, a database query tool, a document processing service — now works with Microsoft 365 Copilot agents without modification. If you have already built MCP servers for Claude or other MCP-compatible platforms, those servers work with Microsoft 365 immediately. This dramatically reduces the development effort for organisations building internal tools that need to be accessible from multiple AI platforms. #### Ecosystem Scale MCP has been adopted by a growing number of AI platforms and tool providers. By supporting MCP, Microsoft 365 Copilot agents gain access to this entire ecosystem of tools and integrations. The network effect is powerful — each new MCP server benefits all MCP-compatible platforms, including Microsoft 365. #### Developer Simplicity For Office add-in developers building agents, MCP provides a simpler and more standardised approach to tool integration than the previous Copilot plugin model. Instead of writing OpenAPI specifications and managing plugin manifests, developers can implement MCP servers using standard libraries and patterns. #### Future-Proofing As an open standard with multi-vendor support, MCP provides a degree of future-proofing that proprietary integration mechanisms do not. An MCP server built today will work with future AI platforms that adopt the protocol, protecting the development investment. ### AI and Machine Learning Fundamentals Artificial intelligence (AI) and machine learning (ML) are at the core of today’s most powerful digital solutions, enabling computers to perform tasks that once required human intelligence. AI systems leverage sophisticated algorithms and vast amounts of data to make predictions, classify information, and generate actionable insights. At its heart, machine learning is a subset of AI that focuses on training algorithms to learn from experience—improving their performance as they process more data. AI researchers have developed a range of techniques to enhance the capabilities of AI models. Deep learning, for example, uses neural networks with multiple layers to analyze data, recognize complex patterns, and make decisions that mimic human problem solving. These neural networks are inspired by the human brain and are particularly effective at tasks like image recognition, speech processing, and understanding natural language. Generative AI tools, such as large language models, represent a significant leap forward in AI capabilities. These models can generate new content—ranging from text and images to videos—by learning from massive datasets. Language models like those used in Microsoft 365 Copilot can understand and produce human language, enabling AI assistants to perform tasks, answer questions, and provide AI-generated summaries. As AI tools continue to evolve, they are increasingly able to analyze unstructured data, automate repetitive tasks, and support a broad range of real-world applications. --- ### Advanced AI Concepts As AI technology matures, advanced concepts such as artificial neural networks, deep learning, and generative AI are driving the development of more sophisticated AI systems. These advanced AI models are capable of performing complex tasks, including image recognition, natural language processing, and high-level decision-making. AI agents—like virtual assistants and chatbots—are now widely used to automate repetitive tasks, provide customer support, and assist with problem solving across industries. One of the most exciting frontiers is agentic AI, where multiple AI agents collaborate to achieve shared objectives. This approach is being explored in robotics, smart homes, and autonomous vehicles, where agents must coordinate to perform tasks and respond to dynamic environments. Machine learning and deep learning algorithms enable these agents to analyze vast amounts of data, identify patterns, and make predictions with increasing accuracy. Tools like Copilot Studio empower developers to build and orchestrate AI agents and agent flows using a graphical, low-code interface. This makes it easier to automate workflows, personalize user experiences, and integrate advanced AI capabilities into enterprise systems. By leveraging neural networks and advanced AI algorithms, organizations can unlock new efficiencies, automate complex processes, and deliver intelligent solutions that adapt to user needs. --- ### Building a Declarative Agent with MCP Let us walk through building a Microsoft 365 Copilot declarative agent that uses MCP to interact with an external project management system, enabling the agent to perform specific tasks such as retrieving project updates, assigning tasks, or automating routine project workflows. #### Step 1: Define the MCP Server First, build an MCP server that exposes the project management system’s capabilities. Using the MCP TypeScript SDK: ``` import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { z } from "zod"; const server = new McpServer({ name: "project-management", version: "1.0.0", }); // Define a tool for creating tasks server.tool( "create_task", "Create a new task in the project management system", { project: z.string().describe("The project name or ID"), title: z.string().describe("The task title"), description: z.string().describe("The task description"), assignee: z.string().optional().describe("The person to assign the task to"), priority: z.enum(["low", "medium", "high", "critical"]).describe("Task priority"), }, async ({ project, title, description, assignee, priority }) => { const task = await projectManagementAPI.createTask({ project, title, description, assignee, priority }); return { content: [{ type: "text", text: `Task created: ${task.id} - ${task.title} (${task.status})` }] }; } ); // Define a tool for querying tasks server.tool( "get_tasks", "Get tasks from a project, optionally filtered by status or assignee", { project: z.string().describe("The project name or ID"), status: z.enum(["open", "in_progress", "done"]).optional(), assignee: z.string().optional(), }, async ({ project, status, assignee }) => { const tasks = await projectManagementAPI.getTasks({ project, status, assignee }); return { content: [{ type: "text", text: JSON.stringify(tasks, null, 2) }] }; } ); // Define a resource for project summaries server.resource( "project-summary", "project://{projectId}/summary", async (uri) => { const projectId = uri.pathname.split("/")[1]; const summary = await projectManagementAPI.getProjectSummary(projectId); return { contents: [{ uri: uri.href, mimeType: "text/plain", text: summary }] }; } ); // Similar tools can be defined for other tasks beyond project management, such as automating processes in manufacturing, data processing, or analytics. This demonstrates the flexibility of MCP servers to support automation and consistency across a wide range of use cases. const transport = new StdioServerTransport(); await server.connect(transport); ``` #### Step 2: Host the MCP Server For Microsoft 365 integration, the MCP server needs to be accessible over HTTP. Deploy it as a web service with the MCP HTTP transport: ``` import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js"; import express from "express"; const app = express(); app.post("/mcp", async (req, res) => { const transport = new StreamableHTTPServerTransport("/mcp", res); await server.connect(transport); await transport.handleRequest(req, res); }); app.listen(3001); ``` Secure the endpoint with authentication (API key or OAuth) and deploy to your cloud infrastructure. #### Step 3: Create the Declarative Agent Manifest The declarative agent manifest defines the agent's identity, capabilities, and MCP connections: ``` { "$schema": "https://developer.microsoft.com/json-schemas/copilot/declarative-agent/v1.0/schema.json", "version": "v1.0", "name": "Project Assistant", "description": "Helps you manage project tasks and check project status", "instructions": "You are a project management assistant. Help users create tasks, check project status, and manage their workload. Always confirm task details before creating. Use a professional, concise tone.", "capabilities": [ { "name": "McpServer", "type": "mcp", "serverUrl": "https://your-mcp-server.example.com/mcp", "authentication": { "type": "apiKey", "headerName": "X-API-Key" } } ], "conversationStarters": [ { "text": "What tasks are assigned to me in the Alpha project?" }, { "text": "Create a high-priority task for the website redesign" }, { "text": "Show me a summary of the Q1 roadmap project" } ] } ``` #### Step 4: Package and Deploy Package the declarative agent as a Microsoft 365 app using the Teams Toolkit or manual manifest packaging: 1. Create a Teams app manifest that references the declarative agent configuration. 2. Include the MCP server authentication credentials in the app's configuration. 3. Deploy the app through the Microsoft 365 admin centre or sideload for testing. Once deployed, users interact with the agent through the Copilot interface in Teams, Word, Excel, or other Microsoft 365 applications. When a user says “Create a high-priority task in the Alpha project to fix the login bug,” the Copilot agent: 1. Parses the natural language request. 2. Identifies the create_task tool from the MCP server. 3. Calls the MCP server with the extracted parameters. 4. Returns the confirmation to the user. ### Relationship to Existing Office Add-In APIs MCP does not replace the Office JavaScript APIs that power existing add-ins. The two serve different purposes: * **Office JavaScript APIs** provide direct manipulation of Office documents — reading and writing cells in Excel, formatting text in Word, managing email in Outlook. Traditional add-ins are explicitly programmed to perform these document manipulation tasks, with specific rules and instructions coded by developers. * **MCP** provides a protocol for agent-to-tool communication. It enables Copilot agents to invoke external tools and access external data sources through natural language, allowing for more flexible, agent-driven interactions that are not limited to explicitly programmed functions. For add-in developers, the practical approach is: * Continue using Office JavaScript APIs for document manipulation features. * Use MCP for agent-facing capabilities that connect to external systems. * Use the unified manifest to package both add-in and agent capabilities in a single app. ### Security Considerations When building MCP servers for Microsoft 365 integration, security is paramount: **Authentication.** Every MCP server must require authentication. Use API keys as a minimum, OAuth 2.0 for enterprise deployments. Never expose an unauthenticated MCP server. **Authorization.** The MCP server should enforce per-user authorization. When Copilot calls the MCP server on behalf of a user, the server should verify that the user has permission to perform the requested action. **Input validation.** Validate all parameters received from the MCP client. AI-generated parameters may contain unexpected values — sanitise inputs before passing them to backend systems. **Audit logging.** Log all MCP tool invocations, including the user identity, the tool called, the parameters provided, and the result. This is essential for compliance and debugging. **Rate limiting.** Implement rate limits to prevent abuse — whether from misconfigured agents generating excessive requests or from potential security threats. ### Ethics and Bias in AI As AI systems become more deeply embedded in business operations and daily life, ethical considerations and the risk of algorithmic bias are increasingly in the spotlight. AI models, especially those used in sensitive areas like hiring decisions, healthcare, and autonomous vehicles, must be designed and tested to ensure fairness, transparency, and accountability. Algorithmic bias can lead to unfair or discriminatory outcomes, perpetuating existing inequalities if not carefully managed. AI researchers and developers have a responsibility to address these challenges by building systems that are both effective and ethical. This includes rigorous testing of AI models, ongoing monitoring for unintended consequences, and implementing safeguards to prevent bias in decision-making processes. For example, Microsoft 365 Copilot, which automates repetitive tasks and provides personalized support, must be continually evaluated to ensure it does not inadvertently disadvantage certain groups or reinforce stereotypes. The use of AI in real-world applications raises important questions about privacy, consent, and the broader impact of automation. As organizations adopt AI-powered tools like Microsoft 365 Copilot, it is essential to prioritize ethical AI development—balancing innovation with a commitment to fairness and social responsibility. By staying informed and proactive, businesses can harness the power of AI while minimizing risks and building trust with users and stakeholders. ### Getting Started with MCP For Office add-in developers looking to start with MCP: 1. **Explore existing MCP servers.** A growing library of pre-built MCP servers covers common integrations (databases, APIs, file systems). These can be used as-is or as starting points for custom servers. 2. **Build a simple MCP server.** Start with a single-tool MCP server that connects to one of your existing systems. The TypeScript SDK makes this straightforward. 3. **Create a declarative agent.** Use the MCP server in a declarative agent manifest and test through Teams or Copilot. 4. **Iterate based on usage.** Monitor how users interact with the agent and add tools, resources, and prompts based on observed needs. Each iteration should be informed by the knowledge gained from observing user interactions and agent performance, applying these insights to improve the agent's effectiveness. McKenna Consultants has been building Microsoft Office add-ins and AI integrations for years. The convergence of add-ins and agents through MCP is a natural extension of our expertise. If you are planning to build Microsoft 365 Copilot agents or integrate MCP into your Office extensibility strategy, [contact us](https://www.mckennaconsultants.com/contact/) to discuss your requirements. --- # Headless Ecommerce: Unifying Content and Products in Composable Architecture with Headless CMS **Canonical URL:** https://www.mckennaconsultants.com/headless-cms-and-commerce-unifying-content-and-products-in-composable-architecture/ **Author:** Nick McKenna **Published:** 2 December 2025 **Category:** B2B eCommerce ## Headless CMS and Commerce: Unifying Content and Products in Composable Architecture The separation of content and commerce has been one of the persistent failures of traditional ecommerce platforms. On a typical monolithic platform, such as Adobe Commerce (formerly Magento), product pages are data-driven templates — structured fields for price, description, specifications — while editorial content lives in a separate CMS, often a WordPress blog bolted onto the side. Adobe Commerce exemplifies a traditional ecommerce platform with a monolithic architecture that is easy to use for small businesses, but can become limiting as businesses grow. These traditional ecommerce solutions are known for their simplicity and quick deployment, but they often lack flexibility and are difficult to scale. Additionally, such platforms frequently include drag and drop tools, enabling merchants to quickly set up and customize their online stores without extensive technical skills. However, legacy platforms like these can hinder scalability and adaptability, making it challenging to support modern, AI-driven, and flexible commerce solutions. The commerce vs traditional debate centers on the differences between monolithic, tightly integrated systems and composable commerce architectures that emphasize modularity, flexibility, and scalability. Composable commerce architecture solves this by treating content and commerce as equal, API-first services that can be combined freely. Modern e commerce platforms built on composable principles offer greater flexibility, scalability, and customization compared to traditional solutions. A product page can include editorial storytelling. A blog article can include shoppable product cards. A landing page can blend promotional content with real-time product data, pricing, and add-to-cart functionality, giving businesses the freedom to innovate and rapidly integrate new technologies. But achieving this content-commerce convergence requires deliberate integration architecture. This guide covers the technical patterns for integrating headless CMS platforms with composable commerce platforms like Elastic Path, the content modelling decisions involved, and how to avoid the common pitfalls. ### Introduction to Composable Commerce Composable commerce is transforming the landscape of digital commerce by empowering businesses to assemble their ideal commerce solutions from modular, best-of-breed components. Unlike traditional monolithic platforms, which often lock companies into rigid, one-size-fits-all systems, composable commerce solutions offer the freedom to select and integrate only the software components that align with specific business needs. This modular approach enables digital commerce platforms to deliver highly differentiated and personalized experiences, adapting quickly to new market demands and customer expectations. By leveraging composable commerce, organizations can build a flexible software ecosystem that supports rapid innovation and seamless integration with emerging technologies. Whether launching new digital channels, experimenting with unique business models, or scaling to meet increased demand, composable commerce platforms provide the agility and customization required to stay ahead in today’s competitive e-commerce environment. Ultimately, composable commerce allows businesses to break free from the constraints of traditional monolithic platforms and create tailored solutions that drive growth and customer satisfaction. --- ### Benefits of Composable Commerce The benefits of composable commerce are both immediate and far-reaching for modern businesses. Composable commerce platforms offer unparalleled flexibility, allowing organizations to adapt their e-commerce operations as customer expectations and market conditions evolve. With seamless integration capabilities, businesses can connect their commerce platforms with a wide range of technologies, from advanced inventory management systems to personalized marketing tools, ensuring a unified and efficient workflow. One of the key advantages is the ability to deliver consistent and engaging customer experiences across all touchpoints—websites, mobile apps, and even in-store kiosks. Composable commerce enables businesses to improve customer engagement by tailoring content, promotions, and commerce functionality to individual preferences and behaviors. Enhanced business logic and real-time data synchronization ensure that inventory, pricing, and product information are always accurate and up-to-date. Moreover, composable commerce offers complete ownership of e-commerce operations, empowering businesses to make changes and updates without being dependent on third-party vendors or legacy systems. This autonomy accelerates innovation and reduces time-to-market for new features and experiences. By adopting composable commerce, companies can not only meet but exceed changing customer expectations, positioning themselves as leaders in the digital commerce space. --- ### The Content-Commerce Convergence Modern B2B and B2C commerce experiences demand content at every stage of the buyer journey, and meeting evolving customer demands for personalized, content-rich experiences is crucial for success: **Discovery.** Buyers find products through search, social media, and content marketing. Blog articles, guides, and comparison pages drive organic traffic and brand authority. These content pieces need to include relevant product information — pricing, availability, direct purchase links. **Evaluation.** Product pages need more than specifications. Buying guides, use case descriptions, video demonstrations, and customer testimonials provide the context buyers need to make decisions. This rich content is editorial in nature and best managed in a CMS. **Purchase.** Even at the point of purchase, content matters. Trust signals, warranty information, delivery details, and post-purchase guidance all influence conversion. **Post-purchase.** Onboarding guides, setup tutorials, and maintenance schedules extend the content relationship beyond the transaction. In a composable architecture, the headless CMS manages all of this editorial content, while the commerce platform (Elastic Path) manages products, pricing, inventory, and transactions. The integration layer brings them together. ### Headless CMS Options for Headless Commerce The headless CMS market is mature, with several platforms that integrate well with composable commerce architectures. In a modern ecommerce architecture, headless CMS platforms decouple content management from commerce systems, enabling flexible integration through APIs and supporting multichannel shopping experiences. Here is how the leading options compare for commerce integration: #### Contentful **Strengths for commerce:** Contentful's structured content model maps well to commerce content types. Its references feature allows content entries to link to products (via external IDs stored in custom fields). The GraphQL API provides efficient querying for complex content structures. **Integration pattern:** Store Elastic Path product IDs as reference fields in Contentful content entries. The frontend fetches content from Contentful and product data from Elastic Path, merging them at render time. **Consideration:** Contentful's pricing scales with the number of content entries and API calls, which can become significant for large catalogues with extensive content. #### Strapi **Strengths for commerce:** Strapi's open-source model provides maximum control over the content infrastructure. Custom content types can be designed specifically for commerce use cases. The REST and GraphQL APIs are flexible, and Strapi can be self-hosted for data sovereignty requirements. **Integration pattern:** Define custom content types in Strapi that mirror your commerce content needs (product stories, buying guides, category descriptions). Use relation fields to store Elastic Path product or category identifiers. **Consideration:** Self-hosted Strapi requires infrastructure management. Strapi Cloud is available for managed hosting but has less mature enterprise features than Contentful. #### Sanity **Strengths for commerce:** Sanity's real-time collaboration and customisable editing studio make it strong for teams that need to iterate quickly on content. The GROQ query language is powerful for complex content retrieval. **Integration pattern:** Sanity's schema system allows rich custom objects that can embed commerce data (product references, pricing snapshots, promotional rules). The real-time API enables preview workflows where editors see content changes reflected immediately alongside live product data. **Consideration:** Sanity's query language (GROQ) is proprietary, which creates a learning curve and potential lock-in concern. #### Choosing the Right CMS The decision depends on your specific requirements: | Requirement | Recommended CMS | |-------------------------------------------|----------------------| | Enterprise scale with managed hosting | Contentful | | Self-hosted with maximum control | Strapi | | Real-time collaboration and customisation | Sanity | | GraphQL-first API strategy | Contentful or Strapi | | Budget-conscious with developer resources | Strapi (open source) | ### Content Modelling for Commerce The content model — how content types, fields, and relationships are structured in the CMS — is the foundation of a successful content-commerce integration. Poor content modelling creates rigid, hard-to-maintain integrations. Good content modelling creates flexible, composable content that adapts to changing business needs by decoupling the presentation layer from the backend. This separation allows for greater flexibility and enables independent updates to the frontend without impacting backend operations. #### Principles **1. Separate content from presentation.** Content entries should describe *what* the content is, not *how* it should be displayed. A “Product Story” content type should contain the narrative, images, and product references — but not CSS classes, layout positions, or viewport-specific formatting. **2. Use references, not duplicated data.** Do not copy product data (prices, descriptions, images) into the CMS. Store a reference (product ID or SKU) and let the frontend resolve the current product data from Elastic Path at render time. This ensures content always reflects current pricing and availability. **3. Design for reuse.** A single content entry should be usable in multiple contexts — on a product page, in a category landing page, in an email campaign. This requires content types that are granular enough to be composed, not monolithic page-level entries. **4. Plan for localisation.** If you operate in multiple markets, your content model must support locale-specific versions of content from the start. Retrofitting localisation into an established content model is significantly more difficult. #### Example Content Types Here is a practical content model for a composable commerce implementation: **Product Story** * Title (text) * Summary (rich text) * Body content (rich text with embedded media) * Product references (array of Elastic Path product IDs) * Category (reference to a category content type) * Author (reference to an author content type) * Locale (localisation field) **Buying Guide** * Title (text) * Introduction (rich text) * Sections (array of section components, each with heading, body, and optional product references) * Target audience (enumeration: technical, business, both) * Related guides (references to other buying guides) **Category Landing Content** * Category identifier (maps to Elastic Path category) * Hero content (rich text with image) * Featured products (array of product IDs for manual merchandising) * Promotional banner (reference to a promotional content type) * SEO metadata (title, description, canonical URL) **Promotional Content** * Campaign name (text) * Start date / end date (date range) * Content variants (array of locale-specific content blocks) * Display rules (JSON field for targeting rules) ### API Orchestration Patterns for Seamless Integration With content in the CMS and products in Elastic Path, the integration challenge is orchestrating API calls efficiently. There are several patterns: Packaged business capabilities (PBCs) can be integrated as modular, prebuilt functionalities—such as search or payments—within these orchestration patterns, enabling greater flexibility and scalability when building headless ecommerce solutions. #### Backend-for-Frontend (BFF) A BFF layer sits between the frontend and the backend services, orchestrating requests and assembling responses: 1. The frontend requests a page (e.g., a product detail page). 2. The BFF fetches product data from Elastic Path. 3. The BFF fetches associated content from the CMS (product stories, buying guides, promotional banners) using the product ID as a key. 4. The BFF merges the data into a single response and returns it to the frontend. **Advantages:** The frontend makes a single request per page. Complex orchestration logic is centralised. Caching can be applied at the BFF layer. **Disadvantages:** The BFF is an additional service to build and maintain. It can become a bottleneck if not designed for scale. #### Frontend Orchestration The frontend makes parallel API calls directly to each service: 1. On page load, the frontend simultaneously requests product data from Elastic Path and content data from the CMS. 2. The frontend merges the responses client-side and renders the page. **Advantages:** No additional backend service. Each API call is independent and cacheable. **Disadvantages:** Multiple API calls per page increase latency (mitigated by parallel execution). The frontend contains orchestration logic, which can become complex. #### Static Site Generation with Incremental Rebuilds For content that does not change frequently, static site generation (SSG) is highly effective: 1. At build time, the SSG framework fetches all content from the CMS and product data from Elastic Path. 2. Pages are pre-rendered as static HTML. 3. When content changes, a webhook triggers an incremental rebuild of affected pages. 4. Dynamic data (pricing, inventory) is loaded client-side or via edge functions. **Advantages:** Maximum performance (static HTML served from CDN). Reduced API load on CMS and commerce platforms. **Disadvantages:** Dynamic data requires client-side hydration. Build times can be long for large catalogues. ### Preview Workflows Content editors need to see how their content will appear alongside live product data before publishing. In a composable architecture, this requires a preview workflow that spans both the CMS and the commerce platform: 1. The CMS provides a draft/preview mode that serves unpublished content via a separate API endpoint. 2. The frontend (or a dedicated preview environment) is configured to use the CMS preview endpoint instead of the published endpoint. 3. Product data is fetched from Elastic Path as normal (or from a staging catalogue if product data changes are also being previewed). 4. The editor sees a complete page rendering with their draft content alongside current product data. Most headless CMS platforms (Contentful, Strapi, Sanity) support preview modes. The key is ensuring that the preview environment accurately represents the production experience. ### Avoiding the Content Silo Problem The most common failure mode in content-commerce integration is the content silo: the CMS and commerce platform operate independently, producing a disjointed experience. Unified commerce addresses this by connecting content management, order processing, inventory, and customer engagement within a single, scalable platform, enabling a seamless and flexible customer journey. Symptoms of the content silo problem: * Product pages have no editorial content — just structured data fields. * Blog articles mention products but do not include current pricing, availability, or purchase links. * Promotional campaigns are managed separately in the CMS and the commerce platform, with manual coordination. * Content editors and merchandisers use separate tools with no shared workflow, and account management features are often isolated, making it harder to streamline B2B operations and enhance the customer experience. #### Avoiding Silos * **Shared taxonomy**: Use the same category structure in both the CMS and the commerce platform. This enables automatic content-product association. * **Bidirectional references**: Product entries in the commerce platform reference CMS content, and CMS content entries reference commerce products. * **Unified search**: Implement a search layer that indexes both content and products, so customers find relevant results regardless of the source. * **Cross-functional workflows**: Involve both content editors and merchandisers in content planning and review processes. ### Challenges of Composable Commerce While composable commerce offers significant advantages, it also introduces a set of challenges that businesses must be prepared to address. Implementing and maintaining a composable commerce platform requires substantial technical resources and expertise, particularly in areas such as API integration, business logic development, and customer engagement strategies. The modular nature of composable commerce platforms means that IT teams must be adept at orchestrating multiple software components and ensuring seamless interoperability. Another consideration is cost. For some organizations, especially small and medium-sized businesses, the initial investment in composable commerce platforms and the technical talent required can be higher than with traditional platforms. Additionally, developing and maintaining a robust, scalable architecture demands ongoing attention and resources. Despite these challenges, the long-term benefits of composable commerce—such as increased agility, scalability, and the ability to deliver tailored customer experiences—often outweigh the upfront complexities. To navigate these hurdles, many businesses choose to partner with experienced vendors and consultants who can provide the technical guidance and support needed to maximize the benefits of composable commerce solutions. --- ### Best Practices for Composable Commerce To fully realize the potential of composable commerce, businesses should adhere to several best practices. Start by clearly defining your business goals and understanding your customers’ expectations—this ensures that every component of your e-commerce solution is aligned with your strategic objectives. Selecting a composable commerce platform that is both scalable and adaptable is crucial, as it allows your business to grow and evolve without being constrained by technology. A robust technical strategy is essential. Embrace a decoupled architecture, leveraging application programming interfaces (APIs) to enable seamless integration between your commerce platform, content management systems, and other business-critical tools. This approach not only streamlines operations but also provides the flexibility to incorporate new technologies as they emerge. Prioritizing customer experience is key. Ensure that your composable commerce solution delivers consistent, personalized interactions across all digital and physical touchpoints. By focusing on seamless integration and adaptability, businesses can respond quickly to changing customer expectations and market trends, unlocking the full value of composable commerce in their e-commerce operations. --- ### Future of Composable Commerce The future of composable commerce is poised for rapid innovation and expansion. As digital commerce platforms continue to evolve, composable commerce platforms will become even more powerful, enabling businesses to deliver highly personalized and immersive customer experiences. The emergence of new digital touchpoints—such as augmented reality, voice commerce, and native mobile apps—will further drive the adoption of composable commerce, as companies seek to create unified, omnichannel experiences that meet customers wherever they are. Custom development will play an increasingly important role, allowing businesses to differentiate themselves with unique features and tailored workflows that traditional commerce platforms simply can’t match. As customer engagement becomes more sophisticated, composable commerce will empower organizations to innovate faster, adapt to shifting market dynamics, and maintain a competitive edge. Ultimately, composable commerce will become the standard for e-commerce, enabling businesses to improve customer engagement, increase revenue, and thrive in a digital-first world. By embracing composable commerce solutions today, companies can position themselves for long-term success in an ever-changing digital landscape. ### Getting Started For enterprises building or evolving a composable commerce architecture, it is essential to first evaluate whether headless commerce aligns with your business model—considering operational complexity, customization needs, and growth plans. Adopting headless and composable commerce is a key part of digital transformation, enabling organizations to modernize their technology stack and move away from legacy architecture for greater agility and scalability. Integrating a headless CMS should be a priority, not an afterthought, as headless commerce decouples the frontend and backend, allowing for more flexible, personalized, and omnichannel experiences. Headless commerce platforms serve as the foundation for modern, API-driven digital commerce solutions, supporting seamless integration with digital experience platforms (DXPs) and content management systems. Composable technology empowers businesses to rapidly adapt and integrate new features or services without overhauling the entire platform, making it easier to experiment with new channels such as mobile apps, online marketplaces, and social media platforms. Online retailers especially benefit from headless and composable commerce by delivering seamless, cross-device experiences that drive engagement and conversions. The content-commerce convergence is a competitive differentiator that improves SEO, conversion rates, and customer engagement. McKenna Consultants has extensive experience integrating headless CMS platforms with Elastic Path and other composable commerce services. If you are planning a content-commerce integration or evaluating CMS options for your composable architecture, [contact us](https://www.mckennaconsultants.com/contact/) to discuss your requirements. --- # Measuring Artificial Intelligence ROI: A Practical Framework for Global Enterprises **Canonical URL:** https://www.mckennaconsultants.com/measuring-ai-roi-a-practical-framework-for-global-enterprises/ **Author:** Nick McKenna **Published:** 25 November 2025 **Category:** Artificial Intelligence ## Measuring Artificial Intelligence AI ROI: A Practical Framework for Global Enterprises The enthusiasm for AI in enterprise has reached a point where almost every organisation is investing — or planning to invest — in AI initiatives. But a troubling pattern has emerged: many of these investments are being made without a clear framework for measuring return on investment. Boards and CFOs are asking the right question: “What is AI actually delivering for the money we are spending?” Too often, the answer is vague — “improved productivity” or “better customer experience” without quantification. If a customer support chatbot reduces call volumes by 20%, how much of that reduction is attributable to the AI model, how much to the improved UX, and how much to better knowledge base content? Most current enterprise AI deployments, such as chatbots and automation tools, are examples of narrow AI—systems designed for specific, well-defined tasks—rather than more advanced, general AI systems. This vagueness erodes confidence in AI investment and makes it difficult to justify continued or expanded spending. This article provides a practical framework for measuring AI return on investment, with specific attention to UK enterprise considerations including HMRC R&D tax relief, ICO compliance requirements, and benchmarks from UK deployments. ### Why AI ROI Is Hard to Measure Before presenting the framework, it is worth understanding why AI ROI measurement is genuinely difficult — not as an excuse, but to set realistic expectations: **Attribution complexity.** AI systems are often designed or trained to perform specific tasks within a larger system. For example, if a customer support chatbot reduces call volumes by 20%, it can be challenging to isolate how much of that reduction is attributable to the AI model performing its specific task, versus improvements in UX or better knowledge base content. **Lagging indicators.** Some AI benefits take months to materialise. A recommendation engine may need several months of data before it demonstrably improves average order value. Measuring too early gives misleading results. **Opportunity cost.** AI ROI should be measured against the alternative — what would the organisation have achieved with the same investment in non-AI solutions? This counterfactual is difficult to establish rigorously. **Intangible benefits.** Some AI benefits are real but hard to quantify: improved employee satisfaction from eliminating tedious tasks, faster decision-making from better data analysis, competitive positioning from being seen as an innovative organisation. Despite these challenges, rigorous ROI measurement is possible. It simply requires a structured approach. ### The ROI Framework Our framework organises AI benefits and costs into five categories, each with specific metrics and measurement approaches. #### Category 1: Direct Cost Savings Direct cost savings are the most straightforward AI benefit to measure. They represent existing costs that are reduced or eliminated by AI automation. **Metrics:** * **Labour cost reduction**: Hours of manual work eliminated multiplied by the fully loaded cost per hour. For example, if AI document processing eliminates 40 hours per week of manual data entry at £25/hour (fully loaded), the annual saving is £52,000. * **Error cost reduction**: Reduction in costs associated with errors — rework, corrections, refunds, penalties — that AI automation eliminates. Measure error rates before and after AI implementation. * **Infrastructure cost reduction**: If AI replaces or consolidates existing tools, the licence and infrastructure costs of the replaced tools are a direct saving. **Measurement approach:** Establish a baseline measurement before AI deployment. Measure the same metrics 3, 6, and 12 months after deployment. Calculate the difference. **UK consideration:** Labour cost calculations should include employer's National Insurance contributions (13.8% above the threshold) and pension contributions, not just salary. #### Category 2: Productivity Gains from Machine Learning Productivity gains represent existing tasks that are completed faster with AI assistance, freeing staff time for higher-value work. **Metrics:** * **Time-to-completion**: How long does a specific task take before and after AI assistance? For example, if preparing a quarterly report takes 8 hours manually and 3 hours with AI assistance, the productivity gain is 5 hours per report. * **Throughput increase**: How many units of work can be completed in a given time period? If a customer support team handles 50 tickets per day without AI and 80 tickets per day with AI, throughput has increased by 60%. * **Quality-adjusted productivity**: If AI enables faster work but lower quality, the productivity gain must be adjusted downward. Conversely, if AI improves both speed and quality, the gain is amplified. **Measurement approach:** Time studies before and after AI deployment. Be cautious about self-reported time savings — staff tend to overestimate. Use system data (ticket resolution times, report generation timestamps) where available. #### Category 3: Revenue Impact of Generative AI Revenue impact measures how AI contributes to increased sales, customer retention, or new revenue streams. **Metrics:** * **Conversion rate improvement**: For AI-powered search, recommendations, or personalisation, measure the conversion rate before and after deployment. Use A/B testing where possible — show AI-powered experiences to a treatment group and non-AI experiences to a control group. * **Average order value (AOV)**: AI recommendations and personalisation can increase basket size. Measure AOV for customers exposed to AI-driven experiences vs those who are not. * **Customer lifetime value (CLV)**: AI-powered customer service and personalisation, including the use of virtual assistants for handling customer inquiries and support, can improve retention and customer satisfaction. Measure churn rates and CLV for AI-assisted customer segments. * **New revenue streams**: If AI enables entirely new products or services (for example, an AI-powered analytics feature sold as a premium add-on), or generative AI applications such as automated content creation or AI-driven design tools, the revenue from these new offerings is directly attributable. These metrics reflect the real world applications of artificial intelligence in driving business outcomes. **Measurement approach:** A/B testing is the gold standard for revenue impact measurement. Where A/B testing is not feasible, use before-and-after comparison with controls for seasonal and market factors. #### Category 4: Quality Improvements Quality improvements are genuine but often overlooked in ROI calculations. They reduce downstream costs and improve customer satisfaction. **Metrics:** * **Error rate reduction**: Percentage reduction in errors (data entry errors, classification errors, processing mistakes) after AI implementation. * **Consistency improvement**: Variance reduction in outputs. AI-processed documents have more consistent formatting, AI-classified tickets have more consistent categorisation. * **Compliance improvement**: Reduction in compliance violations or audit findings attributable to AI-assisted processes. **Measurement approach:** Sample-based quality audits before and after AI deployment. For compliance improvements, track audit findings and regulatory incidents. #### Category 5: Total Cost of Ownership ROI is meaningless without an accurate understanding of total cost. AI total cost of ownership includes: **Initial costs:** * **Development**: Engineering time to build, integrate, and test the AI solution. Include internal staff costs and external consultancy fees. * **Data preparation**: Time spent cleaning, labelling, and preparing training data. Preparing large amounts of data, including historical data, is often the largest hidden cost in AI projects. * **Infrastructure setup**: Cloud GPU instances, vector databases, model hosting infrastructure. Significant computing power is required to support AI model training and deployment. **Ongoing costs:** * **Compute**: Inference costs for running AI models. For cloud LLM APIs, this is a per-query cost. For self-hosted models, this is GPU instance costs. * **Maintenance**: Engineering time for model monitoring, retraining, prompt updates, and bug fixes. * **Data engineering**: Ongoing costs of maintaining data pipelines that feed AI models with current data. * **Governance**: Compliance, monitoring, and audit costs. For UK enterprises, this includes ICO data protection impact assessment (DPIA) requirements when AI processes personal data. * **Licensing**: Third-party AI service licences, API access costs, and tool licences. ### Calculating ROI With the five categories measured, the ROI calculation is straightforward: **Annual AI ROI = (Annual Benefits - Annual Costs) / Annual Costs x 100%** Where: * **Annual Benefits** = Direct Cost Savings + Productivity Gains (valued at hourly rate) + Revenue Impact + Quality Improvements (valued at avoided cost) * **Annual Costs** = Amortised Initial Costs + Ongoing Costs A positive ROI indicates that the AI investment is generating more value than it costs. Most enterprises should target a minimum 100% ROI (2:1 return) for AI investments, with a payback period of 12-18 months. ### AI Risks and Challenges While artificial intelligence AI offers transformative opportunities for UK enterprises, it also introduces a complex landscape of risks and challenges that must be carefully managed. As organisations increasingly adopt advanced AI models—ranging from deep learning and neural networks to generative AI tools—the potential for unintended consequences grows alongside the benefits. One of the most pressing concerns is the misuse of AI systems for malicious purposes. Generative AI, for example, can be harnessed to create highly convincing fake content, such as deepfakes or fabricated documents, which can be used to manipulate public opinion, perpetrate fraud, or threaten national security. Malicious bots powered by sophisticated AI algorithms are capable of launching automated cyberattacks, spreading disinformation, or disrupting business operations at scale. Bias in AI models remains a significant challenge. When training data is incomplete or reflects existing societal prejudices, the resulting AI systems can perpetuate or even amplify these biases. This is particularly problematic in applications like recruitment, lending, or law enforcement, where fairness and transparency are paramount. The complexity of deep learning models and neural networks often makes it difficult to interpret how decisions are made, leading to a lack of transparency and accountability—an issue sometimes referred to as the “black box” problem in AI research. Looking further ahead, the development of artificial general intelligence (AGI)—AI agents capable of performing a broad range of tasks at or beyond human intelligence—raises existential questions. The prospect of superintelligent machines operating beyond human control is a frequent topic in both computer science and science fiction, but it also presents real-world governance and safety challenges that enterprises cannot ignore. To address these risks, organisations must prioritise security verification throughout the AI development lifecycle. This includes rigorous penetration testing, vulnerability assessments, and ongoing monitoring to ensure that AI systems are robust against attacks and failures. AI researchers and developers should embed ethical considerations into every stage of AI development, from curating unbiased training data to designing transparent, explainable AI techniques. Enterprises should also ensure that their AI models are resilient and reliable, leveraging advanced deep learning and neural network architectures that can adapt to new data and withstand adversarial threats. Collaboration with orgs performing security verification and adherence to industry best practices are essential for maintaining trust and compliance. Ultimately, the responsible deployment of artificial intelligence solutions requires a commitment to security, transparency, and accountability. By proactively addressing these challenges, UK enterprises can harness the power of AI while safeguarding their organisations, customers, and society at large. ### UK-Specific Considerations #### HMRC R&D Tax Relief UK enterprises investing in AI development may be eligible for R&D tax relief, which can significantly improve the financial case for AI investment: * **SME R&D Relief**: Qualifying companies can claim an additional deduction of 86% of qualifying R&D expenditure, or a tax credit of up to 14.5% of the surrenderable loss. * **RDEC (Research and Development Expenditure Credit)**: For larger enterprises, RDEC provides a tax credit of 20% of qualifying R&D expenditure. AI-related activities that typically qualify include: * Developing novel AI models or algorithms. * Adapting existing AI technologies to solve problems where the solution is not readily deducible. * Building data pipelines and infrastructure specifically to support AI research. The key qualifier is **technological uncertainty** — the project must seek to advance the state of the art or resolve a technical challenge whose solution is not obvious to a competent professional in the field. Simply deploying a commercially available AI service (such as using ChatGPT for customer support) is unlikely to qualify. Developing a custom model trained on proprietary data to solve a specific business problem is more likely to qualify. **ROI impact:** Including R&D tax relief in the cost calculation can reduce the effective cost of AI development by 15-25%, significantly improving ROI. #### ICO Data Protection Considerations The Information Commissioner's Office (ICO) requires organisations to conduct a Data Protection Impact Assessment (DPIA) when deploying AI that processes personal data. This is a legal requirement under UK GDPR, not optional best practice. The cost of DPIA preparation and compliance should be included in the total cost of ownership. Typical DPIA costs include: * Internal or external legal review (£2,000-£10,000 depending on complexity). * Technical documentation of data flows and processing logic. * Ongoing monitoring and review as the AI system evolves. Failing to conduct a DPIA exposes the organisation to regulatory risk — ICO enforcement actions can result in fines of up to £17.5 million or 4% of global turnover. ### Benchmarks from UK Enterprise AI Models Deployments Based on our experience with UK enterprise AI deployments, here are typical ROI benchmarks: | Use Case | Typical ROI (Year 1) | Payback Period | |-------------------------------------------------|----------------------|----------------| | Document processing automation | 150-300% | 4-8 months | | Customer support chatbot | 80-200% | 6-12 months | | AI-powered search/discovery | 100-250% | 6-10 months | | Predictive maintenance | 200-400% | 8-14 months | | Data classification and tagging | 120-250% | 3-6 months | | Revenue optimisation (pricing, recommendations) | 150-350% | 6-12 months | These benchmarks assume competent implementation. Poorly scoped or badly executed AI projects frequently deliver negative ROI — reinforcing the importance of rigorous planning and experienced implementation partners. ### Common ROI Measurement Mistakes 1. **Measuring too early.** AI systems improve over time as they accumulate data and as prompts and models are refined. Measuring ROI in the first month will typically understate the long-term return. 2. **Ignoring total cost.** Focusing on the AI model's licence cost while ignoring data preparation, integration, maintenance, and governance costs dramatically overstates ROI. 3. **Double-counting benefits.** If AI-assisted search improves conversion rates, do not also count the resulting revenue increase as a separate benefit — it is the same benefit measured differently. 4. **Not establishing baselines.** Without a clear pre-AI baseline measurement, ROI calculations are guesswork. Establish baselines before AI deployment. 5. **Comparing against perfection.** AI does not need to be perfect to deliver ROI — it needs to be better than the current process. A chatbot that resolves 70% of queries correctly is valuable if the alternative is a 30-minute wait for a human agent. ### Taking Action Measuring AI ROI is not an academic exercise — it is a business necessity. Boards and investors expect quantified returns from AI spending, and the organisations that can demonstrate clear ROI will find it easier to secure continued and expanded AI investment. McKenna Consultants is a UK-based AI consultancy that helps enterprises plan, implement, and measure AI initiatives with rigour. Our enterprise AI strategy services include ROI framework design, baseline measurement, and ongoing performance tracking. If you are evaluating the return on your AI investments or planning new AI initiatives, [contact us](https://www.mckennaconsultants.com/contact/) to discuss how we can help. --- # Ignite 2025: What the Office Add-In Announcements Mean for Enterprise Developers **Canonical URL:** https://www.mckennaconsultants.com/ignite-2025-what-the-office-add-in-announcements-mean-for-enterprise-developers/ **Author:** Nick McKenna **Published:** 18 November 2025 **Category:** Microsoft Office Add-In Developer ## Ignite 2025: What the Office Add-In Announcements Mean for Enterprise Developers Microsoft Ignite 2025 has delivered the most significant set of announcements for Office extensibility since the introduction of the unified manifest. Held November 18-20 in Seattle, this year’s Ignite moves the conversation from “how do I build add-ins?” to “how do I build intelligent agents that live inside Microsoft 365?” For enterprise development teams that build and maintain Office add-ins, Ignite 2025 demands a strategic reassessment. The platform is evolving rapidly, and the announcements made this week will reshape development roadmaps for 2026 and beyond. These announcements impact Office add-in development across all platforms, including Windows, Mac, and web-based environments, highlighting the importance of platform compatibility and the advantages of deploying add-ins on Windows. This article provides a comprehensive analysis of the key Microsoft Ignite 2025 Office add-in announcements, what they mean for enterprise developers, and what you should be doing about them right now. ### Introduction to Office Add-Ins Office Add-Ins are powerful tools designed to extend the core functionality of Microsoft Office applications like Word, Excel, and PowerPoint. By integrating seamlessly into the familiar Office environment, these add-ins enable users to access advanced features such as data visualization, workflow automation, and custom productivity tools directly within their office documents. Whether you’re working with an Excel spreadsheet, a Word document, or a PowerPoint presentation, Office Add-Ins can help streamline tasks and unlock new capabilities. Developing Office Add-Ins involves leveraging web technologies—primarily HTML, CSS, and JavaScript—alongside the Office JavaScript API. This approach allows developers to build solutions that are both flexible and scalable, capable of running across multiple platforms and devices. Add-ins can be distributed through the Office Store or deployed directly within organizations, making it easy for users to discover and install the tools they need. For businesses looking to enhance their Microsoft Office experience, investing in developing office add ins is a strategic way to boost productivity and deliver tailored functionality to end users. --- ### Microsoft Agent 365: A New Platform Identity The headline announcement is the formal introduction of **Microsoft Agent 365** as a branded enterprise agent platform. This is not just a rebrand of Copilot plugins or a marketing wrapper — it represents a fundamental elevation of agents from a preview feature to a first-class platform with its own identity, governance model, and enterprise trust framework. Agent 365 is Microsoft’s platform for building, deploying, and managing AI-powered agents that can interact with users across Microsoft 365 applications, including: * Outlook * Word * Excel * PowerPoint * Microsoft Teams These agents can automate workflows, answer questions, and provide contextual assistance directly within the familiar Office add ins environment. #### What Is Agent 365? Agent 365 is Microsoft's platform for building, deploying, and managing AI-powered agents within the Microsoft 365 ecosystem. These agents can: * Interact with users through natural language in Microsoft 365 applications (Teams, Outlook, Word, Excel, PowerPoint). * Access organisational data through Microsoft Graph. * Execute actions across Microsoft 365 services and external systems. * Operate within enterprise governance and compliance frameworks. For Office add-in developers, Agent 365 represents both an opportunity and a challenge. The opportunity: your add-in's functionality can be exposed to a much larger audience through natural language interactions. The challenge: building agents requires different skills and architecture patterns than building traditional add-ins. #### The Governance Model Crucially, Agent 365 includes a governance model designed for enterprise deployment: * **Admin controls**: Microsoft 365 administrators can approve, restrict, and monitor agents across the organisation. * **Trust framework**: Agents are classified by trust level based on their data access, actions, and provider verification. * **Audit logging**: All agent actions are logged and auditable, meeting compliance requirements for regulated industries. * **Data boundaries**: Agents operate within the organisation's data boundary settings, respecting geographic and compliance restrictions. This governance model addresses the primary concern enterprise IT teams have had about AI agents: how do we maintain control over what agents can see and do? ### Expanded Copilot APIs Ignite 2025 introduced a significantly expanded set of Copilot APIs for developers building within the Microsoft 365 ecosystem. The Copilot APIs developer guide for 2025 now includes: Developers can find further details about the expanded Copilot APIs in the official Microsoft documentation or developer guide. #### Copilot Extensibility API The Copilot Extensibility API allows add-ins and agents to extend Copilot’s capabilities with custom skills. When a user asks Copilot a question that relates to your add-in’s domain, Copilot can invoke your skill to generate the response. For example, Excel add ins that provide financial modeling functions can retrieve data—such as historical revenue figures or market trends—and perform calculations. A Copilot skill registered by the Excel add-in could handle questions like “What would the CAGR be if revenue grew from £1M to £1.5M over 5 years?” by retrieving the relevant data and calculating the result, which Copilot would then present within the interface. #### Copilot Context API The Context API allows add-ins to provide contextual information to Copilot about the current document or application state. This enables more accurate and relevant Copilot responses when the user is working with add-in-managed data. #### Copilot Action API The Action API enables Copilot to execute actions on behalf of the user through your add-in. Instead of the user navigating to the add-in's task pane and clicking buttons, they can instruct Copilot to perform the action through natural language: “Update the financial model with Q3 actuals from the CRM.” ### Declarative Agents for Microsoft 365 Copilot Declarative agents represent a low-code approach to building Microsoft 365 Copilot agents. Rather than writing extensive code, developers declare the agent’s capabilities, data sources, and behaviours in a configuration file. Declarative agents offer a more complete approach for rapidly exposing add-in functionality to users through Copilot. #### How Declarative Agents Work A declarative agent is defined by: 1. **A manifest**: A JSON file describing the agent’s identity, capabilities, and the instructions it should follow. The manifest also includes a description of the agent’s purpose and features, helping users understand its functionality before installation. 2. **Knowledge sources**: Connections to data sources (SharePoint sites, Graph API endpoints, external APIs) that the agent can query. 3. **Actions**: Operations the agent can perform, defined as OpenAPI specifications that the agent can invoke. 4. **Instructions**: Natural language instructions that guide the agent’s behaviour, tone, and decision-making. The declarative model dramatically reduces the development effort required to create a functional agent. For enterprise teams with existing add-ins, declarative agents provide a rapid path to exposing add-in functionality through the Copilot interface. #### Relationship to Existing Add-Ins Declarative agents do not replace existing add-ins — they complement them. An add-in provides the UI components (task panes, pane add ins, custom functions, content panels) and the backend logic. A declarative agent provides a natural language interface that invokes the add-in’s capabilities through the Copilot platform. For enterprise development teams, the practical implication is that existing add-in investments are not stranded. The JavaScript APIs, task panes, and custom functions you have built continue to work. Declarative agents add a new interaction surface. ### TypeSpec Tooling for Faster Agent Development Microsoft introduced **TypeSpec** as the recommended tooling for defining agent capabilities and API contracts. TypeSpec is a language for describing APIs and data models that generates OpenAPI specifications, JSON schemas, and client libraries. Office add-ins are typically built using HTML web technologies, which can be integrated with APIs defined using TypeSpec. #### Why TypeSpec Matters Previously, developers building Copilot plugins needed to manually write OpenAPI specifications for their agent's actions. This was error-prone and time-consuming, particularly for complex APIs with many endpoints. TypeSpec provides: * **Concise syntax**: Define an API surface in fewer lines than raw OpenAPI JSON/YAML. * **Type safety**: TypeSpec validates your API definitions at authoring time, catching errors before deployment. * **Multi-output generation**: Generate OpenAPI specs, JSON schemas, and TypeScript client code from a single TypeSpec definition. * **Agent-specific decorators**: TypeSpec includes decorators specifically designed for describing agent capabilities, such as @copilotAction and @copilotKnowledge. For teams building agents with multiple actions and knowledge sources, TypeSpec significantly reduces the development and maintenance burden. ### The Enterprise Trust Framework One of the less headline-worthy but critically important Ignite announcements is the enterprise trust framework for agents. This framework defines how agents are evaluated, classified, and approved for enterprise use. Agents may require users to sign in with their account to access specific features, and account management is an important aspect of the enterprise trust framework. #### Trust Levels Agents are classified into trust levels based on: * **Data access scope**: What organisational data can the agent access? Broad access (all SharePoint sites, all mailboxes) requires higher trust than narrow access (a single document library). * **Action scope**: What can the agent do? Read-only agents require lower trust than agents that can modify data, send emails, or trigger workflows. * **Provider verification**: Is the agent built by a verified Microsoft partner, an internal IT team, or an unknown third party? Agents may also be digitally signed to verify their authenticity and increase trust. #### Implications for Add-In Developers If you are building agents for enterprise customers, the trust framework means: * Your agent should request the minimum permissions necessary (principle of least privilege). * Clearly document what data your agent accesses and what actions it can perform. * Consider obtaining Microsoft partner verification to increase your agent's trust classification. * Design your agent to operate gracefully when specific permissions are denied by the enterprise administrator. ### Add-In Ecosystem The Office Add-In ecosystem is a dynamic and collaborative space where developers, organizations, and users come together to enhance the Microsoft Office experience. At the heart of this ecosystem is the Office Store—a central marketplace where users can browse, search, and install add ins that add new features and tools to their favorite Office applications. From free add ins that simplify everyday tasks to advanced solutions for data analysis and visualization, the Office Store offers a wide variety of options to suit different business needs. Beyond the store, the ecosystem thrives on community engagement. Developers share their creations, exchange ideas, and receive feedback through online forums and dedicated Office developer communities. This continuous cycle of innovation ensures that new and improved office add ins are always being created, giving users access to the latest tools and features. To get started, users simply browse the Office Store, search for the add in they want, and install it with a few clicks—making it easier than ever to customize and enhance their Office environment. --- ### Installing and Managing Add-Ins Getting started with Office Add-Ins is a straightforward process designed for both end users and IT administrators. To install add ins, users can visit the Office Store from within their Office application, search for the desired add in, and click the “Add” or “Install” button. The add in will then be integrated into the office application, ready to provide new features and functionality. Alternatively, organizations can deploy add ins directly from a developer’s website or through centralized IT management tools, ensuring that the right solutions are available to the right users. Managing installed add ins is just as simple. Within each Office application, users can access the “My Add-Ins” page to view, update, or remove their installed add ins. This page also allows users to configure add in settings, such as permissions and data access, to tailor the experience to their specific needs. With intuitive search and management tools, users and administrators can maintain control over their office add environment, ensuring that only trusted and relevant add ins are active within their organization. --- ### Add-In Testing and Debugging Ensuring the reliability and performance of Office Add-Ins is critical for delivering a seamless user experience. Developers have access to a robust set of tools for testing and debugging their add ins, including the Office JavaScript API, Visual Studio Code, and the Office Add-In Debugger. These tools make it easy to write, test, and refine code, helping developers identify and resolve issues before deployment. By simulating different usage scenarios and leveraging built-in debugging features, developers can validate that their office add ins work as intended across various Office applications and environments. Online resources such as the Office Dev Center provide additional guidance, code samples, and best practices for troubleshooting and optimizing add in functionality. Thorough testing and debugging not only improve the quality of the final product but also build user trust in the reliability of office add solutions. --- ### Add-In Support and Maintenance Ongoing support and maintenance are essential for the long-term success of any Office Add-In. Developers should provide clear documentation, responsive support channels, and regular updates to address user feedback and evolving business needs. Tools for monitoring usage and gathering analytics can help identify areas for improvement, ensuring that the add in continues to deliver value and functionality over time. Users play a vital role in this process by reporting issues, suggesting enhancements, and sharing their experiences. By fostering open communication and prioritizing user support, developers can build lasting relationships and maintain a high standard of quality for their office add ins. Continuous maintenance not only keeps add ins compatible with the latest Office updates but also ensures that they remain secure, efficient, and aligned with user expectations. ### What Enterprise Developers Should Do Now The Ignite 2025 announcements are forward-looking, but they require action now. Here is what enterprise development teams should prioritise: Effective project management is essential for implementing the Ignite 2025 recommendations and ensuring successful adoption of new Office add-in capabilities. #### 1. Inventory Your Add-In Capabilities Map out what your existing add-ins do — the functions they provide, the data they access, the actions they perform. This inventory is the foundation for determining which capabilities to expose through agents. #### 2. Evaluate Declarative Agent Opportunities For each add-in capability, assess whether it would benefit from a natural language interface. High-value targets include: * Functions that users access frequently but require navigating to a task pane. * Data retrieval operations (looking up customer records, checking status, generating reports). * Multi-step workflows that could be simplified through conversational interaction. Note-taking add-ins, such as those for Microsoft OneNote, are also strong candidates for natural language interfaces, as they can enhance the process of creating, organizing, and managing notes through conversational tools. #### 3. Learn TypeSpec Invest time in TypeSpec now. It is the recommended tooling for agent development, and proficiency with it will accelerate your team’s ability to build and iterate on agents. Microsoft’s TypeSpec documentation includes Copilot-specific tutorials. To accelerate your learning, review the following samples provided in the TypeSpec documentation, which demonstrate practical implementations relevant to office add ins development. #### 4. Review Your Permission Model Evaluate the permissions your add-ins request in the context of the enterprise trust framework. If your add-in requests broader permissions than it strictly needs, now is the time to tighten them. This will make the transition to agents smoother and increase enterprise adoption. #### 5. Plan Your 2026 Roadmap The Ignite announcements should directly inform your 2026 development roadmap. Key planning decisions include: * Which add-in capabilities to expose as agent actions in H1 2026. * Whether to adopt declarative agents (low-code, faster to ship) or build full custom agents (more control, higher investment). * How to integrate with the expanded Copilot APIs. * Training and hiring needs for agent development skills. To streamline the planning and documentation of your 2026 development roadmap, consider using templates as pre-designed, customizable resources that facilitate efficient collaboration and organization. ### McKenna Consultants' Perspective At McKenna Consultants, we have been building Microsoft Office add-ins for over a decade. The Ignite 2025 announcements represent the most significant platform shift since the move from COM/VSTO, including VSTO add ins, to web add-ins. Our view is pragmatic: existing add-in investments are not obsolete. They are the foundation on which agents are built. The organisations that will benefit most from Agent 365 are those with well-architected add-ins that can be extended with agent capabilities, not those starting from scratch. If you need help evaluating your add-in portfolio against the Ignite 2025 announcements, or want to start building agents for your enterprise, [contact us](https://www.mckennaconsultants.com/contact/) to discuss your requirements. --- # Composable Commerce: Managing International Catalogues and Pricing with Elastic Path in Multi-Market B2B Commerce **Canonical URL:** https://www.mckennaconsultants.com/multi-market-b2b-commerce-managing-international-catalogues-and-pricing-with-elastic-path/ **Author:** Nick McKenna **Published:** 11 November 2025 **Category:** B2B eCommerce ## Multi-Market B2B Commerce: Managing International Catalogues and Pricing with Elastic Path and Composable Commerce Platforms Expanding a B2B ecommerce operation from a single domestic market to multiple international markets is one of the most complex challenges in digital commerce. The operational surface area increases exponentially: multiple currencies, locale-specific product assortments, regional tax regimes, contract pricing that varies by market, content localisation, and regulatory compliance across jurisdictions. Before diving into solutions, it's important to understand the key concepts of composable commerce. Grasping these foundational ideas is essential for decision makers and teams planning international expansion, as they clarify how composable commerce differs from traditional approaches and why it offers greater flexibility. For enterprises that have adopted composable commerce domestically and are now expanding internationally, the architecture choices made during initial implementation have a profound impact on how difficult — or straightforward — that international expansion will be. In contrast to legacy architecture and monolithic platforms, which are often rigid, costly to update, and slow to adapt, composable commerce provides a more agile and scalable foundation for growth. This guide covers the practical challenges of multi-market B2B ecommerce with composable architecture, with specific attention to how Elastic Path’s platform addresses the catalogue management, pricing, and localisation requirements of international B2B operations. Composable technology enables a modular and flexible approach to international expansion, allowing businesses to incrementally upgrade or replace components as needed. The development approach taken during initial implementation will directly impact future scalability and adaptability. Decision makers must carefully assess whether the chosen architecture aligns with their business needs and long-term goals. ### Why Multi-Market B2B Is Harder Than B2C B2C international expansion is challenging, but B2B adds layers of complexity that B2C does not face: **Contract pricing.** B2B customers typically negotiate pricing agreements specific to their organisation, volume commitments, and contract terms. These agreements vary by market and by business industry—a customer’s UK contract pricing may differ from their German contract pricing due to logistics costs, local competition, market conditions, and industry-specific requirements. **Tiered pricing.** Beyond contract-level pricing, B2B catalogues often feature tiered pricing structures where unit price decreases as order volume increases. These tiers may vary by market based on local supply chain economics. **Tax complexity.** B2C tax is relatively uniform within a jurisdiction. B2B tax involves reverse charges, exemption certificates, intra-community supply rules (for EU trade), and the interaction between VAT, GST, and sales tax across different jurisdictions. **Catalogue variations.** Not every product is available in every market. Regulatory restrictions, import limitations, local certifications, and market-specific product variants all require market-specific catalogue management. **Approval workflows.** B2B purchasing often involves approval chains that may have different requirements in different markets — budget thresholds in local currency, different approver hierarchies, and locale-specific compliance checks. ### Benefits of Using a Composable Commerce Platform In today’s fast-evolving electronic commerce landscape, businesses face increasing pressure to deliver seamless, personalized experiences across every digital channel. Composable commerce platforms have emerged as a transformative solution, empowering companies to build a flexible and modular e-commerce infrastructure that adapts rapidly to shifting customer demands and market trends. One of the standout benefits of composable commerce architecture is its modular nature. By leveraging composable commerce solutions, businesses can assemble their digital commerce stack from best-of-breed packaged business capabilities (PBCs), such as payment gateways, content management systems, and customer data platforms. This approach allows organizations to select and integrate only the specific services that align with their unique business needs, rather than being constrained by the limitations of traditional monolithic e commerce platforms. Composable commerce platforms enable unified commerce by seamlessly connecting online stores, mobile apps, and social media apps, ensuring a consistent and engaging customer experience across all digital channels. This flexibility is especially valuable for companies in the consumer packaged goods sector, where the ability to launch direct-to-consumer (DTC) channels and respond quickly to changing customer preferences is critical. By enabling businesses to gather real-time customer insights and deliver highly differentiated experiences, composable commerce offers a powerful way to attract customers, drive loyalty, and increase online sales. For e commerce businesses looking to scale, composable commerce architecture provides a future-proof foundation. The scalable and adaptable e commerce infrastructure supports growing online purchases and expanding operations, allowing businesses to add new capabilities or enter new markets without the risk of vendor lock-in or the constraints of legacy platforms. This agility is essential for staying ahead of ecommerce trends and meeting rising customer expectations. Moreover, composable commerce platforms streamline e commerce operations by allowing businesses to update or replace individual software components without disrupting the entire process. This not only reduces operational risk but also accelerates digital transformation initiatives, enabling businesses to innovate and respond to new opportunities faster than ever before. In summary, the benefits of composable commerce include enhanced flexibility, scalability, and business agility, as well as the ability to deliver exceptional customer experiences across all digital channels. As the e commerce industry continues to evolve, adopting composable commerce solutions positions businesses to capitalize on growth opportunities, meet the demands of modern consumers, and maintain a competitive edge in the digital marketplace. ### Catalogue Management Strategies Managing product catalogues across multiple markets requires a clear strategy. Catalogue management is a crucial part of the broader software ecosystem in composable commerce, where modular components work together to deliver flexible and scalable eCommerce solutions. There are two primary approaches, each with trade-offs. **Approach 1: Overlaying a new catalogue on top of the existing one**\ This method allows you to add market-specific products or pricing without duplicating the entire catalogue. Seamless integration between the catalogue overlay and other systems is essential to maintain consistency and ensure smooth operations across all channels. **Approach 2: Synchronising catalogues between systems**\ This approach involves keeping catalogues in sync across different platforms or regions. Synchronisation often relies on application programming interface (API) connections, which enable reliable data exchange and consistency between systems. Both approaches benefit from composable technology, which allows businesses to adapt their catalogue management strategies as their needs evolve. #### Approach 1: Single Global Catalogue with Market Overlays Maintain a single master product catalogue and apply market-specific overlays for localisation, pricing, and availability: * **Master catalogue**: Contains all products with base attributes (dimensions, materials, technical specifications) that are consistent globally. * **Market overlays**: Each market has an overlay that modifies or extends the base catalogue — localised descriptions, market-specific pricing, availability flags, and regulatory compliance data. Elastic Path's Product Experience Management (PXM) supports this pattern through its hierarchical catalogue structure. You define a base catalogue and create market-specific catalogues that inherit from and override the base. **Advantages:** * Single source of truth for product data. * Changes to base attributes (specifications, images) propagate to all markets automatically. * Easier to maintain consistency across markets. **Disadvantages:** * Overlay management becomes complex as the number of markets grows. * Market-specific attributes must be carefully modelled to avoid conflicts with the base. #### Approach 2: Separate Catalogues per Market Create independent catalogues for each market, with synchronisation tooling to keep shared data consistent: * Each market catalogue is a standalone entity with its own product set, attributes, and pricing. * A synchronisation layer copies base product data from a master source and applies market-specific transformations. **Advantages:** * Maximum flexibility for market-specific product assortments. * No risk of base catalogue changes inadvertently affecting a specific market. * Markets can operate independently — useful when local teams manage their own catalogues. **Disadvantages:** * Synchronisation adds complexity and potential for data drift. * Changes to shared product data must be propagated manually or through automation. * Higher operational overhead. #### Our Recommendation For most B2B enterprises, Approach 1 (single catalogue with overlays) is the better starting point. It reduces data duplication and ensures consistency, which is critical in B2B where product specifications must be accurate across all markets. Approach 2 is appropriate when markets have fundamentally different product assortments with minimal overlap. ### Multi-Currency and International Pricing Pricing is the most operationally complex aspect of multi-market B2B commerce. Digital commerce platforms must support complex pricing models for international ecommerce business, ensuring flexibility and scalability as companies expand globally. Elastic Path provides the primitives — price books, currencies, and customer-specific pricing — but the business rules that drive international pricing require careful architecture. Additionally, integrating with multiple payment providers is often necessary to support diverse market requirements and offer customers a variety of secure payment options. #### Price Books and Currency Management Elastic Path's price book model allows you to define multiple price books, each with its own currency and pricing rules. A common pattern for international B2B: * **Global base price book**: Prices in a reference currency (typically GBP or USD) that serve as the baseline. * **Market-specific price books**: Prices in local currency for each market, derived from the base price book with adjustments for logistics, local costs, and competitive positioning. * **Customer-specific price books**: Contract pricing for individual customer accounts, expressed in the customer's trading currency. The price book hierarchy determines which price applies: customer-specific overrides market-specific, which overrides the global base. #### Contract Pricing Across Regions B2B contract pricing in a multi-market context involves several dimensions: * **Base price by market**: The list price for the product in a specific market's currency. * **Customer discount**: A percentage or fixed discount negotiated with the customer. * **Volume tiers**: Unit price reductions at specified order quantity thresholds. * **Promotional pricing**: Time-limited offers that may be market-specific or global. Elastic Path's pricing API handles these layers through its price book stacking capability. The frontend presents the resolved price to the customer — the single price that accounts for all applicable rules. #### Currency Conversion and Exchange Rates For enterprises that maintain prices in a reference currency and convert to local currencies, exchange rate management is critical: * **Fixed rates vs dynamic rates**: B2B contracts often specify a fixed exchange rate for the contract period. Dynamic rate conversion is used for non-contracted purchases. * **Rate update frequency**: How often are exchange rates refreshed? Daily is standard for most B2B operations. * **Rounding rules**: Different markets have different conventions for price rounding. The pricing engine must respect locale-specific rounding rules. ### Tax Calculation Integration for E Commerce Tax in international B2B commerce is a domain in itself. Unlike legacy systems that often have hard-coded tax logic and limited flexibility, the composable approach to tax is to integrate a specialised tax calculation service rather than attempting to implement tax logic within the commerce platform. By leveraging new technologies, businesses can achieve more flexible and accurate tax calculation, adapting quickly to changing regulations and market demands. #### VAT, GST, and Sales Tax Different jurisdictions use different tax models: * **VAT (Value Added Tax)**: Used across the EU and UK. B2B transactions between VAT-registered businesses in different EU countries typically apply the reverse charge mechanism — no VAT is charged by the seller; the buyer accounts for VAT in their own tax return. * **GST (Goods and Services Tax)**: Used in Australia, India, Singapore, and other markets. Similar to VAT but with jurisdiction-specific rates and rules. * **Sales tax**: Used in the US. Applied at the point of sale with rates varying by state, county, and even city. #### Tax Service Integration Pattern In a composable architecture, the commerce platform delegates tax calculation to a dedicated service: 1. At checkout, the commerce platform sends the order details (items, quantities, ship-from, ship-to, customer tax status) to the tax service. 2. The tax service calculates the applicable tax for each line item based on the jurisdictional rules. 3. The calculated tax is returned to the commerce platform and included in the order total. Leading tax calculation services (Avalara, Vertex, TaxJar) provide APIs that integrate cleanly with Elastic Path's API-first architecture. The key is ensuring that the integration handles B2B-specific scenarios: reverse charges, exemption certificates, and intra-community supply documentation. ### Content Localisation Patterns with Content Management Systems Product content — descriptions, specifications, marketing copy, images — must be localised for each market. Localising digital storefronts and the online store experience is essential to reach customers in each market, ensuring that your eCommerce platform resonates with local preferences and expectations. In a composable architecture, content localisation typically involves the headless CMS and the product catalogue working together: #### Product Content Localisation * **Translatable attributes in PXM**: Product descriptions, names, and marketing copy are stored as locale-specific variants within the product catalogue. * **CMS-managed rich content**: Longer-form content (buying guides, comparison pages, landing pages) is managed in the headless CMS with locale-specific versions. * **Image localisation**: Some markets require localised images — different packaging photography, locale-specific regulatory labels, or culturally appropriate lifestyle imagery. #### Locale Detection and Routing The frontend must determine which locale to present: * **IP-based geolocation**: Detect the user's country from their IP address and present the appropriate locale. * **Browser language**: Use the browser's language preference as a signal. * **Explicit selection**: Allow users to choose their market/language combination. * **URL structure**: Use locale-prefixed URLs (/de/products/, /fr/products/) for SEO and clarity. ### Deployment Architecture for Multi-Market A multi-market composable commerce deployment requires decisions about how the infrastructure serves different markets. The right deployment architecture depends on the organization's digital maturity, as more digitally mature businesses are better equipped to manage complex, microservices-based solutions. Additionally, supporting mobile devices is a key consideration in deployment planning, since a significant portion of users access ecommerce platforms via smartphones and tablets. #### Single Instance, Multi-Locale Deploy a single instance of the commerce platform and frontend that serves all markets. Market-specific behaviour is driven by configuration (price books, catalogues, locale settings) rather than separate deployments. **Advantages**: Lower infrastructure cost, simpler deployment pipeline, consistent codebase. **Best for**: Markets with similar requirements and shared product catalogues. #### Multi-Instance Deploy separate instances of the commerce platform for each market or region. Each instance has its own catalogue, pricing, and configuration. **Advantages**: Maximum isolation between markets, ability to customise deeply per market. **Best for**: Markets with fundamentally different requirements or regulatory constraints. For most B2B enterprises, the single instance approach with Elastic Path's multi-locale and multi-price-book capabilities provides sufficient flexibility while keeping operational complexity manageable. ### Getting Started with International Expansion For B2B enterprises running composable commerce domestically and planning international expansion, we recommend the following approach. Expanding internationally enables you to attract potential customers by launching new eCommerce stores tailored to each target market: 1. **Audit your data model**: Ensure your product catalogue supports locale-specific attributes and multiple price books. 2. **Choose your tax strategy**: Select and integrate a tax calculation service that covers your target markets. 3. **Define your catalogue strategy**: Decide between single catalogue with overlays or separate catalogues per market. 4. **Plan your pricing architecture**: Map out the price book hierarchy that handles base, market, customer, and promotional pricing. 5. **Localise incrementally**: Start with one new market, validate the architecture, then expand. McKenna Consultants has extensive experience with Elastic Path implementations and multi-market B2B commerce architecture. If you are planning international expansion on a composable commerce platform, [contact us](https://www.mckennaconsultants.com/contact/) to discuss your requirements. ### About Nick McKenna Nick McKenna is the CEO and founder of McKenna Consultants. With over 27 years of programming experience and a First Class Honours degree in Computer Science, Nick leads the company's technical strategy and client engagements. [Learn more about our team](https://www.mckennaconsultants.com/about/) --- # Small vs Large Language Model: Choosing the Right AI for Your Enterprise **Canonical URL:** https://www.mckennaconsultants.com/small-language-models-vs-large-language-models-choosing-the-right-ai-for-your-enterprise/ **Author:** Nick McKenna **Published:** 28 October 2025 **Category:** Artificial Intelligence ## Small Language Models vs Large Language Models: Choosing the Right AI for Your Enterprise Every enterprise evaluating AI faces a fundamental question: what size of model do we need? The instinct is to reach for the largest, most capable model available — GPT-4, Claude, Gemini Ultra — on the assumption that bigger is always better. But in practice, choosing the right model is an engineering and business decision with profound implications for cost, performance, privacy, and operational complexity. Small language models (SLMs) — models with fewer than 13 billion parameters, such as Microsoft’s Phi-3, Mistral 7B, Meta’s Llama 3 8B, and Google’s Gemma — have reached a level of capability that makes them viable for a wide range of enterprise use cases. Understanding when an SLM is sufficient and when a large language model (LLM) is necessary is one of the most important decisions in enterprise AI strategy. The development of language models is rooted in computer science, which provides the theoretical and technical foundation for advances in AI. This guide provides a practical framework for making that decision. ### Defining the Spectrum of Neural Networks The distinction between small and large language models is not binary — it is a spectrum: | Category | Parameter Range | Examples | Typical Deployment | |------------------------|-----------------------|-----------------------------------------------------|---------------------------------------| | Small Language Models | 1B – 13B | Phi-3 Mini (3.8B), Mistral 7B, Llama 3 8B, Gemma 7B | On-premises, edge, local GPU | | Medium Language Models | 13B – 70B | Llama 3 70B, Mixtral 8x7B, Qwen 72B | Private cloud, dedicated GPU clusters | | Large Language Models | 70B+ (or proprietary) | GPT-4, Claude, Gemini Ultra | Cloud API | Each step up the spectrum brings greater capability but also greater cost, latency, infrastructure requirements, and operational complexity. Deploying and customizing language models often involves using programming languages such as Python, which are widely adopted in AI development. ### Techniques Behind Language Models: Deep Learning and Neural Networks Modern language models are built on the foundation of deep learning and neural networks, two pillars of artificial intelligence that have transformed how machines process and generate human language. These AI models are designed to understand, interpret, and generate natural language by learning from vast amounts of training data, enabling them to perform a wide range of language tasks with remarkable fluency. At the core of these systems are artificial neural networks—computational structures inspired by the human brain. Much like the brain’s network of neurons, artificial neural networks consist of interconnected nodes arranged in layers. This deep architecture allows language models to capture intricate patterns, semantic meaning, and relationships within complex data, making them highly effective for natural language processing. Deep learning models come in several forms, but two architectures stand out in the evolution of language models: recurrent neural networks (RNNs) and transformer models. RNNs are adept at handling sequential data, such as sentences or paragraphs, by maintaining context across sequences—an essential capability for understanding human language. However, the real breakthrough in generative AI came with transformer models, which use self-attention mechanisms to analyze the importance of each word in a sentence relative to others. This enables transformer-based language models to generate text that is contextually accurate and human-like, even for complex tasks such as language translation or summarization. The training process for these AI models involves exposing them to massive datasets—ranging from books and articles to code samples and other forms of unstructured data. Through supervised learning, the models learn to predict the next word or phrase, gradually improving their ability to generate coherent and relevant responses. This process requires significant computational resources, as deep neural networks with billions of parameters must be optimized for both accuracy and efficiency. Generative AI tools powered by these language models are now integral to enterprise AI applications. From virtual assistants and chatbots that handle customer queries, to AI agents that automate document processing or analyze user data, the versatility of these models is driving digital transformation across industries. Enterprises can further enhance model performance by fine-tuning language models for specific tasks, such as sentiment analysis, code generation, or solving math problems, ensuring that AI systems are tailored to their unique requirements. Despite their capabilities, language models face ongoing challenges. Ensuring fairness and minimizing bias in model outputs is a priority for AI researchers, as models can inadvertently reflect biases present in their training data. Additionally, the energy consumption and infrastructure demands of training and deploying large-scale deep learning models are significant considerations for enterprises. Looking ahead, the field of AI research is rapidly advancing, with a growing focus on multimodal models that can process and generate not just text, but also images, audio, and other data types. These innovations promise to unlock new generative AI capabilities, enabling even more sophisticated AI tools for enterprise use. By leveraging the latest advances in deep learning, neural networks, and natural language processing, organizations can harness the full potential of artificial intelligence to automate complex tasks, generate human-like text, and drive meaningful business outcomes. As AI technologies continue to evolve, partnering with experienced consultants like McKenna Consultants ensures that your enterprise stays at the forefront of AI development and digital transformation. ### Capability Trade-Offs #### Where Large Language Models Excel Large language models (LLMs) are foundational to many generative AI models, powering advanced applications across industries. LLMs have clear advantages in tasks that require: * **Complex reasoning**: Multi-step logical reasoning, mathematical proofs, and nuanced analysis of ambiguous scenarios. * **Broad knowledge**: Questions spanning diverse domains where the model needs extensive training data, as seen in many generative AI models. * **Creative generation**: Generative AI models, powered by large language models (LLMs), are capable of producing high-quality, varied, and contextually appropriate creative content. * **Instruction following**: Large language models (LLMs) excel at generating responses to complex, multi-part instructions without fine-tuning. * **Multilingual capability**: High-quality performance across many languages, particularly for less common languages. #### Where Small Language Models Are Sufficient SLMs can match or approach LLM performance for: * **Classification tasks**: Categorising documents, emails, support tickets, or transactions into predefined categories. * **Extraction tasks**: Pulling structured data from unstructured text — names, dates, amounts, product codes. * **Summarisation**: Generating concise summaries of documents, meeting notes, or customer interactions. * **Narrow-domain Q&A**: Answering questions within a specific, well-defined knowledge domain (when combined with RAG). * **Code completion**: Suggesting code completions and snippets for common programming patterns. * **Sentiment analysis**: Determining the sentiment of customer feedback, reviews, or social media posts. Unlike traditional software, which must be explicitly programmed for each task, SLMs learn to perform tasks by training on relevant data. The critical insight is that many enterprise AI use cases fall into the “sufficient” category. A customer support chatbot that classifies queries and retrieves relevant knowledge base articles does not need the reasoning capability of GPT-4. A document processing pipeline that extracts invoice data does not need broad world knowledge. ### Cost Implications The cost difference between SLMs and LLMs is not marginal — it is often 10x to 100x: | Deployment | Approximate Cost per Million Tokens | |---------------------------|-------------------------------------| | GPT-4 (cloud API) | £20 – £50 | | Claude Sonnet (cloud API) | £8 – £20 | | Llama 3 70B (self-hosted) | £2 – £5 | | Mistral 7B (self-hosted) | £0.20 – £0.50 | | Phi-3 Mini (self-hosted) | £0.10 – £0.30 | For an enterprise processing millions of documents, emails, or transactions per month, the cost difference between running Phi-3 Mini on-premises and calling GPT-4 via API is substantial. This is not a theoretical concern — it directly impacts AI ROI. The cost calculation also includes infrastructure. Self-hosted SLMs require GPU hardware (or cloud GPU instances), but a single NVIDIA A100 can serve a 7B model with high throughput. LLM-grade infrastructure requires multiple high-end GPUs and significantly more operational overhead. ### Latency Requirements For real-time applications — chatbots, autocomplete, in-application AI features — latency matters as much as accuracy. These applications require rapid processing of user inputs to maintain a seamless experience. SLMs have a fundamental advantage: * A 7B parameter model running on a single GPU can generate tokens at 50-100+ tokens per second. * A 70B+ model requires more computation per token, resulting in higher latency even on premium hardware. * Cloud API calls to LLMs add network latency on top of generation time. For applications where response time directly impacts user experience — such as an Office add-in that summarises a document while the user waits, or an ecommerce search that needs sub-second results — SLMs may provide a better user experience despite lower raw capability. ### Data Privacy Considerations Data privacy is often the decisive factor for enterprises in regulated industries — financial services, healthcare, legal, and government. The key question is: where does the data go? Responsible data collection practices are essential for maintaining privacy and meeting regulatory requirements in enterprise AI deployments. #### Cloud LLM APIs When using GPT-4, Claude, or other cloud LLM APIs, the enterprise's data is sent to the provider's servers for processing. Even with contractual assurances about data handling, this creates a compliance surface: * Data leaves the enterprise's network perimeter. * The processing location may be outside the enterprise's jurisdiction (relevant for UK GDPR, data residency requirements). * The enterprise must trust the provider's security and data handling practices. #### On-Premises SLM Deployment SLMs are small enough to deploy on enterprise-owned hardware. This means: * Data never leaves the enterprise's network. * Processing occurs within the enterprise's jurisdiction. * The enterprise has full control over the hardware, software, and data lifecycle. For use cases involving personally identifiable information (PII), financial data, legal documents, or health records, on-premises SLM deployment may be the only viable approach. ### Fine-Tuning vs Prompting A key architectural decision is whether to use a model as-is with prompt engineering, or to fine-tune it on domain-specific data. Incorporating human feedback during fine-tuning can help improve the accuracy and relevance of large language model outputs. #### Prompting Large Models LLMs are designed to be used with prompt engineering. Few-shot examples, system prompts, and retrieval-augmented generation (RAG) can steer a general-purpose LLM to perform well on specific tasks without any model modification. Advantages: * No training infrastructure required. * Rapid iteration — change the prompt, get different behaviour. * Access to the model’s full general knowledge. Disadvantages: * Ongoing per-query cost for API-based models. * Less consistent output than a fine-tuned model. * Prompt engineering can be fragile — small changes in prompt wording may significantly affect output quality. LLMs are increasingly integrated into AI search solutions, powering features like contextual answers and AI-generated summaries that enhance user experience in enterprise and consumer applications. #### Fine-Tuning Small Models SLMs can be fine-tuned on domain-specific data to achieve performance that rivals or exceeds LLMs for specific tasks. Fine-tuning involves training the model on examples of the specific task you want it to perform. Advantages: * Dramatically lower per-query cost after fine-tuning. * More consistent, predictable outputs for the target task. * The model can learn domain-specific terminology, formats, and patterns. * Fine-tuned SLMs can be tailored to analyze data from specific domains, such as sensor or IoT data, for targeted enterprise applications. * Runs on-premises with full data privacy. Disadvantages: * Requires labelled training data (typically hundreds to thousands of examples). * Fine-tuning infrastructure and expertise. * The model loses some general capability — it becomes specialised. * Model must be retrained when requirements change. #### The Practical Trade-Off The decision often comes down to volume. For low-volume use cases (a few hundred queries per day), prompting an LLM via API is simpler and cheaper than fine-tuning and hosting an SLM. For high-volume use cases (thousands or millions of queries per day), fine-tuning an SLM delivers dramatically better economics. ### A Decision Framework When evaluating small language models vs large language models for an enterprise use case, we recommend working through the following criteria. This framework is designed to help enterprises select the most suitable AI algorithms and models for their unique requirements, ensuring that the chosen solution aligns with business goals and technical constraints. #### 1. Task Complexity * Does the task require multi-step reasoning? → LLM (LLMs are capable of exhibiting intelligent behavior when handling complex, multi-step logical tasks.) * Is the task classification, extraction, or summarisation? → SLM likely sufficient * Does the task require creative, varied output? → LLM * Is the task narrow and well-defined? → SLM with fine-tuning #### 2. Data Privacy * Does the data contain PII, financial, or health information? → On-premises SLM strongly preferred * Is data residency within the UK required? → On-premises SLM or UK-hosted API * Is the data non-sensitive? → Cloud LLM API acceptable Deploying AI systems for data privacy can also minimize the need for human intervention in sensitive data handling processes, helping to maintain compliance and reduce the risk of human error. #### 3. Volume and Cost * Fewer than 1,000 queries per day? → Cloud LLM API is simpler * More than 10,000 queries per day? → SLM cost advantage becomes significant. SLMs can efficiently process large volumes of numerical data, making them ideal for data-intensive enterprise applications. * More than 100,000 queries per day? → SLM is almost certainly the right choice #### 4. Latency * Real-time user-facing application? → SLM or dedicated LLM instance * Batch processing (reports, document analysis)? → LLM API is acceptable * Edge or mobile deployment? → SLM only Both SLMs and LLMs can also be leveraged for other tasks that require either real-time or batch processing, depending on enterprise needs. #### 5. Available Expertise * Do you have ML engineering capability? → Fine-tuned SLM is viable * Is your team primarily application developers? → Cloud LLM API with prompt engineering is more accessible ### SLM Enterprise Use Cases To make this concrete, here are enterprise use cases where small language models deliver excellent results: * **Email triage**: Classifying incoming emails by department, urgency, and type. A fine-tuned 7B model handles this with >95% accuracy. * **Invoice processing**: Extracting vendor name, invoice number, line items, and totals from PDF invoices. * **Customer feedback analysis**: Categorising and summarising customer feedback across multiple channels. * **Internal knowledge search**: Powering a RAG-based Q&A system over internal documentation using a locally hosted SLM. * **Code review assistance**: Flagging potential issues in code changes, suggesting improvements, and checking against coding standards. In addition to these, small language models (SLMs) can be applied to computer vision tasks such as defect detection and visual data analysis. Both SLMs and large language models (LLMs) are built on deep neural networks and artificial neural networks, which enable advanced pattern recognition across text and visual domains. Many modern language models are based on architectures called transformer models, with the transformer model serving as the foundation for generative AI. Generative AI applications, powered by these models, are transforming industries by automating content creation, data analysis, and more. Ultimately, the goal of artificial intelligence is to replicate aspects of human intelligence, enabling machines to solve complex problems and adapt to new challenges. ### Getting the Decision Right The choice between small language models and large language models is not a one-time decision — it is an architectural pattern that should be evaluated for each use case within your AI strategy. Many enterprises will use both: LLMs for complex, low-volume tasks and SLMs for high-volume, privacy-sensitive, or latency-critical applications. McKenna Consultants is a UK-based AI consultancy that helps enterprises make these decisions with rigour. We evaluate your use cases, prototype with different model sizes, benchmark performance and cost, and recommend the architecture that delivers the best return on your AI investment. If you are evaluating AI model deployment for your enterprise, [contact us](https://www.mckennaconsultants.com/contact/) to discuss your requirements. --- # Artificial Intelligence-Driven Personalisation in Composable Commerce: Beyond Product Recommendations **Canonical URL:** https://www.mckennaconsultants.com/ai-driven-personalisation-in-composable-commerce-beyond-product-recommendations/ **Author:** Nick McKenna **Published:** 21 October 2025 **Category:** B2B eCommerce ## AI-Driven Personalisation in Composable Commerce: Beyond Product Recommendations The phrase “customers who bought this also bought” is two decades old. Product recommendation engines were among the earliest commercial applications of machine learning, and they remain valuable. But in 2025, reducing AI-driven personalisation to product recommendations is like reducing a smartphone to a telephone. The technology has moved far beyond its original application. AI research has driven the evolution of personalisation techniques, enabling far more sophisticated and context-aware experiences than early recommendation engines could provide. For enterprises running composable commerce architectures — particularly those built on Elastic Path — AI personalisation now spans the entire customer journey: from how products are discovered through AI-powered search, to how prices are optimised in real time, to how content is merchandised for individual visitors, to how conversational AI assistants guide buyers through complex purchasing decisions. Capabilities that were once the domain of science fiction are now being realized in composable commerce through advanced artificial intelligence. This article explores how AI capabilities are transforming personalisation within composable commerce architectures and the integration patterns that make it work. ### Why Composable Commerce Is Uniquely Suited to AI Personalisation Monolithic commerce platforms, often referred to as legacy platforms, bundle everything — search, recommendations, pricing, content — into a single system. These legacy platforms can hinder growth and adaptability in today’s evolving e-commerce landscape. Adding AI personalisation typically means working within the platform’s constraints: limited model choices, restricted data access, and rigid integration points. Traditional ecommerce platforms also face challenges in meeting modern security and compliance standards, making it harder to implement advanced features securely. Composable commerce architectures take the opposite approach. Each capability is a separate, API-first service that can be independently selected, deployed, and evolved. This modularity is precisely what AI personalisation requires, because: * **Model flexibility**: You can choose the best AI model for each personalisation use case rather than accepting a platform vendor’s built-in model. * **Data access**: API-first architecture makes it straightforward to feed AI models with data from across the commerce ecosystem — catalogue data from Elastic Path’s PXM (Product Experience Management), behavioural data from analytics services, CRM data from customer platforms. * **Rapid iteration**: AI models improve through experimentation. Composable architecture allows you to swap, test, and update personalisation services without touching the rest of the commerce stack. ### AI-Powered Search: From Keywords to Understanding Traditional ecommerce search is keyword-based. A customer types “blue running shoes size 10” and the search engine matches those tokens against product attributes. The approach works for specific queries but fails badly for exploratory or natural language queries. AI-powered search engines analyze data from both user queries and product catalogs to improve the relevance and accuracy of search results. AI-powered search using embedding models and large language models transforms this experience by understanding and processing human language, enabling the system to interpret intent and context far beyond simple keyword matching. #### Semantic Search Semantic search uses embedding models to understand the meaning behind a query, not just the words. When a customer searches for “something to keep my laptop dry on my commute,” a semantic search engine understands the intent and returns waterproof laptop bags and sleeves — even though none of those keywords appear in the query. In a composable architecture, implementing semantic search involves: 1. **Embedding generation**: Processing the product catalogue through an embedding model to create vector representations of each product. These embeddings capture the semantic meaning of product descriptions, attributes, and categories, and enable the detection of complex patterns in product data. 2. **Vector storage**: Storing the embeddings in a vector database (such as Pinecone, Weaviate, or Azure AI Search) that supports similarity search. 3. **Query processing**: Converting the customer’s search query into an embedding and finding the most similar product embeddings. Embedding models can identify complex patterns in customer queries, allowing for more accurate matching with relevant products. 4. **Result ranking**: Combining semantic similarity scores with business rules (stock availability, margin, promotional priority) to produce the final ranked results. The composable architecture means the search service connects to Elastic Path’s product catalogue via API, processes it independently, and returns results that the frontend renders. The search service can be updated, retrained, or even replaced without modifying the commerce platform. Semantic search has real-world applications in eCommerce, improving product discovery and customer satisfaction by delivering more relevant search results. #### Conversational Commerce Taking AI-powered search further, conversational commerce uses LLMs to create AI shopping assistants that engage customers in natural dialogue: * “I need a gift for my partner who likes hiking and cooking.” * “What is the difference between your Professional and Enterprise plans?” * “I bought the starter kit last month — what should I add next?” These interactions require the AI to understand context, access product data, consider customer history, and generate helpful responses. In a composable architecture, the conversational AI service connects to multiple backend services — the product catalogue, the customer profile, the order history — through their respective APIs. ### Dynamic Pricing Optimisation with Machine Learning AI-driven pricing moves beyond static price lists and basic promotional discounts. Machine learning models analyse demand patterns, competitive pricing, inventory levels, customer segments, and real-time market conditions to optimise prices dynamically. These AI pricing models rely on large volumes of training data to learn pricing patterns and generate accurate recommendations. AI-driven pricing is also a form of advanced problem solving, addressing the complexity of B2B pricing scenarios through logic-based approaches and reasoning methods. In B2B composable commerce, where pricing is already complex (tiered pricing, contract pricing, volume discounts, currency variations), AI pricing optimisation adds another layer: * **Demand-responsive pricing**: Adjusting prices based on real-time demand signals, similar to airline or hotel pricing but applied to B2B product catalogues. * **Customer-specific pricing**: Using AI to determine the optimal price point for each customer based on their purchasing history, contract terms, and price sensitivity. * **Promotional optimisation**: Predicting which promotional offers will drive the highest conversion or margin improvement for specific customer segments. Elastic Path’s pricing engine supports the complex pricing rules that B2B requires — currency, tiers, customer groups — and its API-first design allows an external AI pricing service to feed optimised prices into the platform. ### Personalised Content Merchandising Content merchandising — the strategic placement of editorial content, promotional banners, and category descriptions throughout the commerce experience — has traditionally been manual. Merchandising teams decide which content appears where, for how long, and for which audience. AI personalisation automates and optimises this process: * **Behavioural targeting**: Showing different hero banners, product collections, and editorial content based on the visitor’s browsing history, referral source, and predicted interests. AI can personalise content for different products and services offered by the business, ensuring that each visitor sees the most relevant offerings. * **A/B test automation**: Running continuous experiments across content placements and using AI to automatically allocate traffic to winning variants. * **Content generation**: Using LLMs to generate personalised product descriptions, category page introductions, and email content tailored to specific customer segments. AI-driven merchandising also helps identify and engage potential customers by delivering tailored content and offers that match their interests and needs. In a composable architecture, the content personalisation engine sits between the headless CMS (where editorial content is managed) and the frontend (where it is rendered). The engine decides, in real time, which content variant to serve to each visitor. ### Elastic Path AI Product Recommendations: Architecture Patterns While this article argues that personalisation extends far beyond recommendations, product recommendations remain a core capability. Advanced AI algorithms power these product recommendation systems, enabling more accurate and relevant suggestions for users. Within the Elastic Path ecosystem, implementing AI product recommendations follows a clean architectural pattern: #### Data Pipeline 1. **Catalogue sync**: Product data from Elastic Path PXM is synchronised to the recommendation engine, including product attributes, categories, pricing, and availability. 2. **Behavioural collection**: A client-side tracking service captures user interactions — page views, searches, add-to-cart events, purchases — and sends them to the recommendation engine. 3. **Model training**: The recommendation engine trains models on the combined product and behavioural data. Common model types include collaborative filtering, content-based filtering, and hybrid approaches. The engine improves its accuracy through knowledge gained from historical data, allowing it to learn and adapt over time. Additionally, recommendation models can be tailored to the unique needs of each business industry, ensuring that suggestions are relevant to the specific context and audience of the eCommerce website. #### Serving Recommendations The recommendation engine exposes an API that the frontend calls with context (current product, current customer, current cart) and receives ranked product recommendations in response. The frontend renders these within the page layout of the eCommerce store, pulling full product details from Elastic Path’s API. #### Beyond Collaborative Filtering: Generative AI Approaches Modern recommendation engines go beyond traditional collaborative filtering (“customers who bought X also bought Y”) by incorporating: * **Session-based recommendations**: Using the current browsing session’s behaviour, even for anonymous visitors. * **Context-aware recommendations**: Considering time of day, device type, geographic location, and referral source. * **LLM-enhanced recommendations**: Using large language models to understand product relationships that statistical models miss — for example, recommending a specific mounting bracket because the product description mentions it is required for wall installation. Modern recommendation systems often leverage deep neural networks and artificial neural networks, which are types of neural networks inspired by biological systems. These models consist of multiple layers that progressively extract higher-level features from raw data, enabling complex pattern recognition and deep learning. Gen AI models, such as large language models, are increasingly used to enhance recommendation quality by generating more relevant and context-aware suggestions. ### Integration Architecture for Ecommerce Platforms Bringing all of these AI personalisation capabilities together in a composable architecture requires careful integration design. Cloud computing platforms, such as Google Cloud, provide the scalable infrastructure and computing power necessary to support advanced AI personalisation at scale. These services are underpinned by robust data centers, which deliver the high availability and energy management required for enterprise-grade AI solutions. The key principles are: Composable architecture allows businesses to adapt quickly to changing requirements, ensuring agility and future-proofing as technology and buyer behaviours evolve. #### API Orchestration Layer An API orchestration layer (often implemented as a Backend-for-Frontend or BFF) coordinates requests across the various services — Elastic Path for catalogue and cart, the search engine for product discovery, the recommendation engine for personalised suggestions, the CMS for content. This layer assembles the personalised page experience from multiple service responses. #### Event-Driven Data Flow AI models need data to learn from. An event-driven architecture (using message queues or event streams) ensures that user interactions, order completions, and catalogue changes flow to all AI services in near-real time. This keeps models current without creating tight coupling between services. #### Fallback Strategies AI services can fail or return degraded results. A robust architecture includes fallback strategies — showing trending products if the recommendation engine is unavailable, falling back to keyword search if semantic search fails, using default pricing if the pricing optimisation service is unreachable. For enterprises running Elastic Path or planning a composable commerce implementation, adding AI personalisation is a natural evolution. The composable architecture already provides the API-first foundation that AI services require. The practical starting point depends on your current capabilities and priorities: * **If search conversion is low**: Start with AI-powered search. The impact on product discovery is immediate and measurable. * **If average order value is stagnant**: Implement AI product recommendations beyond basic collaborative filtering. * **If content merchandising is manual and slow**: Add a personalisation engine between your CMS and frontend. * **If pricing is complex and margin is under pressure**: Explore AI-driven pricing optimisation. McKenna Consultants works at the intersection of composable commerce and AI, with deep expertise in Elastic Path implementations and AI integration architecture. If you are evaluating AI-driven personalisation for your composable commerce platform, to discuss your strategy. ### Agentic AI and Customer Experience Agentic AI represents a new frontier in artificial intelligence, focusing on the development of autonomous AI systems—known as AI agents—that can perceive their environment, make decisions, and pursue specific goals with minimal human intervention. In the context of digital commerce, agentic AI is poised to transform the customer experience, enabling e commerce businesses to deliver highly differentiated and seamless interactions across every touchpoint. Unlike traditional AI tools that perform specific tasks, agentic AI agents leverage advanced machine learning and deep learning techniques to analyze customer data, understand preferences, and adapt their behavior in real time. For example, an online store can deploy virtual assistants powered by agentic AI to guide customers through product discovery, answer complex questions, and facilitate online purchases—all while learning from each interaction to improve future performance. The integration of agentic AI with generative AI tools unlocks even more possibilities. Generative AI applications can create personalized content, such as tailored product descriptions or dynamic marketing messages, while agentic AI ensures these assets are delivered at the right moment in the customer journey. This synergy enables organizations to offer immersive experiences like virtual try-ons, interactive product demos, and real-time support, driving higher engagement and boosting online sales. Composable commerce offers the ideal foundation for adopting agentic AI. Its modular, API-first architecture allows businesses to seamlessly integrate new AI systems and generative AI applications without disrupting existing e commerce infrastructure. This flexibility empowers e commerce businesses to respond rapidly to changing customer demands and stay ahead of ecommerce trends. Key applications of agentic AI in digital commerce include: 1. **Personalized product recommendations**: AI agents analyze customer behavior, preferences, and purchase history to suggest relevant products, increasing the likelihood of online purchases and maximizing the value of each customer interaction. 2. **Virtual customer support**: Agentic AI enables always-on virtual assistants that can resolve common queries, provide order updates, and escalate complex issues to human agents when necessary, improving efficiency and customer satisfaction. 3. **Streamlined checkout processes**: AI-driven systems can identify and remove friction points in the checkout flow, reducing cart abandonment and optimizing the entire process for higher conversion rates. 4. **Social media engagement**: AI agents can monitor social media apps, respond to customer inquiries, and generate engaging content, helping businesses attract customers and build stronger relationships across digital channels. As AI researchers continue to advance the capabilities of agentic AI, the potential for innovation in e commerce and digital commerce will only grow. By embracing these new technologies and leveraging the flexibility that composable commerce offers, businesses can unlock new opportunities for growth, deliver exceptional customer experiences, and maintain a competitive edge in the rapidly evolving ecommerce business landscape. --- # Custom Excel Add-In Development: Building Spreadsheet Solutions That Scale **Canonical URL:** https://www.mckennaconsultants.com/custom-excel-add-in-development-building-spreadsheet-solutions-that-scale/ **Author:** Nick McKenna **Published:** 14 October 2025 **Category:** Microsoft Office Add-In Developer ## Bespoke Microsoft Excel Add-Ins: Creating Spreadsheet Solutions That Scale Excel remains the most widely used business application in the world. From financial modelling and supply chain planning to scientific data analysis and HR reporting, organisations rely on Excel for critical workflows that often involve complex logic, integrations with enterprise systems, and collaboration across teams. Add-ins enable users to perform tasks more efficiently or automate complex workflows. For decades, VBA (Visual Basic for Applications) has been the mechanism for extending Excel. Custom macros, user-defined functions, and automated workflows built in VBA have powered business-critical processes across every industry. But VBA is reaching the end of its practical lifespan. Security restrictions, lack of cross-platform support, and the inability to integrate with modern web services make VBA increasingly unsuitable for enterprise environments. The modern replacement is the Excel web add-in model — a platform built on web technologies (HTML, CSS, JavaScript/TypeScript) that delivers custom Excel add-in development capabilities rivalling and exceeding what VBA offers, while working across Windows, Mac, and the web. An Excel add-in is essentially an app that runs within Excel and enhances its capabilities. This guide covers the key capabilities of custom Excel add-in development, the architecture decisions involved—including the components that make up a custom Excel add-in such as manifest files, task panes, and custom functions—and the practical considerations for organisations migrating from VBA. ## Introduction to Microsoft Excel Add-Ins Microsoft Excel add-ins are powerful software extensions designed to enhance the core capabilities of Excel, making it an even more versatile tool for data analysis, productivity, and business intelligence. By leveraging add-ins, users can access a wide range of features directly within Excel, from advanced data analytics and visualization tools to automation utilities that streamline repetitive tasks. Add-ins can be easily installed and managed through the Add-Ins dialog box, giving users the flexibility to customize their Excel environment to suit their specific needs. With the ability to connect to external data sources, automate complex workflows, and create custom tools, Excel add-ins have become essential for organizations aiming to maximize the value of their data. Whether you need to perform sophisticated data analysis, automate data entry, or integrate Excel with other Microsoft Office applications, add-ins provide the functionality and flexibility required to boost productivity and efficiency. As organizations increasingly rely on data-driven decision-making, the ability to access and utilize these advanced capabilities directly within Excel is more important than ever. ## Types of Excel Solutions Excel offers a variety of solutions to help users tackle different data analysis and automation challenges. The three primary types are add-ins, macros, and templates. Add-ins are specialized programs that introduce new functionality to Excel, making them ideal for complex data analysis tasks and custom tool creation. Macros, on the other hand, are sets of recorded instructions that automate repetitive tasks, allowing users to perform routine actions with a single click. Templates provide pre-designed spreadsheet formats, enabling users to quickly create new workbooks with standardized layouts and formulas. Each solution type serves a unique purpose. Add-ins are best suited for scenarios requiring advanced data analytics, integration with external systems, or custom features that go beyond Excel’s default capabilities. Macros excel at automating simple, repetitive tasks, saving time and reducing manual errors. Templates are perfect for ensuring consistency and efficiency when creating new workbooks, especially when a specific format or structure is required. By understanding the strengths of each solution, users can choose the right approach to create, automate, and optimize their Excel tasks. ### Why Custom Excel Add-Ins? Custom Excel add-in development addresses several limitations that VBA cannot overcome: **Cross-platform compatibility.** VBA macros only run on Windows and Mac desktop Excel. Web add-ins run everywhere Excel runs — Windows, Mac, iPad, and Excel for the web. For organisations with mixed device environments, this is a fundamental requirement. **Modern authentication and APIs.** Web add-ins can authenticate with Microsoft Entra ID (Azure AD), call REST APIs, connect to Microsoft Graph, and integrate with any web service. VBA’s HTTP capabilities are rudimentary and lack modern security standards. **Enterprise deployment.** Add-ins can be centrally deployed through the Microsoft 365 admin centre, making them available to thousands of users without individual installation. VBA workbooks require manual distribution or complex Group Policy configurations. After deployment, users may need to activate the add-in in Excel to enable its features and begin using it. **Security model.** Add-ins run in a sandboxed iframe, isolated from the user’s local file system. VBA macros have access to the file system and can execute arbitrary code — a security risk that has led many organisations to disable VBA entirely. ### Custom Functions: Replacing VBA UDFs Custom functions are the most direct replacement for VBA user-defined functions (UDFs). Developers can convert existing VBA UDFs into custom functions by rewriting them in JavaScript or TypeScript, enabling seamless integration with modern Excel add in solutions. They allow developers to create new Excel functions that appear in the formula bar alongside built-in functions like SUM and VLOOKUP. #### Defining a Custom Function Custom functions are defined using the @customfunction JSDoc tag in JavaScript or TypeScript: ``` /** * Calculates the compound annual growth rate. * @customfunction * @param startValue The initial investment value. * @param endValue The final investment value. * @param years The number of years. * @returns The CAGR as a decimal. */ function cagr(startValue: number, endValue: number, years: number): number { return Math.pow(endValue / startValue, 1 / years) - 1; } ``` Once registered, users can type =CAGR(1000, 1500, 5) in any cell, and the function executes in the add-in's JavaScript runtime. #### Data Streaming with Custom Functions One of the most powerful capabilities of custom functions — and something VBA simply cannot do — is data streaming. A streaming custom function can push real-time data updates to cells without the user pressing a refresh button. ``` /** * Streams the current stock price. * @customfunction * @param ticker The stock ticker symbol. * @param invocation Custom function invocation parameter. * @streaming */ function stockPrice(ticker: string, invocation: CustomFunctions.StreamingInvocation< number>): void { const interval = setInterval(async () => { const price = await fetchStockPrice(ticker); invocation.setResult(price); }, 5000); invocation.onCanceled = () => clearInterval(interval); } ``` The data frequency of updates (for example, every 5 seconds in the code above) can be adjusted to suit the needs of the user or the data source, allowing for flexible control over how often new data is streamed into Excel. This enables use cases such as live financial data feeds, real-time sensor readings from IoT systems, and dynamic dashboard updates — all directly within Excel cells. #### Batch Processing for Performance When a spreadsheet contains hundreds of calls to the same custom function, the add-in runtime batches these calls for efficiency. Developers can implement batch handlers that process multiple function calls in a single API request, dramatically reducing network overhead: ``` /** * @customfunction * @requiresParameterAddresses */ function lookupValue(key: string, invocation: CustomFunctions.Invocation): Promise { return batchedLookup(key); } ``` This batching capability is essential for enterprise scenarios where spreadsheets contain thousands of formulas referencing external data sources. ### Task Pane Design for Data-Heavy Workflows While custom functions extend the formula bar, task panes provide a rich user interface for more complex interactions. Task panes appear as a sidebar panel within Excel and can contain any web content — forms, data grids, charts, configuration panels, and more — to display complex data visualizations, dashboards, or interactive elements. #### Common Task Pane Patterns **Data import wizards.** A task pane that connects to an enterprise data source (CRM, ERP, data warehouse), allows the user to select and filter data, and imports it into the active worksheet with appropriate formatting. **Configuration panels.** For add-ins that provide multiple custom functions, a task pane can provide configuration options — API keys, data source URLs, refresh intervals — that persist across sessions. Users can use a check box to enable or disable specific features within the task pane. **Data validation dashboards.** A task pane that scans the active worksheet for data quality issues, displays a summary of problems found, and offers one-click fixes. #### Excel-Specific JavaScript APIs The Excel JavaScript API provides comprehensive access to workbook objects: * **Ranges**: Read and write cell values, formats, and formulas across any range in the workbook, and insert new data or cells programmatically. * **Tables**: Create, modify, and query structured tables with sorting, filtering, and calculated columns, and insert new tables or rows directly into the worksheet. * **Charts**: Programmatically create and update charts based on worksheet data. * **PivotTables**: Build and manipulate PivotTables, including field configuration and data refresh. * **Named items**: Work with named ranges and named constants for cleaner formula integration. * **Worksheets**: Add, remove, and navigate worksheets programmatically. These APIs are asynchronous and promise-based, following modern JavaScript patterns: ``` async function populateTable(data: any[]): Promise< void> { await Excel.run(async (context) => { const sheet = context.workbook.worksheets.getActiveWorksheet(); const table = sheet.tables.add("A1:D1", true); table.name = "SalesData"; table.getHeaderRowRange().values = [["Region", "Product", "Quantity", "Revenue"]]; table.rows.add(null, data); // Auto-fit columns sheet.getUsedRange().format.autofitColumns(); await context.sync(); }); } ``` ### Integration Patterns for Enterprise Data Sources The most valuable custom Excel add-ins connect Excel to enterprise systems that users currently access through separate applications or manual data transfers. These add-ins can streamline processes such as reconciling data between different accounts in financial or ERP systems, making it easier to manage vendor accounts and accounts payable. Common integration patterns include: #### CRM Integration Sales teams commonly export CRM data to Excel for pipeline analysis, forecasting, and reporting. A custom add-in can: * Pull live CRM data directly into Excel through API calls. * Push updated values back to the CRM from modified cells. * Provide custom functions like =CRM.DEAL.VALUE("D-12345") that always return current data. #### ERP and Financial Systems Finance teams often maintain Excel models that reference data from ERP systems. An add-in can: * Connect to ERP APIs (SAP, Oracle, Dynamics) to pull financial data and integrate ERP data with existing excel data for comprehensive analysis. * Implement streaming custom functions for real-time inventory levels or order status. * Validate data entry against ERP master data before submission. #### Data Warehouse and BI For organisations with data warehouses or BI platforms, an add-in can: * Execute queries against the data warehouse, load the results directly into Excel for further analysis, and return results to Excel. * Provide a query builder interface in the task pane. * Cache frequently accessed datasets for offline use. ### Migrating from VBA: Practical Considerations For organisations with a substantial VBA codebase, migration to web add-ins is a significant undertaking that requires planning. Note: Before starting the migration process, ensure that all dependencies and legacy VBA functionalities are thoroughly documented, as missing these details is a common pitfall that can lead to unexpected issues during the transition. Here are the key considerations: #### What Can Be Migrated Directly * **User-defined functions**: VBA UDFs map cleanly to custom functions. The logic is portable; only the syntax changes. * **Form-based interfaces**: VBA UserForms can be reimplemented as task pane HTML/CSS/JavaScript interfaces with greater flexibility and better visual design. * **Worksheet event handlers**: VBA worksheet events (Worksheet_Change, Workbook_Open) have partial equivalents in the Office JavaScript API event model. #### What Requires Rearchitecting * **File system access**: VBA code that reads or writes local files cannot be directly ported. The add-in must use alternative storage (OneDrive, SharePoint, or a server-side API). * **COM automation**: VBA code that automates other Office applications (such as opening or editing a document in Word or PowerPoint from Excel, or sending Outlook emails) must be replaced with Microsoft Graph API calls. * **ActiveX controls**: Embedded ActiveX controls have no equivalent in the web add-in model. The functionality must be reimplemented using HTML/CSS/JavaScript. #### Migration Strategy We recommend a phased approach: 1. **Audit**: Catalogue all VBA code across the organisation, identifying functions, forms, and automation scripts. 2. **Prioritise**: Rank by business impact and migration complexity. Start with high-value, straightforward migrations. 3. **Parallel operation**: Deploy the web add-in alongside the existing VBA solution. Allow users to transition gradually. 4. **Deprecate**: Once the add-in is validated and adopted, disable VBA macros through Group Policy and delete obsolete VBA add-ins or code to streamline workflows and maintain data integrity. ### Excel Add-In Development Tools Developing custom Excel add-ins requires specialized tools that empower developers to create robust, feature-rich solutions. Popular Excel add-in development tools include Visual Studio, Excel-DNA, and Add-in Express. These platforms provide comprehensive support for building add-ins using languages like Visual Basic and C#, as well as modern web technologies. With built-in debugging tools, code editors, and testing frameworks, developers can efficiently create, test, and refine add-ins that extend Excel’s functionality. For example, Visual Studio offers seamless integration with Microsoft Office, enabling developers to build add-ins that connect Excel with other Office applications such as Word and PowerPoint. Excel-DNA and Add-in Express provide additional flexibility for creating high-performance add-ins that automate data analysis tasks, connect to external data sources, and deliver custom features tailored to organizational needs. By leveraging these tools, developers can create solutions that not only enhance Excel’s capabilities but also integrate smoothly with broader Microsoft Office environments. ### Add-In Deployment and Maintenance Deploying and maintaining Excel add-ins is a critical part of ensuring users have reliable access to the tools they need. Add-ins can be installed manually by users through the Add-Ins dialog box, or deployed organization-wide using automated tools like Microsoft System Center Configuration Manager. This flexibility allows IT administrators to control access, manage permissions, and ensure that the right users have the right tools at their fingertips. Regular maintenance is essential to keep add-ins functioning optimally and to address any errors or compatibility issues that may arise. Administrators can use the Add-Ins dialog box to update add-ins, manage user access, and troubleshoot problems as needed. By implementing a structured deployment and maintenance process, organizations can maximize the value of their Excel add-ins while minimizing disruptions and ensuring a seamless user experience. ### Security Considerations for Add-Ins Security is a top priority when working with Excel add-ins, as they can introduce potential risks to both users and organizational data. It is crucial to only install Excel add-ins from trusted sources and to keep them updated with the latest security patches. Users should be cautious when enabling macros or running executable code within add-ins, as malicious code can compromise computer systems and sensitive data. Excel provides built-in security features, such as the Trust Center, which allows users to manage macro settings and control which add-ins are permitted to run. By configuring these settings appropriately and following best practices for code security, organizations can significantly reduce the risk of malware or unauthorized access. Regularly reviewing installed add-ins and educating users about safe installation practices further enhances overall security. ### Testing and Debugging Add-Ins Thorough testing and debugging are essential steps in the development of reliable Excel add-ins. Developers should use tools like the Visual Basic Editor and integrated debugging environments to identify and resolve errors in their code. Automated testing frameworks, such as those provided by Excel-DNA, can streamline the testing process and ensure that add-ins perform as expected across different scenarios. The Debug menu in Visual Studio, for example, allows developers to step through code, set breakpoints, and inspect variables, making it easier to pinpoint and fix issues. By investing in comprehensive testing and debugging, developers can deliver high-quality add-ins that automate tasks, enhance productivity, and integrate seamlessly with Excel’s existing features—ultimately providing users with robust and dependable tools for their data analysis needs. ### The Copilot Dimension With Microsoft’s investment in Copilot across the Microsoft 365 suite, custom Excel add-ins are positioned to integrate with AI capabilities through the expanding Copilot APIs. This opens future possibilities for add-ins that leverage AI for data analysis, pattern recognition, and natural language querying of spreadsheet data, as well as using Copilot and Power Query to transform data within Excel for advanced analytics. For organisations planning their Excel add-in development now, designing with Copilot integration in mind ensures readiness for these emerging capabilities. ### Why McKenna Consultants for Custom Excel Add-In Development McKenna Consultants has extensive experience in Microsoft Office add-in development across Excel, Word, and Outlook. As a UK-based consultancy, we work with organisations ranging from financial services firms modernising their VBA workbooks to SaaS companies building embedded Excel experiences for their customers. Our custom Excel add-in development services cover the full lifecycle: requirements analysis, architecture design, development, testing, deployment through the Microsoft 365 admin centre, and ongoing maintenance. If your organisation is dependent on VBA workbooks that need modernising, or you need to connect Excel to your enterprise data sources through a custom add-in, we offer a free initial consultation to assess your needs and discuss how our Excel add-in development services can help. --- # WOPI Coauthoring: A Technical Guide to Real-Time Multi-User Document Editing **Canonical URL:** https://www.mckennaconsultants.com/wopi-coauthoring-a-technical-guide-to-real-time-multi-user-document-editing/ **Author:** Nick McKenna **Published:** 7 October 2025 **Category:** CSPP WOPI ## WOPI Coauthoring Real-time collaborative document editing has become a baseline expectation for modern productivity platforms. Users who experience simultaneous editing in Google Docs or Microsoft 365 expect the same capability everywhere they work with documents. For ISVs and SaaS platforms that embed Microsoft Office document editing through the WOPI protocol, implementing coauthoring is both the most technically demanding and the most commercially valuable capability available. This guide provides an in-depth technical walkthrough of WOPI coauthoring implementation, covering the protocol mechanics, lock management strategies, conflict resolution, and the architecture patterns that separate production-grade implementations from fragile prototypes. ## What Is WOPI Coauthoring? WOPI coauthoring enables multiple users to simultaneously view and edit the same document within an Office Online (or Office for the web) session, all mediated through the WOPI protocol. When a WOPI host supports coauthoring, the Office application coordinates changes between users in real time, merging edits at the paragraph and cell level without requiring users to manually resolve conflicts. From the WOPI host's perspective, coauthoring introduces additional protocol requirements beyond single-user editing. The host must support specific discovery properties, implement robust lock management, handle coauthoring status callbacks, and manage file storage in a way that supports concurrent access without data corruption. For ISVs building real-time document editing capabilities via the WOPI protocol, coauthoring is the feature that transforms embedded Office from a convenient viewer into a genuine collaboration platform. ## Discovery Properties for Coauthoring Before Office Online will attempt coauthoring for a document, it checks specific properties returned by the WOPI host in the CheckFileInfo response. These properties signal to the Office application that the host is capable of managing concurrent editing sessions. The critical discovery properties include: - **SupportsCoauth**: When set to `true`, this tells Office Online that the host supports multiple users editing simultaneously. Without this flag, Office falls back to single-user editing with exclusive locks. - **SupportsLocks**: Coauthoring requires lock management. This property must be `true` for coauthoring to function. - **SupportsUpdate**: The host must accept file updates via PutFile. This is required for any editing scenario, but is worth confirming explicitly in a coauthoring context. - **SupportsGetLock**: Enables Office Online to query the current lock state, which is essential for managing the transition between single-user and multi-user editing modes. If any of these properties are missing or set to `false`, Office Online will not attempt coauthoring — it will either fall back to single-user editing or open the document in read-only mode. ## Lock Management: The Foundation of Coauthoring Lock management is the single most critical implementation detail in WOPI coauthoring. The difference between a reliable coauthoring implementation and one that loses data or corrupts documents almost always comes down to how locks are handled. ### Understanding WOPI Lock Types In a coauthoring scenario, WOPI uses collaborative locks rather than exclusive locks. The distinction is fundamental: - **Exclusive locks** prevent any other user from editing the document. They are appropriate for single-user editing scenarios. - **Collaborative locks** allow multiple users to hold a lock on the same document simultaneously. Office Online manages the coordination between users, and the WOPI host manages the lock state. When Office Online initiates a coauthoring session, it sends a Lock request with a lock identifier. The host must store this lock identifier and associate it with the document. Subsequent users joining the same coauthoring session will present the same lock identifier — the host should recognise this and allow the operation. ### The Lock and UnlockAndRelock Operations The Lock operation is straightforward in concept but requires careful implementation: 1. **Lock**: Office Online sends a lock request with an `X-WOPI-Lock` header containing the lock identifier. If the document is unlocked, the host should apply the lock and return HTTP 200. If the document is already locked with the same identifier, the host should return HTTP 200 (this is a valid coauthoring scenario). If the document is locked with a different identifier, the host should return HTTP 409 with the current lock identifier in the `X-WOPI-Lock` response header. 2. **UnlockAndRelock**: This operation atomically replaces one lock with another. It is used when Office Online needs to transition a document between editing sessions. The host receives both the old lock identifier (in `X-WOPI-OldLock`) and the new lock identifier (in `X-WOPI-Lock`). The host must verify the old lock matches, then atomically replace it with the new lock. The atomicity of UnlockAndRelock is critical. If the unlock and relock are implemented as separate operations with a gap between them, another process could acquire the lock in that window, leading to data loss. ### Lock Expiration and Refresh Locks have a limited lifetime. Office Online periodically refreshes locks by sending new Lock requests with the same lock identifier. If a lock expires because the host has not received a refresh within the expected timeout period (typically 30 minutes), the host should release the lock. However, lock expiration in a coauthoring context requires careful handling. If multiple users are editing and the lock expires due to a network interruption with Office Online, releasing the lock could allow a conflicting operation to proceed. A robust implementation logs lock expirations and, where possible, delays lock release to provide a grace period. ## Conflict Resolution Strategies Even with proper lock management, conflicts can arise in coauthoring scenarios. The most common situations include: - **Network partitions**: A user's connection to Office Online drops temporarily, and their changes are queued locally. When the connection is restored, the queued changes may conflict with changes made by other users. - **Concurrent PutFile operations**: In rare cases, the host may receive near-simultaneous PutFile requests from different coauthoring sessions. - **External modifications**: A system process or API call modifies the document outside of the Office Online session. ### Last-Writer-Wins vs Merge Strategies The simplest conflict resolution strategy is last-writer-wins: the most recent PutFile overwrites the previous version. This is acceptable for many implementations, particularly when Office Online is managing the merge internally and sending consolidated updates. However, for hosts that maintain version histories or support offline editing, a merge strategy may be more appropriate. This involves: 1. Storing the base version that each editing session started from. 2. When a PutFile arrives, comparing it against the base version to identify changes. 3. Merging changes from multiple sessions where possible. 4. Flagging irreconcilable conflicts for user resolution. For most WOPI hosts, relying on Office Online's built-in merge capabilities and implementing last-writer-wins at the storage layer provides the best balance of reliability and implementation complexity. ## The Coauthoring Status Callback Office Online provides a coauthoring status mechanism that allows the host to understand the current state of the editing session. The host can query: - How many users are currently editing the document. - Whether the document has unsaved changes. - Whether any users are in a conflicted state. This information is valuable for building user-facing indicators (such as showing who is currently editing a document) and for making operational decisions (such as whether to allow a batch process to modify the document). ## Architecture Patterns for ISVs Implementing WOPI coauthoring at scale requires architectural decisions that go beyond the protocol mechanics. Here are the patterns we see in successful production implementations. ### Centralised Lock Store For hosts running multiple application instances behind a load balancer, lock state must be centralised. A common pattern is using a distributed cache (such as Redis) or a database row-level lock to store WOPI lock identifiers. The lock store must support: - Atomic read-modify-write operations (for UnlockAndRelock). - TTL-based expiration (for automatic lock cleanup). - High availability (a lock store outage blocks all editing). ### File Storage Considerations Coauthoring places specific demands on file storage: - **Atomic writes**: PutFile operations must be atomic. A partial write that is visible to other readers or sessions will cause corruption. - **Version tracking**: Maintaining a version counter or hash for each document enables conflict detection and supports the `X-WOPI-ItemVersion` header. - **Read-after-write consistency**: After a PutFile completes, subsequent GetFile requests must return the updated content. Eventually-consistent storage backends can cause coauthoring anomalies. Cloud storage services like Azure Blob Storage and Amazon S3 can support these requirements, but specific configuration is needed. For example, S3's strong read-after-write consistency (available since December 2020) is essential for WOPI coauthoring workloads. ### Scaling for High-Concurrency Sessions Documents with many simultaneous editors (such as collaborative meeting notes or shared project plans) generate high volumes of WOPI requests. The host must handle: - Frequent Lock refresh requests (every few minutes per session). - Multiple GetFile and PutFile operations as Office Online synchronises changes. - CheckFileInfo requests as new users join the session. Connection pooling, request queuing, and horizontal scaling of the WOPI endpoint are all important considerations for hosts expecting high-concurrency coauthoring workloads. ## Performance Considerations Performance in a coauthoring scenario is user-visible in a way that single-user editing is not. When User A types a sentence, User B expects to see it appear within seconds. The latency chain includes: 1. User A's browser to Office Online servers. 2. Office Online servers to the WOPI host (PutFile or coauthoring sync). 3. WOPI host processing and storage write. 4. Office Online servers fetching the updated content. 5. Office Online servers to User B's browser. Steps 2 and 3 are the only parts the WOPI host controls. Minimising PutFile processing time and ensuring fast GetFile responses directly impacts the perceived responsiveness of coauthoring. Benchmarking your WOPI endpoint under concurrent load is essential before enabling coauthoring in production. We recommend testing with at least 10 simultaneous editors on a single document, with automated scripts generating edits at realistic intervals. ## Common Implementation Mistakes Having implemented WOPI coauthoring for multiple SaaS platforms, we consistently see the same mistakes: 1. **Non-atomic lock operations**: Implementing UnlockAndRelock as separate Unlock followed by Lock calls, creating a race condition window. 2. **Ignoring lock refresh failures**: Not handling the case where Office Online fails to refresh a lock, leading to premature lock expiration during active editing. 3. **Blocking PutFile on validation**: Running synchronous content validation or virus scanning during PutFile, adding seconds of latency that users experience as coauthoring lag. 4. **Inconsistent lock store**: Using an eventually-consistent data store for locks, causing phantom lock conflicts when requests hit different replicas. 5. **Missing SupportsCoauth property**: Forgetting to set the discovery property, resulting in single-user editing despite implementing all the coauthoring mechanics. ## Moving Forward with WOPI Coauthoring WOPI coauthoring implementation is a substantial engineering effort, but the commercial return is significant. For SaaS platforms, embedded real-time document editing via the WOPI protocol eliminates the need for users to download, edit, and re-upload documents — a workflow that is both error-prone and increasingly unacceptable to users accustomed to cloud-native collaboration. As Microsoft continues to push Microsoft 365 interoperability for CSPP partners and the broader ecosystem, the expectation for seamless coauthoring will only grow. ISVs that invest in robust coauthoring implementations now will have a significant competitive advantage. McKenna Consultants has deep expertise in WOPI protocol implementation, including coauthoring, lock management, and high-concurrency architecture design. If you are planning to add coauthoring to your WOPI integration or need help troubleshooting an existing implementation, [contact us](/contact/) to discuss your requirements. --- # AI First: RAG Architecture Best Practices for UK Enterprise Deployments **Canonical URL:** https://www.mckennaconsultants.com/rag-architecture-best-practices-for-uk-enterprise-deployments/ **Author:** Nick McKenna **Published:** 16 September 2025 **Category:** Artificial Intelligence ## RAG Architecture Best Practices for UK Enterprise Deployments Retrieval-augmented generation has moved from a research concept to a core enterprise AI pattern in a remarkably short time. The fundamental idea – grounding a large language model’s responses in an organisation’s own data by retrieving relevant documents at query time – solves the most persistent objection to deploying generative AI in business: hallucination and accuracy. In an AI-first world, companies are rapidly adopting an AI-first approach, transforming their operating models to leverage artificial intelligence as a central driver of business value and competitive advantage. This shift requires organisations to rethink traditional structures and embrace agile, tech-centric frameworks that can adapt to the evolving landscape. We previously published an introduction to RAG on this site, explaining what retrieval-augmented generation is and why it matters. This article goes deeper. The integration of data science has played a crucial role in advancing AI systems and enabling the development of RAG architectures, allowing companies to process large datasets and build more sophisticated solutions. It is a practical implementation guide for UK enterprises that are moving from proof-of-concept to production RAG deployments, covering the architectural decisions, engineering trade-offs, and regulatory considerations that determine whether a RAG system delivers genuine business value or becomes an expensive experiment. At McKenna Consultants, we provide RAG implementation consultancy for UK organisations building custom AI chatbots and enterprise knowledge base systems. The guidance in this article reflects the patterns and practices we apply in real deployments. ## Introduction to RAG Architecture Retrieval Augmented Generation (RAG) architecture represents a significant advancement in artificial intelligence, combining the strengths of retrieval-based and generation-based approaches to deliver more accurate and contextually relevant outputs. At its core, RAG architecture integrates large language models (LLMs) with powerful retrieval mechanisms, enabling AI systems to access and utilize vast amounts of external information in real time. This hybrid approach is particularly transformative for natural language processing (NLP) tasks—such as question answering, text summarization, and enterprise chatbots—where understanding and generating human language with precision is essential. By grounding generative responses in retrieved data, RAG architecture helps organizations overcome the limitations of traditional AI models, making artificial intelligence a more reliable and valuable asset for business-critical applications. ## Benefits of RAG Architecture RAG architecture offers a host of benefits for organizations seeking to deploy advanced AI systems. By combining retrieval and generation, RAG-powered AI models can deliver high-quality, context-specific responses that are both accurate and relevant to the user’s needs. This is especially valuable for specific tasks like question answering, document summarization, and domain-specific chatbots, where precision and adaptability are paramount. The retrieval component allows AI systems to leverage large corpora of training data without the need for exhaustive manual annotation or explicit programming, making the development process more efficient and scalable. Furthermore, RAG models can be fine-tuned for particular domains or business requirements, ensuring that the AI system remains flexible and responsive as new data and use cases emerge. These advantages position RAG architecture at the forefront of AI research and enterprise adoption, enabling organizations to unlock new value from their data and deliver more sophisticated AI-driven solutions. ## RAG Architecture Overview A production RAG system comprises several components working in concert: 1. **Document ingestion pipeline** – Extracts content from source documents (PDFs, Word files, web pages, databases, SharePoint libraries), processes them into chunks, and generates vector embeddings. 2. **Vector store** – Stores the document chunks and their embeddings, enabling similarity search at query time. Artificial neural networks and machine learning techniques are commonly used to generate these vector representations, allowing the system to capture complex patterns in the data. 3. **Retrieval engine** – Takes a user query, converts it to an embedding, searches the vector store for relevant chunks, and optionally applies re-ranking and filtering. 4. **Generation engine** – Sends the retrieved context along with the user’s query to a large language model, which generates a grounded response. Large language models are built on deep learning architectures, often utilizing deep neural networks with many layers or multiple layers to extract complex patterns from data. 5. **Orchestration layer** – Manages the end-to-end flow, including query preprocessing, retrieval strategy selection, prompt construction, and response post-processing. AI algorithms play a key role in optimizing retrieval and generation processes within this layer. Each component involves architectural decisions that materially affect the system’s accuracy, performance, and cost. We will examine the most consequential decisions in turn. ## Vector Database Selection The vector store is the foundation of a RAG system's retrieval capability. The choice of vector database affects search performance, scalability, operational complexity, and cost. ### Dedicated Vector Databases Purpose-built vector databases such as Pinecone, Weaviate, Qdrant, and Milvus are designed specifically for high-performance similarity search over large embedding collections. They offer: * Optimised indexing algorithms (HNSW, IVF) for fast approximate nearest-neighbour search * Metadata filtering alongside vector search * Managed hosting options that reduce operational burden * Purpose-built APIs for embedding operations For enterprise deployments handling millions of document chunks with strict latency requirements, a dedicated vector database is typically the right choice. ### Vector Extensions for Existing Databases PostgreSQL with pgvector, Azure Cosmos DB with vector search, and Azure AI Search all provide vector search capability within platforms that organisations may already operate. The advantage is reduced operational complexity – one fewer database to manage, monitor, and secure. The trade-off is that these extensions may not match the search performance or feature set of dedicated vector databases at scale. For RAG deployments with moderate document volumes (tens of thousands to low hundreds of thousands of chunks), these integrated options are often entirely sufficient and reduce infrastructure sprawl. ### Selection Criteria for UK Enterprises For UK organisations, the vector database selection should account for: * **Data residency.** Where is the data stored? Can the provider guarantee UK or EU data residency? For systems processing personal data, this is a GDPR requirement. * **Existing cloud platform.** If the organisation is an Azure customer, Azure AI Search or Cosmos DB may be preferable to introducing a new cloud provider relationship. * **Operational capability.** Does the team have the skills to operate a new database platform, or is a managed service essential? * **Cost model.** Vector databases have varied pricing models – some charge per vector stored, others per query, others per compute hour. Model the cost at your expected scale before committing. ## Chunking Strategies How documents are split into chunks has a profound effect on retrieval quality. Chunks that are too large dilute the relevant information with irrelevant context. Chunks that are too small lose the surrounding context that makes the information meaningful. ### Fixed-Size Chunking The simplest approach: split documents into chunks of a fixed token count (e.g., 512 tokens) with a defined overlap between consecutive chunks (e.g., 50 tokens). This is easy to implement and provides predictable chunk sizes. The limitation is that fixed-size chunking ignores document structure. A chunk boundary may fall in the middle of a paragraph, separating a claim from its supporting evidence, or split a table across two chunks. ### Semantic Chunking Semantic chunking uses the document's structure to define chunk boundaries. Section headings, paragraph breaks, list boundaries, and table structures are used as natural split points. This preserves the logical coherence of each chunk. Implementation requires parsing document structure, which varies by source format. Well-structured HTML and Markdown are straightforward. PDFs are notoriously challenging – especially scanned documents or documents with complex layouts. ### Hierarchical Chunking Hierarchical chunking creates multiple representations of the same content at different granularities. A section-level chunk provides broad context; paragraph-level chunks within that section provide detail. At retrieval time, the system can match on the detailed chunk and then include the parent section chunk in the context window to provide surrounding context. This approach is particularly effective for long-form technical documents where both the specific detail and the broader context are needed to generate an accurate response. ### Practical Recommendations In our RAG implementation consultancy work, we have found that the following approach works well for most enterprise document collections: * Start with semantic chunking that respects document structure. * Target a chunk size of 300-500 tokens, which balances specificity with context. * Include 50-100 tokens of overlap to maintain continuity across chunk boundaries. * For documents with hierarchical structure (technical manuals, policy documents), implement parent-child chunk relationships. * Always include document-level metadata (title, source, date, author, classification) with each chunk for filtering and attribution. ## Embedding Model Comparison for Large Language Models The embedding model converts text into vector representations that enable similarity search. The choice of embedding model affects retrieval accuracy, latency, and cost. ### Key Dimensions * **Dimensionality.** Models produce embeddings of different sizes – 384, 768, 1024, 1536, or 3072 dimensions are common. Higher dimensionality captures more nuance but increases storage and search costs. * **Context window.** Some models handle only 512 tokens; others support 8192 or more. For longer chunks, a model with a larger context window is essential. * **Domain adaptation.** General-purpose embedding models perform well across topics, but domain-specific models (trained on legal, medical, or technical text) can improve retrieval accuracy for specialised corpora. * **Multilingual capability.** For UK organisations with international operations, multilingual embedding models enable cross-language retrieval. ### Models to Consider in 2025 * **OpenAI text-embedding-3-large** (3072 dimensions) – Strong general-purpose performance, available via API. Data processing considerations under GDPR as queries are sent to OpenAI's API. * **Cohere embed-v3** (1024 dimensions) – Competitive retrieval accuracy with support for multiple languages and a compression feature that reduces storage costs. * **Open-source models** (e.g., BGE, GTE, E5) – Can be self-hosted, keeping all data within the organisation's infrastructure. Essential for deployments where data must not leave the corporate network. For UK enterprise deployments handling sensitive data, self-hosted open-source embedding models eliminate the data protection concerns associated with sending content to external APIs. The trade-off is increased infrastructure and operational complexity. ## Hybrid Search Approaches Pure vector search relies on semantic similarity, which is powerful but has limitations. It can miss documents that use different terminology to express the same concept, or it can match documents that are semantically similar but factually irrelevant. Hybrid search combines vector similarity search with traditional keyword search (BM25 or similar) to overcome these limitations. The two search methods are complementary: * **Vector search** excels at finding conceptually relevant documents even when the exact terminology differs. * **Keyword search** excels at finding documents that contain specific terms, codes, reference numbers, or proper nouns that are critical for accuracy. ### Reciprocal Rank Fusion The most common approach to combining vector and keyword search results is reciprocal rank fusion (RRF). Each search method produces a ranked list of results. RRF assigns a score to each document based on its rank in each list and combines the scores to produce a final ranking. The formula is straightforward: ``` RRF_score(d) = sum(1 / (k + rank_i(d))) ``` Where k is a constant (typically 60) and rank_i(d) is the rank of document d in the ith result list. ### Re-Ranking After initial retrieval (whether vector, keyword, or hybrid), a re-ranking model can re-order the results based on their relevance to the specific query. Cross-encoder models such as Cohere Rerank or open-source models like BGE Reranker assess the relevance of each query-document pair more accurately than the initial retrieval, at the cost of additional latency. For enterprise deployments where accuracy is paramount – legal research, regulatory compliance, medical information – re-ranking is a valuable addition. For lower-stakes applications such as internal FAQ systems, the initial retrieval may be sufficient. ## Measuring Accuracy A RAG system that cannot demonstrate its accuracy is not production-ready. Establishing robust evaluation metrics is essential for building stakeholder confidence and for guiding iterative improvement. ### Retrieval Metrics * **Recall@k** – Of the relevant documents in the corpus, what proportion appears in the top-k retrieved results? A recall@10 of 0.8 means that 80% of relevant documents are retrieved in the top 10 results. * **Precision@k** – Of the top-k retrieved results, what proportion is actually relevant? High precision means less irrelevant noise in the context window. * **Mean Reciprocal Rank (MRR)** – How highly is the first relevant document ranked? An MRR close to 1.0 means relevant documents consistently appear at the top of results. ### Generation Metrics * **Faithfulness** – Does the generated answer accurately reflect the content of the retrieved documents? This measures hallucination risk. * **Answer relevance** – Does the generated answer actually address the user's question? * **Groundedness** – Can every claim in the generated answer be attributed to a specific retrieved document? ### Building an Evaluation Dataset Create a dataset of representative questions paired with known correct answers and the documents that contain those answers. This dataset becomes the benchmark against which you measure retrieval and generation quality. For enterprise deployments, this evaluation dataset should be built in collaboration with subject matter experts who can validate both the questions and the expected answers. It should cover the range of question types the system will encounter: factual lookups, procedural guidance, comparative questions, and edge cases. Automated evaluation frameworks such as RAGAS and DeepEval can compute these metrics at scale, enabling continuous monitoring of system quality as the document corpus evolves. ## Data Governance and UK Regulatory Considerations For UK enterprises, RAG deployments must navigate a regulatory landscape that includes GDPR, the UK Data Protection Act 2018, and the evolving framework around AI governance. ### GDPR Implications for RAG Systems A RAG system that indexes documents containing personal data is processing that data within the meaning of GDPR. This has several implications: * **Lawful basis.** The organisation must have a lawful basis for processing personal data through the RAG system. For internal employee-facing systems, legitimate interest may apply. For customer-facing systems, the analysis depends on the data being processed and the purpose. * **Data minimisation.** Only index documents that are necessary for the system's purpose. A RAG system that indiscriminately indexes all corporate documents is likely to process personal data beyond what is necessary. * **Right of erasure.** If an individual exercises their right to have their personal data deleted, the organisation must be able to remove that data from the RAG system's vector store and document index – not just from the source documents. * **Data protection impact assessment.** For RAG systems processing personal data at scale or for novel purposes, a DPIA is likely required under Article 35 of the UK GDPR. ### The ICO's Position on AI and Personal Data The Information Commissioner's Office has published guidance on AI and data protection that is directly relevant to RAG deployments. The ICO emphasises that organisations must: * Be transparent about how AI systems use personal data * Ensure that automated decisions affecting individuals include appropriate human oversight * Maintain records of processing activities that include AI system details * Conduct regular reviews of AI system accuracy and fairness For RAG systems that provide information to employees or customers, particularly in regulated sectors such as financial services or healthcare, these requirements are not optional enhancements – they are legal obligations. ### The EU AI Act and UK Implications Although the UK is not directly subject to the EU AI Act, many UK enterprises operate in EU markets and must comply with its requirements. The Act classifies AI systems by risk level and imposes obligations accordingly. A RAG system used for HR decisions, credit assessments, or medical information could fall into a higher risk category. Even for purely UK-domestic deployments, the UK government's approach to AI regulation – currently principles-based rather than prescriptive – is expected to evolve. Building RAG systems with strong governance foundations now positions organisations to adapt to future regulatory requirements. The intersection of enterprise AI governance, the EU AI Act, and UK data protection law is an area where technical architecture decisions have direct legal consequences. Access controls, audit logging, data lineage tracking, and the ability to explain how a particular response was generated are not merely best practices – they are increasingly legal requirements. ## RAG Architecture Security Security is a critical consideration when deploying RAG architecture in enterprise AI systems. As these systems often handle sensitive business data and interact with customer information, they can be exposed to threats such as data poisoning, model inversion, and adversarial attacks. To safeguard against these risks, organizations should implement robust security measures, including data encryption, secure retrieval protocols, and comprehensive testing frameworks. Advanced techniques like differential privacy and federated learning can further enhance data protection, ensuring that sensitive information remains confidential even as AI models learn and evolve. By embedding security into the design and operation of RAG systems, businesses can protect their assets, maintain customer trust, and ensure that artificial intelligence is used to enhance customer experience and drive business growth—rather than introduce new vulnerabilities. ## RAG Architecture Ethics Ethical considerations are paramount in the development and deployment of RAG-based AI systems. As artificial intelligence becomes more integrated into business processes and daily life, the potential for both positive and negative societal impact grows. RAG models, with their ability to generate persuasive and contextually rich content, must be designed with transparency, accountability, and fairness in mind. This means actively working to eliminate bias, respect human rights, and ensure that AI systems align with human values. Developers and organizations have a responsibility to make AI systems explainable and auditable, so that users can trust the outputs and understand how decisions are made. By prioritizing ethical principles throughout the lifecycle of RAG architecture, we can harness the power of AI to drive innovation and improve lives, while minimizing the risks associated with misuse or unintended consequences. ## AI Agents and RAG: Extending Beyond Q&A While the most common RAG use case is a custom AI chatbot querying an enterprise knowledge base, the pattern extends naturally to AI agents that take actions based on retrieved information. Agentic AI, which involves multiple autonomous agents working together to achieve specific goals, is an advanced approach that leverages RAG to coordinate and support these agentic systems. An AI agent for business process automation might retrieve relevant policy documents, extract the applicable rules, and then execute a workflow step based on those rules – approving a request, routing a ticket, or generating a report. The RAG component ensures that the agent’s actions are grounded in current organisational policy rather than potentially outdated training data. These agents are designed to perceive their environment, make autonomous decisions, and act independently to achieve specific goals within their programmed scope. This agent pattern is gaining traction in areas such as: * **IT service management** – Agents that retrieve resolution procedures from a knowledge base and guide technicians through troubleshooting steps. * **Procurement** – Agents that retrieve supplier contracts, check terms and pricing, and pre-populate purchase orders. * **Compliance monitoring** – Agents that retrieve regulatory requirements and assess whether proposed activities or documents comply. * **Virtual assistants** – AI-powered virtual assistants that leverage RAG to provide 24/7 customer support, handle support inquiries, and automate repetitive tasks, functioning as autonomous agents capable of interacting with users and improving customer experience. For UK enterprises exploring AI agents for business process automation, RAG provides the grounding mechanism that makes agent actions trustworthy and auditable. ## Implementation Roadmap Based on our experience delivering RAG implementation consultancy for UK organisations, we recommend the following phased approach: ### Phase 1: Foundation (Weeks 1-4) * Define the use case and success criteria * Identify and catalogue source documents * Select vector database and embedding model * Build the document ingestion pipeline * Create an initial evaluation dataset with subject matter experts ### Phase 2: Core RAG (Weeks 5-8) * Implement chunking strategy and index the document corpus * Build the retrieval engine with hybrid search * Integrate the LLM for response generation * Implement basic prompt engineering for grounded responses * Measure baseline accuracy against the evaluation dataset ### Phase 3: Optimisation (Weeks 9-12) * Implement re-ranking to improve retrieval precision * Tune chunking parameters based on evaluation results * Add metadata filtering for access control and source scoping * Implement citation and source attribution in responses * Conduct user acceptance testing with target user group ### Phase 4: Production Hardening (Weeks 13-16) * Implement monitoring and observability (query logging, latency tracking, accuracy monitoring) * Build operational dashboards * Implement access controls aligned with existing identity infrastructure * Complete data protection impact assessment * Document data lineage and processing records for GDPR compliance * Deploy to production with phased rollout ## RAG Architecture Future The future of RAG architecture is bright, with ongoing advancements poised to further transform the landscape of artificial intelligence. As AI researchers and developers continue to innovate, we can expect to see RAG systems integrated with other cutting-edge technologies, such as computer vision and robotics, enabling AI to perform tasks that require a deeper understanding of both language and the physical world. Improvements in retrieval mechanisms—such as graph-based and knowledge-based approaches—will enhance the accuracy and efficiency of RAG models, making them even more effective for complex problem solving and real world applications. The increasing availability of large-scale datasets and greater computing power will accelerate these developments, allowing AI systems to analyze data, learn from new information, and deliver more human-like interactions. As we move forward, it is essential for organizations and AI professionals to prioritize responsible development, ensuring that RAG architecture continues to benefit society and business while upholding the highest standards of ethics and security. ## Conclusion Building a production-grade RAG system for UK enterprise deployment requires careful attention to architectural decisions that compound in their effects: chunking strategy, embedding model selection, hybrid search configuration, and accuracy measurement. Each decision affects retrieval quality, which in turn affects the accuracy and trustworthiness of generated responses. While current RAG systems are powerful, they are still far from achieving artificial general intelligence, which would require human-like versatility and reasoning. Equally important for UK organisations are the regulatory and governance dimensions. GDPR compliance, ICO guidance on AI, and the evolving EU AI Act framework all impose requirements on how RAG systems process, store, and provide access to data. These requirements must be designed into the architecture from the outset, not bolted on as an afterthought. The organisations achieving the strongest results from RAG are those that treat it as a proper engineering discipline – with rigorous evaluation, continuous monitoring, and iterative improvement – rather than a one-off project. With the right architecture, governance, and measurement framework, a RAG system becomes a strategic asset: a reliable, grounded interface between your organisation’s accumulated knowledge and the people who need to access it. Artificial intelligence (AI) continues to evolve, drawing inspiration from both human intelligence and the visions of AI depicted in science fiction. The distinction between AI and humans remains a central topic in the field, as researchers explore how artificial systems can mimic, augment, or differ from the cognitive abilities of humans. McKenna Consultants provides RAG implementation consultancy for UK enterprises, from initial architecture design through to production deployment and ongoing optimisation. If you are planning a RAG deployment and want to ensure it is built on solid technical and regulatory foundations, we would welcome the opportunity to discuss your requirements. --- # Composable Commerce and ERP Integration: Connecting Elastic Path to Your Back Office **Canonical URL:** https://www.mckennaconsultants.com/composable-commerce-and-erp-integration-connecting-elastic-path-to-your-back-office/ **Author:** Nick McKenna **Published:** 9 September 2025 **Category:** B2B eCommerce ## Composable Commerce and ERP Integration: Connecting Elastic Path to Your Back Office ### Composable Commerce and ERP Integration: Connecting Elastic Path to Your Back Office The promise of composable commerce is flexibility: choose best-of-breed components for each capability in your ecommerce stack and orchestrate them to meet your specific business requirements. Composable commerce focuses on modularity and flexibility, allowing businesses to assemble and reassemble components as their needs evolve. Elastic Path delivers on this promise for the commerce engine, providing product catalogue management, cart and checkout, promotions, and order management through a modern API-first architecture. A composable commerce solution enables businesses to customize and rapidly innovate their online stores by leveraging interchangeable components, in contrast to traditional monolithic platforms. But commerce does not exist in isolation. Behind every online storefront sits a back-office ecosystem – ERP systems, warehouse management, financial accounting, procurement – that must remain synchronised with the commerce platform. For UK enterprises running SAP, Microsoft Dynamics 365, Oracle NetSuite, or similar ERP systems, the integration between Elastic Path and the back office is often the most technically demanding aspect of a composable commerce implementation. Achieving seamless ecommerce experiences requires integrating all the components—such as content management, personalization, and commerce capabilities—into a unified platform. At McKenna Consultants, we work as an Elastic Path implementation partner in the UK, helping organisations design and build the integration architecture that connects their composable commerce platform to their existing enterprise systems. Elastic Path’s API-first architecture relies on an application programming interface—a set of rules and protocols that enable different software applications to communicate, share data, and interact with each other—making system integration and modular architecture possible. In this article, we provide a technical guide to the key integration patterns, data flows, and pitfalls involved in connecting Elastic Path to your ERP. Modern commerce architecture, with its defining features of scalability, flexibility, and modularity, sets composable commerce apart from legacy approaches. ### Introduction to Composable Commerce Composable commerce is redefining how modern organizations approach digital commerce. Rather than relying on a single, monolithic ecommerce platform, composable commerce architecture empowers businesses to assemble their ideal solution from a suite of best-of-breed technologies. This approach leverages packaged business capabilities—modular software components that each deliver a specific function, such as product catalog management, checkout, or promotions. By selecting and integrating only the components that align with their specific business needs, organizations can create a commerce platform that is uniquely tailored to their requirements. Composable commerce platforms provide the flexibility to adapt quickly to changing market demands, new customer markets, and evolving business models. This modular approach enables businesses to innovate at such a rapid pace, integrating new technologies and digital touchpoints as they emerge. For companies seeking to move beyond basic ecommerce offerings and deliver a truly differentiated customer experience, composable commerce offers a modern, scalable foundation that aligns with the realities of today’s digital marketplace. ### Benefits of Composable Commerce Composable commerce offers a host of benefits that are particularly valuable for businesses operating in fast-moving, competitive markets. One of the primary advantages is increased flexibility: organizations can select, deploy, and update individual software components as needed, without being constrained by the limitations of legacy systems. This modular approach accelerates innovation, allowing business teams to launch new features, channels, or experiences without waiting for lengthy platform upgrades. Another key benefit is improved customer engagement. By assembling a tech stack that is precisely aligned with their customer journey and business goals, companies can deliver highly personalized and relevant experiences across all digital touchpoints. Composable commerce also helps reduce operational costs by eliminating the need for costly, disruptive updates to monolithic platforms. Instead, businesses can optimize their technology investments, scaling components up or down as demand changes and avoiding unnecessary spend on unused features. Ultimately, the benefits of composable commerce empower organizations to stay agile, competitive, and customer-focused in a rapidly evolving digital landscape. ### Composable Commerce vs Traditional Commerce The difference between composable commerce platforms and traditional commerce platforms is profound. Traditional commerce platforms typically offer an all-in-one solution, bundling basic capabilities such as product management, checkout, and order processing into a single, tightly integrated system. While this approach can be convenient for simple use cases, it often leads to inflexibility and slow adaptation to new business requirements or customer expectations. In contrast, composable commerce platforms are built on a modular nature, where each capability is delivered as an independent, interchangeable component. This allows businesses to deploy, update, or replace individual modules without disrupting the entire system. As a result, organizations can deliver highly differentiated and personalized experiences that set them apart in the digital marketplace. The ability to quickly integrate new technologies, support emerging digital touchpoints, and adapt to changing business models makes composable commerce a superior choice for companies seeking to future-proof their ecommerce presence. ### Headless Commerce Headless commerce is a foundational concept within the broader composable commerce movement. In a headless commerce setup, the front-end user interface—what customers interact with on web, mobile apps, or other digital channels—is decoupled from the back-end commerce functionality. This separation gives developers the freedom to design unique, engaging experiences without being limited by the constraints of a traditional commerce architecture. However, composable commerce architecture takes this flexibility even further. While headless commerce allows for a decoupled front end, composable commerce enables organizations to integrate multiple headless and best-of-breed solutions into a unified, agile tech stack. This means businesses can combine content management systems, payment gateways, search, and other capabilities from different vendors, orchestrating them to create a seamless customer experience. By leveraging composable commerce, companies can rapidly innovate and scale their ecommerce platforms to meet the demands of new digital touchpoints and evolving consumer behaviors. ### Reducing Operational Costs One of the most compelling advantages of composable commerce platforms is their ability to reduce operational costs. Traditional, monolithic systems often require expensive and time-consuming upgrades, especially when integrating new features or adapting to changing business needs. In contrast, the composable commerce approach allows organizations to avoid these legacy system pitfalls by selecting only the components they need and updating them independently. By optimizing the tech stack in this way, businesses can eliminate unnecessary infrastructure and resource costs, scaling each component to match actual demand. This targeted approach not only reduces operational costs but also increases efficiency, as teams are no longer burdened by maintaining or supporting unused features. Ultimately, composable commerce makes it possible for organizations to build a cost-effective, scalable ecommerce platform that evolves alongside their business and delivers value to all their customers. #### Why ERP Integration Is the Critical Path In a monolithic commerce architecture, the commerce engine and back-office functions often share a database or use tightly coupled internal APIs, making integration straightforward but inflexible. Data flows between order management, inventory, and finance are handled within the platform itself. Composable commerce deliberately decouples these concerns. The commerce engine manages the customer-facing transaction, but it does not own inventory truth, financial ledger entries, or fulfilment logistics. These responsibilities belong to the ERP. This means the integration layer between Elastic Path and the ERP is not an afterthought – it is a core architectural component. In contrast, legacy architecture, while once sufficient, now limits agility and scalability, making it difficult to support rapid, multi-channel digital growth. Integration is crucial not just for individual systems, but for the stability and performance of the entire ecosystem of enterprise applications. Without reliable, timely data synchronisation, you face: * **Inventory inaccuracy** – Customers purchasing items that are out of stock because the commerce platform has stale inventory data. * **Order fulfilment delays** – Orders that are captured in Elastic Path but not transmitted to the ERP for processing. * **Pricing discrepancies** – Differences between the price displayed on the storefront and the price recorded in the financial system. * **Revenue recognition failures** – Finance teams unable to reconcile commerce transactions with ledger entries. Getting this integration right is essential for optimizing e-commerce operations, driving business agility, and delivering seamless customer experiences. It is where many composable commerce projects encounter their most significant challenges, and why integration must be treated as a foundational development approach for modern commerce. #### Integration Architecture Patterns in Composable Commerce Architecture There are two primary architectural patterns for connecting Elastic Path to an ERP: event-driven integration and batch synchronisation. Most production implementations use a combination of both, applying the appropriate pattern to each data flow based on latency requirements and data volume. When designing these integrations, it’s important to consider the broader software ecosystem—a modular, interconnected environment of software components that enables easy integration, customization, and scalability. This modularity is key to supporting composable commerce, allowing businesses to adapt quickly as requirements evolve. Middleware is often required to bridge the gap between Elastic Path and ERP systems. Building a flexible technology stack is crucial here, as it allows organizations to select, customize, and reconfigure tools and solutions to meet their unique needs and support innovation. When choosing middleware, it’s important to understand what an open ecosystem essentially means: a flexible, vendor-neutral environment that enables organizations to freely choose and integrate different SaaS products, swap technologies easily, and create a tailored commerce tech stack through seamless integrations. Key considerations when selecting middleware include scalability, security, support for required protocols, and the ability to manage vendor risk. Modular integration helps minimize potential risks associated with third-party technology providers, making it easier to adapt to changing needs and mitigate supply chain or security issues. ##### Event-Driven Integration In an event-driven architecture, changes in one system are published as events and consumed by the other system in near real-time. Elastic Path supports webhooks that fire when significant commerce events occur – order creation, payment capture, order fulfilment status changes. The typical event-driven flow for order processing: 1. A customer completes checkout in Elastic Path. 2. Elastic Path fires an order.paid webhook to the integration layer. 3. The integration layer transforms the order data into the ERP's expected format. 4. The integration layer creates a sales order in the ERP via its API. 5. The ERP processes the order through its fulfilment workflow. 6. The ERP publishes fulfilment status updates, which the integration layer relays back to Elastic Path. Event-driven integration is the right choice for data flows where timeliness matters. Order transmission should happen within seconds of payment capture. Inventory adjustments after a sale should propagate quickly to prevent overselling. **Key considerations for event-driven integration:** * **Idempotency.** Webhooks can be delivered more than once. The integration layer must handle duplicate events gracefully, typically by using the event's unique identifier to detect and skip duplicates. * **Ordering.** Events may arrive out of order. The integration layer must be resilient to receiving a fulfilment update before the corresponding order creation event, or it must implement sequencing logic. * **Error handling and retry.** If the ERP is temporarily unavailable, events must be queued and retried. A dead-letter queue pattern ensures that persistently failing events are captured for investigation rather than silently lost. ##### Batch Synchronisation Batch synchronisation processes data in scheduled intervals – every five minutes, every hour, or once daily. This pattern is appropriate for data flows where near real-time latency is not required and where the data volume makes individual event processing impractical. Common batch synchronisation flows include: * **Product catalogue sync.** Product definitions, descriptions, images, and categorisation are mastered in the ERP or a PIM (Product Information Management) system and synchronised to Elastic Path on a schedule. * **Price list updates.** Pricing, particularly complex B2B pricing with contract-specific rates, tiered discounts, and currency conversions, is often managed in the ERP and pushed to Elastic Path in batches. * **Inventory snapshots.** While critical inventory adjustments (sales, returns) should be event-driven, a periodic full inventory reconciliation ensures that the commerce platform's stock levels remain aligned with the ERP's warehouse data. **Key considerations for batch synchronisation:** * **Conflict resolution.** When both systems can modify the same data (e.g., product descriptions edited in both Elastic Path and the PIM), you need clear rules for which system wins. * **Delta processing.** Full data extracts are expensive. Implement change detection so that batch jobs only process records modified since the last run. * **Monitoring and alerting.** Batch jobs that fail silently are dangerous. Implement monitoring that alerts operations teams when a sync job fails, processes zero records unexpectedly, or takes longer than its normal duration. ##### The Integration Middleware Layer for Packaged Business Capabilities Both patterns benefit from an explicit integration middleware layer rather than direct point-to-point connections between Elastic Path and the ERP. This middleware layer serves several purposes: * **Data transformation.** Elastic Path and the ERP will have different data models. The middleware maps between them, handling differences in field names, data types, enumerations, and structures. * **Orchestration.** Some business processes require coordination across multiple API calls. Creating a sales order in SAP, for example, may require first checking credit limits, then creating the order header, then adding line items, then triggering ATP (available-to-promise) checks. * **Abstraction.** The middleware shields each system from changes in the other. If the ERP is upgraded or replaced, only the middleware needs updating – the Elastic Path integration remains stable. By using middleware, organizations can avoid lock-in to a specific vendor, enabling greater flexibility and ease of swapping out technology components as business needs evolve. Common middleware choices for UK enterprise deployments include Azure Integration Services (Logic Apps, Service Bus, API Management), MuleSoft, and Boomi. The choice depends on existing enterprise architecture, team skills, and licensing considerations. Middleware also enables seamless integration of world class SaaS products, allowing organizations to select and connect best-in-class solutions tailored to their requirements within an open ecosystem. #### Key Data Flows in Detail: Embracing the Modular Nature ##### Order Management The order flow is the most critical integration path. It encompasses order creation, payment reconciliation, fulfilment tracking, and returns processing. **Order creation flow:** When an order is placed in Elastic Path, the integration layer must create a corresponding sales order in the ERP. This involves mapping: * Customer identity (matching the Elastic Path customer to an ERP customer account, or creating a new account for guest checkouts) * Line items (mapping Elastic Path product SKUs to ERP item numbers) * Pricing (unit prices, discounts applied, tax calculations) * Shipping method and address * Payment reference (for reconciliation with the payment gateway) For B2B scenarios common in Elastic Path B2B ecommerce development, additional complexity arises from purchase order references, approval workflows, and account-level credit terms that must be validated against the ERP before order confirmation. **Fulfilment status flow:** Once the ERP processes the order through its warehouse and shipping workflows, fulfilment status must flow back to Elastic Path so that customers can track their orders. This typically involves mapping ERP despatch confirmations and carrier tracking numbers back to the Elastic Path order. **Returns and refunds:** Returns processing often requires bidirectional integration. The return may be initiated on the commerce platform (customer self-service) or in the ERP (warehouse receiving a returned item). Both systems need to be updated with the return status, and the payment gateway may need to process a refund. ##### Inventory Synchronisation Inventory accuracy is arguably the single most impactful integration to get right. Displaying inaccurate stock levels erodes customer trust and creates operational overhead from cancelled orders. The recommended approach combines: * **Event-driven decrements.** When an order is placed, immediately decrement the available quantity in Elastic Path. This provides the fastest possible protection against overselling. * **Periodic reconciliation.** Run a batch sync (typically hourly or more frequently) that reconciles Elastic Path inventory levels with the ERP's warehouse management system. This corrects any drift caused by missed events, manual adjustments in the warehouse, or stock receipts from purchase orders. * **Safety stock buffers.** For high-velocity products, maintain a safety stock threshold in Elastic Path that triggers an “out of stock” status before the ERP's actual stock level reaches zero. This provides a buffer against the inherent latency in any integration. For businesses with multiple warehouses or distribution centres, inventory synchronisation must account for location-based availability. Elastic Path's inventory service supports multi-location stock, but the integration must aggregate or route appropriately based on the customer's delivery location. ##### Pricing and Contract Management Pricing integration varies significantly between B2C and B2B scenarios. **B2C pricing** is relatively straightforward: price lists are maintained in the ERP or a pricing engine and synchronised to Elastic Path. Promotions and discounts may be managed in Elastic Path's promotions engine, in which case the ERP receives the final transacted price rather than needing to know about individual promotions. **B2B pricing** is considerably more complex. Enterprise customers often have negotiated contract prices, volume-based tiering, currency-specific rates, and approval-based discount authorities. These pricing structures are typically mastered in the ERP and must be available to the commerce platform at the point of browse and purchase. The integration approach depends on the complexity: * **Pre-calculated price lists.** For manageable numbers of customers and products, generate customer-specific price lists in the ERP and sync them to Elastic Path. * **Real-time price lookup.** For highly dynamic or complex pricing (e.g., thousands of customers with unique contract terms), call the ERP's pricing API at browse-time to retrieve the applicable price. This adds latency but ensures accuracy. * **Hybrid approach.** Cache frequently accessed prices in Elastic Path with a short TTL, falling back to a real-time ERP lookup on cache miss. This balances performance with accuracy. #### Common Pitfalls and How to Avoid Them ##### Pitfall 1: Underestimating Data Mapping Complexity The conceptual mapping between Elastic Path and an ERP seems simple – an order is an order, a product is a product. In practice, the data models diverge significantly. ERP systems model business entities with decades of accumulated complexity: multiple organisational units, posting periods, tax jurisdictions, material types, and valuation classes. **Mitigation:** Invest time upfront in detailed data mapping workshops. Document every field, every transformation rule, and every edge case. This mapping document becomes the specification for the integration layer and the reference for troubleshooting. ##### Pitfall 2: Ignoring Error Handling The happy path is easy. It is the error scenarios that determine whether an integration is production-ready. What happens when the ERP rejects an order because the customer's credit limit is exceeded? What happens when a product SKU in Elastic Path does not have a corresponding item number in the ERP? **Mitigation:** Design explicit error handling for every integration flow. Define retry policies, dead-letter queues, and alerting thresholds. Implement a monitoring dashboard that provides visibility into integration health. ##### Pitfall 3: Building Point-to-Point Integrations Connecting Elastic Path directly to the ERP without a middleware layer creates tight coupling that becomes increasingly brittle as the number of data flows grows. Adding a new data flow requires modifying both systems, and changes to one system's API risk breaking existing integrations. **Mitigation:** Always use an integration middleware layer. The upfront investment pays for itself in reduced maintenance, easier troubleshooting, and the ability to swap or upgrade individual systems without a full re-integration. ##### Pitfall 4: Not Testing with Production-Volume Data Integrations that work flawlessly with ten test orders may fail spectacularly with ten thousand real orders during a promotional event. Batch synchronisation that completes in seconds with a hundred products may take hours with a catalogue of fifty thousand. **Mitigation:** Performance test with realistic data volumes. Simulate peak-load scenarios (Black Friday, seasonal promotions) and verify that the integration layer can handle the throughput without falling behind. ##### Pitfall 5: Overlooking Master Data Governance in Legacy Systems When product data, customer data, and pricing data exist in multiple systems, the question of “which system is the master?” must be answered definitively for every data entity. Ambiguity leads to conflicting data and manual reconciliation overhead. **Mitigation:** Establish a clear master data governance policy before building integrations. For each data entity, designate a single system of record and ensure that all other systems consume data from that master. #### Middleware Selection for UK Enterprises For UK organisations evaluating middleware for their composable commerce ERP integration, the primary considerations are: * **Azure Integration Services** – A natural choice for organisations already invested in the Microsoft ecosystem. Azure Logic Apps provide low-code integration workflows, Service Bus offers reliable messaging, and API Management provides governance for internal APIs. Strong fit for Microsoft Dynamics 365 integrations. * **MuleSoft** – An enterprise integration platform with extensive pre-built connectors for SAP, Oracle, and Salesforce. Well-suited for organisations with complex multi-system landscapes and dedicated integration teams. * **Boomi** – A cloud-native integration platform with a visual development environment. Good fit for mid-market organisations that need integration capability without maintaining on-premises middleware infrastructure. When selecting middleware, it is important to consider support for global locations, as this impacts the ability to expand into new international markets and adapt to diverse customer needs. The choice should align with existing enterprise architecture and team capabilities rather than being made in isolation for the commerce project. #### Planning Your Integration For organisations embarking on a composable commerce implementation with Elastic Path, our recommendation is to begin integration planning at the same time as commerce platform design – not after. The integration architecture influences decisions about data ownership, event schemas, API contracts, and operational workflows that are difficult to change retrospectively. Modern organizations span multiple markets and channels, making comprehensive integration planning essential to ensure seamless operations across all digital touchpoints. With digital touchpoints emerging constantly, integration strategies must be adaptable to support new channels and customer interactions as they arise. It is also crucial to tailor integration to your organization's specific business needs, ensuring the architecture supports unique workflows, compliance requirements, and growth objectives. As an Elastic Path implementation partner in the UK, McKenna Consultants brings deep experience in composable commerce ERP integration across multiple ERP platforms and middleware technologies. Whether you are migrating from a monolithic platform or building a greenfield B2B commerce capability, we can help you design an integration architecture that is reliable, performant, and maintainable. #### Conclusion Integrating Elastic Path with your enterprise ERP is the linchpin of a successful composable commerce implementation. The flexibility and best-of-breed component selection that composable architecture provides is only valuable if the components work together reliably. Composable commerce enables unified commerce by integrating all retail functions—such as content management, order fulfillment, delivery, inventory, and customer engagement—into a cohesive, scalable system. In contrast, legacy platforms simply cannot keep up with the demands of modern integration, often struggling to adapt to new digital touchpoints and evolving customer expectations. By applying the right integration patterns – event-driven for time-sensitive flows, batch for bulk data synchronisation, and a robust middleware layer to manage transformation and orchestration – organisations can achieve the real-time data accuracy that customers and operations teams expect. The investment in thoughtful integration architecture, comprehensive error handling, and production-grade monitoring distinguishes composable commerce implementations that deliver long-term value from those that create ongoing operational headaches. With the right approach and experienced guidance, composable commerce ERP integration becomes a competitive advantage rather than a technical liability. --- # Event-Based Office Add-In Activation: Automating Document Workflows **Canonical URL:** https://www.mckennaconsultants.com/event-based-office-add-in-activation-automating-document-workflows/ **Author:** Nick McKenna **Published:** 2 September 2025 **Category:** Microsoft Office Add-In Developer ## Outlook Add-In: Event-Based Office Activation for Automating Document Workflows ### Event-Based Office Add-In Activation: Automating Document Workflows The traditional model for Microsoft Office add-ins has always been reactive. A user clicks a button, opens a task pane, or selects a menu item, and the add-in responds. This interaction pattern has served organisations well for years, but it imposes a fundamental limitation: every automated action requires a human trigger. An 'office app' refers to applications like Word, Excel, or Outlook, which can be extended with add-ins to enhance their functionality. With the event-based activation model that Microsoft has been advancing through 2025, that paradigm is shifting. Office add-ins, including a new add in, can now launch automatically in response to document lifecycle events – when a document is created, opened, edited, or sent. For enterprises that depend on compliance checking, data classification, and automated workflows, this represents a significant evolution in what custom Office add-in development can achieve. At McKenna Consultants, we have been building custom Office add-ins for organisations across the UK for over two decades. In this article, we explore how event-based Office add-in activation works, the use cases it unlocks, and the technical considerations that developers and IT decision-makers need to understand, such as how to trigger actions when users create a new document, open, edit, or send files. #### From Reactive to Proactive: Understanding the Shift Traditional Office add-ins operate within a request-response cycle. The user initiates an action, and the add-in executes logic in response. These actions are typically accessed from the 'home tab' or a dedicated 'ribbon tab' in the Office interface. This works well for tools that users interact with intentionally – a mail merge utility, a template selector, or a data lookup panel. However, many business processes need to happen regardless of whether the user remembers to trigger them. Compliance checks should run on every outgoing email. Document classification should occur when a file is first created. Metadata insertion should happen transparently, without requiring the user to open a task pane and press a button. Event-based activation addresses this gap. Rather than waiting for user interaction, an add-in registers interest in specific events and is activated automatically when those events occur. The add-in runs its logic in the background, often completing its work before the user is even aware it has been invoked. #### The Event-Based Activation Model ##### Supported Events and Platforms Microsoft has progressively expanded the range of events available for add-in activation. In Outlook, event-based activation has been available since 2022 for events such as OnNewMessageCompose, OnMessageSend, and OnAppointmentSend. Through 2024 and into 2025, this has extended to include events in Word, Excel, and PowerPoint, covering document open, document creation, and content change scenarios. Event-based activation is available across multiple office application types, allowing developers to extend functionality in Outlook, Word, Excel, and PowerPoint. The key events that are most relevant for enterprise workflows include: * **OnNewMessageCompose / OnNewAppointmentOrganizer** – Triggered when a user begins composing a new email or calendar event in Outlook. * **OnMessageSend / OnAppointmentSend** – Triggered when the user attempts to send an email or meeting invitation, allowing the add-in to intercept and validate before sending. * **OnMessageReadWithCustomHeader** – Enables add-ins to activate when opening emails containing specific internet headers, useful for processing inbound communications from partner systems. * **Document open events** – Available in Word and Excel, these trigger when a file is opened, enabling immediate validation, metadata population, or content classification. These events are also supported for word add ins, ensuring consistent automation and integration across office applications. PowerPoint add-ins can leverage similar event-based activation to enhance powerpoint presentations with interactive or dynamic content. Event-based activation for Office Add-ins is supported across different operating system platforms, including Windows, MacOS, and Office for the web, ensuring broad compatibility and deployment flexibility. ##### The Unified Manifest File and Event Registration Event-based activation is configured through the unified manifest format that Microsoft has been promoting as the successor to the legacy XML manifest. The manifest defines the add-in's capabilities, permissions, and integration points, and includes various settings for configuration, such as how the add-in integrates with Office, display options, and deployment configurations across different environments. In the unified manifest, event registrations are declared in the extensions section, specifying which events the add-in responds to and which JavaScript functions handle each event. A simplified example of event registration in the unified manifest: ``` { "extensions": [ { "requirements": { "capabilities": [ { "name": "Mailbox", "minVersion": "1.13" } ] }, "runtimes": [ { "id": "eventsRuntime", "type": "general", "code": { "page": "https://contoso.com/events.html" } } ], "autoRunEvents": [ { "events": [ { "type": "newMessageComposeCreated", "actionId": "onNewMessageCompose" }, { "type": "messageSending", "actionId": "onMessageSend" } ] } ] } ] } ``` The unified manifest approach for Office add-in development brings several advantages over the legacy XML manifest (which is an xml file): it is more concise, aligns with the Teams app manifest format, and positions add-ins for integration with Microsoft 365 Copilot agent extensibility – a topic we will return to later in this article. For detailed information about the manifest structure and its role in add-in deployment, consult the official Microsoft documentation or reach out to our team for guidance. ##### Runtime Behaviour When an event fires, the Office host launches a lightweight JavaScript runtime to execute the registered handler function. Note that office desktop application launches can introduce delays during the first event activation, as dependencies are loaded and initialized. This runtime is separate from the task pane runtime, meaning the add-in’s event handling code runs independently of any visible UI. Before the handler function is invoked, it is essential to ensure all prerequisites are met before debugging starts to avoid issues during development and testing. The handler function receives a context object specific to the event type. For OnMessageSend, the handler can inspect the message properties – recipients, subject, body, attachments – and either allow the send to proceed or present a notification prompting the user to make changes. Edge Chromium can be used as a testing environment for sideloading add-ins, helping to streamline the development and debugging process. ``` function onMessageSendHandler(event) { Office.context.mailbox.item.to.getAsync(function (result) { const recipients = result.value; const hasExternalRecipient = recipients.some( r => !r.emailAddress.endsWith("@contoso.com") ); if (hasExternalRecipient) { event.completed({ allowEvent: false, errorMessage: "External recipients detected. Please review before sending." }); } else { event.completed({ allowEvent: true }); } }); } ``` The event.completed() call is critical. Every event handler must call this method to signal that processing is finished. Failing to do so will cause the Office host to time out, degrading the user experience. After finished testing, developers should select stop previewing to properly close the add-in and clear any associated resources. #### Enterprise Use Cases for Event-Based Activation ##### Automatic Compliance Checking For regulated industries – financial services, healthcare, legal – every outgoing communication must comply with organisational policies. Event-based activation on OnMessageSend enables compliance add-ins to automatically scan emails for sensitive data, restricted recipients, or missing classifications before the message leaves the organisation. A compliance add-in may require specific permissions or user accounts to function properly; in other words, the add in requires certain access to perform these checks. This removes the reliance on users remembering to run a compliance check manually. The add-in intercepts every send action, performs its validation—including extracting or validating details such as recipient information or classification data—and either allows the send to proceed or presents a clear explanation of why it was blocked. McKenna Consultants has built custom Outlook add-in solutions for UK organisations where this pattern is essential. By automating compliance at the point of send, organisations reduce risk without adding friction to legitimate communications. ##### Document Classification and Metadata Insertion When a new Word document or Excel workbook is created, event-based activation can automatically apply a classification label, insert standard metadata fields, or populate header and footer content based on the user's department or project context. This is particularly valuable for organisations that enforce information governance policies. Rather than relying on users to manually classify documents, the add-in handles classification proactively, reducing the volume of unclassified documents that accumulate in SharePoint and OneDrive. ##### Data Pre-Population in Composing Workflows For sales teams, support organisations, or professional services firms, new email compositions frequently require standard data elements – client reference numbers, case identifiers, project codes, or compliance disclaimers. An event-based add-in triggered on OnNewMessageCompose can query an internal CRM or project management system, or connect to your own web application for data retrieval, and pre-populate these fields automatically. This pattern means the add-in integrates seamlessly with CRM or project management tools to automate data population, aligning with the CRM integration scenarios that we have implemented for clients building custom Outlook add-ins. The difference is that the data insertion happens automatically rather than requiring the user to open a task pane and initiate a lookup. ##### Inbound Email Processing The OnMessageReadWithCustomHeader event is particularly powerful for organisations that receive structured communications from partner systems. When an email arrives with a specific internet header – indicating it originated from a particular workflow engine, procurement system, or automated notification service – the add-in activates automatically and can extract structured data from the message, present a contextual action panel, or log the receipt in an internal system. #### Performance Considerations Event-based activation introduces code execution at sensitive moments in the user's workflow. When an add-in runs on OnMessageSend, any delay is directly felt by the user as latency between pressing Send and the message departing. Poor performance here will generate complaints and may lead administrators to disable the add-in entirely. ##### Cold Start and Runtime Initialisation The JavaScript runtime used for event handling has a cold start cost. The first time an event fires after the runtime has been idle, there is overhead in loading the runtime, fetching the event handler module, and initialising any dependencies. Subsequent invocations within the same session are faster. To minimise cold start impact: * **Keep event handler modules small.** Only include the code necessary for event processing. Avoid importing large libraries or frameworks. * **Defer non-critical logic.** If the event handler needs to log telemetry or update a remote system, do so asynchronously after calling event.completed(). * **Use the LaunchEvent extension point wisely.** Registering for too many events increases the frequency of runtime activations and the aggregate performance cost. ##### Timeout Constraints Microsoft imposes strict timeout limits on event handlers. For OnMessageSend events, the handler typically has five minutes to complete, though the practical expectation is that processing should complete within seconds. If the handler does not call event.completed() within the timeout window, the Office host will proceed as if the event was allowed, potentially bypassing the intended validation. Design event handlers to fail safe. If an external service is unavailable, decide whether the appropriate behaviour is to allow the action to proceed with a warning or to block it and notify the user. ##### Testing Under Realistic Conditions Event-based add-ins must be tested under conditions that reflect production usage. This means testing on machines with typical enterprise configurations – Group Policy restrictions, proxy servers, VPN connections – and measuring the actual latency experienced by users. Laboratory conditions with fast local networks do not reveal the performance characteristics that users will encounter. #### Office Add-In Security Security is a cornerstone of successful Office add in development, especially as organisations increasingly rely on Microsoft Office add ins to automate document workflows and integrate with sensitive business systems. As Office add ins become more powerful—handling compliance, data classification, and CRM integration—the need to safeguard user data and organisational assets grows ever more critical. Developing secure Office add ins requires a comprehensive approach that spans secure coding, robust authentication, and vigilant maintenance. Office add in includes two basic components: a manifest file (often an XML manifest file or unified manifest) and a web application hosted on a secure web server or web hosting service. Each component must be designed with security in mind to prevent vulnerabilities such as data breaches, malware injection, and unauthorised access. Modern tools like Visual Studio Code and the Office JavaScript APIs empower developers to create office add ins that are both functional and secure. Leveraging these tools, along with Microsoft’s extensive documentation and security guidelines, helps ensure that your office add in project meets enterprise-grade security standards. For example, integrating Microsoft Graph API and Microsoft Azure enables secure authentication and authorisation, ensuring that only permitted users can access sensitive data within your office document, excel spreadsheet, or word document. #### Integration with Microsoft 365 Copilot One of the most significant developments in the Office add-in ecosystem during 2025 is the convergence between add-ins and Microsoft 365 Copilot extensibility. The unified manifest format positions add-ins to be discoverable and invocable by Copilot agents, creating a pathway for Office add-in Copilot agent integration. Developing Office add ins for Copilot integration now requires careful consideration of best practices, platform support, and secure integration methods to ensure compatibility with both traditional Office workflows and AI-driven scenarios. In this model, an event-based add-in does not only respond to document lifecycle events. It can also expose capabilities that Copilot can invoke on behalf of the user. For example, a compliance checking add-in might be invoked by Copilot when a user asks it to “review this email for compliance issues before I send it.” This convergence means that organisations investing in event-based add-in development today are simultaneously building the foundation for Copilot integration. The same business logic, the same API connections, and the same compliance rules can be surfaced through both the automated event model and the conversational Copilot interface. Add-ins can be distributed and discovered via the Microsoft Marketplace, Office Store, or Microsoft AppSource, making it easier for organisations to deploy solutions broadly and manage access across their teams. For organisations considering custom Outlook add-in development in the UK, this dual-use potential adds significant strategic value to the investment. #### Architectural Recommendations ##### Separate Event Logic from UI Logic Event handlers and task pane code should be maintained as separate modules with shared business logic libraries. This separation ensures that event handlers remain lightweight and that changes to the UI do not inadvertently affect automated processing. Dialog boxes are generally discouraged in Outlook Add-In development due to their slow and clunky user experience; task panes are preferred for user interactions as they provide a more efficient and seamless interface. ##### Centralise Configuration Compliance rules, classification taxonomies, and data mapping configurations should be stored centrally – in a configuration service, SharePoint list, or similar store – rather than hardcoded in the add-in. This allows administrators to update rules without redeploying the add-in. ##### Plan for Graceful Degradation Not all Office clients support event-based activation. Outlook on the web and newer versions of Outlook for Windows support the full event model, but older versions of Outlook may not. Design your add-in to detect capability support and fall back to manual activation where event-based activation is unavailable. ``` if (Office.context.requirements.isSetSupported("Mailbox", "1.13")) { // Event-based activation is available } else { // Fall back to task pane or ribbon-based activation } ``` ##### Implement Observability Because event-based add-ins run without visible user interaction, failures can be silent. Implement robust logging and monitoring so that administrators can detect when event handlers are failing, timing out, or producing unexpected results. Application Insights or a similar telemetry platform is essential for production deployments. #### Getting Started with Event-Based Add-In Development For organisations considering event-based Office add-in activation, the starting point is identifying the business processes that currently rely on user-initiated actions but would benefit from automation. To get started, users can install add ins by clicking the add ins button or get add ins button in the Office Ribbon—typically found in the Insert tab—to access and manage available add-ins. Many free add ins are available through Microsoft AppSource, and some offer a free tier for basic functionality, making it easy to try out solutions before committing. Common candidates include: * Email compliance and data loss prevention * Document classification and labelling * Metadata population and template application * CRM data synchronisation on compose * Inbound email routing and categorisation McKenna Consultants has extensive experience in custom Outlook add-in development for UK enterprises, including add-ins that integrate with CRM systems, enforce compliance policies, and automate document workflows. If you are exploring event-based activation for your organisation, our team can advise on architecture, implementation, and deployment strategy. Event-based Office add-in activation represents a fundamental shift in how organisations can automate document and communication workflows within Microsoft 365. By moving from a reactive model – where users must remember to trigger add-in functionality – to a proactive model where add-ins activate automatically in response to events, enterprises can enforce compliance more reliably, reduce manual effort, and ensure consistent application of business rules. Combined with the unified manifest format and the emerging integration pathway with Microsoft 365 Copilot, event-based activation positions Office add-ins as a strategic automation capability rather than a simple productivity tool. The key to success is careful attention to performance, graceful degradation across client versions, and robust observability for handlers that run without direct user visibility. With the right architecture and implementation approach, event-based add-ins deliver measurable value from day one. --- # Migrating from Legacy Document Management to CSPP Plus **Canonical URL:** https://www.mckennaconsultants.com/migrating-from-legacy-document-management-to-cspp-plus/ **Author:** Nick McKenna **Published:** 26 August 2025 **Category:** CSPP WOPI ## Migrating from A Legacy Document Management solution to CSPP Plus Organisations across the UK are still running legacy on-premises document management systems — platforms that were deployed a decade or more ago and have served the business reliably but are now showing their age. The documents are accessible internally, but enabling modern collaborative editing, mobile access, and browser-based document viewing requires users to download files, edit them locally, and re-upload. It is a workflow that belongs to 2010, not 2025. The path forward is the Cloud Storage Partner Program Plus (CSPP Plus), Microsoft's programme that allows third-party applications to embed Microsoft 365 document editing — Word, Excel, PowerPoint, and Visio — directly in the browser. The underlying technology is WOPI, the Web Application Open Platform Interface protocol, which governs how a host application (your document management system) communicates with Microsoft's Office Online servers. At McKenna Consultants, we are one of the UK's leading WOPI integration consultancies. We have helped SaaS companies and enterprise organisations integrate WOPI into their platforms, navigate the CSPP Plus onboarding process, and go live with Microsoft 365 document editing. This article is a practical guide for organisations considering the migration from legacy document management to a CSPP Plus-enabled architecture. ## Why Legacy DMS Platforms Are Becoming a Liability Legacy document management systems — whether built on SharePoint on-premises, OpenText, Documentum, Alfresco, or a bespoke internal solution — typically share several characteristics that are increasingly problematic. ### No Browser-Based Editing Users must download a document, edit it in a locally installed copy of Microsoft Office, and upload the changed file. This creates version control problems, prevents real-time collaboration, and excludes users on devices where Office is not installed. ### No Real-Time Co-Authoring When two people need to work on the same document simultaneously, legacy systems offer no solution beyond "wait until the other person is finished." File locking prevents data loss but kills productivity. The modern expectation — multiple cursors in the same document, changes merging in real time — is simply not available. ### Limited Mobile Access On-premises DMS platforms are typically accessible only from the corporate network or through a VPN. Mobile access is either unavailable or limited to read-only viewing through a clunky web interface. Remote and hybrid workers are underserved. ### Mounting Maintenance Costs The servers, storage arrays, backup infrastructure, and networking equipment that support on-premises document management require ongoing maintenance, patching, and eventual replacement. The operational cost is substantial and rising, particularly as hardware reaches end-of-life. ### Integration Constraints Modern business applications — CRM, ERP, project management, HR systems — expect to integrate with document storage through APIs. Legacy DMS platforms often lack modern API surfaces, forcing integrations through file system access, database queries, or vendor-specific protocols that are expensive to maintain and fragile to extend. ## What CSPP Plus Enables CSPP Plus, through WOPI, enables your document management system to offer the same editing experience that users get in SharePoint Online and OneDrive. When a user clicks on a Word document in your application, it opens in the browser for full-featured editing — formatting, track changes, comments, real-time co-authoring — without leaving your application's interface. The key capabilities include: - **Full-fidelity editing.** Word, Excel, PowerPoint, and Visio documents render and edit with the same fidelity as the desktop Office applications. - **Real-time co-authoring.** Multiple users can edit the same document simultaneously, with changes merging in real time and each user's cursor visible to others. - **View-only rendering.** Documents can be displayed in read-only mode for users who should not have edit access, eliminating the need for PDF conversion for viewing purposes. - **Cross-platform access.** Browser-based editing works on any device with a modern browser — Windows, Mac, Linux, iOS, Android, Chromebooks. - **Embedded experience.** The Office editor loads within your application's interface (typically in an iframe), preserving your application's navigation, branding, and user context. ## Architecture Patterns for Migration Migrating a legacy DMS to CSPP Plus does not necessarily mean replacing the entire system. Several architecture patterns allow you to introduce WOPI-based editing alongside your existing document storage. ### Pattern 1: WOPI Layer on Existing Storage The most conservative approach adds a WOPI host layer on top of your existing document storage infrastructure. Your legacy DMS continues to manage the file system, metadata, permissions, and search. A new WOPI host service sits alongside it, implementing the WOPI protocol endpoints that Microsoft's Office Online servers call when a user opens or saves a document. This pattern preserves your existing investment in document management infrastructure while enabling modern editing capabilities. It is particularly suitable when: - The legacy DMS has a stable API or file system interface that the WOPI host can consume - Document metadata, permissions, and workflows are heavily customised and would be expensive to migrate - The organisation wants to pilot WOPI-based editing with minimal disruption before committing to a larger migration The WOPI host service needs to implement several core endpoints. **CheckFileInfo** returns metadata about a file — its name, size, owner, permissions, and various capability flags. **GetFile** returns the file contents as a binary stream. **PutFile** accepts updated file contents after editing. **Lock** and **Unlock** manage file locking to prevent conflicting edits. ### Pattern 2: Hybrid Cloud-and-On-Premises For organisations that are not ready to move all document storage to the cloud but want to start the transition, a hybrid architecture allows new documents to be created in cloud storage while legacy documents remain on-premises. Both storage backends are fronted by a unified WOPI host that routes requests to the appropriate storage layer based on document location. This pattern works well when: - The organisation has a long-term cloud migration strategy but cannot move everything at once - Regulatory or compliance requirements mandate that certain document categories remain on-premises - The volume of legacy documents is too large for a practical bulk migration ### Pattern 3: Full Cloud Migration The most transformative approach migrates all document storage to a cloud-native backend — Azure Blob Storage, AWS S3, or a cloud-native DMS — with a WOPI host built on top. This eliminates the on-premises infrastructure entirely and provides the cleanest architecture for long-term maintenance. This pattern is appropriate when: - The organisation is committed to a cloud-first strategy - On-premises infrastructure is approaching end-of-life - The legacy DMS has limited customisation that can be replicated in the new platform - Data residency requirements can be met by the chosen cloud provider's regional deployments ## WOPI Discovery and Domain Allow-Listing Before your WOPI host can connect to Microsoft's Office Online servers, you must complete the CSPP Plus onboarding process. A critical component of this process is domain allow-listing, and understanding the timeline is essential for project planning. ### The WOPI Discovery Process WOPI discovery is the mechanism by which your host application learns which Office Online actions are available and how to invoke them. Your application fetches a discovery XML document from Microsoft that lists the supported file types, the available actions (view, edit, editnew), and the URLs for each action. In production, the discovery endpoint is specific to your CSPP Plus agreement. During development and testing, Microsoft provides a test environment (the "dogfood" environment) that allows you to develop and validate your WOPI implementation before going live. ### Domain Allow-Listing Timeline Microsoft must allow-list the domains from which your WOPI host will serve documents. This is a security requirement — it ensures that only approved applications can invoke Office Online editing. The allow-listing process typically takes 4-5 weeks from submission to activation. This timeline is controlled by Microsoft and cannot be significantly accelerated. It is one of the most common sources of project delay because teams do not account for it in their planning. **Plan for this timeline from the start.** Submit your domain allow-listing request as early as possible in the project — ideally as soon as you have confirmed the production domain names. You can develop and test against the dogfood environment while waiting for production allow-listing. If your application serves documents from multiple domains (for example, if you white-label the platform for different clients), each domain must be individually allow-listed. For SaaS platforms with many customer subdomains, discuss the domain pattern with Microsoft during the onboarding process to agree an appropriate allow-listing approach. ## Proof Key Validation WOPI proof key validation is a security mechanism that ensures the WOPI requests your host receives genuinely originate from Microsoft's Office Online servers and have not been tampered with in transit. Implementing proof key validation correctly is mandatory for CSPP Plus compliance. ### How Proof Keys Work When Microsoft's Office Online servers send a request to your WOPI host (for example, a CheckFileInfo or GetFile request), they include two HTTP headers: `X-WOPI-Proof` and `X-WOPI-ProofOld`. These headers contain cryptographically signed data that your host can verify using the public keys published in the WOPI discovery XML. The signed data includes the access token, the request URL, and a timestamp. Your host reconstructs the expected signed data from the incoming request, then verifies the signature using Microsoft's public key. If the verification fails, the request should be rejected. ### Common Implementation Pitfalls Proof key validation is conceptually straightforward but has several implementation details that commonly cause failures. **URL encoding mismatches.** The URL used in signature verification must exactly match the URL as constructed by Microsoft, including query string parameter ordering and encoding. A common error is to normalise or re-encode the URL before verification, which changes the bytes that were signed and causes verification to fail. **Key rotation handling.** Microsoft periodically rotates the proof keys published in the discovery XML. The `X-WOPI-ProofOld` header exists to handle the transition period — it contains the signature made with the previous key. Your implementation must check both the current and old proof keys to avoid rejecting legitimate requests during key rotation. **Timestamp validation.** The timestamp in the proof data should be checked to prevent replay attacks. Requests with timestamps more than 20 minutes old should be rejected, with appropriate allowance for clock skew. **Byte order.** The proof signature is constructed from byte arrays in a specific order (access token bytes, URL bytes, timestamp bytes), each prefixed with a 4-byte big-endian length. Getting the byte order or length encoding wrong is a frequent source of validation failures. McKenna Consultants has extensive experience with WOPI proof key validation across multiple technology stacks. If your team is encountering validation failures during development, our WOPI integration consultancy service can help diagnose and resolve the issues efficiently. ## Data Residency Considerations For UK and European organisations, WOPI data residency compliance is an increasingly important consideration. When a user edits a document through Office Online, the document content is transmitted to Microsoft's servers for rendering and editing. Understanding where that processing occurs is essential for regulatory compliance. CSPP Plus now supports the ComplianceDomainPrefix property, which allows hosts to specify which Microsoft regional data centre should process documents. For UK organisations subject to data sovereignty requirements — financial services firms, healthcare providers, government contractors — this capability ensures that document content is processed within approved jurisdictions. When planning your migration, consider: - **Which Microsoft data centres are acceptable** for your compliance requirements (UK South, EU regions, etc.) - **Whether different document categories** have different residency requirements (public documents vs. regulated content) - **How to configure the ComplianceDomainPrefix** in your WOPI host to enforce the correct routing - **Documentation requirements** — regulators may ask you to demonstrate where document processing occurs ## Planning Your Migration Project Based on our experience delivering WOPI integrations, here is a practical project structure for migrating a legacy DMS to CSPP Plus. ### Phase 1: Assessment and Planning (Weeks 1-3) - Audit the legacy DMS: storage architecture, document volumes, metadata schema, permission model, existing integrations - Select the architecture pattern (WOPI layer, hybrid, or full cloud migration) - Identify production domains and submit the allow-listing request to Microsoft - Define the WOPI host technology stack (.NET, Java, Node.js — the protocol is language-agnostic) - Establish the development environment and obtain dogfood environment access ### Phase 2: Core WOPI Implementation (Weeks 3-8) - Implement the core WOPI endpoints: CheckFileInfo, GetFile, PutFile, Lock, Unlock, RefreshLock - Implement proof key validation - Implement the file URL generation and access token management - Build the integration layer between the WOPI host and the legacy storage backend - Test against the Microsoft dogfood environment ### Phase 3: Advanced Features (Weeks 6-10) - Implement co-authoring support (concurrent editing, merge handling) - Implement the PostMessage API for communication between the Office editor and your host application's UI - Add support for additional file operations: rename, delete, create new - Implement user identity mapping between your DMS user accounts and WOPI user identifiers - Configure data residency settings via ComplianceDomainPrefix ### Phase 4: Testing and Compliance (Weeks 8-12) - Run the Microsoft WOPI Validator tool to verify protocol compliance - Perform load testing to validate performance under concurrent editing scenarios - Complete security testing, including proof key validation edge cases - Conduct user acceptance testing with representative document types and workflows - Prepare compliance documentation for CSPP Plus review ### Phase 5: Go-Live (Weeks 10-14) - Confirm production domain allow-listing is active (submitted in Phase 1, typically ready by now) - Deploy the WOPI host to production infrastructure - Configure monitoring and alerting for WOPI endpoint health and performance - Execute a phased rollout — start with a pilot user group before enabling for all users - Monitor error rates, editing session durations, and user feedback during the rollout period The total timeline is typically 12-14 weeks for a straightforward implementation, extending to 16-20 weeks for complex environments with hybrid storage, extensive permission models, or stringent compliance requirements. ## Common Migration Scenarios ### Scenario: SharePoint On-Premises to Cloud DMS with WOPI Organisations running SharePoint Server on-premises often assume the only migration path is to SharePoint Online. While that is one option, it is not the only one. If your document management requirements have outgrown SharePoint's model — or if you are building a SaaS product that needs embedded editing — implementing a custom WOPI host with cloud storage gives you more control over the user experience, the permission model, and the integration architecture. ### Scenario: Bespoke DMS to Microsoft 365 Document Editing Many organisations built bespoke document management systems 10-15 years ago, typically on .NET with SQL Server and Windows file shares. These systems work but cannot offer browser-based editing. Adding a WOPI host layer allows you to preserve the bespoke business logic, metadata schemas, and workflows that your users depend on while enabling Microsoft 365 editing capabilities. ### Scenario: SaaS Platform Adding Document Editing SaaS companies that manage documents as part of their platform — legal tech, construction management, insurance, healthcare — can differentiate their product by offering in-app Microsoft 365 editing. This is one of the most common CSPP Plus use cases we see at McKenna Consultants, and the Microsoft 365 document editing SaaS integration pattern is well-established. ## Getting Started The first step in any WOPI migration project is understanding your current document management architecture and defining your target state. Which documents need editing capabilities? Which architecture pattern is appropriate? What compliance and data residency requirements apply? McKenna Consultants provides WOPI integration consultancy for UK organisations at every stage of the CSPP Plus journey — from initial assessment and architecture design through implementation, testing, and go-live. We have deep expertise in the WOPI protocol, proven experience with the CSPP Plus onboarding process, and the technical skill to integrate with legacy systems of all kinds. If you are considering a migration from legacy document management to CSPP Plus, contact us to discuss your requirements and timeline. --- # AI First Governance and the EU AI Act: What Businesses Need to Know **Canonical URL:** https://www.mckennaconsultants.com/ai-governance-and-the-eu-ai-act-what-businesses-need-to-know/ **Author:** Nick McKenna **Published:** 19 August 2025 **Category:** Artificial Intelligence ## AI Governance and the EU AI Act: What Businesses Need to Know The EU AI Act is now in force. The general-purpose AI (GPAI) obligations became effective in August 2025, and the high-risk system requirements follow in August 2026. For UK businesses, the instinct may be to dismiss this as European regulation that does not apply domestically. That instinct is wrong. If your AI-powered product or service is used by customers in the EU — or if your AI processes data originating from EU citizens — the AI Act’s obligations reach you regardless of where your servers are located or where your company is incorporated. Artificial intelligence was established as an academic discipline in 1956, rooted in computer science, and has since experienced cycles of optimism and disappointment as well as rapid recent advancements. The field draws on computer science to advance technologies such as artificial neural networks and deep neural networks, which are foundational to modern AI. AI algorithms now power a wide range of products and services, enabling automation, data analysis, and personalized experiences. Deep neural networks, with their multiple hidden layers, and artificial neural networks are crucial for modeling complex data relationships and underpinning deep learning applications. Generative AI can produce not only text and images but also other forms such as videos, audio, and software code. AI systems excel at specific tasks, such as playing games, operating in industry-specific applications, or executing short, goal-oriented actions. In transportation, AI enables autonomous vehicles to perceive their environment and make complex decisions. In marketing and branding, AI empowers creatively engaging brands to develop innovative and captivating brand experiences. The knowledge gained by AI models through learning from data improves their performance and ability to transfer skills to new problems. AI is also used for solving math problems, with specialized models and training approaches designed for this purpose. The Turing test remains a historical benchmark for evaluating machine intelligence. AI systems can simulate emotions to mimic human feelings, though they do not possess genuine consciousness. This new reality requires organizations to adapt quickly to the rapid advancements in AI and the societal shifts they bring. Becoming an AI first organization means fundamentally redesigning strategies, workflows, and culture around AI capabilities, rethinking jobs, developing new skills, and achieving early wins. Practitioners bold within organizations are actively experimenting with AI and driving innovation, while some leaders have mandated AI experimentation for all his employees to ensure comprehensive organizational change. The chief digital officer plays a key role in leading digital transformation initiatives and leveraging emerging technologies, as seen in the coffee giant's mobile payment solution that integrated innovative payment methods with brand strategy. Legendary tech visionaries and former chief digital officers have shaped digital transformation and technology strategy, inspiring companies to embrace AI-driven change. This article is not legal advice. It is a practical guide for development teams and technical leaders who need to understand what the EU AI Act requires, how the UK regulatory approach differs, and what concrete steps your engineering organisation should be taking now. At McKenna Consultants, we help businesses implement AI systems with appropriate governance built in from the architecture level, and the patterns described here reflect real-world implementation experience. ## Introduction to Artificial Intelligence Artificial intelligence (AI) is transforming the way businesses operate, enabling computer systems to perform tasks that once required human intelligence—such as problem solving, decision making, and learning from experience. At its core, artificial intelligence leverages advanced algorithms and vast amounts of data to analyze information, recognize complex patterns, and make predictions, often without being explicitly programmed for every scenario. AI systems come in many forms, from machine learning models that learn to identify trends in data, to natural language processing tools that understand and generate human language, to computer vision systems that interpret high quality images and video. AI researchers are continually pushing the boundaries of what these systems can achieve, drawing inspiration from the human brain and the intricacies of human intelligence to develop artificial neural networks and deep learning architectures with multiple layers capable of tackling a broad range of real world applications. One of the most exciting developments in recent years is the rise of generative AI. Generative AI tools, such as large language models, can create brand new content—text, images, music, and even computer code—at almost no cost. These generative AI applications are already changing marketing forever, enabling creative professionals and marketers to launch campaigns, analyze data, and engage customers in ways that were once the stuff of science fiction. AI agents, including virtual assistants, are now able to perform tasks like scheduling, customer support, and data analysis, using natural language processing and machine learning to interact with users in a human-like manner. The rapid rise of AI has been fueled by advances in computing power, the availability of massive training data, and breakthroughs in deep learning and neural networks. Tech visionaries such as Microsoft CEO Satya Nadella and OpenAI’s leadership have made astonishing statements about the potential of artificial intelligence AI to reshape industries and society. From self driving cars that use computer vision and deep neural networks to navigate roads, to the coffee giant’s mobile payment and loyalty programs powered by AI, the impact of AI is already visible in our daily lives. However, the deployment of AI systems is not without challenges. AI models can inadvertently perpetuate algorithmic bias if trained on skewed or incomplete data, leading to unfair or discriminatory outcomes. There are also concerns about job displacement, as AI tools and autonomous agents take on repetitive tasks and even some creative or problem solving roles previously reserved for humans. As AI systems become more capable—approaching the realm of artificial general intelligence—businesses must grapple with the implications for their workforce, brand strategy, and long-term competitiveness. Despite these challenges, the benefits of adopting an AI first strategy are significant. AI can help organizations future proof business operations, unlock new opportunities for innovation, and solve complex problems in fields ranging from healthcare and finance to eCommerce and education. Companies that embrace an AI first world—investing in AI research, integrating AI tools into their platforms, and reimagining their approach to problem solving—are well positioned to achieve early wins and thrive in the brand new world of digital transformation. For both large enterprises and smaller businesses, the adoption of AI is no longer optional. Whether deploying AI-powered chatbots to enhance customer service, using machine learning to analyze new data and optimize marketing campaigns, or building agentic AI systems to automate business processes, the possibilities are vast. By understanding the fundamentals of artificial intelligence and its potential applications, organizations can begin to creatively engage brands, change brand strategy, and lead in the AI first arena. As the rest of this article will explore, the rapid evolution of AI brings new regulatory and governance challenges. Understanding the basics of AI is the first step toward building responsible, scalable, and secure AI systems that deliver real value—while navigating the complex landscape of compliance, risk, and opportunity. ### The EU AI Act: Structure and Scope The AI Act takes a risk-based approach to regulation. It classifies AI systems into four tiers, each with different obligations. #### Unacceptable Risk (Prohibited) Certain AI applications are banned outright within the EU. These include social scoring systems, real-time biometric identification in public spaces (with narrow law enforcement exceptions), and AI that exploits vulnerabilities of specific groups. Most UK B2B software companies will not encounter these prohibitions, but it is worth understanding the boundary. #### High-Risk AI Systems This is the category that will affect the largest number of UK technology companies. High-risk AI systems include those used in: * **Employment and worker management:** Automated CV screening, interview analysis, performance monitoring, task allocation * **Access to essential services:** Credit scoring, insurance risk assessment, benefit eligibility determination * **Education:** Automated grading, admission decisions, learning pathway assignment * **Critical infrastructure:** Energy grid management, water treatment, transport systems * **Law enforcement and justice:** Predictive policing, evidence analysis, sentencing support If your product includes AI capabilities in any of these domains and is used by EU customers, the high-risk obligations apply from August 2026. The requirements are substantial: conformity assessments, technical documentation, risk management systems, human oversight provisions, accuracy and robustness testing, and post-market monitoring. #### Limited Risk (Transparency Obligations) AI systems that interact with people must disclose that they are AI. This covers chatbots, AI-generated content, and emotion recognition systems. The obligation is primarily about transparency rather than technical compliance. Users must know they are interacting with an AI system. #### Minimal Risk AI systems that do not fall into the above categories — spam filters, AI-powered search, recommendation engines — face no specific regulatory obligations under the AI Act, though general product safety and data protection rules still apply. ### Generative AI and GPAI Obligations: What Changed in August 2025 The general-purpose AI model obligations are distinct from the risk-based classification above. They apply to the providers of foundation models and large language models — the companies that train and distribute the base models. However, they have downstream implications for every business that builds on top of those models. #### For GPAI Model Providers Providers of general-purpose AI models must now: * Maintain and make available technical documentation describing the model's training process, data sources, and capabilities * Provide downstream deployers with sufficient information to comply with their own obligations * Implement a copyright compliance policy * Publish a sufficiently detailed summary of the training data Models classified as posing “systemic risk” (broadly, models trained with more than 10^25 FLOPs) face additional obligations including adversarial testing, incident reporting, and cybersecurity assessments. #### What This Means for Deployers If you are building AI features using OpenAI's GPT models, Anthropic's Claude, Google's Gemini, or similar foundation models, you are a “deployer” rather than a “provider.” Your obligations differ, but you are not exempt. You must: * Ensure your use of the model complies with the provider's terms and the documentation they supply * Maintain records of how the model is integrated into your product * Implement appropriate human oversight for decisions that affect individuals * Be transparent with users about AI involvement in outputs that reach them The practical implication is that your documentation and governance processes must capture how your AI features work end-to-end: which models you use, what prompts and system instructions shape their behaviour, how outputs are validated, and what human review occurs before AI-generated outputs affect real decisions. ### How the UK Regulatory Approach Differs The UK has explicitly chosen not to replicate the EU AI Act. Instead, the UK government has adopted a “pro-innovation” framework based on five cross-sectoral principles: safety, security, and robustness; appropriate transparency and explainability; fairness; accountability and governance; and contestability and redress. These principles are not yet enshrined in legislation. They are enforced through existing sector-specific regulators — the FCA for financial services, the ICO for data protection, the CMA for competition, Ofcom for communications. Each regulator interprets and applies the principles within its own domain. #### What This Means in Practice For UK businesses operating purely domestically, the regulatory burden is currently lighter than the EU's prescriptive requirements. However, there are several reasons not to treat this as a free pass. **Regulatory convergence is likely.** The UK government has signalled that binding AI regulation will follow. Building governance structures now means you will not be scrambling to retrofit compliance when UK legislation arrives. **The ICO is already active.** The Information Commissioner's Office has been clear that GDPR applies to AI systems processing personal data. Automated decision-making under Article 22, data protection impact assessments, and the right to explanation all create existing legal obligations for AI systems in the UK. **Procurement requirements.** Enterprise customers, particularly in financial services, healthcare, and the public sector, are increasingly requiring AI governance documentation as a procurement condition. Even without prescriptive regulation, market expectations are driving governance requirements. **EU market access.** If you sell to EU customers — or plan to — the AI Act applies to you. Building governance to the EU standard from the outset is significantly cheaper than retrofitting it later. ### Practical Steps for Technical Teams This is where the article moves from regulatory overview to engineering practice. The following steps represent the governance infrastructure that development teams should be implementing now. #### 1. Create an AI System Inventory You cannot govern what you do not know about. Start by cataloguing every AI system, feature, or component in your product portfolio. For each entry, document: * **What it does.** A plain-language description of the AI capability. * **Which models it uses.** Foundation model provider, model version, fine-tuning status. * **What data it processes.** Input data types, sources, whether it includes personal data. * **What decisions it influences.** Does the output inform a human decision, or does it trigger an automated action? * **Who it affects.** End users, employees, third parties. * **Risk classification.** Based on the EU AI Act categories above, what risk tier does this system fall into? This inventory becomes the foundation for all subsequent governance activities. #### 2. Implement Human-in-the-Loop Governance Human-in-the-loop AI governance is not a checkbox exercise. It requires architectural decisions that shape how your AI features are built. For high-stakes decisions, the architecture must ensure that a qualified human reviews AI outputs before they take effect. This means: * **Confidence thresholds.** AI outputs below a defined confidence score are automatically routed for human review. Outputs above the threshold may proceed, but are subject to sampling and audit. * **Explanation infrastructure.** The human reviewer must be able to understand why the AI produced a particular output. This requires logging the inputs, the model's reasoning chain (where available), and the key factors that influenced the output. * **Override mechanisms.** Humans must be able to override AI decisions and have those overrides recorded and fed back into system improvement. * **Escalation paths.** When a human reviewer is uncertain, there must be a clear escalation route to a more senior decision-maker. For lower-stakes applications — content recommendations, search ranking, formatting suggestions — the governance model can be lighter, but transparency requirements still apply. Users should know when AI is influencing what they see. #### 3. Build Technical Documentation The EU AI Act's documentation requirements are specific. Even if you are not yet obligated to produce them, building this documentation practice now creates a durable governance asset. For each AI system, maintain: * **System architecture documentation.** How the AI component fits into the broader product architecture. Data flows, API boundaries, deployment infrastructure. * **Training and evaluation data documentation.** For fine-tuned models, document the training data sources, preprocessing steps, and evaluation metrics. For prompt-engineered systems, document the system prompts, few-shot examples, and evaluation benchmarks. * **Risk assessment.** A structured assessment of potential harms, including bias, accuracy failures, adversarial manipulation, and unintended use cases. Include mitigation measures for each identified risk. * **Performance metrics.** Ongoing measurement of accuracy, precision, recall, fairness metrics, and failure rates. These metrics should be monitored in production, not just evaluated at launch. * **Change log.** A record of every material change to the AI system — model upgrades, prompt changes, training data updates, threshold adjustments — with the rationale for each change. #### 4. Implement Bias and Fairness Testing AI systems can produce discriminatory outcomes even when they are not explicitly designed to consider protected characteristics. Bias testing must be a standard part of your development and deployment pipeline. * **Pre-deployment testing.** Evaluate model outputs across demographic groups (where the use case involves decisions about people) to identify disparate impact. * **Ongoing monitoring.** Bias can emerge over time as input data distributions shift. Implement automated monitoring that flags statistical anomalies in outcomes across relevant groups. * **Remediation process.** When bias is detected, have a documented process for investigating the root cause, implementing corrections, and validating that the fix is effective. #### 5. Establish an AI Governance Board Technical governance must be connected to organisational governance. An AI governance board — which may be a standing committee or a function within an existing risk and compliance structure — provides the decision-making authority for: * Approving new AI deployments * Reviewing risk assessments * Setting policies on acceptable AI use cases * Responding to incidents and near-misses * Liaising with external regulators and auditors The board should include technical, legal, and business representatives. Governance that lives exclusively within the engineering team will lack the business context to make proportionate decisions. Governance that lives exclusively within legal will lack the technical understanding to be practical. ### AI Governance for AI Agents and Agentic Systems The rise of agentic AI enterprise automation — autonomous agents that plan and execute multi-step tasks — introduces new governance challenges that the EU AI Act does not yet fully address but that responsible businesses must consider. AI agents for business process automation are fundamentally different from single-prompt AI features. They make sequential decisions, use tools, access external systems, and can take actions with real-world consequences. Governance for agentic systems requires: * **Action boundaries.** Define what the agent is permitted to do. Can it send emails? Can it modify database records? Can it authorise expenditure? These boundaries must be enforced at the infrastructure level, not just through prompt instructions. * **Audit trails.** Every action an agent takes must be logged with sufficient detail to reconstruct its reasoning chain. This is essential for both regulatory compliance and debugging. * **Breakpoints.** For high-consequence actions, the agent should pause and request human approval before proceeding. The definition of “high-consequence” should be configurable and regularly reviewed. * **Rollback capability.** Where possible, agent actions should be reversible. Design your integration architecture so that an agent's mistakes can be undone without manual data surgery. ### Auditing Existing AI Deployments If your organisation has already deployed AI features — and most technology companies have, whether they have formally catalogued them or not — an audit is the essential first step. #### Step 1: Discovery Identify every AI capability in your product and internal tools. Check for AI features that may have been introduced informally — a developer who added GPT-powered summarisation to an internal tool, a data team that built a classification model for customer support tickets, a marketing team using AI to generate content. #### Step 2: Classification Map each discovered AI capability to the EU AI Act risk categories. Be conservative in your classification. If a system is borderline between limited risk and high risk, classify it as high risk and build governance accordingly. #### Step 3: Gap Analysis For each AI system, compare your current governance posture against the requirements for its risk classification. Document the gaps. Common gaps include: no technical documentation, no bias testing, no human oversight mechanism, no incident response process, insufficient transparency to end users. #### Step 4: Remediation Planning Prioritise gap remediation based on risk classification and exposure. High-risk systems used by EU customers should be addressed first. Build a realistic timeline — governance remediation is not a weekend project — and allocate engineering resources accordingly. ### Building Governance Into the Development Lifecycle The most effective approach to AI governance is not to bolt it on after deployment but to integrate it into your development lifecycle from the start. * **Requirements phase.** Include governance requirements alongside functional requirements. What risk classification does this feature fall into? What documentation is required? What human oversight is needed? * **Design phase.** Architect the AI feature with governance hooks: logging, confidence scoring, human review workflows, and override mechanisms. * **Testing phase.** Include bias testing, accuracy benchmarking, and adversarial testing alongside functional and performance tests. * **Deployment phase.** Ensure documentation is complete and approved by the governance board before the feature reaches production. * **Operations phase.** Monitor accuracy, fairness, and usage metrics in production. Review and update documentation as the system evolves. The EU AI Act creates clear, enforceable obligations for any business whose AI systems touch EU customers. The UK's lighter-touch approach does not eliminate governance requirements — it merely distributes them across existing regulators and, increasingly, across customer procurement expectations. For development teams, the practical response is to build governance infrastructure now: system inventories, documentation practices, human-in-the-loop architectures, bias testing pipelines, and organisational governance structures. This investment protects your EU market access, positions you well for forthcoming UK regulation, and — most importantly — ensures that your AI systems are reliable, fair, and trustworthy. McKenna Consultants helps businesses design and implement AI systems with enterprise AI governance built in from the architecture level. Whether you are auditing existing deployments, building new agentic AI capabilities, or preparing for the EU AI Act's high-risk obligations in August 2026, we bring the technical governance expertise that development teams need. Get in touch to discuss your requirements. --- # MACH Architecture Migration: Planning Your Ecommerce Move from Monolithic Commerce **Canonical URL:** https://www.mckennaconsultants.com/mach-architecture-migration-planning-your-move-from-monolithic-commerce/ **Author:** Nick McKenna **Published:** 12 August 2025 **Category:** B2B eCommerce ## MACH Architecture Migration: Planning Your Move from Monolithic Commerce The question facing mid-market and enterprise commerce teams in 2025 is no longer whether composable architecture is viable, but when and how to migrate. Gartner forecasts that 60% of new cloud commerce implementations will use MACH (Microservices, API-first, Cloud-native, Headless) principles by 2027, up from less than 20% in 2022. That trajectory is not speculative. It reflects real procurement decisions being made right now by brands that have hit the ceiling of what their monolithic platforms can deliver. If you are running Magento, Salesforce Commerce Cloud, SAP Hybris, or a similar all-in-one solution, you may be experiencing the limitations of relying on a specific vendor—such as slow release cycles, inflexible pricing models, painful integrations, and rising total cost of ownership. While an all-in-one solution offers the convenience of a single-vendor system, it often lacks the flexibility and customization that modern ecommerce businesses require. This guide is for you. We will walk through how to evaluate whether migration is right for your business, how to plan it in phases, how to restructure your team, and how to build the business case that gets the project approved. An open ecosystem essentially means your organization is not locked into a specific vendor, enabling greater flexibility to integrate best-in-class solutions and adapt your technology stack as your ecommerce needs evolve. At McKenna Consultants, we have delivered composable commerce implementations for B2B and B2C organisations using Elastic Path as the commerce engine. This article draws on that practical experience. ### Introduction to Composable Commerce Composable commerce is transforming the way modern organizations build and scale their ecommerce platforms. Unlike traditional all-in-one solutions, composable commerce architecture empowers businesses to assemble a tech stack tailored to their unique requirements. By adopting a modular approach, companies can select best-of-breed software components—such as product catalogues, pricing engines, and content management systems—and integrate them seamlessly to support their specific business models. This flexibility is at the heart of composable commerce. Rather than being constrained by the limitations of a single vendor or legacy architecture, organizations can rapidly adapt their commerce architecture to new opportunities and challenges. Embracing composable commerce enables businesses to deliver highly differentiated and personalized experiences across every digital touchpoint, ensuring they remain competitive in a fast-moving marketplace. Whether you’re building ecommerce platforms from the ground up or modernizing existing systems, composable commerce offers the agility and scalability needed to meet evolving customer expectations and drive sustained growth. ### Digital Commerce Trends Digital commerce is evolving at such a rapid pace that brands and retailers must constantly adapt to stay relevant. New digital touchpoints are emerging constantly—ranging from social media integrations and mobile apps to voice assistants and online marketplaces—reshaping how customers interact with businesses. This proliferation of channels means that customer demands are more dynamic and varied than ever before. Traditional commerce platforms, with their rigid structures and limited integration capabilities, often struggle to keep up with these changes. In contrast, a composable commerce approach provides the modularity and flexibility needed to respond quickly to new digital touchpoints and shifting consumer behaviors. Composable commerce platforms allow businesses to add, replace, or upgrade components of their ecommerce solution as needed, supporting innovation without the constraints of legacy systems. By adopting a modular approach to digital commerce, organizations can future-proof their operations and ensure they are always ready to meet the needs of their customers—no matter how the digital landscape evolves. ### Why Monolithic Platforms Create a Ceiling Monolithic commerce platforms were designed for a world where “the website” was the only digital sales channel. These platforms represent a monolithic commerce architecture, bundling the storefront, product catalogue, cart, checkout, pricing engine, CMS, and often the OMS into a single deployable unit. While they provide the basic capabilities needed for early-stage ecommerce, they lack the flexibility required for today’s rapidly evolving digital landscape. That coupling made sense when digital commerce was relatively simple. The problem emerges when business requirements outgrow the platform’s assumptions. Common pain points include: * **Pricing complexity.** B2B contract pricing, volume tiers, customer-specific catalogues, and multi-currency support are bolted on rather than natively supported. Customisations become fragile and expensive to maintain. * **Channel proliferation.** You need to sell through a website, a mobile app, a marketplace, an in-store kiosk, and a sales rep portal. The monolith’s tightly coupled frontend makes this extraordinarily difficult. * **Release velocity.** Changes to the checkout flow require a full regression test of the entire system, not just the affected component. Deployment windows shrink. Innovation stalls. * **Integration brittleness.** Connecting the platform to ERP, PIM, WMS, and marketing automation systems requires custom middleware that becomes its own maintenance burden. * **Vendor lock-in.** The platform vendor controls your upgrade path, your hosting costs, and increasingly your feature roadmap. Strategic flexibility erodes over time. Legacy platforms simply cannot keep up with modern requirements. These are not theoretical objections. They are the reasons that organisations with complex commerce requirements are actively evaluating MACH architecture migration planning as a strategic initiative. ### What MACH and Composable Commerce Architecture Actually Mean Before diving into migration planning, it is worth being precise about what MACH means in practice. Here are the key concepts of MACH architecture—a modern development approach for ecommerce that enables flexibility, scalability, and rapid innovation. MACH stands for Microservices, API-first, Cloud-native, and Headless. Microservices are independent, deployable services that each handle a specific business function; in the context of composable commerce, these are often referred to as packaged business capabilities (PBCs). This modular nature allows businesses to select, integrate, and scale modular solutions tailored to their needs, rather than relying on rigid, monolithic systems. API-first means every component communicates via APIs, ensuring seamless integration and interoperability. Cloud-native ensures the system is scalable and resilient, leveraging the benefits of cloud infrastructure. Headless decouples the frontend from the backend, allowing for greater customization and faster adaptation to market changes. By adopting this development approach, organizations can assemble their ideal technology stack—choosing best-of-breed components for each business function and integrating them into a cohesive, future-proof ecommerce platform. #### Microservices and Packaged Business Capabilities Each business capability — product catalogue, pricing, cart, checkout, search, CMS — is a separate, independently deployable service. You can update your search engine without touching your checkout. You can replace your CMS without affecting your product catalogue. #### API-First Every service exposes a well-documented API as its primary interface. The frontend, back-office tools, and third-party integrations all consume the same APIs. There is no “back door” that bypasses the API layer. #### Cloud-Native Services run on managed cloud infrastructure with auto-scaling, redundancy, and global distribution. You are not managing servers. The commerce engine vendor handles uptime, security patches, and infrastructure scaling. #### Headless The presentation layer is completely decoupled from the commerce engine. Your frontend team builds the customer experience using whatever framework suits the channel — React, Next.js, Vue, or a native mobile app — and consumes commerce APIs to render products, prices, and checkout flows. The practical implication is that you assemble your commerce stack from best-of-breed components rather than accepting whatever the monolith provides. If Algolia is the best search engine for your use case, you use Algolia. If Contentful is the right CMS, you use Contentful. If Elastic Path provides the commerce engine with the pricing and catalogue flexibility you need, you use Elastic Path. ### Composable Commerce vs Headless Commerce While composable commerce and headless commerce are closely related, they represent different levels of flexibility and control within modern commerce architecture. Headless commerce focuses on decoupling the frontend presentation layer from the backend commerce functionality, allowing businesses to create custom user experiences across various channels by consuming backend APIs. This separation provides greater freedom in designing customer interfaces but typically retains a monolithic backend. Composable commerce, however, takes this concept further by breaking down the entire tech stack into modular, interchangeable components. With composable commerce, businesses can select and integrate best-of-breed solutions for every aspect of their ecommerce operation—not just the frontend, but also search, payments, promotions, and more. This approach enables organizations to build a truly customized platform that aligns with their specific business needs and can evolve as those needs change. In essence, while headless commerce is a foundational element of composable commerce, composable commerce offers a more comprehensive and future-proof strategy for building ecommerce solutions. It empowers businesses to innovate rapidly, integrate new technologies, and deliver tailored experiences that set them apart in the marketplace. ### Assessing Migration Readiness Not every organisation should migrate to MACH architecture tomorrow. The assessment phase is critical and should be rigorous. Modern organizations span a wide range of digital touchpoints and technologies, making it essential to consider how these factors impact migration readiness. At McKenna Consultants, we typically evaluate readiness across five dimensions. #### 1. Business Complexity MACH architecture delivers the greatest ROI when business requirements are genuinely complex. If you sell a simple catalogue of products through a single website with standard pricing, a monolithic platform may serve you perfectly well. Migration makes sense when you have: * Multiple sales channels with different presentation requirements * Complex pricing models (contract pricing, tiered volumes, negotiated rates) * Authenticated buyer portals with role-based access * Frequent product catalogue changes that need to go live without a full deployment * International requirements (multi-currency, multi-language, regional tax rules) #### 2. Technical Debt and Legacy Systems Assess the current state of your monolithic platform. How heavily customised is it? How many integrations depend on its internal data model? How far behind are you on vendor upgrades? Heavy customisation is paradoxically both a reason to migrate (the debt is unsustainable) and a complication (those customisations represent business logic that must be preserved). #### 3. Team Capability MACH architecture requires a different skill set than managing a monolithic platform. Your team needs experience with API integration, modern JavaScript frameworks, CI/CD pipelines, and cloud infrastructure. If your current team is primarily configured around the monolith's admin interface, you will need to invest in upskilling or augment with specialist partners. #### 4. Integration Landscape Map every system that currently integrates with your commerce platform: ERP, PIM, WMS, OMS, CRM, marketing automation, analytics, loyalty, payments. Each integration must be redesigned for the new architecture. This is often the most underestimated workstream. #### 5. Stakeholder Alignment Migration is a strategic investment, not a technical upgrade. It requires commitment from the C-suite, realistic timelines, and clear success metrics. If the business expects to “replatform over a weekend,” the project will fail. ### The Phased Migration Approach The single biggest mistake organisations make with MACH architecture migration planning is attempting a big-bang cutover. The monolithic platform is decommissioned on a Friday; the new composable stack goes live on a Monday. This approach maximises risk and almost always results in delayed launches, budget overruns, and damaged customer experience. The alternative is a phased migration that progressively moves capabilities from the monolith to composable commerce solutions and composable solutions, while keeping the existing platform operational throughout. This phased approach is an effective way to implement modular migration and integration, which is how composable commerce works—by enabling businesses to adopt flexible, modular solutions and integrate best-in-class components at their own pace. Composable commerce focuses on adaptability and flexibility, allowing organisations to tailor their ecommerce systems to specific needs. When migrating product data, this approach also enables the activation and utilisation of the entire product record across multiple channels, ensuring a seamless and flexible ecommerce experience. #### Phase 1: Decouple the Frontend (Weeks 1-8) The lowest-risk starting point is headless. Place a new frontend application in front of your existing monolithic platform, consuming its APIs (or building a thin API layer if the monolith does not expose one). The customer experience improves immediately — faster page loads, better mobile performance, modern UX — while the backend remains unchanged. This phase delivers visible results quickly, builds team confidence with the new architecture, and creates the API abstraction layer that subsequent phases depend on. #### Phase 2: Extract Search and Content (Weeks 6-14) Move search to a specialist service (Algolia, Elasticsearch, Elastic Path's native search) and content management to a headless CMS. These are read-heavy, customer-facing capabilities where the performance improvement is immediately measurable. The monolith's product data feeds the new search index; content authors work in the new CMS. #### Phase 3: Migrate the Commerce Engine (Weeks 12-24) This is the core migration: moving product catalogue, pricing, cart, and checkout to the new commerce engine. At McKenna Consultants, we typically implement this using Elastic Path, whose API-first architecture handles complex B2B pricing models, multi-currency support, and custom product configurations natively. Data migration is the critical path here. Product data, customer accounts, order history, and pricing rules must be migrated with full fidelity. We cover data migration strategy in detail below. #### Phase 4: Reconnect Integrations (Weeks 18-30) Rebuild the integration layer connecting the new commerce engine to ERP, WMS, OMS, and other back-office systems. Event-driven architectures using message queues (Azure Service Bus, AWS SQS, RabbitMQ) provide more resilient integrations than the synchronous point-to-point connections typical of monolithic platforms. #### Phase 5: Decommission the Monolith (Weeks 26-36) Once all traffic is flowing through the new stack and integrations are stable, decommission the monolithic platform. This is the phase where you stop paying the legacy licence fees and hosting costs. The exact timeline depends on the complexity of your implementation. A straightforward B2C migration might compress into 16-20 weeks. A complex B2B implementation with multiple buyer portals and deep ERP integration could extend to 9-12 months. ### Data Migration Strategy Data migration is where MACH architecture migration projects succeed or fail. The approach must be methodical. #### Product Data Export your complete product catalogue including attributes, variants, pricing tiers, images, and relationships. Map every field to its equivalent in the new commerce engine. Identify gaps where the new platform models data differently. Build automated migration scripts that can be run repeatedly during the transition period — you will need to keep the product catalogue synchronised between old and new systems until cutover. #### Customer Accounts Customer accounts, saved addresses, payment methods, and authentication credentials must migrate cleanly. Consider whether this is also the right moment to consolidate customer data from multiple sources into a single customer data platform. #### Order History Historical orders may not need to migrate into the new commerce engine at all. Many organisations keep order history in the ERP or a dedicated data warehouse and build read-only interfaces for customer self-service. This avoids the complexity of mapping legacy order data models to the new platform. #### Pricing and Promotions This is often the most complex data migration workstream, particularly for B2B organisations with thousands of customer-specific price lists, volume discount matrices, and negotiated contract rates. Document every pricing rule in the legacy system before attempting to recreate it in the new engine. ### Team Restructuring A composable architecture changes how your team works. The monolithic model typically has a “platform team” that manages everything. The composable model distributes ownership across specialist teams, empowering ecommerce teams to assemble and manage a flexible technology stack tailored to their unique business needs. **Frontend team.** Owns the customer experience across all channels. Works with modern JavaScript frameworks, consumes commerce APIs, and can deploy independently. **Commerce/API team.** Owns the commerce engine configuration, pricing rules, and catalogue management. Works closely with the business to translate commercial requirements into platform configuration. **Integration team.** Owns the middleware layer connecting commerce to back-office systems. Expertise in event-driven architecture, API design, and data transformation. **DevOps/Platform team.** Owns the cloud infrastructure, CI/CD pipelines, monitoring, and observability. Ensures all services are deployed, scaled, and monitored correctly. This restructuring does not necessarily mean hiring more people. It means reorganising existing capabilities and filling specific skill gaps — often with a specialist partner like McKenna Consultants providing the composable commerce and integration expertise while internal teams focus on business logic and customer experience. ### Building the Business Case Migration requires investment, and the business case must be compelling. The strongest arguments are: * **Total cost of ownership:** Composable commerce helps reduce operational costs by improving internal efficiencies and leveraging a modern, tailored technology stack, saving both time and money over legacy monolithic systems. * **Strategic flexibility:** An open ecosystem enables seamless integration of world class SaaS products, allowing organizations to customize and optimize their technology stack for evolving business needs. * **Revenue impact:** Composable commerce empowers businesses to reach new customer markets and new global locations, supporting expansion into diverse customer markets and channels. * **Speed to market:** The modular architecture of composable commerce enables rapid adaptation to new online shopping behaviors and channels, helping businesses stay ahead in a fast-changing digital landscape. * **Competitive advantage:** The benefits of composable commerce include improved agility, customization, efficiency, and performance. By adopting a flexible, modular approach, organizations can enhance their ecommerce presence, quickly adapt to digital marketplace trends, and deliver high-quality, personalized customer experiences across all touchpoints. #### Revenue Impact Brands that migrate to composable architecture typically see 15-30% improvements in conversion rates, driven by faster page loads, better mobile experiences, and the ability to A/B test and personalise at speed. For a brand doing GBP 10 million in annual online revenue, a 20% conversion improvement represents GBP 2 million in additional revenue. #### Total Cost of Ownership Monolithic platform licence fees escalate year on year. Hosting costs for on-premises or single-tenant deployments are significantly higher than cloud-native alternatives. Custom development on the monolith costs more per feature because of the regression testing burden. Build a five-year TCO comparison that accounts for licence fees, hosting, development velocity, and maintenance costs. #### Speed to Market The ability to deploy changes to individual services without full-stack regression testing transforms your release cadence. Teams that were deploying monthly on the monolith deploy daily or weekly on a composable stack. In competitive markets, this velocity advantage compounds over time. #### Strategic Flexibility Composable architecture eliminates vendor lock-in. If a better search engine emerges, you can swap it in without rebuilding your checkout. If your commerce engine vendor raises prices or stagnates on innovation, you can migrate that component without replacing everything else. This optionality has real financial value. ### Measuring Success To ensure a composable commerce initiative delivers on its promise, organizations must take a holistic approach to measuring success. Key performance indicators should extend beyond basic ecommerce offerings and include metrics such as revenue growth, conversion rates, average order value, and customer retention. These indicators provide insight into how well the composable commerce platform is supporting business objectives and enhancing the customer experience. Operational costs are another critical factor. Businesses should closely monitor the expenses associated with integration, ongoing maintenance, and support of their composable commerce architecture. By comparing these costs to those of legacy platforms, organizations can assess the return on investment and identify areas where composable commerce is reducing operational overhead. Regularly reviewing these metrics ensures that the composable commerce strategy remains aligned with business goals and continues to deliver value over time. ### Optimization and Improvement The journey to composable commerce does not end at implementation. To maximize the benefits of a composable commerce platform, businesses should foster a culture of continuous optimization and innovation. This involves regularly evaluating the tech stack to identify opportunities for improvement—whether by integrating new technologies like artificial intelligence and machine learning, enhancing backend commerce functionality, or refining the customer experience across digital touchpoints. Composable commerce enables businesses to respond swiftly to changing customer demands and market conditions, ensuring they can deliver highly differentiated and personalized experiences that drive loyalty and revenue growth. By embracing ongoing optimization, organizations can maintain a competitive edge, adapt to new ecommerce channels, and ensure their commerce architecture remains robust, scalable, and ready for the future. ### Common Pitfalls to Avoid Having guided multiple organisations through this process, McKenna Consultants has observed several recurring pitfalls. **Underestimating integration complexity.** The commerce engine migration is visible and gets the attention. The 15 integrations that need to be rebuilt are less glamorous but consume more effort. Budget accordingly. **Choosing too many vendors.** The composable approach lets you pick best-of-breed for every capability. That does not mean you should. Every additional vendor adds integration complexity, contract management overhead, and potential points of failure. Start with a focused stack and expand deliberately. **Neglecting content migration.** Product descriptions, category pages, landing pages, and promotional content all need to move to the new CMS. This content migration is labour-intensive and is frequently left to the last minute. **Skipping the parallel running period.** Run the old and new systems in parallel for at least 4-6 weeks before decommissioning the monolith. This gives you a fallback if issues emerge post-migration and lets you validate data consistency. ### Next Steps If you are evaluating a move from monolithic commerce to MACH architecture, the first step is a structured assessment of your current platform, business requirements, integration landscape, and team capabilities. That assessment should produce a clear recommendation — migrate, stay, or take an incremental approach — with a phased plan and realistic timeline. McKenna Consultants provides headless commerce migration consultancy for UK and international organisations. As an Elastic Path implementation partner, we bring deep experience in composable commerce architecture, API integration, and the phased migration approach described in this guide. If you are ready to explore what MACH architecture could mean for your business, we would welcome the conversation. --- # Integrating Copilot Agents with Office Add-In: What Developers Need to Know **Canonical URL:** https://www.mckennaconsultants.com/integrating-copilot-agents-with-office-add-ins-what-developers-need-to-know/ **Author:** Nick McKenna **Published:** 5 August 2025 **Category:** Microsoft Office Add-In Developer ## Integrating Microsoft Copilot Agents with Office Add-Ins: What Developers Need to Know Microsoft Build 2025 delivered what is arguably the most significant shift in the Office add-in development model since the introduction of the web add-in platform itself: add-ins can now be bundled with Copilot agents, allowing a single unified package to deliver both traditional task pane functionality and conversational AI capabilities. For developers and organisations that have invested in custom Office add-ins, this is not just a new feature – it is a fundamental change in how users will discover, interact with, and derive value from your extensions. The integration of Copilot agents with Office add-ins is part of Microsoft's broader strategy to deliver AI-powered services across its productivity ecosystem. At McKenna Consultants, we have been building Microsoft Office add-ins for enterprise clients for over a decade, from the early days of COM and VSTO through to the modern web-based platform. We have been working with the unified manifest and Copilot integration capabilities since they became available in preview. This article explains what the integration means, how it works technically, and how to plan an add-in that works effectively through both the traditional task pane and through Copilot chat. ## Introduction to Copilot Microsoft Copilot is a next-generation AI assistant designed to transform how users interact with technology across the Microsoft ecosystem. As a powerful generative AI tool, Copilot leverages advanced natural language understanding to help users accomplish tasks more efficiently in their favorite Microsoft apps, including Word, Excel, and PowerPoint. By interpreting everyday language, Copilot enables users to draft documents, analyze data, and create presentations with less effort and more energy, streamlining workflows and boosting productivity. Whether you’re managing complex business needs or handling day-to-day tasks, Microsoft Copilot acts as an intelligent companion, making it easier to unlock the full potential of Microsoft apps and drive innovation in your organization. ## Copilot Features and Functionality Microsoft Copilot offers a comprehensive suite of features designed to assist users with a wide range of tasks. As an AI assistant, Copilot can generate text, create images, and provide expert code suggestions, making it a versatile tool for both technical and non-technical users. Its advanced natural language processing allows for seamless conversations, enabling users to ask questions, receive detailed answers, and get personalized recommendations—all within a familiar chat interface. Copilot integrates effortlessly with Microsoft apps like Outlook, PowerPoint, and Excel, allowing users to automate repetitive tasks, enhance collaboration, and improve overall productivity. Whether you’re drafting an email, building a presentation, or seeking code suggestions, Copilot adapts to your workflow, helping you achieve more with less effort. ### What Changed at Build 2025 Prior to Build 2025, Office add-ins and Copilot agents existed as separate entities. An add-in provided a task pane, custom functions, or event-based activations within an Office application. A Copilot agent (or plugin) extended Microsoft 365 Copilot with custom skills and data access. If you wanted both, you built and deployed two separate things. The Build 2025 announcement unified these models. A single app package, defined by a unified manifest, can now declare both add-in capabilities (task panes, custom functions, event handlers) and Copilot agent capabilities (skills, conversation handlers, data connections). When a user installs the app, they get both the traditional add-in experience and the ability to interact with its capabilities through natural language in Copilot. This matters for three reasons: 1. **Single deployment and management.** IT administrators deploy one package instead of two. Users install one app instead of two. There is a single identity, single permission model, and single update channel. 2. **Copilot as a new interaction surface.** Users can now invoke add-in functionality by asking Copilot to do something in natural language, rather than navigating to a task pane and clicking through a UI. This lowers the barrier to using your add-in’s capabilities. 3. **Contextual intelligence.** Copilot can invoke your add-in’s capabilities contextually – for example, when a user is drafting an email and Copilot determines that one of your add-in’s skills is relevant to what they are trying to accomplish. However, users without the appropriate Microsoft 365 Copilot license will have limited access to Copilot agent features, while still being able to use the traditional office add in capabilities. ### The Unified Manifest The unified manifest is the technical foundation of Office add-in Copilot agent integration. It replaces the legacy XML manifest (manifest.xml) with a JSON-based manifest that aligns with the Teams app manifest schema, extended with properties for Office add-in and Copilot agent capabilities. Copilot agent capabilities are powered by large language models, enabling natural language understanding and advanced AI interactions within Office add-ins. #### Manifest Structure A unified manifest for an app with both add-in and Copilot capabilities includes the following key sections: **$schema and manifestVersion** – Identifies the manifest schema version. For Copilot integration, you need manifest version 1.17 or later. **id** – A unique identifier (GUID) for the app. This single ID is used across all surfaces – Teams, Office, Copilot. **extensions** – This is where the Office add-in capabilities are declared. It contains objects defining task panes, custom functions, event-based activations, and their associated runtime configurations. **copilotAgents** – The new section introduced for Copilot integration. This declares the agent’s skills, which are the specific capabilities that Copilot can invoke. Each skill maps to a function or API endpoint that your app exposes. The actions array within the copilotAgents section lists these skills, and each action can be mapped to a specific command that the Copilot agent can execute in response to user input. **authorization** – Defines the permissions your app requires, covering both the add-in’s needs (e.g., read/write access to the mailbox) and the Copilot agent’s needs (e.g., access to Microsoft Graph resources). Here is a simplified example showing the coexistence of add-in and Copilot declarations: ``` { "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.17/MicrosoftTeams.schema.json", "manifestVersion": "1.17", "id": "00000000-0000-0000-0000-000000000000", "name": { "short": "Contract Reviewer" }, "description": { "short": "Review and analyse contracts", "full": "Reviews contracts for key clauses, risks, and compliance requirements." }, "extensions": [ { "requirements": { "capabilities": [{ "name": "Mailbox", "minVersion": "1.13" }] }, "runtimes": [ { "id": "TaskPaneRuntime", "type": "general", "code": { "page": "https://contoso.com/taskpane.html" } } ], "ribbons": [ { "contexts": ["mailRead"], "tabs": [ { "id": "ReviewTab", "groups": [ { "id": "ReviewGroup", "controls": [ { "id": "OpenTaskPane", "type": "button", "label": "Review Contract", "icons": [{ "size": 16, "url": "https://contoso.com/icon-16.png" }], "action": { "type": "openPage", "view": "TaskPaneRuntime" } } ] } ] } ] } ] } ], "copilotAgents": { "declarativeAgents": [ { "id": "contractReviewer", "name": "Contract Reviewer", "description": "Analyses contracts for key clauses, risks, and compliance issues", "instructions": "You are a contract review assistant. When asked to review a contract, extract key clauses, identify potential risks, and flag compliance concerns.", "capabilities": [ { "name": "GraphConnectors", "connections": [{ "connection_id": "contoso-contracts" }] } ], "actions": [ { "id": "analyseContract", "file": "api-plugin.json" } ] } ] } } ``` #### Migration from XML Manifest If you have an existing Office add-in using the legacy XML manifest, migration to the unified manifest is a prerequisite for Copilot integration. The migration involves: 1. **Converting manifest structure.** The XML elements map to JSON properties, but the structure differs significantly. Microsoft provides tooling in the Teams Toolkit for Visual Studio Code that can assist with this conversion. 2. **Updating runtime declarations.** The unified manifest uses a different model for declaring runtimes (the execution contexts for your code). Task pane runtimes, function runtimes, and event-based runtimes are declared explicitly. 3. **Testing across surfaces.** The unified manifest deploys your app across Teams, Outlook, and other Microsoft 365 surfaces. You need to verify that your add-in works correctly in each surface, as there are subtle differences in API availability and behaviour. 4. **Permission model alignment.** The unified manifest uses a centralised permission model. Review your existing permissions and ensure they are correctly declared in the new format. McKenna Consultants has guided multiple enterprise clients through this migration. The technical conversion is typically straightforward, but the testing and validation across surfaces requires systematic effort. ### How Copilot Features Invoke Add-In Capabilities The mechanism by which Copilot invokes your add-in’s capabilities is one of the most important aspects of the integration to understand, as it directly affects how you design your agent’s skills. Copilot agents are designed to autonomously respond to user prompts, providing answers and handling requests in real time, which enhances user interaction and support. #### The Invocation Flow 1. **User prompt.** The user types a natural language request in Copilot – for example, “Review the contract attached to this email for payment terms and liability clauses.” 2. **Intent matching.** Copilot’s orchestration layer evaluates the user’s intent against the available skills from all installed agents. It uses the agent’s name, description, and skill descriptions to determine relevance. Copilot can also leverage previous interactions with the user, using retained chat history to provide more relevant and personalized responses. 1. **Skill selection.** Copilot selects the most relevant skill and prepares to invoke it. It extracts parameters from the user’s prompt based on the skill’s parameter schema. 2. **Confirmation (optional).** Depending on the skill’s configuration and the organisation’s policies, Copilot may ask the user to confirm before invoking the skill – particularly for skills that modify data. 3. **Execution.** Copilot invokes the skill, which executes your code. This code can use the office.js APIs to interact with the current document, email, or spreadsheet, and can call external APIs for additional data or processing. 4. **Response.** Your skill returns a result to Copilot, which formats it into a natural language response for the user. This response can include adaptive cards for rich formatting. #### Designing Effective Skills The quality of the Copilot experience depends heavily on how well you design your agent’s skills. Key principles: **Clear, specific descriptions.** Copilot uses your skill descriptions to determine when to invoke them. Vague descriptions lead to missed invocations (Copilot does not realise your skill is relevant) or false invocations (Copilot invokes your skill for unrelated requests). Write descriptions that are specific about what the skill does, what inputs it expects, and what outputs it produces. **Granular skills over monolithic skills.** Rather than creating a single skill that “does everything your add-in can do,” create multiple focused skills that each handle a specific task. Each skill should be designed to handle specific tasks, such as formatting data or generating summaries, to maximize Copilot's effectiveness. This improves Copilot’s ability to select the right skill and improves the quality of parameter extraction. **Parameterised inputs.** Define clear parameter schemas for your skills. Copilot extracts parameters from the user’s natural language prompt and passes them to your skill. Well-defined parameters with descriptions, types, and examples help Copilot extract the right values. **Structured responses.** Return structured data from your skills rather than free-form text. Copilot can format structured data into clear, well-organised responses. Include both a summary for Copilot to narrate and detailed data for adaptive card rendering. ### Impact on Add-In UX Design The introduction of Copilot as an interaction surface has significant implications for how you design your add-in’s user experience. By integrating Copilot, users’ problem solving capabilities are enhanced, as they can now approach business challenges using both visual and conversational methods. The same capabilities now need to work through two fundamentally different interaction models: a visual task pane with buttons and forms, and a conversational chat interface. #### Task Pane Design in the Copilot Era The task pane remains the primary interface for complex, multi-step workflows where the user needs to see and interact with rich UI elements – forms, data tables, visualisations, configuration panels. Copilot integration does not eliminate the need for a well-designed task pane. However, the task pane's role shifts. Instead of being the only way to access your add-in's capabilities, it becomes the interface for power users and complex scenarios. Casual or one-off interactions migrate to Copilot. This means: * **The task pane can focus on depth.** Since simple tasks are handled through Copilot, the task pane can be designed for complex workflows without compromising on simplicity for basic tasks. * **Deep-linking from Copilot.** When a Copilot interaction leads to a task that requires the task pane (e.g., “I've found three issues in this contract – would you like to review them in detail?”), the agent can open the task pane to a specific view with relevant context pre-loaded. * **Consistent state.** Actions taken through Copilot and actions taken through the task pane should reflect the same underlying state. If the user reviews a contract clause through Copilot and then opens the task pane, the task pane should show that the clause has been reviewed. #### Designing for Conversational Interaction Designing for Copilot requires thinking about your add-in’s capabilities as tasks that can be expressed in natural language. This is a different design discipline from traditional UI design: **Task-oriented thinking.** What are the discrete tasks your users perform? Each task is a potential Copilot skill. Frame them in terms of user intent: “Check this document for compliance issues,” “Insert the standard NDA clause,” “Summarise the key dates in this contract.” **Progressive disclosure through conversation.** In a task pane, you use UI hierarchy (tabs, sections, accordions) for progressive disclosure. In Copilot, you use follow-up questions and multi-turn conversation. Design your skills to return actionable results with clear follow-up options. **Error handling in natural language.** When something goes wrong in a task pane, you show an error message. In Copilot, your skill needs to return an error that Copilot can explain in natural language. “I could not access the contract because the attachment is not a supported file type. I can review Word and PDF documents” is more useful than a generic error code. Collecting user feedback on these interactions is essential for refining Copilot's conversational skills and improving how errors are communicated. ### Planning Your Add-In for Dual-Mode Operation For organisations building new add-ins or upgrading existing ones, here is our recommended approach to planning for both task pane and Copilot operation. #### Step 1: Capability Audit List every capability your add-in provides. For each capability, classify it: * **Copilot-primary:** Simple, well-defined tasks that are natural to express in language. Examples: “Look up this client’s contract terms,” “Insert a compliance disclaimer,” “Summarize email threads in Outlook.” These should be implemented as Copilot skills and may not need task pane equivalents. * **Dual-mode:** Capabilities that work in both modes. Examples: “Summarise this document” (Copilot returns a text summary; task pane shows a structured summary with highlighting). These need both implementations. * **Task pane-primary:** Complex, visual, or multi-step workflows that require rich UI. Examples: side-by-side document comparison, spreadsheet data validation with a results table, configuration panels. These remain task pane features and may be linked from Copilot responses. #### Step 2: Shared Business Logic Architect your code so that business logic is shared between the task pane and Copilot code paths. Both should call the same underlying functions for data retrieval, processing, and document manipulation. The difference should be only in the input (UI events vs Copilot skill invocation) and the output (DOM updates vs skill response). This shared architecture ensures consistent behaviour regardless of how the user triggers a capability, and reduces maintenance burden. #### Step 3: Unified Manifest Development Build the unified manifest iteratively. Start with your existing add-in capabilities declared in the extensions section. Then add Copilot skills one at a time in the copilotAgents section, testing each skill’s invocation, parameter extraction, and response quality. During development and testing, users must sign in with a Microsoft account to access the full range of Copilot features, ensuring all functionalities are available for validation. Microsoft’s Teams Toolkit for Visual Studio Code provides excellent tooling for unified manifest development, including local debugging for both add-in and Copilot scenarios. #### Step 4: Testing Strategy Testing dual-mode add-ins requires two distinct testing approaches: **Task pane testing** follows familiar patterns: UI testing with frameworks like Playwright or Cypress, API mocking, and cross-browser verification. This is established practice. **Copilot skill testing** is newer and requires testing: * **Intent matching:** Does Copilot invoke your skill for the prompts you expect? Does it avoid invoking your skill for unrelated prompts? Thorough testing here helps ensure Copilot develops a deeper understanding of user needs and provides more accurate responses. * **Parameter extraction:** Does Copilot correctly extract parameters from varied natural language expressions? * **Response quality:** Does the skill response render well when Copilot formats it? * **Edge cases:** How does the skill handle missing parameters, ambiguous requests, or errors? Build a test matrix of natural language prompts and expected outcomes, and run it regularly as you iterate on skill descriptions and parameters. ### Copilot and Search Copilot’s search capabilities are powered by Bing, giving users instant access to a vast world of information directly within their workflow. With Copilot Search, users can ask questions in natural language and receive relevant, AI-powered results that include links, images, and videos. This intuitive approach to search eliminates the need for complex queries, allowing users to explore topics, conduct research, and discover new insights quickly and efficiently. Whether you’re looking for the latest industry trends, specific data points, or multimedia resources, Copilot ensures you have the information you need at your fingertips, all powered by Bing’s robust search engine. ### Copilot Security and Privacy Security and privacy are at the core of Microsoft Copilot’s design. Microsoft is committed to responsible AI, implementing stringent safeguards to protect user data and ensure secure access at every step. Copilot users benefit from industry-leading security protocols, including data encryption and strict access controls, to prevent unauthorized access and data breaches. Users have the flexibility to manage their privacy settings, control data sharing, and disable features as needed to align with organizational policies. Microsoft’s adherence to global compliance standards further reinforces its dedication to safeguarding sensitive information, giving organizations and users peace of mind when leveraging Copilot’s AI capabilities. ### What This Means for Custom Outlook Add-In Development The Copilot integration is particularly impactful for Outlook add-ins, where the conversational paradigm aligns naturally with email-centric workflows. Consider these scenarios: * **Email triage:** “Summarise the key action items from my unread emails this morning” – the agent scans emails, extracts action items using your business logic, and presents a prioritised summary. * **Template insertion:** “Draft a response to this client using our standard project update template” – the agent retrieves the template, populates it with context from the email thread, and inserts it into the reply. * **Data lookup:** “What is the contract renewal date for Acme Ltd?” – the agent queries your CRM or document management system and returns the answer directly in chat. * **Data analysis:** “Perform data analysis on email attachments or linked spreadsheets” – the agent can analyze, summarize, and visualize data from Excel files or other attachments, helping users quickly identify trends and generate reports. These are tasks that previously required the user to open the add-in’s task pane, navigate to the right function, and manually input parameters. With Copilot integration, they become single-sentence natural language requests. For organisations in the UK investing in custom Outlook add-in development, building with Copilot integration from the start is strongly recommended. The incremental development effort is modest compared to retrofitting it later, and the user experience improvement is substantial. ### Copilot Maintenance and Support Microsoft ensures that Copilot remains a reliable and up-to-date AI assistant by providing regular updates, proactive maintenance, and comprehensive support. Users—whether free or paid—have access to a wealth of resources, including a detailed knowledge base, step-by-step tutorials, and active community forums. Microsoft’s dedicated support team is available to address questions, resolve issues, and implement new features that enhance the Copilot experience. This ongoing commitment to user support means organizations can confidently adopt Copilot, knowing they will always have the tools and assistance needed to maximize its value and maintain seamless access to its powerful features. ### Practical Considerations and Limitations As with any new platform capability, there are practical considerations to be aware of: **Copilot licence requirements.** Users need a Microsoft 365 Copilot licence to access the Copilot agent capabilities of your app. The add-in capabilities remain available without Copilot. Design your app so that the add-in is fully functional standalone, with Copilot providing an enhanced experience for licensed users. Note that free users may have restricted access to certain Copilot features and protections compared to paid users. **Organisational rollout.** IT administrators control which Copilot agents are available in their tenant. Your unified app needs to pass the organisation’s review process for both the add-in and agent capabilities. **Skill invocation latency.** Copilot skill invocations involve an LLM inference step (for intent matching and parameter extraction) in addition to your skill’s execution time. Total response times are typically 2-5 seconds, which is acceptable for conversational interaction but slower than a direct button click in a task pane. Design your skills accordingly – do not move latency-sensitive interactions to Copilot. **Evolving platform.** The Copilot agent platform is evolving rapidly. APIs, manifest schemas, and capabilities are being updated frequently. Build with extensibility in mind, and plan for regular updates to your manifest and agent configuration. ### Conclusion The integration of Copilot agents with Office add-ins represents a paradigm shift in how enterprise users interact with custom functionality in Microsoft 365. The unified manifest provides a clean technical foundation for delivering both visual and conversational experiences from a single app package. For developers, the key challenge is not the technical integration itself – which is well-documented and well-tooled – but the design thinking required to create capabilities that work effectively across both interaction models. McKenna Consultants is at the forefront of Microsoft Copilot custom agent development in the UK. We combine deep expertise in Office add-in development with practical experience in AI agent architecture to help organisations build add-ins that are ready for the Copilot era. Organisations should note that a paid subscription may be required to unlock the full range of Copilot agent features and advanced AI capabilities. Whether you are building a new add-in, migrating from the legacy manifest, or adding Copilot capabilities to an existing add-in, [contact our team](https://www.mckennaconsultants.com/contact/) to discuss your requirements. --- # How CSPP Plus Chunked File Transfer Changes Large Document Handling **Canonical URL:** https://www.mckennaconsultants.com/how-cspp-plus-chunked-file-transfer-changes-large-document-handling/ **Author:** Nick McKenna **Published:** 29 July 2025 **Category:** CSPP WOPI ## Chunked File Transfer Changes For Large Document Handling In CSPP+ One of the most significant technical additions to the Cloud Storage Partner Program Plus (CSPP Plus) is the introduction of chunked file transfer. For ISVs integrating Microsoft 365 document editing into their platforms via the WOPI protocol, this capability fundamentally changes how large documents are handled -- expanding practical file size limits, reducing memory pressure on both client and server, and enabling new use cases that were previously impractical. At McKenna Consultants, we have been implementing WOPI integrations since the earliest days of the protocol, and we have worked with the CSPP Plus programme since its inception. This article provides a deep technical guide to chunked file transfer: what it is, how the protocol works, why it matters for your platform, and how to implement it effectively. ## The Problem with Whole-File Transfer To understand why chunked file transfer matters, it is worth revisiting how traditional WOPI file operations work. In the standard WOPI protocol, when a user opens a document for editing, the WOPI client (Microsoft Office for the web) calls the `GetFile` endpoint on the WOPI host. The host responds with the entire file content in a single HTTP response body. When the user saves, the WOPI client calls `PutFile` with the entire updated file in the request body. This is a straightforward model, and it works well for documents of typical size -- a few megabytes for a Word document, perhaps 10-20 MB for a moderately complex Excel workbook. The problems emerge at scale: **Memory pressure.** Both the WOPI host and the WOPI client must hold the entire file in memory during transfer. For a 200 MB PowerPoint presentation with embedded media, this creates significant memory allocation on both sides of the connection. **Timeout risk.** Large file transfers over HTTP take time, and intermediate proxies, load balancers, and CDN edges may impose timeout limits. A whole-file transfer that takes 45 seconds is vulnerable to being terminated by infrastructure that expects responses within 30 seconds. **Network resilience.** If a whole-file transfer fails at 95% completion due to a transient network issue, the entire transfer must be restarted from scratch. There is no mechanism for resumption. **Practical file size limits.** The combination of these factors imposes practical limits on the file sizes that can be reliably handled via WOPI, even though the protocol itself does not define a hard maximum. Many WOPI hosts set conservative limits (50-100 MB) to ensure reliable operation. ## What Chunked File Transfer Introduces CSPP Plus chunked file transfer addresses these limitations by allowing the WOPI client to request and send specific portions (chunks) of a file rather than transferring the entire document in a single operation. This is conceptually similar to HTTP range requests, but implemented within the WOPI protocol with semantics specific to document editing workflows. The key changes are: 1. **Partial retrieval.** The WOPI client can request a specific byte range of a file, allowing it to load only the portions it needs for the current editing operation. 2. **Chunked upload.** When saving, the client can upload the file in discrete chunks, with each chunk acknowledged independently by the host. 3. **Resumable transfers.** If a chunk transfer fails, only that chunk needs to be retried -- not the entire file. 4. **Expanded file size limits.** With chunked transfer, Microsoft has been able to expand the practical file size limits for Office documents edited through WOPI, as the memory and timeout constraints of whole-file transfer no longer apply. ## How the Protocol Works Chunked file transfer in CSPP Plus is negotiated through the WOPI discovery process and the `CheckFileInfo` response. Here is a detailed walkthrough of the protocol flow. ### Discovery and Capability Negotiation The WOPI host advertises its support for chunked file transfer through the `CheckFileInfo` response. When the WOPI client calls `CheckFileInfo` for a file, the host includes the following properties to indicate chunked transfer support: **`SupportedCoauthLockTypes`** -- Indicates the locking modes supported by the host, which is relevant because chunked transfers interact with the coauthoring lock mechanism. **`SupportsGetFileWopiSrc`** -- When set to `true`, indicates that the host supports the extended `GetFile` operations required for chunked retrieval. **`ChunkedUploadEnabled`** -- When set to `true`, indicates that the host supports chunked file upload operations. **`MaxChunkSize`** -- Specifies the maximum chunk size in bytes that the host can accept. This allows hosts to control memory allocation per chunk. Typical values range from 4 MB to 64 MB depending on the host's infrastructure. The WOPI client reads these properties and adjusts its file transfer strategy accordingly. If the host does not advertise chunked transfer support, the client falls back to traditional whole-file `GetFile` and `PutFile` operations. ### Chunked GetFile Flow When retrieving a file with chunked transfer, the protocol flow proceeds as follows: 1. The WOPI client determines that it needs a specific byte range of the file (for example, to load a particular section of a large document or to progressively render content). 2. The client sends a `GetFile` request with additional HTTP headers specifying the requested byte range: - `X-WOPI-FilePartIndex` -- The zero-based index of the requested chunk - `X-WOPI-FilePartSize` -- The requested chunk size in bytes 3. The host responds with the requested chunk in the response body, along with headers confirming the chunk parameters and the total file size. 4. The client repeats this process for additional chunks as needed. This partial retrieval model is particularly powerful for scenarios where the WOPI client does not need the entire file to begin rendering. A Word document's text content, for example, can be loaded and displayed before embedded high-resolution images are fetched. ### Chunked PutFile Flow The chunked upload process is more involved, as it must handle concurrency, integrity verification, and the assembly of chunks into a complete file: 1. The WOPI client initiates a chunked upload session by calling a session initialisation endpoint, providing the total file size and the planned chunk size. 2. The host responds with a session identifier that will be used to correlate subsequent chunk uploads. 3. The client uploads chunks sequentially or in parallel (depending on host capability), each tagged with the session identifier, chunk index, and a checksum for integrity verification. 4. The host acknowledges each chunk, confirming receipt and integrity. 5. Once all chunks have been uploaded, the client sends a commit request that instructs the host to assemble the chunks into the final file. 6. The host assembles the file, verifies the overall integrity, and responds with the final file version and status. If any chunk upload fails, the client can retry just that chunk. The session remains valid, and previously uploaded chunks are preserved. This provides the resumability that whole-file transfer lacks. ### Interaction with Coauthoring Locks Chunked file transfer interacts with the WOPI coauthoring protocol implementation in important ways. During a chunked upload, the file must be locked to prevent concurrent modifications from other coauthoring sessions. The lock semantics are: - A coauthoring lock must be held for the duration of the chunked upload session - The lock is refreshed automatically as chunks are uploaded - If the lock expires during a chunked upload (for example, due to a very long upload), the session is invalidated and must be restarted - The commit step atomically replaces the file content and updates the lock state ISVs implementing WOPI coauthoring protocol support alongside chunked transfer must ensure that their lock management is robust enough to handle the potentially longer duration of chunked uploads compared to whole-file uploads. ## Why This Matters for ISVs The introduction of chunked file transfer has several practical implications for ISVs building Microsoft 365 document editing SaaS integration. ### Expanded Document Size Limits The most immediately visible benefit is the ability to handle larger documents. With chunked transfer, the practical ceiling on file sizes is significantly higher. This matters for specific verticals: - **Engineering and architecture firms** working with large CAD-embedded documents - **Marketing agencies** producing media-rich PowerPoint presentations - **Legal firms** handling contracts with extensive embedded exhibits - **Financial services** working with large, complex Excel workbooks with extensive datasets If your platform previously imposed file size limits due to WOPI transfer constraints, chunked transfer allows you to raise or remove those limits. ### Improved Reliability For files of any size, chunked transfer improves reliability. A 20 MB file that occasionally fails on whole-file transfer due to network variability will transfer reliably in chunks with automatic retry. This translates directly to fewer user-facing errors and fewer support tickets. ### Reduced Infrastructure Costs Chunked transfer reduces peak memory consumption on your WOPI host servers. Instead of allocating memory for the entire file during transfer, your servers only need to handle one chunk at a time. For hosts processing many concurrent file operations, this can meaningfully reduce the required server memory and allow more efficient horizontal scaling. ### Progressive Loading Experiences Chunked retrieval enables progressive loading patterns where the user sees document content more quickly. Rather than waiting for the entire file to download before rendering begins, the WOPI client can start displaying content as soon as the first chunks arrive. This is particularly impactful for large documents on slower network connections. ## Implementation Considerations Implementing chunked file transfer in your WOPI host requires careful attention to several areas. ### Storage Backend Requirements Your storage backend must support efficient byte-range reads and the assembly of chunked uploads into complete files. Different storage technologies handle this differently: **Object storage (Azure Blob Storage, S3).** Both Azure Blob Storage and Amazon S3 natively support byte-range reads, making chunked `GetFile` straightforward. For chunked uploads, both support multipart upload APIs that map naturally to the WOPI chunked upload model. Azure Blob Storage's Block Blob API, where you stage individual blocks and then commit them into a final blob, is particularly well-aligned with WOPI chunked upload semantics. **Database-backed storage.** If your platform stores documents in a database (which some document management systems do), chunked retrieval requires either storing the file in a format that supports efficient partial reads or maintaining a file-system or object-storage cache alongside the database. **File system storage.** Traditional file systems support efficient byte-range reads natively. Chunked uploads can be managed by writing chunks to temporary files and assembling them on commit. ### Chunk Size Selection The `MaxChunkSize` you advertise in `CheckFileInfo` should balance several factors: - **Larger chunks** reduce the number of HTTP round-trips, improving throughput on high-bandwidth connections - **Smaller chunks** reduce per-chunk memory consumption, improve retry granularity, and are more resilient on unreliable connections - **Infrastructure limits** such as maximum request body sizes on your load balancer, reverse proxy, or API gateway A sensible starting point for most deployments is 10 MB chunks. This provides a good balance between throughput and resilience. Monitor your transfer success rates and adjust based on your infrastructure's characteristics. ### Integrity Verification Each chunk should be verified using a checksum (typically SHA-256) to ensure data integrity during transfer. Your implementation should: - Verify the checksum of each received chunk immediately upon receipt - Reject chunks that fail verification with an appropriate error code - Verify the overall file integrity after assembly by comparing a checksum of the assembled file against the expected value provided by the client Do not skip integrity verification. Silent data corruption during file transfer will manifest as document corruption that is difficult to diagnose and damaging to user trust. ### Session Management Chunked upload sessions create server-side state that must be managed: - **Session timeout.** Define a maximum session duration (e.g., 30 minutes). Sessions that are not completed within this window should be cleaned up, and their temporary chunks deleted. - **Concurrent sessions.** Determine whether your host allows multiple concurrent chunked upload sessions for the same file. In most cases, the coauthoring lock mechanism prevents this, but your session management should enforce it independently as a defence-in-depth measure. - **Cleanup.** Implement a background process that periodically cleans up orphaned sessions and their temporary chunk data. ## Performance Optimisation Tips Based on our experience implementing WOPI integrations for clients across multiple industries, here are practical optimisation strategies for chunked file transfer. ### Parallel Chunk Upload If your infrastructure supports it, allow the WOPI client to upload multiple chunks in parallel. This can significantly reduce total upload time for large files on high-bandwidth connections. Your host needs to handle out-of-order chunk reception and assemble chunks in the correct order during the commit phase. ### Connection Reuse Ensure your WOPI host supports HTTP keep-alive connections. Chunked transfer involves many sequential HTTP requests, and the overhead of establishing a new TCP (and TLS) connection for each chunk is significant. Connection reuse can reduce per-chunk latency by 50-100 ms, which adds up across dozens of chunks. ### CDN and Edge Caching For chunked `GetFile` operations, consider whether your CDN or edge caching layer can cache file chunks. If a file is frequently accessed by multiple users (common in coauthoring scenarios), caching chunks at the edge reduces load on your origin servers and improves retrieval latency for subsequent users. ### Monitoring and Alerting Implement monitoring for your chunked transfer operations: - **Success rate** per chunk and per session - **Latency** percentiles (p50, p95, p99) for chunk upload and retrieval - **Session completion rate** (what percentage of initiated sessions are successfully committed?) - **Retry rate** (how often are chunks being retried?) Anomalies in these metrics will alert you to infrastructure issues, network problems, or client-side bugs before they become user-visible problems. ## The Intersection with AI-Powered Document Processing An emerging use case that benefits significantly from chunked file transfer is AI-powered document processing via WOPI. When combining WOPI with AI services -- for example, extracting data from documents, classifying content, or generating summaries -- chunked retrieval allows the AI processing pipeline to work on document sections progressively rather than waiting for a complete file download. This is particularly relevant for large document sets in legal discovery, financial auditing, or compliance review, where thousands of documents need to be processed and the ability to begin AI analysis before the full file is downloaded materially reduces end-to-end processing time. McKenna Consultants has been exploring these intersection patterns between WOPI and AI, combining our deep protocol expertise with our AI development capabilities to build document processing solutions that are both efficient and intelligent. ## Conclusion CSPP Plus chunked file transfer is not merely an incremental improvement to the WOPI protocol -- it is an enabling capability that expands what is practical with Microsoft 365 document editing integration. Larger files, more reliable transfers, lower infrastructure costs, and faster user experiences are all direct consequences of implementing chunked transfer correctly. For ISVs building or maintaining WOPI integrations, investing in chunked transfer support is a high-return effort that directly improves the user experience and reduces operational overhead. The implementation is non-trivial, but the protocol design is logical and well-structured. McKenna Consultants is the UK's leading WOPI integration consultancy. We have implemented WOPI solutions for document management platforms, SaaS products, and enterprise systems across multiple industries. If you are implementing chunked file transfer, upgrading to CSPP Plus, or starting a new WOPI integration, [contact our team](/contact/) to discuss how we can help. --- # Building Artificial Intelligence Agents for Enterprise Automation: A Practical Guide **Canonical URL:** https://www.mckennaconsultants.com/building-ai-agents-for-enterprise-automation-a-practical-guide/ **Author:** Nick McKenna **Published:** 22 July 2025 **Category:** Artificial Intelligence ## Building AI Agents for Enterprise Automation: A Practical Guide The conversation around enterprise AI has shifted decisively. Chatbots that answer questions are useful, but they are fundamentally reactive – they wait for a user to ask something, produce a response, and stop. Agentic AI represents a qualitatively different paradigm: autonomous software agents that can plan, reason, execute multi-step tasks, and adapt when things go wrong. Gartner named agentic AI its number one strategic technology trend for 2025, and for good reason. The technology is now mature enough to deliver measurable business value in document processing, customer service, procurement, and dozens of other enterprise workflows. Artificial intelligence originated as an academic discipline in the 1950s, with early AI research focused on replicating aspects of human intelligence through algorithms and symbolic reasoning. AI researchers have since advanced the field by developing new approaches such as machine learning and deep learning, continually pushing the boundaries of what AI systems can achieve. As a branch of computer science, artificial intelligence draws on both theoretical and practical foundations to enable the development of intelligent systems across diverse domains. Additionally, science fiction has played a significant role in shaping public perception and expectations of AI, influencing both enthusiasm and concerns about its potential and ethical implications. At McKenna Consultants, we have been building AI solutions for enterprise clients across the Microsoft 365 ecosystem and beyond. This article is a practical guide to what AI agents actually are, how they differ from the chatbots you have already deployed, and how to architect agent systems that are powerful enough to be useful yet governed enough to be trustworthy. ### What Is an AI Agent? An AI agent is a software system that uses a large language model (LLM) as its reasoning engine to autonomously plan and execute a sequence of actions towards a defined goal. Unlike a simple chatbot, which maps a single input to a single output, an agent operates in a loop: it observes its environment, decides what to do next, takes an action, observes the result, and repeats until the task is complete or it determines it cannot proceed. AI agents operate within specific environments and constraints, making autonomous decisions based on available data, system security, processing capabilities, and resource limitations. The critical distinction is autonomy. A chatbot answers a question. An agent completes a task. Consider the difference between asking “What is the status of purchase order 4521?” (a chatbot query) and instructing “Process the invoice from Acme Ltd against the correct purchase order, flag any discrepancies, and route for approval” (an agent task). The second requires the system to query a database, match documents, apply business rules, make decisions about discrepancies, and interact with an approval workflow – all without further human input for each step. This demonstrates how AI agents work by automating and enhancing workflows, increasing efficiency and reducing manual intervention. Unlike traditional software, which is explicitly programmed for each task, agentic AI systems leverage machine learning to learn from data and automate complex processes without the need for detailed programming instructions for every scenario. #### The Agent Execution Loop Most production agent architectures follow a common pattern: 1. **Goal reception** – The agent receives a task, either from a user prompt, a scheduled trigger, another system, or from other agents in a multi-agent system. User queries are a common way for agents to receive tasks, especially in AI search engines where contextual answers and summaries are generated in response to specific questions posed by users. 2. **Planning** – The LLM decomposes the goal into a sequence of steps. This might be explicit (a written plan) or implicit (the model deciding on the next action at each iteration). 3. **Tool selection** – The agent selects from its available tools (APIs, database queries, file operations, web searches) to execute the current step. 4. **Execution** – The agent calls the selected tool and receives the result. 5. **Observation and reasoning** – The agent evaluates the result. Did the step succeed? Does the plan need to change? Is the overall goal complete? 6. **Iteration or completion** – The agent either proceeds to the next step, revises its plan, or returns the final result. This loop is what makes agents fundamentally more capable than single-turn chatbot interactions. It also introduces the complexity that makes agent development an engineering discipline rather than a prompt-writing exercise. ### AI Models and Techniques Artificial intelligence (AI) is powered by a diverse set of models and techniques that enable machines to perform tasks traditionally requiring human intelligence. From analyzing vast datasets to understanding human language and generating new content, these AI systems form the backbone of modern enterprise automation. At the core of many AI applications are **machine learning** techniques, where algorithms are trained on historical data to identify patterns, make predictions, and support decision-making. This approach allows AI agents to perform both complex and repetitive tasks with increasing accuracy over time, adapting to new information as it becomes available. A significant advancement within machine learning is **deep learning**, which leverages artificial neural networks inspired by the human brain. These networks consist of multiple layers of interconnected nodes, enabling AI models to process complex patterns in data. Deep learning powers a wide range of AI applications, from computer vision (identifying objects in images) to speech recognition and natural language processing. **Natural language processing (NLP)** is a specialized area of AI focused on enabling machines to understand, interpret, and generate human language. NLP is fundamental to building AI agents that can interact with users, respond to queries, and automate communication-heavy workflows. Large language models—such as those used in generative AI tools—are a prime example, capable of engaging in conversation, summarizing documents, and translating languages. **Generative AI** represents another transformative technique, where AI models are trained to create new content—text, images, or even computer code—based on patterns learned from existing data. These generative models, including large language models, are increasingly used to automate content creation, support marketing campaigns, and enhance personalized customer experiences. **Foundation models** are large, pre-trained AI models that can be fine-tuned for specific tasks or domains. By leveraging knowledge gained from massive datasets, these models accelerate the development of AI applications across a broad range of industries, from eCommerce to healthcare. **Agentic AI** takes these capabilities further by orchestrating multiple AI agents—each specialized in specific tasks—to work together on complex workflows. This approach mirrors human collaboration, allowing AI systems to tackle multi-step processes, integrate with external tools, and adapt to changing requirements in real time. ### Architecture Patterns: Single-Agent vs Multi-Agent Systems When designing agentic AI for enterprise automation, the first architectural decision is whether to use a single agent or a multi-agent system. Both patterns have clear use cases, and the choice has significant implications for complexity, reliability, and governance. Multi-agent systems are particularly effective for handling complex tasks that require coordination and specialized expertise. #### Single-Agent Architecture A single agent handles the entire task end-to-end. It has access to all necessary tools and maintains a single reasoning thread. This pattern works well for tasks that are well-defined, linear, and can be accomplished with a moderate number of tool calls. **Suitable for:** * Document classification and routing * Data extraction from structured forms * Simple approval workflows * FAQ resolution with knowledge base lookup **Advantages:** Simpler to build, test, and debug. A single reasoning thread is easier to audit. Latency is lower because there is no inter-agent communication overhead. **Limitations:** As the number of tools and the complexity of reasoning grow, a single agent's performance degrades. LLMs have finite context windows and struggle to maintain coherent plans across dozens of steps with many available tools. #### Multi-Agent Architecture with Multiple AI Agents A multi-agent system decomposes a complex task across multiple specialised agents, each with a focused set of tools and a narrower domain of expertise. An orchestrator agent (sometimes called a supervisor or router) coordinates the work, delegating subtasks to specialist agents and synthesising their results. **Suitable for:** * End-to-end procurement workflows (requisition, supplier selection, PO creation, invoice matching) * Complex customer service scenarios spanning multiple backend systems * Document processing pipelines with extraction, validation, enrichment, and routing stages * Any workflow where different steps require different expertise or system access **Advantages:** Each agent has a smaller, more focused tool set and prompt, which improves reliability. Specialist agents can be developed, tested, and improved independently. The system scales more naturally as workflow complexity grows. This architecture enables collaborative problem solving, as specialised agents work together to address different aspects of a complex challenge. **Limitations:** Inter-agent communication introduces latency and potential failure modes. Orchestration logic adds architectural complexity. Debugging requires tracing reasoning across multiple agents. #### Choosing the Right Pattern At McKenna Consultants, we apply a pragmatic rule: start with a single agent. If the task requires more than eight to ten tools, or if distinct phases of the workflow require fundamentally different expertise, refactor into a multi-agent system. Premature decomposition into multiple agents adds complexity without benefit; delayed decomposition leads to unreliable single agents trying to do too much. ### Human-in-the-Loop Governance Enterprise AI agents must operate within governance frameworks that ensure human oversight, auditability, and the ability to intervene. This is not merely a compliance consideration – it is an engineering requirement. Agents that operate without appropriate guardrails will eventually take actions that are incorrect, costly, or reputationally damaging. Human-in-the-loop AI governance is the discipline of designing systems where human oversight and human supervision are built into the agent’s execution loop rather than bolted on after deployment. Explicit human supervision in AI agent systems is essential to prevent unintended or harmful actions, especially in contexts where autonomous decisions could have significant consequences. #### Governance Tiers We recommend a tiered governance model based on the consequence of agent actions: **Tier 1 – Autonomous execution.** The agent executes without human approval. Appropriate for low-risk, reversible actions: reading data, classifying documents, generating draft responses. **Tier 2 – Approval required.** The agent plans and prepares an action but pauses for human approval before execution. Appropriate for medium-risk actions: sending external communications, creating purchase orders below a threshold, modifying records. **Tier 3 – Human execution.** The agent analyses and recommends, but a human performs the action. Appropriate for high-risk or irreversible actions: large financial commitments, legal filings, customer terminations. The tier assignment should be configurable and reviewable. As the organisation gains confidence in the agent's reliability for specific action types, actions can be promoted from Tier 3 to Tier 2 or from Tier 2 to Tier 1. #### Audit Trails Every agent action must be logged with sufficient detail to reconstruct the agent's reasoning. This includes: * The original goal or trigger * The plan the agent generated * Each tool call, its inputs, and its outputs * The reasoning the agent applied at each decision point * Any human approvals or interventions * The final outcome This audit trail serves multiple purposes: debugging, compliance, continuous improvement, and – critically – building organisational trust in the system. ### Microsoft Copilot Studio as an Agent Platform For organisations invested in the Microsoft 365 ecosystem, Microsoft Copilot Studio has emerged as a compelling platform for building and deploying AI agents. It provides a low-code environment for agent construction while supporting custom code extensions for complex logic. Other major cloud platforms, such as Google Cloud, also play a significant role in AI innovation, offering robust infrastructure and incentives like free credits to support new customers. The availability of substantial computing power on these platforms is crucial for deploying advanced AI agents and driving further progress in artificial intelligence. #### Key Capabilities for Enterprise Agents **Connector ecosystem.** Copilot Studio agents can access over 1,000 pre-built connectors to Microsoft and third-party services – SharePoint, Dynamics 365, SAP, Salesforce, ServiceNow, and more. This dramatically reduces the integration effort for enterprise workflows. **Custom plugins and actions.** For bespoke business logic, Copilot Studio supports custom plugins written in C# or TypeScript, as well as Power Automate flows for orchestrating multi-step processes. This gives development teams the flexibility to implement domain-specific rules that the LLM should not be improvising. **Built-in governance.** Copilot Studio provides role-based access control, usage analytics, and integration with Microsoft Purview for data loss prevention. Agents can be scoped to specific data sources and actions, reducing the blast radius of any single agent. **Deployment to Microsoft 365 surfaces.** Agents built in Copilot Studio can be surfaced in Teams, Outlook, SharePoint, and other Microsoft 365 applications. This means users interact with agents in the tools they already use, eliminating the adoption friction of standalone interfaces. #### When to Use Copilot Studio vs Custom Development Copilot Studio excels when the workflow can be expressed as a series of connector calls and decision points, and when deployment within Microsoft 365 is a requirement. For highly custom agent architectures – particularly multi-agent systems with complex orchestration – direct development using frameworks such as Semantic Kernel, AutoGen, or LangGraph provides more architectural control. Building these custom agent architectures often requires advanced software development skills and practices to ensure robust integration and scalability. McKenna Consultants helps clients evaluate this decision based on their specific requirements, existing infrastructure, and team capabilities. ### Real-World Use Cases The following use cases illustrate how agentic AI enterprise automation delivers measurable value in production environments. Each represents a pattern we have implemented or are actively developing with clients. These examples demonstrate real world applications of agentic AI in enterprise settings. #### Document Processing and Classification with Natural Language Processing **The problem:** A professional services firm receives hundreds of documents daily – contracts, invoices, correspondence, regulatory filings – across email, post (scanned), and client portals. Manual classification and routing consumes significant administrative effort and introduces delays. **The agent solution:** A document processing agent receives each document, extracts key metadata (document type, client, date, amounts, deadlines), uses artificial intelligence to analyze data extracted from the documents, classifies it against the firm’s taxonomy, and routes it to the correct team and workflow. For standard document types, this operates autonomously (Tier 1). For ambiguous documents, the agent presents its classification with confidence scores and requests human confirmation (Tier 2). **The result:** Processing time reduced from hours to minutes. Classification accuracy exceeding 95% for standard document types. Administrative staff redirected to higher-value work. #### Customer Service Escalation Management **The problem:** A SaaS provider’s support team handles thousands of tickets monthly. Complex tickets require information from multiple backend systems (CRM, billing, product usage analytics, knowledge base), and resolution often involves coordinating across teams. **The agent solution:** A multi-agent system where a triage agent classifies incoming tickets and routes them to specialist agents (billing agent, technical agent, account management agent). Each specialist agent has access to the relevant backend systems and can draft responses, initiate refunds below a threshold, or escalate to human agents with a complete context package. AI workflows streamline the escalation and resolution process by automating decision-making steps, ensuring secure and efficient handling of each ticket. **The result:** Average resolution time reduced by 40%. Human agents spend their time on genuinely complex cases rather than information gathering. Customer satisfaction scores improved through faster initial response and more accurate routing. #### Procurement Workflow Automation **The problem:** A manufacturing company’s procurement process involves requisition approval, supplier selection, purchase order creation, goods receipt matching, and invoice processing. Each step involves different systems and different approvers, creating bottlenecks and errors. **The agent solution:** Organizations use AI to automate and optimize procurement workflows by deploying an orchestrator agent that manages the end-to-end process, delegating to specialist agents for each phase. The requisition agent validates requests against budget and policy. The sourcing agent compares supplier quotes and recommends selections. The PO agent generates purchase orders and routes them for approval. The matching agent reconciles invoices against POs and goods receipts, flagging discrepancies for human review. **The result:** Procurement cycle time reduced by 60%. Invoice matching errors reduced by 85%. Finance team focused on exception handling rather than routine processing. ### Implementation Considerations Building production AI agents for business process automation requires attention to several engineering concerns that are not present in simpler AI applications. Robust AI algorithms are essential for building reliable and effective agent systems, ensuring that these solutions can handle complex tasks and adapt to changing business needs. #### Reliability and Error Handling Agents will encounter unexpected situations: API failures, ambiguous data, tasks that fall outside their training distribution. Robust agent systems need explicit error handling strategies: * **Retry logic** for transient failures (API timeouts, rate limits) * **Graceful degradation** when a tool is unavailable (use alternative data sources, or pause and notify) * **Confidence thresholds** that trigger human escalation when the agent is uncertain * **Maximum iteration limits** to prevent infinite loops #### Latency Management Multi-step agent workflows can accumulate significant latency, particularly when each step involves an LLM call plus a tool call. Strategies for managing this include: * Parallel tool execution where steps are independent * Caching frequently accessed reference data * Using faster, smaller models for simple classification steps within the workflow * Streaming intermediate results to users so they see progress #### Testing Agent Systems Testing agents is fundamentally different from testing deterministic software. The same input may produce different execution paths due to LLM non-determinism. Effective testing strategies include: * **Scenario-based evaluation** with defined success criteria rather than exact output matching * **Golden dataset testing** with known-good input/output pairs for each tool call. High-quality training data is essential here, as it provides the foundational patterns and structures needed to accurately evaluate and improve agent performance. * **Adversarial testing** with edge cases, ambiguous inputs, and deliberate attempts to confuse the agent * **Production monitoring** with automated detection of anomalous behaviour patterns #### Cost Management LLM API calls are priced per token, and agent workflows can consume significantly more tokens than single-turn interactions due to the iterative reasoning loop. Cost management strategies include selecting appropriate model sizes for each agent (not every step needs the most capable model), implementing token budgets per task, and caching tool results to reduce redundant LLM calls. ### Getting Started with Enterprise AI Agents For organisations looking to move from chatbots to agentic AI, we recommend a phased approach: 1. **Identify a high-value, well-defined workflow** – One where the steps are documented, the systems are accessible via API, and the business impact of automation is clear. 2. **Start with a single agent** – Build a single agent that handles the core happy path. Deploy with Tier 2 governance (human approval for actions). 3. **Instrument everything** – Log every reasoning step and tool call from day one. This data is essential for debugging, governance, and improvement. 4. **Iterate based on production data** – Use real-world performance data to identify where the agent struggles, where it needs additional tools, and where governance tiers can be relaxed. 5. **Scale to multi-agent when complexity demands it** – Refactor into specialised agents only when the single agent's reliability degrades due to scope. ### Conclusion Agentic AI represents the next significant step in enterprise automation – moving from systems that answer questions to systems that complete tasks. The technology is ready for production use, but successful deployment requires thoughtful architecture, robust governance, and an engineering-first approach to reliability and testing. McKenna Consultants specialises in AI agent development across the Microsoft 365 ecosystem and beyond. Whether you are exploring your first agent use case or scaling an existing deployment, our team brings the technical depth and enterprise experience to deliver AI solutions that work in production. [Contact us](https://www.mckennaconsultants.com/contact/) to discuss how agentic AI can transform your business processes. --- # Building Composable eCommerce B2B Self-Service Buyer Portals with Elastic Path **Canonical URL:** https://www.mckennaconsultants.com/building-b2b-self-service-buyer-portals-with-elastic-path/ **Author:** Nick McKenna **Published:** 15 July 2025 **Category:** B2B eCommerce ## Building B2B Self-Service Buyer Portals with Elastic Path B2B buyers have changed. The procurement professional who once relied on phone calls to a sales representative and a PDF catalogue now expects the same digital experience they get when buying from Amazon. Self-service portals, real-time stock visibility, saved order templates, and instant access to negotiated pricing are no longer differentiators. They are the baseline. Yet the majority of B2B organisations are still serving their customers through a patchwork of email-based ordering, static price lists, and manual quote processes. The gap between buyer expectation and seller capability is widening, and it is costing businesses revenue, efficiency, and customer loyalty. Composable commerce, and specifically Elastic Path’s architecture, offers a way to close that gap without the constraints of monolithic platforms that were never designed for B2B complexity. Legacy architecture and traditional commerce platforms, often built as an all-in-one solution, are increasingly inadequate for modern organizations. Legacy platforms simply cannot deliver the flexibility, scalability, and rapid integration required to meet the evolving needs of today’s digital marketplace. This article examines how to build self-service buyer portals using Elastic Path, covering the key capabilities that B2B buyers demand and the architectural patterns that make them possible. ### Why B2B Buyer Expectations Have Shifted The consumerisation of B2B purchasing is not a trend. It is a structural shift driven by generational change in the workforce. Millennials and Gen Z now make up over 60% of B2B buying decision-makers. These buyers grew up with ecommerce. They expect to research products independently, compare specifications, check availability, and place orders without waiting for a sales representative to respond to an email. According to McKinsey research, 70% of B2B buyers are willing to spend over 50,000 USD in a single self-service transaction. Evolving consumer behaviors—shaped by digital touchpoints and rapid technological innovation—are directly influencing B2B buyer expectations, pushing businesses to deliver more engaging and personalized experiences across multiple channels. This shift has consequences for B2B sellers: **Buyers who cannot self-serve will find a competitor who enables it.** In markets with comparable products and pricing, the buying experience becomes the differentiator. A buyer who can place an order at 10pm on a Sunday through a self-service portal will not wait until Monday morning to phone a sales team. **Sales teams are being redirected, not replaced.** Self-service does not eliminate the sales function. It redirects it. When routine reorders and catalogue browsing are handled digitally, sales teams can focus on high-value activities: complex negotiations, new account acquisition, and strategic account management. This is a productivity gain, not a headcount reduction. **Data from digital interactions drives better decisions.** Every self-service interaction generates data: what buyers search for, what they add to baskets but do not purchase, which product categories are growing. This data is invisible in a phone-and-email ordering process. ### Benefits of Composable Commerce Composable commerce offers a transformative set of benefits for businesses operating in today’s fast-moving digital marketplace. By adopting a composable commerce approach, organizations gain the flexibility to assemble a commerce solution that precisely fits their unique requirements—no more being boxed in by the limitations of a one-size-fits-all platform. Composable commerce enables businesses to select and integrate best-of-breed technologies, ensuring that every component of their digital ecosystem is optimized for performance and relevance. This approach empowers companies to deliver highly differentiated and personalized customer experiences, which are essential for building loyalty and driving revenue growth in competitive B2B markets. With composable commerce, operational costs are reduced by eliminating the need for extensive custom development and by streamlining integration with existing systems. The ability to swap out or upgrade individual components without disrupting the entire system also reduces vendor risk and future-proofs your investment. Ultimately, composable commerce offers the agility to respond rapidly to changing customer expectations and market dynamics, helping businesses stay ahead in the digital marketplace. ### The Core Packaged Business Capabilities of a B2B Buyer Portal A B2B self-service buyer portal is significantly more complex than a B2C ecommerce storefront. The requirements reflect the realities of business purchasing: negotiated pricing, multi-level approval workflows, complex organisational structures, and integration with enterprise systems. In contrast, traditional commerce platforms typically offer only basic capabilities—an all-in-one, monolithic solution providing fundamental features for setting up and managing an eCommerce site—which may meet initial needs but lack the flexibility required for modern B2B digital experiences. #### Authenticated Access and Organisation Management B2B portals are not open to the public. They serve authenticated users who belong to buying organisations. Each organisation has its own pricing, catalogue visibility, payment terms, and approval rules. A well-architected buyer portal supports: * **Multi-level organisational hierarchies.** A parent company with regional subsidiaries, each with their own buyers and budget holders. Elastic Path's account management capabilities support these hierarchical structures, allowing organisations to be modelled with parent-child relationships. * **Role-based access control.** Different users within a buying organisation have different permissions. A procurement manager might have full ordering authority up to a spend threshold, while a junior buyer can create orders but requires approval. Roles should be configurable per organisation, not hardcoded. * **Self-service user management.** The buying organisation's administrator should be able to add and remove users, assign roles, and manage permissions without contacting the seller's support team. #### Contract and Negotiated Pricing B2B pricing is not a single price per product. It is a matrix of negotiated rates that vary by customer, by volume, by contract term, and sometimes by the day of the week. Elastic Path's pricing engine supports multiple price books, which can be associated with specific customer segments, organisations, or individual accounts. This enables: * **Customer-specific pricing.** Each buying organisation sees the prices negotiated in their contract. There is no risk of a buyer seeing a competitor's pricing. * **Volume-based tiered pricing.** Price breaks at defined quantity thresholds, automatically applied when the buyer's basket reaches the qualifying volume. * **Time-bound promotional pricing.** Contract prices that are valid for a specific date range, with automatic reversion to standard pricing when the contract period expires. * **Currency and regional pricing.** For international B2B sellers, the ability to manage pricing in multiple currencies with region-specific price books. The key architectural principle is that pricing logic should be managed centrally through the commerce platform, not scattered across the frontend, the ERP, and a pricing spreadsheet. Elastic Path's API-first approach means pricing is served to the buyer portal through a consistent API, regardless of how complex the underlying pricing rules are. #### Catalogue and Product Management B2B catalogues often have characteristics that do not exist in B2C: * **Customer-specific catalogue visibility.** Not every buyer should see every product. An organisation that has contracted for a specific product range should only see those products. Elastic Path’s catalogue hierarchy supports this through configurable catalogue associations per account or segment. * **Product configuration.** B2B products frequently have configurable attributes: size, material, finish, voltage, pressure rating. The portal must support product configuration without requiring the buyer to contact a sales representative. * **Technical documentation.** B2B buyers need access to specification sheets, safety data sheets, CAD drawings, and installation guides alongside the product listing. The portal should serve these documents directly. In a composable ecommerce architecture, it is crucial to activate and utilize the entire product record across multiple channels, ensuring all product data and documentation are accessible and consistent wherever customers interact. * **Reorder and template functionality.** A significant proportion of B2B orders are repeat orders. The portal should allow buyers to save order templates, reorder from previous purchases with a single click, and build scheduled standing orders. #### Bulk Ordering and Quick Order B2B buyers often know exactly what they want. They do not need to browse a catalogue and add items one by one. A buyer portal must support: * **Quick order by SKU.** A simple interface where the buyer enters SKU numbers and quantities directly, without navigating the catalogue. This is the digital equivalent of the faxed purchase order. * **CSV upload.** For large orders, the ability to upload a CSV or Excel file containing SKU and quantity columns. The portal parses the file, validates the SKUs against the catalogue, and creates the order. * **Copy and paste.** An order entry field that accepts a pasted list of SKU/quantity pairs, commonly copied from an internal procurement system. These quick order capabilities are critical for user adoption. If the digital portal is slower than the existing process of emailing a spreadsheet to the sales team, buyers will not use it. #### Approval Workflows Unlike B2C, B2B purchases frequently require approval before the order is placed. Approval workflows must be flexible enough to match each buying organisation's internal processes: * **Spend threshold approvals.** Orders below a defined value are auto-approved. Orders above the threshold route to a designated approver. Multiple thresholds can trigger escalation to progressively senior approvers. * **Product category approvals.** Certain product categories (for example, capital equipment or hazardous materials) may require specialist approval regardless of order value. * **Multi-level sequential approval.** Complex organisations may require orders to pass through multiple levels: budget holder, department head, procurement team. Each level can approve, reject, or return the order for modification. * **Delegation.** Approvers must be able to delegate their authority when they are unavailable, preventing orders from being blocked. Elastic Path's composable architecture enables approval workflows to be implemented as a separate microservice that integrates with the commerce platform through events and APIs. This separation means approval logic can be as simple or as complex as required without constraining the commerce platform. #### Payment, Credit, and Search B2B payment differs fundamentally from B2C. Invoice on account (30, 60, or 90-day terms) is the most common method, requiring integration with the seller’s accounts receivable process. In a composable or headless architecture, back end commerce functionality is decoupled from the frontend, enabling greater flexibility in integrating payment and credit processes. The portal must enforce credit limits, support purchase orders, and handle split payments across cost centres. B2B catalogues can contain tens of thousands of SKUs, making effective search essential. Parametric search (filtering by technical attributes such as diameter, material, or compliance standard), part number cross-referencing, and search-as-you-type are all expected capabilities. Content management systems can be integrated as modular tools within composable ecommerce platforms to enhance product content and improve the search experience. ### How Composable Commerce Works At its core, composable commerce breaks away from the constraints of traditional monolithic commerce architecture by decomposing the entire system into smaller, independent software components known as packaged business capabilities (PBCs). Each PBC—such as product catalog, pricing, cart, or checkout—can be selected, integrated, and customized to address the organization’s specific business needs. Composable commerce platforms provide a modular approach, allowing businesses to assemble their ideal tech stack from a range of best-of-breed solutions. This means companies are no longer tied to a single vendor or forced to accept unnecessary features. Instead, they can build a modern commerce architecture that is flexible, scalable, and able to evolve as new digital touchpoints and business models emerge. By embracing composable commerce, organizations can innovate at such a rapid pace, adapting to shifting customer demands and market opportunities without being held back by legacy systems or monolithic commerce architecture. ### Architectural Approaches: Composable Commerce Architecture vs Monolithic Organisations evaluating how to build a B2B buyer portal typically consider three approaches: extending their existing monolithic platform, building on a B2C platform with B2B add-ons, or adopting a composable architecture. The development approach and technology stack differ significantly between composable commerce and traditional commerce architecture. Composable commerce leverages a modular, best-of-breed technology stack, while traditional commerce architecture relies on tightly integrated, all-in-one systems that are less flexible and harder to adapt. Extending an existing monolithic platform (SAP Commerce Cloud, Oracle Commerce, Magento) with B2B portal functionality is tempting, but these platforms tightly couple frontend, backend, and data layer. This traditional commerce architecture and many legacy e commerce platforms have limited integration capabilities and lack the modular nature needed for modern business requirements. Deep customisation creates upgrade barriers and technical debt. B2C platforms with bolted-on B2B features (Shopify Plus, BigCommerce) work for simple use cases, but limitations emerge quickly when requirements include multi-level organisational hierarchies, sophisticated pricing matrices, and deep ERP integration. In summary, the defining features of composable commerce vs traditional commerce architecture and ecommerce platforms are its modular nature, superior integration capabilities, and flexible development approach, enabling businesses to build tailored, scalable solutions. #### Composable Commerce with Elastic Path Elastic Path takes a fundamentally different approach. Instead of a monolithic platform, it provides a set of API-first commerce capabilities (product management, pricing, cart, checkout, orders, subscriptions) that can be composed with best-of-breed services for search, CMS, payments, and other functions. These independent services can be deployed and customized as needed, allowing businesses to adapt quickly to changing requirements. For B2B buyer portals, this composable approach offers several advantages: **Flexibility to model B2B complexity.** Elastic Path’s data model and API surface are designed to handle the pricing, catalogue, and organisational complexity that B2B requires. You are not fighting the platform to implement business rules that it was not designed for. **Frontend freedom.** The buyer portal’s frontend is decoupled from the commerce engine. It can be built with React, Vue, Next.js, or any modern web framework. This enables a tailored user experience optimised for B2B workflows (quick order, bulk upload, approval dashboards) rather than a B2C storefront template with B2B features bolted on. You can assemble all the components required for a customized experience that matches your business needs. **Integration-first architecture.** Elastic Path’s API-first design simplifies composable commerce ERP integration. Events and webhooks enable real-time data synchronisation without polling. This architecture also helps support standardized experiences across channels, ensuring consistency for users wherever they interact with your platform. **Independent scalability.** Each composable component scales independently. During peak ordering, cart and checkout services scale without affecting the product catalogue or pricing engine. Composable commerce enables businesses to optimize the customer journey and how customers interact with the portal, delivering seamless experiences at every touchpoint. ### Reducing Operational Costs One of the most compelling advantages of composable commerce is its ability to reduce operational costs across the organization. By leveraging composable commerce platforms, businesses can move away from the high maintenance and upgrade expenses associated with legacy platforms. The modular approach allows companies to select only the best-of-breed components they need, minimizing unnecessary complexity and reducing the need for costly custom development. Additionally, many composable commerce platforms are built on cloud-native infrastructure, offering features like auto-scaling and managed services that further lower infrastructure and support costs. This efficiency enables businesses to reallocate resources from platform maintenance to innovation and growth initiatives, enhancing their competitiveness in the digital marketplace. By reducing operational costs, composable commerce makes it easier for organizations to scale, enter new markets, and respond to evolving customer needs. ### Managing Vendor Risk Composable commerce provides a powerful strategy for managing vendor risk in an ever-evolving technology landscape. By adopting a modular, best-of-breed approach, businesses are no longer dependent on a single vendor for their entire commerce stack. This flexibility allows organizations to select the most suitable solutions for each function—whether it’s search, payments, or content management—and to replace or upgrade individual components as business needs change. Composable commerce platforms are designed for seamless integration, making it straightforward to swap out vendors or add new capabilities without disrupting the entire system. This reduces the risk of vendor lock-in and ensures that your commerce experience remains under your control, not dictated by a single vendor’s roadmap. By managing vendor risk in this way, businesses can maintain agility, quickly respond to market changes, and safeguard against potential disruptions that could impact customer experience or revenue. ### ERP Integration and Legacy Platforms: The Critical Success Factor The buyer portal is the frontend. The ERP is the backend. If the two are not properly integrated, the portal becomes a beautifully designed order entry screen that still generates manual work for the operations team. Seamless ERP integration is essential for ensuring stability and resilience across the entire ecosystem, preventing disruptions and enabling smooth operations throughout your composable ecommerce architecture. Composable commerce ERP integration is the single most important technical workstream in a B2B portal project. The key integration points are: #### Product and Pricing Synchronisation Products and pricing must flow from the ERP (or PIM) to the commerce platform. This is typically a one-way sync, with the ERP as the system of record. * **Batch synchronisation** works well for product data that changes infrequently. A nightly or hourly sync job pushes product updates from the ERP to Elastic Path. * **Event-driven synchronisation** is preferred for pricing, especially time-sensitive contract pricing. When a price is updated in the ERP, an event triggers an immediate update in the commerce platform. #### Inventory and Availability B2B buyers expect accurate stock information. If the portal shows an item in stock but the ERP says otherwise, trust is broken immediately. Real-time inventory checks at search and checkout are the gold standard, requiring low-latency API integration with the ERP's inventory module. For ERPs that cannot support real-time queries at scale, a near-real-time cache layer updated every few minutes is a practical compromise. #### Order Flow When a buyer completes checkout, the order must flow to the ERP for fulfilment. This integration must handle: * Order creation in the ERP with the correct account, pricing, and payment terms. * Order acknowledgement back to the portal (confirming the ERP has accepted the order). * Order status updates (processing, shipped, delivered) flowing back to the portal so buyers can track their orders. * Exception handling: what happens when the ERP rejects an order due to credit hold, stock discrepancy, or data validation failure. #### Customer and Account Synchronisation Buying organisations, their users, and their pricing contracts should be managed in the ERP and synchronised to the commerce platform, so new accounts automatically appear in the portal with the correct pricing and catalogue visibility. ### Team Roles for a B2B Portal Project Building a B2B buyer portal with Elastic Path requires a cross-functional team: a solution architect to design the composable architecture and integration patterns; frontend developers experienced with React or similar frameworks and complex B2B UI patterns (data tables, bulk forms, approval dashboards); backend and integration developers who understand API design, event-driven architecture, and the target ERP platform; a UX designer who understands that B2B workflows are fundamentally different from B2C; and QA engineers who can test complex pricing validation, approval workflow edge cases, and integration failure modes. For organisations that do not have all these skills in-house, working with an experienced Elastic Path implementation partner bridges the gap. McKenna Consultants provides the technical expertise in composable commerce architecture and Elastic Path B2B ecommerce development, working alongside clients' domain experts and internal teams. ### Practical Implementation Guidance Based on our experience as an Elastic Path implementation partner, here are practical recommendations for B2B portal projects. Implementing composable commerce can be simplified and accelerated by leveraging pre-built solutions and adopting a phased approach, making the transition more practical and less complex. **Start with the most painful workflow.** Build the single buyer workflow that generates the most friction first. A quick order interface that eliminates email-based ordering demonstrates value faster than a feature-complete portal that takes eighteen months to deliver. **Invest in the integration layer.** The ERP integration is where most B2B portal projects succeed or fail. Allocate sufficient time and use middleware (MuleSoft, Azure Logic Apps, or similar) to manage bidirectional data flows. **Design for the power user.** B2B buyers are repeat users who know the product range. Keyboard navigation, saved searches, quick reorder, and CSV upload are more important than promotional banners. Launch a minimum viable portal, put it in front of real buyers, and iterate based on feedback. ### Best Practices for Composable Commerce To fully realize the benefits of composable commerce, organizations should follow a set of best practices tailored to this modern approach. Start by clearly defining your commerce strategy and identifying the specific business capabilities required to deliver a tailored, differentiated customer experience. Select best-of-breed solutions that align with these needs, ensuring each component integrates seamlessly with your existing systems and processes. Prioritize composable commerce platforms that are cloud-native, scalable, and support a modular approach, enabling you to adapt quickly as your business evolves. Focus on delivering highly differentiated and personalized customer experiences, as these are key drivers of loyalty and growth in the digital marketplace. Finally, establish a process for continuous monitoring and optimization—regularly evaluate your commerce ecosystem, gather feedback from users, and make iterative improvements to stay ahead of changing customer expectations and market trends. By following these best practices, businesses can maximize the value of composable commerce and maintain a competitive edge. ### Why McKenna Consultants for Your B2B Portal McKenna Consultants is a specialist Elastic Path implementation partner based in the UK. Our team combines deep technical expertise in Elastic Path's platform with practical understanding of B2B commerce complexity. Our work with clients such as Norgren and Astrak demonstrates our ability to handle the full scope of B2B buyer portal capabilities: authenticated access, contract pricing, organisational hierarchies, ERP integration, and approval workflows. Whether you are building a new portal or migrating from a monolithic platform, we can help you design, build, and launch a self-service experience that integrates seamlessly with your back-office systems. ### Conclusion The shift toward B2B self-service buying is accelerating. With digital touchpoints emerging constantly, legacy systems and rigid technology stacks are increasingly challenged to keep up. Modern organizations span multiple customer markets, global locations, and ecommerce channels, requiring their ecommerce presence to be adaptable and responsive to evolving demands. Composable commerce focuses on flexibility and modularity, enabling seamless expansion into new ecommerce channels, new customer markets, and new global locations. An open ecosystem essentially means organizations are not tied to a specific vendor and can integrate world class SaaS products tailored to their organization's specific business needs. This approach allows businesses to go beyond basic ecommerce offerings—composable commerce vs traditional platforms empowers you to build a scalable ecommerce site that adapts to the evolving retail landscape and diverse digital touchpoints. Elastic Path’s composable architecture provides the technical foundation for B2B buyer portals that handle real enterprise complexity without the constraints of monolithic platforms. The return is measurable: reduced order processing costs, higher buyer satisfaction, increased order frequency, and a scalable digital commerce capability that grows with your business. --- # WOPI Data Residency and Geo-Fencing: A Compliance Guide for UK Businesses **Canonical URL:** https://www.mckennaconsultants.com/wopi-data-residency-and-geo-fencing-a-compliance-guide-for-uk-businesses/ **Author:** Nick McKenna **Published:** 1 July 2025 **Category:** CSPP WOPI ## WOPI Data Residency and Geo-Fencing: A Compliance Guide for UK Businesses When your SaaS platform embeds Microsoft 365 document editing through the WOPI protocol, every file open, every keystroke, and every save operation passes through a Microsoft regional data centre. For most of the protocol's history, hosts had limited control over which data centre handled those operations. That changed with the introduction of CSPP Plus and its ComplianceDomainPrefix property, which gives WOPI hosts explicit control over the geographic region where documents are processed. For UK businesses operating under post-Brexit data sovereignty requirements, this is not a minor protocol enhancement. It is a fundamental compliance capability that determines whether embedded document editing can be offered to regulated customers at all. This guide explains how WOPI data residency and CSPP Plus geo-fencing work at a technical level, why UK businesses need to pay attention, and the practical steps required to implement data residency controls in your WOPI integration. ### Why Data Residency Matters for WOPI Hosts The WOPI protocol enables cloud storage platforms to embed Microsoft Office editing directly into their web applications. When a user opens a document, the host application communicates with Microsoft's Office for the web (formerly Office Online Server) through a series of WOPI operations: CheckFileInfo, GetFile, PutFile, and others. Each of these operations involves data transfer between the host and a Microsoft-operated service endpoint. The critical question is: where does that Microsoft endpoint reside? Prior to geo-fencing capabilities, Microsoft's infrastructure would route WOPI operations to whichever regional data centre was most appropriate based on internal load balancing and proximity heuristics. For many use cases, this was perfectly acceptable. But for organisations subject to data residency regulations, the inability to guarantee that document content remained within a specific geographic boundary created a compliance gap. #### The Regulatory Landscape for UK Businesses Post-Brexit, the United Kingdom operates under its own data protection regime, the UK GDPR (retained from the EU General Data Protection Regulation) and the Data Protection Act 2018. While the UK has maintained adequacy decisions with the EU, the regulatory trajectory is increasingly independent. Several factors make data residency particularly relevant for UK ISVs and SaaS platforms: **Financial services regulation.** The Financial Conduct Authority (FCA) and the Prudential Regulation Authority (PRA) have published guidance on cloud outsourcing that explicitly addresses data location. Firms must be able to demonstrate where data is processed and stored, and must ensure that regulatory access to data is not impeded by cross-border arrangements. **Government and public sector.** The National Cyber Security Centre (NCSC) cloud security principles require organisations to understand data residency implications. Government contracts frequently include data sovereignty clauses mandating that data remains within the UK or specified jurisdictions. **Healthcare and legal.** NHS Digital's cloud security guidance and the Solicitors Regulation Authority's technology guidance both reference data location as a consideration. While neither imposes a blanket geographic restriction, both require organisations to demonstrate that data handling meets appropriate standards, which is significantly easier when data remains within a known jurisdiction. **Client contractual requirements.** Beyond regulation, many enterprise procurement processes include data residency clauses. If your SaaS platform embeds document editing, your customers may require contractual assurance that document content is processed within the UK or EEA. ### How CSPP Plus Geo-Fencing Works The Cloud Storage Partner Program Plus (CSPP Plus) is Microsoft's framework for ISVs who want to embed Office for the web document editing into their applications. It extends the standard WOPI protocol with additional capabilities, including the geo-fencing mechanism that enables data residency controls. #### The ComplianceDomainPrefix Property At the heart of WOPI geo-fencing is the `ComplianceDomainPrefix` property, which the host includes in the CheckFileInfo response. This property tells Microsoft's Office for the web infrastructure which regional data centre should handle document processing for this specific file. When a user opens a document, the WOPI host responds to the CheckFileInfo call with file metadata. By including the ComplianceDomainPrefix property, the host instructs Microsoft to route all subsequent WOPI operations for that document through the specified regional endpoint. The value of ComplianceDomainPrefix corresponds to Microsoft's regional deployment identifiers. For UK data residency, the host would specify the identifier that maps to Microsoft's UK data centre region. #### The Technical Flow The geo-fencing mechanism operates within the standard WOPI discovery and file access flow: 1. **WOPI Discovery.** The host retrieves the WOPI discovery XML from Microsoft, which lists available actions and their corresponding URLs across regions. The discovery document includes regional endpoint information. 2. **Action URL Construction.** When a user requests to open a document, the host constructs an action URL. With geo-fencing, this URL incorporates the regional prefix, ensuring that the initial request reaches the correct regional endpoint. 3. **CheckFileInfo Response.** The host returns the ComplianceDomainPrefix property in the CheckFileInfo response. This confirms to Microsoft's infrastructure which region should handle the session. 4. **Subsequent Operations.** All subsequent WOPI operations for that file session (GetFile, PutFile, Lock, Unlock, and others) are routed through the specified regional data centre. 5. **Co-authoring Sessions.** When multiple users collaborate on the same document, the geo-fencing setting from the host's CheckFileInfo response governs where the co-authoring session is managed. All participants' edits are processed within the specified region. #### Important Technical Considerations **Per-file granularity.** The ComplianceDomainPrefix is set per file in the CheckFileInfo response, not globally for the entire WOPI host. This means a single host application can serve documents with different data residency requirements. A multi-tenant SaaS platform could route UK customer documents through the UK data centre while routing EU customer documents through a European data centre. **Discovery endpoint alignment.** The WOPI discovery XML must include the regional endpoints that your ComplianceDomainPrefix values reference. During CSPP Plus onboarding, Microsoft provisions access to the appropriate regional discovery endpoints. **Proof key validation.** WOPI proof key validation, which verifies that incoming WOPI requests genuinely originate from Microsoft, must account for regional keys. Each regional deployment may use different proof keys, which the host must validate correctly. **Latency implications.** Geo-fencing may introduce additional latency if the specified regional data centre is not the closest to the user. For a UK-based user accessing a UK-fenced document, this is unlikely to be noticeable. However, if a user in Asia accesses a document fenced to the UK region, the document editing experience may be slower than if routing were optimised purely for performance. ### Implementing Data Residency Controls: A Practical Guide For ISVs implementing WOPI data residency controls, the process involves both technical integration work and organisational decisions about data classification. #### Step 1: Determine Your Data Residency Requirements Before writing any code, establish which data residency rules apply to your platform and your customers. Map your customer base by regulatory jurisdiction. Identify which customers require UK data residency, which require EEA residency, and which have no specific geographic requirements. This mapping will drive your implementation of per-file ComplianceDomainPrefix logic. Review your existing data processing agreements and terms of service. If you currently make no data residency commitments regarding embedded document editing, adding geo-fencing controls allows you to strengthen your compliance posture and differentiate your platform in regulated markets. #### Step 2: Complete CSPP Plus Onboarding Geo-fencing capabilities are available through the CSPP Plus programme. If you are currently on the standard CSPP programme, you will need to engage with Microsoft to upgrade. The CSPP Plus onboarding process includes domain allow-listing, which typically takes four to five weeks. Plan your timeline accordingly. Microsoft will provision access to the regional discovery endpoints and provide documentation on available ComplianceDomainPrefix values. #### Step 3: Update Your CheckFileInfo Implementation Modify your WOPI host's CheckFileInfo endpoint to include the ComplianceDomainPrefix property. The logic for determining the correct value should reference your data residency mapping from Step 1. A typical implementation pattern is: - Identify the tenant or customer associated with the file being opened. - Look up the data residency requirement for that tenant. - Set the ComplianceDomainPrefix accordingly. - Return the property in the CheckFileInfo JSON response. For multi-tenant platforms, this is most cleanly implemented as a tenant-level configuration setting. When onboarding a new customer, their data residency preference is recorded and automatically applied to all WOPI operations for their documents. #### Step 4: Update WOPI Discovery Handling Ensure your WOPI discovery client can retrieve and cache discovery XML from multiple regional endpoints. Your action URL construction logic must use the correct regional base URL that corresponds to the ComplianceDomainPrefix you intend to set. #### Step 5: Validate Proof Keys per Region Update your proof key validation logic to handle regional proof keys. Each regional deployment may publish different public keys for request signing. Your validation should: - Retrieve proof keys from the regional discovery endpoint. - Cache keys appropriately (they rotate periodically). - Validate incoming WOPI requests against the correct regional key set. Failure to handle regional proof keys correctly will result in valid WOPI requests being rejected, breaking document editing for users. #### Step 6: Test Across Regions Thorough testing must cover: - Document open, edit, and save operations for each configured region. - Co-authoring sessions where all participants are in the same region. - Co-authoring sessions where participants are in different geographic locations but the document is fenced to a specific region. - Proof key validation for each regional endpoint. - Graceful handling of regional endpoint unavailability. #### Step 7: Document Your Compliance Posture Once implemented, update your platform's data processing documentation to reflect the geo-fencing capability. This documentation should specify: - Which regional data centres are available. - How data residency is configured (per-tenant, per-folder, or per-file). - What data is covered by the geo-fencing (document content during editing sessions). - What data is not covered (for example, WOPI discovery metadata). This documentation supports your customers' own compliance assessments and due diligence processes. ### Common Pitfalls and How to Avoid Them Having worked with numerous ISVs implementing WOPI integrations, McKenna Consultants has identified several common pitfalls in data residency implementations. **Assuming geo-fencing covers all data flows.** The ComplianceDomainPrefix controls where document editing operations are processed. It does not necessarily govern every data flow in your application. Ensure you understand exactly which operations are covered and communicate this clearly to customers. **Hardcoding a single region.** While tempting for simplicity, hardcoding a single ComplianceDomainPrefix value removes the flexibility to serve customers with different residency requirements. Design for per-tenant configuration from the outset, even if you initially only support one region. **Neglecting proof key rotation.** Proof keys rotate periodically. If your validation logic caches keys indefinitely without checking for updates, you will eventually reject valid WOPI requests after a key rotation. **Underestimating the onboarding timeline.** CSPP Plus onboarding involves domain allow-listing, which takes four to five weeks. Factor this into your project plan, particularly if you are working toward a regulatory deadline. **Overlooking co-authoring scenarios.** Geo-fencing in co-authoring sessions introduces complexity. All co-authoring participants for a given document will be routed through the same regional data centre, regardless of their physical location. Test this thoroughly and document the behaviour for your support team. ### The Commercial Value of Data Residency Controls Beyond compliance, WOPI data residency controls create tangible commercial advantages for SaaS platforms. **Access to regulated markets.** Financial services, healthcare, and government sectors represent high-value customer segments that require demonstrable data residency controls. Geo-fencing removes a procurement blocker. **Competitive differentiation.** Many SaaS platforms that embed document editing cannot offer data residency guarantees. This capability differentiates your platform in competitive evaluations. **Reduced compliance overhead.** Proactive data residency controls simplify your response to data protection impact assessments, security questionnaires, and audit processes. Rather than explaining why you cannot guarantee data location, you can demonstrate precisely how you control it. **Customer trust.** In an era of increasing data awareness, the ability to assure customers that their documents are processed within their preferred jurisdiction builds trust and supports retention. ### How McKenna Consultants Can Help McKenna Consultants are recognised experts in WOPI protocol implementation, with deep experience across the Cloud Storage Partner Program and CSPP Plus. Our team has implemented WOPI integrations for ISVs across Europe and North America, including clients in regulated sectors where data residency is a mandatory requirement. We provide WOPI integration consultancy that covers the full scope of a Microsoft 365 document editing SaaS integration, from initial CSPP Plus onboarding through to production deployment and ongoing support. Our expertise spans the technical protocol implementation, the Microsoft relationship management involved in domain allow-listing, and the compliance documentation that regulated customers require. If your platform embeds or plans to embed Microsoft Office document editing and you need to address data residency requirements, contact McKenna Consultants to discuss your specific situation. We combine protocol-level technical depth with practical experience of the regulatory landscape that UK businesses must navigate. ### Conclusion WOPI data residency and CSPP Plus geo-fencing represent a significant maturation of the embedded document editing ecosystem. For UK businesses operating under post-Brexit data sovereignty requirements, these capabilities transform WOPI from a technology with a compliance gap into one with a compliance advantage. The technical implementation, centred on the ComplianceDomainPrefix property in CheckFileInfo, is well-designed and offers per-file granularity. However, a successful implementation requires careful planning across regulatory mapping, CSPP Plus onboarding, regional proof key handling, and thorough testing. For ISVs that invest in this capability, the reward is access to regulated market segments, competitive differentiation, and a stronger trust relationship with customers who care deeply about where their data is processed. --- # Troubleshooting WOPI API with The Cloud Storage Partner Program **Canonical URL:** https://www.mckennaconsultants.com/troubleshooting-wopi-api/ **Author:** Nick McKenna **Published:** 27 June 2025 **Category:** CSPP WOPI This article examines common problems with implementing a [**WOPI API**](/wopi-protocol-microsoft-office-proof-key/) and host, looking at the best development practice to minimise your problems. We take you step-by-step through the troubleshooting process, with a closer look at wopitest and how the **[Cloud Storage Partner Program (CSPP)](/what-is-the-cloud-storage-partner-program-plus/)** could help you. Remember, [**implementing WOPI**](/cspp-wopi-cloud-storage-partner-program/) for the first time is quite daunting, so if you need assistance, please [**get in touch**](/contact/) with us to find out how our experts can help. Logging ------- Most of the time, these types of problems are caused by errors in your API implementation, with errors rarely on the Microsoft side. The main difficulty with WOPI troubleshooting is that the WOPI client does not give useful error messages, so you should build extensive logging into your WOPI API implementation. This will help you track down problems much more easily. The errors you will see in the WOPI client are usually an error message, like, “Sorry, there was a problem and we can’t open this document. If this happens again, try opening the document in Microsoft Word.” You might also see some bizarre JavaScript errors in the developer console! ## **Using NGrok For Debugging** In the past, most developers have relied on the "Logging" approach outlined above for debugging their WOPI implementation. This is a slow approach as it requires code changes to be made and the WOPI service to be redeployed and then re-tested. Depending on how quick and well-automated deployment is, this approach can be slow. We recommend using NGrok (and similar products like Cloudflare) for improving the debugging experience. The core challenge is that most developers use the "localhost" domain name for running their WOPI implementation locally. MS will not (for obvious reasons) send WOPI API calls to localhost, which means that you can't debug your WOPI implementation in real time. NGrok solves this problem by allowing you to use a fully qualified domain name (FQDN) with an Internet-valid IP address for your WOPI implementation which can be redirected to your local development machine. This approach circumvents any firewall-related issues too. (Note that you will need at least an NGrok Pro account \[$20 / month at the time of writing\] for this to work, as this requires NGrok to accept your custom domain.) The first step is to **[set up your custom FQDN](https://ngrok.com/docs/guides/how-to-set-up-a-custom-domain)** (which must be allow-listed with CSPP) up on NGrok.  NGrok will manage the SSL certificate for you! Once it is all working and your DNS has updated, you can **[download the NGrok client](https://ngrok.com/download).** Then, once you have it installed, run a command like this: \- ngrok http --scheme=https --region=`eu--hostname=wopi.mydomain.com` 8080 This command line tells NGrok to intercept all "https" traffic going to wopi.mydomain.com and redirect it to port 8080 running on the local machine. With this in place, you can run the WOPI validator tests or a WOPI editor and debug the traffic on your local machine. Common WOPI API Issues ---------------------- 1. **.wopitest Validation** The first step is to get the .wopitest validation working. If you don’t have these tests working, then your WOPI API implementation is unlikely to work. However, having these validation tests working does not mean that your WOPI API implementation will work, as the tests are not exhaustive. For example, the SHA256 test only checks that you are supplying some text in the SHA256 property of CheckFileInfo. It does not check that the SHA256 is valid! So if you have your SHA256 calculation wrong, the validation test will pass, but the WOPI editor will fail to load with a strange JavaScript error. 2. **Known Issues** Check ‘Known Issues’, which can be found on the [Microsoft Documentation](https://learn.microsoft.com/en-us/microsoft-365/cloud-storage-partner-program/known-issues) page. This page looks at some of the issues that users have run into and offers fixes where possible. * **3\. Proof Key For Excel** When you construct a URL for proof key verification, you MUST use the exact URL that Microsoft used to call your WOPI service. The Excel client application encodes its parameters in service calls differently from Word and PowerPoint. Don't assume a specific encoding mechanism - use the URL as Microsoft created it. It is common for implementors to recreate the URL from scratch when performing proof key verification. This often leads to the wrong encoding mechanism being used which leads to proof key failure. If proof key is failing only in Excel, it is likely that this is the cause. * **4\. Malformed WOPISrc** Your WOPISrc URL should be simple and as described. Microsoft use the URL to identify an individual file. This is somewhat surprising as you provide as file id in the URL. However, MS use the whole URL to identify the file, not just the id. So for co-authoring to work, the **entire URL** must be identical for two users. A common error that we see is implementors adding extra parameters on to the WOPISrc which make the URL different for different users for the same file. Keep it simple! * **5\. Not Following The Host Page Instructions** This related to the "Malformed WOPISrc" error above. We commonly see implementors trying to use a different mechanism to trigger the WOPI client. The only reliable way to do this is to exactly follow the instructions on creating a host page in the CSPP WOPI documentation: [CSPP host page documentation](https://learn.microsoft.com/en-us/microsoft-365/cloud-storage-partner-program/online/hostpage) We sometimes see implementors trying to trigger the page using a GET instead of a form post. This results in the implementor adding the access\_token to the WOPISrc, which breaks the co-authoring as the URL for the same file then differs between different users. It's also worth knowing that MS will ignore an access\_token submitted in this manner. * **6\. Broken FavIcons** The Discovery endpoint ([CSPP environments and Discovery endpoint](https://learn.microsoft.com/en-us/microsoft-365/cloud-storage-partner-program/online/build-test-ship/environments)) sometimes incorrectly returns the "http" scheme instead of "https". I would recommend automatically tweaking the scheme to be "http" when this happens. * **7\. The Infamous "PutUnlockedFile" Validator Test** It is very common for the "PutUnlockedFile" test to fail for new WOPI implementors. This is almost always because the implementor is checking the wrong file size! For this test, one must check the file size of the **_existing_** file for a zero length, not the size of the inbound file. This is stated in the documentation ([CSPP PutFile REST reference](https://learn.microsoft.com/en-us/microsoft-365/cloud-storage-partner-program/rest/files/putfile)), but it's really easy to misread! Essentially it is permitted to overwrite an **existing** zero length file without a Lock in a PutFile request. * **8\. Page Numbers No Displaying Correctly In Word** Page numbers in Word do not always display correctly. For example, you may see this: Page 4 or < # >. This is bug in Word. You cannot fix it - we are waiting for Microsoft to fix it. * **9\. Incorrectly Encoded SHA256 In CheckFileInfo** In CheckFileInfo, you should include a SHA256 digest of your file to help Microsoft determine if it has changed. A lot of programming languages hex encode SHA256 by default, but CSPP WOPI requires base64 encoding. As a hint, your SHA256 should be exactly 44 characters long. If it isn't you have probably incorrectly encoded it. Detailed WOPI API Debugging --------------------------- Before reporting a problem to Microsoft, you should check the log of your own WOPI implementation for errors and warnings first. Look for Exceptions, 500s and other unexpected responses. Most of the problems we see reported to CSPP are because of a failure at the host side, not the Microsoft side. Typical problems are: * The domain for your WOPI API is not on the test allow list * You are not providing: * OwnerId in CheckFileInfo * Size in CheckFileInfo * A valid SHA256 in CheckFileInfo * A Version in CheckFileInfo * A valid LastModifiedTime in CheckFileInfo * The required properties in CheckFileInfo * You are providing additional unexpected properties in CheckFileInfo * You are not handling Locks correctly * Incorrect [proof key](/wopi-protocol-microsoft-office-proof-key/) validation implementation * access\_token\_ttl has expired * access\_token\_ttl is invalid (e.g. 1678387986000 is a valid number of milliseconds since January 1, 1970 UTC) In our experience, most of our clients’ problems are with their initial response to CheckFileInfo, so make sure that you go through that very carefully. At this point, it’s a slow process of checking each individual property for all of your WOPI API calls to make sure that they conform exactly to the documentation. Microsoft has a [document on the CheckFileInfo](https://learn.microsoft.com/en-us/microsoft-365/cloud-storage-partner-program/rest/files/checkfileinfo) operation, and this might be a good place to start. Although it’s a slow process doing this, requesting support from CSPP can be slower as they are very often busy. **Top tip**: check in your log for the last operation that Microsoft called in your WOPI API, as it can be a good guide to sorting out problems. Sometimes the last response you sent to Microsoft was the incorrect one! For example, if that last operation called was “Lock” and no further calls were made, there’s a good chance that there was a problem with your Lock response. Help from the Cloud Storage Partner Program ------------------------------------------- For help from Microsoft, you should provide Microsoft with a Fiddler trace and a session ID. Be aware that it may take two weeks or more to get a reply, and the reply is generally something like “You did not supply OwnerId in CheckFileInfo.” It’s much quicker to find the issue and debug it yourself if possible. For more information on WOPI integration, including [**using WOPI to embed Microsoft Word**](/using-wopi-to-embed-microsoft-office/), please take a look at our blog posts covering these topics in detail. Please [**contact McKenna Consultants**](/contact/) to find out how we can help you with your **[WOPI Integration](/cspp-wopi-cloud-storage-partner-program/)**. --- # Composable Commerce: The Future of Your Digital Strategy Explained **Canonical URL:** https://www.mckennaconsultants.com/composable-commerce-the-future-of-your-digital-strategy-explained/ **Author:** Nick McKenna **Published:** 8 May 2025 **Category:** B2B eCommerce Composable commerce is about building e-commerce platforms using flexible, independent modules. This method allows for customization and scalability, making it a game-changer for businesses. In this article, you will learn what composable commerce is, its benefits, and how to implement it effectively. ## Key Takeaways - Composable commerce allows businesses to create highly customizable and scalable e-commerce solutions by integrating independent components, enhancing flexibility and efficiency. - Packaged Business Capabilities (PBCs) are essential building blocks in composable commerce, streamlining functionality and facilitating rapid adaptation to market changes. - Implementing composable commerce requires careful selection of software components, ongoing training, and effective vendor management to address integration challenges and ensure a successful transition. ## Understanding Composable Commerce At its core, composable commerce focuses on breaking down the e-commerce system into smaller, independent components that can be integrated seamlessly. This modular approach not only fosters flexibility and agility but also allows businesses to create unique e-commerce platforms tailored to their specific needs. Unlike traditional commerce, composable commerce lets enables businesses to scale, customize, and update their solutions efficiently, making it an essential strategy for building ecommerce platforms and staying competitive in the dynamic digital landscape. For more information, refer to our content management system, traditional systems, composable solution, composable technology, composable commerce FAQ at the bottom of this article. The essence of embracing composable commerce lies in its ability to integrate best-of-breed components to deliver a cohesive and superior customer experience. ### Core principles of composable architecture The foundation of composable commerce architecture is its modular and independent components that integrate smoothly. Each component, designed as a microservice, performs specific tasks within a larger application framework, allowing for a high degree of customization and flexibility. This modularity enables businesses to deploy, update, or replace components without disrupting the entire system, fostering innovation and adaptability. Microservices are small, independent software components that play a crucial role in composable commerce. They allow businesses to experiment with new models and integrate advanced technologies with ease. Microservices enable the scaling of technology to match demand effectively by decentralizing and decoupling functionalities. This approach ensures that businesses can pivot quickly in response to market changes, driving continuous improvement and innovation. The benefits of composable architecture are manifold. It not only allows for full customization of the e-commerce platform but also enables businesses to meet diverse needs in terms of scalability and functionality. A composable commerce approach allows businesses to achieve unparalleled flexibility, innovation, and efficiency, establishing it as a powerful strategy for modern commerce. ### Packaged Business Capabilities (PBCs) Packaged Business Capabilities (PBCs) are the building blocks of composable commerce, providing modular, functionally complete software components such as search and checkout that can be integrated into e-commerce systems. These PBCs streamline the management of intricate systems by allowing teams to select and configure functionalities that meet their unique needs. This approach not only enhances overall productivity but also fosters innovation by enabling rapid implementation of new ideas with minimal disruptions. The integration of PBCs into a composable commerce platform facilitates seamless scalability and adaptability. Stitched together with a unifying API, PBCs enhance team collaboration and simplify adaptations to changing business requirements. This modular approach enables businesses to respond quickly to market dynamics and customer demands, ensuring they remain competitive in the ever-evolving digital commerce landscape. Using PBCs, businesses can create a composable commerce solution that is both flexible and robust, allowing them to meet specific business needs and achieve their goals efficiently. PBCs empower businesses to deliver superior customer experiences and drive operational efficiency through the integration of best-in-breed functionalities. ## Composable Commerce vs. Headless Commerce Composable commerce and headless commerce are both innovative approaches in digital commerce, each offering unique benefits. While headless commerce involves decoupling the front-end and back-end systems, allowing them to operate independently, composable commerce takes it a step further by providing full independence for each component within the e-commerce platform. This modular approach enhances flexibility, enabling businesses to modify or extend their commerce systems without affecting the rest. Understanding the differences between these business models is crucial for businesses looking to optimize their digital strategy. ### Decoupling front-end and back-end In headless commerce, the decoupling of the front-end presentation layer and back-end systems provides significant flexibility. This separation allows marketing teams to manage campaigns independently, reducing their reliance on technical staff and enabling quicker adaptations to market changes. This decoupling is a key feature of composable and headless commerce, offering businesses the agility to innovate rapidly and meet customer expectations. ### Independent services and integration capabilities Composable commerce allows businesses to integrate independent services seamlessly, fostering a modular approach to digital strategy. Leveraging tailored software components allows businesses to address specific operational needs efficiently, enhancing overall functionality. This modularity enables businesses to create more robust and tailored digital commerce environments, ensuring they remain competitive in a rapidly changing market. The integration capabilities of composable commerce platforms enable businesses to stitch together various components to create a cohesive and efficient system. This seamless integration enhances the ability to innovate and adapt, allowing businesses to leverage the best technologies available to meet their unique business goals and improve their commerce functionality on ecommerce platforms, all within a tightly integrated framework. ## Benefits of Composable Commerce The benefits of composable commerce are numerous and impactful. By enabling businesses to select and integrate the best solutions for higher-level functionalities, composable commerce fosters innovative and customized offerings. Both composable and headless commerce provide the flexibility needed to meet organizational needs and respond quickly to business changes. This ability to implement changes swiftly without the need for total application overhauls is a significant advantage, allowing updates to individual components as needed. Additionally, composable commerce platforms enhance scalability and reduce total ownership costs, making them an essential tool for modern commerce. ### Flexibility and innovation Composable commerce enables quick adaptation to market changes and customer needs, ensuring businesses remain responsive and competitive. This flexibility is facilitated through the use of microservices and APIs, allowing businesses to implement new features rapidly and efficiently. Updating specific microservices rather than entire applications enables faster deployment of changes, reducing customer acquisition costs and improving operational efficiency. The removal of limitations imposed by legacy technologies and monolithic systems broadens operational possibilities, allowing businesses to innovate continuously. Selecting best-in-breed vendors helps businesses optimize their solutions for enhanced functionality and customer experience. The adoption of composable architectures is driven by the need for cost-effectiveness, efficiency, and increased innovation potential, making it a powerful strategy for modern commerce. Generative AI and other advanced technologies are further enhancing the capabilities of composable commerce. For instance, companies like IMI plc and Astrak leverage composable solutions to unify applications, scale for peak demand, and accommodate future growth. This approach not only lowers operational costs but also reduces friction, making it easier for businesses to manage and scale their operations. ### Cost efficiency and resource optimization Composable commerce architectures can lead to significant cost savings by optimizing resource use and reducing the necessity for extensive vendor commitments. Costs in composable commerce are influenced by various factors such as licensing, subscription pricing, hosting, and maintenance. Optimizing these costs enables businesses to achieve greater financial efficiency, rendering composable commerce a cost-effective solution. One major disadvantage of monolithic software vendors is the limitation they impose on client flexibility, potentially leading to higher costs in the long run. In contrast, composable commerce allows businesses to allocate resources more efficiently, reducing overall expenses and enhancing operational efficiency. This optimization of resources ensures that businesses can maintain a competitive edge while managing costs effectively. ## Implementing Composable Commerce Implementing composable commerce involves several critical steps, from assessing business needs to selecting and integrating software components, and ensuring proper training and support for commerce related functions. Businesses must seek an agile solution that provides various capabilities and benefits to meet their unique requirements. The implementation process includes evaluating current systems, selecting and customizing components, integrating with existing systems, and testing. Establishing relationships with partners who can support growing needs is also crucial for successful implementation. ### Assessing business needs Before moving towards a composable commerce solution, businesses need to evaluate factors such as market dynamics and application complexity to determine if it fits their needs. Understanding the intricacies of business requirements will enable companies to better assess the suitability of a composable commerce approach. Choosing the appropriate components is crucial for successful implementation, ensuring that the platform aligns with the business’s goals and objectives. ### Selecting and integrating software components Selecting and integrating the right software components is a critical step in the composable commerce approach. The modular structure of composable commerce allows companies to choose best-of-breed solutions tailored to their specific business needs. Application programming interfaces play a crucial role in facilitating seamless integration and communication among various systems within a composable architecture. Assessing the scalability and compatibility of these components with existing systems ensures a smooth integration process, minimizing disruptions and maximizing efficiency. A unified SaaS composable environment can further streamline vendor management by consolidating tools and functionalities. This consolidation helps businesses manage multiple vendors more effectively, ensuring that all components work together seamlessly to create a cohesive and robust e-commerce platform. By leveraging flexible technologies and a modular approach, businesses can build a scalable and adaptable software ecosystem that meets their unique needs. ### Training and support Ongoing training and support are essential for ensuring that teams can effectively manage the composable commerce ecosystem. Implementing composable commerce often involves changes in infrastructure and monitoring tools, which require proper training to ensure smooth operations. Continuous education and support empower teams to handle the complexities of a modular architecture, resulting in better performance and fewer operational issues. Through implementation support and ongoing maintenance, businesses can minimize costs and optimize their composable commerce solutions. Effective training programs help teams stay updated with the latest technologies and best practices, ensuring that the e-commerce platform remains efficient and up-to-date. This approach not only enhances the overall customer experience but also drives business growth by enabling teams to leverage the full potential of composable commerce. ## Real-World Examples of Composable Commerce Real-world examples of composable commerce demonstrate its effectiveness across various industries. Companies like IMI plc and Astrak have successfully leveraged composable commerce platforms to enhance their scalability and operational efficiency. Integrating legacy and modern business systems has enabled these companies to achieve significant milestones and drive revenue growth. These examples highlight the potential of composable commerce in transforming digital strategies and achieving business goals. ### B2B transformations In the B2B sector, composable commerce has been instrumental in driving digital transformations and improving customer experiences. Flexible and tailored digital platforms enhance operational efficiency for B2B companies, helping them meet changing customer expectations. For instance, IMI plc utilized Elastic Path to integrate various systems and achieve a significant sales milestone in 2024, showcasing the power of composable commerce in driving business growth. ## Challenges of Composable Commerce While composable commerce offers numerous benefits, it also presents certain challenges. Integrating multiple components from different vendors can be complex and time-consuming. Additionally, the transition from monolithic platforms to a fully composable architecture often incurs higher initial costs and requires significant technical expertise. Businesses must carefully evaluate these challenges to determine if the benefits of composable commerce outweigh the potential drawbacks. ### Managing multiple vendors Managing multiple vendors in a composable commerce architecture can complicate negotiations and integrations. Dealing with various suppliers requires effective inventory management, coordination, and negotiation skills to ensure all components work together seamlessly. An Open SaaS composable ecosystem can assist by streamlining vendor management and consolidating tools and functionalities, simplifying the overall process. However, businesses transitioning from monolithic platforms may find the shift challenging due to the need to manage multiple vendors simultaneously in a diverse ecosystem. ### Digital maturity and technical expertise High digital maturity is crucial for effectively choosing and implementing technology solutions for composable commerce. Organizations must be prepared for complex digital maturity levels to leverage composable commerce architectures effectively. Hiring skilled developers for these initiatives may lead to significant costs, as experienced professionals often command higher salaries. This requirement for technical expertise can be a barrier for companies lacking the necessary resources and skills to implement and maintain a composable commerce system. Organizations must allocate extensive time and resources to fully implement a composable commerce architecture. This includes ongoing training and support to ensure teams can manage the complexities of the system effectively. The successful adoption of composable commerce requires thorough change management and collaboration among different teams, making digital transformation, digital maturity, and technical expertise essential for achieving the desired outcomes. ## Future Trends in Composable Commerce As technology continues to evolve, several future trends are emerging in composable commerce, including new technologies. The MACH architecture, which incorporates microservices, APIs, cloud, and headless systems, is enhancing performance and security in digital commerce platforms. Composable commerce offers significant advantages such as future-proofing digital strategies and avoiding vendor lock-in, ensuring flexibility and adaptability in a rapidly changing market. These trends highlight the growing importance of composable commerce in shaping the future of digital strategy. ### AI and machine learning integration AI and machine learning are becoming integral to composable commerce, enhancing various aspects of e-commerce strategies. AI algorithms analyze customer data to offer personalized experiences, boosting customer satisfaction and loyalty. AI-driven insights enable businesses to offer tailored recommendations, enhancing the overall customer experience. Companies like McKenna Consultants are building custom eCommerce Assistants based on existing knowledge bases to enhance the speed, accuracy, and cost-efficiency of human live chat responses. ### Cloud-native and API-first strategies Cloud-native approaches allow for faster deployment and scaling of e-commerce applications in a composable setup. Cloud-native strategies improve scalability and help businesses accommodate varying loads and demands with ease. This approach ensures that e-commerce applications remain flexible and adaptable, meeting the evolving needs of the market. API-first strategies play a crucial role in facilitating seamless integration of third-party services, creating a flexible composable commerce ecosystem. Prioritizing application programming interface drives the creation of adaptable and scalable digital commerce platforms, enhancing their responsiveness to market changes. Collectively, cloud-native and API-first strategies are shaping the future of composable commerce, enabling businesses to innovate rapidly and stay ahead in the competitive digital landscape. ## Summary Composable commerce represents a transformative approach to digital strategy, offering unparalleled flexibility, innovation, and efficiency. By breaking down e-commerce systems into modular components, businesses can create tailored and scalable platforms that meet their unique needs. The integration of microservices, APIs, and packaged business capabilities enhances functionality and drives continuous improvement, ensuring businesses remain competitive in a dynamic market. While composable commerce presents certain challenges, such as managing multiple vendors and requiring high digital maturity, the benefits often outweigh the drawbacks. The future trends of AI and machine learning integration, along with cloud-native and API-first strategies, further enhance the potential of composable commerce. By embracing composable commerce, businesses can future-proof their digital strategies and achieve sustained growth and success in the ever-evolving digital landscape. ## Frequently Asked Questions ### What is composable commerce? Composable commerce is a modular approach to digital commerce that enables businesses to build customized e-commerce platforms by integrating independent components, enhancing flexibility and scalability. This innovation allows organizations to adapt quickly to market demands. ### How does composable commerce differ from headless commerce? Composable commerce offers greater flexibility by allowing total independence for each e-commerce component, while headless commerce primarily focuses on separating the front-end and back-end systems. This makes composable commerce a more adaptable solution for specific business needs. ### What are Packaged Business Capabilities (PBCs)? Packaged Business Capabilities (PBCs) are modular and fully functional software components, like search and checkout features, designed for seamless integration into e-commerce systems to boost innovation and productivity. ### What are the benefits of composable commerce? Composable commerce offers flexibility and innovation by enabling businesses to choose and integrate the best solutions tailored to their needs, resulting in a more efficient and customized e-commerce platform while optimizing costs and resources. ### What are the challenges of implementing composable commerce? Implementing composable commerce presents challenges such as the need to manage multiple vendors, requiring advanced digital maturity and technical expertise, higher initial costs, and the complexity of seamless integration of independent components. These factors can complicate the transition to a flexible and modular e-commerce solution. --- # What Are Microsoft Office Add-Ins? **Canonical URL:** https://www.mckennaconsultants.com/what-are-microsoft-office-add-ins/ **Author:** Nick McKenna **Published:** 1 May 2025 **Category:** Microsoft Office Add-In Developer [Microsoft Office Add-Ins](/microsoft-office-add-ins/) come in three main varieties: - Outlook Add-Ins - Excel Add-Ins - Word Add-Ins Add-Ins can also be built for PowerPoint and Teams. An Office Add-In is a small piece of highly focused software designed to be embedded into Microsoft Office for desktop or the web, often utilizing dialog boxes for additional settings and options. For more details on the different types of Office Add-Ins, refer to our comprehensive guide. Modern Office Add-Ins work in Office for Windows, Office for MacOS as well as the major browsers. A single Office Add-In will work in all of those platforms. Add-Ins can also be considered as extensions of Microsoft 365, providing additional functionalities. Developers can take advantage of free resources like the Microsoft 365 Developer Program to build and test their add-ins. Modern Microsoft Office Add-Ins represent the future of productivity tools, enhancing business operations with secure cloud technology. For example, we can create an Office Add-In for Excel that will work in Chrome, Edge, Firefox, Microsoft 365 for desktop, and Microsoft 365 for the web, ensuring compatibility across various Office applications. We can even make your Outlook Add-In work on Android and iOS, although we generally discourage this as usage tends to be low for Office Add-Ins on mobile platforms. Office Web Add-Ins provide performance improvements and are tailored for specific applications like Visio. We provide valuable resources to support developers in building solutions within the Microsoft 365 ecosystem. Modern Microsoft Office Add-Ins (for Word, Excel, or Outlook) are based on web technologies such as HTML, CSS, and JavaScript, with sample data available for testing and prototyping. We offer built-in samples in Script Lab to facilitate experimentation and enhance coding proficiency. Developers can use Script Lab to prototype and verify the functionality of their add-ins. Essentially, an Office Add-In is a web page (that can easily be hosted on a CDN) with access to a special JavaScript library called OfficeJs that is hosted in the Task Pane. OfficeJs does the heavy lifting in terms of interfacing your Office Add-In with Excel, Word, or Outlook. The Task Pane is the panel on the right-hand side of MS Office that the Add-In is hosted in. Although the core technology for the office JavaScript APIs is relatively simple, managing which client and server platforms in the Microsoft Office family are supported can be complex! Supporting only recent OfficeJs APIs will mean that your Add-In does not work on slightly older Microsoft Office clients, for example. We can help you navigate the maze of API requirement sets, client platforms, and server platforms to help you create the Word Add-In, Excel Add-In, or Outlook Add-In that will integrate with your SaaS platform. We will fully document the use of Office JavaScript APIs so that you can move forward with your Add-In with confidence. For more complex Add-Ins, we have the back-end experience to fully integrate with Graph API to allow your Outlook Add-In complete access to your customers’ inboxes, calendars, etc. ## Office Add-in Types There are several types of Office Add-ins, including task panes, content add-ins, and dialog boxes. Task panes are add-ins that run in a separate pane within an Office application, providing users with access to additional features and tools. For instance, a task pane in Excel might offer advanced data analysis tools, while a task pane in Word could provide quick access to a library of templates. Content add-ins, on the other hand, insert content directly into an Office document, such as images, tables, or charts, enhancing the document’s functionality and visual appeal. Dialog boxes are add-ins that provide a pop-up window with additional options and settings, allowing users to configure the add-in’s behavior or input specific data. Each type of add-in has its own unique characteristics and use cases, allowing developers to choose the best approach for their solution. ## Interacting with Office Documents Office Add-ins can interact with Office documents in various ways, including reading and writing data, inserting content, and manipulating document structures. For example, a Word add-in can insert a custom header or footer into a document, while an Excel add-in can create a custom chart or graph. Outlook add-ins can interact with emails and calendars, providing features such as email tracking or meeting scheduling. By interacting with Office documents, add-ins can provide a wide range of benefits, from automating tasks to enhancing collaboration. This interaction allows users to streamline their workflows, reduce manual effort, and ensure consistency across their documents and data. ## Customizing Office UI Office Add-ins can also customize the Office UI, providing users with additional features and options. For example, a custom tab can be added to the ribbon, providing access to add-in features and tools. This custom tab can be tailored to the specific needs of the user, offering quick access to frequently used functions and tools. Dialog boxes can be used to provide additional settings and options, while task panes can display custom content and data. By customizing the Office UI, add-ins can provide a seamless and integrated user experience, making it easier for users to access and use add-in features. This customization ensures that the add-in feels like a natural extension of the Office application, enhancing productivity and user satisfaction. ## Microsoft Graph Integration Microsoft Graph is a powerful API that provides access to a wide range of Microsoft services and data, including Office 365, Azure Active Directory, and more. Office Add-ins can integrate with Microsoft Graph to provide additional features and capabilities, such as accessing user data, sending emails, or creating calendar events. By integrating with Microsoft Graph, add-ins can provide a more comprehensive and connected user experience, leveraging the power of Microsoft’s cloud-based services. With Microsoft Graph, developers can build add-ins that are more powerful, flexible, and scalable, meeting the evolving needs of businesses and users. This integration allows for seamless data flow and interaction between different Microsoft services, enhancing the overall functionality and value of the add-in. [Fill in the contact form for more information about our Office Add-In development services.](https://www.mckennaconsultants.com/contact/) --- # AI and Consciousness: Exploring the Frontier **Canonical URL:** https://www.mckennaconsultants.com/ai-and-consciousness-exploring-the-frontier/ **Author:** Nick McKenna **Published:** 27 April 2025 **Category:** Artificial Intelligence [Artificial Intelligence (AI)](/ai-first/) has captured the imagination of technologists, philosophers, and business leaders alike. As AI becomes increasingly powerful, questions inevitably arise: Could AI ever be conscious? Is today's AI truly intelligent, or merely an impressive simulation? In this article, we'll explore the nature of consciousness, how AI fits into the picture, and what it means for the future. What Is Consciousness? ---------------------- Consciousness is often described as the experience of being aware - of having thoughts, feelings, and a sense of self. Despite centuries of study, it remains one of the greatest mysteries in science and philosophy. Leading theories include: * **Integrated Information Theory (IIT):** Proposes that consciousness arises from systems that integrate information in specific ways. * **Global Workspace Theory (GWT):** Suggests that consciousness is like a broadcast system where information is made globally available across various cognitive processes. In both cases, consciousness is tied to complex, dynamic, and highly interconnected processes - a far cry from today's AI systems. Can AI Be Conscious? -------------------- Today's AI, including large language models and recommendation engines, is not conscious. AI systems process input data and produce output responses based on statistical patterns. They simulate understanding without actually experiencing anything. It's helpful to distinguish between: * **Weak AI:** Task-focused systems like the AI product assistants we build at McKenna Consultants. * **Strong AI:** Hypothetical AI that possesses genuine understanding, awareness, and emotions. Neural Networks vs The Human Brain ---------------------------------- Understanding how AI works sheds light on why consciousness in machines remains far from reality. ## How Neural Networks Work Artificial neural networks (ANNs) are inspired by biological neurons but are vastly simpler. Each "neuron" is a mathematical function that passes information forward based on weighted inputs. Learning occurs by adjusting these weights through training algorithms such as backpropagation. _Simple metaphor: "If a human brain is a rainforest, a neural network is a small, carefully maintained garden with a few types of plants."_ Large AI models like GPT-4o, for example, have trillions of parameters—adjustable numerical weights—but no neurons in the biological sense. While a parameter might be loosely compared to a synaptic weight in the brain, even this analogy falls short: the nodes in a neural network are vastly simpler than real neurons, and the complexity of interconnections in the human brain is unmatched by any current AI. ## Similarities to the Human Brain * Both process information by passing signals through interconnected nodes. * Both learn by adjusting the strength of connections based on experience. ## Key Differences * **Complexity:** Human brains have about 86 billion neurons; artificial networks use far fewer nodes. * **Learning Efficiency:** Humans learn from minimal examples; AI often requires millions of data points. * **Energy Consumption:** The brain uses about 20 watts; large AI models can use thousands of watts. * **Plasticity:** Human brains continuously rewire; AI models are rigid once trained. * **Experience:** Humans have subjective experiences; AI does not. ## Why This Matters for AI and Consciousness Neural networks can mimic some intelligent behaviors but lack the subjective experience central to consciousness. They are sophisticated tools, not sentient beings. Challenges in Creating Conscious AI ----------------------------------- Creating a conscious machine would require solving both technical and philosophical challenges: * How do you program subjective experience? * What architectures would support dynamic, integrated processing comparable to the brain? * How would we recognize machine consciousness if it appeared? These questions remain unanswered, and most experts agree that conscious AI is still firmly in the realm of science fiction. Practical AI: Where We Are Today -------------------------------- At McKenna Consultants, we focus on building practical AI applications that solve real business problems - from AI product assistants to intelligent automation tools. Our AI projects enhance business processes, deliver insights, and improve customer experiences without venturing into speculative areas like machine consciousness. Conclusion ---------- The relationship between AI and consciousness is a fascinating topic that blurs the lines between technology, philosophy, and ethics. While true conscious machines remain a distant (and uncertain) possibility, today's AI offers immense potential when applied thoughtfully and ethically. At McKenna Consultants, we're excited to be part of the journey - building AI that empowers businesses today, not science fiction tomorrow. [Contact us today to find out more about our AI development services!](/contact/) --- # Demystifying LLM-Based AI: A Practical Guide to Key Concepts **Canonical URL:** https://www.mckennaconsultants.com/demystifying-llm-based-ai-a-practical-guide-to-key-concepts/ **Author:** Nick McKenna **Published:** 17 April 2025 **Category:** Artificial Intelligence If you've ever used ChatGPT or another AI tool and wondered _how it actually works_, you're not alone. At McKenna Consultants, we're now incorporating [AI into the bespoke software solutions we build for our clients](/ai-first/). As part of that journey, we've found it helpful to explain the core concepts behind modern AI systems — particularly those based on **Large Language Models (LLMs)** — in simple terms. This post takes you on a journey from the foundational ideas to more advanced terminology, demystifying the technology that powers tools like ChatGPT and the AI systems we’re building today. ## What Is an LLM? **LLM** stands for **Large Language Model** — a type of artificial intelligence trained to understand and generate human-like text. Think of it as an advanced autocomplete on steroids. LLMs are trained using _enormous_ datasets of text (books, articles, websites, etc.), which they use to learn patterns in language, grammar, logic, and even style. Popular LLMs include **[OpenAI’s GPT models](https://openai.com/)**, **[Anthropic’s Claude](https://www.anthropic.com/)**, **Meta’s LLaMA**, and **[Google’s Gemini](https://gemini.google.com/)**. * * * ## Neural Nets: The Brains Behind the Model The core of an LLM is a **neural network**, a kind of computer architecture inspired by the human brain. Neural networks consist of layers of artificial “neurons” that process input and learn from it. In simple terms: * You feed in a word (or part of a word). * The neural network analyzes it and predicts what should come next. * It does this using **weights** and **heuristics** learned during training — essentially, a giant math equation fine-tuned over time to get better at guessing what comes next. This prediction-based mechanism is what allows an LLM to write poetry, explain a legal document, or help you debug code. * * * ## Context: The Conversation Window LLMs operate based on **context** — the amount of text they can "see" at once when generating a response. Think of it like the AI’s short-term memory. For example: * GPT-3.5 can typically handle about 4,000 tokens (~3,000 words). * GPT-4 Turbo can go up to 128,000 tokens (~96,000 words). That context window determines how much information the model can consider when formulating a reply — which matters a lot in complex or multi-turn conversations. * * * ## Applications: Putting LLMs to Work An **LLM application** is any tool that wraps an LLM in a user-friendly interface. ChatGPT, GitHub Copilot, AI-powered email assistants — all are examples of applications built on top of LLMs. In our work at McKenna Consultants, we’re currently building an AI product assistant for an eCommerce website — a custom application that leverages LLM capabilities to improve the customer experience. * * * ## Agents: Giving AI a Sense of Autonomy An **AI agent** is an LLM (or set of models) paired with memory, goals, and tools. Instead of just answering one question, agents can plan, reason, and take multiple steps toward a goal. Imagine asking an agent to: > “Compare the prices of similar products across five competitor websites and give me a summary.” An agent might: 1. Use web browsing tools. 2. Extract product information. 3. Organize the data. 4. Present the results. It’s not just generating text anymore — it’s acting. * * * ## Tools: Extending the Model’s Reach Most LLMs are limited to their training data and can't fetch real-time info. But when paired with **tools** — like calculators, web browsers, databases, or APIs — they become far more powerful. In our own implementations, we often give an AI system access to a company’s internal tools (like product databases or support documentation) to enhance its usefulness. * * * ## RAG: Retrieval-Augmented Generation **RAG** is a technique that combines LLMs with external data sources. Instead of asking the LLM to “remember” everything, we store knowledge in a searchable database. When a user asks a question, the app: 1. Retrieves relevant info. 2. Feeds it into the model as context. 3. Generates an accurate, up-to-date response. This is crucial for keeping AI helpful in domains with constantly changing information — like product specs or regulatory compliance. * * * ## Agent2Agent: Collaboration Between AIs In more advanced systems, you might have **multiple agents** working together. For example, one agent might be responsible for research, while another writes the report. This approach is known as **Agent2Agent** communication. This architecture is useful in workflows where different tasks require different kinds of expertise or models — and we’re just starting to explore what’s possible here. * * * ## Model Context Protocols: Organising the Conversation As systems grow more complex, engineers need a way to structure how LLMs talk to users, tools, and each other. That’s where **Model Context Protocols** come in — they define how to format input and output, manage context, and coordinate between agents. Think of it as a shared language that helps all the parts of an AI system stay on the same page. * * * ## Wrapping Up Understanding the fundamentals of LLM-based AI helps make sense of the amazing things these systems can do — and their limitations. At McKenna Consultants, we’re blending this cutting-edge technology with our long-standing expertise in bespoke software development to deliver smarter, AI-enhanced solutions. If your business is exploring how to integrate AI into your software products — whether that’s through chatbots, automation, or something more ambitious — we’d love to help. **Let’s build something intelligent, together.** To find our more about our AI development services, [get in touch today.](/contact/) --- # The Role of Human-in-the-Loop in Training and Tuning eCommerce AI Assistants **Canonical URL:** https://www.mckennaconsultants.com/practical-ai-chatbot-quality-management/ **Author:** Nick McKenna **Published:** 16 April 2025 **Category:** Artificial Intelligence As [AI](/ai-first/) continues to transform the way eCommerce businesses engage with customers, one of the most important concepts shaping chatbot development is the _human-in-the-loop_ approach. While AI can dramatically speed up response times, cut costs, and operate 24/7, it still needs human guidance to stay accurate, reliable, and brand-aligned. In complex eCommerce environments—where customers often ask highly specific, technical, or unusual questions—AI chatbots benefit significantly from human oversight during both the training and operational phases. * * * ## Why Human-in-the-Loop Matters in eCommerce Chatbots LLM-based eCommerce AI assistants are powerful, but they can make mistakes. They may: * Misinterpret vague or domain-specific language. * Suggest incorrect or outdated products. * Answer confidently when they should escalate to a human. The human-in-the-loop approach keeps quality high by placing people strategically within the AI lifecycle, especially where judgment, context, or nuanced understanding is required. * * * ## Key Roles for Humans in the Loop ### 1\. **Curating and Structuring Training Data** Before an AI assistant can respond helpfully, it must be grounded in business-specific knowledge. Human experts: * Select relevant PDFs, manuals, product databases, and internal documentation. * Break content into manageable chunks for RAG (Retrieval-Augmented Generation). * Tag, label, and validate knowledge to improve searchability and relevance. ### 2\. **Reviewing and Annotating Conversations** Post-deployment, humans review chatbot interactions to: * Identify failures, hallucinations, or incomplete answers. * Annotate chats with correct responses. * Flag gaps in product data or misunderstood queries. This helps refine both the retrieval layer and the prompts used by the LLM. ### 3\. **Managing Escalations and Edge Cases** Some queries are better handled by people. With human-in-the-loop workflows: * Low-confidence or ambiguous queries are routed to human agents. * Chat logs are automatically flagged based on tone, sentiment, or unusual structure. * Humans provide answers that can be recycled for future model tuning. ### 4\. **Providing Feedback Loops for Continuous Improvement** Structured feedback from humans can: * Improve grounding documents. * Inform prompt adjustments. * Train secondary LLMs used for moderation or quality control. Over time, this leads to more accurate, helpful, and brand-consistent chatbot behaviour. * * * ## Balancing Automation and Oversight A well-implemented human-in-the-loop strategy doesn’t slow things down—it enhances trust, accuracy, and effectiveness. The chatbot handles routine queries instantly, while humans focus on: * Complex product issues. * High-value customers. * Improving the assistant's underlying knowledge base. This hybrid model reduces operational cost while ensuring quality doesn’t suffer as automation scales. * * * ## Real-World Application at McKenna Consultants At McKenna Consultants, we help enterprise eCommerce clients build and maintain AI-powered assistants that combine technical sophistication with practical oversight. By designing chat workflows with humans in the loop, we: * Prevent bad outputs before they reach customers. * Uncover opportunities to improve internal product knowledge. * Create tools that allow easy human review of AI outputs. * * * **Conclusion** The future of eCommerce support is hybrid. [AI](/ai-first/) can handle scale and speed, but humans remain essential for quality, learning, and adaptability. A thoughtful human-in-the-loop approach ensures your AI chatbot grows smarter, more accurate, and more trusted with every interaction. [If you're interested in building an AI chatbot or upgrading your existing human-powered bot, get in touch today!](/contact/) --- # Managing AI Quality in eCommerce Chatbots: Balancing Automation with Accuracy **Canonical URL:** https://www.mckennaconsultants.com/managing-ai-quality-in-ecommerce-chatbots/ **Author:** Nick McKenna **Published:** 13 April 2025 **Category:** Artificial Intelligence As eCommerce businesses look to scale, improve customer experience, and reduce support costs, AI chatbots powered by large language models (LLMs) are becoming an increasingly attractive solution. From recommending the right product based on a customer’s problem statement to identifying replacements for obsolete or competitor parts, eCommerce AI chatbot assistants can handle complex queries faster and more efficiently than traditional human teams. But there’s a catch: No one wants an AI chatbot confidently providing the wrong answer. At McKenna Consultants, we specialise in building AI-powered eCommerce software solutions, and we know that quality management is key. AI can drive exceptional efficiency—instant responses, 24/7 availability, lower costs, and high scalability—but it must be governed by robust quality controls to protect brand trust and deliver real value. Here are three practical mechanisms we recommend for managing AI chatbot quality in complex eCommerce environments. **1\. Build a Custom Chat Review Platform That Explains LLM Reasoning** ----------------------------------------------------------------------- Most LLMs are black boxes. When a chatbot gives a surprising or incorrect answer, it's often unclear _why_. To overcome this, we build custom chat review platforms that: * Display which contextual documents were used via Retrieval-Augmented Generation (RAG). * Highlight how the LLM interpreted the customer query. This might include showing how the model paraphrased or reformulated the user's original input, what entities or keywords it identified as significant, and how it matched those to internal knowledge sources. For example, a reviewer might see that the chatbot interpreted 'my pump is leaking' as a request for a specific replacement seal and see which product identifiers were prioritised as a result. * Show the decision path taken to arrive at the final answer. **RAG (Retrieval-Augmented Generation)** is a technique where external documents (such as PDFs, product databases, or manuals) are retrieved based on the user's query and injected into the prompt to guide the LLM's response. This helps the chatbot answer more accurately using up-to-date and business-specific information. This transparency empowers internal teams to diagnose issues quickly. For example, if a chatbot incorrectly suggests a product, the review platform might reveal that an outdated PDF was used, or a similar product name was mistakenly prioritised. **2\. Use a Second LLM to Evaluate Responses Before They Are Sent** ------------------------------------------------------------------- Another effective strategy is deploying a secondary LLM as a "quality gatekeeper." Before the chatbot's response reaches the customer, it is evaluated for: * Factual accuracy. * Appropriateness and tone. * Alignment with company policies and product constraints. If the secondary LLM identifies potential issues, the response can be blocked, rewritten, or escalated to a human. This automated guardrail adds a layer of assurance without slowing down response times. This is a classic example of a _human-in-the-loop_ approach, where automation is balanced with human oversight to ensure quality and accountability. 3\. Automatically Review Chats and Flag Issues for Human Oversight ------------------------------------------------------------------ Not every conversation requires human intervention—but some do. We implement automated review systems that: * Continuously scan all chatbot interactions. * Flag chats with low confidence, unusual queries, or negative customer sentiment. * Prioritise these for urgent human review. This ensures that humans stay in the loop where they are most valuable: improving the underlying data, handling edge cases, and maintaining high service standards. This continuous _human-in-the-loop_ feedback mechanism is critical to sustaining chatbot reliability over time. ## **Quality Management Drives Long-Term AI Success** Focusing on chatbot quality does more than prevent mistakes. It allows businesses to: * Continuously improve their AI assistant by refining the underlying knowledge base. * Understand gaps in product data and customer communication. * Build customer trust in the AI assistant over time. * Leverage analytics and continuous improvement to adapt to evolving customer needs and optimise chatbot performance. In short, a strong feedback loop between AI output, human review, and data improvement is essential to delivering a reliable eCommerce AI chatbot. ## **Why McKenna Consultants?** We build bespoke software solutions for large, complex eCommerce environments. Our experience in back-end systems, AI integration, and data-driven applications positions us perfectly to help clients deploy high-quality, high-performance eCommerce AI assistants. [If you’re considering introducing or upgrading your eCommerce AI chatbot, let’s talk.](/contact/) --- # AI and Software Development in 2024 **Canonical URL:** https://www.mckennaconsultants.com/ai-and-software-development/ **Author:** Nick McKenna **Published:** 24 November 2024 **Category:** Artificial Intelligence AI and software development. Where do we start? [Artificial intelligence](/ai-first/) has significantly impacted the software development industry so far and is showing no signs of slowing down, and the role of software developers is adjusting swiftly with it. So, with innovations occurring left, right, and centre, you may be wondering what’s next for software developers with AI and how this could impact your business and employees’ roles. After all, AI isn’t just for [improving the customer experience](/how-ai-can-improve-customer-experience/) – it’s also leading the way in internal processes. In this article, we’re here to explore how the relationship between software development and AI could develop in future. Let’s jump right in! How Can AI be Used in Software Development? ------------------------------------------- When it comes to AI and software development, we have already witnessed innovative ways in which it is streamlining work processes, including: 1. **Code generation** Unsurprisingly, AI is being used to create code based on existing data examples and patterns. Furthermore, it can optimise this code by detecting inefficient parts and suggesting improvements to improve the code quickly without the mundane manual work. While this is a fantastic advancement for software developers, we advise not to depend on AI only for code generation. Always ensure a human programmer checks over the code, as AI is not infallible and can make mistakes. 2. **Code summarisation** Blending artificial intelligence tools with manual tests means most of the code gets covered. Furthermore, AI can also carry out A/B testing on two different versions of a program in order to figure out the most efficient solution. Once the testing comes to an end, AI can rapidly create grammatically-sound documentation for software developers to use and identify any problems in their current work. 3. **Code error detection** AI has the power to analyse code and detect vulnerabilities. [Machine learning](/machine-learning-vs-ai-difference/) techniques can be leveraged to learn from previous test results, predicting code parts which are likelier to contain potential bugs. This can massively aid software developers in detecting and correcting bug issues earlier on in the development process, resulting in higher-quality software and boosting your company’s reputation.  4. **Developer focus shift** The fantastic thing about AI in software development is its ability to streamline coding processes. It can make corrections to code and suggestions for specific lines of code, allowing software developers to save time and focus on more creative coding parts instead and explore new strategies. 5. **Skills gap bridge** With AI in play, those who aren’t software developers can now contribute to the development process. AI can take care of code generation and other difficult projects, meaning less-experienced staff can use AI to help them pursue more complicated tasks. This helps workers grow their capabilities, knowledge, and skills in the long run. Remember, humans can learn from AI as much as AI can learn from humans. 6. **Planning assistance** Who doesn’t want an automated little helper to back up informed decisions and tell you whether a new strategy is worth pursuing? AI can provide the solution here, evaluating your previous projects, collecting data on your resources, and making data-driven recommendations for new strategies and projects. Once you’ve allocated your different resources, AI can help you predict outcomes and guide your strategy. It can use data to update deadlines, budgets, workflows, and assigned roles. ## What Are the Benefits of AI in Software Development? So, what opportunities does AI hold in this industry? Check out some potential beneficial ways in which AI can be used in software development: * Freed up time Software developers are now able to automate some mundane tasks to elevate their overall efficiency, productivity, and engagement at work. Let’s look at a few examples. Other can code generation, AI tools can also create code snippets and help with bug fixing, which can reduce time spent on repetitive or tedious tasks and help developers concentrate their efforts on more complicated and crucial tasks day to day. * Better code quality With AI-powered tools by your side, you have the power to analyse code for possible code issues and vulnerabilities, which you can then work on fixing. This can boost the overall code quality and decrease the time developers need to spend debugging. * Reduced costs By automating mundane tasks and enhancing overall efficiencies, AI tools can help cut development costs in your organisation. The good news here is that you can allocate your budget to other core business aspects. * Improved collaboration and learning AI tools can facilitate enhanced team communication by summarising discussions, tracking relevant changes, and integrating with project management tools. With this easy access, AI can then be used as an educational tool, in which software developers can learn from it and pick up on higher-quality suggested code snippets and frameworks. * Encouraged creativity While AI takes care of your organisation's mundane tasks, your software developers have the freedom to get stuck into more innovative and creative procedures. What's more, AI can also provide a helping hand in brainstorming processes by supplying new approaches and ideas, sparking further inspiration amongst teams. ## How Will AI be a Challenge in Software Development? Despite having many advantageous opportunities in software development, AI is not without its risks. When using AI, software developers must be wary of: * Dependency Because of how valuable AI can be in software development, software developers may run the risk of becoming too dependent on its suggestions. This could potentially deplete software developers’ problem-solving, coding, and other skills over time. Furthermore, if your organisation loses access to artificial intelligence, this could severely disrupt workflows, leading to lost resources and time. * Bias Software developers should consider the [ethical issues of using AI](/balancing-innovation-and-the-ethics-of-ai-in-business/). Because AI is trained on existing data, bias could be an issue here when it comes to presenting outcomes. This means that developers need to ensure that AI models are inclusive and train them on a variety of data sources with ongoing monitoring and, of course, ensure everything created or edited by AI is run past a human. * Transparency The lack of transparency about how AI makes decisions in software development may spark ethical questions about accountability. To correct this, software developers should try to generate explainable AI models that offer clear insights into their decision-making procedures. * Mistakes happen Despite AI’s benefits in software development, it can sometimes make mistakes – just like in any other industry. This means that the suggestions it produces may sometimes be inaccurate, causing the need for precise scrutiny by software developers. Errors can result in flawed software, which means they must be corrected. This may waste developers’ time, which could be better spent focusing on more complex and creative processes. * Complex contexts While fantastic in generic contexts, AI models may be challenged by understanding more complicated contexts focused on specific projects. This could result in less valuable suggestions. * Data security weaknesses AI has always raised concerns regarding data security and privacy, which is no different in software development. Fresh and innovative attack methods the exploit software vulnerabilities could trick AI systems into giving private data away, adversely adjusting its models, or being susceptible to model theft. ## Will AI Replace Software Developer Jobs? With the advent of the AI era, many professionals have been nervous that artificial intelligence could be capable of taking over their roles, including software developers. So, will AI replace software developer jobs? Despite AI’s vast benefits and capabilities in this field, we believe this is unlikely. Instead, AI’s handy utilisations, like code generation and automation, could instead allow software developers to concentrate on more complex and creative aspects of their role. This could include creating innovative business strategies, solving complicated problems, and creating advanced user experiences. AI still makes mistakes, so teams can still be leveraged to work on complex code, review AI’s performance, and apply specific organisational knowledge. Furthermore, AI demands inputs in order to generate outputs, which means human developers need to offer the right data and prompts to get results. We think the road to success here involves discovering the right balance between AI’s marvellous efficiency and humans’ clear creativity. The best businesses will continue to blend the two together to leverage the strengths of both to make up for each of their weaknesses. ## How Will AI Change Software Development and Applications in the Future? As mentioned above, we believe creating the most effective outcomes comes with blending the strengths of AI and humans. Software developers who utilise AI in the right way – as a tool – whilst continuing to offer their unique problem-solving skills, will begin to rise to the top in this industry. It’s likely that AI will start to handle the majority of basic coding tasks, software developers will shift towards more complex problem-solving and high-level strategy planning to move organisations forward. ## In Need of AI and Software Development Services? If you’re looking to integrate AI and software development into your business, look no further than our experienced team, who can assist you in all things tech. Whether it’s [creating AI assistants](/creating-ai-assistant-using-openai/) or working with your internal team to explain how [Large Language Models](/what-is-a-large-language-model/) work, McKenna Consultants is ready to help your company level up. Our software development company stays ahead of the game when it comes to AI, with our experts knowing how to collaborate efficiently with advanced technologies and implement [AI development services](/ai-first/) for maximum efficiency. Don’t forget to check out our [full range of services](/all-services/),  and [get in touch](/contact/) for more information. --- # WOPI, Microsoft Office Add-Ins And AI **Canonical URL:** https://www.mckennaconsultants.com/wopi-microsoft-office-add-ins-and-ai/ **Author:** Nick McKenna **Published:** 20 November 2024 **Category:** CSPP WOPI WOPI, MICROSOFT OFFICE ADD-INS AND AI ------------------------------------- This is our first video about integrating your web application with [Microsoft WOPI](https://www.mckennaconsultants.com/cspp-wopi-cloud-storage-partner-program/), [Microsoft Add-Ins](https://www.mckennaconsultants.com/cspp-wopi-cloud-storage-partner-program/) and [Artificial Intelligence](https://www.mckennaconsultants.com/ai-first/). If you want to learn more about these technologies an there integration, don't hesitate to [get in touch with us](/contact/) today! --- # AI Machine Learning in IoT Security: Techniques and Tips **Canonical URL:** https://www.mckennaconsultants.com/ai-machine-learning-in-iot-security-techniques-and-tips/ **Author:** Nick McKenna **Published:** 18 November 2024 **Category:** Artificial Intelligence With the steady rise of [machine learning and AI](/machine-learning-vs-ai-difference/) in [Internet of Things](/blog/internet-of-things/) applications has come new security concerns. Machine learning has become a vital player in addressing [IoT security](/internet-of-things-security/) challenges, operating to elevate the resilience of IoT ecosystems against threats. In this blog, we’ll be exploring a selection of ways in which machine learning can be applied in IoT security, including the benefits and drawbacks of using artificial intelligence in this way.  How Is Machine Learning Used to Secure IoT? ------------------------------------------- Machine learning is used in IoT to increase personalisation, optimise resources, and execute predictive maintenance, but what is the role of AI in IoT security?  1. Detecting anomalies Machine learning algorithms are trained to learn IoT device behaviours and interactions via detecting anomalies. The models have the power to detect abnormal activity by using real-time data. In turn, this assists in uncovering and addressing security breaches. It can do this rapidly, saving your business time. 2. Identifying malware Machine learning algorithms are able to analyse device behaviour and network traffic to uncover any unauthorised access attempts and malware infections, amongst other suspicious activities. This can assist in preventing system disruptions before it’s too late. 3. Analysing user behaviours Machine learning is also leveraged to keep an eye on user interactions with IoT devices, helping to detect attempts of unauthorised access and anomalous activities. This helps to protect sensitive data. 4. Encrypting data privacy Another way machine learning can be used in IoT security is through ensuring data security and privacy in IoT systems are secured. Some machine learning algorithms offer encryption to enable calculations on encrypted information. AI can perform anonymisation and de-identification to protect sensitive data and streamline analysis. 5. Identifying emerging threats The fantastic thing about machine learning is that it can detect unusual patterns in real-time, meaning it can action them with suitable responses before they have fully emerged. We think this is a benefit over traditional security procedures, which sometimes find it difficult to handle novel attacks. 6. Analysing software vulnerabilities By exploring vulnerabilities and security problems in IoT device firmware and software, industry experts can operate to fix them before they are deployed. ## Benefits of Machine Learning for IoT Security So, with such advancements in technology, there have to be some benefits, right? Check out the main benefits of using machine learning in IoT security below. * **Enhanced trust** Because machine learning excels in identifying anomalies and unusual patterns in datasets, it is able to detect possible security breaches early, meaning they can be addressed before it is too late. This can enhance your company’s reputation and trust with customers. * **Adaptive learning** As machine learning models can constantly learn from new data, they are able to adapt to evolving threats and better their detection capabilities as time goes on. This adaptability component is critical as cyber threats continue to grow more and more sophisticated. * **Automation** Automation has assisted in various industries so far, from [improving customer experience](/how-ai-can-improve-customer-experience/) to making [business analytics](/unlocking-insights-into-the-use-of-ai-in-business-analytics/) more sophisticated. By automatically detecting and actioning threats, machine learning can decrease our reliance on human intervention, thus allowing for swift responses to security threats. This works to minimise the overall impact of a potential breach. * **Scalability** As well as being able to adapt to new threats, machine learning is also able to scale. It can effectively analyse data from various devices at once when monitoring each device becomes impractical. Monitoring devices at the same time makes it easier to maintain security across large-scale deployments, which is fantastic news for larger organisations. ## Challenges of Machine Learning in IoT Security In spite of the above benefits, using machine learning in IoT security is not without its potential drawbacks. * **Complexity** Executing advanced AI in IoT security systems can throw in another layer of complexity to the mix. This factor means that organisations must ensure they have the right expertise and infrastructure to develop and deploy these machine learning models as effectively as possible. * **Privacy** Privacy concerns have continuously been linked to the use of AI over the past few years. The data utilised in training machine learning models may include sensitive information, which means strict regulations must be carefully considered. * **Resources** Training and deploying machine learning models can put a lot of demand on resources, which could be a concern for resource-constrained IoT systems. * **Inaccurate data** Machine learning models require a high-quality input to produce a high-quality output. This means that training models on biased or inconsistent data could result in the production of inaccurate predictions as well as inefficient security measures. ## The Future of AI and IoT Security The relationship between machine learning and IoT is undoubtedly set to evolve significantly in the coming years, mostly driven by technological advancements and growing connectivity, as well as the ever-increasing sophistication of cybersecurity threats. With higher-powered security measures, organisations can start to enjoy more robust security systems. Here are some specific predictions our experts believe we may encounter in the future: 1. Better threat detection We can only expect machine learning algorithms to become more and more advanced, meaning they’ll be able to improve their ability to detect threats in real-time. Get ready for more sophisticated anomaly detection systems that can spot malicious behaviours with greater accuracy. 2. Enhanced predictive analytics The IoT security systems of the future will likely leverage machine learning for predictive analytics, allowing organisations to foresee possible threats based on historical data. A proactive approach will grow more and more advanced to help companies stop incidents before they even occur. 3. Edge computing As edge computing becomes more and more popular, we may expect it to complement machine learning in IoT security. For example, by processing data closer to the source, a device will be able to make quicker security decisions to reduce a data breach risk during transmission. 4. More robust security Federated learning approaches will allow machine learning models to be trained across various devices without sharing sensitive data. This means that federated learning can provide more robust security measures whilst preserving privacy, making it a very appealing option for IoT environments. 5. Stronger ethical considerations As awareness of [AI ethical concerns](/balancing-innovation-and-the-ethics-of-ai-in-business/) and data privacy grows, businesses will be forced to focus on strict compliance with regulations. For example, future machine learning models will likely incorporate components to ensure adherence to privacy laws as well as ethical standards. 6. A call for education Education and training will become key as machine learning and IoT security become more prominent across sectors. With this in mind, organisations may need to invest in upskilling their workforce in order for these technologies to be effectively leveraged. At the same time, workers will need to understand how to mitigate the dangers associated with AI and how they can fully collaborate with new technologies. So, that’s a wrap on machine learning in IoT security! Our team has years of experience navigating machine learning and IoT and can support your in-house team with more complex integrations. We’re experts in all things to do with computer programming, from [creating AI assistants](/creating-ai-assistant-using-openai/) to explaining how [IoT, big data, and the cloud](/relationship-between-iot-big-data-and-the-cloud/) work.  If you think the expert implementation of [AI development services](/ai-first/) would benefit your business, don’t hesitate to [get in touch with us](/contact/) today. --- # Enhancing Legal Software Development with Custom Word Add-Ins **Canonical URL:** https://www.mckennaconsultants.com/enhancing-legal-software-development-with-custom-word-add-ins/ **Author:** Nick McKenna **Published:** 22 October 2024 **Category:** Microsoft Office Add-In Developer Are you leveraging the benefits of Word add-ins? As a legal professional, you’ll often rely on Microsoft Word for drafting, reviewing, and finalising documents, but custom Word add-ins can significantly transform this process. The standard features of Word may not always meet the specific needs of legal software development companies – including yours. This is where custom Word add-ins come into play, offering tailored solutions to enhance productivity and streamline workflows. What Is a Custom Word Add-in? ----------------------------- A custom Word add-in is a small software application that integrates with Microsoft Word to extend its capabilities. These add-ins can be designed to perform a variety of tasks, from automating repetitive processes to providing specialised tools for legal document management. By leveraging the power of custom add-ins, legal software development companies can create a more efficient and user-friendly environment for their teams. ## Benefits of Custom Word Add-ins for Legal Software Development There are many reasons why implementing custom Word add-ins could be beneficial for your business. 1. **Automated Document Assembly** Legal documents often require the inclusion of standard clauses, templates, and formatting. A custom Word add-in can assist with this, automating the assembly of these documents and reducing the time and effort required to create consistent and accurate legal documents. 2. **Better** **Collaboration** Custom add-ins can facilitate better collaboration among legal teams by integrating with other software tools and platforms. Features such as real-time co-authoring, version control, and secure sharing can be seamlessly incorporated into Word. This makes it easier for teams to work together on complex legal documents. 3. **Improved Document Management** Managing large volumes of legal documents can be challenging. Custom add-ins can minimise the difficulties involved with this task, providing advanced search, tagging, and categorisation features. These can enable legal professionals to quickly locate and organise their documents and thus significantly reduce the time spent on document management tasks. 4. **Compliance and Risk Management** Custom Word add-ins can include features that automatically check for compliance issues, highlight potential risks, and provide suggestions for mitigating those risks. This helps legal professionals maintain the highest standards of accuracy and compliance, which is crucial for ensuring adherence to regulations and safeguarding against any potential legal liabilities. 5. **Integration with Legal Research Tools** Custom add-ins can integrate with legal research databases and tools, allowing users to access relevant case law, statutes, and legal opinions directly within Word. This integration is handy because it streamlines the research process and ensures that legal professionals have the information they need at their fingertips. 6. **Enhanced Security** As a legal professional, you’ll know that security is a top priority, which is not neglected when it comes to Word add-ins. Custom Word add-ins can include features such as encryption, secure document sharing, and access controls to protect sensitive information. This ensures that confidential legal documents are handled with the utmost care and security. Hopefully, you feel a little more confident about what custom Word add-ins are and how they can benefit you as a legal professional. Going further than Word, explore how to [get started with Microsoft Graph API](/building-ms-outlook-add-in-with-microsoft-graph-api/) and [build an Outlook add-in](/process-of-building-an-ms-outlook-add-in-with-microsoft-graph-api/). If you’re not a technical expert, you can always leave this in the capable hands of [McKenna Consultants](/about/)! Our experts offer a full range of [services](/all-services/) designed to enhance your organisation’s overall productivity and transform the way legal professionals operate. If you need help with custom Word add-in development, don’t hesitate to [get in touch with us](/contact/). For additional insights, such as [add-ins and CSPP WOPI changes](/add-ins-and-cspp-wopi-changes/), please check out [our blog](/blog/). --- # Developing Custom Microsoft Outlook Add-Ins to Integrate with CRM Systems **Canonical URL:** https://www.mckennaconsultants.com/developing-custom-microsoft-outlook-add-ins-to-integrate-with-crm-systems/ **Author:** Nick McKenna **Published:** 13 October 2024 **Category:** Microsoft Office Add-In Developer Ready to boost your productivity and streamline your workflow with a CRM Outlook add-in? Efficiency and [integration between tools](/blog/cspp-wopi/) are more important than ever. If you’re looking to improve your own business results, you may be interested in learning about custom Microsoft Outlook add-ins and how they can benefit you when integrated with Customer Relationship Management (CRM) systems. In this post, we’ll be talking you through the development process of custom Outlook CRM add-ins in more detail. Let’s get right to it! What Is a CRM Add-in for Outlook 365? ------------------------------------- Microsoft Outlook add-ins are small applications that extend the capabilities of Outlook by adding new features or enhancing existing ones. With the ability to interact with the user's emails, calendar, and other Outlook components, add-ins offer a customised experience tailored to specific business needs. Taking things further, a CRM Outlook add-in refers to a software extension that integrates a CRM system directly into Microsoft Outlook. This enables the user to handle CRM-related tasks without needing to keep switching between different applications. ## Benefits of CRM Outlook Add-In Integration So, why should you integrate Outlook with your CRM system? CRM systems enable companies to manage interactions with customers. They also help in handling sales processes and marketing campaigns, ensuring that communication is synchronised and accessible at all times. A CRM Outlook add-in integration means users can:  * Access CRM data within Outlook With a CRM add-in for Outlook 365, you can view customer information, interaction history, and sales data without leaving the email client. By being able to access everything in one place, you can save time and quickly view the information you need without any disruptions. * Automate data entry You will be able to benefit from automatically capturing emails, meetings, and tasks in the CRM, reducing manual data entry and errors. Again, this can free up valuable time, allowing employees to focus on other tasks, such as strategy development and quality customer service. * Enhance collaboration A CRM add-in for Outlook 365 allows you to share customer insights and updates with other colleagues directly in Outlook. This streamlined communication approach could result in improved team alignment and potentially faster decision-making. * Improve tracking and reporting Your company can monitor customer interactions and generate reports seamlessly with a CRM Outlook add-in. Essentially, interactions are captured in real-time without manual effort, providing a consistent and complete record of customer engagement and, therefore, potentially better insights. This could help your organisation make more informed business decisions. ## How to Develop a Custom CRM Add-In for Outlook 365 Developing custom CRM Outlook add-ins involves several key steps, so use our guide below to get your head around the process. Step 1: Map out Your Goals -------------------------------------- Before you can get started, you need to think about what you are trying to achieve and your requirements for achieving this. Determine the functionalities that the Outlook add-in needs to offer and how it will interact with both the Outlook platform and your chosen CRM system. Consider the following: * The data type to be synchronised (such as emails, calendar events, and tasks). * Security and compliance requirements. * User experience and interface design. Step 2: Select the Right Tools ------------------------------------------ Delivering the right results starts with choosing the right development tools. Microsoft offers several tools and frameworks for developing Outlook add-ins, including: * **Office add-ins:** Use the Office JavaScript API to create cross-platform add-ins that run in Outlook for Windows, Mac, and the web. * **Visual Studio:** Leverage the powerful features of Visual Studio to build, debug, and publish your add-in. * **Yeoman Generator**: Utilise a tool for scaffolding Office add-in projects, simplifying the setup process. Step 3: Develop the Add-In ------------------------------------------ Start by setting up your development environment and creating the add-in project. Remember, the key components include: * Manifest File The manifest file defines the add-in's metadata, permissions, and entry points. * HTML and JavaScript Build the user interface and implement the core functionalities using HTML, CSS, and JavaScript. * API Integration Connect to the CRM system using RESTful APIs or other integration methods. Don’t forget to ensure secure authentication and data handling. Discover how to [get started with Microsoft Graph API](/building-ms-outlook-add-in-with-microsoft-graph-api/) and [build an Outlook add-in](/process-of-building-an-ms-outlook-add-in-with-microsoft-graph-api/) with it for further information. Step 4: Test and Debug -------------------------------------- [Thorough add-in testing](/testing-and-approval-for-building-an-ms-outlook-add-in/) ensures the CRM Outlook add-in works as intended across different environments. To help, try using the following handy strategies: * Unit Testing Test individual components and functions for correctness. * Integration Testing Verify that the add-in interacts seamlessly with Outlook and the CRM system. * User Testing Gather feedback from potential users to identify usability issues and areas for improvement. Step 5: Deploy the CRM Outlook Add-In ------------------------------------------------------------- You’ve almost made it – now that development and testing are complete, you can move on to deploy the add-in to your organisation's users. Some typical deployment options include publishing the add-in in the Office Store for broad distribution and utilising the Microsoft 365 admin centre to deploy the add-in to specific users. Step 6: Monitor and Maintain Your Add-In ------------------------------------------------------------ Congratulations, you’ve now deployed your add-in! So, what now? Once deployed, you need to continuously monitor your add-in’s performance and gather user feedback to ensure its operation meets user needs. Without it, your add-in may stumble across issues compromising its performance or user experience. During this step, you may set up tracking metrics, add new features, and ensure compatibility with future Outlook and CRM system updates. ## Best Practices for Developing CRM Outlook Add-Ins Now that you’re all clued up on how to develop a CRM add-in for Outlook 365, we’re going to reveal a few handy tips to help you along the way! Remember to: * Put the user experience first Always, always, _always_ prioritise the user experience. To do this, you should design an intuitive and responsive interface that integrates seamlessly with Outlook. Doing so will ensure your add-in is easy to navigate and understand so users can always find and utilise the features they need, boosting satisfaction and efficiency. * Keep security and compliance in mind You can safeguard sensitive information by implementing robust authentication and data protection measures. This will ensure your CRM Outlook add-in adheres to regulatory requirements and security best practices, enhancing user trust. * Optimise performance Optimising performance will likely lead to greater customer satisfaction. You can do this by minimising load times and ensuring the add-in performs efficiently, even with large datasets. * Provide clear documentation Clarity is key, so we recommend always offering comprehensive documentation and support resources to assist users in getting the most out of the CRM Outlook add-in. Prioritising clarity will help users quickly understand how to install and use the add-in, improving the overall user experience and decreasing the support requests you’ll have to tackle. ## Concluding on CRM Outlook Add-In Integration That’s a wrap on CRM Outlook add-in integration! Integrating custom Microsoft Outlook add-ins with CRM systems can undoubtedly transform how your company manages customer interactions and streamlines workflows. By following our development process, you’ll be on your way to accessing the fantastic benefits your business can gain from add-ins. Have a question about CRM Outlook add-ins or need some help with system integration? Don’t hesitate to [get in touch with us](/contact/) or check out our full range of [services](/all-services/). We’re happy to help! Don’t forget to check out [our blog](/blog/) for more handy insights, such as information about [add-ins and CSPP WOPI changes](/add-ins-and-cspp-wopi-changes/). --- # The Benefits of Using Elastic Path for Complex eCommerce Development **Canonical URL:** https://www.mckennaconsultants.com/the-benefits-of-using-elastic-path-for-complex-ecommerce-development/ **Author:** Nick McKenna **Published:** 7 October 2024 **Category:** B2B eCommerce eCommerce is constantly changing, meaning that today’s businesses are always on the lookout for new platforms that offer flexibility, scalability, and features to cater to complex requirements. Enter Elastic Path, a leading solution for enterprises looking to build sophisticated eCommerce ecosystems. While you may already be familiar with the architecture of a composable eCommerce store using Elastic Path, you may want to learn about why you should use this platform in the first place. In this article, you can explore the reasons for using Elastic Path for complex eCommerce development, highlighting scenarios where it excels and where it might be less suitable. Let’s jump right in! ## What Is Elastic Path? First and foremost, it might be worth establishing what Elastic Path is in the eCommerce landscape. Elastic Path is a cloud-based commerce platform developed to offer manufacturers, distributors, and retailers flexible tools to generate original digital experiences for their consumers. Unlike traditional eCommerce platforms, Elastic Path adopts a composable commerce approach, enabling organisations to choose and combine different components into one cohesive digital solution specifically tailored to their unique requirements. Pretty cool, right? ## What are the Benefits of Elastic Path? There are several advantages of Elastic Path, including: **1\. Headless Commerce Architecture** One of the standout features of Elastic Path is its headless commerce architecture. This decouples the front-end presentation layer from the back-end commerce functionality, which allows companies to create highly customised and seamless customer experiences across various touchpoints. This flexibility is particularly beneficial for companies aiming to deliver unique user interfaces on the web, mobiles, IoT devices and more. **2\. Microservices-Based Approach** Elastic Path employs a microservices-based approach, enabling organisations to independently build, deploy, and scale individual commerce services. This modularity boosts agility, allowing businesses to quickly adapt to changing market demands and integrate new features without having to disrupt the entire system. Such an approach is ideal for enterprises that require a high degree of customisation and frequent updates. **3\. API-First Strategy** With its robust API-first strategy, Elastic Path offers extensive APIs facilitating seamless integration with various third-party systems, including CRM, ERP, CMS, and PIM. This interconnectedness can streamline operations, ensure data consistency, and enhance overall efficiency, all whilst allowing businesses to maintain control over how the customer journey is designed and executed. You may find this particularly advantageous if your company boasts complex integration needs. **4\. Scalability and Performance** Elastic Path is designed to handle high traffic volumes and complex transactions, making it suitable for large enterprises and businesses experiencing rapid growth as well as those wanting to adapt quickly to market changes and innovate without being held back by the restrictions of all-in-one platforms. Its scalable infrastructure ensures that performance remains consistent even during peak periods, offering customers a reliable shopping experience **5\. Personalisation and Customer Experience** As you may well be aware, personalisation is a key driver of customer satisfaction and loyalty. Elastic Path’s capabilities in delivering personalised experiences through data-driven insights and adaptive content enable businesses to tailor interactions based on individual customer preferences and behaviours. This can result in increased engagement and higher conversion rates. ## Where Does Elastic Path Commerce Excel? There are a few situations in which Elastic Path can be particularly beneficial, including: ### Complex Integrations: Businesses requiring seamless integration with multiple systems (such as CRM, ERP, and CMS) will benefit from Elastic Path’s robust API-first approach. ### Omni-Channel Experiences: If your company is looking to provide a consistent customer experience across various digital and physical touchpoints, you will particularly value Elastic Path’s headless architecture. The headless approach is able to separate the front-end from the back-end commerce layer, enabling companies the flexibility to execute and deliver unified experiences spanning across multiple channels, whether your customer prefers mobile apps, websites, or social platforms. ### High Customisation: Elastic Path’s microservices architecture offers extensive flexibility. So, if your enterprise requires highly tailored solutions that are able to adapt rapidly to market changes, this could be the solution. The Elastic Path composable commerce model allows for individual microservices to be tailored and combined as required, meaning businesses can choose only the features and services that are relevant to them. ### Large Scale Operations: Organisations dealing with high traffic volumes and complex transactions will benefit from the scalable infrastructure and performance capabilities up for grabs with Elastic Path. For example, Elastic Path’s cloud-native platform is able to scale to handle increased demand without compromising on performance. This means that even with large volumes of transactions, the system can remain responsive and reliable for the ultimate user experience. ## Where Might Elastic Path Be Less Suitable? Keep in mind that Elastic Path commerce isn’t for everyone. For example, you might avoid using Elastic Path if you have: ### A Small to Medium-Sized Business (SMB): SMBs with limited spending capabilities and simpler requirements might find Elastic Path’s extensive features and customisation options to be overkill. They may benefit more from simpler, out-of-the-box, easier implementation and management solutions. ### Limited Technical Expertise: Businesses lacking the experience of a strong technical team may find the implementation and management of Elastic Path challenging, as it often requires a high level of technical expertise to fully leverage its capabilities. If your team is technical, be sure to check out the team roles for building a composable B2B eCommerce online store. ### Budget Constraints Enterprises with tight budgets might find the investment in Elastic Path’s comprehensive solution and technical resources prohibitive. If you have a restrictive budget, be sure to compare all investment options and make a smart decision based on what you can afford. ## Rounding Up on Elastic Path Composable Commerce So, there you have it! Hopefully, you now know more about what Elastic Path is and what benefits you stand to gain from it. Elastic Path offers a powerful set of tools for enterprises looking to tackle complex eCommerce challenges. While its unique features and approaches provide flexibility, scalability, and integration capabilities, you must be aware of its potential drawbacks before investing. All in all, by carefully assessing your organisation’s needs and capabilities, you can determine whether Elastic Path is the right solution to drive your eCommerce success. [Want to know more about Elastic Path or how our services can benefit your business? Don’t hesitate to get in touch with us. A member of our team would love to help.](/contact/) [Plus, for further insights, don’t forget to check out the rest of our blog, where we share more information on digital transformation, cloud solutions, and more!](/blog/) --- # Unlocking Insights into the Use of AI in Business Analytics **Canonical URL:** https://www.mckennaconsultants.com/unlocking-insights-into-the-use-of-ai-in-business-analytics/ **Author:** Nick McKenna **Published:** 22 September 2024 **Category:** Artificial Intelligence The use of AI in business analytics is becoming increasingly popular, transforming the way organisations make decisions and streamline operations. Whether you’re a business analyst wondering how your role will change with the implementation of [AI development services](/ai-first/), a business wanting to know how to leverage technology for maximum success, or an individual simply curious about why efficient business analytics matter, read on for more details. AI in Business Analytics: Changing the Role of Business Analysts ---------------------------------------------------------------- So, how is artificial intelligence shaking up the role of business analysts? Well, if you work in business analytics, you’ll know how burdensome and time-consuming some mundane tasks can be. However, when you use AI in business analytics, time can be freed up for the professional to think strategically and creatively, enabling them to focus on more demanding initiatives. Therefore, not only is AI changing business analytics by making tasks and roles more productive, but it can also encourage a sense of forward-thinking and innovation throughout companies. ## So, Why Does Business Analytics Even Matter? At this point, you may be wondering why it’s so important to streamline the business analyst role. Well, business analytics is vital for driving informed decisions, improving operations, and enhancing the profitability of businesses in the long run. ## Uses of AI in Business Analytics There are many uses of AI in business analytics, so we’ve just listed some of the most popular ones below. AI in business analytics can be used to: 1. Enhance data analysis The most obvious use of AI in business analytics is that it can be used to process large amounts of complicated data in a short space of time. This can help business analysts gather more accurate business insights quickly, enabling organisations to create an informed plan of action that they can rely on. 2. Automate routine tasks One of the handiest things about AI in business analytics is that it can automate routine, mundane tasks in business analysis. This could involve anything from reporting to data collection to sentiment analysis. Not only does this take away the risk of human error, but it can also free up employees to focus on more complicated tasks and enhance the overall efficiency of the business. 3. Improve predictive analytics Using AI for predictive analytics is now widespread within business intelligence. AI can be employed to analyse datasets like customer, marketing, and sales information, enabling businesses to uncover customer insights, potential market trends, and possible future risks. By becoming aware of certain predictions, organisations can develop useful strategies to assist in the overall efficiency of business analysis processes. 4. Increase personalisation AI can now be leveraged to analyse customer data and generate segments based on demographics, behaviours, and preferences. What this means is that organisations can now target specific customer segments with customised communications and special offers that are relevant to them. Furthermore, AI can even recommend products or services to consumers based on their previous browsing behaviour and preferences, [improving the overall customer experience](/how-ai-can-improve-customer-experience/) and increasing conversions. 5. Leverage Natural Language Processing As you may already know, Natural Language Processing models like [LLMs](/what-is-a-large-language-model/) can enable individuals to ask questions and receive a data-driven answer. Natural Language Processing can also analyse unstructured text data and develop valuable insights, from product feedback to customer sentiment. In turn, this can help guide a company in their current strategies. ## The Benefits of AI in Business Analytics From looking at the uses of AI in business analytics, you’ll probably be able to predict a few benefits your business can gain from this implementation. However, if you’re still unsure, we’ve created a list below! Using AI in business analytics can: * **Improve fraud detection and risk management** AI can excel in detecting cybersecurity threats and fraudulent activities by picking up on anomalies and suspicious patterns. It can be leveraged to flag potential fraudulent transactions quickly so your business can act before it is too late. Even better, AI-powered risk management tools can assess and mitigate potential risks, allowing organisations to safeguard their assets and preserve their reputation and credibility with key customers. * **Boost the customer experience** As we’ve already mentioned, AI can personalise interactions with all types of customers. While this was once a key factor to help businesses stand out, personalisation is now a necessity that customers have grown to expect. This means it’s now more crucial than ever to leverage AI-driven analysis to start understanding your customers’ preferences and behaviours to segment them and create highly personalised communications. This can help you generate customer loyalty and satisfaction. * **Enhance accuracy** By eliminating the risk of human error, AI can create more accurate analyses and outcomes when implemented in business analysis processes. This means businesses can access real-time insights they can trust. * **Reduce costs** AI could be the answer if you want to streamline your business processes while saving money.  AI has the power to detect inefficiencies and optimise your organisation’s resource allocation, which can lead to enhanced productivity and reduced costs in the long term. Furthermore, you can decrease labour costs by automating manual tasks. Win-win! * **Increase your competitive advantage** It’s becoming harder and harder to stand out in business, so why not give yourself the edge you’ve been waiting for by leveraging AI? AI can help your business respond faster to market changes by providing real-time insights and speeding up decision-making procedures. It can also help you identify or predict new trends to help you stand out in the industry. ## Our Top Tips on How to Use AI as a Business Analyst Knowing the uses of AI in business analytics is one thing, but implementing them is another. So, how can analysts start employing AI? If you’re a business analyst wondering how you can start using AI in data analysis, check out these top tips: 1. Encourage learning Continuous learning is key to this process. AI is showing no signs of slowing down, so neither should your business analysts. By promoting a culture of continuous learning and offering training opportunities, you can help the whole team adapt and maintain its relationship with AI. 2. Use the right tools The right results start with using the right tools. Arm your team with the tools to expand their capabilities and streamline decision-making processes. By becoming familiar with how AI-powered tools can automate data processing and analysis, predict future outcomes, and suggest recommended action plans, business analysts can streamline their own roles, make smarter data-driven decisions, and generally become more confident around AI. 3. Consider ethical standards Remember to update your policies and processes when necessary, ensuring that the [ethics of AI in business](/balancing-innovation-and-the-ethics-of-ai-in-business/) are always taken into account. There are often concerns with data privacy when AI comes into play, which is why your organisation needs to enforce compliance. Not only can this help you keep data secure, but it can also help you avoid other risks, such as biased outcomes. 4. Always communicate! Your team needs to stay up-to-date with your AI practices, so you must remember to allocate someone responsible for managing change as the business analyst role adjusts. Business analysts and data scientists need to be able to communicate and work across departments, meaning they’re always informed about what will change and what will stay the same. This can also bridge the gap between data expertise and business acumen. 5. Prioritise data quality AI relies on high-quality data for high-quality outcomes, meaning your team needs to focus on data accuracy and consistency. It might be helpful to frequently clean and manage your organisation’s data, ensuring that outputs are as reliable as possible when taking action. ### Will Business Analysts Get Replaced by AI? Now that you know a bit more about how a business analyst can utilise AI, you may be wondering if there is a chance they may get replaced altogether. While artificial technologies have the chance to reshape the role of business analysts, it is unlikely to fully replace humans anytime soon. Combining AI efficiencies with the expertise, experience and common sense of human professionals is typically the best way to make the most of AI in your business analysis. While AI excels in data analysis, processing, reporting, predicting trends, and automating processes, humans still need to be able to tackle complex problems that require creativity and critical thinking. Furthermore, business analysts are required for effective communication with stakeholders – something that AI can’t always pull off. To remain relevant in the field, human business analysts may have to adapt by learning how to collaborate with AI in their daily tasks, such as understanding [machine learning](/machine-learning-vs-ai-difference/) algorithms. ## What is the Future of Business Analytics with AI? We have a few predictions when it comes to the future use of AI in business analytics – we can’t wait to see where these new trends take us! * Business analysts will learn to adapt to and collaborate more efficiently with AI * Routine tasks, from data cleaning to reporting, will become increasingly automated by AI * AI models will become more sophisticated in predicting future outcomes, leading to more informed business decisions * Advancements in AI will make it easier to analyse data in real-time, allowing businesses to respond promptly * AI-driven personalisation will give greater insights into consumer behaviour and preferences, allowing businesses to create tailored marketing and customer relationship strategies ## Implement AI in Business Analytics with McKenna Consultants Here at [McKenna Consultants](/about/), we know all about the use of AI in business analytics and are here to help you implement the necessary changes to streamline your organisation. Our team are well-practised in this field, having [created AI assistants](/creating-ai-assistant-using-openai/) and implemented [Retrieval-Augmented Generation](/what-is-retrieval-augmented-generation/) solutions. If you want to discover [our services](/all-services/) in more detail and see how we can help you streamline data analysis, please [get in touch with us](/contact/). We’ll be happy to help! Plus, if you can’t get enough of our AI insights, don’t forget to [check out our blog](/blog/). --- # Top 12 AI Future Trends To Watch Out For **Canonical URL:** https://www.mckennaconsultants.com/top-12-ai-future-trends-to-watch-out-for/ **Author:** Nick McKenna **Published:** 15 September 2024 **Category:** Artificial Intelligence Are you as excited as we are to uncover the top AI future trends? At McKenna Consultants, our team is enthralled by how [artificial intelligence](/ai-first/) continues to evolve, introducing innovations we could never have imagined. The evolution of AI is shaping our future in transformative ways, from streamlining mundane tasks to revolutionising entire industries. With so much promise for progress, we’re taking a look at the top 12 AI future trends so you can get ahead of the game and start thinking about future implementations in your business. Let’s get right to it! Contents of AI Future Trends ---------------------------- 1. Generative AI 2. Human-AI Collaboration 3. Stronger Ethical Standards 4. Advancements in Language Models 5. AI-Powered Cybersecurity 6. Quantum AI 7. Advanced Robotics 8. Shadow AI 9. Innovative Government and Law Enforcement 10. Multimodal AI 11. Personalisation 12. Edge AI ## 12 AI Future Trends to Look Out For So, what is the next big trend in AI? Here’s our list so far! ### 1.      Generative AI When it comes to generative AI future trends, this type of intelligence is shaking up and improving how we approach creative processes. Unlike traditional AI models that mainly classify or analyse data, generative AI models can develop novel outputs from images to music based on patterns learned from existing datasets. For example, models like GPT-4 can develop text, images, and other forms of content with remarkable speed and levels of personalisation. Text generation is particularly useful to aid writers with articles, stories, and reports. On the other hand, tools like DeepArt can use generative techniques to generate artwork and visual images based on textual descriptions, which can be valuable for saving time and costs in business. Furthermore, in industries like healthcare, generative AI can develop potential drug candidates and simulate their effects, reducing the time and cost of introducing new treatments to the market. AI also has the ability to improve medical imaging by developing synthetic images. Generating synthetic images can offer a larger dataset for training diagnostic models, which can develop AI systems capable of detecting various conditions and address the limitation of data scarcity. Plus, by enhancing image resolution, AI can increase the accuracy of diagnosis. Win-win! We can’t wait to see how generative AI trends evolve in the future and how this incredible advancement will continue to revolutionise businesses in almost every sector. ### 2.      Human-AI Collaboration While many employees fear that artificial intelligence will put them out of a job, the trend of human-AI collaboration is growing ever more prominent. By enabling AI systems to enhance human capabilities while still preserving a personalised human touch, businesses could celebrate a winning approach. For example, in customer service, [AI systems can improve customer experience](/how-ai-can-improve-customer-experience/) with personalised recommendations, while humans can manage more complicated and emotionally sensitive communications with consumers. The benefits of human-AI collaboration have already been clear to see in some industries. With AI automating repetitive tasks, humans are allowed to focus on more complex and creative aspects of their work, enhancing speed and productivity. AI’s ability to process large amounts of data at rapid speeds has also helped humans make faster and more informed decisions. For example, in the finance sector, AI can scrutinise market trends and create reports, which human employees can then handily utilise to make strategic decisions. However, there are a few things to keep in mind here. Users must be trained to utilise AI tools effectively and interpret their outputs for a successful collaboration, and businesses must put guidelines in place to prevent misuse. They must understand how the systems work and address any bias in AI systems to ensure fair and equitable outcomes. ### 3.      Stronger Ethical Standards There’s just no avoiding it – businesses need to be cautious about generative AI future trends. The potential consequences of misusing AI technologies could not only damage their brand, but could jeopardise legal compliance. Factors like algorithmic bias have been called into question. AI technologies may present biased outputs based on the data they are trained on rather than recognising discrimination. Furthermore, protecting privacy is also an important matter. AI systems typically require large amounts of data, which can include sensitive information. Therefore, there are concerns about protecting data privacy and preventing unauthorised access. There are already a few initiatives advocating for more stringent standards where AI ethics is concerned. With this in mind, we can expect ethical standards and considerations to grow stricter, which will put increasing pressure on companies to govern the use of AI. Such dedication can help businesses mitigate risks concerning AI. To learn more about the [ethics of AI in business](/balancing-innovation-and-the-ethics-of-ai-in-business/), please see our blog. ### 4.      Advancements in Small Language Models In future trends of AI, we can expect to come across more sophisticated language models that have the ability to enhance human-computer interactions and translations. Putting [Large Language Models](/what-is-a-large-language-model/) aside, Small Language Models are an upcoming trend in AI that focuses on generating efficient yet lightweight models that have fewer parameters. These models are optimised to balance performance, efficiency, and resource utilisation. This means that businesses can enjoy scalable and accessible AI solutions that can work on edge devices without having to depend on large [cloud computing resources](/cloud-services/). Other benefits include reduced costs (as smaller models are less expensive to train and deploy) and faster response times. The latter is critical for language processing tasks and applications demanding real-time interactions like customer support assistants. Despite this, there are still challenges surrounding Small Language Models, which we can expect to be addressed in the future. For example, knowledge limitations due to their reduced training data and parameters are a problem. However, with continued optimisation, we can only expect Small Language Models to become increasingly sophisticated and efficient. ### 5.      AI-Powered Cybersecurity Some companies have been using AI in cybersecurity solutions for a few years now. However, as artificial intelligence advances, it is likely that more organisations will utilise AI for real-time threat detection and automated responses in cybersecurity. After all, cyber threats are becoming more sophisticated, which means that more adaptive and efficient security measures are needed to address them. By enhancing overall security protocols in a streamlined way, organisations can greatly reduce their response times to potential threats and boost accuracy in identifying and mitigating risks. Businesses can protect sensitive data and systems with this AI future trend, although they will be required to continuously update and review AI systems to guard against new and emerging threats. ### 6.      Quantum AI Quantum AI is an emerging field that blends the principles of quantum computing with AI, involving [machine learning](/machine-learning-vs-ai-difference/) and data analysis. In doing so, this approach is able to tackle complicated problems and boost computational capabilities compared to regular computers. For example, quantum AI may increasingly tackle simulation problems, which can aid applications in drug discovery and material science. Furthermore, quantum AI can improve machine learning algorithms by offering new ways to perform tasks like classification, leading to better performance and efficiency. Not only this, but by performing enhanced data analysis of complex datasets, quantum computing can offer deep insights and, thus, more accurate predictions. As this AI future trend continues to evolve, we can expect to see further advancements in quantum hardware and a broader adoption. For example, expanding access to quantum through cloud-based services could facilitate the development and deployment of quantum AI applications across a wide variety of industries. ### 7.      Advanced Robotics Advanced robotics driven by AI solutions are becoming more and more popular, and now it’s no unrealistic feat to think about having little robot companions working alongside us. This AI future trend integrates AI with robotics to generate systems capable of performing complex tasks both independently and efficiently. Furthermore, if the robot is integrated with natural language technology, it will be able to communicate with us and learn about us, taking our interactions with technology to the next level. This is designed to streamline various sectors, such as manufacturing and logistics. For example, in manufacturing, AI-enabled robots are utilised for tasks like assembly, painting, and welding, increasing productivity and precision in the process. In logistics, robots can optimise inventory management, automate picking and packing chores, and even handle warehouse materials to boost efficiency while slashing operational costs. ### 8.      Shadow AI As another AI future trend building a lot of excitement, Shadow AI refers to AI technologies that are employed within a company without formal approval or integration into the company’s official IT systems. Shadow AI comes about when employees or departments want to streamline their processes and tasks quickly without going through IT for oversight or approval. As employees may not have all the required information regarding security and compliance, this approach may lead to potential legal, economic, or reputational impacts. With this in mind, it’s not something to overlook. Therefore, organisations need to stay agile and adapt their practices to address these emerging challenges and opportunities. To reduce the risks associated with Shadow AI, companies could provide training and resources and generate a streamlined process for integrating new AI tools so employees can always leverage approved solutions. ### 9.      Innovative Government and Law Enforcement Since AI has already weaved itself into industries across a wide range of sectors, there is no doubt that it will become more firmly implemented into our government infrastructure. While this doesn’t necessarily mean that we’ll have a robot prime minister, you may expect to see a deeper integration of smart governance technology, especially into tasks such as administration. As in other sectors, AI may be used as virtual assistants to streamline citizen interactions with the government by answering simple inquiries and offering relevant information. It may also be used to automate document processing to free up burdens on current employees. Furthermore, by using AI to streamline processes, policymakers may be able to detect what changes the public wants via data insights and patterns to take proactive and informed steps. To take things further, AI models could then simulate the consequence of implementing a policy decision to help policymakers review the likely outcome. Additionally, predictive AI technology could be leveraged in law enforcement. By using models to analyse crime data, we may be able to predict where and when future crimes might happen. Forecasting in this way may also aid law enforcement by helping allocate resources more effectively. By being more prepared for crime, AI can help to mitigate it and improve overall public safety. ### 10.  Multimodal AI The future AI trend refers to integrating and processing multiple types of data within one AI system. Data types can include anything from images and text to audio and video. While AI models have traditionally focused on a single modality, multimodal AI strives to blend these various modalities to create an enhanced understanding of the data and, thus, accurate outcomes. There’s just no avoiding it – multimodal AI can be instrumental in generating more engaging content experiences. For example, AI systems can develop videos from text descriptions or even create interactive experiences that offer a seamless combination of images, text, and audio. Moreover, multimodal natural language processing models improve AI’s ability to understand and generate human language through the incorporation of additional modalities. For example, integrating audio with text can enhance speech recognition systems or even allow for more natural interactions in virtual assistants, which can be valuable to a host of companies requiring better customer service. Not only this, but AI can also personalise content to individual preferences, integrating a variety of data types, which could result in more tailored recommendations. This tool is particularly valuable in retail and eCommerce, where companies want to entice consumers with relevant product recommendations. ### 11.  Personalisation As you may already be aware, personalisation refers to customising services, products, or services to meet individual customers' specific needs and preferences. Personalisation has become the key to conversation. The world has fallen in love with its power to enhance users’ experience, engagement, and relationship with brands. By fostering stronger connections and relevance, personalisation has the power to increase customer loyalty and satisfaction. Companies like Spotify and Netflix are already leveraging AI to take personalisation to the next level. For example, Spotify’s AI tools utilise your listening history and prompts to create playlists that you’ll likely fall in love with. At the same time, it’s normal to see relevant recommended shows in your favourite genre listed on Netflix. As AI tools continue to evolve, we can expect personalisation to become even more sophisticated as time goes on, making interactions feel tailored to each unique user. We predict AI-driven personalisation to become the standard and for generic, mass communication to fade away into the past. ### 12.  Edge AI Edge AI refers to deploying AI algorithms directly on – you guessed it – edge devices. This can be anything from smartphones to [IoT](/cloud-services/internet-of-things/) sensors, meaning there is no need to rely on centralised cloud computing. In essence, this approach brings AI processing closer to the source of data generation. And, by processing data locally, edge AI limits the risk of data exposure during cloud transmission. This can improve privacy and security, which is important across industries. Edge devices’ capability to run AI models and perform data analysis on-site can boost data processing efficiency and decrease latency by minimising data transmission delays. This is particularly valuable for applications that demand immediate responses, like autonomous driving. Edge AI enables autonomous vehicles to process sensor data, like that from cameras, to facilitate navigation and decision-making without having to depend on cloud-based data analysis. Furthermore, rapid response times can boost user experience in applications such as virtual reality. By leveraging local processing power, edge AI can also enhance performance and responsiveness when it comes to VR. Furthermore, edge AI is able to analyse user behaviour and preferences in real-time, adapting and personalising the VR content as necessary. For example, this could include recommending new experiences or adjusting the game level difficulty. ## What Will AI Become in the Future? It’s fair to say that AI has already transformed our personal and professional lives significantly, but, as you can see from our grand list of AI future trends, it’s showing no signs of slowing down! There’s no certainty of what AI will become in the future, but we can expect to see more innovative approaches that can streamline how we approach tasks. We can expect AI to become: * More integrated * More personalised * More responsible * More collaborative Advancements in AI hold enormous potential for advancing technology and improving our society, although they must be guided carefully with ethical, societal, and economic impacts in mind. Balancing these factors will be crucial in leveraging the benefits that AI solutions have to offer. ## Get Ahead of Future AI Trends with McKenna Consultants Here at [McKenna Consultants](/about/), we’re all about innovative digital solutions and want to help your business thrive as the future becomes the present. With our team’s forward-thinking approach and ability to integrate AI future trends and technologies, we can assist companies in staying ahead of the competition. For example, our experts have [created AI assistants](/creating-ai-assistant-using-openai/) and can assist with optimising an LLM’s output through [Retrieval-Augmented Generation](/what-is-retrieval-augmented-generation/). If you’re interested in learning more about [our services](/all-services/), please [contact us today](/contact/) for further details. Additionally, for more AI insights, be sure to [check out our blog](/blog/). --- # Balancing Innovation and The Ethics of AI in Business **Canonical URL:** https://www.mckennaconsultants.com/balancing-innovation-and-the-ethics-of-ai-in-business/ **Author:** Nick McKenna **Published:** 1 September 2024 **Category:** Artificial Intelligence [AI development services](/ai-first/) have been around for some time now, sparking the controversial topic of ethical issues of AI in business. AI has been argued to change our world for the better. Indeed, many businesses have started implementing AI solutions, increasingly depending on innovative tools to streamline processes, assist in strategic decision-making, [improve customer experience](/how-ai-can-improve-customer-experience/), and refocus employee workloads. Despite the many advantages, some businesses remain cautious – AI is a relatively recent advancement and the potential implications of introducing AI into your business remain unknown for many business owners and teams. Read on to learn more about AI's ethical use in business and how this could affect your company. Common Ethical Concerns of Using AI in Business ----------------------------------------------- In business, AI ethical usage concerns include developing and utilising AI within stringent regulations based on privacy, rights, non-discrimination, and non-manipulation. Companies that follow ethical AI procedures align themselves with policies that emphasise responsibility in using these advanced technologies, including: 1. **Accountability** The ethical use of AI in business involves organisations holding accountability. Businesses must ensure human oversight throughout the process, creating principles and policies to help navigate AI uses in business operations to ensure employees adhere to them. Accountability can make sure that there is a system for addressing any AI-related issues and mitigating any negative impacts. * **Purpose** Businesses with ethical AI practices prioritise the societal implications of AI, recognising that their impact can extend beyond immediate business results. To ensure responsible AI use, these systems should be generated with clear objectives that align with the company’s values. This alignment should involve managers carefully thinking about how AI technology will impact their employees and customers. Overall, balancing predetermined objectives with ethical considerations can help promote the responsible use of AI in reaching business goals. This balance can help mitigate potential risks and biases, promote trust and integrity, and support businesses in achieving their goals respectfully. * **Safety** Businesses must evaluate the risks of using AI in business and create appropriate safeguards to protect against these risks. These include bias, discrimination, and non-compliance with privacy and legal regulations. Creating safeguards could involve implementing solid data governance practices to ensure data quality and integrity, as well as making use of algorithms designed to identify and decrease the chance of bias. By detecting risks early, companies can generate targeted strategies to mitigate them. * **Fairness** AI frameworks must be in place to acknowledge the legal and moral aspects of using AI, safeguarding, and ethical principles. This should ensure fairness, transparency, and responsibility in AI deployment. By embedding these considerations into the design of AI, companies can protect individual rights and promote more equitable outcomes. In turn, this approach can assist in growing public trust, ensuring that technologies contribute positively to wider society. * **Transparency** Concerning the ethics of AI in business, transparency is key. Companies have to consider the impact of AI on individuals and offer clear explanations of how AI systems impact results. Like fairness, transparency can also help build trust, meaning users can make informed decisions about their interactions with AI. ## Why Is the Ethical Use of AI in Business Important? The huge potential benefits to be gained from AI cannot be ignored. Nevertheless, businesses should never underestimate the damage that AI can cause across various industries if used or maintained improperly, which is why responsible and ethical use of AI resources is business-critical. Being aware of and addressing the ethical issues of AI in business can help to: * Protect vulnerable people Ethical AI use can help prevent potential harm to vulnerable individuals and society at large. This involves avoiding decisions that could result in negative consequences, from financial loss to psychological distress. * Decrease legal risk As government bodies introduce increasingly stricter AI and data privacy regulations, organisations prioritising the ethical use of AI will be better positioned to comply with the law and avoid fines and legal problems later down the line. * Protect your company’s reputation Addressing ethical issues of AI in business can help you get ahead of the competition by building trust with key stakeholders. A company known for its ethical stance on AI can improve its reputation and, in turn, attract more clients, not to mention top talent. * Address privacy concerns By safeguarding personal data and respecting user privacy, ethical AI use is particularly integral now that data breaches can have severe consequences for individuals and businesses. ## Potential Ethical Issues of AI in Business Your company needs to watch out for many potential ethical issues of AI in business. These include: 1. **Privacy** AI depends on huge amounts of data to function, which can come from a range of devices and sites. Tracking someone’s digital footprint allows AI to develop complex profiles on individuals, which sparks potential privacy concerns if these profiles are utilised for purposes that those in question did not consent to. Furthermore, AI can also make predictions, potentially determining details about people they didn’t want to disclose. For example, AI may determine the likelihood that a particular employment applicant will require parental leave, which could influence the hiring process outcome. This can spark worries about the ethics of AI in business and whether it invades privacy or could even be used to discriminate. * **Loss of Jobs** One of the biggest ethical issues of AI in business concerns the potential for job loss. It’s clear why many employers looking to save money would choose an AI system over a full-time employee – AI can significantly slash the time and effort required for certain task, all without the demand for an annual salary. It’s important for managers to understand the full picture when it comes to choosing between a machine system and a human employee, and the social and economic impacts of this. Human expertise remains critical in creative and complex processes, and AI-generated information, graphics or text require human verification for fact- and sense-checking. * **Chance of Bias** The datasets used to train AI systems derive from sources that reflect human biases. This means that [AI-generated content may be subject to bias](https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/artificial-intelligence/guidance-on-ai-and-data-protection/how-do-we-ensure-fairness-in-ai/what-about-fairness-bias-and-discrimination/) and could reinforce (or even, inadvertently, introduce) discrimination. For example, an AI system may reinforce biases concerning race, gender, and age, which can further deepen stereotypes and prejudices. This means that diversity should be considered when utilising AI in business. The system shouldn’t restrict itself to a single style that limits the creative possibilities of human creators and fails to reflect the diversity around us. * **Exploiting and Manipulating Customers** Another ethical issue of AI in business regards the system’s power to manipulate and deceive people. When utilised unethically, artificial intelligence can spread disinformation and discover patterns in people’s digital footprints that reveal their interests, finances, preferences, and more details. While businesses may use this customer information to offer more tailored services, such information can also be utilised to generate manipulative tools that take advantage of individuals’ weaknesses to navigate them towards certain decisions. This, and the use of false information, can take away people’s independence in making their own consumer choices. * **The question of monitoring AI** As AI systems gradually become increasingly advanced, it remains a question of who will be responsible for setting business and AI ethical principles and how they will be enforced, such as through continuous monitoring and employee training sessions. The responsibility should generally be shared amongst various stakeholders within a business, such as executives and AI developers. The stakeholders should work together to establish comprehensive ethical guidelines that address risks and highlight clear protocols. If ethical guidelines are not enforced, AI may start making decisions that harm individuals or result in unforeseen consequences. These risks underscore the necessity for strict enforcement frameworks. ## How to Safeguard Against Ethical Issues of AI in Business Now that you’re more aware of the ethical issues of AI in business, you need to protect your business, employees, and stakeholders by learning how to safeguard against them. * Enforce stringent guidelines If your business uses AI, ensure that you have strict guidelines and regulations surrounding using AI and develop a system to monitor AI tool behaviour. This can help prevent, detect, and cease any unethical activity. * Offer training sessions Your business should offer training sessions to employees so that they fully understand the ethical implications of utilising AI systems and how they can deploy them most responsibly, covering key areas such as data privacy, transparency, and bias mitigation. In these sessions, individuals should feel comfortable asking any questions they have about the system. Open dialogue can foster a culture of continuous learning and awareness concerning ethics and AI. Prioritising education can ensure your team members are fully equipped to navigate AI effectively and ethically. * Employ valuable resources Organisations should ensure they have valuable resources in place to address any possible risks. For example, this could include building a relationship with an AI professional team so that any risks, issues, or queries can be handled promptly. Resources should also include clear protocols for risk assessment, frequent audits, and regular monitoring of AI systems so issues can be identified and addressed early on. ## Choose McKenna Consultants for Ethical Use of AI in Business We’re committed to ethical AI practices at [McKenna Consultants](/about/), ensuring our clients can navigate and [implement AI solutions](/ai-first/) safely and responsibly. If you’re interested in implementing [Large Language Models](/what-is-a-large-language-model/) or another AI-supported system but are concerned about ethics, rely on us to execute AI solutions properly. Please [get in touch](/contact/) with us today and see how we can assist you in navigating the ethics of AI in business. We are well-practised in artificial intelligence, from [creating AI assistants](/creating-ai-assistant-using-openai/) to applying [machine learning practices](/machine-learning-vs-ai-difference/). You can find more information on artificial intelligence by taking a look at our [blog](/blog/). --- # What is Retrieval-Augmented Generation (RAG)? **Canonical URL:** https://www.mckennaconsultants.com/what-is-retrieval-augmented-generation/ **Author:** Nick McKenna **Published:** 26 June 2024 **Category:** Artificial Intelligence As [artificial intelligence](/ai-first/) becomes increasingly present in our lives, you may have come across RAG – but what is retrieval-augmented generation? In this post, we’ll discuss what retrieval-augmented generation is in AI, examples in practice, and the pros and cons so you can make the right decisions when creating advanced business strategies. Read on for more information. **Retrieval-Augmented Generation Explained: What is RAG?** ---------------------------------------------------------- Retrieval-augmented generation, otherwise known as RAG, is a process for optimising a large language model’s (LLM) output. It uses external sources outside of its training data sources to boost the accuracy of AI models. ## **What Is Retrieval-Augmented Generation (RAG) Primarily Focused On?** Simply put, retrieval-augmented generation bridges a gap in how LLMs operate. LLMs are neural networks measured by their parameters, which represent patterns of how humans use words. This understanding makes LLMs valuable in creating responses to general prompts, but it is not useful to users who would like more detailed information on specific topics. LLM challenges include: * Offering incorrect information when the model cannot find the correct answer. * Failing to offer answers to prompts that are too current. For example, it won’t know what happened in the news yesterday! * Presenting an incorrect response because of confusion with terminology. For example, various training sources may leverage the same terminology to discuss different things. * Generating a response from sources which are deemed non-authoritative. Users may only want an answer created from sources seen as credible. Therefore, retrieval-augmented generation is important as it aims to compensate for LLMs’ drawbacks, helping users get the accurate and precise information they seek. ## **Retrieval-Augmented Generation Architecture: How Does RAG Work?** As we’ve already discussed, RAG aims to make up for LLM shortcomings by pulling information from external data sources rather than crafting responses based on input information the model was trained on. This means the LLM can utilise new and valuable knowledge combined with its training data to generate more useful responses. So, how does augmented generation retrieval work? Let’s delve into a little more detail below. 1. **Processing the input** The journey begins with user input, typically a question or prompt, which the model can then process. 2. **Retrieval** The input is encoded into a query vector utilising a neural network.  3. **Utilising external data** Following this, it is used to search a wide range of documents and identify relevant content.  External data is any data outside of the LLM’s training data set. It comes from external databases, APIs, and other sources and is stored in a knowledge library that generative AI models are trained to understand. 4. **Supplementing the prompt** The RAG model supplements the LLM prompt by adding relevant external data in context. Utilising prompt engineering techniques, the RAG model communicates efficiently with the LLM, allowing the model to produce an accurate response to user questions. 5. **Updating the external data** Data is always at risk of becoming outdated. Thus, you can update the documents and document embedding representation to avoid producing out-of-date answers to more current events. This can be conducted through one of two ways: periodic batch processing or automating real-time processes. ## **What Are the Benefits of RAG?** If you’re wondering whether retrieval-augmented generation is right for your business, we recommend weighing up the advantages and disadvantages. Here are some of the most common benefits of RAG: * Up-to-date information Maintaining relevancy in language models can be tricky, but RAG in AI offers the most updated statistics, research, and other information to generative models. With this, LLMs can offer users the latest and most relevant information, which is particularly useful to those looking for news updates or information on current events. * Cost-efficient The cost of retaining Foundation Models for businesses can be expensive. RAG can help save you money by simply introducing new, valuable data to the LLM. As such a cost-effective solution, generative artificial intelligence technology is now becoming more accessible to businesses that may have smaller budgets. * Enhanced control Developers using RAG can test and enhance chat applications more easily, controlling and modifying LLM data sources to adapt to ever-evolving requirements. Furthermore, the developer can limit sensitive information retrieval to different authorisation levels, ensuring the LLM creates relevant responses. If the LLM does use incorrect data sources, developers can also fix issues efficiently, meaning that organisations can implement and use AI technologies more confidently overall. * Increased trust The retrieval-augmented generation architecture allows LLMs to offer more accurate information from a wide range of sources, all of which can be looked up manually. With this in mind, users are likelier to trust the information and gain confidence in this AI solution. Building trust with your audience can keep them coming back for more. ## **What are the Problems with Retrieval-Augmented Generation?** While RAG has plenty of benefits, you must also consider the drawbacks before implementing AI solutions. * Ethical concerns Content created by AI requires a careful approach, especially as skilled workers have started to fear for their livelihoods. Thus, ethical guidelines could help navigate the development and implementation of RAG. * Accuracy concerns Whilst RAG models can improve the accuracy of LLMs, they can still produce incorrect information. To maintain high-quality responses, RAG systems should be tested thoroughly and subjected to verification processes. * Bias concerns RAG’s dependence on existing database information could introduce biases into the content it creates. Therefore, it is important to present measures that detect and eliminate bias in RAG-generated content.  ## **Retrieval-Augmented Generation: Examples of When It Should Be Used** So, what is retrieval-augmented generation used for? Now that you know what RAG is and how beneficial it can be, take a look at examples of retrieval-augmented generation to get a better idea of when it could be used as an effective tool for your company. * Search augmentation for employees RAG capabilities ensure better responses to informational queries, using company data as a context for LLMs. This ensures users can access the accurate information they need to do their jobs more efficiently, whether they need to get quick answers to HR, compliance, or security questions. This can be spread across various industries, from computing to marketing to healthcare. * Chatbots for customers When it comes to customer service, question-and-answer chatbots are now a standard. Chatbots that allow LLMs to instantly present more accurate answers from knowledge bases and business documents can help streamline customer support and increase leads by resolving issues rapidly. In turn, this could boost satisfaction and loyalty, which is critical for retail industries as well as a wide range of other sectors. * Market research for professionals Since RAG can help gather information from huge volumes of data on the internet, it can keep your company up-to-date on market trends and competitor activities to better inform your strategic decisions. By scrutinising industry reports, social media posts, and current news articles, you can discover relevant topics so you can always provide a product or service that your target consumers are interested in. * Content generation for businesses With RAG, content creators can stay one step ahead of the game. They can combine generative AI capabilities with reliable information sources to assist in producing blog posts and articles at rapid speed, saving time that can then be spent on other aspects of their business. * Sales support for organisations RAG can operate as your virtual sales assistant by efficiently addressing customer queries. For example, it can quickly retrieve information about product specifications and explain product manual instructions. With such a wide breadth of information at its fingertips, RAG can provide customers with tailored recommendations and address specific problems to improve the overall shopping experience. In turn, this personalised touch and efficient solution can keep customers coming back for more. To see how we have applied AI solutions to previous clients, check out our [case studies](/case-studies/).  ## **Our Round-Up on AI RAG** So, that’s a wrap on RAG in AI! If you think you would benefit from [AI development services](/ai-first/), please don’t hesitate to [reach out to us](/contact/). One of our experts will be happy to guide you through our process so you can better understand how we can help your business grow.If you would like to find out more information concerning artificial intelligence, be sure to check out [our blog](/blog/). Here, you can find valuable content on subjects like [how AI can improve customer experience](/how-ai-can-improve-customer-experience/) and [how we create AI assistants](/creating-ai-assistant-using-openai/). --- # Machine Learning vs AI: What’s the Difference? **Canonical URL:** https://www.mckennaconsultants.com/machine-learning-vs-ai-difference/ **Author:** Nick McKenna **Published:** 22 May 2024 **Category:** Artificial Intelligence You may have heard the terms [AI](/ai-first/) and machine learning thrown around a lot recently in [digital transformation](/digital-development/digital-transformation/) conversations. As closely related words, they’re often used interchangeably, which can be confusing when considering how they actually differ. Don’t worry if you’re still wondering, ‘What is the difference between AI and machine learning?’ In this post, we’ll cover the machine learning vs AI debate and discuss some use cases of each.  Machine Learning vs AI: Definitions ----------------------------------- **Artificial Intelligence** Artificial intelligence, or AI for short, is the simulation of human intelligence processes by machine and computer systems. It can copy cognitive functions and tackle tasks like problem-solving, data analysis, [understanding and responding to language](/what-is-a-large-language-model/) and making decisions or recommendations. AI involves several approaches, including machine learning, neural networks, deep learning, and rule-based AI. [Our team](/about/) at McKenna Consultants can implement these technologies across a wide range of industries and applications, adapting to advancements as they become more popular. **Machine Learning** As a subset of AI, machine learning concentrates on developing algorithms and statistical models that allow computers to learn from, predict from, and make decisions based on data analysis. Essentially, machine learning allows the machine or system to learn from experience, train on data and improve over time instead of being explicitly programmed (which saves us a job!). ## What are the Similarities Between AI and Machine Learning? Whilst machine learning and AI are not the same, they certainly have a few similarities. Both AI and machine learning: * **Mimic human intelligence** Both artificial intelligence and machine learning intend to develop systems that copy human intelligence, including capabilities like problem-solving, making decisions, and learning from data. * **Apply data-driven approaches** Machine learning concentrates on developing algorithms and trains itself from data. Similarly, many AI applications utilise data-driven approaches to help make predictions and automate tasks based on insightful trends and patterns. * **Undergo iterative improvement** AI and machine learning algorithms undergo iterative improvement by continuously training themselves on new data and refining their performance. * **Can be applied across industries** Both AI and machine learning have applications in various industries, including healthcare, transportation, and manufacturing. We will explore these in more detail later in the article. ## What is the Difference Between AI and Machine Learning? Now that you know the similarities and interconnectedness between AI and machine learning, let’s highlight the main differences. * **Objectives** AI aims to generate systems capable of performing tasks that would usually require human intelligence, from decision-making to language understanding. It strives to copy cognitive and human-like behaviours in machines. On the other hand, machine learning specifically concentrates on enabling machines to train themselves from data, improving themselves from experience by making better decisions or predictions based on data. * **Methods** AI uses various methods, from logical reasoning to rules-based systems and machine learning, meaning not all AI is machine learning. However, all machine learning is AI. It predominantly focuses on statistical procedures to develop accurate predictive models. These models are generated using algorithms that adjust their parameters based on data feedback. Common methods include reinforcement learning and supervised learning. * **Requirements** AI systems typically require complex rule sets and logical frameworks that copy human behaviours. In contrast, machine learning mainly relies on large volumes of quality data for accurately training the algorithms. Machine learning also requires considerable computational power for data processing and model training. ## Machine Learning vs AI: A Beneficial Collaboration An intelligent computer utilises artificial intelligence to copy humans and execute tasks by itself. Going further, machine learning is how the computer system trains itself on data to expand its intelligence. When considering the machine learning vs AI difference more, it’s worth seeing how they interact: * AI systems are developed utilising machine learning and other techniques * Machine learning systems are developed by studying data patterns * The machine learning systems are optimised based on data patterns * This training is repeated until the machine learning model’s accuracy is adequate for the tasks it is being trained to perform A machine learning and AI collaboration comes with various benefits and possibilities. This includes: * Increased operational efficiency and decreased costs * Broader data ranges by analysing more unstructured and structured data sources * More informed, quicker decision-making by enhancing data processing, data integrity, and reducing human errors ## Benefits of Using Machine Learning and AI Organisations can use AI and ML in various ways. Below are some capabilities your company could benefit from. 1. **Language understanding** By recognising speech and adopting natural language understanding, computer systems can detect words in spoken natural language and find meaning in them. This is integral for your company to facilitate digital communications with consumers. * **Predictions and recommendations** The intelligence capability of predictive analytics can allow your business to accurately identify behavioural patterns, predict trends, and make recommendations based on data. This can drive better decision-making based on what your company predicts your consumers will want. Don’t forget that quality recommendations can also add value to the customer experience. * **Media processing** AI makes it possible for machines to recognise components of images and videos, from human faces to specific objects. This means it can also use functionalities such as visual search. * **Analysing sentiment** We can use AI computer systems for sentiment analysis to gather and categorise positive and negative opinions and neutral ones displayed in textual language. This can help your company enhance its product offerings by evaluating what does and doesn’t work. ## Machine Learning and AI Examples in Industry These components can be used widely across various industries considering the vast range of machine learning vs AI examples. Incorporating both AI and machine learning capabilities into industry strategies can help your company leverage its time and money more effectively. Here are some of the most common AI and machine learning examples applied: * Manufacturing We can employ AI and machine learning to streamline productive processes by predicting equipment failures and reducing downtime. * Healthcare Machine learning algorithms can analyse data in the healthcare industry to identify patterns and streamline administrative tasks. At the same time, AI can assist in personalising treatment plans and customer service with patients. * Retail With AI and machine learning, retailers can offer consumers useful product or service recommendations, gain insights into what products work best, and [boost customer service communications](/how-ai-can-improve-customer-experience/) through chatbots. * Sales In sales and marketing, our team can leverage AI and machine learning in sentiment and predictive analysis to optimise campaigns and provide personalised offers that appeal to the target audience. * Transportation In transportation, AI and machine learning are valuable tools in streamlining companies' routes and helping in traffic forecasting. ## Employ the Benefits of Machine Learning and AI with McKenna Consultants After reading this post on AI vs machine learning, hopefully, you will have a better idea of the difference between AI and machine learning. At McKenna Consultants, we can help you use machine learning and AI to improve your current services. We’ve even developed our very own artificial intelligence assistant (also known as Ziggy). If you would like us to [create an AI assistant](/creating-ai-assistant-using-openai/) for your platform, help you choose between AI and machine learning, or assist in [other web or app development services](/all-services/), please [get in touch with us today](/contact/). Or, take a look at our [blog](/blog/) to learn about our other areas of expertise. --- # How AI Can Improve Customer Experience **Canonical URL:** https://www.mckennaconsultants.com/how-ai-can-improve-customer-experience/ **Author:** Nick McKenna **Published:** 11 April 2024 **Category:** Artificial Intelligence AI and customer experience are increasingly being intertwined in businesses, with the intention of helping companies set themselves apart from the competition. However, as more and more businesses integrate AI into their customer experience, it has become crucial for your business to use it in order to keep up. In this article, we’ll explain AI customer experience and how to use this advanced technology to improve your consumers’ experience. **What is AI customer experience?** ----------------------------------- AI customer experience is the utilisation of Artificial Intelligence (AI) technologies to improve and customise interactions between companies and their consumers. This can encompass various aspects of AI, from natural language processing to predictive analytics and machine learning, and all of these different applications can help businesses deliver personalised experiences to boost customer satisfaction and loyalty. Our team are well-experienced in [building AI assistants](/creating-ai-assistant-using-openai/) for customer experience, utilising Large Language Models like ChatGPT and OpenAI to benefit your business. Let’s find out how below. ## **How does AI improve customer experience?** There is no one-size-fits-all answer when it comes to using AI to improve the customer experience. Let’s explore the different ways businesses are currently using AI to improve the customer experience and what methods you can implement in your own company. * **Personalisation** One way that artificial intelligence can elevate your customer service is through personalisation. AI can use machine learning algorithms to scrutinise your past customers’ actions, interests, and preferences, helping it detect patterns and apply these details to create relevant product or service recommendations. For example, if one of your customers has been browsing a specific laptop brand, an AI system could offer them suggestions of other products by the same brand, as it is likely that this will interest them. This personalised method enhances the overall shopping experience but may also escalate the number of sales in the long run. * **Predictive analytics** AI and customer experience go hand in hand when it comes to predictive analytics. AI algorithms can analyse huge sets of data and predict consumer behaviours and preferences based on this. By predicting customer needs in advance, your company can proactively address risks, provide useful recommendations, and deliver a seamless customer experience that exceeds expectations and keeps shoppers coming back for more. * **Chatbots** With natural language processing, automated chatbots can improve customer service by handling standard inquiries and support requests without human intervention. They are developed to understand and respond to human language, enabling communication with real-life shoppers. Since chatbots can provide people with assistance on a 24/7 basis, this can enhance response times, decrease wait times, and boost customer satisfaction. For example, voice assistants like Alexa and Siri are becoming increasingly popular. They work to revolutionise customer service, being able to place orders, control other electronic devices, answer specific questions, and offer customised assistance based on their user’s preferences. * **AI in CRM systems** AI can improve the customer experience by enhancing CRM systems. It can automate tasks like data entry and follow-up reminders, providing insights and predictions to enable departments to concentrate on leads that are most likely to convert. * **Omnichannel engagement** AI allows companies to deliver consistent experiences across different channels, whether this is their website, social media accounts, or messaging apps. This means that consumers can enjoy a seamless experience regardless of how they choose to interact with your business. * **Decrease mistakes** AI customer experience services can process a lot more data than humans can, meaning they can quickly detect small errors before they become significant issues. Furthermore, AI agents don’t become tired of repetitive tasks, reducing the chance of mistakes later. Armed with impressive data-processing capabilities and an ability to analyse more data, AI can offer context for informed decisions. By making good decisions and reducing errors, your company may also be able to cut considerable costs and time in the long run, saving your employees from having to undergo gruelling error correction. * **Fraud detection** AI algorithms can improve your company’s security by identifying and preventing fraudulent activities in real-time, including identity theft and payment fraud. By tightening security measures, AI can also improve the customer experience by instilling confidence and trust in your customers. * **Segmenting customers** You can use AI to improve the customer experience through customer segmentation. Whilst a business manager can segment customers manually, AI can do this task more productively by analysing huge amounts of data quickly and precisely, detecting patterns that may not always be obvious to humans. Algorithms continuously adapt based on new data, which can ensure customer segments are refined over time and kept relevant. By segmenting your audience based on demographics, psychographics, and other aspects, you can deliver the customised experiences that your consumers are looking for, including highly targeted marketing messages. This may increase overall conversions. * **Decrease employee burnout** With AI customer experience technologies on hand, you can relieve your human employees from having to do repetitive and mundane tasks, decreasing their workload and avoiding burnout. This can boost productivity and morale in the long run, helping them deal with customer queries more effectively. ## **Industry examples of AI improving customer experience** Now that you know how AI can improve customer experience, let’s take a look at it in practice from some leading global brands. ### _Amazon_ Amazon is well-known for successfully introducing AI customer service chatbots into its eCommerce company. The chatbots complete tasks such as product recommendations and order tracking, helping provide a seamless experience by providing real-time updates and information without customers having to wait for a response from a human employee. This saves the company money and allows its resources to be allocated more efficiently. The chatbot can be deployed across various Amazon channels, whether customers need assistance on the mobile app, website, or anything else. Furthermore, as this AI assistant leverages machine learning and natural language processing on a daily basis, it can enhance its responses over time, continuously learning from different customer interactions. ### _Macy’s_ This leading American department store has started using AI to improve the customer experience. Its customers can now navigate its shops and find specific items and employees much more efficiently. This mobile phone-based assistant can also provide customised answers to questions and tell you where facilities are available in the shop. By relieving human employees of more simple tasks, they are given the time to deal with issues that are too complicated for AI to handle, thus contributing to a more productive and seamless customer experience. ## **Integrate AI and customer experience with McKenna Consultants** At [McKenna Consultants](/about/), we can help you use AI to improve the customer experience, and we’ve even generated our very own artificial intelligent assistant (also known as Ziggy). Whether you need help creating an AI assistant for your platform or [other services](/all-services/), please [get in touch with us today](/contact/) to start a conversation about AI and customer experience. Additionally, take a look at our [blog](/blog/) to learn about our other areas of expertise. --- # What is a Large Language Model? Uses, Scope, and Limitations **Canonical URL:** https://www.mckennaconsultants.com/what-is-a-large-language-model/ **Author:** Nick McKenna **Published:** 29 March 2024 **Category:** Artificial Intelligence Large Language Models (LLMs) are popular artefacts of modern artificial intelligence. Although LLMs are based on well-established technology, they have become popular recently due to the widespread availability of low-cost, scalable cloud infrastructure. In this post, we’ll cover what a large language model is in AI, what it can be used for, and its scope. **What is a Large Language Model?** ----------------------------------- A Large Language Model is an artificial intelligence model trained on huge amounts of textual data to understand and create human-like text. Large Language Models are usually based on the foundation of deep learning techniques, like neural networks, which we will discuss in more detail later. Examples of Large Language Models include ChatGPT, Google’s Gemini (previously Bard), and Llama. ## **What Is a Large Language Model Useful For?** As they can respond to unpredictable questions promptly, Large Language Models have many applications, both for businesses and private use. * **Human-written text processing** One use of a Large Language Model is processing human-written text, particularly pattern recognition in human text and generating new text. LLMs can analyse text and give information about the sentiment that text conveys. They can summarise larger blocks of text into smaller blocks of text. One of the most popular uses of an LLM (like ChatGPT or Copilot) is to create an interactive interface where users can ask questions. * **Text generation** Large Language Models are also commonly utilised for text generation. These models can create human-like text based on human prompts, making them useful for writing assistance.  * **Language translation** You can also use Large Language Models for language translation, as they can translate content between different languages with greater precision than many other tools. * **Content recommendation** Large Language Models can scrutinise user preferences and behaviours to recommend personalised products, content, and services, which can boost user engagement and experience. * **Sentiment analysis** You can use Large Language Models to analyse the sentiment of text. This can help your business understand consumer feedback and sentiment on social media, which can effectively shape your next strategy. ## **The limitations of using Large Language Models** Large Language Model uses can help your business excel, but they don’t come without limitations. Let’s take a look at some considerations of using LLMs below. * **Relies on correct data to give correct answers** LLMs are not good at computation, numeric analysis, or predicting sales. They cannot even do simple addition (without supplementary enhancements). When an LLM solves a mathematical problem, it does so based on the previous text it was trained with and not by really solving the problem. It would give an incorrect answer if trained on incorrect data. In essence, a Large Language Model replies to a query by simulating what a human may write next. This is worth considering if you plan on using a Large Language Model in your business. * **Potential copyright infringement** LLMs are typically trained on massive text data sets. Early attempts at modern LLMs were trained on data that was easily accessible on the public Internet. More recent LLMs are trained on a much wider scope of written material. This has given rise to copyright concerns and questions about whether the data used to train LLMs was authorised for this purpose. * **Cannot be altered once trained** As neural network training is a long, expensive process, an LLM cannot be significantly altered or trained further once trained. When one uses ChatGPT, for example, it (mostly) does not learn anything new from the conversation. Once the conversation is finished, it is forgotten about! For example, try asking ChatGPT (model GBT-4 Turbo) who won the Super Bowl in 2024. This LLM was trained before the Super Bowl, so it cannot answer as it has no knowledge of these events. Therefore, LLMs need further enhancement (for example, using Retrieval Augmented Generation) before they are useful for specific use cases. For example, [McKenna Consultants](/about/) uses Retrieval Augmented Generation to produce our Assistant AIs for our clients. ## **Using Large Language Models: how do they work?** An LLM is a purpose-specific example of a neural network. The first computerised neural network was created way back in 1957! Neural networks seek to solve complex problems that are otherwise hard to solve with computers by simulating the function of a human brain. This simulation is primitive but effective in certain circumstances. A neural network contains “neurons” which you can think of as tiny individual equations that perform some calculation on a given input. The neurons are chained together into a large network so that the output of one set of neurons is the input into more neurons. A neural network is “trained” with a large (the “Large” from Large Language Model) quantity of data. The neural network begins life not functioning well. A well-known set of data is inputted into the neural network and the neural network acts as a “magic black box” which spits out an answer. In the beginning, the answer will be wildly incorrect. The next step is to adjust semi-randomly the internal workings of the neural network and repeat the test. If the result is better, the neural network is corrected more in the same way. If the result is worse, it is corrected differently. Training a neural network is a very slow, painstaking process that requires a large amount of computing power, input data, and test data. ## **Make the most of the Large Language Model uses** If you think using Large Language Models could benefit your business, please [get in touch](/contact/) with us at McKenna Consultants. We are well-experienced in the field of artificial intelligence, from [using AI to improve customer experience](/how-ai-can-improve-customer-experience/) to [creating an AI assistant](/creating-ai-assistant-using-openai/) with Large Language Models. You can find more information on artificial intelligence, take a look at our [blog](/blog/). --- # Creating an AI Assistant Using OpenAI **Canonical URL:** https://www.mckennaconsultants.com/creating-ai-assistant-using-openai/ **Author:** Nick McKenna **Published:** 23 February 2024 **Category:** Artificial Intelligence Everyone has heard about ChatGPT, CoPilot, Bard, and Gemini, and many of us are now using basic AI in our daily work. However, using the Large Language Model (LLM) base of something like OpenAI to create a bespoke AI assistant for your customers is possible. Let’s say we operate a large-scale, global eCommerce website and want to create an AI assistant for our customers. We want the assistant to answer technical questions about our products, get information on order status and get customer-specific pricing information. Fortunately, we’ve built such a system (called Ziggy) already. So how does it work? Creating an AI Assistant ------------------------ ## Retrieval-Augmented Generation First of all, you need to know what Retrieval Augmented Generation is! Retrieval-Augmented Generation (RAG) is a process that optimises the output of a large language model by referencing an authoritative knowledge base outside of its training data sources before generating a response. LLMs are trained on vast volumes of data and use billions of parameters to generate original output for tasks like answering questions, translating languages, and completing sentences. However, they can sometimes present false or out-of-date information or create responses from non-authoritative sources. RAG addresses these issues by redirecting the LLM to retrieve relevant information from authoritative, pre-determined knowledge sources. This approach gives organisations greater control over the generated text output, and users gain insights into how the LLM generates the response. RAG is also an AI framework for improving the quality of LLM-generated responses by grounding the model on external sources of knowledge to supplement the LLM’s internal representation of information. It ensures that the model has access to the most current, reliable facts and that users have access to its sources, ensuring that its claims can be checked for accuracy and ultimately trusted. In summary, RAG is a cost-effective approach to improving LLM output so it remains relevant, accurate, and useful in various contexts. It’s like giving the model an “open-book” instead of a “closed-book” exam. Another way of thinking about it is to say that our assistant will only be able to answer questions where we give it the answer beforehand! ## An Example of Retrieval Augmented Generation Let’s clarify this with an example. Here is a complete conversation with our AI assistant, Ziggy: >Ziggy > >How can I help you today? > >User > >Hi, I have been using an Acme b13 filter widget on a blasting machine but now need to update whole unit to something that's not obsolete. Can you recommend current part and spec to equal b13 performance? Filtration not of concern. Must be able to pass 40 cu ft of air per min and reg up to 150psi. Acrylic bowl ok. 1/2" BSP tappings. > > >Ziggy > >Based on your requirements, a suitable current product could be the AD15 series, specifically AD15-4AK-AD1-RMG. >This is an Acme Plus filter widget from the AD15 Acme product range that fits the specifications you have provided. It's designed for use with Compressed Air, and has the relieving feature. The body is a zinc alloy and the bonnet is aluminium. >Its adjustment is through a knob made from acetal resin. The filter element is a sintered plastic. >This model has a flow rate of 225 scfm (106 dm³/s) which exceeds your requirement of 40 cubic feet per minute. It also has a 1/2" PTF Port size that can be adapt to 1/2" BSP with an additional fitting. Operating pressure is 150 psig (10 bar) >adequate for your 150 psi need. The unit utilises an automatic drain and the bowl is durable metal which is more robust than acrylic, but if you specifically require an acrylic bowl, you may have to look into another series or customized solution. >Please consider consulting with an Acme product expert or technical support to ensure that this is the best suitable part for your needs, given the information shared here is of general nature. In the example above, we use the basic OpenAI LLM to handle the natural language conversation. However, our assistant appears to have some detailed, specific technical knowledge not in the original OpenAI LLM. So, how did we create an AI virtual assistant to make this work? There are two parts to the answer: * Prompt Engineering * Data Preparation ## Prompt Engineering The secret to creating an AI assistant is to insert “hidden” additional prompts that the user cannot see. In this case, from Ziggy’s point of view, this is the information that gave it: >System > >You are an assistant to people with questions about Acme products and orders. Your answers should always try to use the additional information provided in your knowledge context. You can answer questions about orders and will be provided with additional context about orders to do so. You don't need to express sentiment towards the status of an order. You should never invent order information. >You should refrain from mentioning that you are an AI system or that you were developed by OpenAI. When answering product questions, you should only discuss those manufactured by Acme. > >User > >More Information: The product with the id AD15-4AK-AD1-RMG is a Olympian Plus filter/regulator, 1/2 PTF, 0.3-10 bar, manual drain, 5μm filter element, with gauge from the B64G Acme product range. The AD15-4AK-AD1-RMG product Medium is Compressed Air. The AD15-4AK-AD1-RMG product Gauge port is 1/8\" PTF. The AD15-4AK-AD1-RMG product Relieving/Non-Relieving is Relieving. The AD15-4AK-AD1-RMG product Body is Zinc alloy. The AD15-4AK-AD1-RMG product Bonnet is Aluminium. The AD15-4AK-AD1-RMG product Gauge is External gauge. The AD15-4AK-AD1-RMG product Adjustment is Knob. The AD15-4AK-AD1-RMG product Adjusting knob is Acetal resin. The AD15-4AK-AD1-RMG product Elastomers is Polyurethane. The AD15-4AK-AD1-RMG product Bowl type is 0.2 litre with liquid level indicator. The AD15-4AK-AD1-RMG product Filter element is Sintered plastic. The AD15-4AK-AD1-RMG product Drain Type is Manual. The AD15-4AK-AD1-RMG product Port Size is 1/2\" PTF. The AD15-4AK-AD1-RMG product IMI Brand is Acme. The AD15-4AK-AD1-RMG product Product style is Plug-in. The AD15-4AK-AD1-RMG product Product Family is Air Preparation. A feature of the AD15-4AK-AD1-RMG product is High efficiency water removal. A feature of the AD15-4AK-AD1-RMG product is Good regulation characteristics. A feature of the AD15-4AK-AD1-RMG product is Non-rising adjusting knob has snap-action lock. The AD15-4AK-AD1-RMG product large image is `https://cdn.Acme.com/images/243x/PH_AL_B64G_6GK_MD3_RMN_w.jpg`. >The AD15-4AK-AD1-RMG product thumbnail image is `https://cdn.Acme.com/images/53x/PH_AL_B64G_6GK_MD3_RMN_ws.jpg`. The AD15-4AK-AD1-RMG product technical specs is `https://cdn.Acme.com/pdf/en_8_240_300_B64G.pdf`. The AD15-4AK-AD1-RMG product installation and maintenance instructions pdf is `https://cdn.Acme.com/pdf/IM_en_8_240_300_B64G.pdf`. The AD15-4AK-AD1-RMG product has the accessory Olympian Filter/Regulator Service Kits which is a Service Kit with the id B64G-KITM05R. >[ … other prompts … ] > >User > >Hi, I have been using an Acme b13 filter widget on a blasting machine but now need to update whole unit to something that's not obsolete. Can you recommend current part and spec to equal b13 performance? Filtration not of concern. Must be able to pass 40 cu ft of air per min and reg up to 150psi. Acrylic bowl ok. 1/2" BSP tappings. > >Ziggy > >Based on your requirements, a suitable current product could be the AD15 series, specifically AD15-4AK-AD1-RMG. >This is an Acme Plus filter widget from the AD15 Acme product range that fits the specifications you have provided. It's designed for use with Compressed Air, and has the relieving feature. The body is a zinc alloy and the bonnet is aluminium. Its adjustment is through a knob made from acetal resin. The filter element is a sintered plastic. >This model has a flow rate of 225 scfm (106 dm³/s) which exceeds your requirement of 40 cubic feet per minute. It also has a 1/2" PTF Port size that can be adapt to 1/2" BSP with an additional fitting. Operating pressure is 150 psig (10 bar) adequate for your 150 psi need. The unit utilises an automatic drain and the bowl is durable metal which is more robust than acrylic, but if you specifically require an acrylic bowl, you may have to look into another series or customized solution. >Please consider consulting with an Acme product expert or technical support to ensure that this is the best suitable part for your needs, given the information shared here is of general nature. _(Note: the text \[ … other prompts … \] is a placeholder for other generated prompts._ Notice the difference between this “behind-the-scenes” conversation and the conversation that the user sees. * First of all, this conversation has a “System” role. The text at the start explains to OpenAI how we want it to behave. It defines the persona of the AI assistant. * Secondly, a large prompt filled with product technical data has also been included. In reality, we include several such prompts with information about various products and product ranges, but we have omitted most of them for brevity. It is these hidden prompts that are the magic in creating an AI assistant! These hidden prompts contain enough information for OpenAI to construct a response to the user’s real question. OpenAI does the hard work of understanding the user’s natural language request and composing a natural language response. But where did these additional, hidden prompts come from? ## Data Preparation to Create an AI Virtual Assistant Now we come to the second part of our answer to the question, “How did we make this work?”. This is typically the most time-consuming part of creating an AI assistant – preparing the data so that you can create hidden prompts from it. In this example AI assistant, we used the following data sources: * 6,000 product and range PDF files * Structured CSV data on 60,000 products * A real-time link to pricing information * A real-time link to order status information The key to preparing data is to understand that LLM Ais do not like structured data! They much prefer human-readable text information. Data preparation largely involves converting existing structured data into plain text. Consider the hidden prompt in this example. It was originally CSV data that was converted as part of a batch process into the exact plain text that you can see here. All of our sample data follows this process. Every data source needs a slightly different conversion process, but the result is much the same. For the non-real-time data (PDFs and CSV data in this case), we used a Vector database (e.g. Azure AI Search) to store the plain text data once it has been converted. For the real-time data, we use a more complex heuristic approach, which I won’t detail in this blog article! ## Hooking It All Up So, now we have OpenAI, a prompt entered by the user and a Vector database (and other data sources) with our domain-specific technical information. How do we hook it all up to create an AI assistant? The secret is to take the user’s prompt and use some or all of it to query your data sources. For example, a simplistic approach would be to take the user prompt and search the Vector database with it. You could take the first five results (the Vector database will return the relevant chunks of text) and insert them as hidden prompts. Once you have assembled your entire conversation (OpenAI is stateless, so you must submit the whole conversation every time), submit it to OpenAI and send the response back to the user! ## Challenges in Creating an AI Assistant There are challenges with this approach to creating an AI Assistant. Beyond the difficulty and expense of preparing your data for AI, the key challenges are technical limitations on “context” size and the sheer cost of conversations. “Context” is what OpenAI calls the whole conversation. Remember that you need to submit the entire conversation every time you want to get a response from OpenAI. OpenAI charge based on “tokens”. For argument's sake, let’s say that a “token” is four characters. Our sample conversation has about 4,000 characters, which is about 1,000 tokens. This will cost between 1 and 4 pence (or cents), depending on which LLM you are using. Remember that in our example, I have excluded some of the prompts that we generated for brevity. You can see how the cost can soon add up! Similarly, depending on your LLM, there is a maximum possible “context” size. If you breach this limit, you will get an error back instead of a response! To mitigate these challenges in creating an AI assistant, you need to create a prompt management strategy. ## Creating a Prompt Management Strategy This strategy is part of the art of AI. There are several competing concerns that need managing: 1. The time and effort of data preparation 2. The level of detail required in hidden prompts to generate good responses 3. The cost of creating detailed hidden prompts We have found striking the balance between these things to be a trial-and-error task. Every domain is different. Different domains have different types of technical questions. Every domain has differing quality of technical information. Perhaps creating an AI assistant will be a catalyst in your organisation for finally getting on top of product data! To aid us in finding the balance, we established a baseline of user questions that had been asked of a human operator using an old chat program. We also needed technical product assistance to establish whether or not Ziggy was generating sensible replies to queries. From there, it was a repeating process of tweaking data and data formats, altering search parameters and reviewing the cost and quality of the responses. ## Create Your AI Assistant With Us At [McKenna Consultants](/about/), we can create an AI assistant for your software or platform and provide a full [service](/all-services/), from prepping data to creating the front and back-end software to produce your AI assistant. If you are interested in how this service can benefit you, please [contact us today](/contact/) to start a conversation. Additionally, check out our [blog](/blog/) to learn about our other areas of expertise. --- # Building an MS Outlook Add-In: Part Three -  Testing and Approval **Canonical URL:** https://www.mckennaconsultants.com/testing-and-approval-for-building-an-ms-outlook-add-in/ **Author:** Nick McKenna **Published:** 20 December 2023 **Category:** Microsoft Office Add-In Developer Once your add-in is ready to go, you need to know how to handle any errors, test for reliable performance and prepare for deployment.  This is the third of a three-part series where we’re aiming to be able to save an email (as an EML file) from a user’s inbox into a CRM system an [**Outlook add-in**](/what-are-microsoft-outlook-add-ins-how-do-they-work/); you can find parts one and two below. * **[Part One - Enhancing CRM Integration: Building an MS Outlook Add-In with the Microsoft Graph API](/building-ms-outlook-add-in-with-microsoft-graph-api/)** * **[Part Two -Building an Add-In with the Microsoft Graph API](/process-of-building-an-ms-outlook-add-in-with-microsoft-graph-api/)** In this part, we’re looking at working with the Graph API, accessing your email content and connecting with your CRM. Handle Errors and Provide User Feedback --------------------------------------- Implement error handling to manage potential issues during API calls. Provide clear and user-friendly feedback within the add-in interface to inform users about the success or failure of the operation. Here are a couple of tips and guidelines: First of all, use the Yeoman generator. It has sample code built-in to handle all of your authentication scenarios. The code is tricky to follow, but it works! Second, most of your Graph API-related problems are related to expired access\_tokens and refresh\_tokens. Getting the user to log out and in again solves most of your problems. ## Testing and Deployment Thoroughly test the add-in in different scenarios to ensure it performs reliably. Debug any issues that arise during testing. Once confident in the add-in's functionality, deploy it to the intended users through the Microsoft Office Store or internal distribution methods. Testing Outlook add-ins is complex due to the various server and client platforms. You should note that the Graph API is only supported on Outlook.com and Microsoft 365. You cannot use it with Gmail (which isn’t supported for add-ins anyway) or Exchange On-Premise. A typical Outlook add-in will support the following clients: * **Outlook 2016 or later on Windows** * **Outlook 2019 or later on Windows** * **Outlook 2013 or later on Mac** * **Outlook 2016 or later on Mac** * **Outlook 2019 or later on Mac** * **Outlook on the web** * **Outlook on Windows (Microsoft 365)** * **Outlook on Mac (Microsoft 365)** In addition to the basic platforms for support, you should also consider the complex business of which web viewer will be used to render your add-in. You should test Outlook on the web in the following browsers: * **Edge** * **Chrome** * **Firefox** * **Safari (MacOS)** The Windows / Mac clients will use one of the following renderers to render your add-in: * **Edge WebView2** * **EdgeHtml (MS Edge Legacy)** * **Trident+ (IE11)** * **WKWebView (Safari on iOS and MacOS)** EdgeHtml and Trident+ are no longer [**browsers and WebView controls used by Office add-ins**](https://learn.microsoft.com/en-us/office/dev/add-ins/concepts/browsers-used-by-office-web-add-ins), but we recommend that you attempt to support EdgeHTML. It usually only requires a small shim for the JavaScript spread operator! We should also make a special note about mobile support for Outlook add-ins. Add-ins are indeed supported on iOS and Android Outlook, and we have implemented support for these in the past. However, due to Microsoft’s agreement with Apple and Google, the additional UI requirements for Android and iOS significantly increase the cost of doing this! Microsoft is stringent and inflexible in enforcing these UI requirements. We also see very little add-in usage on mobile platforms (most users don’t know how to install or use add-ins on mobile platforms). Check out the [**Outlook add-in design guidelines**](https://learn.microsoft.com/en-us/office/dev/add-ins/outlook/outlook-addin-design) for more information. You can see from the above list of platforms that testing an Outlook add-in requires significant effort. You should construct a test matrix to ensure you don’t miss anything. You should not skimp on this effort! See the section below on Microsoft Approval for why.  ## Submit Your Add-In to Microsoft for Approval Once you are happy with your add-in, you will probably want to submit it to Microsoft for approval to distribute it in AppSource. The process is similar to submitting a mobile app to Apple or Google with a similarly large set of “guidelines”. There are non-AppSource distribution mechanisms, but most companies use AppSource to [**deploy and publish Office add-ins**](https://learn.microsoft.com/en-us/office/dev/add-ins/publish/publish). Extensive documentation on AppSource requirements, guidelines, and the approval process can be found online, whether you want to know how to **[s](https://learn.microsoft.com/en-us/partner-center/marketplace/submit-to-appsource-via-partner-center)**[**ubmit to AppSource with Partner Center**](https://learn.microsoft.com/en-us/partner-center/marketplace/submit-to-appsource-via-partner-center), learn more about [**certification policies**](https://learn.microsoft.com/en-us/legal/marketplace/certification-policies), or gain knowledge on [**Outlook add-in functionality**](https://learn.microsoft.com/en-us/legal/marketplace/certification-policies#11204-outlook-add-ins-functionality). We strongly recommend reading all of this documentation before starting the development of your add-in to ensure that Microsoft will accept your add-in. Building an Outlook add-in is a complex business, and it helps to have a team with prior experience doing this! If you want McKenna Consultants to help with your [**Outlook add-in implementation**](/cspp-wopi-cloud-storage-partner-program/), please [**contact us**](/contact/) today! For more information, check out our [**blog**](/blog/), including posts with more information about [**Microsoft add-ins and integrations**](/add-ins-and-cspp-wopi-changes/). --- # Building an MS Outlook Add-In: Part Two - Building an Add-In with the Microsoft Graph API **Canonical URL:** https://www.mckennaconsultants.com/process-of-building-an-ms-outlook-add-in-with-microsoft-graph-api/ **Author:** Nick McKenna **Published:** 13 December 2023 **Category:** Microsoft Office Add-In Developer Welcome back to part two of our series, where we’re aiming to be able to save an email (as an EML file) from a user’s inbox into a CRM system (or any other system for that matter!) via an [**Outlook add-in**](/what-are-microsoft-outlook-add-ins-how-do-they-work/). This is the second of a three-part series; you can find parts one and three below. * **[Part One - Enhancing CRM Integration: Building an MS Outlook Add-In with the Microsoft Graph API](/building-ms-outlook-add-in-with-microsoft-graph-api/)** * **[Part Three – Testing and Approval](/testing-and-approval-for-building-an-ms-outlook-add-in/)** In this part, we’re looking at working with the Graph API, accessing your email content and connecting with your CRM. Managing Access to the Graph API -------------------------------- For security, for your system to access the Graph API, your users must grant your add-in access to their Graph API resources on their behalf. This is a complicated and fiddly process! Learn how to [**register an Office add-in that uses single sign-on**](https://learn.microsoft.com/en-us/office/dev/add-ins/develop/register-sso-add-in-aad-v2) with Microsoft. You must get up to speed on [**Microsoft Azure**](/cloud-services/microsoft-azure-development/), App Registrations, and Enterprise Applications to get all this working! Getting your scopes in order is key to getting this working. Scopes are required for accessing different Graph API resources. As an example, let’s say that we have read the documentation and we want these scopes: * **email** * **openid** * **profile** * **offline\_access** * **User.Read** * **Mail.Read** * **Files.ReadWrite** This is a reasonable minimum set of scopes for copying emails from Microsoft 365/Outlook into your CRM system. The main challenge here is copying these scopes into the right places in your tech stack. To summarise, these places are:
PlaceScopes To Copy In
Your Add-in Manifestopenid
profile
offline_access
User.Read
Mail.Read
Files.ReadWrite
Your App Registration in AzureEmail
openid
profile
offline_access
User.Read
Mail.Read
Files.ReadWrite
In Your Add-in CodeUser.Read
Mail.Read
Files.ReadWrite
In Your Server-Side Code When Performing Code ExchangeUser.Read
Mail.Read
Files.ReadWrite
Offline_access
Your add-in manifest will need a [**section like this**](https://learn.microsoft.com/en-us/office/dev/add-ins/develop/sso-in-office-add-ins#configure-the-add-in): 446d4af8-a41c-4732-9a7d-b1d9752a63c2 api://localhost:3300/446d4af8-a41c-4732-9a7d-b1d9752a63c2 openid offline_access profile user.read mail.read mail.readwrite files.readwrite mailboxsettings.readwrite [**Learn how to set up**](https://learn.microsoft.com/en-us/office/dev/add-ins/develop/register-sso-add-in-aad-v2) your app registration in Azure. Your add-in code will need updating, assuming you have [**generated it using Yeoman**](https://learn.microsoft.com/en-us/office/dev/add-ins/develop/yeoman-generator-overview). const clientId = “446d4af8-a41c-4732-9a7d-b1d9752a63c2”; const apiPrefix = “api://localhost:3000”; const accessScope = `api://${apiPrefix}/${clientId}/access_as_user`; const loginRequest = { scopes: [accessScope], extraScopesToConsent: [ 'user.read', 'mail.read', 'mail.readwrite', 'files.readwrite', ], }; Finally, you must [**update your server-side code**](https://learn.microsoft.com/en-us/office/dev/add-ins/develop/create-sso-office-add-ins-aspnet#code-the-server-side) that implements the “on behalf of” flow. Alternatively, you can manually implement the “on behalf of” flow (our recommended approach). ## Authenticate with Microsoft Graph API Implement authentication using OAuth 2.0 to connect your add-in to the Microsoft Graph API. This step ensures secure access to the user's mailbox and associated data. If you have correctly implemented the complex OAuth system described above, your server-side code should be able to access the Graph API on behalf of a user. By this point, you have probably spotted that your user must log in to two different systems when they first start your add-in! These are: 1. **Your core CRM system** 2. **Graph API (using their Azure AD / Entra ID / Microsoft account)** The good news is that in most modern circumstances, the login to Graph API will be almost invisible and managed by the SSO mechanism you set up earlier. Some users will use older Outlook email clients, while others will be on M365 tenants that are not configured for Modern Authentication. For these, you should implement fallback authentication as required by the [**Microsoft documentation**](https://learn.microsoft.com/en-us/office/dev/add-ins/outlook/implement-sso-in-outlook-add-in). ## Convert a Rest API ID to an Immutable Graph API Id We are almost ready to retrieve our email content, but not quite! We must now clear the hurdle of getting your email ID in order. The ID of the email provided by the add-in is not ideal for Graph API! You get the ID of the email in your JavaScript code like this: office.context.mailbox.item.itemId The ID returned by this process is invalid for Graph API as it has been encoded using a slightly different Base64 mechanism. To make it valid for use with Graph API, you can either fix it yourself or use Office’s function: Office.context.mailbox.convertToRestId(…) We are still not 100% done with the ID… The Id that you receive from the Outlook add-in is not an _immutable_ ID. This means that if a user moves the email between folders in Outlook (for example), a new ID will be generated for this email. To combat this problem, there are two steps you should take in your server-side code: 1. **Tell Graph API to use only** [**immutable IDs**](https://learn.microsoft.com/en-us/graph/outlook-immutable-id) 2. **Convert the Outlook ID to an immutable ID** Telling Graph API to use only immutable IDs involves adding a header to every request. If you’re using the recommended C# SDK, the easiest way to do this is when you create the client: HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Add("Prefer", "IdType=\"ImmutableId\""); return new GraphServiceClient(client); To convert the Outlook transient ID to an immutable API, you would use the handy Graph API provided by Microsoft: await graphClient.Me.TranslateExchangeIds.PostAsync( new TranslateExchangeIdsPostRequestBody { InputIds = new List { graphEmailId }, TargetIdType = ExchangeIdFormat.RestImmutableEntryId, SourceIdType = ExchangeIdFormat.RestId }); ## Access Email Content Utilise the Microsoft Graph API to retrieve the content of the currently open email. Extract relevant information such as sender details, subject, and body text. This is the easy bit. To copy the email (e.g. as an .eml file) to your CRM system, we only have one hoop to jump through! You must make an API call like this: await graphClient.Me.Messages[messageId].Content.GetAsync()); The ”messageId” used here is the immutable ID explained above. This API call will return a stream. The stream contains the raw bytes of the MIME content of the email (effectively, the .eml file that we are looking for). ## Connect to CRM System Integrate with the CRM system using its API. Retrieve access tokens or API keys for authentication and establish a connection to enable data transfer. This is your system. You know what you are doing! Consider how your user will log into the add-in. This can be complex if you have not implemented OAuth in your core CRM system. Our only special note is that Safari (and the associated WebView control) on MacOS has a very aggressive approach to security and third-party cookies. This is called “Intelligent Tracking Prevention” by Apple. As an add-in is presented as running in an MS Office iFrame in web clients, it can be very difficult to get authentication to work if your authentication system relies on cookies! ## Create CRM Record Use the information obtained from the email to create a new record in the CRM system. This involves mapping email fields to the corresponding CRM fields associating the communication with the relevant contact or account. That’s the hard bit over! All that’s left now is dealing with any user errors, testing, deployment and getting approval from Microsoft. As a reminder, this is the second of a three-part series; you can find parts one and three below. * **[Part One - Enhancing CRM Integration: Building an MS Outlook Add-In with the Microsoft Graph API](/building-ms-outlook-add-in-with-microsoft-graph-api/)** * **[Part Three – Testing and Approval](/testing-and-approval-for-building-an-ms-outlook-add-in/)** If you are interested in working with [**McKenna Consultants**](/about/) on your Outlook add-in and CRM integration project, please [**get in touch**](/contact/) with us today. --- # Enhancing CRM Integration: Building an MS Outlook Add-In with the Microsoft Graph API **Canonical URL:** https://www.mckennaconsultants.com/building-ms-outlook-add-in-with-microsoft-graph-api/ **Author:** Nick McKenna **Published:** 5 December 2023 **Category:** Microsoft Office Add-In Developer In these articles, I will focus on integrating an [**Outlook add-in**](/what-are-microsoft-outlook-add-ins-how-do-they-work/) with a CRM system using the Graph API. The task we are aiming to complete is being able to save an email (as an EML file) from a user’s inbox into a CRM system (or any other system for that matter!) via an Outlook add-in. Writing an Outlook add-in combined with the Graph API that performs this task is far more complex than one would expect! This article is a technical primer on this and contains links to detailed documentation from Microsoft. It is also the first of a three-part series; you can find parts two and three below. * **[Part Two - Building an Add-In with the Microsoft Graph API](/process-of-building-an-ms-outlook-add-in-with-microsoft-graph-api/)** * **[Part Three – Testing and Approval](/testing-and-approval-for-building-an-ms-outlook-add-in/)** How Can CRM Integration Help My Business? ----------------------------------------- As technology advances, leveraging powerful APIs like Microsoft Graph allows developers to create tailored solutions that meet the evolving needs of modern businesses. [**Integrating Microsoft Office applications**](/cspp-wopi-cloud-storage-partner-program/) with CRM systems through the Microsoft Graph API opens up new possibilities for businesses seeking enhanced efficiency and data management. By building a custom add-in that seamlessly copies emails to a CRM system, organisations can ensure a more cohesive approach to customer interactions. ## Understanding Add-Ins and Their Limitations Add-ins are intended to provide small chunks of functionality embedded inside a Microsoft Office application (Outlook, Word, Excel, etc). As such, add-ins provide limited access to a user’s M365 / Outlook.com mailbox. For example, an add-in cannot produce an email's .eml (full MIME) content nor provide access to the bytes of files attached to the email. Fortunately, Microsoft provides a method for an add-in to access this information via the Graph API. Add-ins are “front-end” components in that they are composed of HTML, CSS, and JavaScript and run in a web viewer component (or iFrame) inside MS Office applications. ## Understanding the Microsoft Graph API The Microsoft Graph API is a comprehensive platform that allows developers to access a wide range of Microsoft 365 services. It provides a unified endpoint to interact with data from Office 365, including emails, calendars, contacts, and more. Using the Microsoft Graph API, we can build a robust add-in that connects Microsoft Office applications, specifically Outlook, with CRM systems. In this case, we will look at creating an add-in with a “back-end” API that uses the Microsoft Graph API to access more details than are available in the add-in alone. Generally, your Graph API code will run on the server-side and be written in a language like C#. So, your components will be:
Component Location Example Languages
Add-in Client-side HTML, CSS, JavaScript, typescript
Back-End Server-side C#, Java, Node, Python etc
Graph API Hosted by Microsoft Either an SDK or raw HTTP calls
Microsoft provides [**Graph SDKs**](https://learn.microsoft.com/en-us/graph/sdks/sdks-overview) for some popular programming languages: You can also call the Graph API HTTP endpoints yourself, although you must implement your own retry logic (e.g., Polly). Programming with the Graph API is reasonably well-documented. For example, an API call to retrieve a user’s messages from their inbox would look like this HTTP GET: **https://graph.microsoft.com/v1.0/me/messages** If you want to experiment with Graph API, [**try out the Graph API explorer**](https://developer.microsoft.com/en-us/graph/graph-explorer) and explore its capabilities. **_Top Tip!_** Don’t mess around with the Graph API on your real email account! Instead, [**sign up for free**](https://developer.microsoft.com/en-us/microsoft-365/dev-program) for the Microsoft Office Developer program. With this free-of-charge platform, you get 50 enterprise users for test and development purposes. ## Setting Up the Development Environment To get started, ensure that you have a development environment ready. Install Visual Studio or Visual Studio Code, and create a new Office add-ins project. Familiarise yourself with the Microsoft Graph API documentation to understand the available endpoints and authentication mechanisms. We generally recommend using the following stack for the smoothest development experience:
Component Technology
Front End HTML
CSS
JavaScript
Visual Studio Code
Yeoman Generator (use “Office Add-in Task Pane project supporting single sign-on”
Server-Side Visual Studio Pro / Enterprise
.Net 8 (or the latest LTS release)
Asp.Net Code
C#
Graph API C# SDK
## Initialise the Project Start by creating a new Office add-in project and configuring it for Outlook. This will provide the foundation for your integration. As mentioned later on, use the [**Yeoman generator**](https://learn.microsoft.com/en-us/office/dev/add-ins/develop/yeoman-generator-overview) for this. Use the “Office Add-in Task Pane project supporting single sign-on” option and pick your preferred language, such as JavaScript. Initialising the server-side is as easy as picking your preferred Visual Studio web API template. Install Graph API via Nuget: dotnet add package Microsoft.Graph When implementing this kind of structure, we recommend creating a “back end for the front end” (BFF) for the add-in on the server-side. This provides a clean separation between your core CRM and add-in systems. So, in my recommendation, the add-in consists of a client-side component (in JavaScript) and a server-side component (in C# or your preferred server-side tech stack). **_Top Tip!_** Graph API uses an access\_token (provided by an OAuth flow) to access resources. You should not implement client-side (JavaScript) code directly accessing Graph API. Always do this securely on your server-side and [**pass the access token to the server-side code**](https://learn.microsoft.com/en-us/office/dev/add-ins/develop/sso-in-office-add-ins#pass-the-access-token-to-server-side-code). As a reminder, this is the first of a three-part series; you can find parts two and three below. * **[Part Two -Building an Add-In with the Microsoft Graph API](/process-of-building-an-ms-outlook-add-in-with-microsoft-graph-api/)** * **[Part Three – Testing and Approval](/testing-and-approval-for-building-an-ms-outlook-add-in/)** If you are interested in working with [**McKenna Consultants**](/about/) on your Outlook add-in and CRM integration project, please [**get in touch**](/contact/) with us today. --- # Integrate WOPI with your Microsoft Cloud Storage Partner Program **Canonical URL:** https://www.mckennaconsultants.com/integrate-wopi-with-ms-cspp/ **Author:** Nick McKenna **Published:** 28 November 2023 **Category:** CSPP WOPI Implementing [WOPI](/what-is-wopi/) with the [Cloud Storage Partner Program](/what-is-the-cloud-storage-partner-program-plus/) may seem daunting at first. One of the key mistakes we see being made is a failure to prepare adequately before commencing programming. A [WOPI integration](/cspp-wopi-cloud-storage-partner-program/) with your system will likely be very different from any other integration you have attempted in the past. Therefore, to clarify things and help you prepare, we’ve created this brief guide to getting started with WOPI regarding your Office 365 Cloud Storage Partner Program (CSPP). Cloud Storage Partner Program ----------------------------- The Office 365 Cloud Storage Partner Program offers WOPI, where you can [embed Microsoft Office in a web app](/using-wopi-to-embed-microsoft-office/), integrating Microsoft’s power with your cloud-based storage solution. Even better, this can all be done with minimal effort and in little time. By utilising WOPI, CSPP enables you to open your Office 365 files from your storage solution, providing direct access to a whole host of advantages that Excel, Word, and PowerPoint offer. To extend your WOPI capability in your [web application](/app-development-services/web-application-development/), consider accessing more special features with the [Cloud Storage Partner Program Plus](/what-is-the-cloud-storage-partner-program-plus/). ## **Steps for WOPI Integration with Microsoft CSPP** ### **Step 1: Read the WOPI Documents and CSPP Program Requirements** Firstly, we recommend reading all of the [WOPI documentation](https://learn.microsoft.com/en-us/microsoft-365/cloud-storage-partner-program/online/). These documents will help you understand how to implement the WOPI protocol and how you can test this integration. Next, draw a diagram or two about how your solution will work, then re-read all of the documentation and update your diagrams. Doing this will give you a much better starting point! ### **Step 2: Create Your Microsoft Cloud Storage Partner Program To-Do List** Your to-do list should look something like this: * Implement the host page (don't forget wd\* parameters). * Implement Discovery * Get basic Validator working in the host page - do this **_before_** attempting to get Word, Excel and PowerPoint to work. This step is the biggest part of the work, so expect to spend a couple of weeks doing this. * Implement WOPI API and make validator tests pass * Get all three required editors working * Word * Excel * PowerPoint ### **Step 3: Work Out Which WOPI Operations You Would Like to Implement into the Office 365 Cloud Storage Partner Program** The exact operations you will implement will depend on your use case, but [our team](/about/) generally recommend implementing these operations: * CheckFileInfo * GetFile * PutFile * PutRelativeFile * Lock * GetLock * Unlock * UnlockAndRelock * RefreshLock * PutUserInfo You should also support extended Locks and [Proof Key](/wopi-protocol-microsoft-office-proof-key/) validation. Supporting extended Locks is straightforward and will be required further down the line. Supporting Proof Key is also recommended because it is your only method for authenticating inbound WOPI requests from Microsoft. ## **Top Tips** Below, we’ve compiled a list of our top tips concerning WOPI integration with the Microsoft Cloud Storage Partner Program. They are: * Don't use the code you found on the Internet Most of it doesn't work properly, and you won't be able to debug it when it doesn't function. Write your own code and understand how WOPI works. * **Read the documentation** Most people have problems with WOPI because they neglect to read and understand every documentation page. * **Comply with the documentation** MS will not make an exemption for you. * **Ask questions in the [CSPP Yammer Group](https://www.yammer.com/officeenterprisenda/#/threads/inGroup?type=in_group&feedId=7197423&view=all)** We've all been through the complexity of WOPI and can answer your questions (after you've read the documentation!). * **Be prepared for the complexities that come with WOPI** WOPI is not well-supported or easy to debug, so you should be prepared for this with a really good log on the server-side – check out our blog post on how to [troubleshoot WOPI API issues](/troubleshooting-wopi-api/) efficiently for more info. * **Comply with the MS UI guidelines** Most WOPI approval failures are simple errors in UI, so complying with the MS UI guidelines can help you avoid this issue. * **To minimise your problems, write your WOPI API implementation in one of these languages:** * C# / .Net Core (the simplest, quickest approach) * Java * PHP (Proof Key is hard work in PHP, but possible!) * Python The advice outlined above will make much more sense once you've read and re-read the documents and drawn relevant diagrams. While this unique type of integration can sometimes be frustrating, we’re certain you'll get there in the end. After all, WOPI is a complex beast to tame! [Reach out to us](/contact/) to discover more about the Office Cloud Storage Partner Program and how we can help you streamline your CSPP and WOPI integration today. For more information on WOPI integration and CSPP, check out our [blog](/blog/), where we cover these topics in more detail. --- # What Is Co-Sourcing in IT and Software Development? **Canonical URL:** https://www.mckennaconsultants.com/co-sourcing-app-software-development-companies/ **Author:** Nick McKenna **Published:** 15 November 2023 **Category:** Digital Transformation As the demand for data skills increases, IT co-sourcing should always be an option your business considers to achieve your company goals. Our specialist [app development teams](/about/) have a long history of working alongside existing in-house software development teams. This has allowed us to find the optimal mix of rapidly delivering value to our clients and up-skilling their staff. What is co-sourcing? -------------------- Co-sourcing is a term that refers to the approach of bringing an external service provider into an in-house department. In this situation, internal employees work alongside outsourced team members, using a combination of specialist skills to achieve business goals. The outsourced staff members may be in different offices than the in-house staff members. ## What are the benefits of co-sourcing? There are many benefits of co-sourcing and even more benefits of co-sourcing with McKenna Consultants. Take a look at how you can enhance your business with this process below. * **Co-sourcing and organisation** We offer bespoke software development services from our base in North Yorkshire. Our co-sourcing service is typically used by clients in the UK, with the aligned time zone making organising and [managing digital business transformation](/managing-digital-transformation-in-business/), product workshops, demos, and client visits much easier than an off-shoring model. Based on our extensive product development knowledge and experience, we will also give advice and guidance every step of the way, which is not usually the case with off-shoring models. We can advise you on topics you may not have considered, such as [if your business should have an app](/should-my-business-have-an-app/), and we’ll even steer you away from bad ideas! * **Co-sourcing and** **technical expertise** IT co-sourcing also gives the benefit of increased technical expertise. Our specialist team has deep knowledge of specialist areas of software development, such as [mobile app development](/app-development-services/) ([iOS](/app-development-services/apple-mobile-app-development/) / [Android](/app-development-services/)) and the [Internet Of Things](/cloud-services/internet-of-things/). Usually, our clients have a long-standing product based around older web or thick client technology that they would like to extend with a new mobile app (for Android or iOS devices). Initially, the skills of our clients’ in-house development teams will not match the necessary skills for creating a mobile app, but the business has an urgent need to have one developed. The obvious solution is to outsource the development of the product.  * **Co-sourcing and business** **capacity** In addition to providing technical skills, our clients frequently want to deploy a “ready” co-sourcing team with extensive product development experience. This can temporarily boost their in-house capacity. We can quickly and easily deploy our highly-experienced [Agile](/agile/) team, who are up to date with the latest technology. We also provide a more diverse product development experience than most clients in-house. For example, we can leverage our Agile training, coaching and consultancy skills to improve the development process for our clients and build a specific product. * **Co-sourcing and flexibility** Co-sourcing also gives flexibility for the future. From time to time, our clients independently developing their apps will return to us when they reach peak demand. We can re-deploy our team for short periods to temporarily boost development capacity, thus providing a lower-cost alternative to employing temporary workers. ## Is IT co-sourcing right for my business? When an organisation does not possess the in-house expertise to further develop their software independently, or if they are interested in a specialist feature that they haven’t worked with before, such as [WOPI integration](/cspp-wopi-cloud-storage-partner-program/), we offer the solution of working alongside our clients’ staff from day one of the product development. Embedding within our team is the optimal solution as it immerses the staff in the new technology and prevents them from being distracted by other day-to-day concerns. For example, we work with embedded team members with our clients LexisNexis and [AuthenticateIS](/project/authenticateis-mobile-app/), but remotely for clients such as 4com plc and [Howells Associates](/project/howells/). Our [case studies](/case-studies/) demonstrate that co-sourcing has always been very successful for our clients, giving them high-quality products that their technical staff understand and can further develop independently. ## What is the difference between co-sourcing and outsourcing? As mentioned above, co-sourcing is a process in which an external organisation helps internal in-house staff reach company goals. This option may appeal to companies whose IT departments need an extra hand or specialist knowledge. Co-sourcing enables your organisation to retain considerable control over day-to-day business and operates in a hybrid-like setup. On the other hand, outsourcing involves an organisation hiring an external contractor to tackle specific accounting tasks on either a contract or a request basis. Outsourcing has become increasingly frequent for companies to foster long-term relationships with third parties that optimise internal resources and align current business requirements with external resources, such as technology and people. Outsourcing is attractive to organisations that are aiming to improve their processes strategically. ## Why should you co-source with McKenna Consultants? There are typically two reasons why our clients choose to co-source with McKenna Consultants: * We have technical expertise that our clients wish to acquire * We have a capacity that our clients wish to utilise * We are experts in custom software development, along with Agile training, coaching, and consultancy. When you work with our [bespoke software development services](/all-services/), our team and yours can operate more efficiently and enjoy a more streamlined process. By choosing to co-source with McKenna Consultants, you’re choosing to elevate your current team’s technical expertise and business productivity. [Contact us](/contact/) to explore how we can boost your software development and help your business flourish in the digital world, or check out [our blog](/blog/) for more specialised information. --- # Microservices and Microservice Architecture Explained **Canonical URL:** https://www.mckennaconsultants.com/microservices-microservice-architecture-explained/ **Author:** Nick McKenna **Published:** 14 September 2023 **Category:** Systems Integration If your system still runs with traditional monolithic architecture, you may have started looking to make a change. Everybody seems to be doing microservices these days, so what are the differences between a monolithic system vs microservices (or microservice architecture), and how do these differences affect your business? Monolithic Architecture vs Microservices Architecture ----------------------------------------------------- ## What Is Monolithic Architecture? In the good old days (not so long ago), computer systems were developed in large units of deployment – this is what is known as monolithic architecture. A web-based system may have been developed as a website with lots of code that directly read from and wrote to many databases. Many well-known brands started out their online presence using monolithic architecture, including Netflix and Amazon. ### Advantages of Monolithic Architecture * Deploying it seemed to be pretty simple; it was a single, large web site that needed to be installed on a target server. Other systems (batch systems, [mobile apps](/app-development-services/) etc) were developed in the same way. * Having all of the code in one place meant debugging is slightly easier, as it’s easier to follow a request to pinpoint a problem. * Monolithic architecture can be scaled horizontally by simply creating copies of the code and leveraging a load balancer to ensure functionality. ### Disadvantages of Monolithic Architecture * The code powering monolithic architecture in applications tended to be tightly coupled. This means that individual pieces of code were hard to re-use elsewhere, which led to many developers having to maintain multiple redundant copies of similar code. This was frustrating and expensive. * Testing effort was duplicated between systems that performed similar business operations. For example, a pricing system re-used (copied and pasted) between systems could only be tested as part of testing the system as a whole. So, if pricing changes were made, every system that included a variant of the pricing logic would need to be tested. * Deployment proved to be harder than expected. Although deploying a single large system sounded easy, it meant that updates to very small parts of the overall system required the entire system to be redeployed. This meant downtime for unrelated aspects of the system, which was inconvenient for users. * A small error in one small area of the web site programming could bring down the whole web site. * The tight coupling of code and creation of a single, big system meant that entire business operations and capabilities were copied and pasted between applications, rather than being easily re-usable between applications. * Code ownership was frequently unclear between software development teams. This meant that problems went unaddressed and potential improvements were overlooked. ## What Is Microservices Architecture? Microservices are independently deployable, small, business focussed services that are easy to maintain and test, loosely coupled to other systems and components and (typically) owned by a specific development team. Instead of deploying a single large system, a microservices architecture deploys many loosely coupled components (called services). These services typically communicate via a dynamic binding mechanism such as HTTPS, Enterprise Service Bus, TCP/IP or similar mechanism. Microservices can be used in the development of composable architecture to create a modular and flexible solution – you can learn more about the [architecture of a composable eCommerce store](/b2b-ecommerce/) in our [blog](/blog/). ### Advantages of Microservices Architecture A microservice architecture creates an eco-system in which components are loosely coupled, independently deployable, easy to test, focused on business objectives and owned by a specific team. * A small change requires re-deploying only the affected service, thus reducing downtime and the technical impact of the change. This is a key advantage of microservices over monolithic architecture, as reduced downtime means a more efficient and effective flow of work, particularly where issues are minor. * Microservices are focused around business operations rather than technology. This means that business functions can be re-used across different computer systems without copying and pasting code everywhere. Referring back to the example above, we could create and deploy a pricing service that other systems will access over HTTPS (e.g. a RESTful web service). When the pricing mechanism changes, ONLY this service will need to be changed. * Testing is more streamlined. When the pricing mechanism changes, testing can be localised to only the pricing service (providing that the interface to the pricing service has not changed). This yields shorter overall lead times and lower costs. * Individual services within a microservice architecture are frequently owned by a specific team (this is an example of [Conway’s Law](https://en.wikipedia.org/wiki/Conway%27s_law)). This means that there is clear overall responsibility for each service and each service gets the care and attention it needs to remain robust and secure. ### Disadvantages of Microservices Architecture * Microservices architecture comes with a more complex deployment process, as tens of services may need deploying rather than just one big component. * With more teams involved in the creation, maintenance and running of microservices, the software will require proper management, or it can become difficult to handle. If you would like to discuss whether microservices or monothlithic architecture are the right fit for your business, or explore any of our other bespoke software development services, please [get in touch](/contact/) with McKenna Consultants today. --- # What Is WOPI? Exploring Web Application Open Platform Interface **Canonical URL:** https://www.mckennaconsultants.com/what-is-wopi/ **Author:** Nick McKenna **Published:** 14 July 2023 **Category:** CSPP WOPI In today's interconnected world, seamless collaboration and document sharing are vital for productivity and efficiency in the workplace. One powerful solution that has revolutionised the way we work with office documents is the Web Application Open Platform Interface protocol, otherwise known as WOPI. [WOPI integration](/cspp-wopi-cloud-storage-partner-program/) enables users to edit, view, and share office files directly within [web applications](/app-development-services/web-application-development/), creating a unified and streamlined experience. In this article, we will delve into the world of WOPI and explore its benefits, features, and its impact on modern work environments. ## What Is WOPI? The Web Application Open Platform Interface (WOPI) is an open standard protocol developed by Microsoft that allows web-based applications to integrate with Office Online server products. WOPI enables seamless editing, viewing, and collaboration on Office documents such as Word, Excel, and PowerPoint, all within a web browser. See our [blog](/blog/) to learn more about [using WOPI to embed Microsoft Office in a web app](/using-wopi-to-embed-microsoft-office/). ### Key Benefits of WOPI **Enhanced Collaboration** WOPI facilitates real-time collaboration on office documents, enabling multiple users to edit and review files simultaneously. This collaborative environment promotes team productivity and eliminates the need for constant file downloads and uploads. **Seamless Integration** With WOPI, web applications can integrate with Office Online server products, offering users a consistent and familiar experience across different platforms and devices. Without the need to switch between different software applications, your team can work more efficiently. **Version Control and Document Management** WOPI provides built-in version control capabilities, ensuring that changes made to a document are tracked and can be easily reverted if needed. It also enables efficient document management, including features such as file locking, permissions, and access control. ### How Can You Use WOPI? *Viewing and Editing* WOPI allows users to view and edit Office documents directly within a web application. Users can make changes, format text, add images, create charts, and perform various other operations, all without leaving the web interface. *Co-Authoring* WOPI supports real-time co-authoring, enabling multiple users to collaborate on a document simultaneously. This feature promotes efficient teamwork, as team members can see each other's changes in real-time and provide instant feedback. *Integration with External Services* WOPI supports integration with external services, enabling users to leverage additional functionalities. This can include accessing third-party cloud storage providers, implementing custom workflows, or integrating with other business applications. [WOPI integration](/cspp-wopi-cloud-storage-partner-program/) can be a complex process. McKenna Consultants are one of the only companies worldwide offering specialist WOPI integration services, and we can either work independently or alongside your existing technical development team to create solutions that work for your business. If you would like to learn more or discuss your business’s needs, please [get in touch with us](/contact/) today. Alternatively, take a look at our blog for more information, including about the [Cloud Storage Partner Program Plus (CSPP)](/what-is-the-cloud-storage-partner-program-plus/) and [common problems with implementing a WOPI API and host](/troubleshooting-wopi-api/). --- # Architecture Of A Composable eCommerce Store Using Elastic Path **Canonical URL:** https://www.mckennaconsultants.com/composable-ecommerce-and-elastic-path/ **Author:** Nick McKenna **Published:** 25 May 2023 **Category:** B2B eCommerce ## What Is Composable Architecture? Composable architecture is a modern approach to software architecture that works on the principle of selecting the finest eCommerce components and combining them through a tailored, customised application. This application is constructed with the specific purpose of satisfying unique business needs. It extends the concept of microservice-based technology, where loosely-coupled services from different vendors can be combined to create cohesive eCommerce solutions. For example, we could take cloud-based systems and combine them into a single eCommerce web store. These systems might include: - Elastic Path eCommerce - Fredhopper Search - [Auth0](/integrating-auth0-with-azure-active-directory/) for identity management - Tacton CPQ - An ERP system for pricing and order placement - GoSquared Forms - Google Analytics - InRiver PIM By adopting this architecture, businesses are no longer constrained to monolithic application suites tied to licensing restrictions. Instead, they can utilise modular technology from multiple providers. This approach, also called “Packaged Business Capability” (PBC), is flexible, adaptable, and enables improved customer experiences. For more detail, visit our [**blog**](/blog/). ## Microservices and PBCs Microservices and PBCs both emphasise modularity and flexibility. ### Microservices Microservices break down applications into independent smaller services that communicate via APIs. Each service performs a specific function, can be developed, deployed, and scaled independently, allowing for flexibility, agility, easier maintenance, and scaling. ### Packaged Business Capabilities (PBCs) PBCs are pre-built, reusable software components representing specific business functions (e.g., inventory or CRM). They are designed for easy integration and can be customised to suit bespoke needs. PBCs allow businesses to select the best technology from multiple vendors rather than being tied to a single suite. Microservices offer independence through a technical approach; PBCs focus on reusability from a business perspective. Combined, they create efficient composable eCommerce solutions. ## Why Use Composable eCommerce? ### Benefits - **Flexibility** – Choose only the components your business needs to create a tailored solution. - **Scalability** – Easily scale up or down to match demand without paying for unused resources. - **Speed** – Use pre-built components to innovate faster and reduce development costs. - **Cost-effectiveness** – Pay only for required components, optimising resource allocation. - **Integration** – Integrate with existing and future systems without large-scale changes. - **Personalisation** – Gather and use customer data to create tailored experiences. - **Efficiency** – Avoid system-wide risk from upgrades, improving resilience and stability. Modern businesses face diverse, rapidly changing customer demands and fierce global competition. Composable eCommerce provides the agility needed to stay competitive. #### Composable Architecture vs Monolithic Architecture Monolithic systems bundle all functionality into a single application, making change slow, costly, and risky. Composable eCommerce breaks solutions into independent components that can be modified or replaced without affecting the whole. This is especially valuable in B2B eCommerce, reducing development costs via pre-built components while offering customisation. Composable solutions balance complexity and agility, keeping businesses in the “Goldilocks Zone” of software design. ### Using Elastic Path We use Elastic Path Commerce Cloud to provide a [**cloud-based**](/cloud-services/cloud-app-integration/) API and state management for core eCommerce functions (baskets, checkout, payments). It integrates with existing systems while allowing eCommerce strategy to evolve. Elastic Path supplies the microservices but not the front-end UI. ### The Front End We build the front end in React using Gatsby, which generates pages at build time for high speed, security, and SEO performance. This avoids slow runtime API calls and supports integration with platforms like Shopify and Magento. #### Back End For The Front End (BFF) Some data (search, pricing, availability) is retrieved at runtime via secure APIs. To protect credentials, we use a server-side BFF that the front end calls. The BFF communicates with microservices securely, adding minimal latency and ensuring cookie/domain compatibility. ### Graceful Fallback During Downtime If a microservice (e.g., ERP) is slow or offline, the BFF times out quickly and returns an “unknown” status with a friendly message. This keeps the site fast and responsive even when some services degrade. ### No Database Our solution operates without a customer database, reducing support needs: - Elastic Path handles baskets/accounts - ERP stores orders - Users managed via [Auth0](/integrating-auth0-with-azure-active-directory/) ## Conclusion This has been a quick overview of composable eCommerce benefits and structure. At McKenna Consultants, we’ve delivered bespoke B2B composable architecture solutions tailored to client needs. Learn more about [**software integration**](/digital-development/software-integration/) or [**digital development**](/digital-development/), or [**contact us**](/contact/) to discuss your project. --- # Using MVPs in Software Development **Canonical URL:** https://www.mckennaconsultants.com/mvps-in-software-development/ **Author:** Nick McKenna **Published:** 19 April 2023 **Category:** Microsoft Office Add-In Developer ## MVP Meaning in Software MVP stands for Minimum Viable Product. It refers to a piece of software developed with just enough features to be functional, designed to attract early adopters, test ideas and gather critical market feedback. ### Why Use an MVP? The primary reason that an MVP is used in software development is to receive crucial feedback from the product’s end users. They might pick up on usability issues that you’ve missed, or indicate if your product should be supplemented with other services. Other benefits of MVPs include: - **Validation** – MVPs can make or break your business idea. If your product gains traction in its MVP form, you know you’ve found an idea that your demographic can get behind. - **Cost-effective** – developing an MVP is significantly cheaper than a full product, giving you some leeway in funds should your project need to be slightly tweaked or reangled to be successful. - **Rapid roll-out** – similarly, as the MVP doesn’t require the development of the entire product (just one key functionality), it can be developed much more quickly and rolled out internally and to your early adopters. - **Agile process** – as MVPs rely on consumer feedback and information, they work well as part of an [**agile software development**](/agile/) style. - **Reach stakeholders** – as well as showing the validity of the product or idea (an MVP allows you to show your stakeholders that there is interest for it), you can also use your MVP to reach new stakeholders or investors. ### An MVP Is Not… #### A Proof of Concept Proof of concept is a fundamental step in creating your product or business idea – quite literally, you create a proof of concept to prove that the product is possible to create. It is typically written for the technical team or the project owners and will be very basic. #### A Prototype A prototype is a model of how the final product will look and act – it simply represents the product. You might create a prototype to explain the product to stakeholders, or to get a better feel for what it will be like to use the product. #### A Beta Release Once your product has been fully developed, you may opt to do a beta release – typically, this release will go to a large but exclusive group of customers to use and test. It is much more polished than an MVP, and is very nearly ready to be released to the public. ### Creating an MVP 1. **Identify your goals and create a proof of concept** So, you have an idea for a new product. The very first thing you need to do is review your goals for this product – what will it do, who will use it and what pain points does it target? You should also create a proof of concept – it doesn’t have to be perfect and there is no need to worry about UX at this point, but you should be able to prove that your product can be implemented. If it can’t, it’s back to the drawing board! 2. **Market research** If you’re putting a new product into the market, then you have to know that market inside and out. What do your users need from your product? What types of features do they like and dislike? Review existing similar products that are available to get an idea of what you might incorporate or avoid. 3. **Plan out the user journey** It’s important to know how the user will use and navigate your product, as this will give you an idea of what key feature your MVP software should test, as well as which core functionalities will be required to ensure your MVP will be usable. 4. **Build a prototype** Prototypes are the best way to represent the software before creating it. They allow you to run your product past your investors or stakeholders in more detail, and may help you see any glaring errors or things you may have overlooked. 5. **Choose which features are imperative to the success of your MVP** By this point, you should have a good understanding of what features you will need to incorporate into your MVP. This stage is your chance to finalise that list before you begin developing the MVP. 6. **Build your MVP** Finally, you can actually start building your MVP software. As it’s a very stripped-back version of your final product, it will typically be much quicker to develop, meaning you’ll be able to roll it out to your users much sooner. ### Examples of Software MVPs Some of the biggest brand names started out by testing their ideas with MVPs, including Airbnb and Uber. #### Airbnb Airbnb’s MVP started out as a way of simply testing an idea. In 2007, two guys in their mid-twenties, struggling to pay their rent in San Francisco, noticed that a nearby conference had many attendees struggling to find sufficient accommodation in the area. They blew up some air beds and launched their MVP, a website called ‘Air Bed & Breakfast’. As an MVP, the software only targeted one location and one demographic – those visiting San Francisco for conferences. The final product, of course, has gone global and now offers a variety of locations, date options and other features. Over the last year to March 2023, Airbnb has enjoyed $8.4b in revenue – not bad for an air mattress in their living room! #### Uber When Uber launched its MVP app in 2009, it had one simple feature – tell Uber (or ubercab, as it was then known) your location, and they would dispatch a driver. Like Airbnb, the simplicity gave the founders a chance to test their idea and gather valuable market feedback. Now, Uber offers a range of other features, including real-time tracking, fare-splitting and a driver/passenger reviewing system, and over the last year alone has seen over $31b in revenue. While we can’t guarantee revenue in the billions, we hope you can see just how valuable an MVP is in software development. Whether you have a full business behind your software or just three airbeds on your living room floor, MVP software allows you to validate your ideas and align your products with your users’ goals and pain points. If you would like to learn more about digital software and [**app development**](/app-development-services/), please contact us at McKenna Consultants today. We provide bespoke [**software development services**](/all-services/) and have over 15 years of industry experience. Learn more [**about us**](/about/), or check out our [**blog**](/blog/) on all things digital. --- # Team Roles For Building a Composable B2B eCommerce Online Store **Canonical URL:** https://www.mckennaconsultants.com/team-roles-for-composable-ecommerce-online-store/ **Author:** Nick McKenna **Published:** 24 March 2023 **Category:** B2B eCommerce Once you’ve taken the decision to build your new B2B web store using modern, [composable eCommerce](/b2b-ecommerce/composable-architecture/) technology, you will need to consider your team structure to ensure that it is optimal. I’ll assume here that you have delegated the technical build portion of the project to a software company like [McKenna Consultants](/)! Technical elements aside, it’s important to define the other team roles to ensure that the project runs smoothly. These are typically the roles you will want to fill in-house: - Product Owner - Technical Specialists - Business Specialists - Stakeholders - Sponsor Let’s take a look in more detail. ## In-House Team Roles ### The Product Owner The Product Owner is the single person with the greatest ability to affect the outcome of the new web store. This person brings together the different disciplines of technology, business processes, eCommerce vision and management. We usually find that someone with some knowledge in each of these areas, along with the ability to bring people together to work towards a common goal, is highly effective. The Product Owner is responsible for: - Being the voice of the customer - Deciding what features the eCommerce store will have - Selecting major technical components - Managing the internal stakeholders and sponsors - Organising assistance from internal technical and business specialists Of these, the most surprising is the selection of major technical components. In reality we, as the developers, have a lot of influence over these decisions. We make strong recommendations, but as the financial impacts of these decisions can be significant (e.g. purchasing an [eCommerce platform such as Elastic Path](/composable-ecommerce-and-elastic-path/) or a CPQ system such as Tacton), the final decision needs to rest with the Product Owner. ### The Technical and Business Specialists B2B eCommerce is complex. There are often multiple legal jurisdictions, business divisions and IT systems involved in creating the customer experience. Building the store requires work and input from in-house specialists in these areas. For example, if you trade in the UK, Europe, the Americas, the Middle East and Far East, you are likely to have significant differences in trading practices. To translate those practices into a great online experience will require local business experts. Similarly, your different vertical business units may have disparate computer systems. We most commonly see this in a variety of ERP systems around the globe for a single customer. Each ERP system will require assistance from the local technical team to help with the integration of orders, pricing, availability and other factors into the web store. ### Stakeholders And the Sponsor These people will mostly be hands-off, but interested in the work that is going on to create the new B2B eCommerce platform. Whilst some stakeholders will come and go throughout the build of the web store, some will be a permanent feature. Setting up a review for an hour every couple of weeks can go a very long way towards keeping these key people happy and involved in the development. Their sage advice could be crucial at any point! If you would like to learn more about the different roles required to build a composable eCommerce online store, or if you would like to enlist McKenna Consultants’ help with successful [software integration](/digital-development/systems-integration-services/), please don’t hesitate to [contact us](/contact/) today. --- # CSPP WOPI Login Update **Canonical URL:** https://www.mckennaconsultants.com/cspp-wopi-login-update/ **Author:** Nick McKenna **Published:** 20 February 2023 **Category:** CSPP WOPI Last year, Microsoft announced that they were removing the login box from the “business flow” for [**Cloud Storage Partner Program (CSPP)**](/what-is-the-cloud-storage-partner-program-plus/) WOPI. Over the course of a few weeks, the login box slowly disappeared from all the test and production [**WOPI**](/cspp-wopi-cloud-storage-partner-program/) nodes, and now it is nowhere to be seen! ## What Was The Login Box For? The login box existed to confirm that business users of the WOPI editor had a valid Microsoft 365 business license when editing Microsoft Office documents. This is a requirement of the CSPP. Users would typically only see the login box once as long as you implemented the UserInfo mechanism in your WOPI API. ### Why Did Microsoft Remove The Login Box? It’s a bit of a mystery! No specific explanation was given. It’s just gone! ## Does This Mean That We Don’t Need To Implement The Business Flow Anymore? No, Microsoft were clear that you MUST still [**implement the business flow**](https://learn.microsoft.com/en-us/microsoft-365/cloud-storage-partner-program/online/scenarios/business). As far as we can tell, they are no longer independently verifying the existence of a Microsoft365 account, but your business users are still required to have such an account. Strangely, the documentation still refers to a “subscription check”, although this could be out of date documentation rather than a statement of what is currently happening. However, you should still implement the business flow, as Microsoft may decide to reinstate the login box in future. ### UserInfo The lack of a login box also calls into question the use of the UserInfo feature of WOPI. This feature specifically exists to reduce the number of times that a user is asked to login. As the user is never asked to login, does it still serve a useful purpose? As far as we can tell, no, it is now redundant. However, we still recommend implementing it as it is still part of the WOPI specification (albeit optional) and it is very simple and quick to implement. This also protects you should Microsoft decide to reinstate the login box. ### The Homepage Setting The final consideration here is the “homepage” setting. The homepage documentation outlines only one scenario where this setting is used: when redirecting a user back to your application after a failed Microsoft 365 subscription check. As it does not appear that this check is being carried out, we don’t believe that your users will ever have a way to see this page. However, this homepage setting is still a requirement for CSPP WOPI and so you must still provide this homepage URL when going through CSPP verification. Remember: Microsoft may reinstate the login box at any time! As we do not know why they removed it, there is no guarantee that they won’t bring it back. If you would like to learn more about the CSPP, such as how it can help you [**troubleshoot WOPI API**](/troubleshooting-wopi-api/), please check out our [**blog**](/blog/) or [**contact us today**](/contact/). --- # Add-Ins and CSPP WOPI Changes **Canonical URL:** https://www.mckennaconsultants.com/add-ins-and-cspp-wopi-changes/ **Author:** Nick McKenna **Published:** 27 January 2023 **Category:** CSPP WOPI In December 2022, many WOPI implementors around the world who were also using [**Microsoft Add-Ins**](/what-are-microsoft-outlook-add-ins-how-do-they-work/) in their [**WOPI implementation**](/cspp-wopi-cloud-storage-partner-program/) suddenly started experiencing errors, and their Add-Ins would not load. Over the course of a couple of weeks, it transpired that a security update had occurred at Microsoft that had altered how some Add-In / WOPI implementations worked. Microsoft did not announce or explain the changes, and as such we have only been able to infer from behaviour what the changes were. ## How Should I Modify My Add-In Implementation? ### JSON Objects The main issue users have encountered is that JSON objects are now no longer supported for the “Host_IsFrameTrusted” Post Message. The content of this message specifically MUST now be a string. Previously [**both JSON objects and strings were accepted**](https://learn.microsoft.com/en-us/microsoft-365/cloud-storage-partner-program/online/scenarios/postmessage). So, if your post message code previously looked like this: ```javascript // Post back Host_IsFrameTrusted var msg = { "MessageId": "Host_IsFrameTrusted", "SendTime": Date.now(), "Values": { "isTopFrameTrusted": true // Hack: accept anything - should really check that window.location is valid } }; // INCORRECT NOW!!! e.source.postMessage(msg, e.origin); ``` It must now look like this: ```javascript // Post back Host_IsFrameTrusted var msg = { "MessageId": "Host_IsFrameTrusted", "SendTime": Date.now(), "Values": { "isTopFrameTrusted": true // Hack: accept anything - should really check that window.location is valid } }; // CORRECT!!! e.source.postMessage(JSON.stringify(msg), e.origin); ``` ### PostMessageOrigin It also transpired that the Microsoft side of WOPI was not validating the “PostMessageOrigin” portion of the CheckFileInfo response in relation to Post messages. Microsoft are now validating this. This also broke some implementations that did not have their PostMessageOrigin quite right! The PostMessageOrigin must match FQDN and scheme in the URL in the address bar of the web page. For example, a document being edited at: ``` https://mygreatapp.mydomain.com/editor/wopi?myfileid=12345678 ``` should have a PostMessageOrigin of: ``` https://mygreatapp.mydomain.com ``` ### targetOrigin Finally, the general WOPI instructions for Post Message say that the targetOrigin should match your PostMessageOrigin property in your CheckFileInfo. This is incorrect for Host_IsFrameTrusted. Your targetOrigin should be `e.origin` where `e` is the App_IsFrameTrusted event that you are replying to. --- ## Documentation Errors The new Add-In instructions issued by Microsoft (which are only available to [**CSPP**](/what-is-the-cloud-storage-partner-program-plus/) members via the Yammer group) contain a small, but important error. In one place, they indicate that the format for host_install_addins (on your hostpage) is: ``` { {addinId: "WA123456781", type: “TaskPaneApp”} } ``` This is incorrect! The correct [square bracket] format is: ``` [ {addinId: "WA123456781", type: “TaskPaneApp”} ] ``` The instructions also incorrectly indicate that you can put a space in your Add-In id like this: ``` [{"addinId":"WA 104380121 ","type":"TaskPaneApp"}] ``` This should read: ``` [{"addinId":"WA104380121 ","type":"TaskPaneApp"}] ``` --- If your [**WOPI integration**](/cspp-wopi-cloud-storage-partner-program/) has been affected by these changes at Microsoft and you would like any further assistance, please do not hesitate to [**contact us**](/contact/) at McKenna Consultants. For [**WOPI API troubleshooting**](/troubleshooting-wopi-api/) tips and other advice, take a look at our [**blog**](/blog/). --- # What Is The Cloud Storage Partner Program Plus? **Canonical URL:** https://www.mckennaconsultants.com/what-is-the-cloud-storage-partner-program-plus/ **Author:** Nick McKenna **Published:** 20 July 2022 **Category:** CSPP WOPI The Cloud Storage Partner Program Plus (CSPP Plus) is an advanced program for larger organisations to [implement the WOPI protocol](/cspp-wopi-cloud-storage-partner-program/). The basic Cloud Storage Partner Program provides a method (WOPI) by which third-party software vendors can [incorporate Microsoft Office into their web-based applications](/using-wopi-to-embed-microsoft-office/). CSPP Plus extends this basic WOPI capability with a range of new features. ## New Features of the Cloud Storage Partner Program Plus ### Geo-Fencing Geo-Fencing is the ability to restrict the storage of WOPI files to specific regional data centres. In standard WOPI, the Office documents being edited can be hosted anywhere in the world, and the host cannot control this. With CSPP Plus, the host can specify per file (using the new ComplianceDomainPrefix property of CheckFileInfo) which single region the file should be stored in by Microsoft. The available regions are: * United Arab Emirates * Australia * Brazil * Canada * Switzerland * Germany * Europe * France * India * Japan * Korea * Norway * Singapore * United Kingdom * United States of America * South Africa This will be a very useful feature for organisations implementing WOPI with specific compliance requirements (e.g. healthcare data) that prevent that data from leaving the country. ### Desktop MS Office Integration A huge new feature in CSPP Plus is that organisations can now add their own storage location to the “backstage” area (the bit you see when you open Office without a document) of MS Office and allow users to open Office documents from there using the WOPI protocol. It is unclear from the early documentation how this will integrate with the web editing experience, but we are hopeful that there could be a seamless editing experience. ### Optimised File Transfer CSPP Plus includes an extensive new file transfer system that will allow larger Office documents to be transferred in “chunks”. The new mechanism is complex and not for the fainthearted, but it will allow the WOPI client at the Microsoft side to request specific chunks of a file rather than the whole file to keep things in sync. This will be particularly important given Microsoft’s new support for larger Office document file sizes. ### Additional Locking and Versioning System The features explained here all introduce newer, more complex locking requirements. These are in addition to the standard CSPP Locks and Versions. A new Sequence number is required for CSPP Plus files, and a new Coauth Lock system has been created too. ## Additional Program Requirements CSPP Plus is a program for large organisations. Microsoft has not yet publicly released all of the entry requirements for the program, but we do know the minimum requirements: * You must already be a member of CSPP * You must pay a non-refundable entry fee (amount undisclosed) * You must be properly insured, including: + Commercial General Liability + Privacy And Cyber Security + Professional Liability + Errors And Omissions Insurance + Works Compensation + Employer’s Liability * ISO-27001 Certification * Microsoft 365 App Certification Most organisations considering CSPP Plus will have no problems with the requirements above, other than possibly the ISO-27001 certification and the entry fee if it is significant. ### Other features Other features that are included are: * Access to FedRamp * Mobile MS Office integration (planned) * Intune mobile provisioning of storage locations * Invitations to the CSPP Plus partner summit For more information on this topic, including [troubleshooting WOPI API](/troubleshooting-wopi-api/) and [verifying WOPI protocols using proof keys](/wopi-protocol-microsoft-office-proof-key/), look at our [blog](/blog/). If you are interested in learning more about the Cloud Storage Partner Program Plus, please don’t hesitate to [get in touch](/contact/) with us at McKenna Consultants. --- # Microsoft Office Add-Ins And Internet Explorer 11 **Canonical URL:** https://www.mckennaconsultants.com/microsoft-office-add-ins-internet-explorer-11/ **Author:** Nick McKenna **Published:** 6 July 2022 **Category:** CSPP WOPI As you may be aware from the global celebrations, Microsoft brought Internet Explorer 11 to the end of its life on June 15th 2022. Well, sort of. There are exceptions, and if you have an MS Office Add-In, Internet Explorer’s end-of-life is not necessarily its true end. ## Why Are Add-Ins and Internet Explorer Linked? [Microsoft Office Add-Ins](/what-are-microsoft-outlook-add-ins-how-do-they-work/) are actually web sites with access to a specific officejs Javascript library. They are registered with Office using a manifest XML file and executed inside a frame in Office. As an Add-In is a web site, it requires a web browser to run, and this is where it gets complicated. The following table helps you understand which browser is used to run MS Office Add-Ins: | **Operating System** | **MS Office Version** | **Browser** | | | Office On The Web | Whatever browser you are running in | | MacOS | Any | Safari | | iOS | Any | Safari | | Android | Any | Chrome | | Windows 7+ | Office Standalone 2013 - 2019 (i.e. not Microsoft 365 subscription) | **Internet Explorer 11** | | Windows 10+ | Office Standalone 2021 (i.e. not Microsoft 365 subscription) | Edge | | Windows 7, 8, 10 (< v1903) | Microsoft 365 Subscription | **Internet Explorer 11** | | Windows 10 (> v1903), 11 | Microsoft 365 Subscription < 16.0.11629 | **Internet Explorer 11** | | Windows 10 (> v1903), 11 | Microsoft 365 Subscription >= 16.0.11629 | Edge | You can find the full table of [browsers used by MS Office Add Ins](https://learn.microsoft.com/en-us/office/dev/add-ins/concepts/browsers-used-by-office-web-add-ins) on Microsoft’s page. However, from this snippet, you can see that, in some circumstances, Add-Ins use Internet Explorer to render. Fortunately, at the same time that Microsoft end-of-lifed Internet Explorer 11, they also altered their AppSource (the app store for Microsoft Office Add-Ins) certification policies so that your Add-In no longer has to function with Internet Explorer for approval in the store. Microsoft asks (but does not require) that you at least get your Add-In to output a graceful failure message if it detects that it is running in Internet Explorer 11. From a practical point of view, you should still consider supporting Internet Explorer 11. We typically still support this for our Add-Ins using a combination of shims, Babel and hand-coded workarounds. The reason for continuing to support it is that many users will still use [off-the-shelf](/bespoke-software-development-off-the-shelf/) Microsoft Office rather than Microsoft 365 Office and so will see Add-Ins presented by Internet Explorer 11. We also recommend a graceful fallback approach where some features of your Add-In may not be available in Internet Explorer 11, even if the core functionality still works. To read our previous [update on MS Office Add-Ins and WOPI](/microsoft-office-add-ins-and-wopi-update/), please take a look at our [blog](/blog/). If you are interested in working with [McKenna Consultants](/) to create or maintain your Microsoft Office Add-In, please [get in touch](/contact/) with our team today. --- # Microsoft Office Add-Ins and WOPI Update **Canonical URL:** https://www.mckennaconsultants.com/microsoft-office-add-ins-and-wopi-update/ **Author:** Nick McKenna **Published:** 21 March 2022 **Category:** CSPP WOPI Since late last year, the Microsoft [**Cloud Storage Partner Program**](/what-is-the-cloud-storage-partner-program-plus/) (CSPP) has officially supported [**Microsoft Office add-ins for WOPI**](/using-wopi-to-embed-microsoft-office/). The process for [**getting an add-in working in WOPI**](/cspp-wopi-cloud-storage-partner-program/) is not as simple as getting an add-in working in standard MS Office, so this blog post will take you through the process. ## How to Use Add-Ins with WOPI 2. **Get Your Add-in Into AppSource** Microsoft only supports add-ins distributed via AppSource – other methods will not work reliably in the WOPI editor. These include: * Sideloading * Centralised deployment * Sharepoint catalogue This means that your add-in must comply with Microsoft’s [**guidelines for MS Office add-ins**](https://learn.microsoft.com/en-us/office/dev/add-ins/design/add-in-design), and you need to submit your add-in for their approval. We can help you out with add-in development and submission to Microsoft (including Enterprise submissions, which are not subject to all of Microsoft’s guidelines). Please [**get in touch**](/contact/) with our team if you would like to discuss your project. 3. **Implement The App\_IsFrameTrusted Post Message** Before Microsoft will enable add-ins for your WOPI configuration, you will need to follow the instructions on implementing the App\_IsFrameTrusted Post message and return the appropriate “Host\_IsFrameTrusted” Post message. This is a fairly trivial programming task that you should be able to accomplish quickly. You can find the official documentation on [**using PostMessage with Office Online**](https://learn.microsoft.com/en-us/microsoft-365/cloud-storage-partner-program/online/scenarios/postmessage) on the Microsoft website. You will also need to include a query string: &sftc=1 to the Action Url of the POST request sent to the M365 server url, to indicate to the Office app that the Hosts support frame trust post Message. (sftc is short for supportsFrameTrustedPostMessage). 4. **Tell Microsoft That You Want To Enable Add-Ins** Next you need to tell Microsoft that you want to enable add-ins for your WOPI configuration. For this, use the new CSPP support process to raise a support ticket with Microsoft. Include a link to your add-in in AppSource and mention that you have already implemented App\_IsFrameTrusted. This is the next question they’ll ask, so answering it saves you time and Microsoft will not enable add-ins for you until you’ve done this. It takes about four weeks for them to globally roll out any configuration changes they make for your WOPI implementation, including enabling add-ins. In the UK, we found that the add-in feature was enabled after about two and a half weeks. 5. **Tweak Your Host Page** This is also a really easy step that you can do while you wait to hear back from Microsoft. On the host page where you submit your access\_token and access\_token\_ttl, you need to add one more HTML input field. This field is a JSON array of the add-in identifiers that you wish to load into the WOPI editor. To get the identifier for your add-in (it’s not the one in your manifest file), you need to go to the AppSource website and find your add-in. The identifier you need is found in the URL. For example, if your add-in was the Emoji Keyboard, you would navigate to the **[Emoji Keyboard page in AppSource](https://appsource.microsoft.com/en-gb/product/office/WA104380121)** and find the identifier in the URL– in this case, the identifier is ‘WA104380121’. Use this identifier in a new input parameter alongside your access\_token and access\_token\_ttl like this: **** You may include more than one add-in if you want to. Note that this is an array of JSON objects. There are incorrect examples online of the syntax for this which show {{ instead of [{. 6. **The User Experience** Once add-ins are enabled for your WOPI configuration, the first time a user opens the Edit document action, they will be prompted to accept that they consent to the use of this add-in. Microsoft refer to this as the Consent Experience. After the user consents, the Consent window will close. Your add-in will not open automatically, but your add-in button will appear in the toolbar. ## Testing WOPI Add-ins At the start of January 2022, CSPP sent out a newsletter that stated that they were starting to remove the ‘add-ins’ button from the WOPI toolbar. This was probably a good decision, as add-ins loaded using this button (e.g. sideloaded, centralized deployment etc) do not work reliably! What this means is that the only way you will be able to test your add-in with WOPI is by having your add-in live in AppSource. Testing your add-in is important, as a few bugs in officejs behaviour have been noted by teams implementing add-ins in WOPI which do not exist for Microsoft 365. Please [**contact McKenna Consultants**](/contact/) to find out how we can help you with your **[WOPI integration](/cspp-wopi-cloud-storage-partner-program/)**. For more information on WOPI and add-ins, including [**using WOPI to embed Microsoft Word**](/using-wopi-to-embed-microsoft-office/), please see our previous [**blog**](/blog/) posts. --- # What Are Microsoft Outlook Add-Ins and How Do They Work? **Canonical URL:** https://www.mckennaconsultants.com/what-are-microsoft-outlook-add-ins-how-do-they-work/ **Author:** Nick McKenna **Published:** 14 March 2022 **Category:** Microsoft Office Add-In Developer An [Outlook Add-In](/what-are-microsoft-outlook-add-ins-how-do-they-work/) is a small piece of App-like software that runs inside Microsoft Outlook. An Outlook Add-In is most commonly used to provide a limited but useful set of features when a user is viewing or composing an email. Microsoft permits developers to create Add-Ins for all of its popular Microsoft Office products. A Word Add-In might let you insert specific content into a document (e.g. from a text or picture library). ## **What Can an Outlook Add-In Do?** Microsoft Outlook Add-Ins are typically related to a wider piece of software that you produce. Our customers have used Outlook Add-Ins as companion software for their security Apps, signature Apps, case management Apps and xRM Apps. An Outlook Add-In might let your users easily copy their emails into your xRM solution. Or, it might scan the text of an open email to find a specific Customer or Case number, so that you can show them related information from your main system. ### **How Do I Add an Outlook Add In?** Users install (either individually or for their whole organisation) your Add-In via Outlook. Some Add-Ins are available on AppSource (Microsoft’s business software store) or they can be loaded directly by your customers using either Outlook or their Azure Active Directory tenant. Once installed, the icon(s) for your Add-In typically appear in the ribbon when an email is open (although the position varies from platform to platform). The user clicks on the icon for your Add-In and your Add-In opens up, usually in a pane on the right-hand side of the email. The Add-In is a little bit like an App that runs inside of Outlook. The features of the Add-In typically read some information from the email and make that information available to your main application. This is usually accomplished by your main application presenting some kind of REST API to accept the mail data. More complex Add-Ins may require access to the email server that the email was served from. These Add-Ins are ones that require access to attachments or threads for example. For these Add-Ins, Microsoft provide APIs such as the Graph API to access the necessary information. ### **Is Outlook Add-In Development Complicated?** Yes, Outlook Add-Ins are the most complex of the Microsoft Office Add-In family. They frequently require complex determination of platform capabilities, use of the Graph API (or even EWS API), exchange of an Outlook token for a Graph API token etc. --- # Using WOPI To Embed Microsoft Office in a Web App **Canonical URL:** https://www.mckennaconsultants.com/using-wopi-to-embed-microsoft-office/ **Author:** Nick McKenna **Published:** 28 February 2022 **Category:** CSPP WOPI Are you thinking about harnessing the capabilities of Office Online to enhance your [web Application](/app-development-services/web-application-development/) by embedding Word, Excel or PowerPoint? This is the first in a series of blog posts relating to embedding Microsoft Office document editing capability using WOPI in bespoke web Applications. In this post, we’ll give you some guidance on what [WOPI](/cspp-wopi-cloud-storage-partner-program/) is, how it’s used and how you can get started with it. ## What Is WOPI? WOPI, or Web Application Open Platform Interface, refers to a sequence of operations that allows users to gain access to a server and change files and data stored within it. As a REST-based protocol, in order for the process to work HTTP requests need to be sent to a set of defined operations and REST endpoints. Therefore, in order to embed web-based Office document editing in your web Application, WOPI must be developed as a RESTful web API for implementation. You don’t need to implement the whole protocol; you only need to implement the methods of the protocol that are required for your web Application. In the simplest scenario, you just need to implement a few methods to embed a read-only Word editor in your web Application. This is both easier and harder than it sounds. * It’s **easier** because it’s just a simple API implementation. * It’s **harder** because the documentation for that implementation is very poor and lacks a complete working example. ## Common Uses of WOPI One way that the WOPI technique is often used is allowing users to store and edit Microsoft Office documents with a web App. For example, say you are developing a web App for software that tracks the development of engineering components. The components could have data sheets that are being collaboratively written using Word and technical calculations that are being developed using Excel. Rather than having users leave your web Application to edit these documents and having your users manually upload and download them to and from your software, you could streamline the process by embedding Office Online Word and Excel edits inside your Application. ![Using Wopi to Embed Microsoft Office](/wp-content/uploads/2021/05/using-wopi-to-embed-microsoft-office.jpg) ## Getting Started With WOPI To get going with this process, you will need your usual development environment (e.g. Visual Studio) and access to Office Online. Access to Office Online is either typically through [Office 36](https://www.microsoft365.com/)[5](https://www.office.com/) (hosted by Microsoft) or by an on-premise install of [Office Online Server](https://docs.microsoft.com/en-us/officeonlineserver/office-online-server). If you are going to use the Office 365 approach, then you will need to enrol in the [Office 365 Cloud Storage Partner Program](https://learn.microsoft.com/en-us/officeonlineserver/office-online-server). If you are developing for Office Online Server, you don’t need to do this. Using Office Online Server makes it much easier to set up a development environment and simple, testable product. The simplest way to get a copy of Office Online Server is to organise yourself an [MSDN subscription](https://visualstudio.microsoft.com/subscriptions/). If you’re reading this, then chances are that you are already interested in web App development and you already have an MSDN subscription. If you want to develop using Office 365 then you have to get some endpoints registered with Microsoft and jump through a few other hoops which can take a little while. ![](/wp-content/uploads/2019/02/wopi-protocol-700x467.jpg) ## What’s Next? The next thing you will need is access to the WOPI documentation. The good news is that it is freely available**.** The bad news is that it is incomplete, inconsistent, vague and inaccurate. In our next post, we will explain how you set up your host iframe to hold the Office 365 editor for your web Application, and we will explain some of the underlying concepts of WOPI that you need to get you started. If you’re running into issues with WOPI and the implementation of Microsoft Office, please take a look at our [blog posts](/blog/) on [troubleshooting WOPI APIs](/troubleshooting-wopi-api/) and [verifying API requests with proof keys](/wopi-protocol-microsoft-office-proof-key/). To enlist the help of our experienced bespoke software developers with [implementing WOPI](/cspp-wopi-cloud-storage-partner-program/) and [integrating Office 365](/microsoft-office-add-ins/), please [contact us](/contact/) at [McKenna Consultants](/about/) for a free consultation. --- # Differences Between IaaS, PaaS and SaaS in Cloud Computing **Canonical URL:** https://www.mckennaconsultants.com/differences-between-iaas-paas-saas-cloud-computing/ **Author:** Nick McKenna **Published:** 11 November 2021 **Category:** Systems Integration Knowing the difference between IaaS, PaaS and SaaS in [**cloud computing**](/cloud-services/cloud-app-integration/) is key to ensuring you're using the right service for your business. To help you out, we've put together this breakdown of how IaaS, PaaS and SaaS work; we'll look at the advantages and disadvantages of each service in cloud computing and when to use them and provide some examples. For more information on **[how cloud computing works](/how-cloud-computing-works/)**, see our previous blog post. ## Basic Differences Between IaaS, PaaS and SaaS When working with IaaS, PaaS and SaaS in cloud computing, it's important to know the fundamental differences between the services. * **Software as a Service (SaaS)** is a method of centrally cloud-hosting and licensing software on a subscription model rather than a one-off license payment for installed software. * **Platform as a Service (PaaS)** is a method of delivering a platform for application development via the cloud. It is primarily aimed at computer programmers, but non-programmers can use some instances to achieve simple automation objectives. * **Infrastructure as a Service (IaaS)** deals with providing a low-level IT infrastructure via the cloud. ![Software as a Service](/wp-content/uploads/2021/05/software-as-a-service.jpg) ## What is the SaaS Platform? When using Software as a Service (SaaS), your company provides information to customers and internally via a modern, cloud-hosted, reliable infrastructure using industry-standard APIs (Application Programming Interfaces). Until recently, it was common for software vendors to sell their software packages on discs or as downloads that needed to be installed on specific computers. However, this process was problematic for many reasons; 2. It meant that users were responsible for installing their upgrades (which they would often not do), so the vendor's support was difficult as they had to deal with multiple versions of the same product. 6. This model's pricing was frequently unattractive for some customers as it required large, one-off capital expenditure. 10. The customer would be required to provide infrastructure for the software, which was an administrative burden. 14. The software would usually be limited to work on a small number of operating systems (for example, it might only work on Windows 10 or a Mac). This cloud-based service provides software as a web browser-based product, centrally hosted by the vendor with a cloud provider (such as [Microsoft Azure](/cloud-services/microsoft-azure-development/)). Therefore, the vendor manages all upgrades centrally so that all customers are on the same version. The customer also requires only a web browser to run the software and does not need a server-based IT infrastructure of their own. The SaaS software usually works in all major web browsers, which means that users of Macs, Windows PCs, Linux, iPhones, iPads and Android devices, among others, can all use the software. ### Advantages of SaaS **1. Unlock your company's information** Legacy systems are frequently focused on internal efficiencies and business processes in a company. Unfortunately, these systems were not designed or implemented with the customer in mind; it is often hard to expose the information locked away inside them so that customers can see it. Using SaaS services in cloud computing unlocks this information so that customers can quickly and easily access the information they need, regardless of where that information is currently stored. **2. Give easy access to critical business functions** Existing IT systems tend to be geared around the business processes that were critical in yesteryear. Still, those systems frequently do not allow the business to address to challenges of today and tomorrow. For example, a modern business challenge may require multiple legacy systems to coordinate the flow of work or information. This flow often cannot be achieved as the legacy systems were not designed to communicate with each other. A SaaS platform will allow these systems to be connected to create new business-critical functions to meet your organisation's challenges of today and tomorrow. **3. Create great, self-service experiences** A SaaS platform allows your business units and customers to access key functions and data from your legacy systems to achieve their goals. By creating SaaS APIs, you will allow your customers to integrate your systems directly into theirs. You are, therefore, giving your customers a more fluid experience when interacting with your company (e.g. simple order placement). Using SaaS services in cloud computing can also give you a competitive advantage – customers who have invested in integrating with your IT systems are more likely to carry on business with you than switch to another supplier. **4. Leverage cloud platforms** Cloud platforms such as Microsoft Azure provide lots of great features for SaaS developments. These include new "serverless" functions that allow business-critical functions to be created in a scalable way without the burden of managing a large IT infrastructure. Services in cloud computing are globally distributed and allow many different caching and replication strategies. These ensure that your customers and staff worldwide get the fastest and most reliable access to your SaaS systems. **5. Use modern technology with legacy systems** Developing a SaaS service in cloud computing should not mean throwing away existing, proven systems and replacing them with enormous, complex, expensive new systems. A Progressive**[Digital Platform](/digital-development/digital-transformation/)**is an approach to developing SaaS that means you can retain and leverage your investment in your existing IT real estate whilst incrementally delivering new values through your SaaS platform. At your convenience, you may then choose to replace some or all of your systems incrementally over time and thus avoid the "big bang" deployment of a massive new computer system. **6. Subscription payment options** With IaaS, PaaS and SaaS in cloud computing, the financial model of monthly (or annual) subscription payments rather than a one-off license payment is more appealing to smaller customers, expanding the vendor's market size. It also has the effect of smoothing out the vendor's cash flow, giving a more stable and reliable cash flow. ### Disadvantages of SaaS **1. Vendor lock-in** Not every vendor complies with the government's data protection regulations, and it can be hard to get out of a service in cloud computing. Therefore, you must learn which rules apply to your company and ask any questions before making agreements. **2. Data security** As SaaS platforms require trusting a third-party provider, it is important to address identity and access management issues when it comes to your company's sensitive data. **3. Performance issues** Expect downtime with a SaaS platform. The vendor controls and manages the SaaS rather than an application run from the employee's desktop. Therefore, a fast and secure Internet connection is vital to avoid performance issues. **4. Difficult software integration** With an external SaaS provider, there may be limited integration support on hand. If the provider hosts multiple Apps, your applications may conflict with existing in-house software. Save yourself time and money by checking compatibility before making any agreements. **5. Lack of customisation** Be aware that you may be limited to your third-party vendor's specific functionality and performance. ### When to Use a SaaS Platform If you're unsure when to use IaaS, PaaS and SaaS in cloud computing, remember that each service has advantageous applications. For example, the financial model of monthly (or annual) subscription payments rather than a one-off license payment is more appealing to smaller customers, expanding the vendor's market size. It also has the effect of smoothing out the vendor's cash flow, giving a more stable and reliable cash flow. ### Examples of SaaS Platforms Some examples of SaaS services in cloud computing are Dropbox, MailChimp, Slack and Hubspot. Each of these platforms allows users to access and download data on their chosen device and edit files alongside other users. ![PaaS-Platform](/wp-content/uploads/2020/11/paas-platform.jpg) ## **What is the PaaS Platform?** Platform as a Service (PaaS) is a method of delivering a platform for application development via the cloud. One of the key differences between IaaS, PaaS and SaaS services in cloud computing is their target user; PaaS is primarily aimed at computer programmers, but some instances can be used by non-programmers to achieve simple automation objectives. PaaS typically provides the software that computer programmers use to build software. PaaS platforms could include databases (such as Azure SQL Server), runtimes (such as .Net Core or Java), Web Servers (such as IIS or Apache), API Management components etc. Historically, software vendors would have purchased then installed, managed and upgraded this myriad of software components themselves. Often, this was time-consuming and not particularly innovative. Also, a great (and frequently inaccurate) effort was made to size the target application and purchase the correct license for the product. For example, for an SQL database, one would estimate the number of transactions required, the number of CPU resources required, the memory required etc., and try to find a matching database license. Over-estimating consumption would mean that too much money was spent on licensing, whereas underestimating would limit throughout or require expensive upgrades. PaaS solves these problems by providing an elastic cloud-based approach to providing these components. ### Advantages of PaaS **1. Scalability** An elastic system of simple upgrades/downgrades is provided via a console application which would allow (manually or automatically) developers to scale up or down components as demand changes. **2. Quick Time-To-Market** A cloud provider (such as Microsoft Azure) will install, upgrade, and maintain components to remove the burden of doing so from the developer. **3. Efficiency for Developers** A PaaS platform provides backend resources, access to tools, templates and code libraries to make the development process quicker. **4. A Cost-Effective Option** The licensing of PaaS is usually a monthly/annual subscription model, which eliminates the need to purchase expensive one-off licenses and instead pay a much smaller periodic subscription. **5. Develop for Multiple Platforms** Most vendors provide platforms for developing desktop and mobile applications across multiple channels. ### Disadvantages of PaaS **1. Vendor Lock-In** While a PaaS service in cloud computing can be cost-effective in the short term, it may be difficult to switch providers after developing an application as it is built using a specific set of tools. Therefore, carefully consider your options, as choosing to switch your vendor could be costly in the long-term if your new provider does not support the same languages, libraries, APIs or operating system used to build and run applications. **2. Data Security** Similar to SaaS platforms, PaaS might require you to trust a third-party provider. Be aware of your providers' security and compliance protocols and ensure that your system is private to protect your company's sensitive data. ### When to Use a PaaS Platform You can use a PaaS platform to scale up or down components as demand changes as a developer. The switch can save you time and money and allows you to concentrate on developing Apps to fulfil your customers' needs. ### Example of a PaaS Platform Microsoft Azure is a great example of a PaaS service in cloud computing. It offers a complete platform where clients can host applications without worrying about maintaining the servers and their operating systems. ![IaaS-Platform](/wp-content/uploads/2020/11/iaas-platform.jpg) ## What is the IaaS Platform? Infrastructure as a Service (IaaS) deals with providing a low-level IT infrastructure via the cloud. Before we had IaaS, PaaS and SaaS in cloud computing, organisations would create and manage their servers and server-racks. They would have to change failing hardware components (such as hard discs) themselves, as well as managing updates and security upgrades. The IT department would usually also have to provide extensive firewall and anti-virus security around the infrastructure to keep it safe from thieves and attackers. Periodically hardware would be renewed as it wore out, or become obsolete, or incompatible with newer software. Estimating infrastructure size (e.g. memory requirements, disk space requirements, etc.) was also fraught with problems. It was a one-off exercise that was difficult to modify as the business environment changed. The one-off costs associated with purchasing IT infrastructure were also significant, not just in terms of server purchase, but the establishment of power, cooling and a clean environment to keep the infrastructure in good working order. One of the differences between IaaS, PaaS and SaaS services in cloud computing is that cloud providers give IaaS to organisations by centrally hosting large data centres worldwide. The purchase, maintenance, repair and operations of the IT infrastructure is carried out exclusively by the cloud provider. Typically, customers will have a "virtual" IT infrastructure within the cloud provider's data centre. For example, a server provided by an IaaS service in cloud computing is usually a virtual server hosted on more than one real, physical server. If the physical hardware fails, the virtual server will transparently and immediately move over to another physical server with little or no downtime. Network, storage, memory, CPU time etc., can all be managed from an IaaS console by the customer without ever seeing the real hardware. ### Advantages of IaaS **1. Scalability** The elastic model of IaaS means that the virtual IT infrastructure can be scaled up and down quickly and easily to meet changing demands.  **2. Pay-as-you-go** The cloud subscription model means that large one-off capital expenditures are not required to purchase servers or infrastructure. A smaller monthly or annual payment based on usage is typically charged instead. **3. Flexibility** The IaaS platform allows businesses to purchase resources on-demand instead of having to buy the hardware outright. **4. Available When the Server is Down** The IaaS platform is reliable, so if any hardware components fail or your Internet connection drops, your organisation's infrastructure will not be affected. **5. Control over Infrastructure** IaaS allows you to control your infrastructure without having to manage it physically on-site. ### Disadvantages of IaaS **1. Data Security** Your organisation doesn't have internal control over cloud security. Be aware of your providers' security and compliance protocols and ensure that your system is private to protect your company's sensitive data. **2. Maintenance** Your organisation is responsible for any maintenance and upgrades. **3. Additional Training** Using a new cloud computing provider may require additional workforce training to manage new infrastructure effectively. ### When to Use an IaaS Platform The IaaS platform operates with pay-as-you-go pricing, making it a cost-effective option for companies of all sizes. Particularly if you are a: * Company with a small budget for creating infrastructure. * Growing company with growing demands. * Large company who wants to have effective control over infrastructure but only pay for the resources you use. ### Example of an IaaS Platform Amazon Web Service is an example of an IaaS service in cloud computing. It's used for on-demand cloud computing, and organisations can purchase it on a subscription basis. The platform helps companies store data and deliver content. The various forms of service form a pyramid. IaaS forms a base layer upon which the other services in cloud computing sit. On top of this sits PaaS to simplify the development and deployment of specific applications. On top of this, applications are delivered as SaaS. For more information about the difference between IaaS, PaaS and SaaS and other services in cloud computing and solutions, please [**contact us**](/contact/) at McKenna Consultants. We have a long history of providing such services for numerous clients and pride ourselves on our catalogue of [**case studies**](/case-studies/). Alternatively, for more information on the types of cloud computing and the **[Microsoft Azure IoT Hub](/microsoft-azure-iot-hub/)**in particular, please keep reading our [**blog**](/blog/). --- # What is Cloud Computing and How Does It Work? **Canonical URL:** https://www.mckennaconsultants.com/how-cloud-computing-works/ **Author:** Nick McKenna **Published:** 28 October 2021 **Category:** Cloud Services Cloud computing -- chances are, if you're not already using it, that you've heard the phrase. But what is [**cloud computing**](/cloud-services/cloud-app-integration/)**,** and how does it work?  In this post, we're taking a look at how cloud computing works and some of the options available to your business. ## **What is Cloud Computing?** So, what is cloud computing, and how does it work? Cloud computing (or cloud-based services) provides companies and customers with easy, affordable access to applications and resources online, without internal infrastructure or hardware. Cloud computing companies host your servers online, so you don't have to buy and maintain the physical infrastructure yourself. The cloud is all the things you can access remotely over the Internet; how the cloud works is by storing data on Internet servers instead of the computer's hard drive. ## **The Advantages of Cloud Computing** **1.   Flexibility** Cloud-based services enable flexibility in the workplace. Many companies are finding it increasingly important to invest in flexibility as working from home, and hybrid working models become more prevalent. With cloud computing, team members can access files and collaborate on them without being on the company's network. **2.   Efficiency** Cloud storage allows users to access and download data on their chosen device and edit files alongside other users. An example of cloud computing is Gmail, where users can access files and applications hosted by Google via the Internet from any device. No more sending files back and forth for days with changes and comments! **3.   Cost reduction** As long as you have a secure Internet connection, there is no need to buy and maintain hardware. Some companies still opt to maintain their own servers on-site, but this comes with added costs of backups, maintenance, power and replacing infrastructure at the end of its lifespan. **4.   Scalability** Cloud computing suits companies of all sizes. It is easy to cope with a growing business's demands by purchasing more cloud storage than physical equipment. Many cloud computing providers will offer you a per-user cost, so if your team expands in the future, you'll know what the cost will be. **5.   Access to updates** Depending on your provider, your cloud system will regularly be updated with the latest technology, ensuring any sensitive data remains secure and giving you the edge over the competition. ## Examples of Cloud Computing It's likely you'll already be aware of the more prolific examples of what cloud computing is and what it does; think of Microsoft 365 and the Adobe Creative Cloud. In addition, Dropbox, Google Drive and Sync are some cloud-based file-sharing services popular with businesses. Cloud computing can be split into public, private or hybrid and the key difference in how the cloud works is the server that hosts them. - **Public cloud computing** is hosted on a server that anyone can access -- although your files and folders are secure to you, the space is shared by anyone who uses that provider as a host. - **Private cloud computing** means that, while your documents will still be hosted over the Internet, the server will be set up to only cater to you. This is often a popular choice for speedier performance, as you aren't sharing the server's processing power with numerous other users, as well as for a bit of added security. - **Hybrid cloud computing**, you might have guessed, combines the two. In this form of cloud computing, you might host some documents -- typically larger documents or those requiring extra privacy -- on a private server but have the rest stored on a public server. The important thing is to find a solution that works for your business. ## **Different Cloud-Based Services** ### **SaaS vs PaaS vs IaaS** We have a blog post on the main [**differences between SaaS, PaaS and IaaS**](/differences-between-iaas-paas-saas-cloud-computing/)**,** which analyses each of these services in detail. However, some of the advantages common to all three include: - These services share an elastic model in which services can be scaled up or down as needed. - Each comprises a small monthly fee rather than a large one-off payment. - All cloud-based services achieve their objectives by providing a layer of abstraction, hiding the expensive, complex and messy implementation details from the end customer. - They all free up resources that were previously spent on maintaining an IT infrastructure so that the customer can focus on their innovative ideas instead. The three types of service form a pyramid. First, infrastructure as a Service forms a base layer. Then, on top of this is Platform as a Service to simplify the development and deployment of specific applications. Finally, at the peak of the pyramid, applications are delivered as Software as a Service. Working environments have been irreversibly changed following the pandemic, with flexibility and home working more prevalent than ever before. If you wish to discuss the services in cloud computing in further detail, or if you would like to explore what cloud computing is and how it works for your business, please** [contact us](/contact/)**. Alternatively, learn more [**about us and our services**](/about/) through our available [**case studies**](/case-studies/). --- # Why is Systems Integration Important? **Canonical URL:** https://www.mckennaconsultants.com/why-is-systems-integration-important/ **Author:** Nick McKenna **Published:** 26 September 2021 **Category:** Systems Integration [System integration](/digital-development/systems-integration-services/) solutions are important as they can provide your business with the connectivity to overcome any software or hardware challenges that may arise. In this post, we explain all you need to know about systems integration, including what systems integration is, why systems integration is important, and the benefits of integrating systems in business. ## What Is System Integration? While many businesses opt for the ‘best’ of each type of software they use, these systems are not always able to communicate with each other, meaning that the business’s information is scattered across software rather that in one place. [System integration](/digital-development/systems-integration-services/) brings together component sub-systems into one functional system and ensures that all components work together in harmony to preserve productivity and accurate data analysis. Typical information exchanges include customer information, orders, production line information, customer inquiries, and many more. ## Why is System Integration Important? System integration facilitates communication between often disparate systems that do not normally communicate. This process can boost the speed of information flows and reduce operational costs, resulting in improved productivity and quality of operations. Some of the other benefits include: **1. Information Appearing Quicker** Before integrating systems, it is common for organisations to rekey the same information into multiple systems. This makes the flow of information within the organisation very slow. Information is often backed up, awaiting rekeying on a scheduled basis. One of the main benefits of system integration is after automatically integrating systems; critical information is more quickly available throughout the organisations. This allows for faster decisions to be made. **2. Consistent Communication** It is common for information to become inconsistent between systems if they are not integrated. For example, one system may be updated with a customer’s new address, but another system may not get the update. Integrating these systems eliminates the confusion that inconsistent information creates and keeps the correct information clear. **3. Saves you Money and Hassle** Integrated systems allow you to leverage your investment in them. Instead of replacing several existing systems with a single, large, expensive new system, you can integrate your existing systems at a lower cost and not go through the (sometimes painful) process of implementing a whole new one. **4. New Essential Insights Available** It is common to establish a business intelligence (BI) system as part of systems integration. This can be as simple as an Excel spreadsheet or something more sophisticated such as Microsoft Business Intelligence. The BI system can aggregate data from various systems to give an overall view of your organisation. This can give you insights that would have been missed, thus making your organisation more competitive. **5. Contributes to Sales Increases** If you are looking to boost your sales, data connectivity across departments can help your customers and encourage them to purchase what they have sitting in their baskets. Not only is a clear line of communication available to customers, but systems integration solutions can give customers access to the data that is most useful to them, making the buying process for them much easier. This means customers can effectively see what is in stock, how much is in stock, and how long it will take to be delivered to them. Transparency is a very effective tool when it comes to a customer deciding on whether to purchase an item, making systems integration a very valuable tool for any online sales process. ### Types of Systems **Information Systems:** - **Management Information Systems** A management information system is concerned with internal sources of information, inputting data from internal transactions, files and structured data. - **Decision Support Systems** These systems are designed to aid management to make decisions or predictions about the result of a decision when faced with uncertainty. - **Transaction Processing Systems** This type of system processes key data to support your operations management team to process routine transactions accurately and efficiently. ### Operating Systems: - **Batch Operating Systems** A batch operating system does not directly interact with the computer and can work offline. The operator sorts similar jobs into batches. - **Time-Sharing Systems** This system is also known as a multitasking system. It functions to allow more than one user to use the same computer system at any one time. - **Distributed Operating Systems** A distributed operating system shares data processing jobs across multiple interconnected computers using a shared communication network. - **Network Operating Systems** Network operating systems allow servers to manage several aspects of networking, including groups, users, security applications and other networking functions. - **Real-Time Operating Systems** These systems are used when there are time requirements, and ensure that the tasks of a system take place when necessary. ## Basic Steps to System Integration Solutions 1. **Identify Enterprise Software and Applications in Use** There are different computer systems for different services, so make sure you know which applications are used in each department of your company, from sales and marketing to manufacturing. Once you have a complete list of platforms and what your team requires in terms of features and functionalities, you can map this into expectations for your new integrated system. 2. **Determine How Your Software Programmes and Applications Interact** Once you know how each platform interacts, you can improve the communication between yourself and your development team. It can also provide insights as your team begins to construct your new integrated system software. 3. **Create a Systems Integration Project Plan** You want to ensure that all components work together in harmony to preserve productivity and accurate data analysis for your team. If you are planning to retain any third-party platforms, make sure that your system integration developers build around this. Finally, make sure that your sensitive data is not compromised when transferring data between platforms. 4. **Implementation** Ensure that your new integrated system solution is verified and tested, and any bugs are fixed before you use it so that you can experience the benefits from the get-go. 5. **Maintenance** Look after your new system with regular updates and bug fixes whenever required. ## Internet of Things’ Integration With Your Back-Office Systems As organisations grow, their back-office systems often become a little unstructured; it starts innocently enough with the odd spreadsheet here and there, and maybe an access database. Then, a few [Cloud-based](/cloud-services/cloud-app-integration/) web systems get added for various business operations, a CRM system here and there, and maybe a couple of SQL Server databases. Before you know it, you have a multitude of individually great systems that don’t play well together. Then, you decide to create an [Internet Of Things](/cloud-services/internet-of-things/) device that needs to pull data from or write data to this knotty mess of computer systems. How can this be achieved? That’s where the Internet Of Things integration with back-office comes in. **A Single Version Of The Truth** From an [IoT device](/are-you-thinking-about-iot/), it is important to establish a single, authoritative version of the truth. This could be a single, definitive version of the customer’s address, an order history for a client, or some other critical data that you hold in various systems. Since you want to focus your resources on creating your new IoT devices, you probably don’t want to spend a lot of time and money re-engineering your back-office systems. **Service Integration Approach** One solution that has benefited our clients is to start to implement a new set of “services”. These are technological components that sit on servers and pass data between computer systems. Suppose you have customer order data stored in multiple systems (a CRM system, an accounting system, an operations system, etc.) In that case, you can create a new “service” that integrates the data from these places and presents a single unified view to your Internet Of Things device. Equally, this new service integration can be the broker that receives updates from your Internet Of Things device and pushes the update out to your various back-office systems. We like to call this “plumbing” work. It’s very useful and critical for success, but we want the complicated pipes to be hidden out of the way, so the rest of the business can focus on turning on the taps or having a shower! **Cloud Storage for IoT** If you are wondering where you should host your new services, you could look at the Cloud. The Cloud is a flexible, scalable, low-cost method for running services and storing data in a low-maintenance manner. It’s like having your own personal data centre that expands and retracts quickly depending on your needs. In the old days, you had to purchase servers, cooling and expensive IT support staff. Sometimes you would under specify the servers and sometimes you would over-specify. Using Cloud storage for IoT means you can spend less time “keeping the lights on” and more time innovating with your IoT device. In summary, you can host in the Cloud to provide fast, resilient, predictable services for your Internet Of Things devices. **How to Connect IoT Device to Cloud** There’s a basic Protocol that can be applied to connect an IoT device to the Cloud. However, the Protocol that is used at each layer depends on your priorities and what device you’ll be connecting. Either way, there needs to be a two-way communication system at each stage. The transport layer, which is the layer where device-to-Cloud communication occurs, takes place over a choice of two channels; Transmission Control Protocol (TPC), or a User Datagram Protocol (UDP). Generally speaking, TCP is used to ensure that no data is lost during the communication, and UDP is used when it’s not necessary for all the data to arrive. HyperText Transfer Protocol (HTTP) is the most widely used Protocol at the application layer. With the help of TPC, a send request can be sent to the server, and responses returned, allowing data to be successfully passed between the device and the Cloud. **Hybrid** Of course, sometimes for practical reasons, you can’t host all of your services in the Cloud. Some of your back-office software may be old and difficult to connect to the Cloud. Or, you may face security restrictions that limit your ability to Cloud host. In this scenario, you can create a hybrid system where some of your services are hosted in-house and some in the Cloud. You may even have a Cloud service fronting up a service that is hosted in-house. No matter whether you choose the Cloud or a hybrid system, the goal remains the same: create a single version of the truth using services which are reliable, fast and predictable. If you’re considering moving to Cloud-based storage, check out our blog which explains [the main services in Cloud computing](/how-cloud-computing-works/). ## ERP System Integration We start with the best of intentions. We’re going to manage this new service, product or project using a simple spreadsheet. It won’t be complicated, as we’re going to put it on a shared drive so we can collaborate, until a number of varying factors that weren’t initially considered pop up: - Someone needs access offline. - The data needs to be shared with a couple of suppliers in a different format. - Someone inputs the data incorrectly. Before you know it, you’re **drowning in spreadsheets.** Enterprise resource planning (ERP) system relates to the back-end functions that support a business. The software is a system used to automate business. As these systems are organised in a centralised hub, this makes workflow and data sharing across departments much easier. Further, an ERP system can automate some manual processes. ### Types of ERP Systems - **On-Premise ERP** An on-premise ERP system allows more control and more security, compared to a Cloud-based ERP system. However, this type of ERP system requires an upfront investment, longer implementation time and ongoing maintenance, making it less efficient in the short-term. - **Cloud ERP** A Cloud ERP is hosted on a third-party Cloud computing platform. The benefits of utilising Cloud-storage are lower costs, due to lack of hardware investments, and accessibility, allowing your workforce to access files from wherever they are working. However, despite cost savings when using a Cloud ERP, you may sacrifice control and security. - **Bespoke Software** Systems integration ensures that your ERP software connects to your other systems to maintain workflow efficiency. You could have an all-singing, all-dancing ERP system to run your whole business. Then three months down the line, you’ve had to reorganise your previously efficient business processes to accommodate this computer system, now finding that you’re doing more data entry than ever before. Worst of all, although this system does do everything, it may do some things inefficiently and at a very basic or even poor level. In that case, investing in a piece of bespoke software, developed in a Lean and [Agile](/agile/) manner, may be more favourable to your organisation. Bespoke software is software that’s written just for your organisation. It is completely written from the ground up to match your business processes, so it adapts to you, not the other way around. Bespoke software is likely to be a lower cost than an ERP system. Your bespoke software will belong to you, so you don’t have to pay heavy annual license fees. - **Defining Bespoke IT System Integration** “Lean” means you can build your Minimum Viable Product. This is the smallest, simplest piece of software that you can think of that will meet your needs. Forget the bells and whistles! That is just complexity that you don’t need. “Agile” means that the software is upgradeable as your business changes. Instead of hitting a brick wall, you can have a can-do attitude and software to drive your organisation’s success in an ever-changing environment. ### Integrated System Solutions #### **Case Studies** McKenna Consultants have integrated many systems over the years. We specialise in creating [Digital Platforms](/an-expert-guide-to-using-digital-platforms/) that create a “plug and play” system that allows the software to exchange information with any other software, within an organisation. **Wolseley** Our client [Wolseley](/project/wolsley/) was drowning in spreadsheets a few years ago, but with the help of our IT system integration solutions, they were able to overcome the struggle. The one positive of overcoming any of the above situations is that you’ve probably done a good job of defining your business processes, either as a result or before any new systems. Now, it’s just the implementation of those processes in IT form that is holding you back, which is where a software integrator is needed to merge everything together. **IMI Precision Engineering** At [IMI Precision Engineering](/project/imi-precision-engineering/), we created a Digital Edge Platform that integrates their Tacton configuration system with their JD Edwards ERP system, communication systems (Mandrill, etc.), and shipment tracking systems (UPS). For other customers, we have been able to integrate their existing legacy in-house developed software into a new digital platform. This allows them to incrementally replace the legacy systems with new systems, plugging into place to replace the old. Please view all our [case studies](/case-studies/), to find out more about how we have used [software integration](/digital-development/software-integration/) and ERP system integration services, previously. ### What Systems Can I Integrate? There are different categories of systems that can be integrated between the two systems. These are listed below with examples of each system. 1. **Customer Relationship Management (CRM)** 1. Salesforce, Pivotal, Microsoft Dynamics 2. **Enterprise Resource Planning (ERP)** 1. SAP, IFS, JD Edwards Enterprise One 3. **Procurement Systems** 1. Ariba, SAP 4. **Configuration Systems** 1. Tacton 5. **Accounting Systems** 1. Sage, Microsoft Nav 6. **Document Management Systems** 1. Digital Paper, eValue, SmarTeam / Swiftify 7. **Customer Enquiries** 1. Cadenas, KissMetrics, WordPress, LiveChat 8. **Office Software** 1. Microsoft Office 365, WOPI API 9. **Marketing And Email Systems** 1. Mandrill, Pardot, Silverpop 10. **Shipping** 1. UPS Tracking 11. **Product Management** 1. Fredhopper 12. **Identity Management** 1. Auth0, Okta 13. **Software As A Service** 1. Toggl, Jira, Microsoft AI Services, Microsoft Business Intelligence 14. **Payment Systems** 1. PayPal, Payment Express 15. **Custom In-house Software** System integration solutions are all possible with an incremental build approach and without incurring expensive licensing fees. Integrating systems in business is important for improving your company’s efficiency. Our dedicated team of bespoke software development specialists, are always on hand to help. Or, if you would like to learn more about the other bespoke services we provide, please [contact us](/contact/) via the form below. --- # Securing Tokens In A Progressive Web App **Canonical URL:** https://www.mckennaconsultants.com/securing-tokens-in-a-progressive-web-app/ **Author:** Nick McKenna **Published:** 21 September 2021 **Category:** Progressive Web Apps Security is at the top of the agenda for every technological development, especially so in the open world of the World Wide Web and Internet generally. The core underlying challenge is that the web and Internet were not designed with a modern level of security in mind. In terms of progressive web app development, this makes creating web experiences that are both highly usable and highly secure difficult. Appropriate progressive web app security can be achieved however, here are a few of our expert tips and methods to help you. ## **How to Secure Tokens In A Progressive Web App** ### **Use OAuth And Distributed Identity Services** In recent years, technologies such as federated identity and OAuth ans Single Sign On have become very popular on the web. Instead of having one hundred different user names and passwords for one hundred different [**web portals**](/app-development-services/web-application-development/), users can have one username and password provided by a trusted partner (e.g. Azure Active Directory) and use that to log in to all their web portals without having to disclose the password to those systems. This is accomplished using a system of secure "tokens" that authorise users to access different systems. For illustration, let's say we are building an Angular 7 **Progressive Web App (PWA)**that is authorised using OAuth against an Azure Active Directory. The Angular App accesses a web API that is hosted on an App Service in [**Microsoft Azure**](/cloud-services/azure-iot-hub/). APIs frequently request an OAuth token to be provided by the client (the PWA here) with every request. Learn more about [**integrating Auth0 with Azure Active Directory**](/integrating-auth0-with-azure-active-directory/)**.** ### **Do Not Use Web Storage** A simple plan would be to write some Typescript/Javascript for your PWA that logs the user in, gets the OAuth token from Azure Active Directory and stores it in the convenient Web Local Storage or Session Storage of the browser. The PWA can then load the token from web storage when needed and provide it to the API. This solution is simple and frequently implemented, but it is also fundamentally insecure. A discussion of why is beyond this article's scope, but suffice it to say that web storage is vulnerable to simple cross-site scripting attacks. Similarly, client-accessible cookies are vulnerable to very simple attacks. ### **Use Secure HTTP Only Cookies** To avoid the problems outlined above needs a little bit more work. The preferred approach at McKenna Consultants is to log in to the auth provider (e.g. Azure AD) via the PWA and immediately use the token retrieved to call a "login" method on the API (passing it the token) **without storing the token retrieved from Azure AD anywhere on the client-side**. The API would then validate the token passed in (for example, using the ADAL library) and issue its own authorisation cookie (for example, using simple ASP.Net forms authentication). The cookies issued MUST have the "secure" and "HTTP Only" flags set. Therefore, it means that the client-side Javascript/Typescript cannot read the cookie. The browser is responsible for dispatching the cookie with every HTTPS request to the API, solving the cross-site scripting problem and securing your progressive web App. ### **Take Care With CSRF / XSRF Tokens** Our next problem is that the PWA domain may not match the API domain (if they are hosted in the same server-side web service then this is an easy problem to solve), so we have a [**cross-site request forgery**](https://owasp.org/www-community/attacks/csrf)(XSRF or CSRF)  problem. The main defence against this is the "synchronised token" approach. This defence is implemented, for example, in the Asp.Net RequestValidationToken approach. Microsoft recommends sending and receiving the CSRF token between the PWA and web API using a secure cookie (not HTTP only in this case). Essentially this gives us an overall more secure solution by using both a secure HTTP only cookie for the auth token and a secure Javascript-readable cookie for the CSRF token. Obviously, this gives rise to a cross-site scripting vulnerability with the CSRF token, which should be defended against using normal mitigations. A combination of good cross-site scripting hygiene, a secure HTTP only cookie for authentication and a CSRF token is a good combination for building a secure ecosystem for your PWA and web API. ### **Consider Indirect All API Calls** An excellent solution to the above quandary is to simplify web API access by constructing your PWA so that ALL web API calls are ONLY to the domain that hosts both the PWA and the web API. This means that you can take advantage of modern browsers and cookies' "same site" capability, although this cannot be totally relied upon due to older browsers still being in use. It also means that you can perform some server-side programming to include the CSRF in the HTML served up for the client-side App rather than sending it around in cookies. In this scenario, all access to third-party APIs will be managed by the PWA server-side component. This allows more secure web API credential storage methods to occur on the server-side rather than insecurely on the client-side. This is very useful when accessing a web API that requires the passing of an OAuth token in a header, for example. ## **Benefits of Securing Tokens In A Progressive Web App** Securing progressive web Apps is made more simple as the secure contexts (HTTPS), service worker(s) and manifest file features include added security measures to stop malicious users infiltrating your App. The security benefits of PWAs are explained below: 1. **Secure contexts (HTTPS)** A PWA must be served over a secure network to be entrusted by users, particularly where a monetary exchange is involved. PWAs are SSL encrypted by browsers, making them more secure than connections in traditional native Apps. 2. **Service workers** [**Service workers**](https://developer.chrome.com/docs/workbox/service-worker-overview/) are a script run separately from your main browser that intercepts network requests, deals with caching and enables browser support. Essentially, they are a proxy between the front and backend of a web App. Service workers are only registered on HTTPS encrypted browsers so that they cannot be tampered with and have additional security features to limit the impact of malicious server workers, explained below: * Service workers are Javascript workers and so don't have access to the DOM or the cookies directly. Rather, they communicate with other pages with the postMessage interface. * Service workers only have access to the Cache Storage and indexedDB for caching purposes but not the Local Web Storage or Session Storage. * Service workers can't read or set forbidden headers. 3. **Manifest file** The manifest file in a PWA sits in the HTML, and it is responsible for the display and appearance of your App, including name, background colour, icon, etc. When a manifest file is present, a malicious attacker cannot override the manifest and target the App. Therefore the name, description and icon of your PWA remain secure. ### **Additional Benefits of PWAs:** * **Automatic updates** PWAs benefit from browser support and automatic maintenance and utilise these technologies to deliver an optimal web experience for users. Automatic updates and maintenance mean that a high level of security is maintained. * **Improved performance** PWAs take advantage of new technologies to make a more powerful web App without impinging on device storage or mobile battery life. The caching done by service workers enables PWAs to install and load faster, even when operating offline. * **Improved user experience** PWAs are designed to provide a good, secure user experience. Once installed, users can view the PWA icon on their home screen and access PWAs from their device as they would use a native App. Service workers can re-engage users using push notifications when they're not actively using their browser. Plus, PWAs are network independent, utilising cache storage, meaning users can browse content or sites even when offline. For a more [**detailed explanation of PWAs**](/progressive-web-apps-explained/) and their benefits, have a read of our blog. Or, if you wish to discuss securing progressive web Apps in more detail, please [**contact us**](/contact/) to speak to one of our friendly specialists. --- # Progressive Web Apps Explained **Canonical URL:** https://www.mckennaconsultants.com/progressive-web-apps-explained/ **Author:** Nick McKenna **Published:** 11 September 2021 **Category:** Progressive Web Apps ## What are Progressive Web Applications? ### Progressive Web Apps Explained [Progressive web Apps](/app-development-services/progressive-web-app-development/) are web applications that look like traditional or native mobile Apps to the user but are, in fact, regular web pages or websites. These Apps use features of web browsers and progressive enhancement strategy to bring a traditional App-like user experience to web applications. Progressive web applications have the same speed, responsiveness and comprehensive capabilities as websites with database access and automatic data. They are capable, reliable and installable, and can reach anyone, anywhere and on any device with a single codebase. #### How do They Work? Progressive web Apps (PWA) are installable on your local computer or mobile device. That is, the user should be able to easily make your PWA appear in your Start menu, desktop or applications, with a minimum of fuss and without much change to the code. These Apps have the same feel and aesthetic as native Apps do. The degree to which this is achievable will depend on your web browser and operating system. You can tell if your PWA is installable via certain indicators, which can include the following: 1. An install button within the address bar 2. An install menu item in the overflow menu Also, most browsers will give a beforeinstallprompt event that will directly enable installation from your PWA. #### The Manifest We're going to save a detailed description of the JSON manifest file for later in this article. For now, all you need to know is that for your PWA to be installable, you must meet the following minimum criteria: * Have a JSON manifest file in your PWA * Securely serve your PWA using HTTPS * Include at least one icon in a well-known format Optionally, you also have to include a [service worker](https://www.w3.org/TR/service-workers-1/) if you want your PWA to install on Chrome / Android. ----- ## Why Progressive Web Apps? You should turn your web App into a progressive web App as it significantly improves user experience. From improved customer retention to quicker loading You should turn your web App into a progressive web App as it significantly improves user experience. There are many benefits of progressive web Apps, from improved customer retention to quicker loading speed, particularly compared to native applications. The biggest benefit of using PWAs is that they are more responsive, which significantly impacts user experience. ### The Importance of Responsive Web App Design Responsive web App design is not a new idea. It is sometimes described as “mobile-friendly”, but that is only a part of the story. In reality “responsive” means that the experience that the user has of your App should adapt itself to the environment in which the App is running. You can try this with this blog article on your home computer. If you are reading this article on a desktop with a nice big, modern monitor, then you are likely to see this article in the centre of the screen, with white space on either side and a complete menu at the top. Additionally, you will be able to see “Categories” and “Latest Posts” shortcuts on the right-hand side of the article. If you start to reduce the width of your web browsers window, you will see that eventually, the complete menu disappears and the “Categories” and “Latest Posts” also vanish. The menu has collapsed into a “hamburger” in the top right corner, as there is no longer enough space to display it along the top. “Categories” and “Latest Posts” have also moved to the bottom of the page and are now stacked vertically, with the article instead of horizontally. The web page has “responded” to the diminishing horizontal width by reorganising the content into a different order. If you shrink the page down further, you will see numerous other simple tricks, such as shrinking images etc. The smaller views are the views that people reading this article on a mobile phone or tablet might see. There is more to responsive design than just desktops and mobile though. As the world changes more rapidly, newer platforms for displaying the web are emerging. No-one can predict the future of technology with accuracy and attempting to build a “future-proof” progressive web App will be a frustrating and fruitless endeavour. Still, one should attempt to keep the underlying programming of an App as simple as possible, to make it as easy as possible to adapt for future Augmented Reality, Wearable, Bio-Integrated etc. platforms\! ### PWA Benefits: 1. **Progressive** Progressive web Apps should work on any web browser and progressively enhance themselves for browsers with more features. 2. **Installable** You can install a PWA to your desktop or mobile device. The PWA will appear in your Start menu, desktop or applications, with a minimum of fuss and without much change to the code. 3. **App-like Look and Feel** The App-like appearance is essential for user experience and functionality. A PWA is added to the home screen in the same way as a native App, and offers many of the same features like offline mode and push notifications. Due to the responsive nature of progressive web applications, they are more user friendly and attractive. 4. **Better Performance** PWAs cache and serve text, images and other content in a specific, efficient manner, allowing them to operate like websites which significantly improves the running speed. Better performance has a huge impact on user experience and conversion rates, and as a result, a progressive web App can improve customer retention and customer loyalty. In fact, Google found that when page load times go from 1 second to 10 seconds, the probability of a mobile site user bouncing [increases by 123%](https://www.thinkwithgoogle.com/intl/en-emea/). 5. **Fast Installation** The usage threshold is low as no new App needs to be downloaded from an App distribution service. There is no need to search, download and update a PWA as with a native App; rather, users can download the App quickly and directly to their device. This presents a significant advantage, as it streamlines the process and reduces customer abandonment. 6. **Offline Operation** One reason to prefer building a native [**mobile App**](/app-development-services/) over a progressive web App has historically been that a mobile App can work (to some extent) without an Internet connection, using cached data. Whereas websites can only work whilst an Internet connection is present. However, Service Workers have allowed for web Apps to compete with mobile Apps, providing a solution to accessing certain web pages when offline. ### What Is A Progressive Web App Service Worker? A Service Worker is a JavaScript file running separately from the main browser thread which can determine how various network requests from a web application are controlled. By caching the results of previous requests, Service Workers allow your App to work with poor or no Internet connection for a specific amount of time. Another benefit of a Service Worker is that they allow for more advanced platform integration, including the delivery of push notifications and allowing for background synchronisation within a PWA. The amount of caching time can vary for different types of data. Caching isn’t a panacea to cure all your connectivity problems. Specific programming will still be frequently required to deal with situations where out of data cannot be used. This may include issue warnings to the user, locking out specific functions until connectivity is restored and other novel solutions. Service Workers allow progressive web Apps to work with varying levels of connectivity. However, it’s worth remembering that the level of poor connectivity that an individual App will tolerate depends entirely on the function of the App. 7. **No Dependence on App Distribution Services** App Distribution Services like the App Store, Google Play or Microsoft Store have high requirements for what kinds of Apps can feature. Designing a PWA avoids meeting any complicated procedures that may be unnecessarily time and effort consuming. At first glance, this appears to be a disadvantage. However, upon closer inspection, a progressive web App provides a great user experience and is great for SEO. That’s certainly worth considering\! As progressive web Apps are websites, they are discoverable in search engines. Plus, their safety, fast loading time and relevant and unique content put them ahead of native Apps. In a similar vein, progressive web Apps link to the web at a specific URL, so there is no need for a complicated installation process or an App store. An improved search ranking is a considerable benefit of switching to a progressive web App design, as it ensures that your App is still discoverable despite a lack of exposure from traditional App platforms. 8. **Push Notifications** [**Progressive web Apps**](/app-development-services/web-application-development/) seek to improve engagement with your users using push notifications (just like the ones you get on your iOS or Android phone). For progressive web Apps, this is achieved using two different technologies in combination: Push and Notifications. Push notifications are very short messages (a bit like text messages) that appear on your progressive web App users’ device when sent from your server. Users must permit your progressive web App to display the Push Notifications before they see them, so they are not a guaranteed method of communication. Use push notifications in your progressive web App design to encourage engagement with your App, and remind users to use your App more frequently. If you use push notifications incorrectly, then you may annoy your users. Generally, it would be best if you used push notifications sparingly. If you bombard your users with a new notification every few minutes, they will immediately unsubscribe. It would be best if you also avoided pushy sales notifications as this will also lead to users unsubscribing. Finally (especially in the modern GDPR world) you should not include personal data in push notifications. Your users will not be happy if they are giving a presentation on their laptop and a push notification about their bank balance appears on the screen\! #### How to Create a Good Push Notification You should seek to make your push notifications short, relevant, useful and content-based. Your notifications should tempt your users to click on them to view a specific piece of content in your progressive web App. Examples of good push notifications are: * “Your drive to work is busier than usual.” * “We are shutting down the email server at 2 pm today for one hour.” * “FTSE rises by 13% this morning. Is it time to trade?” * “A new Star Wars article has been published on `SciFiNerds.com`.” * “A new user has registered. Please check their identity.” Each of these quickly delivers a short message that the user can then act on or ignore appropriately. Short, content-based push notifications that will be useful to your users are much more likely to lead to a maintained push notification subscription and better engagement overall. 9. **Automatic Updates** Progressive web applications automatically update when the user visits them, making it unnecessary to download and install any batch changes. So, without bothering the user with a permission request for updates, you can reserve any push notifications for engaging and re-engaging users with your App. 10. **Security** Progressive web applications must be hosted over HTTPS to ensure the secure delivery of data. Therefore, content and interactions are as safe as they can be with as on a secure website. ----- ## Progressive Web App Design ### Progressive Enhancement Progressive web Apps should work on any web browser and progressively enhance themselves for browsers with more features. One of the first tasks to accomplish when designing a progressive web App is to understand a little bit more about your users, considering the following questions: 1. What devices do they use? 2. What operating systems? 3. What web browsers? Combine this information with the “art of the possible”, and you will get a good sense of a base set of browsers that you should aim to support with your progressive web App. In general, all other things being equal, we would typically recommend looking at the “evergreen” browsers (Edge, Chrome and Safari) on Windows 10, iOS (11 and 12) and Android (5+) as a good compromise between technology and population coverage. You can always add Internet Explorer 11 to that list, but the usage is very low, and your investment in keeping it supported is unlikely to yield a good return. Similarly, Firefox has a diminishing user base, and we would not recommend making special efforts in supporting it. ### Progressive Enhancement Examples An example of a practical Progressive Enhancement that you might make in your App is syncing of data in the background. Background syncing of data for your progressive web App is not widely supported in different browsers (only Chrome has good support at the moment), but it can improve the perceived response times for your App. If your App contains some commonly used data that changes infrequently, you can use background sync to download this data silently whilst the user is performing other tasks in your App. Let’s say that you have a large address book in your App. When your App starts, the address book downloads and syncs with your current data in the background. Whilst this is happening, the user wanders around the App, performing some other tasks. When the user then wants to find an address, the finder function in your App can instantly search its local copy of the address book. If the browser does not have background data sync as a feature, then the user can perform all the same actions. Still, when they come to find an address, the App must contact a web service to either download or query the data resulting in a slower but still acceptable experience. ### Progressive Enhancement Verdict The jury is still out on Progressive Enhancement in general. It may prove more economically viable to exclude browsers from your App rather than trying to provide an experience that works on “all” browsers. This is particularly true when your organisation has more control over the target platform for your progressive web App. That being said, progressively enhancing your [**web App**](/app-development-services/web-application-development/) is a great idea, as long as it remains economically viable. ### How Do I Install A PWA App? There are different methods for installing PWA Apps, depending on what device you are trying to install the PWA App on. We explain the method for installing progressive web Apps on iOS, Android, Windows 10 and Mac below: #### Progressive Web Apps iOS iOS is the oldest platform to support some kind of installation for web applications. We built an installable web App for a [client](/case-studies/) many years ago for iOS, when Apple refused their App for competitive reasons. In iOS 11.3, Apple “secretly” added much better support for PWAs. The process for installing progressive web Apps on iOS is relatively simple compared to other devices: 1. Instead of using the App Store, go to the PWA web site in Safari on iOS and tap the “share” button. 2. Then click the “Add To Home Screen” option. 3. A popup will ask you to confirm, so just click “Add”. 4. Now take a look at your home screen, and you’ll see a new icon. Tapping the icon, you’ll see that your PWA opens up in a “frameless” window just like a native App. #### Progressive Web App Android Adding a PWA to your Android device is very similar to the iOS process. You will need the latest version of the Chrome web browser for this to work\! 1. Go to the PWA website in Chrome, and you will probably see a banner popup (in the example at the bottom of the screen). 2. If you don’t see the banner, tap the menu button (the three stacked dots in the top right corner). 3. Either tap the “Add XXXX to Home screen” banner or the “Add To Home Screen” option from the menu, and you’ll see a confirmation popup. 4. Tap “Add” and wait for a little while… There is little in the way of feedback while the installation is taking place, other than an entry in your notification bar. Eventually, the App should appear on your desktop\! #### Installing Web Apps On Windows 10 There are two main methods of getting your PWA installed on Windows 10: 1. The easiest from a user’s perspective is to submit it to the Microsoft Store so that the experience of finding and installing it is very similar to that of any other store App. 2. If you don’t want to (or can’t meet the guidelines for the store) submit your PWA to the Microsoft Store then you can still distribute it through Chrome on Windows 10. The user will follow the same procedure as for Android installation, outlined above. The PWA will appear on the desktop and in the user’s Start menu just like any other App. #### Installing On A Mac If you want to install a PWA on a Mac, the best thing to do is wait\! No browser currently supports PWAs on MacOS out of the box. You can configure Chrome to work as described above. It’s not difficult to do, but we advise against most users changing the default Chrome configuration, as it may lead to unexpected behaviour in the future. #### Our Recommendation By using standard progressive web App techniques, you can have your users install your web App on their device, via your website and by the Microsoft Store. This will allow a more App-like experience on their device, but be aware that the PWA is still subject to the limitations of the device’s web platform and may not have access to all device features (e.g. Augmented Reality features). It’s also not too easy for users to find your PWA at the moment, other than by stumbling across your website or by using Microsoft’s Store. If you are going to offer a PWA as part of your website, make sure that you use a big banner that makes it noticeable until browser developers decide to come up with a more obvious mechanism for indicating that a PWA is available. Check out our recent blog if you are considering [**creating an App for your business**](/should-my-business-have-an-app/). #### Progressive Web App Design Best Practices 1. **Optimise for both desktop and mobile** Good user experience should be the priority for your progressive web App design. As a PWA is cross-platform, make sure to optimise for both desktop and mobile devices. The footer is one place, in particular, you may want to keep in mind here. A footer displays the same information on each page and could take up unnecessary space on a mobile device, even though it looks fine on a desktop. Many native Apps do not have footers, so we recommend following their lead by creating an easily navigable menu bar. 2. **Keep it simple** Remember: less is more. To enhance the user experience, keep the navigation simple and obvious, to avoid any confusion. Make sure the navigation is fast, too, to allow users the freedom to get where they want to go quickly and easily. 3. **Use a back button** Make sure the back button returns to the exact scroll position in the list they were on. If not, the user experience may be inhibited as customers may get frustrated if they have to scroll endlessly. 4. **Show interaction** Acknowledge the user’s action on your PWA. Don’t leave your users wondering whether or not their interaction was registered. 5. **Ensure smooth page loading** Performance is key to user experience, so scrolling and animation should feel smooth. To avoid content moving around the page, you may consider adding placeholders for images in case of slow loading speed. 6. **Create an attractive home screen logo** Similar to native Apps, a user will add your progressive web application to their home screen. Ensure to create an attractive home screen logo that stands out from other Apps. 7. **Provide share options** Make it easy for your users to share URLs and content to peers or on social media. This is particularly important when customers are at the end of the sales funnel and are ready to become your promoters. Take advantage of the latest technologies and convert your web App into a progressive web application. There are many benefits of PWAs, that can be of great advantage to you and your organisation. Please [**contact us**](/contact/) if you wish us to explain progressive web Apps any further or discuss the PWA benefits in more detail specific to your organisation. Our previous experience speaks for itself, and we pride ourselves on our long-standing reputation, so make sure to view our [**case studies**](/case-studies/) to see how we can help you with your progressive web App design today. --- # WOPI Protocol, Microsoft Office and Proof Key **Canonical URL:** https://www.mckennaconsultants.com/wopi-protocol-microsoft-office-proof-key/ **Author:** Nick McKenna **Published:** 27 July 2021 **Category:** CSPP WOPI If you’re already familiar with [**WOPI**](/what-is-wopi/) or have read our previous article on [**using WOPI to embed Microsoft Office**](/using-wopi-to-embed-microsoft-office/), you’ll know that one of the hardest parts of [**implementing WOPI protocol**](/cspp-wopi-cloud-storage-partner-program/) is verifying the inbound API requests using proof keys. Sadly, the documentation for WOPI protocol is incomplete and inaccurate on this crucial point. Those that succeed at implementing this often resort to a long and stressful trial and error process to make it work. Well, we’re here to help make the process as smooth as possible for you, offering a tried-and-tested method to save you time and stress. ## Why Should You Verify the WOPI Protocol Request Using a Proof Key? Requests from Microsoft to your WOPI protocol API implementation are not authenticated in a traditional sense - you don’t receive a JWT or other bearer token in a header or anything like that (other than your own Access Token). Instead, the WOPI protocol uses a cryptographic proof key based on a SHA256 hash of a specified chunk of binary data from your request. The proof is received in the HTTP headers **X-WOPI-Proof and X-WOPI-ProofOld.** If you don’t verify that the SHA256 hash is correct, you have no way of knowing if an inbound HTTP request is genuine or malicious. ## How Do I Verify a WOPI Protocol Request Using a Proof Key? There are three main steps to achieve this: 1. Verifying the timestamp 2. Constructing the content to verify 3. Verifying the SHA256 hash It’s worth noting that these guidelines assume that you already have a copy of the Discovery XML cached from earlier in your implementation. I won’t go into that for now, but please submit a contact form at the end of this article if you’re interested in learning more about this. ### 1.    Verifying the timestamp This step is often forgotten in a WOPI implementation, but it is important to prevent replay attacks. In theory, it’s easy; you need to get the X-WOPI-Timestamp header and make sure that it was sent within the last 20 minutes. In practice, this is a bit more difficult. There are two main challenges to verifying the timestamps: - **Timestamp differences** Most systems (e.g. PHP) use Unix timestamps – these measure the time elapsed since January 1st 1970 AD. The WOPI protocol timestamp measures the time elapsed since January 1st, 1 AD. This means a little bit of adjustment is required if you are not using a .Net-based system. - **Time measurement** The typical units used by various systems (e.g. PHP) for measuring time is seconds or milliseconds. Microsoft chose to use neither for the WOPI protocol timestamp. Instead, the timestamp is the number of 100 nano-second units passed since January 1st 1 AD. This means that you may need to do some conversions to get the right timestamp. Verifying the timestamp is pretty easy if you’re using .Net Framework or .Net Core. However, it can be a pain if you’re using any other system! ### 2.    Construct the content to verify The next step is to construct the content on which you are going to verify the hash. The key challenges here are: - The documentation is incorrect. - The implementation is processor-architecture dependent. - You need good byte-level handling features in your programming language. You can see a suggested sample of code in the [**WOPI protocol documentation**](https://readthedocs.org/). This code is incomplete and inaccurate, but it’s a good starting point if you’re working in C#. You’ll need to work out how to implement EncodeNumber(…), which is non-trivial if you do it right! I should also point out a minor annoyance - the precalculated “expectedProof” list size is wrong too. The size of the byte array for the timeStampBytes is eight as this is a long, not an int. The code still works if you leave it at 4, but it’s wrong! The next two challenges are all about byte handling; you’ll need a bit of background to understand this. The proof key that you receive with your inbound WOPI protocol requests (X-WOPI-Proof and X-WOPI-ProofOld) assumes a couple of things: - An int is 4 bytes (32 bits). - A long int is 8 bytes (64 bits). - Your system is Little Endian. If you are a Windows C# programmer, you’re probably okay. However, don’t make too many assumptions, particularly in this modern cloud era when your C# web service might get deployed on Linux! This is important because as part of constructing your content to verify, you need to convert your 32 bit integers into little endian byte arrays (4 bytes) and convert your 64 bit integers into little endian byte arrays (8 bytes). You should always check the endianness of your system when doing this to make sure you get the bytes in the right order. If you’re implementing in C#, it’s easy. If you’re implementing in another language with poor byte support (like PHP), it’s a bit more complex but still achievable (we have working implementations in several languages!) ### 3.    Verify The SHA256 Hash The final step is to verify the hash. Remember that the proof key you are verifying is supplied in the X-WOPI-Proof and X-WOPI-ProofOld headers. First, we should understand why there are two proof keys supplied. Microsoft periodically changes their private keys used to sign requests (this is good security practice). They also recommend that you cache the Discovery information in which the public key is held for 12 – 24 hours. This means that the key used to sign a request has been rotated from being the current key to being the old key. You need to check three different combinations of proof keys and keys to avoid strange timing problems: - Current Key + Current Proof - Old Key + Current Proof - Current Key + Old Proof The first challenge is to construct the Microsoft public keys used to create the hashes supplied in these two headers. Again, if you’re a C# .Net Framework / Core programmer, this is easy. Just use the Base64 encoded “value” or “oldvalue” from the Discovery XML along with the RSACryptoServiceProvider class and call VerifyData(…), and you’re done! If you’re using any other system, it’s a bit harder. For example, Microsoft uses a non-standard format for their public keys. My recommendation for anyone using PHP or Java etc, is to reconstruct the public key using the “modulus” and “exponent” (and “oldmodulus” and “oldexponent”) values from the Discovery XML. You’ll need an encryption library to convert these to a public key. For example, for PHP, you can use phpseclib for this. Once you’ve constructed the public key, you need to use an encryption library to verify the supplied SHA256. For example, you could use openssl for this. We’ve built working WOPI protocol and proof key implementations in a variety of languages. If you’re struggling or simply don’t have the time to do it yourself, please [**get in touch**](/contact/). We can get you up and running with a working WOPI protocol implementation quickly! For more information about [**WOPI integration**](/cspp-wopi-cloud-storage-partner-program/), [**Office 365 integration**](/using-wopi-to-embed-microsoft-office/) and other interesting topics, please see our [**blog**](/blog/). --- # Explaining the Relationship Between IoT, Big Data and the Cloud **Canonical URL:** https://www.mckennaconsultants.com/relationship-between-iot-big-data-and-the-cloud/ **Author:** Nick McKenna **Published:** 25 May 2021 **Category:** Cloud Services Big Data, IoT and the Cloud are digital solutions that enable better analytics and decision-making for your business. In this post, we explain the relation between IoT and Big Data, how Big Data and Cloud Data are related and the relationship between IoT, Big Data and Cloud Computing holistically, discussing some of the key benefits of this relationship. ## **Big Data, IoT and the Cloud** {#big-data-iot-and-the-cloud .wp-block-heading} The interdependent relationship between IoT, Big Data and Cloud Computing are utilised by market-leaders around the world, benefitting from innovation and giving them a competitive edge. With connectivity becoming increasingly necessary in our everyday working and social lives, we find ourselves with more devices connected to the Internet and to each other more than ever. [Digital transformation](/digital-development/digital-transformation/) and the need to have various devices connected and sharing data is now essential, for systems and communication within organisations to be clearer. The data transmitted by devices linked with the Internet is gathered for analysis, then patterns and trends are determined from this data gathering process to help the system perform well. **What is IoT?** The [Internet of Things](/cloud-services/internet-of-things/) (IoT) is a reference to a collection of devices or objects that are linked together using an Internet connection. The hub for the collection (the "things" part) is what sends and collects data using the Internet, which helps the devices to make decisions and remember particular patterns and routines for action to be carried out without any manual involvement. IoT is about the connection of multiple devices to the Internet. These devices can include multiple appliances that need to be connected for reasons including automation and real-time control of the device. As the IoT has both real-time and historical data stored, it can provide effective decision-making instructions to devices, and control certain actions and aspects of when and how they function. This technology enables your systems and devices to be automated cost-effectively. **What is Big Data?** Differing from IoT, Big Data is about the process where structured and unstructured large quantities of data are analysed to gain insight into varying business patterns. Big Data refers to data which is also too vast or complex to process using usual methods, including what's known as the four V's: **1. Volume:** The amount of data collected from a variety of sources. **2. Velocity:** The rate of which data is being processed. **3. Variety:** The different types of formats of data that are transferring across systems. **4. Veracity**: The ability of your Big Data tools and analysis to separate poor quality and high quality data. **What is** **The Cloud?** The [Cloud](/cloud-services/) is a centralised system that helps to deliver and transport data and various files across the Internet to data centres. The different data and programmes can be accessed easily from the centralised Cloud system. Cloud Computing is an economic solution, as it does not require on-site infrastructure for storage, processing and analytics. The scalability of Cloud Computing means that as your business grows, your technological and analytical capabilities can too. There are different types of Cloud services available, including [Microsoft Azure](/cloud-services/microsoft-azure-development/) Cloud development, and more information on each of these [varying types of Cloud solutions](/how-cloud-computing-works/) can be found in our previous guide. ### **What is the Relationship Between IoT, Big Data and Cloud Computing?** {#what-is-the-relationship-between-iot-big-data-and-cloud-computing .wp-block-heading} The relationship between IoT, Big Data and Cloud Computing creates ample opportunity for business to harness exponential growth. Put simply, IoT is the source of data, Big Data is an analytic platform of data, and Cloud Computing is the location for storage, scale and speed of access. #### **Is Big Data Related to Cloud Computing?** {#is-big-data-related-to-cloud-computing .wp-block-heading} Big Data is the large data set collected from large network-based systems. The Cloud is the location that this data is processed and accessed, usually using a software as a service (SaaS) model and utilising AI and machine learning to present data to users. Big Data and Cloud Data have a symbiotic relationship, as the Cloud infrastructure effectively enables storage, real-time processing, and Big Data analysis at scale and quickly. The biggest benefit of using Cloud storage for your Big Data is this scalability: Cloud storage is available on a pay-as-you-go basis. Essentially, the Cloud is the mechanism that serves, stores and presents the opportunity for users to access and analyse Big Data efficiently. Without Cloud Computing, there would be a huge amount of untapped potential within Big Data analytics, as current computers can't analyse this scale of data feasibly, if at all. At the same time, Big Data plays a role in the development of Cloud Computing because without Big Data, there wouldn't be anywhere near as much demand for Cloud-based solutions. So really, Cloud Computing services exist because of Big Data. The only reason we collect Big Data is that we now have the services capable of collecting, storing, and processing it. Simply, one would not exist without the other. A combination of the two can transform your organisation into an efficient, data-driven market leader. #### **What is the Relation Between IoT and Big Data?                     ** {#what-is-the-relation-between-iot-and-big-data .wp-block-heading} The Internet of Things refers to the world's collection of devices that gather and share information across various industries and sectors. In comparison, Big Data offers management and analytical capabilities for huge amounts of data across multiple platforms and systems. However, the interconnectivity between Big Data and Internet of Things means the two technologies share common goals and are predicted to follow a similar trajectory in the future. #### **So, How Is Big Data And The Internet Of Things Connected?** {#so-how-is-big-data-and-the-internet-of-things-connected .wp-block-heading} Once you can understand IoT and Big Data as separate solutions, you can appreciate why they work so closely with one another. When data is needed to be extracted for analysis reasons in a company, IoT is the source for that data. Big Data can then analyse and extract the relevant data to create the required information. As well as processing large amounts of data on a real-time basis, Big Data then stores the information using various storage technologies, making Big Data invaluable when it comes to utilising IoT's functionalities and the extraction of data. Another distinction lies in the data collection. For example, Big Data gathers data from human behaviour to create predictions or unearth behaviour patterns. In contrast, IoT's data is machine-generated to produce optimal performance in machines or determine predictive maintenance. However, they also work in tandem. IoT gathers immediate analytics data to support real-time decision-making. Big Data aids this function by acting as a storage solution for predictive analyses to anticipate future problems and create solutions. Working together, IoT and Big Data can examine inputs to show hidden correlations, unidentified patterns and expose new trends in your data set. The interdependent relation between IoT and Big Data means that as IoT continues to grow rapidly, there is increased pressure on traditional data storage leading to more innovative Big Data solutions. Therefore, we will see companies forced to upgrade their technologies and systems to align with this growing demand. Ultimately, Big Data and Internet of Things have common goals and rely on each other to achieve them by converting data into something actionable for businesses. For example, using real-time IoT insights combined with long-term Big Data analytics can be used to get a bigger picture of a company's overall performance over time. As these technologies continue to develop, particular industries will reap the benefits. Industries such as the automotive, shipping, and haulage industries will benefit from using IoT and Big Data. The insights and knowledge extracted from the technologies will improve the analytics process, making it quicker and easier, improve efficiency, save costs, and promote informed decision-making and forecasting. #### **How are IoT and Cloud Computing Related?** {#how-are-iot-and-cloud-computing-related .wp-block-heading} The IoT and Cloud Computing complement one another, often being branded together when discussing technical services and working together to provide an overall better IoT service. However, there are crucial differences between them, making each of them an effective technical solution separately and together. Cloud Computing in IoT works as part of a collaboration and is used to store IoT data. The Cloud is a centralised server containing computer resources that can be accessed whenever required. Cloud Computing is an easy travel method for the large data packages generated by the IoT through the Internet. Big Data can also help in this process. Combined, IoT and Cloud Computing allow systems to be automated in a cost-effective way that supports real-time control and data monitoring. #### **The Benefits of Using Big Data, IoT and the Cloud** {#the-benefits-of-using-big-data-iot-and-the-cloud .wp-block-heading} So why are Big Data, IoT and the Cloud such a good partnership? Well, there are numerous benefits for utilising both of these services by combining them, with a few of the main benefits outlined below: - Scalability for device data Cloud-based solutions can be scaled vertically and horizontally to meet the needs of Big Data hosting and analytics. For example, you can increase a server's capacity with more applications, or expand your hardware resources when necessary. The Cloud enables the expansion of Big Data and data analytics. - Scalable infrastructure capacity Big Data and Cloud Data can be used in conjunction to store large amounts of data and provides scalable processing and improved real-time analysis of data. The lack of physical infrastructure needed to get Big Data, IoT and the Cloud up and running together reduces costs and means you can focus on the improved analytical capacity rather than worry about maintenance and support. - Increased efficiency in daily tasks IoT and Big Data generate a large amount of data, which the Cloud provides the pathway for the data to travel. - Quicker use and distribution of Apps worldwide You can access Big Data remotely and easily from anywhere in the world to still carry out actions on devices when using the Cloud, allowing for better collaboration. - Advancement on analysis and review of the status of connected IoT devices A large number of devices can put pressure on Internet connection and creates the need for intelligent devices to send data to servers for processing versus to central servers. Now, you can be on the "edge" of processes, and access data from many areas within your network, respond faster to downtime and predict when errors may occur. Plus, using the Cloud with IoT helps to enhance security, as regular updates can be sent and knowledge of any breaches in infrastructure can be flagged up immediately. - Benefits from economies of scale Preserve business value with effective storage and management of your Big Data and IoT with the Cloud, which has in-built management tools, processing capabilities and applications to manage your resources. Using Big Data, IoT, and the Cloud together means you can have successful communication, connection and transference of data between devices, most effectively and efficiently. Cloud Computing is, in essence, an enabler. It enables a hosting platform for IoT and Big Data as well as process and data analytics. The main benefit of using Cloud Computing alongside IoT and Big Data is that it's a scalable, reliable and [agile](/agile/) solution for businesses. The relationship between IoT, Big Data and Cloud Computing is a synergistic interdependency that gives your business access to actionable insights through analysis and performance reports. To find out more about how you can use IoT and Cloud Computing within your business, please [contact us](/contact/) at [McKenna Consultants](/), so we can discuss how we can deliver a bespoke service to help you. Should you wish to learn more about the IoT and Cloud solution services we have delivered to companies in the past, then please check out our [case studies](/case-studies/). --- # Managing Digital Transformation in Business **Canonical URL:** https://www.mckennaconsultants.com/managing-digital-transformation-in-business/ **Author:** Nick McKenna **Published:** 1 January 2021 **Category:** Digital Transformation ## The Digital Debate Successfully managing your [**digital transformation**](/digital-development/digital-transformation/) is vital to the survival of your business in an increasingly digital landscape. This article will discuss the main digital transformation methods and how the advantages of digital transformation, overall, far outweigh the challenges you might face in the implementation of your strategy. In years gone by, companies created an asset (such as a machine, a workforce, a piece of intellectual property). They created a set of repeatable, predictable processes to exploit that asset to deliver returns and growth to shareholders. Typically companies worked in large time scales and would expect to be able to use their key asset to dominate a market for many years (or even decades). Financial assets were used to build large infrastructures that were perceived as barriers to entry for newcomers to a market. For example, a supermarket chain would develop a nationwide set of stores and supply chains that would be very expensive for another company to replicate and then exploit those stores and the supply chains for maximum profit. Then along came the Internet, followed by globalisation, [mobile phone Apps](/cloud-services/internet-of-things/), smartwatches, Amazon Alexa and the [Internet Of Things](/cloud-services/internet-of-things/). As a result, the development of huge new markets began, and lots of new competitors emerged alongside. The advantages of digital transformation are ever clear in this new, competitive landscape. ----- ### **The Pace Of Change** As software has become more and more core to businesses, the pace of a digital workplace transformation has accelerated. Software is perceived to be more quickly and easily changed than other components of a business. Large manufacturing machines are frequently hard to change, but their software allows them to be reconfigured to perform a variety of new tasks. Corporate culture is famously sluggish to change, but the four digital transformation methods mean that you can roll out new digital tools for real-time collaboration very quickly. Your customers’ expectations are also increasing more rapidly than in the past. More and more customers expect their products to be connected in some way to the Internet and their mobile phone, for example. One of the main advantages of digital transformation is that you can change how your customers interact with you and transform their experience with your company by digitising their customer journey and personalising it just for them. Digital transformation is hard enough without all the jargon terms that get thrown around. Before you read any further, here is a quick review of the top digital transformation terms, including: * Digital transformation * Software as a service * Platform as a service * Microservices * Digital platforms ----- ### **Software Development Terminology** **Digital Transformation** Digital transformation is used to describe the innovative and practical use of modern computer technology and modern management practices to improve the competitive standing of a company in the marketplace. As the world has moved faster in the 21st century, competition has become more fierce due to globalisation and customers have become more demanding, the old economies of scale business practices are no longer enough for companies to remain competitive. Digital transformation allows companies to unleash the hidden information from within and utilise it in new ways. Often this is to modernise their systems to meet radically shifting marketing demands. Equally, companies are improving the experience that their customers have when interacting with the company by presenting complete, accurate and up to date information by exposing information through modern APIs (Application Programming Interfaces) and Software As A Service (SaaS). The software industry has enthusiastically adopted more lean and [**Agile**](/agile/) ways of working over the last twenty years and spreading those more rapid and responsive management techniques to harness the advantages of digital transformation company-wide. **Software as a Service (SaaS)** [**Software as a Service (SaaS)**](/why-is-systems-integration-important/) is a way of building a distributing software (usually over the Internet) where the software provider hosts the software on behalf of the end-user. This hosting is usually a cloud-based platform such as [**Microsoft Azure**](https://azure.microsoft.com/en-gb/). In the good old days, we would have described this as a “turn-key” type of solution\! In the modern world, this is a key part of a digital transformation. Typically this software is provided for a monthly license fee rather than a large, single upfront perpetual license cost. SaaS has been popular as it allows customers to reduce the burden of providing an IT infrastructure to run the software. Often Software as a Service is provided on flexible terms allowing customers to temporarily deactivate their accounts and reduce costs when those accounts are not in use. Popular examples of SaaS include **[Microsoft Office 365](https://www.microsoft.com/en-gb/microsoft-365)**, **[Toggl](https://toggl.com/)**, **[Jira](https://www.atlassian.com/software/jira)**, **[Box ](https://www.box.com/)** and many more. **Platform as a Service (PaaS)** Platform as a Service (PaaS) is an approach to creating [cloud-based](/cloud-services/) software that allows others to develop, run and manage software Apps. The use of the cloud allows companies to reduce their IT infrastructure management overhead and focus instead on creating an innovative Digital Platform as part of their digital transformation. There are many interpretations of the term Platform as a Service. At its simplest level, an example would be the [**Microsoft Azure cloud platform**](/cloud-services/microsoft-azure-development/) or the **[Amazon Web Services](https://aws.amazon.com/) (AWS)** platform. These platforms allow programmers, DevOps teams and other IT professionals to create, deliver and run applications on the Internet via on-demand databases, application frameworks, communications tools etc. **Microservices** Microservices is an evolution of the slightly older Service-Oriented Architecture approach to software development in which software developers create small, fine-grained services to perform highly focused individual functions with few or no external dependencies. Many see Microservices as another enactment of [**Conway’s Law**](https://en.wikipedia.org/wiki/Conway%27s_law) which states that “all systems developed by an organisation are a mirror of the structure of that organisation”. In other words, as software teams have become smaller, cross-functional and more focussed, so have their software products. The key benefits of Microservices are that they allow small amounts of code to be independently built, tested and deployed rapidly, thus avoiding the “big bang” release strategy of yesteryear. Microservices are a popular method of creating Software as a Service. An example of a Popular Platform as a Service mechanism for building Microservices is [**Microsoft Azure Function Apps**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-overview?pivots=programming-language-csharp). **Digital Platform** A Digital Platform is a modern, incremental approach to managing digital transformation and creating a new information communication system within a company. Typically, companies have a large number of disparate legacy systems before a digital transformation. The key challenge is to allow those systems to interoperate and to be able to aggregate and consolidate that information for presentation to the world in a Software as a Service manner. A Digital Platform typically decouples these systems and allows communication through a system-neutral mechanism such as an Enterprise Service Bus. Digital Platforms allow a “plug and play” approach to be taken to system development. Initially, Digital Adapters are created to allow legacy systems to communicate with the Enterprise Service Bus and response to updates and requests for information. Over time, the legacy systems can be progressively replaced with more modern systems that better match business needs. Dues to the decoupled nature of the Digital Platform (all communication is via the Enterprise Service Bus), this can be done with minimum impact on the rest of the IT ecosystem. Find our [**expert guide to using Digital Platforms**](/an-expert-guide-to-using-digital-platforms/) over on our [blog](/blog/). ----- #### **What are Digital Transformation Strategies?** A digital transformation strategy describes the process of a company repositioning itself in the digital economy, performing a digital transformation within the business. There are four main digital transformation methods, and each must be addressed to provide value to your industry: * Business process Digitalisation means access to data, analytics and new technologies in real-time. By managing digital transformation right, these insights can be extremely valuable to your business, allowing you to understand your customer behaviour and monitor KPIs better, so you can change and adapt your strategy appropriately. Overall, digitisation can lower costs and increase the quality of your output. * Business model process How does your business deliver value to your industry? This digital transformation method requires a reinvention of how you give value to your industry and customers, changing your strategy to create a real ‘game-changer’ and open up new growth opportunities. * Domain process The Domain digital transformation method realises the necessity of adapting to new technologies, and redefining one’s products and services to compete with innovative companies outside your industry or niche. * Cultural and organisation process Businesses need to adapt to the pace of change, just as consumer habits and preferences change over time. Redefining your organisation’s mindset, processes and capabilities to adapt to new technologies are often combined with prioritising Agile workflows and reliance on the wider business ecosystem. ----- #### **What are the Challenges of Digital Transformation?** The innovation of business models and processes are vital to leverage emerging technologies and remain a viable competitor, as well as overcome some of the common challenges of digital transformation that businesses face. Listed below are some common challenges faced by businesses and suggestions on how to overcome them. * Limited Budget Managing digital transformation can be expensive without long-term planning. Reduce your costs by consulting with an agency, like McKenna Consultants, who aid with business decision-making and make sure you’re making informed and beneficial decisions. Adopting an Agile approach and having a contingency plan are watertight ways to achieving successful digital transformation methods. * Employee Pushback Be transparent throughout the process of your digital transformation. The likelihood is that you will have to undertake a partial or full organisational re-shuffle, upon which you may experience employee resistance. To combat this, make sure that you empower and engage your employees at every step of your business transformation. * A lack of expertise Industry knowledge, talent and technology are integral to managing digital transformation. McKenna Consultants are digital transformation experts and could be the missing ingredient to your successful transformation. Check out our [case studies](/case-studies/) to see how we have helped our clients succeed, from building bespoke Digital Platforms or Apps and advising on Agile solutions to benefit your business. * Optimise internal operations and customer experience Without structural changes on your end, you won’t be able to provide a fully optimised customer experience to your market. Ensure that the changes you make are aligned with your business vision and goals, and involve your whole team in your strategy. ----- #### **Advantages of Digital Transformation** As all these changes are happening in the competitive environment of business, businesses are responding by aggressively beginning digital transformation programmes. Instead of shying away from the new digital world, businesses are embracing the digital world of commerce to become more competitive. There are many elements to a successful digital transformation, including: * New product and service opportunities * Breathing life into old products * New product or service development methods * Gathering and analysing data on a large scale * New methods of interacting with customers * A new approach to management * Increased profits * Increased Agility and innovation **New Product and Service Opportunities** The digital world opens up many new opportunities for creating new products that your company would not have dreamt of ten years ago. For example, a golf club manufacturer may have expertise in perfecting a golf swing and choose to sell a new mobile phone App that studies the form of a player’s swing. The App could measure motion and processing video information to suggest improvements to the player’s game. New products of this kind require the confluence of two worlds: digital expertise and domain expertise. The domain expert here provides knowledge of golf and the digital expert provides the know-how of how to build Apps. If you are interested in [**McKenna Consultants**](/) being your digital partner in developing your new App or for other digital transformation services, please fill in the contact form below for your free consultation. **Breathing Life into Old Products** Many companies have found that they can breathe new life into an older product by introducing a digital component or digital accessories. Take a look at the [award-winning ventilation product](/project/envirovent/) from EnviroVent, that was enhanced with a new digital mobile App (iOS and Android). This new App allowed EnvironVent to maintain its market-leading position in the ventilation industry. Your digital enhancement idea doesn’t have to be big, complex or expensive. Maybe your company could start with a simple [web portal](/app-development-services/web-application-development/) that allows easier access to information or provides a simpler mechanism for reporting problems. Perhaps you could build an App that provides real-time video to connect your customers directly with your technical support or engineering teams. **New Product or Service Development Methods** Developing digital products may require a rethink of your product development methods. Most companies have long, cumbersome, slow new product development processes that are (allegedly) designed to reduce risk and ensure a great product is built. Often these processes fail in this goal and create lukewarm products that are easy to manufacture on a large scale. Digital products are different in that they can be developed much more experimentally. McKenna Consultants help their clients build the smallest possible digital product that could be of benefit to their customers. We call this the Minimum Viable Product (MVP). Instead of building a software product with every imaginable feature stuffed in (including the kitchen sink), modern digital companies focus on delivering a small piece of software that they believe their customers will find valuable. This is called an experiment\! We can do this in the digital realm because the software has a very low cost of change compared to physical artefacts. It is easy to roll out a change to millions of users for your web portal because you only have to roll out the software change to a single server. The idea of building and releasing software as an experiment often runs counter to years of long, slow, de-risking development processes. This experimental approach works well in a rapidly changing competitive environment in which we can never be sure what our customers will value the most. We create a small experimental, release it, and if our customers like it, we do more of it. If they don’t like it, we do less of it. This approach also has the benefit of allowing us to respond to competitive changes rapidly and is key to managing digital transformation. Suppose a competitor suddenly makes an unexpected innovation. In that case, we can rapidly change our plans and match or beat their innovation because we only ever plan small, incremental releases of our digital software product. **Gathering and Analysing Data on a Large Scale** A great many businesses have failed due to taking risks relating to a lack of information, or sometimes an ability to sift through very large amounts of information. For this reason, the advantages of digital transformation can have a hugely positive impact on your business processes. A business that has been through a digital transformation typically takes advantage of modern [**Cloud computing technology**](/cloud-services/cloud-app-integration/) to store and analyse vast quantities of data. With digital transformation, you can track metrics and analyse data from your marketing efforts to increase the efficiency of your business and meet your goals. The data collected could be information on the usage of their products and services or marketing and sales data or other internal operational information. When you better understand your customers and their needs, you can use these data-driven customer insights to create a customer-centric business strategy. The insights gleaned easily form modern software can provide valuable steering information on where the market that a business service is heading in the future. Using this data allows a digital company to provide relevant and Agile content to customers and steal a march on competitors. **New Methods of Interacting with Customers** The Internet has created great new opportunities for interacting with your customers in real-time. For some companies (for example, those that sell their products through third-party retailers) the Internet has created their first real opportunity to interact with their customers directly on a large scale. [**Creating an App for your business**](/should-my-business-have-an-app/), for example, may provide a better overall customer experience, allowing for on-demand shopping and communications that you can take advantage of. Customer communication patterns are rapidly shifting, and many people take to Twitter, Facebook and LinkedIn to raise complaints rather than following a company’s old-fashioned complaints procedure. The real-time communication is pushing companies to become much more customer-focused and much less internally focused. **A New Approach To Management** Managing digital transformation requires a different management style from that of the 20th century. The 20th century was the century of economies of scale and delivering mediocre products and services on a large scale. The increased competitiveness and pace of change in the 21st century mean that companies following that old pattern will not survive. The art of modern management has become more about creating places where people can innovate and helping people remove barriers to rapidly delivering. The days of optimising efficiency and creating economies of scale are being replaced by being quick to market, innovative and delivering high-quality products and services. In the 21st century, the most successful companies are the ones that can innovate rapidly and deliver those innovations rapidly before the world passes them by\! To innovate in this way, companies need smarter people rather than more people. The days when the manager knew best are becoming a thing of the past. In the modern world, digital workers know more than their bosses do. The challenge for managers then becomes “how do I manage people who know more than I do?”. The answer, of course, is that you don’t manage them. You lead them instead\! If you are interested in learning about leadership in the modern world, have a look at our [**Management 3.0 training courses**](/agile/). The economics of the digital worker is a little bit different from the economies of scale too. In most of the western world (and increasingly in the rest of the planet), there are more digital jobs than people to do them. This means that digital workers have the luxury of choosing their jobs rather than being stuck in a job. The scarcity of labour is pushing companies to create better working conditions for their staff. It also means that companies are looking more and more to geographically distributed teams as their local labour pools dry up. Remote working presents huge cultural and brings challenges in managing digital transformation for companies, as they have no expertise in real remote working. **Increased Profits** One of the main advantages of digital transformation is improved efficiency and profitability. Using data-driven customer insights, enhanced data collection and greater resource management, you have a wealth of valuable data and statistics to guide your business goals and promote informed decision-making. Transparency, better management and a digital workplace for employees to access from wherever they are will filter through each level of your business and improve productivity and profitability. Plus, by optimising your technology when you go digital, you might find savings in cost per transaction, too. **Increased Agility and Innovation** Legacy systems are becoming a thing of the past, and [legacy system migration](/legacy-system-migration/) is now easier than ever. Moving to a cloud-based service, for example, can improve the performance and competitiveness of your business and keep you up to date with the latest technologies. When you’re able to improve your business operations continuously, you also update your employee skillset and knowledge. When combined with the increased data available, transforming your business in this way makes you more responsive to market trends and demands, allowing you to predict and innovate changes in your industry. ----- #### **Managing Digital Transformation with McKenna Consultants** Suppose you are CTO or CIO of a medium or large company looking at implementing a digital transformation. In that case, you are probably contending with multiple legacy systems that are not designed to talk to each other. Over the years, many large companies have invested large amounts of money in license fees for proprietary systems integration products or build highly specialised point-to-point integrations to deal with this challenge. The result is a large operational expenditure where the company becomes trapped in ever-increasing license fees, just to keep the lights on\! McKenna Consultants’ UK software development team offer digital transformation services by building open, progressive Digital Platforms for companies like yours, undergoing a digital transformation. Crucially, the Intellectual Property for the Digital Platforms that we build for our clients is 100% owned by our clients. Our Digital Platforms are cloud-based (usually in the Microsoft Azure cloud). Our Agile, progressive approach to building your software means that we build the Digital Platform around your existing systems and integrate it into your existing legacy systems. Our Digital Platforms are tailored to the unusual and specific array of a legacy system that forms the heart of your company’s current IT infrastructure. We meet the challenge of legacy systems by building bespoke “Digital Adapters” that understand your legacy systems and enable them to communicate with your new Digital Platform. All this means is that our clients’ businesses benefit from a new Digital Platform in the following ways: * Create new customer and business experiences by created modern APIs from legacy systems * No license costs for the core platform * You don’t have to abandon your existing legacy systems – we can leverage them in new ways * You can incrementally replace your legacy systems in a “plug and play” manner * Low risk, progressive “a bit at a time” strategy * The open nature of the platform allows multiple vendors to work on and interact with the platform * The cloud allows easy expansion of the platform over time with minimal infrastructure overhead **Interested in Learning More?** This blog post has been just a taster on digital transformation methods and the advantages of digital transformation for your business. The bottom line is that basic survival depends on managing digital transformation, and a great digital transformation can help ensure your increased competitiveness in your market. If you are looking to develop your own Digital Platform, discuss digital transformation services, or you would like to get more out of your legacy systems and implement an incremental transformation, please fill in the form below and **[get in touch](/contact/)** with us today. --- # Digital Transformation and Change Management Featuring The North Pole **Canonical URL:** https://www.mckennaconsultants.com/digital-transformation-and-change-management-featuring-the-north-pole/ **Author:** Nick McKenna **Published:** 18 December 2020 **Category:** Digital Transformation Over the last few years, we’ve been involved in a lot of [digital transformations](/digital-development/digital-transformation/) and change management strategies for a wide variety of organisations. Digital transformation and change management go hand in hand and are something that many businesses forget about when undergoing a digital change. As a way of showing you some of the best examples of digital transformation and the advantages of digital transformation to your business, we’ve used Santa’s workshop as an example of how to go about a full digital transformation journey. **Identifying Santa’s Problem** The population of the world is around 7.8 billion people today. That’s a lot of gift ideas to come up with and potentially a big manufacturing problem - and that’s before we’ve got to the peak delivery demand bottleneck. Beyond that, Santa and his Elves need to manage a naughty/nice list of around 2.2 billion children. Their digital transformation journey needs to be considered throughout every aspect of the workshop to be successful at Christmastime. So, how can Santa Claus use innovation and digital transformation to get all the presents in front of all the world’s children in time for Christmas? ## **The Digital Transformation Journey of The North Pole** **1. Change Management Strategy: Agile and Lean at The North Pole** Firstly, Santa, Rudolph and the Chief Elf need to work on their digital transformation and change management strategy to improve the entirety of Operation Christmas 2020. They must do this by aligning their goals and embracing new processes and technology while keeping their customer experience at the forefront. So, the team begin to work on some value stream maps. The real value every Christmas is based around is Santa delivering working presents to the good children within a specific 24 hour period (although time zones give a little more flexibility). The team need to create small, cross-functional Elf Teams who can go all the way from Letters To Santa (concept) to deliverable presents. Each Elf Team needs to form part of a larger “Polar Express” Release Train, which is focused on a particular region of the world. The primary constraint on the value stream is identified as the “naughty” list. There are many delays in getting reports in from the “Elf On The Shelf” Teams about how good the children have been this year. The solution is to incorporate an “Elf On The Shelf” into each Elf Team and eliminate the transport batch. This solution means that less waste is being generated by the Elf Teams (waste is identified as toys that are being made for children who it turned out were actually on the naughty list) as they have more up to date information on children’s behaviour. Each Elf Team now will have a “Toy Owner” who has the responsibility of working out what each child would like for Christmas based on the ever-changing and unpredictable desires of their group of children. Before this, different Elves should be making multiple copies of the wrong toys for good children. An “Elf Master” will also need to be appointed to each team to coach them through the transition and facilitate communication with the other teams. Let’s not forget, the Elf Master must also lead their team in joyous Christmas songs and carols to keep morale up. All of this will contribute to successfully undergoing a digital transformation and change management so that no one is confused or struggling with all the new technological changes and systems. **2. Using Augmented Reality** Now for the introduction of new technology, the Elves should be using [Microsoft’s Hololens](https://www.microsoft.com/en-us/hololens) technology to create an Augmented reality experience for the cross-functional Elf Teams whilst building the toys. They will be able to see in real-time a three-dimensional image of the toy they are creating, leading to a greatly reduced defect rate in the production system as the toys produced will always match the original specification. **3. Opting for a Cloud-Based System** From late November until the end of December, Santa’s workshop is very busy. A paper-based system cannot scale very well and will take a long time to find individual letters from children and the reports from the “Elf On The Shelf” Teams can often be mislaid. Implementing a cloud-based system using [Microsoft Azure ](/cloud-services/microsoft-azure-development/) would automatically scale up as demand increases rapidly over the festive period. The [robustness of the data storage](/how-cloud-computing-works/) and Azure Function solution means that no letters can be lost and all “Elf On The Shelf” reports will be received by Elf Teams in less than one minute. **4. Building Santa’s App** Santa and the Elf Masters need to find a way for the Elf Teams to monitor the naughty and nice lists in real-time, so that they can decide on which children will receive which gifts. By creating an [App for iOS and Android](/app-development-services/), it means that any of the Elves can download the lists on to their mobile phones giving them instant access to the latest data in a format that is easy to understand. The App can even include the sound of Christmas bells to cheer the Elves along as they work to help with productivity levels. **5. Improving Productivity for Remote Elves** The “Elf On The Shelf” Teams also waste a large amount of time travelling back to the North Pole every night to submit their behaviour reports and so a [progressive web App](/app-development-services/web-application-development/) needs to be created, which they can use from their laptops, phones or tablets to submit their reports. The [benefits of a progressive web App](/progressive-web-apps-explained/) will allow them to spend more time causing mischief around the children’s homes and less time travelling. **6. Creating Santa’s Smart Workshop** Santa’s workshop also needs to be converted into a Smart Workshop. Through the [Internet Of Things](/cloud-services/internet-of-things/) software, various toy making tools and machines can talk to each other and an App created specifically for the Chief Elf. The tool usage can be monitored so that pre-emptive maintenance of tools can be undertaken, leading to a reduced failure rate of tools so that the Elves can focus their time on creating spectacular gifts for good children! The Chief Elf will also be able to see and predict which tools are under-utilised and which tools the Elves need more of to help manage the process. **7. Integrating Rudolph’s Artificial Intelligence** Finally, the delivery of gifts to good children needs to be considered. By integrating [an artificial intelligence program](https://azure.microsoft.com/en-gb/products/ai-services/?activetab=pivot:azureopenaiservicetab) within Rudolph’s red nose sensor, Rudolph’s already excellent nose can be fully optimised. Rudolph’s nose will be able to provide real-time information on the speed and position of delivery to the AI. The nose takes delivery address, time zone and daylight savings information to the AI so it can generate, monitor and adapt an optimal route for present delivery on the big night! Well, there you have it: innovation and digital transformation galore at Santa’s workshop! We hope all these improvements make Christmas 2020 one of the best Christmas holidays ever for children all over the world! ### **How Can Your ‘Workshop’ Benefit from the Advantages of Digital Transformation?** - **Grow in tandem with the expansion of the Internet of Things** As a result of the Coronavirus pandemic, the world has been forced to digitise, and we are now more reliant than ever on devices to remain connected. From virtual health appointments to working from home, the [Internet of Things](/are-you-thinking-about-iot/) is ever-present in our daily lives. The network of devices like phones, tablets and computers to cars, kitchen appliances and industrial machinery has grown. So, what does this mean for your business? Well, for starters, working from home – the new normal for most of us – is made easier with modern, reliable internet speeds and AI assistants like Siri and Alexa. These tools help us manage our day while we work remotely, including calendar scheduling and reminders. The Internet of Things allows many workers to work remotely, giving them access to important documents on multiple devices, the ability to respond on the go and replacing face-to-face communication with real-time video conferencing. In a nutshell, embracing the Internet of Things makes remote working possible across several sectors, providing more freedom and flexibility to employees. It has the potential to make the workplace life and business processes much more productive and efficient, as well as improving the quality video conferencing and virtual meetings as we all embrace the changes. - **Ease demand on your operations using cloud storage** Your [existing legacy system](/legacy-system-migration/) may struggle to cope with the demands of an increasingly digital workspace, of which trends indicate that [remote working will continue](https://www.techrepublic.com/topic/tech-and-work/) in many businesses going into 2021. Cloud systems allow easy collaboration on projects in real-time, and allow users to download data for later use. Whether your company opts for a SaaS, PaaS or IaaS platform, one thing is for sure, that digital transformation to a cloud-based solution is paramount for maintaining or even improving your company’s efficiency and employee productivity. - **Use big data analytics to your competitive advantage** [Big data and big data analytics](/relationship-between-iot-big-data-and-the-cloud/) let you examine huge quantities of data to see patterns, correlations and insights about consumer behaviour – almost instantly! These processes allow you to make more informed business decisions, improve your operations and, most importantly, provide a better overall customer experience. If your workshop could do with a digital transformation journey of your own or if you would like to discuss further the advantages of digital transformation for your business, please [contact us](/contact/) to find out if we can bring the magic of Christmas to your organisation! To see some of the best examples of digital transformation we have helped with over the years, then please check out our [case studies](/case-studies/). --- # Legacy System Migration: Moving to Modern Technology Without Pain **Canonical URL:** https://www.mckennaconsultants.com/legacy-system-migration/ **Author:** Nick McKenna **Published:** 12 October 2020 **Category:** Systems Integration ## What Is Legacy Migration? A legacy system is an outdated computing software or hardware that is still in use. While these systems may still meet the requirements they were originally designed for, they are typically based on old technologies that are no longer common. A legacy system migration involves moving an old IT system – a legacy system – to a newer hardware infrastructure or software platform. ## Why Should My Business Migrate? Migration from legacy systems to a cloud-based service, in particular, can improve the performance and competitiveness of your organisation. System performance is often poor, and maintenance costs are high. The incompatibility with new technologies can bring difficulty and problems when altering these systems as they can no longer be kept up to date at the same speed at which the business wishes to innovate and change. The lack of vendor support and regular updates for old systems can compromise your data security. Therefore, data migration from legacy systems is imperative to ensure a functioning IT system. A legacy system migration requires a modern, flexible, easy to update, system that can adapt to changes with a minimum of interference in the ongoing business operations. System migration is the process of transferring old IT systems to a newer hardware infrastructure or software platform to keep up with current technologies. There are two types of legacy system migration: 'lift-and-shift' and transformation. A lift-and-shift legacy migration is a means of migrating your application and its associated data to a [cloud](/cloud-services/cloud-app-integration/) platform without redesigning the App. This type of legacy IT migration is generally initiated by a company’s IT department when the current system does not perform as expected, if your system becomes obsolete or if a new technology with a faster processor becomes available. A transformation legacy migration can be driven by any change in your company’s direction, or if your legacy system does not support your business process or inhibits user experience. ## Building a Legacy System Migration Strategy ### How Do You Successfully Transform Your Systems? Planning a successful system migration can be a lengthy process. Often the solution to this problem is seen as spending several years developing completely new systems with complex data migration, with one “big bang” at the end, when old systems are turned off, and new systems are turned on. This method of data migration from legacy systems and replacement, can easily run over budget and schedule. We suggest that replacing all of the complex systems in one go is too hard to achieve. The key to a successful legacy system transformation is to find a way to slowly, replace your existing systems piece by piece with newer systems, that closely match the business need and give you a competitive edge. We would typically recommend starting by identifying an existing system in need of replacement, or a new system that needs logic or information that is only present in your legacy systems. In this article, it is proposed that you host your new system on a scalable, robust cloud platform such as [Microsoft Azure](/cloud-services/microsoft-azure-development/) or Amazon AWS. Still, it would be possible to implement this approach entirely in-house. The **“Digital Edge Platform”** is our solution to simplify the strategy of transforming and migrating legacy systems into the leaner more [agile](/agile/) software of the future. The Digital Edge Platform is not actually a platform; buying into a single, proprietary platform is generally not a good solution for businesses, as it simply replaces one ageing monolith with another. The Digital Edge Platform is a highly flexible set of tools and techniques made by providers such as Microsoft, Google, Apple etc. that can all be used in an open systems approach, making your legacy system transformation easier. ### What are the Steps to Completing Data Migration from Legacy Systems? 1. **Identify the data, format, location and sensitivity** Understand what data you’re moving, the format it’s currently in, and what format it should be in post-migration. If you’re moving sensitive data, make sure any security measures are followed. 2. **Determine technical, time, and financial requirements** Be realistic with your estimations. Take the process one step at a time, and take the time to understand each aspect from source data to configuration to testing. The process of data migration from legacy systems can be lengthy and can require assistance from finance, IT, developers and engineers to work out budgeting and technical aspects of the project respectively. 3. **Back up all your data** Save all your important files in the event of a system crash, or if a hard drive failure occurs. Create an appropriate risk assessment report and an inventory of your assets to monitor in case of any compliance issues. 4. **Execute your data migration plan** Follow each step of your data migration plan. 5. **Test the system after each phase of your migration** Make sure that your system migration has worked. Test for minimal downtime, data integrity, ensure that no data is lost, and check that your applications are fully functional post-migration. 6. **Follow up with any maintenance of your data migration plan** Perform regular check-ups on your data migration plan to ensure that it is all in working order. ## The Enterprise Service Bus The diagram above shows how a Service Bus can be used to organise asynchronous (or synchronous) communication between system components. In this example, three new business-focused services are exposed in the cloud platform. These could be services such as a Sales service, a Debt Management service, a Customer Information service etc. They are technology services defined in terms of the business that is using them rather than technology-focused services that will never be valued or understood by business people. A “service” in this sense could be a RESTful web service that allows orders to be taken from [web applications](/app-development-services/web-application-development/) or [mobile applications](/app-development-services/), for example. There are other technical options available for service implementation, but this example suffices for illustration. The services are accessed by web applications, mobile applications and whatever else needs access to them, all using modern, decoupled communication. Services can be re-used by a multitude of applications, both internal and external to the business. Services are generally small and focused around satisfying a single business need. Keeping the services small makes them easier to change as the business changes, easier to test, lower in cost to maintain, plus many other benefits. The services all communicate over the Enterprise Service Bus (in red in the diagram). The Enterprise Service Bus is critical to this model as it allows services and technology components to communicate with other services and components without having to be directly aware of them. For example, a Sales Service may process sales orders and save them into a database. On a successful order, the Sales Service could send a “Sales Order Success” message on to the Enterprise Service Bus. This event can then be handled by one or more other services such as a Business Intelligence Service that generates reports on Sales and other aspects of the business. The Enterprise Service Bus provides a level of indirection between the Sales Service and the Business Intelligence Service so that they do not need to know about each other. If the Sales Service becomes unavailable due to a failure, the Business Intelligence Service carries on working. If the business decides to add a new Business Intelligence Service, the Sales Services does not need to change at all. The new Business Intelligence Service simply processes the same events from the Enterprise Service Bus as the old Business Intelligence service did! ### Legacy Application Adapters So far, this is great for new applications, but how could you leverage the critical logic and data that remains locked up in your legacy applications? The solution is to create “Legacy Application Adapters” that communicate with new services using the Enterprise Service Bus. Every Legacy Application Adapter will be a specialist, unique piece of software that allows access to previously locked-in logic and data. The Legacy Application Adapter will receive messages on the Enterprise Service Bus, process them and send replies out on the Enterprise Service Bus. Thus new systems are built that integrate with the legacy software without being tightly bound up to the legacy software. In the diagram above, it can be seen that one of the Legacy Applications has been removed and replaced with a Modern Web Application. However, the Modern Web Application can still communicate with legacy systems for vital logic and data via the Enterprise Service Bus. The key to it all is the loose coupling between services and systems provided by the Enterprise Service Bus. ### Gradually Replacing The Legacy Systems Using the tools and techniques outlined above (the **Digital Edge Platform**), the slow process of legacy IT migration can be seen. Achieved by replacing every legacy system with a modern, new service whilst maintaining continual business availability and critical business functions. As shown in the final diagram, eventually, no legacy systems will remain. ### The Advantages of the Enterprise Bus Service **1. Rapid Return On Initial Investment** The approach to legacy system transformation and the Services Oriented Architecture based around an Enterprise Service Bus presented here, has many advantages. Principally we are not throwing the baby out with the bathwater! A large amount of money has been invested in the existing systems, and we can leverage that for as long as needed, whilst building new systems. We do not require a huge one-off investment to get the legacy system migration going. All that is required is enough investment to build the first new service. Once that is successful, funding can be sought for the next small service, and then the next and so on. The piecemeal, business-focused approach also means that the development of new services can be prioritised according to business needs rather than technological concerns. The step-by-step process also means that we can release each service into production as soon as it is individually complete. This means that we generate a much more rapid return on investment for each new service that is constructed. The laser-like focus on each service also means that this is a very low-risk approach. Suppose something goes wrong with the development of an individual service (which is less likely in this approach anyway). In that case, the scope of the problem is limited to that service exclusively. **2. Multiple Easy Access** Having multiple small services focused around business needs means that multiple teams can easily work on this platform without stepping on each other’s toes. Each team can focus on delivering real value by creating a high-priority business service with a minimum of cross-over into another team’s work. It also follows that with a minimum of effort, some of the legacy systems can be replaced with a more standard, off-the-shelf application. For example, a company could replace its own ageing in-house CRM system with an off-the-shelf system such as Salesforce or Microsoft Dynamics. A simple adapter can be constructed to facilitate the integration with third-party software, at a much lower cost than the roll-your-own approach. **3. Higher Service Resilience** Service resilience is much higher in the Digital Edge Platform as each service is completely self-contained and does not share resources with other services. For example, databases are not shared between services. This means that a system outage in one service does not impact the other services. They will continue with their normal service levels. The same separation of services also means that the services can be scaled separately. Should you be using a cloud platform (such as Microsoft Azure), it is simple to scale the resources of high usage services and reduce the resources of low usage services, thus reducing your costs and maximising the return on investment. You can find the [benefits of cloud computing](/how-cloud-computing-works/) in our recent blog post. **4. Easy To Use** Small services are quicker and easier to change as the business rapidly changes in a modern, fast-paced environment. This allows your business to modernise, instead of being stuck in the legacy of the past. The Digital Edge Platform is completely open and extensible and includes no proprietary frameworks and incurs no proprietary license fees! It is the platform without a platform. Therefore, you can endlessly add or remove components and services of any shape and size, to adjust to your changing business requirements, without ever being stuck with a single vendor. The ability of the Digital Edge Platform to integrate both old and new technology means that progress will be made continually throughout the legacy system transformation process. New services can be created and deployed in days or weeks at regular intervals rather than in one big bang at the end. This continual agile delivery of value makes this approach unique and successful. **Next Steps?** Migrating from a legacy system can be a lengthy and daunting process, but one with huge benefits to your business. Legacy system migration allows you to keep up with current technologies and to gain better business value, as well as better manage and protect sensitive data. If you are interested in our legacy system migration service via a digital transformation, please fill in the form below for your free consultation, or [contact us](/contact/) for more information. --- # Should My Business Have an App? **Canonical URL:** https://www.mckennaconsultants.com/should-my-business-have-an-app/ **Author:** Nick McKenna **Published:** 29 September 2020 **Category:** App Development If you have ever thought “does my business need a mobile App?” you’re in the right place. Building a [**mobile App**](/app-development-services/) for your business is a serious endeavour, so you need to understand the importance of having a mobile App for business and the advantages of having one within your organisation. This guide will shed some light on why your business needs an App, the functional and marketing benefits of mobile Apps for business and the use of mobile Apps in business. **Does My Business Need a Mobile App?** --------------------------------------- By 2019, over a third of the human population on Earth had a mobile smart device such as an Android phone, iPhone or iPad. This statistic represents a new way undreamed of ten years ago to communicate with new customers. In the UK alone, 78% of adults use mobile and smart devices to access the Internet. In 2017, a mobile device was the most popular way for adults to access the Internet (73%). Only 43% of users used a “traditional” desktop or laptop computer to access the Internet, and the market for mobile Apps is only growing and getting bigger as more and more people each year switch to a mobile smart device over a computer or laptop. Developing a mobile App for business can offer valuable marketing opportunities and help you reach your target audience, as well as many other advantages that will help put you ahead of your competition. ## **Benefits of Mobile Apps for Business** ### 1. Direct Communication and Engagement with Clients and Customers One reason why your business needs an App is to improve direct communication with clients and customers. With access to a wealth of information at just a touch of a button, business mobile application development has opened the door to clear and direct communication between customers and businesses. The information gathered from customers using these Apps is invaluable for any business, with shopping behaviour and buyer personas being readily available to help enhance marketing strategies. ### 2. Improve Customer Engagement For customers, they must be heard and have an easy form of communication. Customers often communicate wanting to know the answer to a question regarding your service or their order. Or they want to complain. Mobile App design and development makes both these processes much easier for everyone; with the idea being that the quicker a customer can communicate their concerns and receive a response, the less likely they are to leave a bad review. ### 3. Increase Brand Awareness A mobile App is an extension of your brand and therefore is a chance for you to remain true to branding while being able to explore how it can be presented on a completely different [**digital platform**](/an-expert-guide-to-using-digital-platforms/); perhaps in a completely new and innovative way. It can also be thought of as a new advertising platform for the business, that can say whatever you want it to for your brand to get more exposure and therefore, awareness. Developing a mobile App for business allows you the opportunity to reach potential new audiences. As a completely new platform, business mobile application development can also cause a new demographic of customers to reach you, one that finds using Apps more preferable than a web browser. ### 4. Create a Useful Marketing Channel Custom App development also allows notifications and information to be sent to customers in an instant. If this information is useful and relevant to them, for example, containing information regarding exclusive deals and offers, it can help you make loyal customers who value using the App. ### 5. Create an Effective Loyalty Programme Suppose your company has a loyalty programme or is considering introducing one as a way of encouraging sales. In that case, a digitalised loyalty scheme via a mobile App is an effective method for building and creating a community of customers. Once customers are rewarded for their spending, they are much more likely to come back. A mobile App makes it a much easier and quicker process for them to do just that. ### 6. Get Ahead of Your Competition One of the important benefits of mobile Apps for business use is that it will make you truly stand out from the competition. Apps are very relevant in modern technology today, and using them for business is quickly becoming a trend. Still, it hasn’t quite taken off across the entire board yet, allowing you to get the edge over any competition. **Why Your Business Needs an App To Overtake Competitors** ---------------------------------------------------------- You are probably interacting with your customers in some way online right now. Maybe you have a simple web site, or perhaps you provide a service to your customers (e.g. an online store, a booking system, a product configurator etc.) via a web portal. At McKenna Consultants, we build **[web](/app-development-services/web-application-development/)**and mobile applications, which puts us in a great position for comparing usage amongst customers. For example, after one year of service, a new mobile payment App we developed for a utility company showed that over 60% of customers preferred to use a mobile App to make payments rather than use the mobile-friendly web site. This figure indicates a consumer preference in online interaction. ### 1. **To Create a Barrier to Entry** If you deliver your product or service to your customers via an **[iOS](/app-development-services/apple-mobile-app-development/)**(iPhone / iPad) or [**Android App**](/app-development-services/android-mobile-app-development/), then any new disruptive start-up entering your market will need to make that effort too. Thus, you raise the barrier to entry and protect your competitive position in the market. ### 2. **Offers Unique Services** A mobile App for your business will give you the ability to deliver your services in new and more competitive ways. For example, we have built a Product Finder App (Android and iOS) for one of our global PLC clients. This App enables its users to quickly scan one of their competitor’s products and find one of their alternative products that match the specification of the scanned product. This App feature allows our client to directly take business away from their competitors with very little effort, directly challenging their prices and product quality. ### 3. **Gives Customers a Truly Mobile Experience** Your App can also give you a competitive edge in the field (literally in the case of our client [**AuthenticateIS**](/project/authenticateis-mobile-app/)). Your App will work when your customers are out and about including areas where no Internet connection is available. AuthenticateIS have a market-leading web-based portal for certifying food chains but were increasingly being asked about providing a more portable experience for users. Their users were keen to directly input information into their system whilst in rural areas with no Internet connection. A mobile App was able to expand its service and deliver this new value to its customers, therefore giving further competitive advantage. User experience is arguably the main purpose of creating a mobile App for business, connecting your business to customers with ease and with minimal effort required from their end. ## **How to Have an App Made for My Business** It follows that if you want to grow your customer base in the modern world, you should seriously consider how the use of mobile Apps in business can benefit your interactions with your customers. They like the convenience, the familiar and easy App-like experience, and it puts your company’s logo on their mobile device home screen! For more information on [**how to build a mobile App**](/how-to-build-a-mobile-app-part-one/), please check out our dedicated blog post on the topic. ### **Consider Your Goals and Target Audience** While there are many cultural differences all around the world, many different viewpoints and different ways of doing things, mobile devices seem to be universal. Steve Jobs would relate the story of watching a child in India who had never seen a computer begin to immediately and intuitively use an iPad. We have seen the same effect for our customers in the mobile Apps we build for them. Apps are available in over 30 countries around the world and have been translated into a similar number of languages. At [**McKenna Consultants**](/), we also provide translation portal services so that our customers can keep their App text up to date all over the world. ### **IOS Vs Android Development** One area where there is some regional difference is in Android vs Apple device usage. For example, in the UK, 53% of smart devices in use are Android, and 46% are iOS. Globally, on average, the split is 86.1% Android and 13.9% iOS. The USA is dominated by Apple, with 64% of all devices being iPhone or iPad. Developing nations have much higher percentages of Android devices due to its lower-cost nature. In general, most of our clients create both iOS and Android Apps, but your customer profile may indicate that you can prioritise one platform over another. ### **Use of Mobile Apps in Business** There are many benefits of mobile Apps for business as outlined above. To see the other businesses that have benefitted from a mobile App developed by **McKenna Consultants**, then please view the [case studies](/case-studies/) below. In a world that is rapidly growing online, the benefits of mobile Apps for business are increasingly apparent. It is no longer a question of “does my business need a mobile App?”, rather, “how do I have an App made for my business?”   [McKenna Consultants](/) have a wealth of experience in developing mobile Apps for businesses across varies industries. To contact us regarding mobile App development for your business, then please fill out one of our [**contact forms**](/contact/). --- # An Expert Guide to Using Digital Platforms **Canonical URL:** https://www.mckennaconsultants.com/an-expert-guide-to-using-digital-platforms/ **Author:** Nick McKenna **Published:** 1 September 2020 **Category:** Digital Services ## **What is a Digital Platform?** A Digital Platform is a low-cost method of leveraging your existing IT systems into a unified platform. Using IT [system integration](/digital-development/systems-integration-services/), a Digital Platform allows your business to be more competitive in the modern marketplace. There are many elements and types of Digital Platforms, which is why the use of them requires planning and patience. Overall, the correct Digital Platform strategy could [transform](/digital-development/digital-transformation/) a business. Although embracing modernisation in this way may feel overwhelming for some at the start, following our expert advice in this guide to ensure the process is completed properly, will pay off in the future. ----- ### **The Problem** [**Managing digital transformation in the 21st century**](/managing-digital-transformation-in-business/) isn’t easy, with organisations over the years building up tens or hundreds of legacy IT systems (either off the shelf or bespoke), that implement strategic and tactical business processes. Typically, these systems are stand-alone or have limited ability to integrate with a wider enterprise. Some organisations have chosen to meet the challenge of modernising their systems by spending tens of millions of pounds on expensive ERP systems, or other systems integrations platforms. These projects often go off the rails in terms of cost, time and achieving objectives. ----- ### **The Solution** A Digital Platform is a [**cloud-based**](/cloud-services/cloud-app-integration/) approach to IT system integration, allowing these disparate legacy systems to evolve into a modern-looking, more flexible IT systems. The approach here is to create and use cloud-based systems that allow the legacy systems to exchange information with each other and, crucially, with a modern API that external systems can use. Digital Platforms (by definition) usually consist of these components: * A modern identity platform for login * A modern, friendly API * A Data Broker * An Enterprise Service Bus to allow communication between components * A variety of Digital Adapters ----- ### **Digital Platform Example** For the last 20 years, Acme Energy Company (AEC) has sold its services to corporate customers as a complete managed service. This has been very profitable. AEC has built up an array of billing, operations, metering, invoicing and other systems, all of which were best of breed when bought. These systems do not play well together and data is often (inaccurately) rekeyed between systems. In recent years, the energy market has moved away from single managed services into a market for an individual “pick n’ mix” approach where customers buy different services from different providers. AEC’s systems do not support this model and so AEC would like to replace all of its systems. The current estimate is around eight years to complete this work, by which time AEC will have become uncompetitive. Instead, AEC has chosen to implement a [**Microsoft Azure**](/cloud-services/microsoft-azure-development/) based Digital Platform. Each existing system will have a Digital Adapter that will allow the Digital Platform to read data from it and write data top it. The platform will be fronted by a modern REST API that will allow customers and App developers to harness individual services provided by AEC rather than AEC providing a complete, managed service. ----- ### **Scope and Versioning** As time goes on, behind the scenes, AEC can replace the ageing legacy systems with modern systems. Each modern system will have a Digital Adapter which allows the legacy system to be seamlessly replaced with a modern system without API users noticing the change. This means that one would expect the Digital Platform to change over time. Given the pace of change in modern businesses, this change may occur rapidly\! As such, the Digital Platform should be developed iteratively, with each new iteration built to production standard and delivering valuable end-user functionality. The scope of each iteration should be understood in terms of the business objectives that it services. Click below to view the next chapter on how to architect cloud based platforms for digital systems integration. ----- ## **How to Architect Cloud Based Platforms for Digital Systems Integration** Typically a Digital Platform design consists of these platforms and components: This diagram below illustrates how these components fit together. ----- ### **The Switchboard Approach** Later in this blog, we will explore different digital platform strategies for implementing a Digital Platform such as Switchboard, Sync and Hybrid. For now, this article will focus on the Switchboard approach. In this approach, a user is using a modern iOS mobile App which accesses the Digital Platform. The sequence of events is: 1. The user requests information using the modern API relating to a particular Product 2. The Identity Platform authenticates the user 3. The Security Manager authorises the request 4. The Data Broker dispatches messages requesting information about the Product to all Digital Adapters 5. Each Digital Adapter simultaneously returns all information that it has relating to the Product to the Data Broker 6. The Data Broker collates all the data and returns it to the App via the API response This sequence of events can be synchronous or asynchronous depending on the availability and reliability of the systems a Digital Adapter is connected to. ----- ### **The Microsoft Azure Implementation** Many cloud based platforms can be used for this type of digital systems integration. The diagram below shows a [**Microsoft Azure**](/cloud-services/microsoft-azure-development/) based implementation of the Digital Platform as described above: ----- ### **The Benefits** It can be seen that the Digital Platform approach allows a modern, REST API to easily overlay legacy systems through the use of cloud technologies and Digital Adapters. Click below to view the next chapter on how to do data modelling for your new Digital Platform. ----- ## **How to do Data Modelling for your New Digital Platform** ### **What do you Mean by Data Model?** The Data Model is a description of the data (from a business perspective) that the Digital Platform will manage. It describes as a whole the names, descriptions and relationships between the types of data that your Digital Platform will hold. It will be very useful to refer to as you develop the Digital Platform and it will also allow the clients of the Digital Platform (other computer systems, [Apps](/app-development-services/), Alexa etc.) to understand the information that they will have access to. In reality, you will probably create multiple Data Models for different services. For example, you may have different functional models such as a Billing Data Model, a Sales Data Model etc. Or you may have different models based on different regions. There are many different types of Data Model, the one used will depend on your exact business needs and operations. ----- ### **Formats** Although there may be varying types of Data Model, typically the Data Model will be represented using a standard notation such as a UML diagram or Entity Relationship diagram. This is usually accompanied by a Data Dictionary that gives a more detailed description of each individual piece of information. An example UML diagram is shown here: A fragment of the companion Data Dictionary may look like this: ----- ### **Scoped, Necessarily Complicated and Flexible** As discussed at the start of the article, each iteration of the Digital Platform should be scoped to deliver valuable business functionality that delivers benefits to users of the Digital Platform. As such, the Data Model for the Digital Platform will be similarly versioned. Each iteration will change the overall Data Model in a defined manner. The Data Model for each iteration should deliver only the data required to deliver the business objectives for that iteration (and the previous iterations). Therefore the Data Model should be as simple as possible, but without shying away from necessary complexity. Many systems have failed over the years due to being over-simplified to the point of not being fit for purpose. Click below to view the next chapter on how to map data from existing legacy systems for your new Digital Platform. ----- ## **How to Map Data From Existing Legacy Systems for your New Digital Platform** ### **How to Map Data** The Data Mapping process is often a complex one, involving specialists in business functions and IT from across your organisation. It is common to discover multiple sources of data, some of which may conflict (more on cleansing data later on). Part of the mapping exercise is to create a view of the rules for deciding which set of data is definitive when data from different systems conflicts\! ----- ### **User Mapping and Technical Mapping** Data Mapping often comprises of two processes, usually done in sequence. User Mapping involves using a legacy system and recording where information from the Data Model can be found in the user interface of the legacy system. This usually involves filling in a document and taking screenshots as examples. This User Mapping document acts as a shared understanding of what information will become part of the Digital Platform Data Model. Technical Mapping usually happens next. This data mapping process consists of taking the User Mapping documents and interrogating the legacy systems from a technical perspective. This involves technical staff, such as computer programmers and database specialists, using APIs and database queries to discover how to access and modify the data specified in the User Mapping document. The purpose of the Technical Mapping documents is to discover enough information to allow each Digital Adapter to be created later on. The Digital Adapters are the components that retrieve and update information in legacy systems at the request of the Data Broker in the Digital Platform (see article 2 in this series). You can download a short example of a Data Map here that contains User Mapping and Technical Mapping information. Click below to view the next chapter on how to do data cleansing in existing legacy systems for your new Digital Platform. ----- ## **How to do Data Cleansing In Existing Legacy Systems for your New Digital Platform** ### **What is Data Cleaning, its Importance and Benefits?** Now, we should consider the data cleansing process within the legacy systems. Typically the data in legacy systems can be of poor quality and be inconsistent between systems. For example, a customer’s name may be Smith in one system and Jones in another. It is also possible that one system uses a number to uniquely identify each customer and another customer uses a completely different alphanumeric code. The process of normalising and correcting data across your systems is known as cleansing. ----- ### **Scoping And Cleansing** Earlier, we discussed the need to scope each iteration of your Digital Platform. This scoping will allow us to limit the amount of time-consuming and expensive data cleansing that we will need to undertake at any one time. Although you should automate your data cleansing as much as possible, cleansing is frequently a semi-accurate manual task requiring time and money. You may choose not to cleanse some data and trust that your new Digital Platform (specifically the Data Broker component described in our earlier section) will work out the “most correct” data when the client Apps requests it for your Digital Platform. Ideally, you’d undergo the data cleansing process before incorporating it into a Digital Platform, but sometimes it is just too uneconomic to do so\! ----- ### **Other Benefits of the Data Cleansing Process** There are other benefits to cleansing your data. Especially in global organisations, cleansing for a Digital Platform is a great opportunity for agreeing on common coding and identification practices for key information in your organisation. This could be agreeing a global system for labelling products, identifying customers or coding projects. In itself, this will improve cross-border understanding and co-operation within your organisation. Click below to view the next chapter on API design for a digital transformation. ----- ## **Application Programming Interface Design for a Digital Transformation** The next key activity is to design an API (Application Programming Interface) that client [**mobile Apps**](/app-development-services/), [**progressive web Apps**](/app-development-services/web-application-development/) and [**Internet Of Things**](/cloud-services/internet-of-things/) Apps can utilise to create a great customer experience. ----- ### **Anatomy of a Modern Application Programme Interface** A modern API is typically a [**REST API**](https://en.wikipedia.org/wiki/Representational_state_transfer) that exchanges JSON over the HTTPS protocol. This approach maximises the number of client App types that can leverage to the API. REST APIs have URL structures like this: * HTTP GET: `https://someapi.mydomain.com/v1/Orders/12345` This example would retrieve JSON data that represents customer order number 12345 like this: ```json { "orderNumber": "12345", "status": "Shipped", "deliveryDate": "2019-06-26T13:00:00Z", "... etc ..." } ``` REST APIs use the HTTP verbs such as GET, POST, PUT, DELETE to carry out API instructions. ----- ### **Versioning** Notice in the example above that “v1” forms part of the REST API URL. This is part of a common API versioning scheme. Whenever the contract of an API changes, a new version should be created, which simply increases the version number. As much as possible API providers should seek to maintain older versions of their APIs for as long as possible. This is because many Apps will use the API and not all users will update their Apps in a timely manner. Usage of API versions should be monitored and versions discarded when clients no longer use them. Click below to view the next chapter on authentication provided by an identity provider for an API. ----- ## **Authentication Provided by an Identity Provider for an API** A modern Digital Platform API typically uses the industry standard [**OAuth**](/integrating-auth0-with-azure-active-directory/) and [**OpenID Connect**](https://en.wikipedia.org/wiki/OpenID_Connect) to allow clients to Authenticate to the API. This functionality is typically provided by a third party Identity Provider system such as [**Okta**](https://www.microsoft.com/en-gb/security/business/identity-access/microsoft-entra-id), [**Auth0**](https://auth0.com/), [**Microsoft Azure Active Directory**](https://azure.microsoft.com/en-gb/services/active-directory/) etc. With OAuth, when the user tries to access a protected resource (such as the order above), they must provide a “bearer token” which was issued by the Identity Provider to authenticate their identity. If the user does not provide a valid token, then the user will be prompted to logon to the Identity Provider to obtain a token. ----- ### **Tokens** Tokens are typically provided as [**JSON Web Tokens**](https://jwt.io/) and they look something like this: ```json { "ver": 1, "jti": "AB.j5d093ynt095y4nt45uth409gn4mh59", "iss": "https://okta.somewhere.com/oauth2/8947dh63487326hx8", "aud": "p349tcu4ogjmpgeo", "iat": 1561553243, "exp": 1561556843, "cid": "uictnp9cny3t9", "uid": "ciu3tm958mct089", "scp": [ "openid", "profile" ], "sub": "someone@somdomain.com" } ``` This JWT identifies information, including the following: * Issuer: `okta.somewhere.com` (the Identity Provider that issued this token) * Expires: the date and time (as a UNIX epoch) when this token expires * Audience: The application that this token authorises access to * And more… ----- ### **Providers** OAuth and OpenID Connect are very widely implemented by an identity provider such as Okta, Auth0, Microsoft Azure Active Directory, [**Twitter**](https://developer.twitter.com/en/docs/authentication/overview) (who invented it), [**Facebook**](https://developers.facebook.com/docs/facebook-login/guides/advanced/manual-flow), [**Google**](https://developers.google.com/identity/protocols/oauth2) and many, many more. Next, we look at implementing with the help of [**Microsoft Azure API Management**\!](/an-expert-guide-to-using-digital-platforms/) Click below to view the next chapter on implementing using Microsoft Azure management. ----- ## **Implementing Using Microsoft Azure API Management** [**Microsoft Azure**](/microsoft-azure-iot-hub/) provides an excellent component for easily managing your APIs in the cloud called [**API Management**](https://azure.microsoft.com/en-gb/services/api-management/). Typically APIs’ code would be implemented using a mechanism such as an Azure Function or web application. Azure API Management fronts the Azure Function and provides many functions such as out of the box integration with OAuth providers (so that application code does not have to implement complex authentication) and API definition (using YAML or other [**OpenAPI**](https://swagger.io/docs/specification/about/) formats). ----- ### **Benefits of Azure API Management** The required identity access management Azure offers provides the following benefits: * Scalable cloud platform * A single place to manage APIs * The ability to aggregate other web services into a single API tool * Built in logging and Application Insights on usage * Connectivity beyond Azure * Supports standard protocols such as OAuth Click below to view the next chapter on data synchronization strategies for digital transformation. ----- ## **Data Synchronization Strategies for Digital Transformation** Behind the scenes of your new Progressive Digital Platform, you will likely be aggregating data from multiple legacy systems and issuing instructions across various systems. For example, retrieving complete information about a customer may require retrieving information from a CRM system, ERP system, web shop and others. All of this requires a digital platform strategy for bringing that information together and keeping it all up to date. For this page, we will focus on data retrieval. However, the same principles apply for updating data. There are two primary data synchronisation strategies: periodic synchronisation of data and real-time switchboard. ----- ### **Switchboard** A “real-time switchboard” system deals with requests for information (e.g. the customer information explained above) by providing a single point of contact that queries the sub-ordinate systems (CRM, ERP, etc.) in real-time for each inbound request for information. This has the advantage of providing the latest, up to date information to the requester. This approach is only suitable where the systems being contacted have some kind of API access and are reasonably stable and quick to respond. In environments with a large number of legacy systems, this approach is unlikely to work well. ----- ### **Sync** Where systems are unstable, slow to respond or lack a good API, a periodic synchronisation of data may be a superior approach. In this approach at set intervals (once per hour/day etc.) a synchronisation Data Broker requests data about different data items (such as Orders) from all the different systems. The Data Broker collates all the results from the different systems and updates its own internal database containing a copy of the received data. This means that users making requests do not have to wait for unreliable systems that may not respond (the Data Broker database will be cloud-based and very reliable). It also means that the data provided will always be out of date. If the synchronisation job runs once per day, then data could be 24 hours out of date. ----- ### **Digital Adapters** In either approach, Digital Adapters are typically built that front the legacy systems and provide modern access for the Data Broker. Typically these are required as the legacy systems typically do not play well with more modern systems\! ----- ### **Hybrid** In a more sophisticated platform, a mix of both approaches may be suitable to accommodate the variance of reliability of the legacy systems that contain the data being requested. Click below to view the next chapter on access logging, legal issues and debugging for your Digital Platform. ----- ## **Access Logging, Legal Issues and Debugging for your Digital Platform** Progressive Digital Platforms typically have various monitoring and logging mechanisms. These mechanisms allow for simple availability monitoring, or sometimes a more detailed access log is needed. ----- ### **Access Log** In low-trust environments, it may be important to track which users are accessing which data when to discover suspicious patterns of activity. For example, in financial institutions, unusual patterns of credit card activity may be flagged. ----- ### **Legal Issues** Access Logging is a thorny legal issue and legal advice should **ALWAYS** be sought when implementing such a system. Digital Transformations typically cover multiple countries and legal jurisdictions where data protection legislation varies and the degree of consent required (if it is even legal) for monitoring system usage will vary. ----- ### **Debug Support** Logs can also allow the replay of previous data changes requested by users which is very useful when tracking down difficult to repeat bugs. If a transaction log is kept as part of the data synchronisation or modification processes, then those transactions may be repayable by a tester or programmer when tracking down system errors. This typically requires some forethought and incorporation into the overall system architecture. ----- ### **Microsoft Azure Application Insights** [**Microsoft Azure Application Insights**](https://learn.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview) is an excellent application performance management system and logging platform. It neatly provides extensive performance information (request rate, time to process requests, failure rates etc.) for cloud-based applications as well as providing a great platform for unifying logging in a widely distributed Digital Platform. It comes with a complete query language and is highly recommended for use in Digital Transformations\! There you have it, our expert guide to using Digital Platforms. We appreciate there’s a lot to take in there\! So, if you have any questions or want to know more about how we can help you with your Digital Platform, then please [**contact us**](/contact/). --- # Integrating Auth0 With Azure Active Directory **Canonical URL:** https://www.mckennaconsultants.com/integrating-auth0-with-azure-active-directory/ **Author:** Nick McKenna **Published:** 9 July 2020 **Category:** Systems Integration Of course, here is the HTML fragment converted to markdown with the specified changes. Integrating Auth0’s OAuth mechanism with **[Azure](/cloud-services/microsoft-azure-development/)** Active Directory can be a little bit tricky\! The Auth0 integration documentation available on [**Auth0’s Azure Active Directory**](https://auth0.com/docs/authenticate/identity-providers/enterprise-identity-providers/azure-active-directory/v2) page doesn’t completely cover all the steps you need to take, so we’re presenting a more complete guide here. There are several core tasks, each of which is then broken down into steps: 1. Configure App In Azure AD 2. Create The Client Secret In Azure AD 3. Configure API Permissions 4. Create And Configure Auth0 Application 5. Create Enterprise Connection In Auth0 6. Enable Enterprise Connection For Application 7. Testing 8. Optional Azure AD Permissions There is also an appendix of handy information at the end\! Should you have any questions regarding any of these core tasks for Auth0 integration with Azure Active Directory, please [contact us](/contact/). ----- ## Task 1: Configure App In Azure AD You can find some help on this in the official [**Microsoft documentation**](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-configure-app-access-web-apis#add-credentials-to-your-web-application). The key steps are: 1. Navigate to Azure AD in the [**Azure Portal**](https://azure.microsoft.com/en-gb/get-started/azure-portal). 2. Click the “App Registrations” button in the side menu. 3. In Azure AD App Registrations, create a new App Registration. 4. You should now see the App Registration screen. 5. Enter the name for your application (you can change this later if you get it wrong). 6. Select "Accounts in this organizational directory only" (multi-tenant is beyond the scope of this article). 7. Configure redirect URI selecting “Web” and entering the callback URL https://{your-auth0-tenant}.auth0.com/login/callback (obviously, replace {your-auth0-tenant} with your Auth0 tenant name). 8. Click "Register". 9. You should now see the newly created app Overview screen. 10. **IMPORTANT\!\!** Copy the Application (client) ID from the overview screen of your newly created app registration, we'll need this later. **To find out how to create the client secret in Azure AD, click below to go through to page 2.** ----- ## Task 2: Create The Client Secret In Azure AD If you need some help on this, take a look at the official [**Microsoft documentation**](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-configure-app-access-web-apis#add-credentials-to-your-web-application) for this task. The key steps are: 1. Select the “Certificates & Secrets” area from the App registration side menu. 2. Click the “New client secret” button in the “Client secrets” section. 3. You should now see the Client Secret creation dialog: 4. Enter the name “Auth0”. 5. Select expiry "Never". **NOTE:** If choosing another option there will need to be a future manual intervention to create and configure the new client secret. 6. Click the “Add” button. 7. You should now see the new client secret listed in the “Client secrets” section. 8. Copy the generated client secret from the “Value” column and keep it in a safe place. YOU WILL NEVER BE ABLE TO ACCESS THIS AGAIN and you will need it later\! **To learn how to configure API permissions, click below to go through to page 3.** ----- ## Task 3: Configure API Permissions To find more help on this task take a look at the official [**Microsoft documentation**](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-configure-app-access-web-apis#add-credentials-to-your-web-application). We need to configure access to the MS Graph API for retrieving basic user profile and directory info (some of which will find its way into Auth0 via the sync when the user logs in via Auth0). This will be done with delegated permissions which give access to the 'User.Read' and 'Directory.Read.All' permissions. The key steps are: 1. Start on your App registration overview screen. 2. Click the “View API Permissions” button. 3. You should now see the API permissions screen. 4. You should see that “Delegated” permission for User.Read is already configured by default. If not, follow the steps below replacing Directory.Read.All with User.Read. 5. Click “Add A Permission”. 6. You should see the “Request API Permissions” dialog. 7. Select “Microsoft Graph”. 8. You should see the following: 9. Select "Delegated Permissions". 10. This should reveal the “Select permissions” search field. 11. In the search text field under the "Select Permissions" heading enter the text 'Directory.Read.All'. This should result in the following results: 12. Tick the checkbox next to the “Directory.Read.All” permission. This should result in the following: 13. Click the "Add Permissions" button. 14. OPTIONAL: If we want to avoid users having to manually accept giving our application access to these permissions we could click the "Grant admin consent for YOUR\_AZURE\_AD\_DOMAIN" button. **To find out how to create and configure Auth0 application, click below to go through to page 4.** ----- ## Task 4: Create And Configure Auth0 Application For this task, you need to be logged in to your Auth0 tenant control panel. We’re assuming here that you are creating a mobile App that needs access to a web-based API (e.g. a REST API). The key steps are: 1. Open the Applications page. 2. Click the “Create Application” button 3. You should now see the Create Application page: 4. Enter your application Name. 5. Select the “Native” application option. 6. Click the Create button. 7. You should now be redirected to the newly created Application and see the following: 8. Scroll down to the “Application URIs” section. In the “Allowed Callback URLs” field enter https://{your-auth0-tenant}.auth0.com/login/callback. This should match the callback URL entered during the Configure App In Azure AD setup in Task 1. 9. Now we need to configure application grant types. Scroll to the “Application Tokens” section: 10. Click the “Show Advanced Settings” link. This should reveal the advanced settings: 11. The required grant types are “Authorization Code” and “Refresh Token”. These will be selected by default. 12. Click the “Save” button to save the configuration. **To discover how to create enterprise connection in Auth0, click below to go through to page 5.** ----- ## Task 5: Create Enterprise Connection In Auth0 You can find some help on this in the official [Auth0 documentation](https://auth0.com/docs/authenticate/identity-providers/enterprise-identity-providers/azure-active-directory/v2#create-an-enterprise-connection-in-auth0) via their website. The key steps are: 1. Open Connections \> Enterprise. 2. Click the + button next to Azure AD. 3. You should see the New Azure AD connection screen. 4. Enter connection name (Needs to be unique). 5. Get your MS Azure AD domain from the Azure AD overview screen in the Azure Portal (e.g. mycompany.com). 6. Enter the domain in the Microsoft Azure AD Domain field. 7. Enter your Azure AD app registration Client Id and Client Secret. You should have saved these while creating your Azure App registration in Task 2. 8. Leave everything else as default. 9. Click the 'Create' button. **You can learn how to enable enterprise connection for application by clicking page 6 below.** ----- ## Task 6: Enable Enterprise Connection For Application Some help on this can be found in the official [**Auth0 documentation**](https://auth0.com/docs/authenticate/identity-providers/enterprise-identity-providers/enable-enterprise-connections). The key steps are: 1. If you have just created the Enterprise Connection you should be looking at the connection already. If not navigate to Connections \> Enterprise \> Microsoft Azure AD \> *Your\_Enterprise\_Connection*. 2. Click the ‘Applications’ tab below the main heading. 3. Find your App in the list of Apps and enable the toggle next to it. **To learn about the steps which need to be taken for testing, click below to go through to page 7.** ----- ## Task 7: Testing For some help on this check out the official [**Auth0 documentation**](https://auth0.com/docs/authenticate/identity-providers/enterprise-identity-providers/test-enterprise-connections) here: The key steps are: 1. Open Connections \> Enterprise \> Microsoft Azure AD. 2. Click the try button. 3. You should be redirected to the Azure AD login screen 4. Login. 5. Accept the permissions request (may not be shown depending on Azure AD config for granting permissions – See Azure AD Permissions section below). 6. If successful you should see the "It Works\!" message. 7. An authorization code should be included in the URL. This can be used to hit the Auth0 token endpoint to retrieve a JWT. **To find out more about optional Azure AD permissions, click below to go through to page 8.** ----- ## Task 8: Optional Azure AD Permissions For non-admin users access to the Azure App registration is required. This can be achieved in two ways: ### Option 1: Admin Assignment 1. Open Azure AD. 2. Open the App Registration. 3. Open API Permissions. 4. Click the “Grant Admin Consent for Your Domain” button. ### Option 2: Manual Assignment 1. Open Azure AD. 2. Navigate to Enterprise Applications. 3. Select the application registration from the list of applications. 4. Click 1. Users and Groups. 5. Add the user to the application here. **Click through to page 9 (below) to view the appendix.** ----- ## Appendix This is some information that you will find useful when completing Azure Active Directory and Auth0 integration. **Azure AD OpenID config endpoint** [Microsoft's OpenID Connect protocol reference](https://learn.microsoft.com/en-us/entra/identity-platform/v2-protocols-oidc) **Azure AD Login URL** If you want to try logging into to your app registration on Azure AD to validate it is configured correctly to allow sign-in for your Azure AD user this can be done using the following URL: `https://login.microsoftonline.com/your-tenant-id/oauth2/v2.0/authorize?` client\_id=*your-app-registration-client-id* \&response\_type=code \&redirect\_uri=*your-app-registration-callback-url* \&response\_mode=query \&scope=offline\_access%20user.read%20directory.read.all \&state=12345 After logging in you should be able to retrieve an authorization code in the URL. You can use this via Postman to post to the Azure AD token endpoint and retrieve a JWT as follows: **HTTP POST** `https://login.microsoftonline.com/your-tenant-id/oauth2/v2.0/token` **HEADER** Content-Type: application/x-www-form-urlencoded **BODY** client\_id: *your-app-registration-client-id* code: *your-authorization-code* redirect\_uri: your-app-registration-redirect-uri grant\_type: authorization\_code client\_secret: *your-app-registration-client-secret* **Auth0 Login URL** To login via Auth0 you can use the following URL: [https://auth0.com/docs/universal-login](https://auth0.com/docs/authenticate/login/auth0-universal-login) client\_id=*your-auth0-app-clientId* \&response\_type=code \&audience=*your-audience* \&scope=openid%20profile%20offline\_access \&redirect\_uri=*your-auth0-app-allowed-callback-url* \&state=*some-random-string* \&code\_challenge\_method=*your-code-challenge-method* (i.e. S256) \&code\_challenge=*your-code-challenge* **MS GRAPH Admin Consent Request** This may be useful if you are planning to use admin consent workflow when users log in and need to request permission for the app to access their MS Graph profile. `https://login.microsoftonline.com/your-tenant-id/oauth2/authorize?` client\_id=your-app-registration-client-id \&response\_type=code \&redirect\_uri=your-app-registration-client-id \&resource=`https://graph.microsoft.com` \&prompt=admin\_consent --- # Are You Thinking About IoT? **Canonical URL:** https://www.mckennaconsultants.com/are-you-thinking-about-iot/ **Author:** Nick McKenna **Published:** 11 April 2020 **Category:** Internet Of Things ## Are You Thinking About IoT? If you are thinking about creating a new product or integrating an existing product with the [**Internet of Things**](/cloud-services/internet-of-things/), it’s probably because you’ve heard about the great benefits of IoT device integration. Simply put, what this means is making a physical device integrate with the virtual world of the Internet and all it has to offer. But what is IoT, and what is it specifically meant for? We answer all of these questions to help you decide whether IoT is the right choice for you. ## What is IoT? Generally, the Internet of Things refers to everything that has a connection to the Internet. However, it’s normally used to describe certain objects or devices that communicate with each other via the Internet. These devices don’t even need to be on the same network to communicate, as long as they are all connected to the Internet, communication between them is able to happen via the Internet of Things. IoT gathers data from all of the devices as well as being able to connect them so that actions can be carried out following analysis of the data. **Why is IoT Used?** IoT is used both in business and for everyday use at home. In business, it can have many benefits and is mainly used for: - Bringing you closer to your customers. - Improving organisational efficiency. - Giving you insights into your customers and how they use your products. This is information that you’ve never had access to before. IoT is now used in a range of different industries including; agriculture, manufacturing and the public sector. It’s becoming a very popular method for solving a variety of problems within different businesses across the world. **IoT Cloud Integration** To get these benefits, IoT device integration is needed and more specifically IoT cloud integration. 1. First, you’re going to need your device. It could be as simple as a lightbulb or something more complex like a fresh air ventilation system, a phone system or energy meter. 2. The next step is to connect your device to the [Cloud](/cloud-services/cloud-app-integration/) using standard IoT protocols, via a wi-fi network, or using a GSM card like the one in your mobile phone. 3. Once your device is connected to the Cloud, you can get messages back home into your existing IT infrastructure. Or, you can create new cloud-based applications to access the data gathered by your device. Alternatively, to allow you or your customers to issue instructions to your device. You can also connect your Cloud to other useful pieces of technology such as a smart [phone App](/app-development-services/), Amazon’s Alexa, Google Home, Apple Siri or the IFTTT system. The options are endless! **Azure IoT Services** Azure IoT development is a form of IoT cloud integration, which allows an [**Azure IoT Hub**](/cloud-services/azure-iot-hub/) to connect all your IoT devices together. The Azure IoT Hub is a secure, long-lasting and scalable component, making it a great choice of Cloud IoT infrastructure for any business or company. McKenna Consultants are software specialists which means that we have integrated our clients’ devices with the Cloud, and also the Cloud with their IT infrastructure. We have also built [**Cloud-based Apps**](/cloud-services/cloud-app-integration/), [**web portals**](/app-development-services/web-application-development/), reports, analytics, [**mobile Apps**](/app-development-services/), personal assistant device Apps and much more, that all connect to our clients’ Internet Of Things devices. We build best of breed systems that are bespoke to your requirements, meaning you get a great fit for your business needs and you also own 100% of the software and IP that is created. [**Contact us**](/contact/) today for your free initial consultation and see if we can help you get your device on to the Internet Of Things. **Case Studies** We have numerous experience in IoT device integration and Azure IoT Hub solutions. For examples of both, please view our [**case studies**](/case-studies/) to learn more about the clients we have previously helped. --- # What is the Relationship Between Digital Transformation and Cyber Security? **Canonical URL:** https://www.mckennaconsultants.com/what-is-the-relationship-between-digital-transformation-and-cyber-security/ **Author:** Nick McKenna **Published:** 26 February 2020 **Category:** Digital Transformation As [digital transformation](/digital-development/digital-transformation/) has become an increasingly popular strategy within organisations over the past few years, the need for improvements to digital cybersecurity has also grown. The effect and risk to digital cybersecurity that can be created during a digital transformation and after the process is complete, reflects the close working relationship between the two. Digital transformation security needs to be taken seriously as part of the transformation plan to ensure programs, technology and data are protected within your business. To help you stay safe during and after digital transformation, we have identified the main risks to security and also some digital transformation security solutions to help your digital transformation remain as low risk as possible. If you are unfamiliar with any of the terms, we’ve used so far then check out our [digital transformation jargon buster](/managing-digital-transformation-in-business/) glossary for guidance on terminology. ## Digital transformation security risks As with any digital security risks, the more data, programs and Apps you have within your digital platform, the more security risk there is. This makes the systems more vulnerable from different angles and points of entry for cyber-attack. Data is the most valuable asset a company can have breached, with GDPR as well as many other regulations and confidential company information available; exposure of data due to security hacks is the last thing any business needs or wants. During and after a digital transformation, more people and devices are connected via the internet to your platform than ever before, meaning that the risks are higher. For more information on the various [data synchronization strategies there are for digital transformation](/an-expert-guide-to-using-digital-platforms/), please read our detailed article. In addition, as a digital transformation requires an element [systems integration](/digital-development/systems-integration-services/) so that data can be shared between varying systems and platforms easily; it also means that once a cybersecurity breach happens and access to one system has been achieved, hackers can move much quicker through your network. In order to prevent this from happening, there can be no weak spots within your systems, and even much smaller platforms need to be properly secured, so you don’t risk the overall safety of your systems. ## Digital cybersecurity measures to take So, given the vulnerability of your systems during and after a digital transformation, security measures need to be put in place to reduce the risk as much as possible. Here are a few suggestions as to how you can do this: ### 1. Security Systems - **Secure your Apps and platforms**: If you are using the services of a bespoke software company to build an App or platform, then be sure that they have incorporated a built-in security feature for any software that is developed for the company. - **Security systems integration**: The integration of your security systems will greatly help the organisation of your digital cybersecurity, meaning if a security hack did it occur, you would be able to identify the details much quicker and with more ease. ### 2. Staff and Communication - **Communicating**: If you do receive any information, or patterns on your cybersecurity systems show that a security threat is potentially underway, then be sure to let people in your business know so anything suspicious can be flagged up and possibly prevent an attack from happening. - **Educate staff**: As more platforms, devices and users get added to your network, the more people there is to get up to speed with processes and security policies. Providing regular training for new recruits and when new devices and systems are added will help to keep everyone up to date and in check. ### 3. Testing and Best Practise - **Automated security**: As well as built-in security for various Apps, automated digital cybersecurity will provide automated checks on threats and implement blocks and sanctions on unusual activity. - **Routine testing**: Periodic tests to check for weaknesses and other avenues that a cyber-attack could occur, will help to protect your network and let you know where security improvements are needed. Should you have any questions regarding digital transformation and how this can be conducted with cybersecurity in mind, please [contact us](/contact/) for more information on our own bespoke software solutions. We have a wealth of experience dealing with digital transformation; please read our [case studies](/case-studies/) to see how we’ve helped others over the years. --- # Why Having A Disaster Recovery Plan Is A Failure **Canonical URL:** https://www.mckennaconsultants.com/why-having-a-disaster-recovery-plan-is-a-failure/ **Author:** Nick McKenna **Published:** 24 January 2020 **Category:** Cloud Services I was asked to fill in a supplier questionnaire recently. One of the questions was “Does your organisation have a disaster recovery plan?”. The answer to this for us is “yes,” it’s short and sweet and can be found on Confluence: “Everyone will work from home.” That got me thinking. Presumably, the questionnaire was designed to weed out weak suppliers who haven’t prepared for disasters! I think that having a disaster recovery plan means that an organisation still has a lot of work to do on its infrastructure and a cloud based system is the answer. ## Why Move to the Cloud? At McKenna Consultants, we have two main office units in the same building. If the building burns down (and we all get out alive), we can all work from home without missing a beat. We have accomplished this by not building a lot of weighty infrastructure. Fourteen years ago, when we first started out in business, we had servers, phone systems and all kinds of other IT stuff. We had critical filing cabinets with important papers in. We had it all, and we had to have a disaster recovery plan because of this system. Now, our email, calendar and other office systems are [cloud based](/cloud-services/cloud-app-integration/) including our: - product management software - phone system - holiday booking system - file system Everyone in our offices has three computers, with one of them always at each employee’s home, in case they have to work from home unexpectedly. Our phone system can run from iPads, PCs, phones etc. All of the critical paper documents we used to have are now all electronic. Our Internet connection is fed from two different pipes connected to the building by two different cables coming in from different sides of the building provided by two different providers. So, if the building burning did burn down, I’d have to mess around with insurance and replace the office furniture and some computers, projectors etc. However, the key point here is that from our customers’ point of view (which is the only one that matters), we wouldn’t miss a beat! The potential disasters that we might face today would be more along the lines of one of our critical suppliers having a major outage or is going out of business altogether. We’ve tried hard to mitigate this by sticking with cloud providers with a good track record and plenty of cash reserves. ## The Bigger They Come The Slower They Change Fourteen years ago, the cloud services we use today didn’t exist. So if you’re a long-standing large company and hoping to replicate our success, in terms of cloud storage for small business vs bigger companies it will be more difficult for all the usual reasons relating to organisational inertia; existing large infrastructure, strange in-house software that needs a VPN, unwillingness to experiment and try new things, to name a few. ## Fringe Benefits Initially, we were trying to create a more flexible workplace for our colleagues so that they could work around their family, personal and other life factors. We also wanted to create a very low maintenance environment and didn’t want to be focusing on installing Exchange Server service packs. We wanted to focus on the key creative task of building amazing software for our clients, which is what we do and why not having a disaster recovery plan is a success, not a failure. ## Cloud Based Systems If you are looking to build a bespoke, cloud based system to set your staff free from the obligations of IT infrastructure, fill in the form below to [contact us](/contact/) for more information on the cloud services we provide. --- # What is RPA and What is it Used for? **Canonical URL:** https://www.mckennaconsultants.com/what-is-rpa-and-what-is-it-used-for/ **Author:** Nick McKenna **Published:** 14 January 2020 **Category:** Digital Services Technology over the last decade has increased dramatically, particularly in terms of software and what it can do for our businesses to help us stay competitive and grow in our relevant industries. RPA is a great example of [how technology has advanced](/managing-digital-transformation-in-business/) in this time frame, however as it is one of the newer processes that’s been introduced over the last few years, you may not be sure of what it is and whether you should be using it or not in your business. For those of you who fall into this bracket, we have created this brief guide to RPA, explaining what it is, how it works and the pros and cons of introducing it in your business. ## RPA Explained RPA stands for Robotic Process Automation, which involves using software with artificial intelligence and learning features to complete certain tasks within a business, or within a particular project. These tasks are normally repetitive, following set of rules and tend to be of a high volume. The software captures and interprets the information as programmed within your ERP system, in order to achieve the required objective, whether it be answering queries, carrying out calculations, processing transactions or maintaining records. ## RPA Examples An RPA is usually used for administration or ad-hoc tasks, which follow a set pattern or guidelines for the software to easily and successfully carry out. Some popular RPA uses include tasks such as: - Sending an automatic response to an email or enquiry - Deploying numerous bots - Data or information processing including payroll, orders or registration - Transferring data between various systems - Payment transaction processing - Numerical data calculations ## How does RPA work? With RPA tasks being carried out in the same way as an employee would, it mean the software interacts with user interfaces of existing applications and then automatically carries out the set processes. As it uses the same interface as a human would typing, keyboard shortcuts, clicks and various other actions are also able to be carried out. RPA is able to process in a way which enables it to decide whether a next step, process or action should occur or not. Through logic parameters set by a developer, RPA is able to analyse the data which is put in front of it, all without any changes needing to be made to your existing systems within the business. ## Pros and Cons of RPA RPA, although beneficial to some businesses, may not be the right choice for others. Here is a list of pros and cons, to help you better understand RPA and whether it’s right for you. ### Pros - **Automates tasks** As RPA allows for work to become automated, it allows employees to be able to complete more complex and less structured tasks. - **Reduces the risk of any human error** The automated system can be more accurate and consistent, eliminating the chance of human error and the time it takes for those errors to be corrected. - **Relatively easy to use** With RPA working alongside existing IT programming and infrastructure, rather than instead of it, the software is relatively easy to use as all it needs is to be trained in the first instance. ### Cons - **Suitable but only for the right tasks** Some tasks and processes are more plausible for automated work than others, with the criteria for the task needing to be rule-based and repetitive within structured data which is able to be easily defined. - **Can have a mixed reception when introduced** If you wanted to implement RPA within your business, you should be warned that it is often met with mixed feelings from employees and therefore would need to be tested and introduced slowly to iron out any teething issues. Overall, RPA can be a great way to help your business connect to customers, process information and complete tasks quickly and effectively. However, make sure you avoid the temptation of getting RPA just for the sake of it, without thinking about your current employees, the task in hand and the current process you already follow for its completion. Other solutions, such as [systems integration](/digital-development/systems-integration-services/), [IoT](/cloud-services/internet-of-things/) or [cloud solutions](/cloud-services/cloud-app-integration/), depending on the task, may work better for your company and save you the effort, time and money it takes to implement RPA. For more information on [why systems integration is important](/why-is-systems-integration-important/), as well as other software solutions that can help you remain competitive, connect with customers and improve current processes within your business, please [contact us](/contact/) at [McKenna Consultants](/). --- # Application Software Integration Explained **Canonical URL:** https://www.mckennaconsultants.com/application-software-integration-explained/ **Author:** Nick McKenna **Published:** 10 January 2020 **Category:** Systems Integration ## Connecting Your Internet Of Things Device With Your App Most [Internet Of Things](/cloud-services/internet-of-things/) devices has a companion App that they work with. The App integration usually allows the Internet Of Things device user to remotely control the device, get status data from it and extract reports etc. The App appears to work seamlessly with the device, just like using a remote control with your TV, but what is going on under the covers? ### Cloud App Integration: How Does Your Cloud Work With IoT? In most (but not all) scenarios, [the App](/cloud-services/cloud-app-integration/) and [Internet Of Things](/cloud-services/iot-app-services/) device do not actually directly communicate. Instead, they both talk to “[Cloud services](/cloud-services/cloud-app-integration/)”. Your Cloud service is a piece of software written specifically for your device that allows your App to communicate with the device. Think of the Cloud as a telecoms network, your Internet Of Things device and your App as telephones, and you’re pretty close to the truth of how it works: 1. You tell your App to turn your device on. 2. Your App tells the “Cloud service” to turn the device on. 3. The “Cloud service” tells your device to turn on. It might seem a little more complex than it needs to be, but this arrangement allows you to control an Internet Of Things device from anywhere in the world. Or at least, anywhere in the world with an Internet connection. ### Alternative Application Software Integration Methods Not all Internet Of Things devices connect using Cloud services. Technically, if the device doesn’t connect via the Internet, then it’s not an Internet Of Things device. For example, you may not wish to connect your device to the Internet for security reasons. Instead, you may choose to just add it to a local WiFi network. In this scenario, your App would need to be connected to the same WiFi network to access the device. This is more limiting from the remote control perspective, but a little more secure. ### How App Integration Helps Build Customer Relationships If you have never had a direct relationship with your end users before, then an App that controls your Internet Of Things device could open up a lot of new opportunities for you. For example, if you’ve been selling fresh air vents for years via third parties, you probably don’t know your end users very well. Creating an App for your users to download that connects to a useful Internet Of Things device also gives you direct communication with the end-user. You can use your app to share information about your products and services, as well as to gather unfiltered feedback from real users. When it comes to system integrator companies, [McKenna Consultants](/managing-digital-transformation-in-business/) has a wealth of experience. We specialise in IoT, systems integration and cloud services (including cloud app integration), meaning we have extensive knowledge of all three, putting you in the safest of hands to help you [remain competitive in your industry](/should-my-business-have-an-app/), through bespoke software development. For more information on how we can help you with your app integration, please [contact us](/contact/) today. Or take a look at our previous [case studies](/case-studies/), to see how we have helped various businesses with application software integration. --- # Mobile App Development Step 1: What Do You Want? **Canonical URL:** https://www.mckennaconsultants.com/how-to-build-a-mobile-app-part-one/ **Author:** Nick McKenna **Published:** 22 October 2019 **Category:** App Development ## Defining The Scope Of Your Mobile App The first step of building a [**mobile App**](/app-development-services/) (for [**iOS, iPhone, iPad**](/app-development-services/android-mobile-app-development/) or [**Android**](/app-development-services/android-mobile-app-development/)) is working out what it should do, and it’s always the hardest step. In general, the narrower the scope of your idea, the easier it will be to develop and market, so the key challenge here is to tighten up and reduce your requirements to the bare minimum (known as the Minimum Viable Product). In addition, you also need to determine whether you require android mobile App development or apple mobile App development, depending on the purpose of the app and it’s users you may potentially need both. ### Where To Begin? You should start with the strategy for your organisation. What are you currently trying to achieve? Is it increasing market share? Is it breaking into new markets? Is it defending your market against new, disruptive competitors? Once you’ve answered this big question, you can focus on how you can use your new App to support your organisation’s strategy. ### Objectives Your App should have one or more objectives that align directly back to your organisation strategy. These could be objectives such as: - Significantly increase our market share in key demographics. - Create the most popular App in our industry. - Provide a part finder service that allows our customers to find substitutes for our competitors part numbers. ### **Features** At this stage you are ready to get into the details of your App and what it will actually do. Think about the objectives you have laid out above and how it might translate into the screens of your App, bearing in mind the most significant and important aspect of any mobile App is the user experience. A poor experience, or a poor user interface, means that people won’t come back to use your App again and again. ## **How do you design an App?** Don’t worry if you’re not technically savvy, there are lots of ways for non-techies to design a mobile App without investing in expensive computer programs. There is a popular technique known as “Paper Prototyping”, which requires: - Some paper widgets - Scissors - A surface to work on ( for example a magnetic whiteboard) - Something to stick the widgets to the surface (small magnets or blutac perhaps) - Some small post-its to attach notes to your prototype If you’re looking for some widgets, **you can borrow ours** (based on Balsamiq’s widgets). It doesn’t matter too much what your widgets look like as we aren’t trying to create a high-fidelity representation of our App here, we are just trying to do the much harder job of designing a great user experience. ### **Using widgets** The process of using the widgets is easy: 1. Start with the most important screen in your App. Which screen is it that delivers the real benefit to your users? Which screen most closely aligns with your App objectives? 2. Using your widgets, start to layout your important screen on a large surface. 3. Involve as many people from as many different backgrounds as possible in this activity. Top tip: Ideally, get some real customers and real users involved. You might find out that the great feature you had planned isn’t what they wanted at all. You’ll find that a diverse group breeds a lot more ideas and alternatives. 4. Don’t be afraid of having a few different ideas for your screen going at the same time so you can encourage all of the best ideas. 5. Once you’re reasonably happy with your first screen (it doesn’t need to be perfect), move on to the next most important screen and so on. 6. If you have a large enough surface, put the screens side by side and draw arrows or use red string to indicate how the users will navigate their way through them. ### **Write It Up** Once you’re happy with your initial idea, it’s time to write it up electronically so that you can easily share it with a wider audience. You could just take a few photographs or you could use a mock-up tool, but its best avoid high-fidelity tools such as Photoshop at this point. By using a mock-up tool you will also be deferring detailed decisions about the user interface until later, when the developers of your App will want to have some input. Remember, there are more changes ahead and the simpler the tools you use the lower the cost of change will be. If you think you may require a smartphone app development company to help you achieve your company’s objectives, then please [**contact us**](/contact/) at [**McKenna Consultants**](/). You can view our wealth of experience as a smartphone app development company via the case studies. --- # Bespoke Software Development vs Off The Shelf **Canonical URL:** https://www.mckennaconsultants.com/bespoke-software-development-off-the-shelf/ **Author:** Nick McKenna **Published:** 2 October 2019 **Category:** App Development The choice between bespoke software development and purchasing off-the-shelf software is a difficult one for companies. Every company is different and distinct from every other company, which means that no two companies will operate in the same way, have the same customers, or the same strategy and vision for the future. These differences allow companies to gain a competitive advantage over other companies, but it comes at a price. ## **Off-the-shelf software** Off-the-shelf software is usually significantly cheaper than bespoke software. Think of all the billions that Microsoft spent on Microsoft office so that their customers could buy it for £7.99 per month! No company would seriously consider building its own word processor software, when it could use Microsoft Office (or a competing product), for such a low price. Another common example that we come across is a company wishing to purchase an ERP (Enterprise Resource Planning) system to run their whole business. These systems are off-the-shelf and very expensive. Due to the high licensing and implementation costs, companies will sometimes approach us to build them a custom ERP system. Usually the economics do not change. It is still a lot cheaper to license an off-the-shelf ERP system than build your own! Again, think of the billions of Euro that SAP spent developing their ERP system. ## **Bespoke software solutions** However, some companies still go down the bespoke route. For example, we have built a completely web-based bespoke project tracking system for [Wolseley plc](/project/wolsley/). This is because no off-the-shelf system currently exists to provide the feature set that they were looking for. In this case, necessity was the mother of innovation; a very common reason for building bespoke software solutions. The business process that you wish to support is so peculiar to your own company that no off-the-shelf software can provide it. The evidence is not always so clear cut. Sometimes the off-the-shelf software provides 80% of the functionality that you are looking for. This creates a dilemma. Do you go bespoke and pay a much larger price for 100% or live with only 80% of your desired features? The key to answering this question is in understanding your business strategy. If the remaining 20% is for convenience rather than being strategically important to your business, then there is a good chance that you can live with an 80% match. Under these circumstances, you could manage the remaining 20% using a collection of spreadsheets. Alternatively, you could consider enhancing your system with some bespoke software. When [IMI](/project/imi-precision-engineering/) implemented the Tacton Configure-Price-Quote software, they needed to provide a method for customers to accept sales proposals online in a specific manner that Tacton did not support. We were able to provide the web-based software to bridge the gap. ## **Systems integration** Another area in which bespoke software can help bridge the gap between 80% and 100% is via [systems integration](/digital-development/systems-integration-services/). Rather than build a completely bespoke solution that provides 100% of the solution, it may be that a carefully integrated set of off-the-shelf software can provide 100%. In the case of IMI Precision Engineering, we have leveraged [cloud technology](/cloud-services/) and integrated many key systems (JD Edwards, Pardot, Kiss Metrics, Tacton, Mandrill etc) to [provide a complete digital platform](/an-expert-guide-to-using-digital-platforms/) for the business. In the case of customer-facing software such as [mobile Apps](/app-development-services/), there are good marketing reasons to go for bespoke software. Most App Stores (such as Google's Play Store and Apple's App Store) do not permit duplicate Apps or Apps that are substantially equivalent to existing Apps. This means that you can't simply publish off-the-shelf software under your own company's name. In this case, bespoke software is required to meeting [App Store guidelines](https://developer.apple.com/app-store/review/guidelines/). For example, the mobile App that we built for [AuthenticateIS](/project/authenticateis-mobile-app/) is completely bespoke and provides its customers with a unique experience. In summary, off-the-shelf software is great when you require a low-cost, reasonably standard piece of software to solve a standard problem (off-the-shelf solutions for off-the-shelf problems). However, bespoke software development is more suited where a higher level of investment is available for a more complex problem. A combination of an off-the-shelf core systems approach coupled with bespoke enhancements or integrations is also a very practical, balanced approach. If you would like to contact McKenna Consultations in relation to bespoke software solutions, including the integration of systems, then please get in touch via our [online enquiry form](/contact/). --- # Cross Platform Mobile Development **Canonical URL:** https://www.mckennaconsultants.com/cross-platform-mobile-development/ **Author:** Nick McKenna **Published:** 21 February 2019 **Category:** App Development Cross platform [mobile App development](/app-development-services/) has matured over the years and there are various stable options available at the moment. What are the options and how does one choose? The options that we will examine here are: - Cordova - React Native - Xamarin - Go Native There are other options such as NativeScript, but these have not yet achieved the same popularity as the options we will study here. **Cordova (Formerly Known As PhoneGap)** Cordova is the most venerable of the cross platform App development tools. It allows web developers to use their HTML, CSS and JavaScript skills to create Apps that will work across platforms such as: - iOS (iPhone / iPad) - Android - MacOS (AKA OS X) - Windows (8.1, Phone 8.1 and 10) From a technical perspective, Cordova creates some native scaffolding code that creates a basic App with a web window in it. You entire App is then rendered in the web window. Cordova also creates some plumbing code so that your App JavaScript can access some native features of the device. For those times when Cordova just doesn’t cut it and you need to write some native Swift, Java or C#, Cordova allows you to write a plug-in in native code which can be called from your JavaScript. So, in summary, Cordova lets you use the existing skills of your web team to write Apps. Cordova is the most mature of the web-based cross platform tools and so is the least likely to give you a lot of problems. Having said that, Cordova uses “older” technology compared to React Native and doesn’t provide an out of the box user interface framework, so you’ve got to pick one or create your own. The fact that Cordova allows you to write native plug-ins is a clue to some of the problems that you may have! Cordova (like the other cross platform mobile development tools) is a jack of all trades. Sometimes you just can’t access some feature of the device using Cordova and you need to know how the native platform works and how to program it. For example, in our first Cordova App years age we needed to save some information in an encrypted format in the KeyChain and this was not possible with Cordova at the time so we had to write a native plug-in. Using a cross platform App development framework does not relieve you of the burden of understanding the device. Whilst Cordova does a good job of hiding differences between different platforms, you still need to read the platform documentation and understand how the features work on the device (e.g. you need to understand what type of geo-location data iOS gives you back). Finally, Cordova renders your user interface in a browser window. This means that you are at the mercy of the web browsers slowness, glitches and peculiarities. In particular, we have found issues with some menu animations on different devices that lead to a “glitchy” user interface that you either accept as part of the cost of doing cross-platform development, or you spend a lot of time and money fixing. A core driver for cross platform development is frequent cost-saving, this flies in the face of the fundamental motivation. In fact, we have consistently seen that cross-platform development yields no cost saving over creating two native Apps (iOS and Android) due to platform-specific peculiarities. So, overall, if you want a stable, well-used web-based platform and you are not too worried about glitches and using more modern technology, Cordova could be for you! **React Native** React Native is another cross platform App development framework that uses web technologies to help you create mobile Apps. Unlike Cordova, React Native performs wizardy to convert JavaScript into native code which gives a better performance than just running in a web window. React Native is built on top of React which is a modern web-based platform. A key advantage of React Native is that is renders native UI components instead of just some HTML that you write out. This means that yours Apps have the look and feel of Native Apps and are faster and less glitchy than Cordova Apps. As with Cordova, React Native doesn’t allow you to access every feature of your mobile device (check the documentation for current feature support), so you will still need to be able to drop back to native code at some point in your App development process. You will also still need to have a good understanding of your App’s platforms. New features in that are released in the native SDKs for different platforms also have a bit of a delay before they are release in React Native. If you are going to be using cutting edge device features, perhaps React Native is not for you! If you are looking for a modern, JavaScript-based approach to cross platform App development, React Native could be what you are looking for. Be sure to beware of the odd user interface glitch, differences in Apps on different platforms and the lag time for new technology to be added to the framework. **Xamarin** Xamarin is now owned by Microsoft and has received some serious investment in the last couple of years. It is now a far cry from it’s early, buggy days where it could not be recommended for serious Apps! Xamarion allows C# developers to program cross platform Apps. The C# code that is written (using Visual Studio for example) is interpreted in different ways on different platforms. [Microsoft provide a lot of information on this](https://learn.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/building-cross-platform-applications/understanding-the-xamarin-mobile-platform). In summary, Xamarin works differently on different platforms and different features are available on different platforms, so before you start to use Xamarin, check out the latest documentation and make sure that you will have access to the right features. Xamarin’s user interface development is not as good as React Native. It’s harder work to get something working the same cross platforms. It is very good at forms-based applications, which makes it a great candidate for internal Apps inside corporations. Xamarin’s biggest problem is that it is a thin wrapper over the top of Native APIs. We were recently implementing some Bluetooth code in Xamarin for example. We found that the C# APIs for this are very different on Android and iOS because the Native APIs are very different. In other words, Xamarin mostly just allows you to program against Native APIs in C# instead of Swift or Java. If you use Xamarin, you’ll have a lot of “if platform == iOS” kind of statements. This pretty much kills off any cross platform cost saving that you might be expecting. So, overall, if you’re looking for an internal, corporate cross platform App development framework, Xamarin could be for you. **Go Native** This is a cheat since it isn’t actually a cross-platform approach, but we believe that it is the best approach if you have the skill set and want a great user experience and the fewest number of technical problems in your product. The core problem with iOS and android cross platform App development, in particular, is **complexity**. Your product will have all the problems associated with iOS, all the problems associated with Android AND all the problems associated with your cross platform framework. This is a more complex environment to work in rather than a simpler one as there is more to manage and more to go wrong! The use of the native platform for your Apps means that whatever problem comes up in development can be solved. The use of a cross platform framework adds a new limit to the ability to solve problems to just whatever the framework permits. This makes going native the lowest risk approach to your cross platform App development. Developers also get a great Integrated Development Environment with native tools (Visual Studio for Windows, XCode for iOS and Android Studio for Android) rather than muddling through with something that was not quite designed for the job. Developers will also get the greatest range of third party libraries and components to use in their Apps which reduces the cost of development. Developers will also get access to the latest, greatest features as soon as they are released, rather than having to wait for their framework to implement them. The user experience provided by Native Apps is as good as the platform can provide and is superior to any of the cross platform frameworks. It is designed and implemented specifically for the platform and renders quickly and without glitches. In terms of cost, our experience shows that there is no cost difference between “going native” and using a cross platform mobile development framework. The core disadvantage of Native Apps is that developers are required to know multiple programming languages (C#, Swift and Java) to develop on all platforms. In our experience, this has not been a problem. Although the programming languages are different, the underlying platforms are similar enough to not be too much of a burden. If you are looking for the lowest risk approach, best user experience App and access to all features, Native is for you! **What Can We Do For You?** If you are looking to have a Native or cross-platform App developed, [contact us](/contact/) now using the form below. --- # Microsoft Azure IoT Hub **Canonical URL:** https://www.mckennaconsultants.com/microsoft-azure-iot-hub/ **Author:** Nick McKenna **Published:** 15 January 2019 **Category:** Internet Of Things The creation of your [Internet Of Things](/cloud-services/internet-of-things/) (IoT) device will require extensive back-end development as well as device development. Fortunately, you can simplify, speed up and reduce the cost of your back-end development by using off-the-shelf components. This helps you focus more on the unique aspects of your devices services and less about the nuts and bolts of the infrastructure. Microsoft have [cloud based it solutions](/cloud-services/cloud-app-integration/) to provide the infrastructure for your back-end development called [Azure IoT Hub](/cloud-services/azure-iot-hub/). ## How Do azure cloud based it solutions work? Your IoT Device will send (and receive) data to the IoT hub using a standard protocol such as HTTPS, AMQP or MQTT. Note that HTTPS is polling based so your device can only receive messages once every 25 minutes. AMQP and MQTT are more real-time focused than this. Azure has many other services that can then be plugged into the IoT Hub to process received messages. In the example diagram, we show a Service Bus (Queue or Topic) that has been configured to receive the messages that have been sent to the IoT hub from the device. The messages can then be handed off to some application-specific computer programming. In this example, we show the message being received by an Azure function. The Azure function may access a database to save or load up some information to decide what action to take next. As an example, the IoT device may send a message to the IoT Hub to turn off all the lights in the building. The IoT hub puts the message on the Service Bus queue. The Azure function then looks up the addresses of the lights from the DocumentDb database. The Azure function then issues “turn off” messages to all of the lights in the building! ## **Azure IoT Cloud Service** Azure provides many more commonly needed services to assist with developing back-end solutions for IoT including: 1. Digital Twins to allow programs to easily manipulate device state. 2. Event grids for large scale handling of device and system events. 3. Device provisioning services for securely creating devices. 4. Azure Machine Learning for predicting future malfunctions. 5. IoT Edge to do pre-processing on IoT devices etc. Azure IoT Hub and the associated Azure IoT Cloud Services, are a great platform to reduce time and costs and improve quality of back-end services for IoT devices. If you are interested in McKenna Consultants building your IoT back-end, please fill in the form below. Or, contact us to discuss the varied IoT services we offer including: [IoT App Services](/cloud-services/iot-app-services/), [IoT Systems Integration](/cloud-services/iot-systems-integrators/), [IoT Smart Devices](/cloud-services/iot-device-development/). --- # Internet Of Things Security **Canonical URL:** https://www.mckennaconsultants.com/internet-of-things-security/ **Author:** Nick McKenna **Published:** 14 January 2019 **Category:** Internet Of Things If you are building an Internet Of Things (IoT) device then you are likely extending your network to a much wider audience. For example, you may be deploying a light bulb device that connects to a home hub. The home hub then reports back some status information or commands back to a web service you have made. The web service then passes some information back to your CRM system. It is possible to draw a straight line of communication from the users’ homes to your CRM system. Cyber-attacks often begin with malicious software taking control of a “soft” target such as an IoT device and then using that target to leap frog on to other systems. If you are building an Internet Of Things (IoT) device then you are likely extending your network to a much wider audience. For example, you may be deploying a light bulb device that connects to a home hub. The home hub then reports back some status information or commands back to a web service you have made. The web service then passes some information back to your CRM system. It is possible to draw a straight line of communication from the users’ homes to your CRM system. Cyber-attacks often begin with malicious software taking control of a “soft” target such as an IoT device and then using that target to leap frog on to other systems. ## The Perimeter Has Gone In the good old days, network security was a lot simpler. A network perimeter was established and secured. DMZs (a tightly controlled network perimeter for exposing services) were used to store services that were externally accessed or VPNs were used for well-known users to tunnel into the network to access restricted resources. The expansion of Internet of Things solutions and devices means that the network perimeter no longer exists as a simple line. Obviously, cloud hosting and DMZs can still be used to mitigate some of the risks, but nevertheless, IoT devices are deployed outside the secure network and are open to tampering and reverse engineering. ## IoT Security and Securing the Device Multiple layers of security are required on your IoT devices as they represent the edge of the network and the starting point for an attacker. There are two types of security to consider here: authenticating the device and authenticating the user. Authenticating the user should be done using a token-based system such as OAuth. This means that a centralised identity provider (e.g. a Google account or similar) can be used to log a user on to a device. The device then receives a temporary token which can be used to authenticate the user to external services (e.g. the web service that the device talks to). The token can be stored using a secure encryption key (more on this in a moment). The user’s Google password is never stored by the device and so cannot be compromised. Authenticating the device is a little more involved, but the technology is well established. The device should contain a Hardware Security Module (HSM) (Bitlocker fans may know of the popular TPM chip which can be used on Windows PCs). The HSM is responsible for storing secret information on the IoT device such as encryption keys. An HSM is a tamper-proof microprocessor that can store information that needs to remain secret. Using public key encryption protocols, each device can have a unique key assigned to it and stored securely in the HSM. The HSM can use this key to “sign” its communications with external web services, thus guaranteeing that calls into the network from devices come from genuine devices and not hacker clones. ## The Rest Of The Network For the rest of your network, follow your normal recommended practices. Secure your endpoints, monitor network activity, scan for code injection, use firewalls and virus scanners. Consider cloud hosting your resources so that you can benefit from the billions of dollars spent on security by giants such as Microsoft, Google, Amazon etc. IoT is changing the way we think about security. A huge amount of your security knowledge is still valid and you have a few new things to learn about securing endpoints (such as IoT devices) that are outside your network perimeter. If you are interested in learning more about cloud solutions in relation to IoT, then please read our previous post, regarding the [Microsoft Azure IoT Hub](/microsoft-azure-iot-hub/). Alternatively, if you are interested in McKenna Consultants helping you with your IoT security or would like to know more about our [IoT services](/cloud-services/internet-of-things/) and Internet of Things Solutions, please fill in the form below or [contact us](/contact/). --- # Friday Flash! 11th January 2019 **Canonical URL:** https://www.mckennaconsultants.com/friday-flash-11th-january-2019/ **Author:** Nick McKenna **Published:** 11 January 2019 **Category:** Digital Services The latest news from McKenna Consultants! ## Mexico, Baby! We've been out in Mexico City this week teaching Leading SAFe 4.6 for a global client! Lots of fun was had by all and everyone learned a thing or two also. ## Augmented Reality We have a skunk-works augmented reality project going on at the moment. That's about all we can reveal at the moment, but suffice it to say that it involves some IoT devices, machine learning and some very cool augmented reality! ## [Systems Integrations](/digital-development/systems-integration-services/) 2019 could be the "Year Of The Integration"! We have various integrations with CRM systems, Product Configuration systems and all kinds of other things going on. ## Recruitment We're also looking to expand our development team in the UK. We are looking for programmers who learn new technologies fast and who want to continually learn a diverse range of technologies! Since we are always taking on new technologies we are not looking for a specific hard skill set. The ability and willingness to continually learn is our number one priority. We are looking for all levels of experience from fresh graduates to decades of experience. If you are interested, please send your CV to [nick.mckenna@mckennaconsultants.com](mailto:nick.mckenna@mckennaconsultants.com). --- # What's Next For Technology In 2019? **Canonical URL:** https://www.mckennaconsultants.com/whats-next-for-technology-in-2019/ **Author:** Nick McKenna **Published:** 10 January 2019 **Category:** Digital Services Today I'm putting my Professor Trelawney hat on and asking what's next for business technology in 2019. I'm not talking about the bleeding edge or borderline science fiction stuff here. I'm really interested in the cutting edge technology that businesses will be able to draw value out of this year. ## The Internet Of Things 2019 is the year when [IoT](/cloud-services/internet-of-things/) and Industry 4.0 will really take off. A lot of the "late follower" companies have now seen the direction of things and worked out where their product lies in the new IoT landscape. We will see a lot more infrastructure support to go behind industrial applications as well as the more glamorous and visible developments. Outside of Philips Hue bulbs, a lot of factories will embrace IoT technologies in multiple layers from engineering components, line controllers and plant controllers. Standards to define communications between those components will be more important to customers selecting components. We'll see more domestic applications for IoT too, especially with the fabulous Christmas Amazon had with Alexa and Echo. People will be wanting more things to plug into their Smart Home! ## Augmented Reality Towards the end of 2019, Augmented Reality applications will become a reality across light and heavy industry. The office workplace won't see much in terms of AR this year until the tech becomes a little lighter and lower cost. We can expect to see some real applications rather than the toys that are currently more commonplace with Augmented Reality. Improvements in mobile technology such as Apple's AR Kit and Google's AR Core will have mobile devices leading the way in AR applications for home users. ## Artificial Intelligence [Artificial Intelligence](/ai-first/) will power applications behind the scenes this year. Beyond the smart assistant devices (Alexa, Google Assistant etc) there are some powerful AI tools and frameworks developing. AI technology hasn't changed much in the last 40 years, but what we have now is a huge cloud-based infrastructure that can crunch phenomenal amounts of data like never before. Just look at [IBM's hourly weather forecasting system](https://www.bbc.co.uk/news/technology-46790221), for example. The Internet Of Things will be increasingly supported by AI infrastructure to assist with gathering insights into business data (e.g. sales data) as well as more industrial applications (e.g. predictive maintenance of machines and components etc). Augmented Reality will increasingly use AI to learn to recognise objects in the real world and adapt programs to the user's surroundings. ## Remote Working As companies begin to compete harder for staff than customers they will be turning their eyes further afield to find talent. This will mean that more and more companies will employ more and more remote workers. Firstly, those companies will need to [learn how to better manage remote teams](https://www.collaborationsuperpowers.com/) (it's generally done incredibly badly and workers feel isolated). After that, the tooling will explode. Already we have tools such as [Sucoco](https://www.sococo.com/), Slack and many more. This year those tools will diversify and grow to create new ways (beyond the dull conference call) for remote teams to work together. ## Conclusion I looked into the tea leaves and these are my predictions for 2019! If you are interested in any of the above areas of technology, please fill in the contact form below and get in touch with us! --- # Surprises In The Apple App Store Review Guidelines **Canonical URL:** https://www.mckennaconsultants.com/surprises-in-the-apple-app-store-review-guidelines/ **Author:** Nick McKenna **Published:** 9 January 2019 **Category:** App Development We get asked about a myriad of crazy and wonderful ideas for [App Development](/app-development-services/) for [iOS / iPhone / iPad](/app-development-services/apple-mobile-app-development/) / [Android](/app-development-services/android-mobile-app-development/). My first piece of advice to all new customers is to read [Apple's App Store Review Guidelines](https://developer.apple.com/app-store/review/guidelines/). They contain some wonderful hidden gems that can completely blow an App idea out of the water. Here's a few of our favourite hidden secrets from the guidelines. ## No Emergency Services Section 5.1.5 of the guidelines contains the sentence "Location-based APIs shouldn’t be used to provide emergency services...". This means that you should not submit an App to Apple for approval that uses the GPS sensor (or other location detecting mechanisms) for providing the location of the user to emergency services. Presumably the reason for this is so that Apple can (sensibly) avoid being sued if someone dies or suffers serious illness or injury because the location services on their iPhone failed to report the location correctly to the emergency App. If you are thinking that no-one would ever want to create an App that does this, you would be wrong! About five years ago we were approached to build just such an App! Fortunately our knowledge of the guidelines meant that we could immediately tell the customer this before they invested any money in their App idea! ## Bypassing Apple's Digital Subscription Model Section 3.1.3 (b) of the guidelines says "You must not directly or indirectly target iOS users to use a purchasing method other than in-app purchase, and your general communications about other purchasing methods must not discourage use of in-app purchase." This means that if your app allows a digital subscription or other digital purchases, you can't entice the users away from the App to purchase directly on your web site or anywhere else! You could not, for example, provide a link in your App to your web site that allows users to sign up for your service there. Apple want their 30% and you have to give it to them! ## No Copying! Section 4.1 has the wording "Don’t simply copy the latest popular app on the App Store, or make some minor changes to another app’s name or UI and pass it off as your own." This means that you should not create a new App called "Wingy Birds" just because you like the popular "Flappy Birds" App. Having said that, there do seem to be an awful lot of clone Apps out there on Apple's store, so many attempts at copying do seem to sneak through. We would strongly advise our clients to never attempt this though! ## Do Not Be Creepy My favourite from section 4.2 is "If your App doesn't provide some sort of lasting entertainment value, or is just plain creepy, it may not be accepted." I think that this speaks for itself! ## Conclusion The Apple guidelines are not technical and anyone intending to have an App created should be able to read and understand them. Always be cautious and assume that Apple will reject your App if you are sailing close to the wind. You can always call Apple if you want to get their view, however, they are unlikely to give you a definitive answer, but you will probably be able to read between the lines in their response! --- # Friday Flash! 30th November 2018 **Canonical URL:** https://www.mckennaconsultants.com/friday-flash-30th-november-2018/ **Author:** Nick McKenna **Published:** 30 November 2018 **Category:** Digital Services It's been a while, but we're starting up our Friday Flash again! This is where we keep you guys up to date with everything that's been going on around here. ## JR Ewing First off, we're spending a lot of time out in Dallas. If you have visions of Southfork Ranch, glamorous evening gowns and high-powered meeting with billionaires... Yep - that's exactly what it's like! We're involved in a [SAFe transformation](https://www.mckennaagileconsultants.com/) (Scaled Agile Framework) roll out for a well known drinks company and it's going great! ## Web Applications We're also building a next-generation [progressive web app](/app-development-services/web-application-development/) product for a new client. It's hush hush so we can't say too much about it other than it's built using the latest .Net Core, Angular and cloud technologies. Hopefully we can do a case study on this soon! ## Product Configuration We're also building a complex web configuration (again in Typescript and Angular) system for engineering components. Again, we can't say much about this now, but hopefully another [case study](/case-studies/) soon! ## Azure Functions We've also been developing some new pricing [Azure functions](/cloud-services/microsoft-azure-development/) to provide a single point of reference for pricing complex engineering components. We love Azure and we love Azure function most of all as they provide us with a highly scalable, serverless, low-cost way of deploying critical business functions. ## Walks In The Rain And one last thing... Our office dog (Brodie) has been enjoying her walks in the Yorkshire rain this week. Here she is looking cute just moments before eating a very dead rabbit.... --- # Nesting Router Outlets In Angular 6 / 7 **Canonical URL:** https://www.mckennaconsultants.com/nesting-router-outlets-in-angular-6-7/ **Author:** Nick McKenna **Published:** 28 November 2018 **Category:** Progressive Web Apps We've been building [progressive web Applications (PWA)](/app-development-services/progressive-web-app-development/) in Angular and Typescript for a few years now, but once in a while something new and interesting still comes along. In the last couple of weeks I came across something pretty interesting which although is possible, is not well documented. For various reasons we are building an Angular progressive web application which has a lot of dynamically loaded components. This has led to us needing to create a nested structure out Router Outlets like this: - Outer Component - Router Outlet (named "outer") - Router Outlet (named "inner") To make it even more fun, "outer" and "inner" both need to have parameters specified in the URLs required to access them. The overall URL needs to be copied and pasted from one browser window to another so that people can share hyperlinks. I struggled to work out two closely related things: 1. How do we construct a Router Link to correctly load everything the Router Outlets? 2. What does the end URL look like? It took some patient, trial and error, but finally I worked out these critical code fragments: ## Some Routing const appRoutes: Routes = [ { path: 'outerpath/:someParameter1', component: OuterComponent, outlet: 'outer', children: [ { path: 'innerpath/:someParameter2', component: InnerComponent1, outlet: 'inner' }, { path: 'anotherinnerpath/:someParameter2', component: InnerComponent2, outlet: 'inner' } ] }]; ## An Example routerLink In The HTML Click Me ## An Example Of Using The Router To Navigate In Typescript router.navigate( [{ outlets: { 'outer': ['outerpath', data.someParameter1, { outlets: { 'inner': ['innerpath', data.someParameter2] } } ] } }]); ## An Example URL Formed Using This Approach http://localhost:1234/someoutercomponent(outer:outerpath/123/(inner:innerpath/456)) ## Conclusion Hopefully this will save you a little time guessing at RouterLink formats when you try to nest parameterised router outlets! If you are interested in co-sourcing or outsourcing your next progressive web Application, then please get in touch by filling in the form below. --- # How We Used Management 3.0 To Make Us Love Appraisals **Canonical URL:** https://www.mckennaconsultants.com/how-we-used-management-3-0-to-make-us-love-appraisals/ **Author:** Nick McKenna **Published:** 16 March 2018 **Category:** Agile At McKenna Consultants, we are like the majority of people who dread the annual 1 to 1 appraisal. Rather than moaning about doing it like we do every year, we decided to explore what we could do instead using some Management 3.0 practices. In the Develop Competence element of Management 3.0, the idea of having a 360 Degree Dinner is mentioned. This appealed to us for two reasons: 1. No one here enjoys appraisals. 2. Everyone here enjoys food! So with those in mind, off we went to the local Italian to hold our inaugural 360 Degree Dinner. Now Management 3.0 does not offer much in the way of a magic recipe of how to do this, so we came up with our own method, inspired by Big 5 Performance Management and by Daily Stand Ups, a staple of Scrum teams like ours around the world. We like to think of it as Agile Appraisals! We began by briefly re-iterating our company and internal core values that we identified in a recent retrospective. It is essential to reiterate these values, as these should guide our behaviours, performance and thinking. We time boxed the appraisal to last two hours to review the performance of all six of us and gave everyone the opportunity to lead the review for a colleague. The questions are intended to be a group decision for the whole team, so that we all appraise each other. The questions that we answered together were: ## What have been your biggest achievements since our last appraisal? This was a really interesting discussion because some on the achievements that people suggested for each other were things they had never really thought about. It was great chance to heap praise on someone and make them feel great! At the end of it, the team couldn't realise just how much that they had achieved! ## What goals will you set until our next appraisal? This was a particularly useful exercise as it is a less confrontational way to address team members weaknesses or areas for improvement. We also made sure that we came up with some really aspirational goals for one another too! ## Do we need to re-visit any of the company or internal core values? There is no point having values if they are ignored or no longer relevant. This was a quick way to add anything new, or take anything away. ## How likely are you to recommend working at McKenna Consultants to one of your friends? This is the million-dollar question. If the team wouldn't be happy to recommend a friend to work at McKenna Consultants, them we would have some challenges to address. Fortunately, everyone was more than happy to recommend a friend if we needed! ## How can we improve on this appraisal process? To finish the 360 Degree Dinner, and in true agile fashion, we held a retrospective of the appraisal. We want to empower the team and energise the people, so it is only fair that an appraisal works for the person as much as it works for the Company! Some suggestions were: - Different restaurants for each time we run a 360 Degree Dinner - Bring along a flipchart and sticky notes - Time box each team member - Bring a talking stick Needless to say, that the meeting went great and the team went away feeling positive, motivated and happy! So rather than having six one-hour long one to one appraisals a year, we decided to have quarterly team 360 Degree Dinners instead! Now our team loves appraisals!   --- # Desktop Kanban **Canonical URL:** https://www.mckennaconsultants.com/desktop-kanban/ **Author:** Nick McKenna **Published:** 13 March 2018 **Category:** Agile It is a common understanding that some of the biggest benefits of [agile](/agile/), scrum and kanban is found by teams, however when working alone, how can you maximise some of the techniques successfully employed by agile teams? In my role at McKenna Consultants, not only am I part of the team, working as a Product Owner and helping to test, define and deliver features to our clients, but I also spend a large proportion of my time working alone, delivering agile training, coaching and consultancy, marketing our services and also doing the jobs that no one else wants to do (usually all of the admin and accounts)! This means that I have two challenges that agile could easily solve: - I have no clear visibility of my work - I find that I can easily end up task switching Now it wouldn't make sense for me to clutter up the team's JIRA board with all of my individual tasks, nor would it make sense for me to create a "secret" Trello, JIRA or Wunderlist board, so I need a more innovative solution... Ladies and Gentlemen, I give you the **Desktop Kanban**! Inspired by Agnes, a Product Owner who I have had the pleasure of training and coaching over the last year (and probably the best Product Owner that I have ever worked with!), I have developed my own way of managing my work on a week by week basis. Agnes, manages her endless list of requests, tasks, issues and ideas by covering the surface of her desks with post it notes, and it continually tearing them up as she ruthlessly completes task after task. This led me to a great idea -- I could do something similar, but using a simple kanban! Here is how my kanban system works: - I keep a digital copy of all of my tasks on Wunderlist. This means that I have a back up, I can work from anyway and also my team can add tasks to my backlog as they please. - On a daily basis I quickly plan what I need to do and prioritise my list. - Any new tasks I then add to my desktop kanban. - At the end of the week I clear out the Done column (with a huge sense of satisfaction) and get ready to go round again. - The colours show me at a glance what type of work it is: customer, admin, marketing, agile etc. - The Doing and Stuck column are deliberately smaller, to enforce a WIP (work in progress) limit of 3 items -- which is about my limit of task switching and responding to new urgent requests. - Stuck means stuck. It doesn't mean that I need a break, it means that I have done all that I possibly can do and I am most likely waiting on someone/thing else to progress this item further. The benefits of working like this are suddenly clear to see. I now visibility of my work. Likewise, so do my teammates, so when they wander over to ask something, they can see there and then what I am working on and how busy I am (or not). I can now concentrate on no more than 3 things at once, which means that I am now getting more done. The phrase of stop starting and start finishing is quickly becoming a favourite of mine! There is also a huge sense of satisfaction seeing all of the completed tasks add up for me at the end of the week! If you work on your own tasks quite often, and want to add some visibility, order and fun, have a go at setting up your own desktop kanban -- who said agile is only for teams?! ---