So, I doubt many people here are in this situation, I would like to hear experience’s others have had related to my situation.
Background:
35 years development experience
very experienced with C# and VB .Net
backend experience with PeopleSoft and SAP (data migration, REST services)
new hire, no experience with Epicor (we are on v10)
I expect I’ll be doing customizations…form layouts, user defined fields, BAQ…but also scripting (C#) and maybe REST services.
I’ve been handed a huge C# customization and am pounding my way thru it,
I’ve managed to get Visual Studio debugging working and have a basic concept of a few things,
It’s very hard to read, much less create the C# custom code without having some kind of SDK or similar documentation. I’ve heard the official SDK is quite expensive and it’s more intended for Epicor company employees. I guess they want most customizations done without writing code. I get the concept, but its not always possible.
What have others done for this kind of problem ?
Any suggestions for reasonably priced training (not on business process so much but instead architecture, business object access, services, etc.)
In MT you are basically sharing a Server with other Epicor Customers. So you can’t go crazy on your Customizations and in many occasions must submit certain Advanced Code for Approval to the SaaS MT Team.
Unlike Dedicated Tenant, or for me I am On-Prem - we have the entire Server with all files on-prem and I can clone it, and I can place debuggers, sniff traffic with Fiddler to reverse-knowledge learn stuff.
See the Multi-Tenant Section:
Single Tenant
If my family rents an entire house, we are the single tenant that uses the entire house. In the case of Epicor, being single tenant means only my company uses the VMs. Epicor’s single tenant users have been hosted at providers like RackSpace or CyrusOne. In the Epicor model, the customer is responsible for upgrading the software they purchased and they are the only customer in the SQL Server instance.
Multi-Tenant
Like an apartment building, multiple tenants occupy the same application. Epicor’s first example of this was called Epicor Express. It was created for smaller companies with little or no IT staff. To simplify management, Epicor put multiple companies into the same DATABASE, not instance. Eventually, this morphed into the Multi-tenant product. The problem with MT was having multiple companies in a single database created a bit of a coding mess . This is why MT users cannot use Custom Code. DbContext does not respect company or plant security! Epicor has not sold the MT product for many years now.
Dedicated Tenant
To address the weakness of MT, Epicor created the concept of Dedicated Tenancy. We are still sharing a VM and a SQL Server instance but each company gets its own dedicated database. So now, all the issues that plagued MT have gone away. Unfortunately, as long as Epicor maintains MT users, it has to carry the stigma of the issues that come with it. IMHO, MT has damaged Epicor’s ability to sell the cloud to many companies and continues to be an anchor dragging them down.
Epicor moved both the Mutli-tenant and Dedicated tenant users away from providers like CyrusOne and RackSpace to Azure’s public cloud. This is why the Dedicated Tenancy product is now called Epicor Public Cloud.
Even Epicor thinks MT should die, hence why they made other options. Think of MT as basically “I dont want to customize, I just need a basic system” type of structure. It has limitations, alot of them. You dont have the Custom Code features etc…
Yeah find that out first and what your companies move plans are. If they have none, then I hate to say this to you – they hired an Engineer without any CAD software period keep us informed. Once you figure that out, we can help you Learn Epicor… You give me a call on a weekend and I’ll give you a 2hr crash course.
@datadaddy, I think you might be able to contribute to our community now! If you have experience in C# and REST, maybe you could provide a primer or documentation on how to best write C# to call REST services? I have a project that I would love avoiding calls directly to the Epicor business object classes to write/update information to the database, however I have ZERO experience in performing REST calls, especially in C#. Perhaps you could help out an old programmer in learning new tricks?
I take hugs at Epicor Insights Conferences. There is really no catch. I myself just jumped into a new Ecosystem for Service-Now and I am the Newbie there, so it has humbled me a bit – I can related how scary it is to be the newbie. I wanted to give back. I can talk faster than I can type.
Welcome aboard the good ship EpiUsers @datadaddy. I agree it is tricky to understand it, initially. At least you are bringing some amount of experience to the table to start with.
If you are doing classic customizations then the tools that will help, and it sounds you are steps ahead with the VS debugging, you can do this with BPMs too.
I’m pretty sure I replied to a post a while ago with a heap of links… Of course I can’t find it now.
A couple of tools that you might find useful are:
This tool will help with getting intellisense working for Form customisations, although you can roll your own project in VS yourself. Please note there are no companion packages for ver 2022, and I’ve been failing miserably on working out how to do this. The project is there on Github…
This tool helps with viewing and searching traces, I have found it very handy.
This one is more useful for on prem, and I have used it from time to time to do investigative stuff
If you are interested about business objects then you can find the documentation on epicweb Sign In You need an Epicweb Username and password. (or Epicor IDP)
Other items you may find useful are the Technical references for each release, as well as the BPM cookbook, probably lesser the converted programming guide, there are also customization guides that may provide you with some mileage, however I do believe most if not all of this is available from the application help, either HTML or print form where available.
So as you see there is a wealth of information out there, just like everything new, you just need to know where to look, and what not to waste your time on.
I can’t thank the contributors of the above projects to the community enough, it has really helped me. Thanks again, you know who you are people…
Finally at some point Epicor will be not shipping Classic forms with the product (2024 release, I am led to believe. I am not 100% up to speed with the roadmap) so I would be advising not to be doing anything new in Classic forms development, particularly if you are on cloud.
Apologies for the big dump. I do hope you find the information useful.
You should probably read the Tools documentation, and do the certification for Tools that Epicor offers on their education portal once you have read through the preparatory docs… It costs like 200$ per attempt, and will teach you the basics of BAQs, BPMs, customizations, functions, etc… After that you should follow the REST services certification…
If you’re interested in an Azure setup, like mine, you can start with 2WTech. We’re a large corporation, Brown Jordan, and have had a really great experience with this company, if you’re looking for a change and need guidance on what works best.
All great advice from everyone so far. Just a few things that guide me after a long time in the Epicor ecosystem:
Maintain UI/Business Logic separation. Putting code in .Net Customizations will have to be pulled out eventually in the browser UI.
Use Services instead of direct Database manipulation. When the Sales Order “Ready to Process” or the Job “Job Closed” fields are set, sales taxes are calculated and postings to job variance are made. Setting the field manually will bypass those actions. Just don’t do it. Even UD tables will miss logging if you are tracking changes and you update the table directly.
For classic screens, all binding is at the EpiDataView. Unlike VB, Access, etc., populating the form field does nothing. The binding in the browser UI is different than the .Net Client.
Programmer’s ego wants to do everything in code. Use the widgets in Directives and Functions as much as possible then fall back to code when needed.
best hint I can give… do NOT put any business logic in User Interface. put all your logic into BPMs or Functions. the UI logic is only run when you are in the UI itself.
For example… it is possible to create a customization in the Sales Order Entry UI to does something like calculate Commissions… BUT that logic would only run when entering an order in that program… the problem? There are multiple other ways to enter an order:
PUSH an order from a QUOTE to an order
Epicor Commerce Connect can create an order
EDI Demand Management can create an order
You could create your own program that would do a REST call that would create an order
within Order Entry, there is a way to PULL a Quote into an order… even though you are in the order entry program, it is possible for your UI logic to miss that an order was created.
So… in the case above, you would want to have a triggered event written in a BPM (Data or Method) that would do the calculations. This BPM could be done with widgets (more reliable on upgrades) or with C# code.