# Are Epicor Widgets Broken? 🤐

**URL:** <https://www.epiusers.help/t/are-epicor-widgets-broken/85785>\
**Category:** Kinetic ERP\
**Tags:** customization\
**Created:** [December 22, 2021, 2:23pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785 "2021-12-22T14:23:44Z")\
**Posts on this page:** 20\
**Page:** 4

<div class="post-metadata">

**Author:** ![TomAlexander](https://www.epiusers.help/user_avatar/www.epiusers.help/tomalexander/32/98890_2.png) [@TomAlexander](https://www.epiusers.help/u/TomAlexander)\
**Post date:** [December 23, 2021, 4:53pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/61 "2021-12-23T16:53:43Z")

</div>

One more thought. While we are sitting here debating whether code or widgets are theoretically / inherently better, at the end of the day it comes down to execution. A well crafted chain of widgets is better than garbage code. And well written clean code is better than a nightmarish impossible to follow chain of dozens of widgets doing things like joining Db tables to in-memory tables…

---

<div class="post-metadata">

**Author:** ![SAD](https://www.epiusers.help/user_avatar/www.epiusers.help/sad/32/22683_2.png) [@SAD](https://www.epiusers.help/u/SAD)\
**Post date:** [December 23, 2021, 4:57pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/62 "2021-12-23T16:57:24Z")

</div>

> [@hkeric.wci](#):
>
> One last note on UpdateExt. I do know it does Multiple. But we have stumbled plenty of time with it causing a Row has been modified by another user…

Agree. Moreover in some cases UpdateExt in magnitude slower than a few Update calls :(.

> [@hkeric.wci](#):
>
> especially when we did alot of Service Connect.

Wow. You are one of the quite small team of SC users! Funny, it is another product where I participated in the original design 🙂

> [@hkeric.wci](#):
>
> As a full time Epicor developer; sometimes I feel like only Kinetic gets loved and everything else became second class citizen

Sorry, it is a bar’s talk thing…

---

<div class="post-metadata">

**Author:** ![SAD](https://www.epiusers.help/user_avatar/www.epiusers.help/sad/32/22683_2.png) [@SAD](https://www.epiusers.help/u/SAD)\
**Post date:** [December 23, 2021, 4:58pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/63 "2021-12-23T16:58:35Z")

</div>

> [@KevinK](#):
>
> I’ve actually never had custom code break after an upgrade.

You are lucky. As you can see even in this thread others had such issues.

---

<div class="post-metadata">

**Author:** ![hkeric.wci](https://www.epiusers.help/user_avatar/www.epiusers.help/hkeric.wci/32/52019_2.png) [@hkeric.wci](https://www.epiusers.help/u/hkeric.wci)\
**Post date:** [December 23, 2021, 5:08pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/64 "2021-12-23T17:08:44Z")

</div>

> [@SAD](#):
>
> You are one of the quite small team of SC users! Funny, it is another product where I participated in the original design

Wow!  
Honestly I like SC. Not even sure why the push for the very expensive Jitterbit. I dig SC its not bad. We’ve done over 30 complex workflows.

> [@Innovation](https://www.epiusers.help/t/innovation/69267/44):
>
> Last Year: Centralized Engineering in Epicor with Parts, Revisions, ECOGroups being managed at Global Company. Then Local Companies who have the Part Linked get Synced and there are options to manually Pull Revisions down (Sync Down). It was a long year long effort to hash out bugs and honor PartPlant settings among other things. If a ECO Group had Parents or Children (Materials, Phantoms, Sub Assemblies etc) it would also bring them down, with the Revisions, Link them among other things… Mul…

---

<div class="post-metadata">

**Author:** ![hkeric.wci](https://www.epiusers.help/user_avatar/www.epiusers.help/hkeric.wci/32/52019_2.png) [@hkeric.wci](https://www.epiusers.help/u/hkeric.wci)\
**Post date:** [December 23, 2021, 5:09pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/65 "2021-12-23T17:09:51Z")

</div>

> [@TomAlexander](#):
>
> One more thought. While we are sitting here debating whether code or widgets are theoretically

I have the next 2 days off for Holiday. I dont have a life, I can debate all day long. Plus im too broke to do anything outside of my front yard 😃

---

<div class="post-metadata">

**Author:** ![SAD](https://www.epiusers.help/user_avatar/www.epiusers.help/sad/32/22683_2.png) [@SAD](https://www.epiusers.help/u/SAD)\
**Post date:** [December 23, 2021, 5:13pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/66 "2021-12-23T17:13:26Z")

</div>

> [@hkeric.wci](#):
>
> Not even sure why the push for the very expensive Jitterbit.

Yet another theme for bar’s talk :(.  
The main reason - SC technically and technology obsoleted already.

---

<div class="post-metadata">

**Author:** ![hkeric.wci](https://www.epiusers.help/user_avatar/www.epiusers.help/hkeric.wci/32/52019_2.png) [@hkeric.wci](https://www.epiusers.help/u/hkeric.wci)\
**Post date:** [December 23, 2021, 5:22pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/67 "2021-12-23T17:22:47Z")

</div>

> [@JasonMcD](#):
>
> Right, and that’s not a trivial distinction. I mean, a tech ref guide to BPM custom coding would be great

This is the main way I learn.

> [@Are your BPM Sources Missing? exploding\_head](https://www.epiusers.help/t/are-your-bpm-sources-missing/85807):
>
> If you are like me, you benefit from the Server\BPM\Sources folder. You can use it to learn how Epicor generates code when using Widgets You can keep track of revisions to your BPM (until an upgrade) You can keep track when someone changed a BPM (until an upgrade) You can easily grep them and find all BPMs you are using certain column You would be able to find generated sources and a wealth of code samples here for: Method Directives BPM Data Directives Updatable B…

Followed by using dotPeek, dnSpy, Reflector or owning the SDK for a wealth of code examples.

**Not sure how folks on SaaS do it**

---

<div class="post-metadata">

**Author:** ![SAD](https://www.epiusers.help/user_avatar/www.epiusers.help/sad/32/22683_2.png) [@SAD](https://www.epiusers.help/u/SAD)\
**Post date:** [December 23, 2021, 5:37pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/68 "2021-12-23T17:37:54Z")

</div>

> [@Are your BPM Sources Missing? exploding\_head](https://www.epiusers.help/t/are-your-bpm-sources-missing/85807/1):
>
> If you are like me, you benefit from the Server\BPM\Sources folder. You can use it to learn how Epicor generates code when using Widgets You can keep track of revisions to your BPM (until an upgrade)

Need to comment aboves. Starting with 2021.2, BPM stops dumping generated sources by default.  
You can either enable it on per-method (MD)/per-table (DD) base. Or enable old behavior with customizationSettings section of web.config. Documentation describes both ways.

Also, if BPM compilation fails, then BPM dumps sources independently from other settings.

---

<div class="post-metadata">

**Author:** ![hkeric.wci](https://www.epiusers.help/user_avatar/www.epiusers.help/hkeric.wci/32/52019_2.png) [@hkeric.wci](https://www.epiusers.help/u/hkeric.wci)\
**Post date:** [December 23, 2021, 6:29pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/69 "2021-12-23T18:29:17Z")

</div>

Yep I saw that you can enable them individually or

 ![image](https://www.epiusers.help/uploads/default/original/3X/2/9/299cf4370845d666918e5cbc79c2c7fc03d3de4e.png)

---

<div class="post-metadata">

**Author:** ![SteveFossey](https://www.epiusers.help/user_avatar/www.epiusers.help/stevefossey/32/19220_2.png) [@SteveFossey](https://www.epiusers.help/u/SteveFossey)\
**Post date:** [December 23, 2021, 6:42pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/70 "2021-12-23T18:42:56Z")

</div>

> [@SAD](#):
>
> I never saw directives with such code. More precisely, no one sent such directives to me for review.

Given that @SAD is an advanced Epicorean, this is terrifying.

I can confirm there are a lot of places that activating a BO method without this simply doesn’t work.

---

<div class="post-metadata">

**Author:** ![SteveFossey](https://www.epiusers.help/user_avatar/www.epiusers.help/stevefossey/32/19220_2.png) [@SteveFossey](https://www.epiusers.help/u/SteveFossey)\
**Post date:** [December 23, 2021, 6:56pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/71 "2021-12-23T18:56:38Z")

</div>

> [@KevinK](#):
>
> I’ve actually never had custom code break after an upgrade

going from 10.2.100 to 10.2.700, most of my predecessor’s `Db.Validate(); ` calls broke. The fix was to replace with BO calls (obviously preferred) or by explicitly specifying just what was being updated with ```Db.Validate(myVarName);``

Also some `BO.Update(ref blahBlah);` broke until implementing the BeforeImage concept found here.

Another one has been `foreach(from var thing in Db.Table blah blah select thing){ do stuff}` stopped working in some, not all, cases, and I had to first do `var thing = (from th in Db.Table where blah blah select th).ToList()`  
and then foreach the list by itself.

I’m not defending widgets in their current state (actually hate 'em) but I can see that having Epicor test and vouch for them before upgrading is pretty useful, because the above examples are mostly trial-and-error.

---

<div class="post-metadata">

**Author:** ![Doug.C](https://www.epiusers.help/user_avatar/www.epiusers.help/doug.c/32/26714_2.png) [@Doug.C](https://www.epiusers.help/u/Doug.C)\
**Post date:** [December 23, 2021, 9:28pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/72 "2021-12-23T21:28:39Z")

</div>

Whenever I need to iterate, I use a custom code block. Everywhere else I try to use widgets. It’s easier for others to maintain, as not all of IT/power users are C# developers and the flow chart design is easier for them to follow.

The only other exception where I use custom code block is when a condition block destroys data. I have to use custom code blocks in order to do a simple condition test to make sure we don’t lose serial numbers.

I have had custom code blocks break on upgrades, so I keep track of the BPMs that have those so I can easily target those for testing on upgrades.

---

<div class="post-metadata">

**Author:** ![utaylor](https://www.epiusers.help/user_avatar/www.epiusers.help/utaylor/32/64664_2.png) [@utaylor](https://www.epiusers.help/u/utaylor)\
**Post date:** [December 27, 2021, 1:19pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/73 "2021-12-27T13:19:54Z")

</div>

@jdewitt6029 I am sure there are some BPMs from the uplift to Epicor 9 that have a tt table joined to an ERP table.

Me (being new to Epicor) probably just converted it to C#, checked to make sure it was working, and called it a day. Not sure if this is stated in any customization guides or anything. Would be a great addition.

---

<div class="post-metadata">

**Author:** ![jgiese.wci](https://www.epiusers.help/user_avatar/www.epiusers.help/jgiese.wci/32/51553_2.png) [@jgiese.wci](https://www.epiusers.help/u/jgiese.wci)\
**Post date:** [December 27, 2021, 2:15pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/74 "2021-12-27T14:15:38Z")

</div>

> [@KevinK](#):
>
> I’ve actually never had custom code break after an upgrade

Same mostly. I’ve had very minor things break but nothing near as bad as screen customizations. On a major version I might spend 1 hr fixing little BPMs here and there with custom code and another 9 on screens. I also use custom code blocks heavily and avoid widgets in most cases.

---

<div class="post-metadata">

**Author:** ![KevinK](https://www.epiusers.help/letter_avatar_proxy/v4/letter/k/e9a140/32.png) [@KevinK](https://www.epiusers.help/u/KevinK)\
**Post date:** [December 27, 2021, 3:24pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/75 "2021-12-27T15:24:44Z")

</div>

Yeah, I curled up in front of the streaming TV fireplace with Orlicky and Plossl’s MRP books. I decided to start with Orlicky’s first edition and get a chronological overview of the state of the art through the decades. 🤪

---

<div class="post-metadata">

**Author:** ![utaylor](https://www.epiusers.help/user_avatar/www.epiusers.help/utaylor/32/64664_2.png) [@utaylor](https://www.epiusers.help/u/utaylor)\
**Post date:** [December 27, 2021, 3:35pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/76 "2021-12-27T15:35:42Z")

</div>

Man…

---

<div class="post-metadata">

**Author:** ![askulte](https://www.epiusers.help/user_avatar/www.epiusers.help/askulte/32/7325_2.png) [@askulte](https://www.epiusers.help/u/askulte)\
**Post date:** [December 27, 2021, 4:57pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/77 "2021-12-27T16:57:19Z")

</div>

> [@JasonMcD](#):
>
> But BPM coding is not one of those 20-hour things; it is a like a college major or at least a minor.

Amen, Jason! I would LOVE a college-type course on Epicor BPM’s & customization. Something where we build on weekly, have homework & test, a final project, the whole deal. I think that would close the loop for a lot of us non-computer science folks, and give enough time to learn the why, rather than rush through an example or two like Insights Extended Ed.

Having a teaching plan where each week we get a complete understanding of why something is done a certain way before building on it would be huge (at least for me). Rather than rote memorization of ‘do this, and it works’.

Not sure if Epicor or a third-party is willing to do that, but please take my $! I’m sure there are others in the same boat that fell into coding Epicor throughout their career trajectory, and didn’t come from a CompSci background.

Sorry for the ramble…

---

<div class="post-metadata">

**Author:** ![utaylor](https://www.epiusers.help/user_avatar/www.epiusers.help/utaylor/32/64664_2.png) [@utaylor](https://www.epiusers.help/u/utaylor)\
**Post date:** [December 28, 2021, 2:05pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/78 "2021-12-28T14:05:22Z")

</div>

Andris, way to hit the nail on the head. That is exactly what I wish we could learn about and be taught. Someone needs to start it on Coursera!

---

<div class="post-metadata">

**Author:** ![hkeric.wci](https://www.epiusers.help/user_avatar/www.epiusers.help/hkeric.wci/32/52019_2.png) [@hkeric.wci](https://www.epiusers.help/u/hkeric.wci)\
**Post date:** [December 28, 2021, 2:06pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/79 "2021-12-28T14:06:47Z")

</div>

I will teach it if I can get 50 sign ups at 350$ 🙂 I will even buy fancy software, cameras and do a live workshop.

---

<div class="post-metadata">

**Author:** ![JasonMcD](https://www.epiusers.help/user_avatar/www.epiusers.help/jasonmcd/32/22326_2.png) [@JasonMcD](https://www.epiusers.help/u/JasonMcD)\
**Post date:** [December 28, 2021, 2:12pm UTC](https://www.epiusers.help/t/are-epicor-widgets-broken/85785/80 "2021-12-28T14:12:11Z")

</div>

🤩  
🤯  
🥳

[Previous page](https://www.epiusers.help/t/are-epicor-widgets-broken/85785.md?page=3)

[Next page](https://www.epiusers.help/t/are-epicor-widgets-broken/85785.md?page=5)
