# Dynamics AX Customization Inventory Worksheet

> Source: https://netray.co/tools/ax-customization-inventory-worksheet
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: Free Tools

## Short answer

Editable inventory of AX customizations with layer, disposition and rework estimate per object, totaled for upgrade planning.

## Category

microsoft-dynamics

## Erp

Microsoft Dynamics AX 2012

## Audience

- AX developer
- ERP project manager
- Solution architect

## Tool

**Kind:** worksheet

**Mode:** editable

**Columns:**

#### AOT object

**Key:** object

**Type:** text

#### Type

**Key:** type

**Type:** select

**Options:**

- Class
- Form
- Table
- Report
- Workflow
- Menu item
- Batch job
- Service or AIF
- Other

#### Module

**Key:** module

**Type:** select

**Options:**

- General ledger
- Accounts payable
- Accounts receivable
- Inventory
- Production
- Sales
- Procurement
- Project
- Other

#### Layer

**Key:** layer

**Type:** select

**Options:**

- CUS
- USR
- VAR
- BUS

#### Business purpose

**Key:** purpose

**Type:** text

#### Lines of code

**Key:** loc

**Type:** number

#### Rework factor (1 low, 3 high)

**Key:** factor

**Type:** number

**Help:** Overlayering depth, dependencies and test effort.

#### Estimated hours

**Key:** hours

**Type:** number

**Expr:** loc / 100 * 4 * factor

**Format:** number

#### Disposition

**Key:** disposition

**Type:** select

**Options:**

- Retire to standard
- Extension
- Rebuild
- ISV replacement
- Undecided

**Rows:**

**Object:** SalesFormLetter_Invoice

**Type:** Class

**Module:** Sales

**Layer:** CUS

**Purpose:** Adds customer-specific invoice posting checks

**Loc:** 420

**Factor:** 2

**Disposition:** Extension

**Object:** CustTable

**Type:** Table

**Module:** Accounts receivable

**Layer:** CUS

**Purpose:** Extra credit approval fields

**Loc:** 60

**Factor:** 1.5

**Disposition:** Extension

**Object:** InventOnHandReport

**Type:** Report

**Module:** Inventory

**Layer:** USR

**Purpose:** Warehouse location stock report

**Loc:** 300

**Factor:** 1

**Disposition:** Rebuild

**Object:** ProdBOMCustomExplode

**Type:** Class

**Module:** Production

**Layer:** VAR

**Purpose:** Custom BOM explosion for configured products

**Loc:** 1250

**Factor:** 3

**Disposition:** Rebuild

**Object:** EDI850ImportBatch

**Type:** Batch job

**Module:** Sales

**Layer:** CUS

**Purpose:** Imports customer purchase orders from EDI

**Loc:** 780

**Factor:** 2.5

**Disposition:** Rebuild

**Object:** VendTableOldApprovalFlow

**Type:** Workflow

**Module:** Procurement

**Layer:** CUS

**Purpose:** Vendor approval now covered by standard workflow

**Loc:** 200

**Factor:** 1

**Disposition:** Retire to standard

**Totals:**

#### Total lines of code

**Key:** loc

**Agg:** sum

**Format:** integer

#### Total estimated hours

**Key:** hours

**Agg:** sum

**Format:** integer

#### Objects listed

**Key:** object

**Agg:** count

**Format:** integer

**Summary:**

#### Average hours per object

**Key:** avg_hours

**Expr:** sum_hours / count

**Format:** decimal

#### Cost at 95 per hour

**Key:** cost_at_rate

**Expr:** sum_hours * 95

**Format:** currency

**Notes:** The estimate uses four hours per 100 lines of code multiplied by your rework factor, a rough planning rule you should replace with your own history. Objects dispositioned as Retire to standard should be set to a factor of zero so they drop out of the estimate. Pull counts and line counts from a code compare or your source control, not from memory.

## Content

**Intro:** Before anyone can price an AX 2012 to D365 move, someone has to know what is actually customized. This worksheet gives developers and architects a structured way to list objects, decide what happens to each and total the effort.

**Sections:**

#### How to use the worksheet

**Body:** Export object names and layers from the AOT or a code comparison, then list one row per object. Choose the type, module and layer, describe the business purpose in plain words, and enter lines of code. Set a rework factor from 1 for simple to 3 for deeply overlayered code. Pick a disposition for each row. Review the list with business owners so that objects with no clear purpose are challenged, since those are the cheapest to retire.

**Bullets:**

- One row per object, not per project
- State the purpose in business terms
- Challenge anything without an owner
- Set factor to zero when retiring to standard

#### Disposition options

**Body:** Retire to standard means D365 handles the need with standard features or configuration. Extension means the behavior is kept and re-written using the D365 extension model, since overlayering is not available. Rebuild means the design is changed, often as a new extension, service or a Power Platform component. ISV replacement means a third-party product covers it. Undecided rows are a risk, so aim to clear them before you finalize a budget.

#### Reading the totals

**Body:** The hours total gives a developer-side estimate that you can feed into the upgrade effort estimator. The average hours per object helps you sanity check against your own experience. Look at the distribution: a few large rows, often in production or pricing, usually account for most of the effort. Those are where fit-gap workshops pay back. Compare the count of retire candidates with the total to see how much simplification is realistic.

#### Common mistakes

**Body:** Counting only forms and forgetting tables, batch jobs, SSRS reports, AIF ports and workflows is the most frequent error. Another is listing objects by how they were named rather than what they do, which hides duplicates. Do not copy a rework factor of one across the board, as that makes the estimate look low. Update the worksheet as decisions are made so it stays the single source of truth for the project.

**Cta:** If you want help identifying which AX customizations map to standard D365 features, we can review your inventory with you. Optional.

**Faq:**

#### How do I get a list of AX customizations?

**Answer:** Use the AOT, a code compare tool or your source control to list objects in the CUS, VAR and USR layers. Microsoft also offers code upgrade tooling for analysis. Combine it with interviews so each object has a business purpose.

#### Why does D365 need customizations rewritten?

**Answer:** D365 Finance and Operations does not allow overlayering of standard code. Changes are made through extensions, events and new models, so most retained customizations must be rewritten rather than moved.

#### What rework factor should I use?

**Answer:** Use 1 for simple, isolated objects, around 2 for moderate dependencies, and 3 for deeply overlayered code with many touch points. Replace the rule of thumb with your own historical hours as soon as you have a pilot result.

#### Can I send the inventory to a partner?

**Answer:** Yes. Export to Excel and share it. A well-formed inventory with purposes and dispositions typically shortens a partner's assessment and gives you a more reliable quote.

## Search terms

ax customization inventory, dynamics ax 2012 customizations list, ax 2012 code upgrade worksheet, ax to d365 customization analysis, ax layer cus var usr, ax customization inventory template, dynamics ax technical debt

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
