Wednesday, September 2, 2026

SharePoint - After Events

The following is a SharePoint dictionary word of the day: After events.

After Events in SharePoint: The Asynchronous Power Feature You’re Probably Not Using Yet

If you work with SharePoint automation, event receivers, or custom business logic, understanding the after event model is essential. It’s one of those quiet-but-powerful features that can make your environment faster, safer, and more predictable — especially when dealing with heavy or complex operations.

What Is an “After Event” in SharePoint?

An after event is an asynchronous event that fires only after the action that raised the event has fully completed.

That means:

  • The user action finishes first
  • SharePoint commits the change
  • Then your custom logic runs in the background
  • This is different from synchronous events, which block the user until your code finishes.

Why After Events Matter

After events are the backbone of smooth, scalable SharePoint automation. They allow you to run logic without slowing down the user experience.

Here’s why they’re so valuable:

  • Non-blocking performance — Users don’t wait for your code to finish.
  • Reliable sequencing — The item or document is already saved before your handler runs.
  • Safe for heavy operations — Perfect for long-running or resource-intensive tasks.
  • Ideal for integrations — APIs, external databases, and cloud services won’t freeze the UI.

Real SharePoint Example: Why After Events Shine

Imagine a user updates a list item that triggers your automation. You want to:

  • Generate a PDF
  • Push data to an external CRM
  • Update a dashboard
  • Send notifications
  • Log activity to an audit list

Doing this synchronously would slow down the save operation.

With an after event, the user sees the update complete instantly — while your automation quietly handles everything behind the scenes.

Common Use Cases for After Events

Use after events when your logic is:

  • Batch-oriented
  • Non-critical to immediate user action
  • Dependent on the final saved state
  • Triggered by workflows or automation

Avoid them when you need to validate or block an action — that’s synchronous territory.

Monday, August 24, 2026

Publisher PowerShell - Converts .pub to .pdf to .rtf to .docx

As the Microsoft support for Publisher ends in October and as someone whose family utilizes and has hundreds of .pub files, the other night I reviewed the out of the box Microsoft provided .PUB to .PDF version as a base:
https://download.microsoft.com/download/3e67cd40-2334-4c46-a0c9-30bd43eebb3c/Convert-PubFileToPDF.ps1
and created a new PowerShell script which converts the .pub → .pdf (Publisher) → .rtf → .docx (Word) either file by file or via batch format by providing the proper filter:
 
Full script is below for educational purposes just copy and paste and save to the location of your choosing:

<#

Convert-PubFileToRTFModal.ps1

.SYNOPSIS

    Converts .pub → .pdf (Publisher) → .rtf + .docx (Word)

    with automatic Publisher kill‑and‑restart when modal dialogs appear.


.DESCRIPTION

    This version:

      • Removes ALL UIAutomation dialog handling

      • Detects modal dialog COM lock

      • Kills Publisher immediately when locked

      • Restarts Publisher for each retry

      • Retries each file once

      • Skips files that remain locked


.EXAMPLES

      Run with the following filters from PowerShell Command Line:


If needed set proper execution policies:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser


.EXAMPLE

./Convert-PubFileToRTFModal.ps1 -Filter "C:\Documents\MyFile.pub"

Converts the specified Publisher file to PDF to RTF to WORD format.


.EXAMPLE

./Convert-PubFileToRTFModal.ps1 -Filter "*.pub"

Converts all Publisher files in the current directory to PDF to RTF to WORD format.


.EXAMPLE

./Convert-PubFileToRTFModal.ps1 -Filter "*.pub" -Recurse

Converts all Publisher files in the current directory and all subdirectories to PDF to RTF to WORD format.


KMO 8/20/2026 used Microsoft .PUB to .PDF version as base:

https://download.microsoft.com/download/3e67cd40-2334-4c46-a0c9-30bd43eebb3c/Convert-PubFileToPDF.ps1

Script was only utilized with Windows 11 Home Edition

#>

param(

    [Parameter(Mandatory=$true)]

    [string]$Filter,


    [switch]$Recurse

)


