How to Use Business Central for Farm Management
Key Takeaways
- Model the crop cycle on purpose: Dimensions alone are enough for the P&L. Actual cost per lot needs a production order per block and season, which means the Premium experience.
- Lock in costing settings early: An item's costing method can't change once it has transactions, and Average Cost Calc. Type applies to the whole company for a fiscal year.
- Enforce dimensions at the source: Use default dimensions and Code Mandatory on input accounts, but never on the accounts that inventory cost posting writes to.
- Use native features for advances, not pools: Prepayments, partial invoicing, and item charges cover fixed-price grower contracts. Pool returns need more.
- Make lot origin mandatory: Item tracking code settings force a lot record to exist. The farm data on it, such as field, grower, and harvest date, needs an extension.
Introduction
Business Central handles a farm's ledger, inventory, and purchasing without drama. The implementations that struggle are the ones configured as if the farm were a distributor: items received and sold, costs recognized when invoices post, and a fiscal year doing the work of a crop year. A crop is built over months, its costs land long before the product exists, and what you eventually sell is a lot that came from one field.
That changes a handful of design decisions. How you model the crop cycle, which costing settings you commit to, where lot origin lives, and how you pay growers decide how much of the farm Business Central can carry natively and where you need an extension. Most of them are expensive to reverse. You cannot change a costing method for an item after you have included the item in a transaction, and you can only use one average cost period and one average cost calculation type in a fiscal year.
This is the advice we'd give a partner or a finance lead before a farm go-live: the patterns that work, the settings that bite, and the point where configuration ends.
Decide Whether the Crop Cycle Is a Dimension or a Production Order
There are two workable patterns, and you should choose per crop type, not per company.
| Dimensions only | Production order per block and season | |
|---|---|---|
| How it works | Preharvest costs post to a growing-crop account tagged with crop, field, and crop year | Inputs, labor, and machine time post to a production order that holds the cost until harvest |
| Cost into inventory | A journal at harvest, calculated outside the system | Output posting, with the production order's actual cost |
| License | Essentials | Premium |
| Fits | Crops where cost per pound isn't managed lot by lot | Crops where lot cost drives pricing, grower returns, or margin by block |
If you choose the production order, the details decide whether it works:
- Post consumption manually. Backward flushing calculates and posts consumption according to the production order component lines when the status changes to Finished, so it books planned quantities, not what was applied. Forward flushing posts at release. Neither records a spray as it happened. Post consumption journals from the application records.
- Cost labor and machines through capacity. Crews and equipment become work centers and machine centers. Capacity posting increases WIP by the value of the conversion cost. Custom harvesters and applicators fit as subcontracting: receiving the order posts a capacity ledger entry to the production order, and invoicing the order posts the direct cost of the purchase order to the production order.
- Give the crop its own WIP account. The Inventory Posting Setup table has a WIP Account field that specifies the general ledger account number to which to post transactions for items in WIP inventory for each inventory posting group and location combination. Use a separate posting group for growing crop so its WIP balance reconciles on its own.
- Post output per harvest pass, with lots. Item journal batches can be set up so users enter serial, lot, and package data directly on journal lines, and in Excel you can fill in Lot No. and Expiration Date columns. A weigh-ticket export becomes an output journal with little rekeying.
- Don't finish early. You can't change finished production orders. Finish only after the last harvest pass, the culls, and the late contractor invoices are in. Record culls and hulls as by-products with a negative consumption entry, since Business Central doesn't have a dedicated by-product feature.
On costing method, actual cost is the simpler choice. In environments that don't use the Standard costing method, the actual rather than the standard cost of produced items is capitalized on the balance sheet. Standard costing earns its keep if you budget cost per pound by block, because the system then posts the difference as variances, split into Material, Capacity, Capacity Overhead, Subcontracting, and Manufacturing Overhead. That gives you cost against plan for every block without a spreadsheet. Microsoft's guidance is to use Standard where there's discipline and staff to maintain standards, and a farm that doesn't revisit its standards every season will drown in variances.
Get the Costing Settings Right Before You Post Anything
Three settings do most of the damage when they're wrong, and none is cheap to fix after go-live.
Costing method by item class. Once an item has entries, you can't change its costing method. The documented way out is to replace the item with a new one and convert the inventory with assembly orders, which can convert one item to another while preserving the costs. Nobody wants to do that on a live harvest. Average for inputs and FIFO for harvested crop is a sound default. If lot-level margin matters to you, don't assume lot tracking gives it. Microsoft states that the cost won't follow the lot number, but the cost assumption of the selected costing method, and Specific costing is described as typically used for serialized items. Post two lots at different costs in a sandbox, sell one of them, and read the value entries before you build reports on the answer.
Average Cost Calc. Type. The option Item, Variant, and Location calculates average cost for each item, location, and variant. If you carry ranch or block group as the variant, your average cost stops blending them. Two limits: the setting applies to every item in the company, and you can only use one average cost period and one average cost calculation type in a fiscal year. Microsoft recommends you use caution and consult your auditor if you change it inside a period. Use variants at the ranch or block-group level, not for every block, or sales and availability views turn into a maintenance problem.
Cost adjustment and posting. On a production order, the actual cost isn't final until cost adjustment runs: when the production order is set to Finished, you invoice the order by running the Adjust Cost-Item Entries batch job. Two more facts matter at month-end:
- Inventory costs must be adjusted before the related value entries can be reconciled with the general ledger.
- Unless Automatic Cost Posting is on, inventory costs aren't recorded dynamically in the general ledger, and COGS isn't calculated with a sale.
Schedule both batch jobs in the job queue: object ID 795 for Adjust Cost - Item Entries, and codeunit 2846 for Post Inventory Cost to G/L. Run them in that order before anyone reads a month-end report. And if you receive grower deliveries before the invoice arrives, know that the expected cost is posted to interim accounts at the time of receipt, and the inventory value in the general ledger doesn't change unless Expected Cost Posting to G/L is selected on Inventory Setup. Decide that deliberately, because it determines whether last week's deliveries are on your balance sheet at month-end.
Dimensions That Hold Up on a Farm
A farm asks the same question of every dollar: which crop, which field, which season. Business Central gives you the tools to answer it, but the setup decides whether the answer is usable at year-end.
Pick the two global dimensions carefully. Global dimensions are filters on reports and batch jobs. Shortcut dimensions (up to eight) are fields on journals, document lines and ledger entries. For most farms, Crop and Field make good global dimensions, and Crop Year or Block works as a shortcut dimension. Keep Department and similar company-wide dimensions in the shortcut slots.
Make the dimension mandatory where the cost is born. Value Posting offers Code Mandatory and Same Code. Set Code Mandatory on the seed, fertilizer, chemical, fuel and labor expense accounts, so a purchase invoice can't post without a field. Two exceptions matter. Accounts used by the Post Inventory Cost to G/L batch job, and by Adjust Exchange Rates, must not use Code Mandatory or Same Code. Put the rule on the expense side and keep it off inventory and COGS accounts.
Know where defaults come from. Default dimensions can sit on an account, an item, a vendor, a resource or a location, and Business Central applies a priority order across them. Dimensions on a purchase header are treated as coming from the vendor. A fertilizer supplier with a default Field value will stamp that value on every line unless a higher-priority default overrides it. Set defaults on items and resources (a tractor, a picking crew) and keep vendor defaults empty.
Block combinations that don't exist. Limited combinations stop a Crop value from pairing with a Field it was never planted on. It takes an afternoon to set up and saves a lot of cleanup.
Keep the dimension values identical across entities. Consolidation works only when dimension values match, unless you map them with a Consolidation Code. If your orchards and your packing house run as separate companies, agree on the Crop and Field list once and reuse it in each company. Charts of accounts can be mapped during consolidation, and it works across environments.
Report from analysis views, not raw ledger entries. An analysis view with Update on Posting keeps a summarized copy of the entries by account and dimension, which makes crop-by-field reports fast. Budgets carry up to four dimensions, enough for Crop, Field, Crop Year and one more.
Allocating shared costs: allocation accounts or the cost accounting module
Shared costs, such as irrigation power, a foreman's salary or equipment depreciation, need to land on fields in proportion to something. Business Central has two ways to do it.
| Allocation accounts | Cost accounting module | |
|---|---|---|
| How it works | Fixed (set percentages) or Variable (based on dimensions and statistical accounts, such as acres per block) | Static bases (a fixed ratio, such as 5:2:4) or dynamic bases, run in levels 1 to 99 |
| Where it posts | Straight into the general ledger, on purchase and sales documents and general journal lines | A separate Cost Entry and Cost Register ledger, linked by G/L Entry No., filled by the Transfer GL Entries to CA batch job |
| Best for | Splitting a bill across fields as it is posted | Multi-step overhead allocation where you want the G/L left untouched |
For most farms, a Variable allocation account driven by a statistical account of acres per block is the simplest route, and the numbers stay in the G/L where your auditors expect them. One catch: allocation accounts aren't supported in recurring journals. On a recurring general journal, use the Allocations action instead.
Setting Up Orchards and Vineyards as Fixed Assets
A new block of trees or vines is a fixed asset that costs money for years before it earns anything. Business Central's fixed asset module handles it well, but only if you decide up front when depreciation starts.
Capitalize the establishment costs. Each fixed asset card carries a depreciation book with a Depreciation Starting Date, an Acquisition Date (the posting date of the first acquisition cost), a number of depreciation years and a depreciation table. Create one fixed asset per block and post planting, trellis, irrigation install and young-tree care to it as acquisition cost from the Fixed Asset G/L Journal. Using a block-level asset keeps the cost of Block 12 separate from Block 14, which you will want when one is replanted.
Set the depreciation starting date to the first bearing year, not the planting date. The Acquisition Date follows your first posting, so it will sit years ahead of the first harvest. Setting the Depreciation Starting Date by hand to the first commercial crop keeps the depreciation expense in the same period as the revenue. This is a practice recommendation, and your accountant should confirm it fits your tax position. Under 26 USC 263A(d), a plant with a preproductive period of two years or less is exempt from the uniform capitalization rules, and there is an election available, so the answer differs by crop.
Use two depreciation books when book and tax differ. Business Central supports multiple depreciation books per asset, and the Copy Depreciation Book batch job builds the second from the first. Run one for financial reporting and one for tax so the two schedules never share a number.
Keep the pre-bearing costs visible by dimension. Give each block asset the same Field dimension as your annual crops. Then a report by Field shows both the cost of growing this year's tomatoes and the capital sitting in next year's almonds.
Paying Growers: Advances, Partial Deliveries and Deductions
If you buy fruit or grain from outside growers, the purchase side of Business Central does more for you than most farms use. The trick is mapping each grower event to the right native feature.
Use vendor prepayments for advances. Set a prepayment percentage on the vendor, and Business Central creates a prepayment invoice from the purchase order. The prepayment account has to be an asset account until the items are received, so the advance sits on the balance sheet instead of in expense. When the final invoice is posted, the prepayment is deducted automatically. That is the advance-then-final-payment cycle most grower contracts follow.
Receive loads as they arrive, invoice once. One purchase order per grower per season, with Qty. to Receive posted for each delivery, gives you a receipt per load. At settlement, the Get Receipt Lines function pulls multiple receipt lines onto one invoice, and Qty. to Invoice controls how much of the order you bill. Partial receipt and partial invoicing are both standard.
Put hauling, grading fees and cooling on as item charges. An item charge assigned to posted receipt lines adds to the cost of the delivered fruit. Run Adjust Cost afterward so the charge reaches inventory cost. Use item charges for costs that belong to the product. Use a vendor deduction (a negative line on the invoice) for costs that belong to the grower, such as a seed advance you are recovering.
Keep contract prices in price lists with dates and minimums. A purchase price list line carries Starting Date, Ending Date, Variant Code, Unit of Measure Code, Minimum Quantity and Direct Unit Cost. A variant can stand in for a grade or size, so a premium grade and a standard grade get different prices on the same item, and a date range handles mid-season price steps.
Where native purchasing stops
The purchase flow above pays each grower on what that grower delivered at the contract price. It does not do pooling. Pooling means mixing deliveries from many growers into a pool, selling the pooled product over months, and sharing the net proceeds back by volume and grade after packing costs are charged. Standard Business Central has no object for a pool, a pool share or a per-grower settlement statement across grades. Building it from prepayments and manual journals means keeping the pool math in a spreadsheet and reconciling it to the ledger by hand. Pool accounting is the first place where a farm extension earns its keep, covered below.
Lot Tracking: Make Origin Mandatory at Receiving
Business Central's item tracking is solid. The lot number just has to carry the farm's origin, and that has to happen at receiving.
Turn on lot tracking in the item tracking code. The settings that matter are Lot Specific Tracking and Lot Purchase Inbound Tracking. Add Use Expiration Dates and Man. Expir. Date Entry Reqd. for fresh produce, and Strict Expiration Posting if you want the system to refuse to ship expired stock. Set Lot Info. Inbound Must Exist when you want someone to fill in the lot's details before it can be received.
Build the lot number from the origin. Lot No. is a code field up to 50 characters. A pattern such as Field-Block-HarvestDate-Pass (for example, F12-B3-20260918-2) lets someone read origin off the label. Use the Lot Nos. field on the Item card to set a number series, but for farm-origin lots you will usually type or scan the number at receiving, because a running series tells you nothing about where the fruit came from.
Use Lot No. Information for the origin record. The Lot No. Information card holds Description, Test Quality, Certificate Number, Blocked, Comment, Inventory and Expired Inventory. Use Description or Comment for grower and field, Certificate Number for a food-safety certificate, and Blocked to hold a lot after a failed test. Turn on Create Lot No. Info on posting so a card exists for every lot.
Know what Item Tracing won't show. Item Tracing may not display every transaction when the same lot was received on several transactions. If one field's pass spans two receipts, give each receipt its own lot suffix so the trace stays complete.
Use the Excel route for harvest-day volume. Item journal columns for Lot No. and Expiration Date are available in Excel once the capability is enabled on the batch, which is faster than keying twenty lots by hand.
The gap
Standard lot tracking records where a lot came from and where it went. It does not generate the labels your buyers expect or the audit documents for food safety schemes. If you ship under GS1-128 or SSCC-18 labels, or answer to GLOBALG.A.P., SQF or BRC audits, you will be producing those outside the standard feature set.
Where Configuration Ends and a Farm Extension Starts
Everything above is configuration or process design inside standard Business Central. Three jobs sit outside it, and they are the ones farms feel most.
| Farm job | What you can do in standard Business Central | What is missing |
|---|---|---|
| Harvest intake | Receive against a purchase order or an item journal, with lots | Harvest tickets from the field that create purchase orders, sales orders and inventory updates in one step |
| Pool settlement | Prepayments, partial invoices, price lists by variant | A pool object that shares net proceeds by volume and grade, with costs allocated pro rata |
| Traceability and audit | Lot tracking, Lot No. Information, Item Tracing | Forward and backward trace from a harvest lot, GS1-128 and SSCC-18 labels printed from the packing record, audit documents for food safety schemes |
AgriERP on Business Central is built for these gaps. It is a lighter, cloud-based version built on Business Central, so your ledger, dimensions, posting groups and cost adjustment jobs stay the ones described above. What the farm layer adds:
- Harvest management: harvest tickets are entered from the field, and the system auto-posts data to D365 BC, generating purchase orders, sales orders and inventory updates.
- Pool accounting: pool shares are calculated by volume and grade, with costs allocated pro rata.
- Food traceability: the lot is assigned at receiving, traceability runs forward and backward, GS1-128 and SSCC-18 labels print from the packing record, and audit-ready documents cover GLOBALG.A.P., SQF and BRC.
- Cost of production: each input cost goes to the field and crop that used it, and shared overhead is allocated by recorded usage.
The practical benefit is that your setup work is not thrown away. The costing method, dimension structure and posting groups you configured stay in place, and the farm layer writes into them.
For a real example, Grant 4D, a potato grower, runs AgriERP on Business Central. The case study describes consolidation across eight entities falling from weeks to 1.5 hours and a monthly close of five to seven days.
If you are coming from another system, AgriERP supports migration from QuickBooks, Xero, PcMars, Famous ERP and Dynamics NAV and GP. The implementation runs in phases of 6 to 12, 8 to 14 and 10 to 16 weeks, described on the implementation process page.
Decisions to Make Before Go-Live
Some choices are cheap on day one and expensive after you have posted a season of entries.
- Costing method. It can't be changed after you post. Decide between FIFO, Average and Specific before the first receipt, and test lot-level cost in a sandbox, because the documentation doesn't say how lot cost behaves under FIFO or Average.
- Average cost calculation type. If you use Average, choose Item, Variant, and Location deliberately. Grade-as-variant then gets its own average.
- Cost adjustment schedule. Put Adjust Cost and Post Inventory Cost to G/L in the job queue, in that order, before the first month-end.
- Dimension list. Agree the Crop, Field and Crop Year values across every company before the first journal.
- Code Mandatory accounts. Set it on expense accounts, and keep it off any account the cost batch jobs post to.
- Lot number pattern. Fix the format before the first harvest. Relabelling stock mid-season is painful.
- Orchard depreciation start dates. Settle them with your accountant before capitalizing the first block.
- Which production order pattern you use. Manufacturing features need the Premium experience, so confirm the licensing before you design around production orders.
Frequently Asked Questions
Can Business Central run a farm without an add-on?
For a farm that sells its own crop and has no outside growers, often yes. Dimensions, fixed assets, lot tracking and production orders cover the core. Add-ons become worth it with pooled grower payments, harvest tickets from the field, or buyer and audit traceability requirements.
Should the crop cycle be a dimension or a production order?
Use a dimension when you want cost by crop and field without tracking work in progress. Use a production order per block per season when you need work in progress and an actual cost per harvest. The second requires the Premium experience.
Can I change the costing method later?
No. The costing method can't be changed once entries are posted, so test it in a sandbox first.
Does Business Central handle grower pools?
Standard Business Central has no pool object. You can approximate advances and final payments with prepayments and partial invoices, but sharing net proceeds across a pool by volume and grade needs an extension.
How do I trace a lot back to a field?
Build the field, block and harvest date into the lot number at receiving, and store grower and certificate details on the Lot No. Information card. Item Tracing then follows the lot forward, with the caveat about lots received on multiple transactions.
Does the FDA Food Traceability Rule apply to my farm?
The FDA Food Traceability Rule (FSMA 204) applies to foods on the Food Traceability List. The compliance date is proposed to move to July 20, 2028, and Congress has directed the FDA not to enforce earlier. Check the list against your crops.
Next Step
If you run Business Central on a farm, or are choosing a system for one, the quickest check is to bring your crop-year and grower-payment questions to someone who has set it up. Talk to the AgriERP team about how AgriERP on Business Central fits your operation.
Related reading: multi-entity farm accounting, switching farm software and pistachio grower payments.
AgriERP is built on Microsoft Dynamics 365 Business Central for farms, packers and processors.