Registration in Portal to contact in DataVerse

Using Portals we have created a registration form, which will include all information we need for the customer record in DataVerse.

Once the form is submitted a contact record is created in DataVerse. Using a Cloud Flow we create an approval on this creation before assigning the record a contract/deal.

Because of legal reasoning around the power of attorney we have implemented, we have to manually approve each contact as off now. But this is a one-time process for each customer after they are validated.

Once they are approved we update the contact with a new status, and as of that, we assign a contract.

Of course, no problem, we got your back!

When we, three NoCode/LowCode people register for a Hackaton, we kind of figured out that maybe writing code wasn’t the way to help other teams. But, that doesn’t stop us, we’ll help you out in any way we can! And, when someone needs something cut with scissors, we’re there! It’s our pleasure, and the sign looks amazing!

And of course, enjoy a cold coke while you see us working hard to acchive what you need <3

The True Risk to our Existence

Who can pick up the mantel after we retire? Who is truly a ninja!? We need to recruit the future of TMNT and the best to do it is through AI. We will use AI Builder and a custom model to identify our future ninjas, in return we offer cheap pizza, a full 5% discount on your purchase!

Only the customers masked as a TMNT will be offered the precious discount!

Code – commit – MAGIC – live

We are using best practicing development and deployment for out Web Api solution hosted on Azure.

We code it with .NET 6 in Visual Studio 2022:

We do sensible commits using Git towards GitHub:

In Azure our app is wired up to listen to this repository and do build, log and deployment to our resource in Azure:

And it’s all accessible here:

We claim:

Target crawler

Re-post for SOME blogging from the interwebs targeting the Crawler badge

Using Microsoft Search Graph Connector and Microsoft Graph Search API’s we are indexing/injecting the ACDC blog posts into the TMNT intranet sphere to allow our turtles to stay up to date on what competitors are doing.

Graph Connector Setup
Graph Search in action

The Media dashboard has also been extended with a twitter feed.

HTML5

We are using HTML5 responsive website templates from webflow (https://webflow.com/templates). Take a look at the website we are currently working on
–> https://smartzooapp.webflow.io/

We are developing a interactive website were customers can subscribe, sponsor and follow their favorite Zoos. They can also subscribe to specific animals they want to follow. It is like a social platform for animals.


Happy coding!

Middle-age Mutable Ninja Tuples is scripting its infrastructure!

Our Blazor web app allows people to register as Turtles, meaning they will help others in need. In the field, Turtles use the official Dynamics mobile app. To use the official app, users need an Azure AD user with a Dynamics license and a security role in Dynamics.

Instead of having to manually create users in Azure AD and assign licenses and Dynamics security roles, this infrastructure is programmatically set up.

The backend of the Blazor web app uses a custom Azure API client which programmatically sets up the infrastructure: creation of Azure AD users and assigning of Dynamics licenses.

Because of our Infrastructure as Code, users are able to use the official Dynamics mobile app automatically after registering – no manual steps required!

The following image shows the method that creates an Azure AD user and assigns the Dynamics license.

Interaction with Azure AD is done using GraphServiceClient from the Microsoft.Graph NuGet package. Authentication is done using an Access Token retrieved using functionality from the Microsoft.Identity NuGet package.

Dirty Hacker

Vi har gleder av å presentere vår Dirty hacker Kenny!

Vår kjære Kenny har laget en function app som trigger en logic app. I stedet for å skrive direkte til dataverse og sette opp kode som henter authentication tokens og håndterer dette, sender denne function appen dataen til en logic app. Denne logic appen håndterer da alt med autentisering. Dette legger til et ekstra ledd som forsinker hele prosessen, noe som IKKE er lurt når man vil jobbe med real time data. Spesielt når det er snakk om uvurdelige kunstverk.

Dette er for å skrive sensordata til dataverse sånn at vi kan bruke det i visualiseringen i Power BI

I og med at vi ikke har penger til å kjøpe mange (eller i det hele tatt èn) sensor, har Kenny enda en nasty hack. Dette går ut på å simulere sensordata.

Siden vi ikke har tilgang på noen IoT-enheter (😢) genererer vi målingene ved bruk av simuleringer fra en Raspberry Pi web simulator: https://azure-samples.github.io/raspberry-pi-web-simulator/ som vi har ti instanser av og skriver til ti forskjellige enhetregistreringer i IoT Hub i Azure.  

Denne dataen blir så tilgjengeliggjort i endepunktet som er innebygd i IoT Hub som igjen trigger en Azure Function App som formaterer dataen og trigger Logic app som skriver til Dataverse.  

Dette gjør at vi kan vise temperatur og fuktighet i “vårt museum”. Selv om det i dag ikke er hooket opp noen sensorer. Dette er jo noe man ikke kunne sendt inn i prod, ettersom den ikke er koblet til noen sensorer og man dermed ikke ville fått beskjed selv om museet skulle brent ned og oversteget grensen for hva maleriene tåler av temperatur 🙂

Deling er å bry seg!

I løpet av gårsdagen slet vi mye med å få knappen til kjøleskapsdøren vår til å fungere. Vår eminente Arduino-utvikler, Mats, jobbet iherdig med å kode seg rundt alle problemer. Det viste seg at han manglet en motstand… Nærmere bestemt 10 000 ohm…

Undertegnede var ute på en runde rundt i lokalet, for å se om det var noen som trengte hjelp med ett eller annet. Etter en liten stund var jeg i kontakt med @infoninjas og kom i en god prat om løsning. Plutselig la jeg merke til en remse med motstander på bordet. Kunne det være 10 kΩ??? Jammen var det det!
Uten å spørre, fikk vi tilbudt en liten resistor. Og vipps, så funket knappen! Tusen takk til @infoninjas!

Som gjengjeld sent i går kveld satt det samme teamet og slet med Power Appen sin. De fikk ikke skjemaet sitt til å sende inn et bilde. Vi sendte øyeblikkelig vår beste PowerApps-utvikler Henrik. Han oppdaget fort at feltet lå uten for formet, fikk lagt det inn på rett måte, og vipps der funket det!

Hvis alle deler av sin kompetanse, og tid, vil alle komme godt ut av det. Motivasjonen er tilbake på topp hos vår Arduino-utvikler, og hos InfoNinjas PowerApps-utvikler! Vinn-vinn!

La resistance

Excellent user experience – security – and Microsoft Compliance

We wanted to make the portal login for the end users more secure and to enable the users to login with their own Google or Microsoft account.

Branding authentication buttons

Microsoft

In order to create a good user experience and be compliant with Microsoft’s rules for how Sign-in-buttons with Microsoft authentication should work we used this documentation:

https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-add-branding-in-azure-ad-apps#visual-guidance-for-sign-in

Google

We wanted to make sure we followed the guidelines for login button to Google as well;

Sign-In Branding Guidelines  |  Google Identity  |  Google Developers

Authentication Providers

Security

Disable local sign in with username and password. This feature is deprecated. If we wanted to use email/username and password as authentication we should use Azure AD B2C instead – that would be more secure.

Result

You can register and login with Google or Microsoft, and internal users can sign in with their Azure AD account.

This provides a great user experience and flow for the user.