Did you look into Dynamics 365 Field Service? Sounds like this could solve your challenge.