function Kill-Publisher {

    Write-Warning "Killing all Publisher processes..."

    Get-Process -Name "MSPUB" -ErrorAction SilentlyContinue | Stop-Process -Force -ErrorAction SilentlyContinue

    Start-Sleep -Seconds 1

}


function Start-Publisher {

    try { return (New-Object -ComObject Publisher.Application) }

    catch {

        Write-Warning "Publisher cannot start."

        return $null

    }

}


function Start-Word {

    try { return (New-Object -ComObject Word.Application) }

    catch {

        Write-Warning "Word cannot start."

        return $null

    }

}


function Export-PubToPdf {

    param(

        [string]$PubPath,

        [string]$PdfPath

    )


    $app = Start-Publisher

    if (-not $app) { return $false }


    try {

        $doc = $app.Open($PubPath)

    }

    catch {

        Write-Warning "Open() failed for: $PubPath  -> $_"

        Kill-Publisher

        return $false

    }


    if (-not $doc) {

        Write-Warning "Publisher returned null document: $PubPath"

        Kill-Publisher

        return $false

    }


    try {

        $doc.ExportAsFixedFormat(

            [Microsoft.Office.Interop.Publisher.PbFixedFormatType]::pbFixedFormatTypePDF,

            $PdfPath

        )

        Write-Output "Saved PDF: $PdfPath"

    }

    catch {

        Write-Warning "PDF export failed for: $PubPath  -> $_"

        Kill-Publisher

        return $false

    }


    try { $doc.Close() } catch { Kill-Publisher }

    try { $app.Quit() } catch { Kill-Publisher }


    return $true

}


function Convert-PdfToRtfDocx {

    param(

        [string]$PdfPath,

        [string]$RtfPath,

        [string]$DocxPath

    )


    if (-not (Test-Path $PdfPath)) {

        Write-Warning "PDF not found for Word conversion: $PdfPath"

        return $false

    }


    $word = Start-Word

    if (-not $word) { return $false }


    $word.Visible = $false


    try {

        $doc = $word.Documents.Open($PdfPath)

    }

    catch {

        Write-Warning "Word cannot open PDF: $PdfPath  -> $_"

        try { $word.Quit() } catch {}

        return $false

    }


    if (-not $doc) {

        Write-Warning "Word returned null document for: $PdfPath"

        try { $word.Quit() } catch {}

        return $false

    }


    $ok = $true


    try {

        $doc.SaveAs([ref]$RtfPath, [ref][int][Microsoft.Office.Interop.Word.WdSaveFormat]::wdFormatRTF)

        Write-Output "Saved RTF: $RtfPath"

    }

    catch {

        Write-Warning "RTF save failed for: $PdfPath  -> $_"

        $ok = $false

    }


    try {

        $doc.SaveAs([ref]$DocxPath, [ref][int][Microsoft.Office.Interop.Word.WdSaveFormat]::wdFormatXMLDocument)

        Write-Output "Saved DOCX: $DocxPath"

    }

    catch {

        Write-Warning "DOCX save failed for: $PdfPath  -> $_"

        $ok = $false

    }


    try { $doc.Close() } catch {}

    try { $word.Quit() } catch {}


    return $ok

}


function Convert-OneFile {

    param([string]$PubPath)


    $base = [System.IO.Path]::Combine(

        [System.IO.Path]::GetDirectoryName($PubPath),

        [System.IO.Path]::GetFileNameWithoutExtension($PubPath)

    )


    $pdf  = "$base.pdf"

    $rtf  = "$base.rtf"

    $docx = "$base.docx"


    Write-Output "Converting: $PubPath"


    # --- FIRST ATTEMPT ---

    if (Export-PubToPdf -PubPath $PubPath -PdfPath $pdf) {

        if (Convert-PdfToRtfDocx -PdfPath $pdf -RtfPath $rtf -DocxPath $docx) {

            return $true

        }

    }


    Write-Warning "First attempt failed. Retrying with clean Publisher restart..."


    Kill-Publisher


    # --- SECOND ATTEMPT ---

    if (Export-PubToPdf -PubPath $PubPath -PdfPath $pdf) {

        if (Convert-PdfToRtfDocx -PdfPath $pdf -RtfPath $rtf -DocxPath $docx) {

            return $true

        }

    }


    Write-Warning "Skipping file (Publisher remained locked): $PubPath"

    return $false

}


