This is what I spend the majority of my time on: building web apps for internal clients who are used to a DOS type interface.
It will be a major paradigm shift for your users. There is no going around that. And, no, you will probably not be able to both make something new that doesn't require a lifetime to master the arcane commands AND keep all the keyboard shortcuts.
But, and here's the good thing, you don't need to. Now they won't have to remember that if they want to find a client's phone number from an order screen they have to first press 5 then 3 then 1.
(On "DOS" type screens you use numbers, or the TAB key, to go to a new screen as opposed to using a mouse)
Now your users can have the client name link directly to relevant information (phone number(s), email, address, and what-have-you). They will not need to remember the path, nor need macros to speed up the process. The information is now in the context of the screen. Should they need to know more about the client they click on the client name, and there it is.
You will have the fun (and challenge) of working out a system from scratch. I recommend you take an iterative approach as you will not make the perfect system the first time through.
The one pitfall to avoid (the same as all UX) is to not focus on what users say they want. You need to pay attention to what they are trying to do and their pain points.
I know I'm preaching to the converted here but the point needs to be made because many users will say they want EXACTLY what they had before, except for it look better, work better, etc... You cannot give them EXACTLY what they had before and have it work better. It will work the same.
Example: I had users say they wanted, no NEEDED, a drop-down with the following options
and they wanted it in that order.
The users were stuck in their mindset of a limited utility on a small screen.
I gave them three toggle buttons:
[A] [B] [C]
Now they can select and change their choice with ease. The users loved the change.