I want to see Hafeez replaced with Hussain Talat.
Have fakhar and azhar opening, Babar at 3, sarfraz at Malik at 5, and Talat at 6.
I wouldn't mind trying Talat out, we have a dearth of middle order talent which can score quickly, hence we put up with umar akmal so much as of late despite repeatedly failing fitness tests. Rizwan isn't good enough against spin either, and not a particularly good hitter.
Personally I feel like Azhar has no future in ODIs, not much has changed for me, and an anchor type player isn't needed, as I've said in the past, most batsmen scored from out team in the CT at a quicker rate than Azhar.
Hafeez despite meeting doing well average and SR wise at CT and the past WI tour, his form looks shaky, poor starter and has benefited from a bit of luck (though the CT performance was great take nothing away from that). Just watching him, an extended run, don't think he'll keep it up looks past it. His bowling also seems worse than before and with the rise of Imad, Hafeez offers less to the team. I don't see him being of any use in 2019. Malik despite having a poor CT in general looks in better form, and I feel is a better bet than Hafeez for WC 2019.
I think I'd play
1. Haris Sohail (I believe he has the game to open. Babar could open instead, but think they want to leave him at three)
2. Fakhar
3. Babar
4. Malik
5. Sarfraz
6. Talat
7. Imad
8. Shadab
9. Amir
10. Hasan
11. Junaid