# Validate filter

if (-not ($Filter -like "*.pub")) {

    Write-Warning "Filter must specify .pub files."

    exit 1

}


$files = Get-ChildItem -File -Recurse:$Recurse -Filter $Filter

if (-not $files) {

    Write-Warning "No .pub files found."

    exit 1

}


$success = 0

$fail = 0


foreach ($file in $files) {

    if (Convert-OneFile -PubPath $file.FullName) { $success++ }

    else { $fail++ }

}


Write-Output "Completed: $success succeeded, $fail failed."


Saturday, August 15, 2026

Microsoft Copilot Trivia Quiz

The Microsoft Copilot trivia quiz is an enterprise‑focused quiz to support by providing a comprehensive way to benchmark Copilot readiness, reinforce responsible AI usage, and accelerate adoption to those interested in this topic.

https://www.amazon.com/dp/B0HDSJNSM6/

Microsoft Copilot is Microsoft's AI‑powered assistant designed to boost productivity across the entire Microsoft 365 ecosystem be it Word, Excel, PowerPoint, Outlook, Teams, Loop, SharePoint, OneDrive, Windows, and more.

This comprehensive 250‑question Copilot Trivia Quiz is organized into themed sections, each containing multiple-choice questions and answers. It's built for learners, IT pros, admins, and Copilot enthusiasts who want to sharpen their knowledge of Microsoft's AI capabilities.

Use this quiz to test your understanding, train your team, or simply explore how Copilot works across the Microsoft Cloud.

This trivia collection is ideal for:

  • Corporate training
  • IT onboarding
  • Classroom instruction
  • Workshops
  • Self‑study
  • Copilot pilot education

The high-level sections include:

  • Copilot Fundamentals
  • Copilot in Word
  • Copilot in Excel
  • Copilot in PowerPoint
  • Copilot in Outlook
  • Copilot in Teams
  • Copilot in Loop
  • Copilot in SharePoint
  • Copilot in OneDrive
  • Copilot in Windows
  • Copilot Studio
  • Copilot Security, Compliance & Governance
  • Expert‑Level Copilot

Wednesday, July 15, 2026

Microsoft 365 Trivia Quiz

Microsoft 365 (M365) Trivia Quiz: 200 Questions Across Every Major Workload

https://www.amazon.com/dp/B0H8KK5X1Z/

Microsoft 365 is more than a subscription - it’s the modern productivity ecosystem that blends apps, cloud services, security, and AI into one unified platform. Whether you’re an IT pro, a power user, or someone preparing for certification, structured quizzes are one of the fastest ways to sharpen your knowledge.

Microsoft 365 (M365) is Microsoft’s cloud-powered productivity suite that brings together familiar applications, enterprise-grade security, intelligent automation, and AI-driven experiences. This comprehensive trivia quiz features 200 questions and answers, organized into clear sections so learners can test their knowledge across every major M365 workload.

Each section includes multiple-choice questions, followed by an answer key to help you check your progress and reinforce learning.

Content include;

Microsoft 365 Fundamentals

Microsoft 365 Fundamentals – Section 1

Microsoft 365 Fundamentals – Section 2

Microsoft 365 Fundamentals – Section 3

Microsoft 365 Fundamentals – Section 4


Microsoft Teams

MS Teams – Section 1

MS Teams – Section 2

MS Teams – Section 3

MS Teams – Section 4


SharePoint Online

SharePoint Online – Section 1

SharePoint Online – Section 2

SharePoint Online – Section 3

SharePoint Online – Section 4


OneDrive for Business

OneDrive for Business – Section 1

OneDrive for Business – Section 2

