Sunday, 12 February 2023

Adding Adaptive Card messages into Teams using Postman

 WIP: I've wanted to play with adaptive cards for awhile, but this post is about using the WebHooks that teams can expose to that adaptive cards and be pushed into a Channel.

1. Configure a teams channel to support incoming webHooks

2. Run a postman POST request to push the card into the MS Teams channel


Tip: Ensure you add the header to the postman request:




Saturday, 11 February 2023

Audit log retention in Dataverse

Overview: Audit data log retention is now fairly easy to implement in Dataverse, you can set whatever is audited and set the for how long duration easily.

Thoughts: As a simple version, I'd audit all changes into the Dataverse and set the retention to 7 years.  Now this could end up costing you a considerable amount of money so consider, do I need to audit everything, do I need to retain this long, can a use a long term storage retention approach.  There are a variety reasons for customising Datavervse data retention including: to comply with laws and potentially the need for litigation, to comply with industry standards/certification, and to keep a full history to understand why we have the current data position.
  
Ultimately, I need to identify/understand how to store audit history, clean up when no longer needed, ensure it is no affecting you live system performance, and can be retrieved by authorised people in the timeline required for each project or at an enterprise level.

If a system changes a lot and uses blobs, the audit history will be large and Dataverse is not necessarily the best place to store long term audit history.

Technical: Dataverse stores data in an Audit entity (table), the infrastructure has been changed in late 2022 to handle the audit data separately to allow for better non-functional requirements to available.

Sunday, 5 February 2023

Useful UI Links

Overview: There are a lot of resources for graphics, infrequently I found this useful:

https://www.canva.com/en_gb/

https://www.flaticon.com/search?word=inspection

Wednesday, 1 February 2023

SaaS Product surrounding services

Onboarding - Ability to allow customers to sign up to trials, sign-up as a customer, payments and billing.

Sales Channels - Ability to bring on new customers from various channels like other websites, digital adverts, telephone,... Can be from very simple to supper complicated.

Service Page - All clients to see the current status of your SaaS products e.g. 

https://portal.office.com/servicestatus

https://status.quickbooks.intuit.com

A lot of incident management software offers white labelled status page

SaaS solutions include: 

statuscast.com

statushub.com

Sunday, 15 January 2023

Postman to verify OpenAPI's are running

Problem:  Our teams rely on a 3rd party API for a new project being delivered, the API's are in a state of change and are constantly up and down making life tough for the teams replying on the API.

Hypothesis:  I need a quick way to check the API's to see if they are all working in dev, and test.  I have two postman collections for the REST API's.  If i combine them and check the key API's using postman I can save myself and other time as I'll know the current state of the API's.

Solution: Create a site collection that does the API verification, you can make it more complex with data and variables.

Problem:  I can open Postman and run the test which takes a few minutes.  We need to do this quicker.

Hypothesis: I'd like to be able to run the tests quickly on demand.  Use postman CLI and Powershell to run the collection and display the result.

Solution

1) Add the Postman CLI to my machine:

PS> powershell.exe -NoProfile -InputFormat None -ExecutionPolicy AllSigned -Command "[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://dl-cli.pstmn.io/install/win64.ps1'))"

2) In postman generate an API Key for the Collection > Run Collection > Automate runs via CLI > Generate the API Key > Copy the generated code


3) Run the code in PS to verify it works correctly.

4) Copy the PS code into a newly Created ps1 file on your local machine, I added a read line so I can see the result.


5) Run the API.ps1 file and verify the result

6) Setup a desktop short-cut to run and see the result.  Right click the API.ps1 file and create a shortcut on your desktop.  Right click and amend the target and amend the target value:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File C:\Users\PaulBeck\Downloads\Projects\PoC\Postman\API.ps1

7) Save and run the shortcut to verify.

Problem:  Monitor and alert DTAP API's are working and performance

Resolution: I want to monitor that my endpoints specified in my Postman collection in Dev, UAT et al. are working, can be more than 1 endpoint using Postman Monitor.

Next steps: Add to automated DevOps processes, using Newman.

Saturday, 14 January 2023

APIM Logging

Overview: Azures API Management is a big service, it is worth understanding the logging capability so you can effectively analyse traffic.

Thoughts:

  • Multiple App Insights can be setup with default logs going to a specific App Insights.
  • Each API can be overridden to log to any of the API's added to API.
  • The old "Classic" App Insights, stored data internally, whereas the new "workspace-based" app insights", I think of it it as "V2 App Insights connected to a Log Analytics", the new data is stored in the workspace.
  • If you upgrade App Insights, the results blend from two storage locations, the old data stored internally with App Insights and the new data stored within Log Analytics - if you query Log analytics, you only see the new log analytics data.
  • Security for App Insights should be done at the Resource Group (RG) level, ther are AppInsight roles for use at RG level, if the workspace is on a different resource group to the app insights connected instance, ensure you sort out the permssions in both RGs.
  • Open Telemetary project is making strides forward, and for API's it will be great.

Problem: I recently migrated a customer Dev, Test, Appearance, Pre-prod and Production (Not yet) to use the AppInsights instance running on Log Analytics (sometimes refereed to as V2).  Logging wasn't work correctly.


Initial Hypothesis: I have complicated resource groups differing crossing DTAP boundaries.  By default, APIM has a logging catch all setup per APIM instance and then specific API's settings are changed to log to specific App Insights.

Steps:

