Import Builder/Guides/Property management data migration
Property management

Moving Tenant and Lease Data to New Property Management Software

Switching software means moving every property, unit, owner, tenant and lease in one go, and the first month's rent charges come straight from that file. Here's the order to do it in, the mistakes that get rows rejected, and what DoorLoop, Buildium and TenantCloud each expect.

Import in this order

Each layer refers to the one before it: a lease belongs to a unit, which belongs to a property. Buildium won't accept tenants and leases until their properties exist, and recommends properties first, then people, then financial transactions. Other systems work the same way, even when they take everything in one spreadsheet.

  1. 1Properties and units. Names, addresses, property types and every unit, including vacant ones.
  2. 2Owners. Who owns each property, and their share. Each owner needs a company name or a first and last name.
  3. 3Tenants and leases. Who lives in each unit, lease dates, rent, deposits and recurring charges.
  4. 4Balances. What each tenant owes or has prepaid on the day you switch, plus deposits held.

Check each import before confirming it. Buildium warns that there's no going back once you've imported, so a mistake means fixing records one by one.

Start from a clean rent roll

Most of a migration is your rent roll in a stricter shape. Use one row per unit, not per tenant or per property, and keep a row for every vacant unit with its lease columns blank. When two people share a lease, put them in the same row: DoorLoop has columns for a second tenant, and TenantCloud takes several names in one cell, separated by commas.

Past tenants and old leases usually don't belong in the first import. Move current leases first, so rent charges start on the right day, and bring history in later if the new system supports it.

Why rows get rejected, and the fix

The address can't be found

TenantCloud only accepts addresses it can locate on Google Maps. Split the street, city, state and zip code into their own columns, and spell out the street as the post office does.

Units are missing on multi-family properties

Use one row per unit, with the same property name and address on each. TenantCloud expects the unit number to be blank for a single-family home and filled in for every unit in a multi-family building.

Dates are read the wrong way round, or not at all

Pick one format for the whole file. US systems read 04/05/2026 as April 5. Leave the lease end date blank for a month-to-month lease rather than writing month-to-month in a date column. CSV date formatting guide.

Rent and deposits aren't numbers

Write 1600 or 1600.00, not $1,600/mo or 1600 + pet fee. Put other charges in their own columns, which DoorLoop's template has for two recurring charges and one one-time charge. Strip currency symbols guide.

A dropdown value doesn't match

Property types and rent frequencies only accept the system's own values. DoorLoop wants RESIDENTIAL_MULTI_FAMILY and Every2Weeks, not Apartment building and Biweekly. Bank account names must match the account list exactly.

Owners don't add up to 100%

DoorLoop requires the ownership percentages for a property to total 100. Check it per property before you send the file, as a one-owner property listed at 50% is a common slip.

Zip codes lose their leading zero

Excel turns 02134 into 2134. Keep zip codes, unit numbers and account numbers as text. Excel leading zeros guide.

The same tenant appears twice

TenantCloud asks whether to create a new record or add to the existing one when it finds a duplicate. Remove duplicates before importing rather than deciding row by row. CSV duplicate rows guide.

The file is too big, or has extra columns

TenantCloud imports up to 500 rows at a time and ignores columns that aren't in its template. Split large portfolios into batches and map every column you need.

How each system takes your data

Some systems have a self-serve import, and others have their onboarding team load a spreadsheet for you. Either way, the columns are theirs, so get the template before you start collecting.

DoorLoop

A migration spreadsheet with tabs for bank accounts, properties, owners and vendors. Upload it in Getting Started (recommended over 10 units) or email it to the onboarding team, who usually finish in 3 to 5 business days. DoorLoop template.

Buildium

Self-serve import under Settings, then Import data. Download the template for each data type from the upload window; required fields are marked with an asterisk. Import properties first, then people, then financial transactions.

TenantCloud

Self-serve import of properties, tenants and leases together from .csv, .xls or .xlsx, up to 500 rows at a time. Map your columns, then fix rows on the Validation step or import only the valid ones.

Rentec Direct

Their staff import your data for portfolios of 25 or more properties, from an Excel template you email back. Don't change its column headers.

AppFolio, Rent Manager and others

We couldn't find a public import template. Ask your onboarding contact for theirs early, and collect your data in its columns from the start.

Before you send the file

Every unit has a row, including vacant ones
Property names and addresses are identical on every row of the same property
Lease dates are in one format, and month-to-month leases have no end date
Rent, deposits and charges are plain numbers
Dropdown values are copied from the template, not typed from memory
Ownership percentages add up to 100 for every property
Every leased unit has a tenant email and phone number
No duplicate tenants or units
Balances are as of the day you switch, not the day you exported

Collect the rent roll in the new system's format

Paste your old rent roll into a form with the new system's columns. Dates, amounts, emails and dropdown values are checked as you go, so the file is right before it's imported. Data is checked in the browser and never stored by us.