1. Functional overview
The coffee functionality adds a quality workflow around physical purchase and sale contracts. It is designed to keep the commercial contract, the sample lifecycle, lab results and cupping decisions connected without forcing non-coffee contracts to use any coffee-specific fields.
The workflow is built around these objects:
| Object | Purpose | Where users usually access it |
|---|---|---|
purchase.line / sale.line |
Stores the expected coffee profile and target quality thresholds. | Purchase or Sale line, tab Coffee Quality. |
coffee.sample |
Tracks a physical or logical sample linked to a contract line. | From the line tab, or menu Coffee / Samples. |
coffee.lab.analysis |
Tracks a laboratory analysis requested for a sample. | From a sample, or menu Coffee / Lab Analyses. |
coffee.cupping.session |
Groups samples into a tasting session and generates blind cups. | Menu Coffee / Cupping Sessions. |
coffee.cupping.result |
Stores one cupper's evaluation for one cup. | Inside a cup generated by a cupping session. |
coffee.cupping.result.line |
Stores one scored criterion within a cupping result. | Inside a result, in the Criteria list. |
2. Activating coffee mode
Coffee features are optional. They are hidden until the trade configuration enables them.
- Open the trade configuration.
- Go to the trade options area.
- Enable
Active coffee compatibility. - Save the configuration.
Once enabled, the following menus are available under Purchase and Sale:
Coffee / Samples Coffee / Lab Analyses Coffee / Cupping Sessions Coffee / Cupping Criteria
3. Coffee Quality tab on purchase and sale lines
The Coffee Quality tab on a trade line stores the expected quality profile for the coffee and the thresholds used to evaluate samples.
| Area | Main fields | How it is used |
|---|---|---|
| Quality summary | Coffee quality, Coffee origin, Coffee type, Coffee process |
Identifies the coffee and displays the aggregated quality state of linked samples. |
| Coffee identity | Variety, Crop year, Screen size |
Completes the commercial and physical description of the product. |
| Quality targets | Moisture max %, Defects max, Cup score min |
Defines the thresholds used by lab analysis and sample quality evaluation. |
| Coffee samples | One2Many list of linked samples | Creates or reviews all samples linked to the trade line. |
The line's Attributes Name can display the coffee attributes
in a compact way, for example origin, type, process, variety, crop,
screen, moisture, defects and cup score.
4. Packing and market data on trade lines
The trade line also contains coffee operational fields in the general tab. These fields are not part of the sample workflow, but they are useful for physical quantity tracking and market hedging.
| Field | Meaning | Operational effect |
|---|---|---|
Packages |
Number of bags, sacks or packages. | Copied to the virtual lot as lot_qt when the line is validated. |
Package unit |
UoM used to describe the package, for example Bag60 or Bag90. | Copied to the virtual lot as lot_unit. |
Packing description |
Free text used for readable contract or logistics descriptions. | Informational only. |
Market reference |
Price curve used as the market reference. | Used by pricing, valuation and auto-hedging rules. |
Market price / Market delta |
Market entry data used for pricing or hedge generation. | May be copied to a generated derivative entry price. |
5. Coffee samples
A coffee sample can be created from the Coffee Quality tab of a purchase or sale line, or from the menu Coffee / Samples. Creating it from a line is preferred because the direction and line link are filled automatically.
Sample identity
| Field | Description |
|---|---|
Reference |
Internal or external sample reference. |
Direction |
Purchase or Sale. It is inferred when the sample is created from a trade line. |
Sample Type |
Offer, Pre-shipment, Shipment, Arrival, Stock, Customer or Retained sample. |
Purchase Line / Sale Line |
The contract line the sample belongs to. |
Lot |
Optional physical or virtual lot reference. |
Product, Party, Origin, Coffee type |
Computed from the linked trade line and used for sample review and cupping. |
Storage and lifecycle
| Field | Description |
|---|---|
Requested Date |
Defaults to today when a sample is created. |
Received Date |
Filled when the sample is received, or manually entered if needed. |
Shelf life (days) |
Defaults to 90 days. |
Expiry Date |
Calculated from requested or received date plus shelf life when not manually set. |
Quantity, Unit, Sample location |
Used to track the physical sample stored in the office, lab or warehouse. |
Sample workflow
Sample buttons are displayed depending on the current state. The typical workflow is:
Requested Received Sent to lab Under review Approved / Rejected Expired Archived
| Button | Available from | Effect |
|---|---|---|
Receive |
Requested | Moves the sample to received and fills Received Date if it is empty. |
Send to lab |
Received | Moves the sample to sent to lab and creates a lab analysis if a lab is selected. |
Review |
Received or sent to lab | Moves the sample to quality review. |
Evaluate quality |
Received, sent to lab or under review | Computes the recommended decision from lab and cupping data. |
Approve / Reject |
Under review, or other reviewable states depending on the button visibility | Records the final decision and decision date. |
Expire |
Active states | Forces the sample into expired state. |
Archive |
Approved, rejected or expired | Moves the sample out of active follow-up. |
6. Laboratory analyses
A lab analysis records the external or internal laboratory control of a sample. It can be created from a sample or from the global lab analyses menu.
Creating a lab analysis from a sample
- Open the sample.
- Enable
Delegated to labif needed. - Select a
Laband optionally aLab Due Date. - Click
Send to lab.
The system creates a new active lab analysis only if the sample does not already have an active one.
Lab analysis workflow
| State | Meaning | Common action |
|---|---|---|
| Draft | The request is being prepared. | Fill lab, due date and requested date. |
| Sent | The sample has been sent to the lab. | Wait for the report. |
| Received | The lab report has been received. | Enter moisture, defects, cup score and summary. |
| Accepted | The lab result is accepted. | Use it for sample evaluation. |
| Rejected | The lab result is rejected or invalid. | Request another analysis if needed. |
The computed field Compliant compares the lab values against
the target thresholds on the linked purchase or sale line:
Moisture %must be less than or equal toMoisture max %.Defects countmust be less than or equal toDefects max.Cup scoremust be greater than or equal toCup score min.
7. Cupping sessions
A cupping session is a tasting event. It groups samples, prepares blind cups and lets cuppers enter one or more results per cup.
Before creating a session: define criteria
Go to Coffee / Cupping Criteria and create the scoring criteria used by cuppers. Each criterion can have:
- a sequence used for display order;
- a name;
- a criterion type, if used by your local process;
- a maximum score;
- a flag telling whether the score must be subtracted from the total.
Subtractive criteria are useful for defects or penalties. When a result total is calculated, normal criteria add to the total and subtractive criteria reduce it.
Creating the session
- Open Coffee / Cupping Sessions.
- Create a new session.
- Fill
Name,Date,ResponsibleandLocation. - Check
Cup capacity. The default is 24. - Check
Cups per sample. The default is 3. - Add samples to the
Sampleslist.
A session line is a link between one session and one sample. The line also stores the sample's cupping decision: pending, approved, re-cup or rejected.
Adding a sample from a sample record
You can also open a coffee sample and go to the Cupping sessions tab. When you add a row there, the sample is already known, but you must choose the session. This creates the same session/sample link as adding the sample from the cupping session screen.
The session workflow
| State | Button | What happens |
|---|---|---|
| Draft | Prepare |
Checks capacity, sorts samples and creates missing cups with blind codes. |
| Prepared | Start |
Moves the session to in progress. Cuppers can enter results. |
| In progress | Done |
Marks the tasting session as completed. |
| Draft, Prepared or In progress | Cancel |
Cancels the session. |
| Cancelled | Draft |
Reopens the session in draft state. |
What Prepare does
Prepare is the important operational step. The system:
- calculates the requested number of cups from each session line;
- blocks the preparation if the total exceeds
Cup capacity; - sorts samples by coffee type, origin, reference and id;
- assigns the sequence on each session/sample line;
- creates any missing cups;
- generates blind codes such as
S01-C1,S01-C2,S02-C1.
The default tasting order proposes arabicas first, blends and other coffees next, and robustas at the end.
Blind information
Cuppers see operational tasting information such as origin and coffee type. They do not need to see the full purchase/sale contract, supplier or customer information during the tasting.
8. Cupping results and criteria scoring
Once cups exist, users enter tasting results inside each cup.
Data hierarchy
- A
Cupping Sessioncontains session/sample lines. - Each session/sample line contains generated
Cups. - Each cup can contain one or more
Results. - Each result contains scored
Criterialines.
Entering a result
- Open a cupping session.
- Open the relevant sample line.
- Open the relevant cup.
- Add a result.
- Select the
Cupper. - Enter the date if it differs from today.
- Add criteria lines and enter scores.
- Add notes if needed.
The field Total score is computed from the result lines. It
is empty until at least one criterion has a score.
Criteria lines
| Field | Meaning |
|---|---|
Criterion |
The scoring criterion configured in Coffee / Cupping Criteria. |
Score |
The numeric score entered by the cupper. |
Defect found |
Marks the criterion as identifying a defect. |
Notes |
Free tasting notes for this criterion. |
Score consolidation
Scores are consolidated upwards:
- Result total = sum of its criteria, with subtractive criteria deducted.
- Cup average = average of result totals entered for that cup.
- Session/sample average = average of all result totals across the line's cups.
- Sample cupping average = average of the cupping results linked to the sample.
9. Quality status and recommended decisions
Quality status is computed from direct sample values, lab analysis values and cupping information. The system compares available values with the thresholds stored on the purchase or sale line.
| Indicator | Calculation / logic |
|---|---|
Quality status |
Pass, warning, fail or pending depending on available checks and cupping decisions. |
Recommended decision |
Pass recommends approve, fail recommends reject, warning recommends re-cup, otherwise pending. |
Lab analysis status |
Shows the status of the latest active lab analysis. |
Cupping score |
Uses the average cupping result when available. |
Cupping session line decisions have a direct impact:
- If a linked cupping line is marked
rejected, the sample quality can fail. - If a linked cupping line is marked
re_cup, the sample quality can become warning. - If the values are compliant and no warning/rejection exists, the recommended decision can be approve.
On purchase and sale lines, the computed coffee quality summarizes all linked samples. Rejected, expired or warning samples are therefore visible directly on the contract line.
10. Recommended daily routine
- Review Coffee / Samples / Expiring soon.
- Review Coffee / Samples / Pending.
- Check lab analyses waiting for reports.
- Create or prepare upcoming cupping sessions.
- After cupping, enter result criteria and session/sample decisions.
- After lab or cupping data is entered, use
Evaluate qualityon the sample. - Approve, reject or request a re-cup according to the quality process.
- Archive completed samples when they no longer need active follow-up.
11. Troubleshooting and common questions
The Coffee Quality tab is not visible
Check that Active coffee compatibility is enabled in trade
configuration and that the view has been reloaded after saving.
The Add button does nothing in a One2Many list
This usually means that the child record has another required parent field that is not known from the current screen. Examples:
- From a sample, adding a cupping session line requires selecting the
Session. - From a result, adding a criteria line requires selecting the
Criterion.
The current views provide form popups for these cases. If the popup does not appear, reload the client after updating the module views.
No cups are created
Cups are created by the Prepare button on the cupping
session. Check that the session has sample lines and that the requested
number of cups does not exceed the session capacity.
A sample remains pending
The system can only recommend a decision when it has enough data to compare against the trade line thresholds. Check moisture, defects, cupping score and lab analysis status.
The result total does not match the simple sum
Some criteria may be configured as subtractive. In that case their score is deducted from the total instead of added.
Prepare blocks the session
The total requested cups are above Cup capacity. Increase
capacity, reduce Cups per sample, or remove some samples.