OneDrive for Business – Section 3

OneDrive for Business – Section 4


Exchange Online

Exchange Online – Section 1

Exchange Online – Section 2

Exchange Online – Section 3

Exchange Online – Section 4


Security & Compliance

Security & Compliance – Section 1

Security & Compliance – Section 2

Security & Compliance – Section 3

Security & Compliance – Section 4


Licensing & Administration

Licensing & Administration – Section 1

Licensing & Administration – Section 2

Licensing & Administration – Section 3

Licensing & Administration – Section 4


Power Platform

Power Platform – Section 1

Power Platform – Section 2

Power Platform – Section 3

Power Platform – Section 4


Windows & Endpoint Management

Windows & Endpoint Management – Section 1

Windows & Endpoint Management – Section 2

Windows & Endpoint Management – Section 3

Windows & Endpoint Management – Section 4


Viva, Copilot, & Modern Work

Viva, Copilot, & Modern Work – Section 1

Viva, Copilot, & Modern Work – Section 2

Viva, Copilot, & Modern Work – Section 3

Viva, Copilot, & Modern Work – Section 4


How This Quiz Works

Each section presents a series of questions covering core concepts, best practices, and real-world scenarios. At the end of each section, you’ll find a complete answer key so you can verify your responses and track your progress.

This structure makes the quiz ideal for:

  • IT professionals preparing for certification
  • Administrators refreshing their knowledge
  • Students learning cloud fundamentals
  • Organizations training staff on Microsoft 365
  • Anyone wanting to test their modern workplace skills

Wednesday, July 1, 2026

SharePoint - Application Directory

The following is a SharePoint dictionary word of the day: Application Directory:

The application directory is one of those behind‑the‑scenes components in a SharePoint farm that quietly keeps one's search experience fast, accurate, and dependable. While end users only see quick search results, administrators know that powerful indexing engines are constantly working in the background — and the application directory is where much of that work happens.

What the Application Directory Actually Does

At its core, the application directory is a specialized folder located on an index server or query server. Its job is simple but essential:

It stores the files required to build and run full‑text index catalogs.

These catalogs are the backbone of SharePoint’s search system. Every time content is crawled, analyzed, tokenized, and stored for fast retrieval, the application directory is the workspace where those operations take place.

Why This Directory Matters in a SharePoint Farm

SharePoint farms rely heavily on search to deliver relevant content quickly. The application directory supports this by housing:

  • Index fragments that store processed text
  • Catalog files that organize searchable content
  • Temporary query files used during search execution
  • Metadata and logs that help maintain index health

Without a properly functioning application directory, search performance can degrade, queries can slow down, and indexing operations may fail — all of which impact user productivity across the entire farm.

How It Supports Full‑Text Indexing

Full‑text indexing is more than simple keyword matching. SharePoint’s search engine performs:

  • Word breaking
  • Stemming
  • Linguistic analysis
  • Ranking calculations
  • Proximity and relevance scoring

All of these processes generate data structures that must be stored somewhere — and that “somewhere” is the application directory.

Role in Index and Query Servers

In a multi‑server SharePoint farm:

  • Index servers use the application directory to store catalog files during crawl and index creation.
  • Query servers use it to access those catalogs and execute search queries efficiently.

This separation ensures scalability and keeps search responsive even as content grows.

Tuesday, June 23, 2026

SharePoint - Anonymous Users

The following is a SharePoint Dictionary word of the day: Anonymous Users.

Anonymous users play a surprisingly important role in how organizations design, secure, and govern their SharePoint environments. In simple terms, an anonymous user is a visitor who accesses your SharePoint site without providing any credentials. They aren’t logged in, they aren’t authenticated, and they aren’t tied to any identity provider. Yet their presence has major implications for security, governance, and user experience.

What Is an Anonymous User in SharePoint?

An anonymous user is anyone who interacts with a SharePoint site without signing in. This could be:

  • A public website visitor
  • A customer accessing shared content
  • A partner viewing externally published documents

