Fix NetSuite Midlife Asset Import: Cumulative
Fix NetSuite Midlife Asset Import: Retain Depreciation History – Enable CSV Import Assistant's Advanced Option to Keep Accurate Totals.

On this page
When you import midlife fixed assets into NetSuite and run Precompute Depreciation Values, the Cumulative Depreciation, Last Depreciation Date, and Last Depreciation Period fields stay blank or reset to zero. The asset record looks correct on the surface, acquisition cost, NBV, and depreciation method all populate, but the depreciation engine has no history to work from. This happens because the CSV import process, combined with server script execution, overwrites the historical depreciation values you carefully mapped. Here's how to structure the import so NetSuite actually retains the cumulative totals and continues depreciating from the right point.
The Preference Setting That Silently Overwrites Your Data
The CSV Import Assistant includes an advanced option that controls whether server SuiteScripts and workflows fire during import. If enabled, the fixed asset depreciation scripts recalculate Cumulative Depreciation from zero because they don't see the depreciation history records yet, they only see the asset header. Your imported cumulative total gets wiped to 0, and Last Depreciation Date/Period go blank.
On the Import Options page of the CSV Import Assistant, expand Advanced Options and uncheck:
- Run Server SuiteScript and Trigger Workflows
This setting defaults to your company preference but can be changed per import job. Disable it for midlife asset imports so the depreciation engine doesn't run prematurely.
If you leave this box checked, NetSuite executes the asset depreciation scripts during import. Those scripts recalculate Cumulative Depreciation from zero because they don't see the depreciation history records yet, they only see the asset header. The result: your imported cumulative total gets wiped to 0, and Last Depreciation Date/Period go blank.
Import Sequence: Three Records, Strict Order
Midlife assets require three distinct record types imported in this exact sequence. Skipping a step or reversing the order breaks the depreciation chain.
1. Asset Header Record (Fixed Asset)
Import the asset master record first. Include these critical fields for midlife assets:
| CSV Column | Field ID | Purpose |
|---|---|---|
| Asset Name | name | Unique identifier |
| Subsidiary | subsidiary | Required for multi-sub environments |
| Asset Type | assettype | Links to depreciation method |
| Asset Status | assetstatus | Use "In Use" for active depreciation |
| Asset Lifetime (Months) | depreciablelife | Total useful life |
| Original Cost | assetorigcost | Purchase price |
| Current Cost | assetcurrcost | Typically equals Original Cost unless impaired |
| Residual Value | salvagevalue | Salvage at end of life |
| Depreciation Start Date | deprstartdate | Original acquisition date |
| Last Depreciation Date | lastdeprdate | Most recent depreciation run date |
| Last Depreciation Period | lastdeprperiod | Period number within asset life |
| Last Depreciation Amount | lastdepramount | Amount taken in that last period |
| Current NBV | nbv | Net book value as of import date |
| Depreciation Active | depractive | Set to TRUE |
The three bolded fields are what Precompute Depreciation Values reads to determine where to resume. If they're zero or blank, the engine assumes the asset hasn't depreciated yet.
2. Asset Acquisition History Record (Depreciation History)
This record establishes the acquisition event. Import using the Depreciation History record type with Transaction Type = "Acquisition."
| CSV Column | Field ID | Value |
|---|---|---|
| DHR Name | name | Unique name (e.g., "ACQ-Asset001") |
| Asset Name | asset | Internal ID or name matching header |
| Subsidiary | subsidiary | Same as header |
| Asset Type | assettype | Same as header |
| Transaction Type | transactiontype | Acquisition |
| Date | trandate | Acquisition date (matches Depreciation Start Date) |
| Transaction Amount | amount | Original Cost (positive) |
| NBV | nbv | Original Cost (same as amount for acquisition) |
| Prior Year NBV | prioryrnbv | 0 for first year, or prior year-end NBV |
| Depreciation Period | deprperiod | 0 (acquisition is period 0) |
| Accounting Book | accountingbook | Primary book internal ID |
| Depreciation Method | deprmethod | Internal ID of method |
3. Accumulated Depreciation History Record (Depreciation History)
This is the record most imports miss. It tells NetSuite "this much depreciation has already been taken." Transaction Type = "Depreciation."
| CSV Column | Field ID | Value |
|---|---|---|
| DHR Name | name | Unique name (e.g., "DEPR-Asset001-2024-06") |
| Asset Name | asset | Same as header |
| Subsidiary | subsidiary | Same as header |
| Quantity | quantity | 1 (or asset quantity) |
| Accounting Book | accountingbook | Primary book internal ID |
| Asset Type | assettype | Same as header |
| Transaction Type | transactiontype | Depreciation |
| Transaction Amount | amount | Cumulative depreciation to date (positive) |
| NBV | nbv | Current NBV (Original Cost − Cumulative Depreciation) |
| Prior Year NBV | prioryrnbv | NBV at start of current fiscal year |
| Depreciation Period | deprperiod | Last Depreciation Period number (matches header) |
The Depreciation Period on this record must match the Last Depreciation Period on the asset header. If the asset has depreciated for 18 months, this field is 18. The Transaction Amount is the cumulative total through that period, not just the last month's amount.
Running Precompute Depreciation Values
After all three imports complete successfully:
- Go to Fixed Assets > Processing > Precompute Depreciation Values
- Select the subsidiary and accounting book
- Set From Period to the period after your Last Depreciation Period
- Set To Period to the current open period
- Click Submit
NetSuite will now calculate depreciation starting from the next period. Open the asset record and verify:
- Cumulative Depreciation = your imported cumulative total + new computed amounts
- Last Depreciation Date = end date of the last computed period
- Last Depreciation Period = last computed period number
- Current NBV = Original Cost − updated Cumulative Depreciation
Common Failure Patterns
| Symptom | Root Cause |
|---|---|
| Cumulative Depreciation = 0 after Precompute | CSV import preferences overwrote header fields; re-import with preferences off |
| "Asset may not depreciate" warning on record | Last Depreciation Date or Period is blank or invalid |
| Depreciation starts from period 1 instead of period 19 | Accumulated Depreciation history record missing or Period mismatch |
| Double depreciation in first computed run | Acquisition history record amount doesn't match Original Cost, or Depreciation history amount doesn't match Cumulative Depreciation |
Verification Checklist Before You Compute
- [ ] Run Server SuiteScript and Trigger Workflows unchecked on the import job
- [ ] Asset header shows correct Last Depreciation Date, Period, and Amount
- [ ] Acquisition history record exists with Transaction Type = Acquisition, Period = 0
- [ ] Depreciation history record exists with Transaction Type = Depreciation, Period = last actual period
- [ ] Cumulative depreciation on header = Transaction Amount on depreciation history record
- [ ] NBV on header = Original Cost − Cumulative Depreciation
- [ ] All three records share the same Asset Name, Subsidiary, Asset Type, and Accounting Book
What to Do If You Already Imported With Preferences On
You don't need to delete the assets. Re-import just the Asset Header record (Fixed Asset type) with the correct Last Depreciation Date, Last Depreciation Period, Last Depreciation Amount, and Current NBV, preferences still unchecked. The history records remain intact. Then run Precompute again.
NetSuite's fixed asset module is strict about the chain: header dates must match history periods, and cumulative totals must reconcile across all three records. Break one link and the engine resets. Keep the chain intact and Precompute does exactly what it's designed to do, pick up where your legacy system left off.


