Skip to main content
PageTech Solutions Limited logo Turning Complex Problems Into Confident Technology
  • Consultancy (current section)
    • Consultancy overview
    • Services
    • Fixed-price reviews
    • Testimonials
    • Pricing
    • Working with your IT team
    • FAQ
    • Contact
  • Freelance
    • Freelance overview
    • What I fix
    • Testimonials
    • Pricing
    • Hiring through a platform
    • Availability
    • Tech stack
    • FAQ
    • Contact
  • Recruiters
    • Recruiters overview
    • Fit and experience
    • Testimonials
    • Rates
    • Availability
    • Tech stack
    • FAQ
    • Contact
  • About
  • Workshop
  • Search
  • Talk to Jamie
  1. Home
  2. Workshop
  3. Security Compliance Monitor

Case study

Security Compliance Monitor

DMARC and TLS-RPT reports ingested, archived, analysed, and alerted — automatically.

C#Azure FunctionsFlex ConsumptionMicrosoft Graph

At a glance

  1. ChallengeEmail authentication reports (DMARC and TLS-RPT) arrive by email, and in most organisations that is where they stay — never archived, never analysed, never watched.
  2. ApproachA scheduled collector pulls the reports from the mailboxes through Microsoft Graph, copes with attachments that arrive without usable filenames, and hands them to a queue.
  3. OutcomeEvery report archived and analysed automatically — no manual collection
run cost before migration
£26.83
run cost after migration
£2.21
no idle compute charge
no always-ready instances
reports processed, August 2026
199 reports
reports processed, September 2026
181 reports
cost per report, August 2026
about 13.5p
cost per report, September 2026
about 1.2p
reports processed, 19 June to 15 October 2026
678 reports
findings raised, 19 June to 15 October 2026
485 findings

Challenge

Email authentication reports (DMARC and TLS-RPT) arrive by email, and in most organisations that is where they stay — never archived, never analysed, never watched. Authentication failures and compliance drift go unnoticed until something bounces.

Approach

A scheduled collector pulls the reports from the mailboxes through Microsoft Graph, copes with attachments that arrive without usable filenames, and hands them to a queue. A C# processor on an Azure Functions Flex Consumption plan, with no always-ready instances, runs when work arrives and costs nothing while it waits. It began as a container on Azure Container Apps, scaled from zero by KEDA, and moved to the Functions host once the processing below had been made safe to interrupt. Processing is idempotent: each message is claimed atomically so two runs can never process it twice, and any run interrupted part-way is recovered before new work begins, so no report is lost. Reports are archived to blob storage and their results written to the first-party analytics database, where an analysis layer identifies findings and tracks compliance trends that surface in the internal dashboard and the daily digest. On the container host, deployed images were pinned by digest so a restart brought back exactly what was built. Failures and missing runs raise alerts.

Outcome

  • Every report archived and analysed automatically — no manual collection
  • Authentication failures and compliance gaps raised as alerts, with trends visible over time
  • An audit trail of what was collected, when and why — the evidence a regulator would ask for
  • No idle compute between runs, and compliance data queryable alongside session and conversion records
  • Running cost fell from £26.83 in the pipeline's last full month on the container-based host to £2.21 in September 2026, its first full month on a consumption plan holding no always-ready instances — the same work, without paying for idle compute. Figures are Azure Cost Management actuals for the dedicated resource group.
  • The same work either side of the move: 199 reports processed in August 2026 and 181 reports in September, so the cost per report fell from about 13.5p to about 1.2p
  • 678 reports processed for my own domains between 19 June and 15 October 2026, raising 485 findings
Monthly running cost of one of my own systems, before and after the move
Monthly running cost, May to September 2026 Bars rise each month to £26.83 in August on an always-on host, then fall to £2.21 in September on pay-per-use hosting, for the same work. £12.31May£18.68Jun£23.16Jul£26.83Aug£2.21Sep moved to pay-per-use

Same work, £26.83 a month down to £2.21. Azure Cost Management actuals for a dedicated resource group.

The figures
Monthly running cost
MonthCost
May 2026£12.31
Jun 2026£18.68
Jul 2026£23.16
Aug 2026£26.83
Sep 2026£2.21

Have a similar problem in your own systems? Book a free 20-minute call or describe it.

Where judgement mattered

  • Scale-to-zero compute for bursty work instead of an always-on service, and moving host only after the processing could survive being interrupted
  • Atomic claiming and startup recovery, so "at least once" never becomes "twice" or "never"
  • Writing results to the shared first-party store rather than a silo, so they can be joined with everything else
  • Digest-pinned deployments on the container host — reproducible images, no floating tags

Technology stack

C# / .NET 10 · Azure Functions on a Flex Consumption plan (previously Azure Container Apps with KEDA) · Azure Service Bus · Azure SQL · Azure Blob Storage · Microsoft Graph · Application Insights · Azure DevOps multi-environment pipeline

Book a free 20-minute call More case studies

Calendar not loading, or no time suits? Call, WhatsApp or message me.

© 2026 PageTech Solutions Limited. All rights reserved.

Company no. 17014904

VAT no. 514295790

Based in Andover, Hampshire, working remotely with businesses across the UK.

Registered office (post only, no visitors): Belmont Suite, Paragon Business Park, Chorley New Road, Bolton, Lancashire, BL6 6HG

ICO registration no. ZC179729

I use Microsoft Clarity to improve this site's usability, only if you allow it. See my privacy policy for details.

Visa Mastercard American Express PayPal

Contact Hours

Monday 09:00–12:00, 13:00–17:00
Tuesday 09:00–12:00, 13:00–17:00
Wednesday 09:00–12:00, 13:00–17:00
Thursday 09:00–12:00, 13:00–17:00
Friday 09:00–12:00, 13:00–17:00
Saturday Closed
Sunday Closed
UK time (GMT/BST)

Phone: 01264 354354

ContactAboutTestimonialsWorkshopFAQPricingProductsNot a business?PrivacyTermsAccessibilitySearchSite mapBook a free 20-minute callLinkedInX (Twitter)Bluesky