I Built a Personal Meeting Assistant in Minutes – Copilot Workflows (Frontier)

How many minutes do you spend every morning scanning your Outlook calendar, figuring out which meetings need your attention and which ones you can skip? For most of us, it’s a daily ritual that quietly eats into productive time.

What if I told you that you could automate this entirely — and it takes less than 5 minutes to set up?

Enter Workflows (Frontier), a powerful agent inside Microsoft Copilot that lets you build scheduled automations using plain English. No Power Automate connectors. No code. Just describe what you want, and Copilot does the rest.


What I Built

I created a workflow that runs every weekday at 08:00 AM IST, reviews my entire Outlook calendar for the day, and sends me a neatly organized summary as a Teams message — before I even open my first app.

Here’s the exact prompt I used:


“Every weekday at 08:00 AM IST, review all meetings scheduled on my Outlook calendar for the day and send me a summary as a Microsoft Teams message.

For each meeting, include the following details:

  • Meeting title
  • Start and end time
  • Meeting organizer
  • Required attendees
  • Whether I am listed as a required attendee

Organize the response into two sections:

  1. Meetings where I am the organizer or a required attendee
  2. Meetings where I am not a required attendee

Within each section, sort the meetings by start time in ascending order.”


That’s it. One prompt. The Workflows (Frontier) agent takes care of everything — reading your calendar, extracting meeting metadata, categorizing meetings based on your role, sorting them by time, and delivering the final summary to Teams.


Why This Matters

As someone who juggles 8–12 meetings on a busy day, this small automation has had an outsized impact on my mornings:

  • No more calendar scanning — I get a clean, prioritized view of my day in Teams before I even start working.
  • Instant clarity on priorities — Meetings where I’m a required attendee or organizer are listed first, so I know exactly what demands my focus.
  • Reduced meeting surprises — The “not a required attendee” section helps me decide which meetings I can skip or follow asynchronously.
  • Zero effort, every day — It runs on autopilot, weekdays only.

What is Workflows (Frontier)?

Workflows (Frontier) is an agent within Microsoft Copilot that allows you to create automated, scheduled, or event-triggered workflows using natural language prompts. It connects seamlessly with Microsoft 365 services — Outlook, Teams, OneDrive, and more — making it incredibly easy to automate repetitive tasks without writing a single line of code.

Think of it as having a personal assistant that follows your instructions to the letter, every single day, without reminders.


What Else Can You Automate?

The possibilities are endless. Here are a few ideas to get you started:

  • 📧 Daily email digest — Summarize unread emails from key stakeholders every morning
  • 📁 Weekly file roundup — Get a Teams message listing all files shared with you in the past week
  • ✅ Meeting follow-up — After every meeting, auto-send a summary of action items to attendees
  • 📊 Status reminders — Send yourself a Friday afternoon prompt to update your weekly status report

🎬 Watch the Full Demo

I’ve recorded a complete walkthrough of this setup on my YouTube channel JBSWiki, where I demo the workflow live — from prompt to Teams delivery. If you’re a visual learner, go check it out!

👉 Watch here: https://www.youtube.com/watch?v=8ayDKHN4ALo


Final Thoughts

We often chase big productivity hacks, but sometimes the biggest wins come from eliminating small, repetitive tasks. This 5-minute setup saves me 10–15 minutes every single workday. Over a year, that’s 40+ hours reclaimed — just from automating a morning calendar review.

If you’re using Microsoft 365 with Copilot, give Workflows (Frontier) a try. Start with the prompt above, tweak it to your needs, and let AI handle the mundane so you can focus on what matters.

Thank You,
Vivek Janakiraman

Disclaimer:
The views expressed on this blog are mine alone and do not reflect the views of my company or anyone else. All postings on this blog are provided “AS IS” with no warranties, and confers no rights.

SQL Server Cleanup Using UninstallString When Programs and Features Entry is Missing

Issue

In some environments, SQL Server services may still exist on the server, but the related SQL Server entries are missing from Programs and Features. This can happen due to missing or corrupted registry entries, incomplete uninstallations, or failed patching activities.

