The Configuration Audit extension does over 200 different audits of the data across the different areas of the application, below is a full list of the checks.
1 Financial Management
1.1 General Ledger Setup
- Checks if General Ledger Setup record exists using Get() function. Reports error if record does not exist.
- Validates LCY Code field is defined and not empty. LCY Code is mandatory for all monetary transactions.
- Validates Amount Rounding Precision > 0. Required for proper rounding of all monetary amounts in the system.
- Validates Unit-Amount Rounding Precision > 0. Required for rounding unit prices and costs.
- Checks if Allow Posting From date is set and not 0D. Warns if not set as posting date restrictions are recommended.
- Checks if Allow Posting To date is set and not 0D. Warns if not set as it controls posting date range.
- Suggests setting Global Dimension 1 Code for departmental or divisional analysis across all modules.
- Suggests setting Global Dimension 2 Code for secondary dimension analysis (project, cost center, etc.).
1.2 Accounting Periods
- Checks if any Accounting Period records exist using IsEmpty() function. Reports error if no periods are defined.
- Validates accounting periods exist for current year. Filters periods with Starting Date between DMY2Date(1,1,CurrentYear) and DMY2Date(31,12,CurrentYear) where CurrentYear = Date2DMY(WorkDate(),3). Reports error if current year not covered.
1.3 General Posting Setup
- Validates General Posting Setup combinations used on master data. For each Gen. Bus. Posting Group and Gen. Prod. Posting Group combination: Checks Sales Account is defined (Error). Checks Purch. Account is defined (Error). Checks COGS Account is defined (Error). Checks Inventory Adjmt. Account is defined (Error). Uses helper functions to determine if combinations are used.
1.4 Inventory Posting Setup
- For each Location Code and Inventory Posting Group combination: Validates Inventory Account field is defined and not empty.
- Checks Inventory Account (Interim) is defined if interim posting is used. Warns if missing when needed.
- Checks WIP Account is defined if manufacturing is used. Required for work-in-process inventory valuation.
1.5 Customer Posting Groups Setup
- For each Customer Posting Group: Validates Receivables Account is defined. Required for customer balance tracking.
- Checks Service Charge Acc. is defined. Warns if missing as often used for late fees and service charges.
- Checks Interest Account is defined. Warns if missing as used for finance charge calculations.
1.6 Customer Posting Groups Usage
- For each Customer Posting Group: Checks if used by any customer record using Customer table filtered by Customer Posting Group. Suggests cleanup if unused.
1.7 Vendor Posting Groups Setup
- For each Vendor Posting Group: Validates Payables Account is defined. Required for vendor balance tracking.
- Checks Payment Disc. Debit Acc. is defined. Used when payment discounts are taken.
- Checks Payment Disc. Credit Acc. is defined. Used when payment discounts are granted.
1.8 Vendor Posting Groups Usage
- For each Vendor Posting Group: Checks if used by any vendor using Vendor table IsEmpty() function filtered by posting group. Suggests cleanup if unused.
1.9 Bank Account Posting Groups
- For each Bank Account Posting Group: Validates G/L Account No. field is defined and not empty.
- Validates G/L Account exists in G/L Account table using Get() function.
- Validates G/L Account is not blocked. Blocked accounts cannot be posted to.
1.10 FA Posting Groups
- For each FA Posting Group: Validates Acquisition Cost Account is defined. Required for fixed asset purchases.
- Validates Depreciation Expense Account is defined. Required for depreciation posting.
- Validates Accumulated Depreciation Account is defined. Required for contra-asset depreciation accumulation.
1.11 G/L Accounts in Posting Setups
- Validates G/L accounts in General Posting Setup (Sales, Purch, COGS, discounts, tolerances), Inventory Posting Setup (Inventory, WIP, variances), Customer Posting Groups (Receivables, Service Charge, Interest), Vendor Posting Groups (Payables, discounts), Bank Account Posting Groups, FA Posting Groups (acquisition, depreciation, maintenance). For each account: Validates exists, not blocked, allows Direct Posting, category matches expected type (Income/Expense/Assets/Liabilities/Cost of Goods Sold).
1.12 VAT Posting Setup
- Checks if VAT is in use by verifying VAT Business Posting Group or VAT Product Posting Group records exist. Only runs remaining checks if VAT is used.
- For each VAT Posting Setup combination: Validates VAT Calculation Type is defined (Normal VAT, Reverse Charge, Full VAT, Sales Tax).
- Checks Sales VAT Account is defined. Required for VAT on sales transactions.
- Checks Purchase VAT Account is defined. Required for VAT on purchase transactions.
- Validates VAT % is reasonable between 0-100%. Warns if outside range as likely data entry error.
1.13 Payment Terms
- For each Payment Terms: Checks if Due Date Calculation is defined using Format() function. Due date calculation determines invoice payment timing.
- Checks if payment terms are used by any Customer or Vendor using filtered queries. Suggests cleanup of unused terms.
1.14 Payment Methods
- For each Payment Method: Checks if Bal. Account Type and Bal. Account No. are both set or both empty. Warns on inconsistent configuration where one is set but not the other.
1.15 Source Code Setup
- Validates Sales source code is defined in Source Code Setup. Required for sales posting.
- Validates Purchases source code is defined. Required for purchase posting identification.
- Validates General Journal source code is defined. Required for manual journal posting identification.
1.16 Bank Accounts
- For each Bank Account: Validates Bank Account Posting Group is assigned and not empty.
- If Currency Code is specified, validates it exists in Currency table. Warns if invalid foreign currency reference.
- Checks Last Statement No. is sequential and logical. Warns if irregularities detected in reconciliation numbering.
1.17 Posting Date Restrictions
- For each User Setup: Checks Allow Posting From date is set and not 0D. Warns if unlimited posting dates allowed.
- Checks Allow Posting To date is set. Controls upper bound of posting date range.
- Validates Allow Posting From <= Allow Posting To. Reports error if date range is inverted.
1.18 VAT Statement Setup
- Checks if VAT Statement Name exists. Only if VAT is in use determined by VATInUse() function.
- Checks if VAT Statement Lines are defined for the VAT Statement Name. Required for VAT reporting structure.
1.19 Bank Reconciliation Aging
- For each Bank Account: Identifies open Bank Ledger Entries (Open = true) with Posting Date < WORKDATE() – 90 days. Suggests reviewing old outstanding items for reconciliation.
1.20 Currency Setup
- For each Currency: Checks if Currency Exchange Rate records exist. Warns if currency defined but no rates.
- Validates Rounding Precision > 0. Required for proper amount rounding in foreign currency.
- Validates Invoice Rounding Precision > 0. Required for invoice total rounding.
1.21 Currency Exchange Rates
- For each active Currency: Checks if exchange rate exists for WORKDATE(). Warns if no current rate available.
- Validates Exchange Rate Amount > 0. Must be positive for currency conversion calculations.
- Validates Relational Exch. Rate Amount > 0. Required for reciprocal exchange rate calculations.
1.22 G/L Account Dimensions
- For each G/L Account with Default Dimensions: Validates Dimension Value exists in Dimension Value table for each dimension assignment.
- Checks if assigned Dimension Values are blocked. Warns as blocked dimensions will prevent posting.
1.23 Blocked Dimension Values
- For each blocked Dimension Value: Uses Dimension Set Entry to find usage. Checks if used in open Sales Orders (Document Type = Order) via Dimension Set ID.
- Checks if blocked dimension used in open Purchase Orders via Dimension Set ID lookup.
- Checks if blocked dimension used in General Journal Lines via Dimension Set ID. Warns to update documents before blocking.
2 Sales & Receivables
2.1 Sales & Receivables Setup
- Checks if Sales & Receivables Setup record exists using Get() function.
- Validates Customer Nos. number series is defined. Required for creating customers.
- Validates Quote Nos. series is defined. Needed for sales quotation numbering.
- Validates Order Nos. series is defined. Required for sales order numbering.
- Validates Invoice Nos. series is defined. Required for sales invoice numbering.
- Validates Posted Invoice Nos. series is defined. Required for posted invoice numbering.
- Validates Credit Memo Nos. series is defined. Required for credit memo numbering.
- Validates Posted Credit Memo Nos. series is defined. Required for posted credit memo numbering.
- Checks Credit Warnings setting. Suggests enabling to prevent over-limit sales.
- Checks Stockout Warning setting. Suggests enabling to warn when selling items without inventory.
2.2 Customer Posting Groups Usage
- For each Customer Posting Group: Checks if used by any customer in Customer table. Suggests cleanup if unused.
2.3 Blocked Customers with Open Entries
- For each Customer where Blocked <> ‘ ‘: Checks if customer has open Cust. Ledger Entries (Open = true). Warns blocked customers need balance resolution.
2.4 Report Selections (Sales)
- Checks if report assigned for Sales Quote (Report Selection Usage = 1). Warns if no quote report configured.
- Checks if report assigned for Sales Order (Usage = 2). Required for printing order confirmations.
- Checks if report assigned for Sales Invoice (Usage = 3). Required for printing invoices.
- Checks if report assigned for Sales Credit Memo (Usage = 4). Required for printing credit memos.
- Checks if report assigned for Sales Shipment (Usage = 5). Required for printing packing slips.
2.5 Shipping Agents
- For each Shipping Agent: Checks if Shipping Agent Services are defined using Shipping Agent Services table query. Warns if agent has no services configured.
2.6 Return Reasons (Sales)
- Checks if Return Reason records exist using IsEmpty() function. Suggests defining for return tracking.
- If Default Code is used in setup, validates Return Reason exists. Warns if invalid reference.
2.7 Customer Credit Limits
- For each Customer with Credit Limit (Amount) > 0: Calculates Balance from Cust. Ledger Entries + outstanding orders from Sales Header (Document Type = Order). Warns if total exceeds Credit Limit.
2.8 Salesperson Codes
- For each Customer: Checks if Salesperson Code is assigned. Suggests assignment for accountability.
- For each Salesperson/Purchaser: Checks if used by any Customer. Suggests cleanup if unused.
2.9 Customer Price Groups
- For each Customer Price Group: Checks if used by any Customer. Suggests cleanup if unused.
- Checks if Sales Prices exist for the group using Sales Price table. Warns if group has no prices.
2.10 Outstanding Sales Orders
- Finds Sales Orders (Document Type = Order, Status = Open) with Order Date < WORKDATE() – 90. Suggests reviewing old orders.
2.11 Sales Prices
- For Items with Sales Unit Price = 0: Checks if any Sales Prices defined. Warns sellable items need pricing.
- For Sales Prices with Ending Date <> 0D and Ending Date < WORKDATE(): Reports as expired. Suggests cleanup.
2.12 Customer Dimensions
- For each Customer with Default Dimensions: Validates Dimension Value exists in Dimension Value table.
- Checks if assigned Dimension Values are blocked. Warns to prevent posting issues.
3 Purchase & Payables
3.1 Purchases & Payables Setup
- Checks if Purchases & Payables Setup record exists using Get() function.
- Validates Vendor Nos. number series is defined. Required for creating vendors.
- Validates Quote Nos. series is defined for purchase quotation numbering.
- Validates Order Nos. series is defined. Required for purchase order numbering.
- Validates Invoice Nos. series is defined. Required for purchase invoice numbering.
- Validates Posted Invoice Nos. series is defined. Required for posted invoice numbering.
- Validates Credit Memo Nos. series is defined. Required for credit memo numbering.
- Validates Posted Credit Memo Nos. series is defined. Required for posted credit memo numbering.
- Checks Receipt on Invoice setting. Suggests enabling for better receiving control.
3.2 Vendor Posting Groups Usage
- For each Vendor Posting Group: Checks if used by any vendor in Vendor table. Suggests cleanup if unused.
3.3 Blocked Vendors with Open Entries
- For each Vendor where Blocked <> ‘ ‘: Checks if vendor has open Vendor Ledger Entries (Open = true). Warns blocked vendors need resolution.
3.4 Report Selections (Purchase)
- Checks if report assigned for Purchase Quote (Report Selection Usage = 1).
- Checks if report assigned for Purchase Order (Usage = 2). Required for order confirmations.
- Checks if report assigned for Purchase Invoice (Usage = 3).
- Checks if report assigned for Purchase Credit Memo (Usage = 4).
- Checks if report assigned for Purchase Receipt (Usage = 5). Required for receiving documentation.
3.5 Return Reasons (Purchase)
- Checks if Return Reason records exist. Suggests defining for return tracking.
- If Default Code used, validates Return Reason exists. Warns if invalid.
3.6 Purchaser Codes
- For each Vendor: Checks if Purchaser Code is assigned. Suggests for accountability.
- For each Salesperson/Purchaser: Checks if used by any Vendor. Suggests cleanup if unused.
3.7 Vendor Price Groups
- For each Vendor Price Group: Checks if used by any Vendor. Suggests cleanup if unused.
3.8 Outstanding Purchase Orders
- Finds Purchase Orders (Document Type = Order, Status = Open) with Order Date < WORKDATE() – 90. Suggests review.
3.9 Vendor Dimensions
- For each Vendor with Default Dimensions: Validates Dimension Value exists.
- Checks if assigned Dimension Values are blocked. Warns to prevent posting issues.
4 Contact Management
4.1 Marketing Setup
- Checks if Marketing Setup record exists.
- Validates Contact Nos. series is defined. Required for creating contacts.
- Validates Campaign Nos. series for campaign numbering.
- Validates Segment Nos. series for segment numbering.
- Validates Opportunity Nos. series for opportunity numbering.
4.2 Interaction Templates
- Checks if Interaction Template records exist using IsEmpty(). Warns if none defined for interaction logging.
4.3 Interaction Groups
- Checks if Interaction Group records exist using IsEmpty(). Warns if none defined.
4.4 Contact Business Relations
- For each Contact where Type = Company with Business Relation: Validates link to Customer or Vendor table is valid.
- Suggests creating business relations for key contacts that should be customers/vendors.
4.5 Salesperson/Purchaser Codes
- Checks if any Salesperson/Purchaser records exist using IsEmpty(). Validates usage.
4.6 Campaign Setup
- For each Campaign: Checks if Campaign Target Groups exist. Warns if campaign has no targets.
- Validates Starting Date <= Ending Date. Reports error if dates inverted.
4.7 Segment Criteria
- For each Segment Header: Checks if lines/criteria defined in Segment Line table. Warns if empty.
4.8 Opportunity Setup
- Checks if Sales Cycle records exist using IsEmpty(). Required for opportunity management.
- For each Sales Cycle: Validates stages defined in Sales Cycle Stage table.
- Checks probability percentages are between 0-100%. Reports error if outside range.
4.9 Activities Setup
- Checks if Activity Code records exist. Suggests for CRM activity tracking.
5 Manufacturing
5.1 Manufacturing Setup
- Checks if Manufacturing Setup record exists.
- Validates Normal Starting Time is defined and <> 0T. Required for capacity calculations.
- Validates Normal Ending Time is defined and <> 0T. Required for capacity calculations.
- Validates Simulated Order Nos. series for simulation orders.
- Validates Planned Order Nos. series. Required for planned production orders.
- Validates Firm Planned Order Nos. series. Required for firm planned orders.
- Validates Released Order Nos. series. Required for released production orders.
- Checks Default Dampener % is set for MRP dampening.
- Checks Show Capacity In configuration. Suggests setting for capacity display.
5.2 Routing Link Codes
- For Items with Production BOM No. and Routing No.: Finds BOM Lines with Routing Link Code. Validates each link exists in Routing Line table.
- For SKUs with Production BOM No. and Routing No.: Validates routing link codes exist in routing.
5.3 Production BOM and Routing Certification
- For Items with Production BOM No.: Checks if Production BOM Header Status = Certified.
- For Items with Routing No.: Checks if Routing Header Status = Certified.
- For SKUs with Production BOM No.: Checks if BOM Status = Certified.
- For SKUs with Routing No.: Checks if Routing Status = Certified.
- For Production BOM Versions with Starting Date <= WORKDATE(): Checks for certified version using HasCertifiedActiveProductionBOMVersion().
- For Routing Versions with Starting Date <= WORKDATE(): Checks for certified version using HasCertifiedActiveRoutingVersion().
5.4 Work Center Calendars
- For each Work Center: Validates Shop Calendar Code is assigned and not empty.
- Validates Calendar Entries exist with Date >= WORKDATE(). Warns if no future capacity.
- Checks effective Capacity > 0. Required for production planning.
5.5 Machine Center Calendars
- For each Machine Center: Validates Work Center No. is assigned.
- Validates Calendar Entries exist for future dates from inherited shop calendar.
- Checks Capacity > 0 for production planning.
5.6 Capacity Constrained Resources
- For each Capacity Constrained Resource: Validates resource exists as Work Center or Machine Center based on Capacity Type.
- Checks Capacity Type is correctly set to Work Center or Machine Center.
5.7 Shop Calendar
- For each Shop Calendar: Checks if Shop Calendar Working Days exist.
- Validates Starting Time and Ending Time are defined for working days.
- Checks for future period coverage with Date >= WORKDATE().
5.8 Routing Versions
- For each Routing Version: Checks Status = Certified. Suggests certification.
- Validates Starting Date <= WORKDATE(). Warns if future-dated version is active.
- Checks for duplicate active versions with same Routing No. and overlapping date ranges.
5.9 Production BOM Versions
- For each Production BOM Version: Checks Status = Certified.
- Validates Starting Date <= WORKDATE().
- Checks for duplicate active versions with same BOM No. and overlapping dates.
5.10 Scrap Percentages
- For each Production BOM Line: Reports if Scrap % > 50%. Uses filter SetFilter(‘Scrap %’, ‘>%1’, 50).
5.11 Low-Level Code Calculation
- For Items used in Production BOMs (Type = Item in BOM Line): Checks if Low-Level Code = 0. Suggests running Calculate Low-Level Code.
5.12 Production BOM Circular References
- For each Item with Production BOM No.: Uses recursive HasCircularReference() to detect if item appears directly as component in its own BOM.
- Detects if item appears in component’s BOM creating loop. Uses visited items list to prevent infinite recursion.
5.13 Production BOM Depth
- For each Item with Production BOM No.: Recursively calculates depth using CalculateBOMDepth(). Reports if depth > 10 levels. Max recursion protection at 50 levels.
6 Warehouse
6.1 Warehouse Setup
- Checks if Warehouse Setup record exists.
- Validates Whse. Receipt Nos. series for warehouse receipt numbering.
- Validates Whse. Ship Nos. series for warehouse shipment numbering.
- Validates Whse. Put-away Nos. series for put-away document numbering.
- Validates Whse. Pick Nos. series for pick document numbering.
- Validates Internal Put-away and Internal Pick number series.
- Validates Posted Whse. Receipt Nos. and Posted Whse. Shipment Nos. series.
6.2 Location Bins
- For each Location where Bin Mandatory = Yes: Checks if bins defined by querying Bin table.
- Validates default bin assignments are configured.
- For directed put-away/pick locations: Checks Receipt Bin Code is defined and exists.
- For directed locations: Checks Shipment Bin Code is defined and exists.
- For directed locations: Checks Adjustment Bin Code is defined and exists.
6.3 Location Bin Types
- For directed put-away/pick locations: Checks if Bin Types defined using IsEmpty().
- For each Bin at directed locations: Validates Bin Type Code is assigned.
- Validates Bin Type exists in Bin Type table.
6.4 Work Center/Machine Center Bins
- For Work Centers at bin-mandatory locations: Checks To-Production Bin Code or Open Shop Floor Bin Code assigned.
- For Work Centers: Checks From-Production Bin Code is assigned.
- For Machine Centers at bin-mandatory locations: Checks To-Production Bin Code or Open Shop Floor Bin Code assigned.
- For Machine Centers: Checks From-Production Bin Code is assigned.
6.5 Warehouse Employees
- For each Location where Bin Mandatory = Yes: Checks at least one Warehouse Employee assigned.
- For each Warehouse Employee: Validates User ID exists in User table.
- Checks for Default Warehouse Employee assignment (Default = true) at location.
6.6 Transfer Routes
- For each Transfer Route: Validates Transfer-from Code exists in Location table.
- Validates Transfer-to Code exists in Location table.
- Checks In-Transit Code is defined and not empty.
- Validates In-Transit location exists and has Use As In-Transit = true.
6.7 Bin Content
- For directed locations: Checks if Bin Content records exist using IsEmpty().
- For fixed bin assignments (Fixed = true): Validates Item No. exists in Item table.
- Validates Bin Code exists in Bin table.
- Checks for duplicate Bin Content with same Item No., Variant Code, and Fixed = true.
6.8 Warehouse Templates
- For each Put-away Template Header: Checks if Put-away Template Lines exist.
- Validates line has Zone Code or Bin Type Code defined.
6.9 Warehouse Class Codes
- For each Item with Warehouse Class Code assigned: Validates Warehouse Class exists in Warehouse Class table.
6.10 Bin Rankings
- For each Location with bins: Identifies bins with Bin Ranking = 0 using filter. Suggests setting rankings for optimized put-away.
6.11 Zone Configuration
- For directed locations: Checks if Zones defined using Zone table IsEmpty().
- For each Zone: Validates Bin Type Code is assigned and not empty.
- Validates Bin Type exists in Bin Type table.
- Checks if bins exist in the zone by querying Bin table.
7 Administration
7.1 Company Information
- Checks if Company Information record exists.
- Validates Company Name is defined and not empty.
- Checks Address is defined for company identification.
- Checks City is defined.
- Checks Post Code is defined.
- Checks Country/Region Code is defined.
- Checks Phone No. is defined for contact information.
- For EU companies: Checks VAT Registration No. is defined for compliance.
7.2 Base Calendar
- For each Base Calendar: Checks if Base Calendar Changes exist.
- Suggests configuring holidays and non-working days for accurate date calculations.
7.3 Number Series
- For each No. Series: Checks if No. Series Lines exist.
- For each line: Validates Starting No. is defined and not empty.
- Validates Ending No. is defined.
- Checks if series close to exhaustion (<10% remaining) by calculating Last No. Used position.
- If Starting Date defined, validates it is logical.
- If Ending Date defined, validates logical and >= Starting Date.
7.4 Approval User Setup
- For each User Setup with approval limits: Validates User ID exists in User table.
- If Approver ID defined, checks it exists in User Setup.
- Validates approval hierarchy has no circular references by traversing Approver ID chain.
7.5 User Permission Sets
- For each User: Checks if at least one Permission Set assigned via Access Control table.
- For assigned Permission Sets: Validates they exist in Permission Set table.
7.6 Job Queue Entries
- For each Job Queue Entry (Status = Ready): Checks if Last Ready State < 24 hours. Warns if not running.
- Checks for Status = Error and reports Last Error Message.
7.7 Change Log Setup
- Checks if Change Log is activated using Change Log Setup. Suggests for audit trail.
- For G/L Entry, Cust./Vendor/Item Ledger Entries: Checks if logging enabled in Change Log Setup (Table).
7.8 Retention Policies
- Checks if Retention Policy Setup records exist using IsEmpty().
- For each policy: Validates retention period and enabled status.
7.9 User Groups
- For each User Group: Checks if users assigned via User Group Member table.
- Validates Permission Sets assigned to group via User Group Permission Set table.
7.10 Email Setup
- Checks if SMTP Mail Setup record exists.
- Validates SMTP Server is defined and not empty.
- Validates SMTP Server Port is defined and > 0.
- Checks Authentication settings are configured for secure email.
- If Authentication = true, validates User ID and Password are defined.
7.11 Document Sending Profiles
- Checks if Document Sending Profile records exist using IsEmpty().
- For each profile: Validates Printer Name if printer output configured.
- Validates E-Mail settings if email output configured.
7.12 Responsibility Centers
- For each Responsibility Center: If Location Code assigned, validates it exists in Location table.
- Checks usage in User Setup, Sales & Receivables Setup, Purchases & Payables Setup.
7.13 Workflow Setup
- Checks if any Workflows enabled (Enabled = true) using Workflow table.
- For each Workflow: Validates Workflow Rules are defined.
- Checks Workflow Steps exist in Workflow Step table.
8 Inventory
8.1 Inventory Setup
- Checks if Inventory Setup record exists.
- Validates Item Nos. series defined for item numbering.
- Validates Location Mandatory setting for inventory control.
- Checks Automatic Cost Posting setting. Suggests enabling for real-time costing.
- Checks Expected Cost Posting to G/L setting for interim posting.
- Validates Average Cost Calc. Type is defined for average costing items.
- Validates Average Cost Period is defined for average costing calculations.
8.2 Inventory Periods
- Checks if Inventory Period records exist using IsEmpty().
- For closed periods (Closed = true): Validates Ending Date is defined and not 0D.
- Checks Closed = Yes consistency for periods with ending dates.
- Identifies overlapping periods by comparing Starting Date and Ending Date ranges.
8.3 Inventory Posting Groups Usage
- For each Inventory Posting Group: Checks if used by any Item. Suggests cleanup if unused.
8.4 Item Planning Parameters
- For each Item (Type = Inventory): Checks Replenishment System is defined.
- For Reorder Point items (Reordering Policy = Fixed Reorder Qty.): Validates Reorder Point > 0.
- For Reorder Point items: Validates Reorder Quantity > 0.
- For Maximum Qty items (Reordering Policy = Maximum Qty.): Validates Maximum Inventory > 0.
- For Maximum Qty items: Validates Reorder Point < Maximum Inventory.
- For Fixed Reorder Qty items: Validates Reorder Quantity > 0.
- For Lot-for-Lot items: Suggests Lead Time Calculation for planning.
8.5 SKU Planning Parameters
- For each SKU: Performs same validations as Item Planning Parameters for Replenishment System.
- Validates Reordering Policy parameters (Reorder Point, Reorder Quantity, Maximum Inventory).
- Checks Item-level vs SKU-level planning consistency. Warns if SKU overrides item incompletely.
8.6 Item Dimensions
- For each Item with Default Dimensions: Validates Dimension Value exists.
- Checks if assigned Dimension Values are blocked.
8.7 Blocked Items with Inventory
- For each Item (Blocked = Yes): Calculates Inventory using CalcFields or Item Ledger Entry query. Reports if Inventory > 0.
8.8 Item Substitutions
- For each Item Substitution: Validates Substitute No. exists in Item table.
- Validates Substitute Type = Item.
- Checks substitute item doesn’t reference back to original creating circular substitution.
8.9 Item Unit of Measure
- For each Item: Checks at least one Item Unit of Measure exists using IsEmpty().
- Validates Base Unit of Measure exists in Unit of Measure table.
- For additional UOMs: Validates Qty. per Unit of Measure > 0.
8.10 Assembly BOMs
- For Items with Assembly BOM = Yes: Checks if BOM Component lines exist.
- For each component (Type = Item): Validates component Item No. exists.
- Checks if component is blocked. Warns blocked components prevent assembly.
- Validates Quantity per > 0 for each component.
8.11 Item Tracking Codes
- For each Item Tracking Code: Checks if SN Specific Tracking or Lot Specific Tracking enabled.
- Validates at least one tracking method configured (SN or Lot).
8.12 Item Categories
- For each Item Category: Checks if used by any Item. Suggests cleanup if unused.
- If Parent Category defined, validates it exists in Item Category table.
8.13 Costing Method Consistency
- For Items (Costing Method = Average): Calculates Inventory. Warns if zero or negative.
- For Items (Costing Method = Standard): Validates Standard Cost > 0.
8.14 Negative Inventory Settings
- For each Item (Prevent Negative Inventory = No): For each Location (Prevent Negative Inventory = Yes): Reports configuration conflict.
8.15 Item Templates
- For each Item Template (Config. Template Header, Table ID = Database::Item): Checks if Template Lines exist.
- Validates template has key fields like Item Type, Costing Method, Gen. Prod. Posting Group.
8.16 Unused Items
- For each Item: Checks Last Date Modified and Item Ledger Entries in last 2 years (Entry Date >= WORKDATE() – 730).
- Reports items with no activity. Suggests reviewing for obsolescence or archiving.
8.17 Lead Time Calculations
- For Items (Replenishment System = Purchase): Checks if Lead Time Calculation defined using Format().
- For Items without Lead Time: Queries Item Vendor for vendor-specific lead times.
8.18 Required Dimensions
- For Global Dimension 1 and 2 Codes: Checks if marked as mandatory using Dimension table.
- For Customer, Vendor, Item: Validates required dimensions assigned via Default Dimension (Value Posting = Code Mandatory).
9 Fixed Assets
9.1 Fixed Asset Setup
- Checks if Fixed Asset Setup record exists.
- Validates Fixed Asset Nos. series for FA numbering.
- Validates Insurance Nos. series for insurance policy numbering.
- Checks Default Depr. Book is assigned for FA transactions.
9.2 FA Depreciation Books
- Checks if Depreciation Book records exist using IsEmpty().
- For each Depreciation Book: Validates G/L Integration settings (Acq. Cost or Depreciation integration).
- Checks depreciation posting setup is defined.
9.3 FA Posting Groups Usage
- For each FA Posting Group: Checks if used by any Fixed Asset via FA Depreciation Book table.
9.4 FA Classes and Subclasses
- For each FA Class: Checks if used by any Fixed Asset.
- For each FA Subclass: Validates Parent FA Class exists.
- Checks if FA Subclass used by any Fixed Asset.
9.5 FA Locations
- For each FA Location: Checks if used by any Fixed Asset by querying Fixed Asset table filtered by FA Location Code.
10 Jobs & Resources
10.1 Job Posting Groups
- For each Job Posting Group: Validates WIP Costs Account is defined.
- Validates WIP Accrued Costs Account is defined.
- Validates WIP Accrued Sales Account is defined.
- Validates Job Costs Applied Account is defined.
- Validates Job Sales Applied Account is defined.
- Validates Recognized Costs Account is defined.
- Validates Recognized Sales Account is defined and all accounts exist and not blocked.
10.2 Job WIP Methods
- Checks if Job WIP Method records exist using IsEmpty().
- For each method: Validates Recognized Costs and Recognized Sales fields.
- Checks method is assigned to jobs by querying Job table.
10.3 Resource Setup
- Checks if Resource Setup record exists.
- Validates Resource Nos. series for resource numbering.
- Validates Time Sheet Nos. series for time tracking.
- Validates Time Sheet First Weekday setting.
10.4 Resource Groups
- For each Resource Group: Checks if resources assigned by querying Resource table filtered by Resource Group No.
- Validates Unit Cost and Unit Price are defined for group-level pricing.
10.5 Resource Dimensions
- For each Resource with Default Dimensions: Validates Dimension Value exists.
- Checks if assigned Dimension Values are blocked.
11 Service Management
11.1 Service Management Setup
- Checks if Service Management Setup record exists.
- Validates Service Item Nos. series for service item numbering.
- Validates Service Quote Nos. series.
- Validates Service Order Nos. series for service order numbering.
- Validates Service Invoice Nos. series.
- Validates Posted Service Invoice Nos. series.
- Validates Service Contract Nos. series.
- Validates Contract Quote Nos. series.
- Validates Loaner Nos. series for loaner item numbering.
11.2 Service Contracts
- For each Service Contract Header: Validates Customer No. exists in Customer table.
- Checks Contract Lines exist in Service Contract Line table.
- For active contracts: Validates Annual Amount > 0.
- Checks Starting Date <= Expiration Date. Reports error if inverted.
11.3 Service Items
- For each Service Item: Validates Customer No. exists in Customer table.
- Checks Item No. is defined for product linkage.
- If Item No. specified, validates it exists in Item table.
- Validates Service Item Group Code is assigned.
- If Service Item Group specified, validates it exists.
11.4 Service Pricing
- For Service Items with Service Price Adjustment Group: Checks if Service Costs exist in Service Cost table.
- Validates pricing configuration is complete for automatic price determination.
11.5 Loaner Items
- For each Loaner: Checks if Item No. is assigned (Item No. <> ”).
- If Item No. specified, validates Item exists in Item table.
11.6 Service Tasks
- Checks if Service Task records exist using IsEmpty(). Suggests for standardizing service work.
11.7 Service Order Types
- Checks if Service Order Type records exist using IsEmpty() for categorizing service work.
11.8 Service Hours
- For each Service Hour entry: Validates Starting Time < Ending Time.
- Checks for overlapping time ranges by finding other Service Hour records with conflicting times.
11.9 Repair Status Codes
- Checks if Repair Status code records exist using IsEmpty().
- Validates Initial status code is defined for new service items.
- Validates In Process status code is defined for active repairs.
- Validates Finished status code is defined for completed repairs.
12 Data Quality
12.1 Table Relationship Integrity
- For each Customer: If Currency Code <> ”, validates it exists in Currency table.
- Validates Payment Terms Code exists in Payment Terms table.
- Validates Payment Method Code exists in Payment Method table.
- Validates Customer Posting Group exists.
- Validates Gen. Bus. Posting Group exists.
- Validates VAT Bus. Posting Group exists.
- If Salesperson Code assigned, validates it exists.
- For Vendor: Validates Currency Code, Payment Terms, Payment Method, Vendor Posting Group, Gen. Bus. Posting Group, VAT Bus. Posting Group, Purchaser Code.
- For Item: Validates Base Unit of Measure, Inventory Posting Group, Gen. Prod. Posting Group, VAT Prod. Posting Group, Item Category Code, Item Tracking Code.
12.2 Orphaned Records
- Checks Sales Lines without corresponding Sales Header by validating Document Type and Document No. combination.
- Checks Purchase Lines without corresponding Purchase Header.
- Checks Default Dimensions without master record by validating Table ID and No. combination.
- Checks Extended Text Lines without Extended Text Header.
12.3 Duplicate Records
- Finds customers with same Name using GROUP BY Name HAVING COUNT(*) > 1.
- Finds customers with same VAT Registration No. (where <> ”).
- Finds customers with same Email (where <> ”).
- Finds vendors with same Name using grouping query.
- Finds vendors with same VAT Registration No.
- Finds items with same Description. Suggests review for potential duplicates.
12.4 Inactive Masters
- Finds customers with no Cust. Ledger Entries in last 2 years (Posting Date >= WORKDATE() – 730).
- Finds vendors with no Vendor Ledger Entries in last 2 years.
12.5 Missing Critical Data
- For each Customer: Checks if both E-Mail and Phone No. are empty. Warns critical contact info missing.
- For EU customers (Country/Region Code in EU): Checks VAT Registration No. is missing.
- Checks Address, City, Post Code completeness for invoicing and shipping.
- For each Vendor: Checks if both E-Mail and Phone No. are empty.
- Checks Bank Account information missing (Bank Account No., Bank Branch No.).
12.6 Inconsistent Posting Groups
- For Customer: Checks Gen. Bus. Posting Group matches pattern. Validates Customer Posting Group exists and used in GL setup.
- For Vendor: Checks Gen. Bus. Posting Group matches pattern. Validates Vendor Posting Group exists and used in GL setup.
- For Item: Checks Gen. Prod. Posting Group matches pattern. Validates Inventory Posting Group exists and used in GL setup.
12.7 Search Names
- For Customers where Search Name = ”: Suggests setting Search Name for better search functionality.
- For Vendors where Search Name = ”: Suggests setting Search Name.
- For Items where Search Description = ”: Suggests setting Search Description for alternative search terms.

