Intro:

Exchange 2003 or 2007 is so old that detailed instructions would only be useful to resurrected dinosaurs. Thus, I only scribble a couple of words here for entertainment purposes. Blame Google for getting you here if production materials have been your intended search. Check out this current stuff for something more helpful.

Prepping:
Obtain Credentials for on premise Exchange (Enterprise Admin) and O365 (Global Admin)
Disable Unified Messaging (UM)

Add domain(s):
Sign into Office 365 as a Global Admin > Setup > Domains > Manage Domains > Add Domain with the + sign > select Specify a domain name and confirm ownership > input the domain name (e.g. kimconnect.com) > Next > choose TXT record method > Next > obtain information provided by wizard > create/edit TXT record at the registrar > wait 15 minutes for propagation > click Done > click Verify Now > Finish

Create migration endpoints:
EAC > Recipients > Migration > click on the “…” > Migration endpoints > click on the + sign > choose Outlook Anywhere > Next > set Email Address, Account with privileges, Password of account with privileges > Next > Confirm the migration endpoint settings (FQDN of the on premise Exchange server, RPC proxy server) > Next > input an endpoint name (e.g. Office 365 to Exchange connector) > New

Create stage migration batch:
Make CSV file in this format with a limit of 2000 lines (excluding header 1st row):

EmailAddress,Password,ForceChangePassword
[email protected], somePassword, False
[email protected], anotherPassword, False

Perform the deed:
EAC > Recipients > Migration > click on + > Migration to Exchange Online > Next > Browse > select CSV file > OK > Next > Next > input the name of the batch > Next > choose Automatically start the batch > New > navigate to Migration dashboard page for statuses

Convert on-premise mailboxes to mail-enabled users:
Clicky here… clicky there.. done.

Route emails directly to Office 365:
Set MX records toward Office 365… EZ.

Post migration tasks:
Delete Staged migration batch(es). I use the ‘delete’ button. Yup, that’s it.

Source: https://learn.microsoft.com/en-us/exchange/mailbox-migration/perform-a-staged-migration/perform-a-staged-migration