ERP Developer/Admin Career Growth

You’re right Vinay. It is actually better. Gene Kim is excellent.

Updated the original post.

1 Like

Some Recommended Reading

6 Likes

Bought it; reading. Thanks!

1 Like

https://www.amazon.com/gp/product/073565820X/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1

You can grab it used for 4-8$


My Secret is buy SAP Books, get the concepts behind ERP down, they have also alot of great books how to run a real project… a professional implementation. I applied it before I ever heard of this book:
https://www.amazon.com/SAP-Project-Management-Implementation-Guide/dp/1592299490/ref=sxts_sxwds-bia-wc-p13n1_0?cv_ct_cx=sap+project&dchild=1&keywords=sap+project&pd_rd_i=1592299490&pd_rd_r=8278d7a2-a278-40e9-a16c-f522cb22bd51&pd_rd_w=zen14&pd_rd_wg=JmKbd&pf_rd_p=1da5beeb-8f71-435c-b5c5-3279a6171294&pf_rd_r=9SN8804Y41A98BC8M9R9&psc=1&qid=1591881125&sr=1-1-70f7c15d-07d8-466a-b325-4be35d7258cc

it does wonders!

great idea, thanks. The principles have to be pretty similar.

Apologies for the necropost, but @Rick_Bird would you say how this list looks with Functions and Kinetic UI added? And would you generally include custom DLLs in the last item?

Hmmm, haven’t thought about that before…
I see Kinetic as about the same as Customization, but since it’s the way we are headed I would first attempt Kinetic first. While I don’t have much experiance with Kinetic yet, my impression and gut feeling is a Kinetic UI may carry less technical debt than a customization.
Functions are tricky because by themselves they don’t do much, unless you just schedule them. Functions must be called by something else, like being scheduled, or from a Method\Data Directive or a Customization\Kinetic or Custom Code. But why bother with a Function unless you are going to call it and use it from these other sources? Creating a function to be used just once adds complexity since then you have to maintain both the function and the thing calling the function. But if you have a Solution that needs to run the same code from different places and you want to make sure the calculation or code is the same each time, then a function is ideal since any future change should only need to be changed in the function instead of trying to find every other Directive or customization where the calculation was used. For instance, I think having a Function for looking up an email address is a great idea, since it typically is done over and over again and the sources for the email address are in a finite number of places, then you could call the function like this: GetEmailAddy([Source], [ID])
I look to use functions for repeating code or flow in BPMs or for scheduling tasks. Also since Functions do not have an inheirt context and you have to define that, I would place it after Directives:

  1. Method Directives
  2. Data Directives
  3. Functions
  4. Kinetic UI
  5. Customization
  6. Custom Code/Third Party Solution

My general thinking here is to use a tool that is more specific to least specific AND least custom code to most custom code. Ideally this means that things towards the top of the list have a higher chance of being upgraded without issues and reduce your overall technical debt.
(but no matter what document every thing, preferably as close to the thing being documented as possible)

2 Likes

I would say that for a lot of cases you want to use a Function where you can (for re-usability and the fact that they have inherit and independent security above and beyond the standard Epicor BO capabilities).

You can use a function from a Method Directive or even a Data Directive (if you chose to)

So I’m trying (as much as possible) to always approach a solution from a function or two, and then call those functions from the respective other places. It makes it easy to compartmentalize code and it also makes code re-use a breeze.

Functions are complementary to the others, not an If / Else but more of an AndAlso. (IMO)

Something like
Method Directive calling a Function
Data Directive calling a Function
Kinetic UI calling a Function when needed to do things outside the widget capabilities and move the complex logic server side (where it belongs)
Customization calling a Function when needed to do things outside the widget capabilities and move the complex logic server side (where it belongs)
etc.

7 Likes