People, People, People

While no expert, I’ll take a shot at what I have experienced:

To access E10, you need a User login. This is the primary point for authentication. The User record controls authorization through Security Groups or toggles on this record. A User entry is required for Requisition Entry.

User Name must be unique in addition to the UserID.

Tables: Erp.UserFile and Ice.UserFile. The Ice version is where the real action is (encrypted password, etc.) and the Erp version is a copy of used for non-security information.

This represents a person who can report time and/or expenses. It doesn’t require a matching User entry when using MES but it is mandatory when using the Time/Expense Apps. It may also be associated with a Supplier entry in order to pay expenses back to the employee.

Employee Records hold labor rates and there can be multiple rates based on role for Projects. There is also Department/Shiift/Resource and G/L Controls to help with labor/burden reporting.

Employee name and ID must both be unique.
Tables: EmpBasic

Work Force
A Work Force record is used for workflow within E10. It appears that Epicor initially developed workflow within the Sales cycle as the Workflow record is actually stored in the Erp.SalesRep table. As Workflow moved to other areas (ECO, Case, Time and Expense approval, …) the Workflow entry included non-sales people. Each Work Force entry has a role and task approval can be restricted to members of a particular role. In order to act as a Work Force entry, the logged-in user must be an Authorized User of that Work Force record.

In the role of Sales Person, the Sales Territory uses Work Force entries to provide limited visibility to customers and their activity if required.

Work Force ID and Name must be unique.
Tables: SalesRep

This represents someone who is authorized to create purchase orders or approve purchase orders. Like Work Force, it requires Authorized User(s) for someone to act in the role of that buyer record.

Buyer Name and ID must be unique.
Tables; Erp.PurAgent, Erp.PurAuth

This record is used by Global Alert and Shop Warnings to associate with them with particular Alert Groups. These do not have to be Epicor Users.
Tables: Erp.Person

This record represents a person - anywhere. Think of it as a CRM person entry - as Epicor does. However, not only does it link to Customers and Ship-Tos but also to Suppliers, Users, Work Force, Buyers, Employees and Payroll. This contains GDPR sensitive data.

(This is a normalized table within Epicor!)

Tables: Erp.Percon, Erp.PerConLnk

I’m sure I’ve missed some things but this gets the conversation started…

Mark W.


Well done @Mark_Wonsil!

And I’ll add that the Person Contact record can be used repeatedly for various reasons or linked to more than one of the other entities mentioned. This function allows for ‘employees’ to become customers (and vice versa), or ‘agents’ to be associated with more than one customer, etc., etc…

And in turn, this data model makes writing queries sort of a nightmare at first until you get your head around you data set and how your folks have added all of these entities.


Great explanation @Mark_Wonsil!

I’d 2nd what you said about writing queries a nightmare at first @MikeGross. We went live on E10 last month so we’re very familiar with the nightmare that is Person/Contacts. It makes sense once you understand how it all works. But is very confusing to new Epicor users.


A couple of thoughts on contacts.

  1. Make a contact specific to the relationship you have with the contact. Example: customer contacts. if a contact leaves one of your customer and starts working for another of your customer. Make a new contact, don’t update the existing contact with the new information. Why? records gets a bit messy and you lose the history you had in case entry with the first customer when you transfer the contact.

  2. Don’t delete a contact - even if ERP allows you to delete a contact don’t do it. In case entry - you won’t know who called in after you delete the contact.

  3. Understand how the sync fields in contacts affects your record in person/contact


Awesome post, Mark. I learned several things from it.

Since I was just looking at this, I’ll add that Buyers are the table Erp.PurAgent and their users are Erp.PurAuth.

Of course they are also cross-referenced in part class, part plant, PO header, etc.


Good catch. I’ve updated the main post. Also, I added where ID and Name must both be unique within the tables.


Mark W.

Can’t find my complete notes from our operational consultant but in his Ukranian Engineer’s way he said

A user is a social security number meaning a unique individual

A person is a function falling into one of these:
Customer contact
Ship to contact
Supplier contact
Supplier PP contact
Employee (Labor and/or Payroll participant)
Work force (sales team member)

A ‘Person’ may be linked to none, one or more than one user to fulfill their function.