Climbing the Stairways to Heaven!

Since we build on Power Platform, Power Apps and Power Automate provides connectors to various APIs that we use in our app logic and user interface.

Here are some of the ways we are using APIs in our solution:

Power Automate and Outlook 365 API

We use the Outlook 365 API to access one user’s inbox and wait for an incoming email. This email is from the Game Player – and determines if the player progresses in the game or not. This is a bonus nested API call as the Power App triggers the use of the Outlook 365 API through Power Automate!

Copilot Studio

We use the Copilot Studio API to interact with a custom prompt that can act as an advisor throughout the game. At any point in time you can activate the chat and ask any questions you want, to get clues and hints on how to progress in the game. (The butler even knows a lot of secrets about the little town!)

Dataverse

We use the Dataverse API to store and retrieve data for our app/game in Dataverse Tables, such as game progress, Rooms/Locations, Excercises/Questions, Assets (images etc). This makes the game/app much more dynamic as we do not store the information within the app itself.

Star world to the cloud

Choo choo! All aboard the star train to the microsoft cloud! The sole action of finding and identifing bananas is not enough. We need to alert people of the danger that has been detected in traffic before they can cause more harm.

Introducing the Banana Notifier Bot (BnB):

The BnB helps our users by sending teams notifications when bananas have been detected.It uses our notification API (which gets data from our banana-scanning app), Bing Maps API and Graph API with location data and timestamp.

Our Notification API also utilizes the SharePoint REST Api to fetch next of kin information from a SharePoint list. Lastly, we store all our banana findings in Dataverse using the Dataverse Web API. Utilizing a total of four (!) Microsoft APIs.

Captain’s log – data at your hook-tip

The captain log business value is that he has an app with all the tools he needs at the tip of his hook.

A new feature:

Behold the “Reveal your true face feature”

Revealing the true face

Some pirates find their interest in hiding away, and then it is handy to have an app to show the true face and spot if this is a know fellow shipmate or a rivalling pirate that deserves to be keel hauled.

The service uses a mobile or tablet camera to take a picture of the person in-question and then posts it to mutiny services for identification and face recognition in order to find who this person is.

Claiming the ACDC Craftsman since it is created using actual code with some best practices in react development: https://github.com/TheBastards-ACDC2023/Bastards-NativeApp

Maritime Mischief Manager (MMM) – A description

“MMM.. is the ultimate tool for pirate captains looking to maximize their raids. With our comprehensive system, you’ll be able to plan, organize, and execute the perfect plunder. No more manual logs, no more disorganized crew. Just a streamlined, efficient process for taking what you want from the high seas. Upgrade your pirate game today with Maritime Mischief Manager.”

Pirates are met with a friendly user interface where they can manage all aspects of pillaging.

Creating a Raid

Under the “New Raid” menu, pirates with the rank of Captain can take a look at possible raid prospects and get an overview of the best possible strategy and also an estimation of the loot potential in the selected location.

The results we are seeing above comes from a query against the ChatGPT API with the use of Power Automate.

Being satisified with the current target, the Captain selects the vessel for the raid, choose to create it and the raid enters planning mode.

Raid planning

From the raid list, piratescan view raids in the planning stage. Simple pirates can choose to join a raid if they want to, but Captains can also choose to invite his best men. Pirates receiving an invitation will have to accept/reject the invitation through their Teams account.

Once the pirate has received and accepted an invitation, they have to scan their provided RFID card when they board the ship. They will then enter the status of Checked in.

Once the RFID card is scanned at the ship, a HTTP request is sent to the raid check-in flow, the flow will update the crew status.


When the Captain is happy with his band of criminals, he chooses to start the raid. The app conveniently simulates the battle as well, together with some nifty battle music. This is of course to save the hassle of actually raiding a place.

Reporting

The pirate management team of course also have access to beautiful numbers of the entire operation

Stairway to Heaven for Orange Bandits

Leveraging of Microsoft API’s allows developers to quickly get started witch achieving meaningful results in the development process.

Here is a quick summary of API’s we used, that are delivered by Microsoft:

  • Dataverse REST API:

Used as backbone of our systems integrations, main data ingest and source point. It is used in PowerBI to expose data to report:

  • Microsoft Bot API

It is used in sending notifications to Teams App (more on that in A Pirate Call to Arms! | Arctic Cloud Developer Challenge Submissions (acdc.blog)!).

  • Machine Learning Services API

ML REST API is used in PowerBI report to show the information about potential pirate looting activity outcome, based on information about the potential looting target:

Microsoft Identity platform (Azure Active Directory Authentication)

call from .NET code
and as it’s seen in Fiddler

This vehicleApi is on top of microsoft sql server database which is providing vehicle data based on MachineLearnings recognition of a make of a car. In order for the api to work, it connects to Azure Keyvault – and in order to access it, a call to microsoft Azure Ad Authentication API is made.

🚀 Automagical Fairs and Shouts to Fellow Pirats using Service Slave Workers 📣

When plundering and sailing keeping track of pesky DM’s is no job for the captain or crew. This’ why we summoned the services of Power Automate and Power Apps to do our bidding: Enabling our ship to run smoothly and commands being forwarded at the correct time to the correct people.

It all starts with the Consumer of Data “Power Automate” who collects data from all our different intelligence points. Working in the shadows, this ghost can be attached to any workflow. Currently, since it thrives on human flesh for its operations, we started by attached to our crew log. Whenever Power Automate smells the fear of a new deck hand, laddie or lassie onboard it goes to work!