Because they don’t authenticate, SharePoint treats them as a general, non‑identifiable entity. This means they have no permissions by default, and any access they receive must be explicitly granted.

Why Anonymous Access Matters

  • Anonymous access is powerful, but it must be handled with care. It affects:
  • Security posture — Anonymous access can expose content if not configured correctly.
  • Governance policies — Organizations must define what content can be public.
  • User experience — Public-facing sites rely on frictionless access.

In SharePoint Online, anonymous access is tightly controlled to protect tenant data, while on-premises deployments offer more flexibility.

How Authentication Protocols Influence Anonymous User Governance

The way SharePoint handles anonymous users depends heavily on the authentication protocol in use. Different protocols create different governance paths:

  • Classic authentication — Historically allowed broader anonymous access, especially in on-premises environments.
  • Claims-based authentication — Introduces more granular control and modern identity management.
  • Azure AD-backed authentication — In SharePoint Online, anonymous access is limited to specific sharing scenarios like “Anyone links.”

Each protocol determines how SharePoint identifies (or doesn’t identify) the user, and therefore how administrators can govern them.

Best Practices for Managing Anonymous Users in SharePoint

To keep your environment secure and optimized, consider these practices:

  • Limit public access — Only expose content that truly needs to be public.
  • Use site-level governance — Apply policies that define what can be shared anonymously.
  • Monitor sharing activity — Track link usage and external access patterns.
  • Leverage expiration policies — Ensure anonymous links don’t remain active indefinitely.
  • Educate content owners — Empower teams to share responsibly.

Final Thoughts

Anonymous users may not have identities, but they absolutely require intentional governance. Whether you’re running SharePoint Online or an on-premises deployment, understanding how anonymous access works—and how authentication protocols shape it—is essential for balancing openness with security.

Monday, June 15, 2026

SharePoint - Authentication

The following is a SharePoint dictionary word of the day:

Authentication in SharePoint is the backbone of secure collaboration, ensuring that one object can reliably control and validate the identity of another object. In simpler terms, it’s how SharePoint confirms you are really you before granting access to sites, lists, libraries, or sensitive business data.

This concept may sound technical, but mastering it is essential for administrators, developers, and organizations that rely on SharePoint for secure digital workplaces.

What Is Authentication in SharePoint?

At its core, authentication is the ability of one object to control the identity of another object.

In SharePoint, this means:

  • A user proves their identity to SharePoint
  • SharePoint verifies that identity
  • SharePoint grants access based on permissions tied to that identity

This process protects your environment from unauthorized access and ensures that every action is tied to a verified user or service.

Why Authentication Matters in SharePoint

  • Security — Prevents unauthorized access to confidential documents
  • Compliance — Supports audit trails and regulatory requirements
  • User Experience — Enables seamless sign‑in across Microsoft 365
  • Automation — Ensures workflows and apps run under trusted identities

How SharePoint Handles Authentication

SharePoint supports multiple authentication methods, each designed for different business needs.

1. Modern Authentication

  • Uses OAuth 2.0 and tokens through Microsoft Entra ID (formerly Azure AD).
  • Benefits include:
  • Multi‑factor authentication (MFA)
  • Conditional access
  • Passwordless sign‑in
  • Better security posture

2. Windows Authentication

  • Ideal for on‑premises environments using Active Directory.
  • Includes NTLM and Kerberos.

3. Forms-Based Authentication

  • Allows custom identity providers such as SQL membership databases.

4. SAML Authentication

  • Used for federated identity scenarios with external identity providers.

Authentication vs Authorization in SharePoint

These two concepts are often confused, but they serve different purposes:

  • Authentication = Who are you
  • Authorization = What you can do

SharePoint first verifies your identity, then checks your permissions.

Best Practices for SharePoint Authentication

  • Enable MFA for all users
  • Use Conditional Access to restrict risky sign‑ins
  • Avoid legacy authentication protocols
  • Regularly audit sign‑in logs
  • Implement Zero Trust principles

These steps significantly reduce the risk of compromised accounts.