How is he leading? IME horses that don't like to move their shoulder can be quite pushy while you lead them as well.
If he is indeed pushy you can remedy it quite easily. Since it's a lot easier to see, here is one way I work with a pushy horse.
With leading down he should know how to flex.
If he doesn't know this, stand just behind his withers, with a halter and lead on him (I prefer rope halters, much more difficult for a horse to lean and brace on them) and put gentle pressure on the halter, guiding out to the side a bit. He'll likely walk around in circles, just keep that steady pressure, and don't try to pull him in, let him figure out how to get off that pressure. When she stands and gives, you give to. At first don't ask for him to bend around much until he gets it.
When he is good on both sides you can move to disengaging his hindquarters. With his head bent around he is more likely to move away to balance himself.
You can go about this with a variety of tools, most simply the end of a leadrope and the process is the same no matter the tool.
Bend his head a bit and stand back out of kicking range. Kiss/ smooch first (verbal cue to move) then twirl your leadrope, twirl the leadrope closer so it taps him on the bump, twirl harder for more pressure until you're really whacking him is need be.
Don't think of it as hitting your horse if it gets you upset. Think of it as "I am the lead mare and this is my space." He is the one choosing to stand there and get hit. If he moved it wouldn't be doing a thing.
Alternatively, some horses are just really dead to a physical cue because they have figured out if they just stand there the person will eventually give up.
If you horse is like this you can find something else. Plastic bags on a training stick usually works wonders. If you don't have a training stick you can get inventive, have a plastic broom or something similar and it will work fine. It doesn't have to be a plastic bag, just something small and convenient that moves and makes noise. On a ridiculously dull horse i've used opening an umbrella quickly to get the job done.
Instead of touching him you'll be using the sight and noise to get him moving. When he moves his butt over, take the pressure away. At first you just want him sensitized to it, if there is a little bit of worry over it, for now it's fine. Use that to your advantage. You can always go back later on and desensitize but he does NOT need that now.
When he's sensitized to that then you can go back and incorporate a whip. Cluck, then use the whip then the noise. This is to teach him that he always have a chance to move off a lighter cue ( and a more convenient one in your case).
Then comes the shoulder. Do not try and push him, he's stronger. Instead, position your hands where all your fingertips touch him on his jaw and midway down his neck. Press, then press your nails in. The smaller surface area will provide more pressure for him to want to move. If he is very dull there, use motion again. With an open palm make quick hand movements toward his eye without touching him. Horses are protective of their eyes and he will want to move out of the way, thus moving his shoulder around. Then you can go back and do the same thing you did on his hind end to get him to move off a physical cue.
Don't worry about him getting headshy. Horses understand the difference between passive and active body language.
When you can move him around, then you can go about lunging him.
Take one hand and use it to direct his feet, if you want him to go clockwise, your right hand should lift to shoulder straight straight out. You want your lunge line short enough that this puts light pressure on his halter.
Then in your left hand use a lunge whip/ the plastic bags etc ( whatever he is sensitive to) and put pressure at his shoulder. FIRST he needs to move his front end away so then he CAN go forward on a circle. Get in there and put pressure on him until he moves out.
Don't keep a death grip on the lunge line in your right hand. If he suddenly lurches forward you won't want to accidentally bump him to a stop. As soon as he takes one forward step. Release. For now all you're saying is move your shoulder out of my space ( which he knows to do) and go forward.
It doesn't matter how long he goes for now, even if it's just a step. Build on this until he gets that you want him to move out, always starting with a light cue and building up.
It doesn't matter if it's a pretty circle at this point, you just want him to go. You may be walking all over the arena at first which is fine. If instead of going forward he runs backwards, just keep the same amount of pressure that you had on him and go with him until he takes a step forward then release.
Later on when he gets move forward, then you can dictate the speed. If you want a trot, ask for it until it happens then quit asking. When he breaks to a walk ask again. This will teach him to maintain that speed.
Once he gets go forward you can work on if he's lugging on the halter. A quick firm bump every time he leans will do the trick.
To stop and change directions I take the slack out of the line, walk in toward the hip and put pressure on it, if he's good at moving his hindquarters he'll do just that which if what you want. If he doesn't just bump his nose to you and continue to put pressure on his butt until he does.
Then send him off the other way. Keep in mind, none of that will transfer to the other side, you are pretty much teaching a new horse.
I always use a vocal cue first. This is easy for it to transfer under saddle, so all of this will help there as well.
When you want him to move back out of your space it should be easy, he'll have a good understanding of how to move off of pressure.