How to Offload Adjust Cost – Item Entries and Post Inventory Cost to G/L Using Job Queue for Better System Performance
Efficient inventory cost processing is essential for maintaining system performance in Microsoft Dynamics 365 Business Central. Running cost adjustments and General Ledger postings in real time can significantly impact posting speed, especially in organizations with high transaction volumes.
This guide explains how to configure the Job Queue to automate Adjust Cost – Item Entries and Post Inventory Cost to G/L, helping improve overall system performance while ensuring accurate inventory valuation.
Part 1 — Understanding the Settings
Before setting up the Job Queue, it is important to understand two fields in Inventory Setup that control how costs are processed in Business Central.
Inventory Setup: Two Key Fields
Field 1: Automatic Cost Posting
When enabled, every time an item transaction is posted (purchase, sale, or transfer), Business Central automatically posts the value to the Inventory Account, Adjustment Account, and COGS Account in the General Ledger—in real time.
Alternatively, you can manually post the values at regular intervals using the Post Inventory Cost to G/L batch job.
Note: Costs must be adjusted before posting to the General Ledger.
Field 2: Automatic Cost Adjustment
When enabled, item value entries are automatically adjusted every time an item transaction is posted. This ensures correct inventory valuation in the General Ledger so that sales and profit statistics remain up to date.
The cost adjustment forwards any cost changes from inbound entries—such as purchases or production output—to related outbound entries, including sales or transfers.
You can also define how far back a transaction can occur to trigger adjustments.
Alternatively, you can manually adjust costs using the Adjust Cost – Item Entries batch job.
Performance Consideration
Why Should You Disable These Fields?
Both settings sound beneficial—but why should they be disabled?
⚠ Performance Warning
When both fields are enabled, every inventory posting immediately triggers:
- Cost Adjustment
- General Ledger Posting
In organizations where many users post transactions simultaneously, this results in:
- Slower posting performance
- Increased locking
- Posting delays
- Poor month-end processing performance
- Reduced system responsiveness during bulk operations
Recommended Configuration
For most production environments, Microsoft Business Central administrators commonly configure:
- Disable Automatic Cost Posting
- Set Automatic Cost Adjustment to Never
- Schedule both batch jobs using Job Queue
- Run them nightly or every few hours depending on business requirements
✓ Key Rule
Costs must always be adjusted before posting them to the General Ledger.
Always schedule:
- Adjust Cost – Item Entries
- Post Inventory Cost to G/L
in this exact order.
Step 1 — Configuration
Disable the Automatic Fields
Navigation
Search (Alt + Q) → Inventory Setup
Step 1: Open Inventory Setup
Use the Search (Alt + Q), type Inventory Setup, and open the page.
Step 2: Disable Automatic Cost Posting
Under the General tab:
Locate Automatic Cost Posting
Turn it OFF
Step 3: Set Automatic Cost Adjustment to Never
Change the Automatic Cost Adjustment dropdown to:
Never
This completely disables inline cost adjustments during posting.
Step 2 — Job Queue Setup
Configure Job Queue: Adjust Cost – Item Entries (Report 795)
Navigation
Search → Job Queue Entries → New
Step 1: Create a New Job Queue Entry
Open Job Queue Entries and click New.
Step 2: Set Object Type and ID
Configure:
- Object Type to Run: Report
- Object ID to Run: 795
Report 795 = Adjust Cost – Item Entries
Figure 1: Job Queue Entry Card — Report 795 Adjust Cost – Item Entries
Step 3: Configure the Report Request Page
From the Job Queue action bar, select Report Request Page.
Configure the options below.
Figure 2: Adjust Cost – Item Entries — Report Request Page Options
Report Request Page Settings
Ensure the following:
- Item No. Filter → Leave Blank
- Item Category Filter → Leave Blank
- Post to G/L → Enabled (ON)
- Item-by-Item Adjustment → Leave Default (OFF)
This configuration ensures:
- All inventory items are processed
- Costs are posted to the General Ledger during the same execution
Without enabling Post to G/L, the report adjusts costs but does not post them to the General Ledger.
Step 4: Configure the Schedule
Configure:
- Days to Run
- Starting Time (Example: 01:00 AM)
- Number of Minutes Between Runs (Optional)
Step 5: Set Status to Ready
Change the Status field to:
Ready
This activates the Job Queue entry.
Step 3 — Job Queue Setup
Configure Job Queue: Post Inventory Cost to G/L (Report 1002)
Navigation
Search → Job Queue Entries → New
Step 1: Create Another Job Queue Entry
Create a new Job Queue Entry.
Step 2: Set Object Type and ID
Configure:
- Object Type to Run → Report
- Object ID to Run → 1002
Report 1002 = Post Inventory Cost to G/L
Figure 3: Job Queue Entry Card — Report 1002
Step 3: Configure the Report Request Page
Open Report Request Page from the action bar.
Configure the following options.
Figure 4: Post Inventory Cost to G/L — Report Request Page Options
Critical Report Request Page Settings
Configure:
- Posting Method → Per Entry
- Document No. → Leave Blank
- Post → Enabled (ON)
Setting Post = ON is mandatory.
If disabled, the report only simulates the posting and does not update the General Ledger.
Step 4: Schedule After the First Job
Ensure this Job Queue runs after the Adjust Cost – Item Entries report.
Example:
- Report 795 → 01:00 AM
- Report 1002 → 02:00 AM
Allow sufficient buffer time between the two jobs.
Step 5: Set Status to Ready
Set the Status to:
Ready
The Job Queue is now active.
Important
Do Not Skip the Report Request Page Configuration
The Report Request Page configuration for both reports is critical.
Without these settings:
- Costs will not be adjusted correctly.
- Inventory costs will not post to the General Ledger.
- The Job Queue will not function as intended.
Always verify these options after creating each Job Queue entry.
Summary
What We Configured
Done
Your inventory cost processing will now run automatically in the background using Job Queue.
This approach helps:
- Improve posting performance
- Reduce delays for end users
- Keep inventory valuation accurate
- Ensure the General Ledger stays up to date
- Optimize Microsoft Dynamics 365 Business Central for high-volume environments
Frequently Asked Questions (FAQs)
1. Why should I disable Automatic Cost Posting in Microsoft Dynamics 365 Business Central?
Disabling Automatic Cost Posting prevents Business Central from posting inventory costs to the General Ledger during every transaction. This improves posting performance, especially in high-volume production environments.
2. What does Automatic Cost Adjustment do?
Automatic Cost Adjustment updates inventory costs whenever an item transaction is posted, ensuring inventory valuation and profit calculations remain accurate.
3. Why use Job Queue for inventory cost processing?
Using Job Queue allows Business Central to process inventory cost adjustments in the background during scheduled intervals, reducing system load and improving user experience.
4. Which report adjusts inventory costs?
Report 795 – Adjust Cost – Item Entries is used to adjust inventory costs before posting them to the General Ledger.
5. Which report posts inventory costs to the General Ledger?
Report 1002 – Post Inventory Cost to G/L posts adjusted inventory costs to the General Ledger.
6. What is the correct execution order?
Always run:
- Adjust Cost – Item Entries (Report 795)
- Post Inventory Cost to G/L (Report 1002)
Running them in reverse order can result in inaccurate General Ledger postings.
7. Can these jobs run automatically?
Yes. By configuring Job Queue Entries, both reports can run automatically on a schedule such as nightly or every few hours.
8. What happens if the Report Request Page settings are incorrect?
If the required Report Request Page options are not configured correctly, inventory costs may not be adjusted or posted to the General Ledger, causing inaccurate financial reporting.