To identify the uninstall information from the registry, the following PowerShell script can be used:

Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*, `
HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
Where-Object { $_.DisplayName -like “*SQL Server 2016*” } |
Select-Object DisplayName, UninstallString

Solution

The above script helps retrieve the UninstallString for SQL Server components directly from the registry.

In many cases, the uninstall command may contain:

/I

For uninstallation, this should be replaced with:

/X

Example:

MsiExec.exe /x

This forces the uninstall operation instead of launching the installer in maintenance mode.


Important Remarks

  • This approach should mainly be considered for remote support cases or emergency cleanup situations.
  • There is always a possibility of future issues when manually cleaning up SQL Server components using registry-based uninstall methods.
  • The recommended and safest approach is always to rebuild the server if SQL Server installation metadata or registry entries are heavily corrupted.
  • Use this method only as a last resort and proceed at your own risk.

Summary

When SQL Server entries are missing from Programs and Features, the uninstall details can still be retrieved from the Windows registry using PowerShell. Replacing /I with /X in the uninstall command can help remove orphaned SQL Server components. However, since this method relies on registry-based cleanup, it should only be used cautiously in exceptional scenarios, with server rebuild remaining the preferred long-term solution.

Thank You,
Vivek Janakiraman

Disclaimer:
The views expressed on this blog are mine alone and do not reflect the views of my company or anyone else. All postings on this blog are provided “AS IS” with no warranties, and confers no rights.

Azure Databricks Series: Step-by-Step Guide to Creating an Iceberg Table from Azure PostgreSQL

Watch this on You Tube https://www.youtube.com/watch?v=Yo0x4u6jc4M

🔗 If you’d like to learn Azure Databricks step by step, check out the full playlist here:
👉 https://www.youtube.com/playlist?list=PLNj2XeCNjFeosTuxZLjfYvnW4H1hsPH07

🌟 Introduction

In today’s data-driven world, organizations need a scalable, open, and flexible way to manage data across storage and compute platforms. Azure Databricks and Apache Iceberg together offer exactly that!

In this blog, we’ll explore how to connect Azure Databricks to Azure PostgreSQL and create an Apache Iceberg table using a simple, step-by-step approach. This approach helps you modernize your data lake and unlock new possibilities for analytics and machine learning. 🚀

💡 What is Apache Iceberg?

Apache Iceberg is an open table format designed for large-scale, analytic datasets stored in data lakes. It brings data warehouse-like reliability to the data lake by supporting:

  • ACID transactions
  • Schema evolution
  • Partition evolution
  • Time travel queries
  • Hidden partitioning

With Iceberg, you can build a true lakehouse architecture that combines the performance of a warehouse with the flexibility of a data lake.

🧩 Why Connect Azure Databricks with Azure PostgreSQL?

Azure PostgreSQL often stores transactional or operational data. But for large-scale analytics, it’s better to replicate or move that data to Iceberg tables in Azure Databricks. This gives you:

  • Faster query performance
  • 🧠 Seamless integration with Spark and ML workloads
  • 🧱 Data versioning and audit support
  • ☁️ Scalable, cost-efficient storage

⚙️ Prerequisites

Before we begin, ensure you have:

  1. ✅ Access to an Azure Databricks Workspace
  2. ✅ A running Azure PostgreSQL Flexible Server
  3. ✅ Correct JDBC connection details (hostname, port, username, password)
  4. ✅ A Databricks cluster with Iceberg support enabled

🪜 Step-by-Step: Creating an Iceberg Table from Azure PostgreSQL

Let’s go hands-on and build it! 👇


🔹 Step 1: Define Connection Details

In your Databricks notebook, start by specifying the PostgreSQL connection details.

jdbcHostname = "jbpos-sql-vnet.postgres.database.azure.com"
jdbcPort = 5432
jdbcDatabase = "postgres"

jdbcUrl = f"jdbc:postgresql://{jdbcHostname}:{jdbcPort}/{jdbcDatabase}"

connectionProperties = {
  "user": "jvivek2k1",
  "password": "xxxxxxxxx", 
  "driver": "org.postgresql.Driver"
}

Here:

  • jdbcHostname → your PostgreSQL server name
  • jdbcDatabase → the database you want to connect to
  • user and password → your login credentials
  • driver → PostgreSQL JDBC driver class

🔹 Step 2: Read Data from Azure PostgreSQL

Now, let’s pull data from your public.customer table in PostgreSQL into a Spark DataFrame.

df = spark.read.jdbc(
    url=jdbcUrl,
    table='public.customer',
    properties=connectionProperties
)

✅ This reads all rows and columns from your PostgreSQL table into Spark.
You can verify the data with:

display(df)

🔹 Step 3: Write Data to an Iceberg Table

Once the data is in Databricks, we can save it as an Iceberg Table in the Unity Catalog or Hive Metastore.

df.write.format("iceberg") \
  .mode("overwrite") \
  .saveAsTable("finance.default.postgres_customer_iceberg")

🔹 Step 4: Validate the Iceberg Table

After writing, you can run SQL queries in Databricks SQL or the notebook itself to validate the table:

SELECT * FROM finance.default.postgres_customer_iceberg;

🌍 Benefits of Using Iceberg Tables in Azure Databricks

1️⃣ High Performance Queries — Iceberg handles large datasets efficiently with advanced partition pruning and metadata optimization.

2️⃣ Schema Evolution — Add or modify columns without rewriting entire datasets.

3️⃣ Data Time Travel — Query data as it existed at any previous point in time.

4️⃣ Open Source & Interoperable — Works with multiple engines (Spark, Trino, Flink, Snowflake, etc.).

5️⃣ Cost-Effective Storage — Store data in open formats on low-cost cloud storage.


🏗️ Real-World Use Cases

  • Building a Data Lakehouse from operational systems
  • Creating auditable, version-controlled datasets
  • Simplifying ETL pipelines by standardizing on Iceberg tables
  • Enabling ML workloads with consistent and reliable data layers

🧠 Pro Tips

💬 Use Azure Key Vault integration to securely store your PostgreSQL credentials instead of embedding them in code.
⚙️ Use Incremental Loads instead of full overwrite for production pipelines.
📊 Consider using partition columns for large tables to improve query performance.


🎯 Summary

In this blog, we:
✅ Connected Azure Databricks to Azure PostgreSQL
✅ Loaded data from a PostgreSQL table into Databricks
✅ Created an Apache Iceberg table for modern data analytics
✅ Validated the data through SQL queries

By combining Azure Databricks + Apache Iceberg + Azure PostgreSQL, you’re enabling a modern, open, and scalable data lakehouse architecture that’s built for performance and flexibility. 💪

Thank You,
Vivek Janakiraman

Disclaimer:
The views expressed on this blog are mine alone and do not reflect the views of my company or anyone else. All postings on this blog are provided “AS IS” with no warranties, and confers no rights.