On a new pirate record Power Automate does two things:

  1. Creates an Adaptive Card in teams and posted it to the ships group chat
  2. Sends a welcome e-mail to the fresh pirate, explaining how they need to obey or walk the plank (all pretty standard pirate stuff).
Current Dataverse Tables the flow can write to and read from.
Power automate flows that creates and updates records, when records for pirates are updated we trigger a Teams Integration.

Making the Captain’s work Screen Agnostic

We further improve the Captain’s life with Power Apps connected to the Power Flows. The Power App sits on the users phone, implemented via Teams or as a standalone app, and enables the Captain to administrate the crew roster, so any stowaway can be added to the crew and receive the required e-mail package with plank rules and NDA’s. This mobile approach lets the captain be in full control even when venturing away from his cabin and the desktop computer therein.

Screen snippet showing Power Automate triggering Teams Adaptive Card on new shipmate record.

The convenience of having the Power Apps in teams means the captain can manipulate his Ship, The Raids and roster from any surface, be it mobile, desktop og even tablet!

Screen snippet showing the Power App integrated into a Teams. Notice the responsive nature of teams adapting to any viewport.

Using Power Apps means we can also simulate raids adding new test data on the fly, without it needing to come from our Power Automate flow.

User generated Raids in the raid table, created directly within Power App.

In Summary, for Sleepy Pirates:

  • The Power App enables our users to directly manipulate our data storage.
  • The Power Automate allow other sources and application to remotely access our data.

Client Side Salsa and Stairway to Heaven

Claiming Client Side Salsa and Stairway to heaven 

The harbour chief is leveraging M365 and Teams to get an overview and staff raids. 

To do this we have made a spfx Teams app. This of course uses React as a frontend framework. 

The app gets data from Dataverse and the harbour chief’s personal digital loot files in an Azure Storage account. The SAS key for accessing the storage account is of course kept in a key vault for the harbour chief’s eyes only. 

The SAS key is kept in key vault. 

The harbour chief has his own personal storage for his digital loot

The digital loot can be accessed by the harbour chief 

The harbour chief has an easy view of browsing pirates that are available for raids. 

The harbour chief has an easily automated way of staffing raids based on availability and scores.

The app suggests the best-suited crew for the raid. 

Stairway to heaven API’s

  1. Dataverse
  2. Keyvault
  3. Storage Account Azure

Microsoft could api <3

Let’s face it first rather than later, we do work with Microsoft technology, and what is better than combine a lot of them together in the same solution? Look at the screenshots under, with the text to every picture, and we’re sure you also think this is a stairway to heaven!

First of all, the canvas app we have created is connected to AD so I get my profile picture from AD when I open the app
And then we have a live sync with my Office account so I can se my calendar and shedule for the days i select.
And, of course we use PowerAutomate to update my personal information directly to the F&O tables so I can be used as it’s needed by the P-level management!

Onboarding flow for new pirate recruits

An important part of Pirates 365 Recruit is the onboarding flow:

The super-popular Pirate Recruitment Terminal (PRT) give a lot of leads, and it is important for the HR team not use too much time onboarding the pirates

We have created a Power Automae flow that automates much of this, with the following features

  • Generate Pirate Names (described in this post)
  • Generate Lead in Dataverse
  • Prompt adaptive card in Teams
  • Generate Azure AD user
  • Add newly generated Azure AD user to Azure AD group
  • Send SMS to recruit with login info and link to learning game

Power Automate Cloud Flow Overview

Creating Leads in Dataverse

After the pirate name is generated a lead is created in Dataverse

Usling Leads in Dataverse the recruitment team can collbaorate on the candidates – all integrated in the Recruitment Teams Channel.

Creating Adaptive cards

We are also posting adaptive cards to the team, and is possible directly from the adaptive card to accept the pirate recruit to go further down in the recruitment proccess

Generation of adaptive card. Generated in https://adaptivecards.io/ to get a nice design and actionable buttons

Create users in Azure AD, assignment to security roles and licenses

After the recruit is accepted the newly hired i created in Azure AD and given proper licenses and permissions

We are using Azure AD Security groups to dynamically assign licenses to the newly accepted pirate recruits

Here we see that they get Dynamics 365 Customer Engagement licenses – so they can use our powerapps with a lot of fancy premium features✌️

Last but not least – telling the newly hired pirates how to login by sending a SMS

After all this we need to notity the pirates how to log in

We send a SMS using the Norwegian SMS-provider “Sveve” which have a simple API.

We send the username and the generated password (which the recruit must change on first login)

A link to the pirate training is included, so the pirate can train to be a worthy pirate

Badges

We think this solution may qualifty for

  • Feature Bombing by using five different services in one flow
  • Power User Love by using a nice combination of Power Automate, Microsoft Teams and Dynamics 365
  • Stairway to heaven by using Azure AD API; Dataverse API and Teams API

API

We are using many different endpoints to get data from different sources. Some of them by using the sdks and some of them clean http requests:

-Azure Signal R (Hub):

-Azure Web Application:

https://app-acdc2022.azurewebsites.net/api/telemetry/GetTelemetriesWithTemperature

-Azure Maps Geolocation:

https://atlas.microsoft.com/mapData/{location}/status?api-version=1.0&subscription-key={subscription-key}

-IoT Central:

Internal service from IoT Central to LogicApp and Flow.

-Metamask:

The extension injects the Ethereum web3 API into every website’s javascript context, so that dapps can read from the blockchain. We use it when loggin in onhttps://smartzooapp.webflow.io/ :