In a large stockpot, place the ham bone, 1 celery stalk, 1 carrot, 1 onion chopped into large pieces, and the bay leaves. Cover with water and bring to a boil. Lower to a simmer and let cook for 2-3 hours.
Remove the ham bone from the pot and strain the stock into a large bowl.
Return the stockpot to the medium heat and add 2 tablespoons of olive oil to the pot. Dice the remaining 2 celery stalks, 2 carrots and onion into small pieces. Add to the pot and saute for 8-10 minutes until softened. Add the minced garlic and cook for an additional minute.
Toss in the potatoes, cayenne, mustard, cracked black pepper and salt. Stir, then add the ham broth back to the pot. Bring to a boil, then lower to a simmer. Cook for 45 minutes.
Roast the broccoli: Preheat the oven to 425ºF. Chop the broccoli into small florets and place on a sheet pan with the remaining tablespoon of broccoli and a little salt and pepper if you want. Roast for 20 minutes until crispy.
While soup and broccoli are cooking, pull the ham bone to remove all pieces of meat and chop into bite sized pieces.
The soup is ready when the potatoes are very soft. Remove soup from the heat and blend until smooth with an immersion blender or in small batches in a high-speed blender. Add in the diced ham and ladle into bowls. Top with the crunchy broccoli and parsley!