Skip to main content

SharePoint Hackathon 2025: Developing an Emergency Management Portal - Part One

Howdy everyone! It's that time of year again folks! It is time for SharePoint Hackathon 2025. This year's challenge will incorporate SharePoint portals, SharePoint Agents, and SPFx extensibility. It is certainly looking like a great lineup this year, and it is also the first time I will be competing in this lovely competition. With this in mind, I want to take you all on my journey, documenting what I will be developing and the successes as well as lessons learned along the way. We'll be building a beautiful portal, integrating with Power BI and Power Automate, and expanding on our understanding of lists. My hope is that with this short series you'll gain some inspiration to make your own portal similar to what I have done. SharePoint is a versatile tool that really is limited by your imagination. This contest allows for your creativity and skill to soar, which we will be putting to the test over the next couple of weeks. Enough chit-chat, let's get into what we'll be building!


Background

Newfoundland & Labrador; Canada's island surrounded by ocean and nature. It is a land of pristine flora and fauna as well as home to some of the worst storms. In 2020, Newfoundland and Labrador experienced "Snowmaggedon" which was a major snowstorm event that resulted in the island being pounded with 90+ centimetres of snow and the Newfoundland Government declaring a state of emergency. The subsequent weather resulted in major infrastructure becoming unavailable, necessities becoming out of reach, vulnerable persons trapped inside their homes, and the activation of our Canadian Armed Forces. What if there was a way that we could better 
efforts on the ground and ensure that all rescue teams are coordinated and informed? SharePoint can give command teams a centralized resource to coordinate efforts on the ground. Our SharePoint solution will do the following:
  1. Provide a centralized portal that allows for the coordination of personnel, equipment, and areas of operation.
  2. Provide a easy to use interface where command teams can get at-a-glance information through the usage of Power BI dashboards.
  3. Integrate with Power Automate to send "Check-In's" to ground teams via Microsoft Teams to check-in with personnel and ensure their safety.
It will not be an easy task, but just like the men and women who stood brave in the storm that day, we have a duty to provide them timely and accurate information in a friendly portal. When seconds count (having done first response myself), you don't have time to fumble and look at paperwork, you need to get information communicated quickly. This SharePoint portal will help us achieve that.

Colors, Themes, Fonts & Logos

The first aspect of building a SharePoint portal is figuring out how the portal will look. We want it to stand out, but I also do not want it to be something that is too flashy. The first idea that people get when it comes to building portals of this nature or crisis sites is that it needs to be flashy red, and have everything look urgent. When you are trying to make decisions that can make an impact on operations, you are not concerned with the flashiness of things, you want something that works. With this in mind, I am going with the following color themes for our SharePoint portal:

For my font, I will be sticking with the default font as I want to keep the font the same across all resources. If you are looking at data in a split-second, you want to ensure that you can easily read it without your eyes having to adjust to a different font for everything section. This can also apply in an non-emergency scenario, but again, when seconds count- you want to focus on the information not have your eyes trying to focus to a new font. Now for the logo, I am going with the following:


I have also created secondary and tertiary variations of this logo to use where needed. The logo encompasses a shield representing protection, a kisby ring signifying rescue, and finally a Newfoundland Dog. The Newfoundland Dog is a great swimmer, and also a rescue dog! I HAD to throw it in there. Now that we have that established,, I will throw this into a Teams Site and customize it. Now you may be asking yourself- why a Teams Site? Well, this is more than a tool to get information out to the masses. This portal will be a tool that boots on the ground members will also interact with, so I wanted to ensure that it integrated with them as much as possible, but also allowed for expandability if need be as these operators probably will use more than just SharePoint and Teams, but will also probably avail of other applications that integrate with the site. I am going to clean up the standard template and flesh out what I would like to add, the landing page will consist of the following layout:


This is what said layout looks like on SharePoint:

