
Engineered Code is a software engineering firm specializing in Microsoft #PowerPages / #PowerAppsPortals , #PowerPlatform , #Dynamics365CE and #WebApplications.
Regina, Saskatchewan
Joined June 2014
- Tweets2.9K
- Following173
- Followers395
- Likes101
Lots of changes happening with Power Pages lately, especially around SPAs!
But what does that mean for everything that came before? 👀
Does traditional Power Pages development still have a place alongside SPAs?
#PowerPages #PowerPlatform
Power Pages Tip #394 - Passing Parameters to Web Templates - Engineered Code
Link: youtu.be/yOLVjR0m_Kk
Did you know you can pass parameters to a Web Template using the Liquid include tag? In this tip, I show how to create reusable Web Templates that display different content depending on the parameters you provide.
#PowerPages #PowerApps #MSDyn365Portals #MSDyn365
🔧 Having trouble with Power Pages? You're not alone!
Our next Portals Community Call is tomorrow, and this month we're talking about troubleshooting Power Pages.
We'll look at common issues, approaches to figuring out what's going wrong, and some of the tools and techniques that can help when things aren't behaving as expected.
📅 Tuesday, October 20
🕒 3 PM Eastern / 12 PM Pacific
And a reminder that we're meeting on Tuesday this month, instead of our usual Thursday!
Hope you can join us!
engineeredcode.com/portals-c…
#PowerPages #PowerPlatform #Dataverse #PortalsCommunityCall
🚨 Common Mistakes Monday: "I'll Just Filter Them in Liquid"
You need to display a list of Dataverse records on your Power Pages site.
Your FetchXML retrieves 500 records, but you only need 10.
Easy! Just add an `if` condition inside your Liquid `for` loop.
😬
It works, but you're retrieving 500 records just to display 10.
And there's another problem...
FetchXML queries in Power Pages have a maximum of 5,000 records per page. If you're filtering in Liquid, you might miss matching records that weren't even retrieved!
✅ Filter records in FetchXML, not Liquid, whenever possible.
✅ Only retrieve the columns and records you actually need.
✅ Remember that Liquid filtering happens after the data has already been retrieved.
Just because your Liquid displays the correct records doesn't mean you're retrieving them efficiently—or that you're getting all of them.
#CommonMistakesMonday #PowerPages #PowerPlatform #Liquid #FetchXML #Dataverse #Performance
🚀 Another interesting development for Power Pages SPAs!
Microsoft has added SPA template support to the Power Pages plugin for GitHub Copilot CLI and Claude Code.
Instead of generating an entire site from scratch, you can now use the /create-site skill to start with a ready-made React template.
Two templates are available to start:
- 311 Citizen Services Portal
- Supplier Invoice Portal
And these aren't just front-end templates. They include the site code, Dataverse solution, and sample data. The plugin can even handle provisioning the site for you!
Microsoft says this can reduce the time to create a working site from over an hour to just minutes, while also reducing AI credit consumption.
I'm interested to see how this approach evolves, especially as more templates become available.
Have you tried building a Power Pages SPA using AI coding tools yet?
microsoft.com/en-us/power-pl…
#PowerPages #PowerPlatform #Dataverse #React #GitHubCopilot #AI
With the Power Pages Web API wildcard deprecation, figuring out exactly which columns your existing code is using could be a bit of a pain.
The community has been working on tools to help.
Big Scene has released a free, open-source Power Pages Web API Auditor that scans your site code, compares the fields you're exposing with the fields you're actually using, and can help replace * with an explicit list.
Worth checking out if you've got existing Power Pages sites to update.
github.com/BigSceneUK/Dynami…
#PowerPages #PowerPlatform
#ThrowbackThursday 🔙
This blog post from Nick Doelman is almost exactly 10 years old!
Back in October 2016, Nick wrote a walkthrough on setting up Adxstudio Portals v7.
Download the installer. Install the package. Import the AdxstudioInstaller solution into CRM. Pick a starter website. Install the solutions and portal metadata. Add your license key. Then finally get the portal application running.
Power Pages provisioning looks a little different 10 years later. 😄
For a great trip down memory lane — complete with screenshots — check out Nick's original post:
readyxrm.blog/2016/10/09/set…
Who remembers setting up portals this way?
#ThrowbackThursday #PowerPages #Adxstudio #DynamicsCRM #PowerPlatform
⚠️ Different day this month!
The next Power Pages Community Call is happening Tuesday, October 20 at 3 PM Eastern — instead of our usual Thursday.
This month we're talking troubleshooting: How I Figure Out What's Broken in Power Pages.
We'll work through real examples of things not working and look at how to narrow down the problem — whether it's JavaScript, the Web API, Liquid/FetchXML, table permissions, caching, or something else.
The goal: stop guessing and figure out which layer is actually failing.
Tuesday, October 20
3 PM Eastern
engineeredcode.com/portals-c…
User: “Something isn't working on the Power Pages site.”
Me: “Interesting. Let me take a look.”
Also me, before actually investigating anything:
*clears the Power Pages cache* 😄
Because there's no point debugging a problem until you've confirmed it's still a problem after clearing the cache.
The unofficial first step of Power Pages troubleshooting.
#PowerPages #PowerPlatform #DeveloperHumor
#PowerPages
Tip 393 - Escaping Values in FetchXML #PowerAppsPortals #PowerApps #MSDyn365Portals #MSDyn365
Link: youtu.be/K4nAQZqOslg
Happy Thanksgiving!
Just a reminder that the Engineered Code office is closed today as our team celebrates the Canadian Thanksgiving holiday.
We hope everyone enjoying the long weekend has a chance to relax, spend time with family and friends, and eat a little too much. 🦃
We'll be back tomorrow!
Happy Thanksgiving!
#Thanksgiving #CanadianThanksgiving #EngineeredCode #YQR
🚨 Common Mistakes Monday: "But How Would They Know the GUID?"
You build a Power Pages page that takes a record ID from the query string:
`?id=`
Then you use that ID to load the record.
The GUID is unique, so nobody is going to guess another one... right?
😬
GUIDs are unique, but that doesn't mean they're random. Depending on how they're generated, GUIDs can have sequential characteristics.
And if you're relying on the GUID itself to protect the record, you'll often end up giving users Global Table Permissions just so the page can retrieve it.
Now anyone with that permission who obtains another record's GUID can potentially access it.
✅ Treat query string values as untrusted input.
✅ Use Contact, Account, Parent, or other appropriate Table Permissions to enforce record-level access.
✅ Don't use a hard-to-guess URL as your security model.
A GUID identifies the record.
Table Permissions determine whether the user should be able to access it.
#CommonMistakesMonday #PowerPages #PowerPlatform #Dataverse #Security #TablePermissions #WebDevelopment
🦃 Turkey > Teams.
Just a heads-up that the Engineered Code office will be closed on Monday for Canadian Thanksgiving.
We'll be trading Power Pages for turkey, stuffing, and hopefully a little time to relax.
We'll be back on Tuesday, likely with leftovers.
Have a great Thanksgiving long weekend!
#Thanksgiving #CanadianThanksgiving #EngineeredCode #YQR
🎙️ A new episode of Refresh the Cache is out!
Better late than never, George Doubinski and I take a look back at what Microsoft included in the Power Pages section of the last-ever Power Platform release wave.
There was actually quite a bit to talk about:
- Server-side logic and client APIs reaching GA
- Unified Power Pages and Dataverse authorization
- AI coding tools that understand Power Pages
- Bootstrap 5 support for Dynamics 365 portal templates
- New CLI, analytics, authentication, and security capabilities
We also talk about the move away from twice-yearly release waves to continuous updates on the AI at Work roadmap — and whether steady delivery might actually be more useful than waiting for a couple of big announcements each year.
And, naturally, we somehow find time for impossible CAPTCHAs, YubiKeys, and the difference between SPAs and PWAs. 😄
crm.audio/the-very-last-rele…
#RefreshTheCache #PowerPages #PowerPlatform #Dataverse #Microsoft
🤔 Do you still use jQuery on Power Pages projects?
For a long time, jQuery was almost a given when writing custom JavaScript for Power Pages.
But modern JavaScript can handle most of what we used to rely on jQuery for, and new Power Pages capabilities are increasingly built around modern JavaScript APIs.
So I'm curious what people are doing today.
Do you still reach for jQuery because it's already there and gets the job done? Or do you actively avoid it and write everything in vanilla JavaScript?
#PowerPages #PowerPlatform #JavaScript #jQuery #WebDevelopment
Another nice Power Pages governance improvement!
Microsoft has introduced self-service site ownership transfers, making it easier to change the owner of a Power Pages site when people change roles, leave the organization, or responsibility for a site moves to another team.
Eligible site owners and service administrators can transfer ownership to another eligible user in the same tenant, with the change tracked and relevant stakeholders notified.
It's a small administrative improvement, but an important one for sites that may be around for many years.
microsoft.com/en-us/power-pl…
#PowerPages #PowerPlatform #Governance #Microsoft
📝 In case you missed it, one of my Power Pages blog post last month looked at another approach to bulk editing: using a Power Pages Form.
Instead of building the entire editing interface with custom code, this approach reuses a Form and combines it with the Power Pages Web API to update multiple selected records.
If bulk editing is something you've needed in Power Pages, take a look:
engineeredcode.com/blog/powe…
#PowerPages #PowerPlatform #Dataverse #WebAPI #JavaScript
A Power Pages developer and a Dataverse developer walk into a debugging session... 🤝
Power Pages developer: “It must be something in Dataverse.”
Dataverse developer: “It must be something in Power Pages.”
Meanwhile, the bug is just sitting there waiting for someone to claim it. 😄
Which side gets blamed more often?
#PowerPages #Dataverse #PowerPlatform #DeveloperHumor
Power Pages Tip #392 - strip_html vs escape - Engineered Code
Link: youtu.be/MtNI5-0ShJ8
The escape and strip_html Liquid filters both prevent HTML from being rendered, but they produce very different results. In this tip, I show the difference and when you might use each one.
#PowerPages #PowerApps #MSDyn365Portals #MSDyn365
🚀 Modern Lists in Power Pages are now generally available!
Modern Lists bring a refreshed Fluent UI experience, infinite scrolling, inline filtering, low-code customization, and custom JavaScript support through the Power Pages Client API.
The addition of custom JavaScript support is particularly interesting to me, especially after my recent series of blog posts looking at adding multiselect and bulk editing functionality to Power Pages Lists.
So, with Modern Lists now GA, I guess there's only one thing to do...
Time to see if I can rebuild that functionality using Modern Lists. 😄
Watch for a new blog post in the series soon!
microsoft.com/en-us/power-pl…
#PowerPages #PowerPlatform #Dataverse #JavaScript #Microsoft