My AppInsights instance was to rename the old classic type AppInsights e.g. "appinsights-dev" becames "appinsights-dev-delete".

Create a new AppInsights instance using the V2 Log Analytics option  and name it the original name "".  The client opted for the name to be the same.  It would be simpler to give it a name like "appinsights-dev02".  The clients also wanted to use a shared Log Analytics instance per env e.g. "loganalytics-dev-shared".






Monday, 2 January 2023

Power Platform Competitors

Mendix Series

1.  Overview of Mendix (this post)

2. Mendix - Part 2 - Diving deeper

Overview: I like Power Platform, but other options exist. Most competitors' products cover a piece of what the Power Platform covers.

Originally Generated with Thanks to Gareth R.
Mendix Vs PowerApps
  • Mendix and PowerApps are compared across various criteria. Mendix is suitable for complex, enterprise-grade applications with extensive customisation options but is generally more costly.
  •  PowerApps is ideal for rapid app development, integrates seamlessly with Microsoft services, and is more cost-effective for smaller projects. Larger projects require premium licenses per user, so PowerApps can become extremely expensive. Once you build many apps and your user base has premium licencing, PowerApps becomes extremely economically viable.  
  • Mendix scores higher in integration capabilities, scalability, performance, innovation, and accessibility, while PowerApps scores higher in ease of use, development speed, customization, and support and community.  
  • Many factors affect which low-code tool to use, including what the developers are trained in, how many apps you build and support over the next 3-5 years, and what licences and technology stacks your business currently has. Getting Canvas app developers is far easier and cheaper than getting Mendix developers and experts.
  • A common scenario for businesses that use Mendix is having Office 365 E5 plans; then, it is about picking the right technology for the right project.  
  • Mendix excels in Factory and manufacturing applications.

Mendix Studio Pro version 10.x

Mendix: I have used Mendix a fair amount and like the product. Mendix is straightforward, logical and easy to learn. 

Cons

  1. The publishing is very slow.
  2. For the free version, you have to use the Mendix subdomain. The basic plan is $50/month for my small demo. The cost of a Mendix licence and hosting is high for a one-off project; therefore, it is more suitable for building medium-sized projects.
  3. Each app has a separate database, which needs to be managed or, in the cloud-hosted scenario, does not allow direct access except via backups or REST OData API's. You can build multiple front ends, but this is more of a workaround than a good idea.
  4. For decent ALM, follow Mendix guidance as it is tightly coupled to the IDE/dev process.
  5. Building many apps/gap-filling apps, as well as large complex apps, can overwhelm Mendix.

Outsystems is the other recognised leader in the Low-code space. Its focus, to me, is on building large, complex solutions faster using low code.

Outsystems focuses on Low code for large enterprise systems. It is big on flows like Mendix to build logic, but unlike Mendix, which only allows custom Java code in widgets, Outsystems allows custom code in multiple languages to be integrated.

Outsystems can use either SQL Server or Oracle for its main data store. Similar to Mendix, Outsystems can expose REST APIs via automatic generation. Both products are good at consuming APIs.

Both systems allow for MFA IDP SSO authentication. Data is encrypted at rest and in transit by default. Both have many compliance standards, such as ISO and GDPR.

I like the way Outsystems can use AAD Security Groups; Mendix can be awesome, but it's not my favourite.

I'd choose Outsystems if I were building a large, complex system using low code over Mendix, assuming no in-house skills in either.

Airtable:  Has lots of templates and easily connects to various data sources.  Easy to extend or build apps on the platform. Provides storage and low-code apps.  It's like having Dataverse and Power Apps.  There are pre-built templates to get the team off to a start.

Nintex: Bought K2 and have a long history in workflows (workflows for SharePoint and O365), screen/form generation and form building.  If your company uses Nintex, it's worthwhile, but I wouldn't use it for new projects or if the team does not have significant experience.

UiPath is an RPA tool that is strong for automation. UiPath is ahead of Power Automate Desktop (PAD) from a desktop automation and recording perspective. Both UiPath and Power Automate allow for attended and unattended runs. PAD is part of Power Automation Premium or Power Automate Process licences. Automation Anywhere and Blue Prism are other prominent players in the RPA space.

Postman Workflows: It's a dark horse, but people love Postman, and this may become an interesting option for Rapid development.

Amazon: AWS has various services that allow for Low-code solutions. "Amazon Honeycode" is model-driven, and Canvas apps can call code running as a service, i.e., Lambda's, which is the same service as Azure Functions on AWS. AWS Honeycode has predefined templates as starting points, which is more like Salesforce's low-code approach. This allows the developer to break out and write complex logic or persist the database in S3 storage. "Amazon QuickSight" works like Power BI to report on solution data.

Salesforce Lightening: Allows for the building of custom apps and the utilisation of Salesforce CRM and its data. 

Retool: Good set of connectors for APIs.

Appian: This drag-and-drop UI is for rapid development. It has RPA built in. I hear it's not super easy for non-tech staff, and customisation can be difficult. It is aimed at enterprises, so cost and performance need to be watched. There is no native database; probably only if a business is already into Appian would I stick with it.

Further out competitors:

Windsuft.io

Mendix Series

1.  Overview of Mendix (this post)

2. Mendix - Part 2 - Diving deeper

3. Extensibility for Mendix Studio 

4. Building a Mendix Widget for the Mendix marketplace (Convert text to Audio using Azure AI)

5. Mendix Tips & Thoughts