Place the smoked haddock in a small saucepan and pour milk over it just until the fish is covered (if it has skin on it, place it in the pan so the skin is facing down). Set aside and let it sit for 15 minutes. After 15 minutes, it's time to poach the fish. Gently heat the milk. Once it comes to a very low simmer, gently cook the haddock for about 5 or until just cooked through. Let it cool briefly while you prepare the other ingredients.
Melt the butter in a pot and cook the onions until they are soft and translucent, 5-7 minutes. Add the cubed potatoes and cook for another couple of minutes. Pour in milk from the cooked smoked haddock, add the potatoes, salt and pepper. Bring the milk to a gentle simmer to avoid it scorching, and simmer the potatoes, covered, until they're soft, about 10 minutes. Use a potato masher to mash some of the potatoes so that you have a mixture of mashed, small, and large chunks. If you prefer a smoother, thicker consistency, mash them a little more. For the creamiest results I recommend pureeing some of the potatoes, either in a blender or using an immersion blender. Stir in the cream and let it heat through for a minute. Remove any skin and bones from the cooked smoked haddock and then use a fork to flake it off into chunks. Add the smoked haddock to the soup and let it heat through for a minute or two. Add salt and pepper to taste. Served sprinkled with some fresh parsley. Serve with Scottish oatcakes or some good hearty bread. Makes 4 generous servings.