EpicorFree templatePDF, Excel, Word exportEpicor Kinetic

Epicor Function Library Design Template

A function that nobody documented turns into a black box within a year. This template gives each Epicor function a one page design record so the next developer knows what it does, who calls it, and how to test it.

Fill in

Live preview
Download:

Epicor Function Library Design Template

Function Design: AcmeShipping.CalcPromiseDate

Company: Acme Precision Ltd Author: A. Developer Date: 2026-10-20 Primary caller: Method directive

1. Purpose

Return a promise date for a sales order line based on part lead time, warehouse calendar and customer ship via.

2. Signature

Inputs: partNum (string), orderQty (decimal), shipViaCode (string), requestDate (date)

Outputs: promiseDate (date), message (string)

3. Data access

Read: Part, PartPlant, Calendar. Write: none.

Use the Epicor business object or an Ice.Tables reference through the library context rather than raw connections. Keep reads narrow and avoid loops that call the database once per row.

4. Logic

1. Look up plant lead time. 2. Add transit days from ship via. 3. Skip non working days using the plant calendar. 4. Return the date and a message if the request date cannot be met.

5. Error handling

Rule: Return message only

Document every message text and who sees it (end user, log, or calling code).

6. Security and delivery

ItemDecision
Library securityWhich security groups may run the function
Allow custom codeIs the function written in widgets or in code
Environment promotionExport and import between Test and Live
Version noteDescribe the change in the library description

7. Test cases

CaseInputsExpected resultActualPass
Normal
Boundary
Missing data
Weekend or holiday

8. Approvals

Developer / Date
Functional lead / Date
Technical reviewer / Date

Epicor Kinetic functions live in function libraries and can be called from directives, customizations and REST. Names such as method directives and widgets differ slightly by release, so adapt the headings to your version.

Need your customizations documented from source?

Optional: ask how an on-prem assistant can summarize functions and directives for review.

Optional. The tool and every export work without this. No spam.

How to use the template

Fill in one document per function, not per library. Start with the business purpose in plain words, then list inputs and outputs with data types. The logic summary should be steps a reviewer can check, not code. Choose the main caller, because a function used in a method directive has different performance and error concerns than one called from a dashboard. Export to Word or PDF and attach it to the change request or store it with the library description.

  • One document per function
  • Purpose written for a business reader
  • Typed inputs and outputs
  • Numbered logic steps

Why design before building

Functions are shared. A BPM, a report and a customization may all call the same one, so a change to its signature breaks callers silently. Writing the signature and the error rule first forces the conversation about who depends on it. Keeping reads narrow also matters: a function called inside a method directive runs during a user transaction, and an extra query per line adds up across large orders.

Reading the sections

The data access section lists tables read and written. If a function writes, call that out clearly, since write functions in directives can cause loops or unintended updates. The error handling rule says whether the function throws, returns a message or logs. Test cases should include a boundary case and a missing data case, as those are where date and quantity logic usually fails.

Common mistakes

Teams often skip documenting output parameters, reuse a generic name like Calc1, or put business constants inside code instead of a UD table or configuration. Another frequent problem is promoting a function to Live without recording what changed. Treat the library description and this document as the version history.

  • Avoid vague names such as Calc1 or DoStuff
  • Keep constants in configuration, not inside code
  • Record the change in the library description
  • Test as a normal user, not only as manager

Frequently Asked Questions

What is an Epicor function library?

In Epicor Kinetic a function library is a container of reusable functions created in the Function Maintenance area. Functions can be built with widgets or code, then called from method directives, data directives, customizations and REST.

Should a function write to the database?

It can, but be cautious. Prefer read only functions and let the calling business object or directive do the update. When a function must write, document it and guard against loops where the write triggers the same directive again.

How do I promote a function between environments?

Functions are normally exported from the Test environment as a package and imported into Live, subject to your change control. Record the export date and the version note in the library description so the history is traceable.

How many test cases are enough?

At least one normal case, one boundary case and one missing or invalid data case per function. Add a case for each branch of conditional logic, because untested branches are where problems reach production.

If you want help reviewing a function library or building a private assistant that explains your customizations from the source, Netray can discuss a read-only approach on your own infrastructure.