Place ham hocks, stock water, onion, celery and bay leaf in a large pot. Bring to a simmer, skim foam, cover partly and simmer gently for 2 to 2 1/2 hours until the meat pulls easily from the bones, adding a little of the adjustment water if needed to keep hocks mostly covered.
Lift hocks onto a tray. Strain the broth into a clean pot, discard vegetables and bay leaf, skim excess fat and measure 5 cups stock, adding water if needed.
Pull the ham from the bones once cool enough to handle. Discard bones, skin and tough connective tissue and cut the meat into small pieces.
Add potatoes and pepper to the measured stock. Simmer for 18 to 22 minutes until tender, then mash about one-quarter of the potatoes directly in the pot to thicken the broth.
Fold in ham, milk and cream and warm gently for 5 minutes until steaming without boiling hard. Divide among 6 bowls.