We have three Power BI dashboards (not pictured but present), a vertical section for a list of personnel that utilizes the People web part, and four single one-column sections that are expandable (which will utilize SharePoint lists. This easy-to-use interface will allow for command teams to access items quickly and get a snapshot of exactly everything that is happening. Now we need to focus on creating the backend of our portal, which will be built on SharePoint Lists.

Designing Our SharePoint Lists

As a first responder or incident commander, lists of readable information can help you make tactical decisions that can impact the success of an effort. With this in mind, we will be creating three lists that will allow us to track personnel, calls to service, and equipment. Let's start with the personnel list and make our way through the other lists! 

Personnel Tracking List

Our Personnel Tracking List will consist of the following columns and datatypes:

Full Name

Phone Number

Date of Birth

Blood Type, Conditions, and Medications

Role

Emergency Contact

Activation Status

Last Check In

Text

Text

Date

Multiple lines of text

Multiple Choice:

           Rescue Technician

       Medical

      Transport

      Logistics and Command

     Firefighter

     Police

     Military

Multiple lines of text

Multiple Choice:

           Deployed

      Not Deployed

Multiple Choice:

         Checked-In

         Not Checked-In

           Not Checked-In: Contact Immediately


Now let's translate that over to our SharePoint list, which will look something like this:
I should probably mention that I have also included the choice column "Assigned Area". This will be useful later when we go to create our Power BI reports.

Equipment Tracking List

We also have an equipment tracking list that will allow for us to keep track of those who utilizes equipment as well as keep track of it's maintenance. For this, we'll use the following columns and datatypes:

Title

Asset Tag Number

Equipment Type

Date Inspection Completed

Fit for Use?

Equipment Status

Date Checked In

Date Checked Out

Used By

Notes

Text

Integer

Choice

Date & Time

Yes/No

Choice

Date & Time

Date & Time

Lookup

Multiple Lines of Text


This is what said tracking list would look like in SharePoint:


Calls To Service List

Finally, we have our Calls To Service list. This will keep track of the calls that are dispatched to our personnel. We will later use Power Automate to send notifications to Area Commanders for more seamless assignment. For now, here is the list structure and data types:

Title

Call Type

Caller’s Full Name

Caller’s DOB

Caller’s Address

Description

Commander Assigned

Status

Text

Choice

Text

Date

Multiple Lines of Text

Multiple Lines of Text

Lookup

Choice


This list will look like this:

Tying it all together

With all of this now completed, we can add our lists to our main page in the collapsible sections we created. Which will look something like this:




What's Next?

We have created a theme in our Site branding, created the layout for our main page and our lists. Next, we'll look into creating views specific to our main page, automation, as well as improving our site overall. Until next time!

test

Using Power Automate to Update Contact Information

 We've all been there- you have a large organization who has out-of-date contact information. What do you do? You could go around to each department and ask them nicely to update their information, or send out an org-wide email prompting people to do so. However, this is tedious and oftentimes a pointless task. By the time you update one department, you're running to fix another. What if you could put the power back in the department's hands to do so? This is a struggle I faced recently as I was trying to find was I could conjure up some updated contact information for each department. As I did my research, I found that I was not alone in this endeavour as it seems that many IT professionals would love to make this process a little bit less painful. With this in mind, I introduce to you my latest flow! This flow will allow you to encourage users to update their contact information, without the overhead that comes with manual effort. In addition to this, this flow utilizes t...

Using Custom Connectors and Microsoft Graph API's to Manage Licenses in Power Automate - Part Two

Hello again! Didn't I promise you that I'd be back to wrap this up? Well, here I am to give you the second tidbit of information that you need to get this started. If you haven't already, take a look at my previous post where I go into depth about creating a custom connector in Power Automate to retrieve the latest sign-in and also gather the user's licenses. Now that we have the custom connector ready, we can now get into the meat n' potatoes of this series. In this post, I will show you the flow that makes this possible and how you can use the custom connector you have created to tie it all together! Hope you enjoy. Understanding the Logic Before we can begin creating the flow, we should first understand how the flow will work. I designed this to flow to be triggered manually, but you may want to schedule it or use another trigger. The trigger will depend on your organization's policies, so please adjust accordingly. Once triggered, the flow will use the Entra...

Using Custom Connectors and Microsoft Graph API's to Manage Licenses in Power Automate - Part One

Happy June folks! I come to you with another post, but this time I wanted to change it up and show you something else I have just finished working on. As a SysAdmin, one of the most common issues we run into is managing licenses. Working at a post-secondary institution makes this an even greater challenge, as you have both students, staff and faculty constantly coming as well as going. Managing to keep up with this constant change can introduce great administrative overhead which takes away time from important upkeep of other systems and initiatives. You may also notice this same issue in large corporations or in other government organizations. To help combat this, I wanted to create a flow that can do the following: Get the user and their licenses Determine their last sign-in and the date Conditional to determine if the user is past the "cutoff" date Remove the user from a group where the license is assigned The only problem with doing this is that Power Automate does not ha...