Make the list before anything moves
Get every address on the current site, from the sitemap and from Search Console, and put it in a spreadsheet. Beside each one, write the address it becomes on the new site. That spreadsheet is the whole job, and everything that goes wrong later is a row nobody filled in.
Pay attention to the pages that already bring visitors. Search Console tells you which ones those are. Those rows are the ones worth checking twice.
Redirect one for one
Each old address sends visitors and search engines to the page that replaces it: the town page to the new town page, the service page to the new service page. Done that way, the history that address built up follows it across.
The move that goes wrong sends everything to the home page. Google reads that as the old page being gone rather than moved, the history stops there, and forty pages of history become one line of nothing.
Leave the redirects up permanently. They cost nothing to keep and something is always still pointing at an old address years later.
Keep the words
Move the pages before you rewrite them. If the address changes and the content changes on the same day and something drops, you can't tell which one did it, and you'll spend a month guessing.
Get the move settled first, watch for a few weeks, then improve the pages. It's slower and it's the version where you know what happened.
Tell Google, then watch
If the web address itself is changing, use the change of address tool in Search Console. If only the pages are moving inside the same address, the redirects do the talking and there's no tool to press.
Then watch the page indexing report and your visits for a few weeks. A dip is normal while Google reprocesses a few hundred pages. A dip that keeps going usually traces back to a row in that spreadsheet nobody filled in.