web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Apps / Low-Code Automated Plu...
Power Apps
Suggested Answer

Low-Code Automated Plugins (Power FX) – Looking for Validation & Insights

(1) ShareShare
ReportReport
Posted on by 31

Hi everyone,

 

I’ve been spending a significant amount of time working with low-code automated plugins (Power FX plugins) in Dataverse, and I wanted to start a broader discussion around rules, limitations, and practical usage patterns—as well as get feedback from others who have worked with them at scale.

I’ll be candid: I find them simultaneously powerful and frustrating.

On one hand, the ability to execute server-side, transactional logic without writing C# is a huge step forward. Being able to validate, block saves, and perform multi-record updates within a transaction has been a game changer for some of my solutions.

 

On the other hand, I’ve struggled with:


  • Sparse or fragmented documentation

  • Subtle execution-stage differences that are easy to misinterpret

  • Silent failures or unexpected behavior when patterns are slightly off

 

Because of that, I started documenting my own findings as I worked through real scenarios (Create, Update, Delete; PreOp vs PostOp; rollups, validations, and change detection). I’m sharing these below not as authoritative guidance, but as working observations that I’m hoping the community can either validate, correct, or expand upon.

What I’m Hoping to Learn from the Community


  • Are these rules consistent with what others have observed in production?

  • Are there recommended patterns Microsoft hasn’t fully documented yet?

  • Are there “hard rules” vs. “works today but not guaranteed” behaviors?

  • How are others structuring larger solutions when plugin logic grows beyond a single operation?

 

My Current Understanding & Findings

 

1. Execution Limits & Environment Rules


  • Plugins are server-side only (no client APIs)

  • There is a ~10,000 character limit

  • No global variables — With() blocks are the only option

  • Cannot assign to multiple Events/Stages (One Event + Stage per Plugin)

  • Cannot set operation order - Plugins triggered on same Event + Stage (At least in Accelerator App)

  • Dataverse Accelerator App Extremely Buggy

  • Logic must be deterministic and transactional

 
 

2. Record Existence by Event & Stage

 
Event / Stage Record Exists? Typical Use
Create – PreOp ❌ No Validation, defaults
Create – PostOp ✅ Yes Rollups, related updates
Update – PreOp ✅ Yes Validation, field updates
Update – PostOp ✅ Yes Related updates only
Delete – PreOp ✅ Yes Validation, cleanup
Delete – PostOp ❌ No (Not Found One Yet)
 
 

3. Common Mistakes I’ve Personally Hit

Some of these took longer than I’d like to admit to diagnose:

  • Using ThisRecord outside of within a ForAll()

  • Self-referencing variables inside With()

  • Comparing lookup objects instead of their primary keys

  • Registering multiple plugins on the same event/stage (execution order is unpredictable)

  • Attempting change detection (OldRecord.Field <> NewRecord.Field) in PostOp

  • Using Set() for lookup fields (requires Patch() instead)

 
 

4. Patterns That Have Worked Reliably

 

Validation (PreOp):


  • Use Error() to block saves

  • Keep logic simple and explicit

 

Change Detection (Update PreOp):


  • Compare OldRecord vs NewRecord

  • Navigate lookup comparisons via primary keys

 

Rollups (PostOp):


  • Always calculate using persisted data

  • Only update related records, never the triggering one


  •  

Delete Adjustments (PreOp):


  • Perform cleanup or rollbacks while the record still exists


 

5. Function Usage Rules (Observed)

 
Function Best Use
Set() Triggering record only, PreOp
Patch() Any record, required for lookups
With() Block-scoped variables (no self-reference)
Collect() Works, returns a record (not a table)
Error() Validation & transaction stop
 
 

6. Open Questions


  • Are there unsupported but currently working patterns we should avoid?

  • Is there any roadmap for improved debugging or authoring experience?

  • How are others handling complex orchestration without reverting to C# plugins?

  • Are others converting Power Automate Flows to these automated plugins?


  •  

I’m very open to correction here—if something I’ve listed is inaccurate or context-dependent, I’d genuinely appreciate the clarification. My goal is to better understand how to use these plugins confidently and predictably, not to criticize the feature.

 

Thanks in advance to anyone willing to share their experience.

I have the same question (0)
  • Suggested answer
    BCBuizer Profile Picture
    22,638 Super User 2026 Season 1 on at
    Dear @Treichs,
     
    As you are hopefully aware, low code plug-ins are a preview feature which would explain why you are running into so many issues: it is an unfinished feature. As a result, these should not be used for production.
     
    Furthermore, in the availalbe documentation it is clearly stated this feature will not be delivered, so I strongly advise you to look into alternative to reduce any dependencies you may have on low code plug-ins: Streamline app development with low-code plug-ins in Microsoft Dataverse - Power Apps | Microsoft Learn.
     
    Personally I'm disappointed to se such a feature being introduced, getting hopes up, and then saying the feature will be replaced with something that doesn't nearly provide the same functionality and leave that in preview for almost a year (by now) as well.
     
    Sorry to be the bearer of bad news, but I feel this is a dead end to pursue.
     
     
    If this reply helped you in any way, please give it a Like 💜 and in case it resolved your issue, please mark it as the Verified Answer ✅.
  • Treichs Profile Picture
    31 on at
     
    Appreciate the response!

    Absolutely understood regarding it still being in preview, however, I feel like so many widely used features are in perpetual "preview". 

    With regards to the documentation, the referenced statement re: delivery I have always associated with "Instant" plugins, which indeed have been mostly replaced with Functions, which I ultimately find to be the same functionality under a different name. I assume this was to de-couple the notion that the "Instant" plugins were indeed plugins at all since they are not bound to database events. 

    The "Automated" Plugins, from what I can gather, will hopefully have a bright future as I have found them (bugs aside) to be extremely helpful/promising. 

    Alas, I could be wrong here in my assumptions regarding the longevity of Automated Plugins, but for my sanities sake, I hope I am not!
     

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Introducing the 2026 Season 1 community Super Users

Congratulations to our 2026 Super Users!

Kudos to our 2025 Community Spotlight Honorees

Congratulations to our 2025 community superstars!

Congratulations to the March Top 10 Community Leaders!

These are the community rock stars!

Leaderboard > Power Apps

#1
11manish Profile Picture

11manish 530

#2
WarrenBelz Profile Picture

WarrenBelz 459 Most Valuable Professional

#3
Haque Profile Picture

Haque 314

Last 30 days Overall leaderboard