Place a large Dutch oven or soup pot over medium-high heat.
Next, add olive oil, once hot add the cubed ham and brown for about 3-4 minutes, stirring occasionally.
Add the diced onion, stir and cook for 2-3 minutes.
Add the garlic, dried parsley, and oregano. Stir and cook for 30 seconds.
Add carrots and celery, stir and cook for about 5-7 minutes.
Add rinsed beans, season with salt and pepper. Add chicken broth, half and half, and bay leaves. Stir and bring to a simmer. Reduce heat to medium, cover, and simmer for 30-40 minutes.
Add butter to a medium saucepan over medium heat and melt. Whisk in the flour until completely combined and gradually add in the half and half, whish until smooth.
With the heat on low, let the mixture cook until it starts to simmer and is getting thicker, stir occasionally.
Immediately add the flour mixture to the pot and stir to combine.
If the soup is too thick, add more chicken broth. Taste and adjust for salt and pepper.
Cover and continue cooking the soup on low heat for 15 minutes. If you added more liquid, make sure to let the soup simmer for a few minutes. Discard bay leaves.
To make the soup thicker, mash some of the ingredients.
Serve topped with chopped parsley.
