Most stacks work. There is usually one join that was never built, and a workaround has quietly stood in for it ever since.
A temporary spreadsheet bridging two systems tends to outlive the person who created it. New staff are trained on the workaround as though it were the process, and after a year or two nobody remembers it was ever meant to be temporary. The cost is real but distributed, a few minutes at a time, which is exactly why it never reaches anyone's priority list.
We build the missing join using the interfaces those tools already expose, then retire the workaround properly rather than leaving both running. Nothing else in your stack moves. Because the scope is a single connection, the timeline stays short and the first invoice stays small, which makes it a reasonable place to test whether working together is worth continuing.
Across 10 properties in 4 countries, 11 hours of manual entry a month stopped being anyone's job.
Closing the month went from several days to about 40 minutes, built over four weeks.
If a spreadsheet sits between two systems, that spreadsheet is a specification for the fix.