Place beans in a large bowl and cover with water 3-4 inches above the beans. Soak for at least 4-6 hours.
In a large pot over medium heat, combine the drained beans and chicken stock and bring to a simmer.
While beans are simmering, melt butter in a large skillet over medium heat. Add minced garlic, carrots, and celery and saute for 10 minutes. Add the veggies to the pot.
In the same skillet over medium-high heat, saute the bacon for 10-15 minutes or until crisp. Drain the grease and add it to the pot.
Add the remaining ingredients: chopped ham, diced tomatoes, onion powder, Worcestershire sauce, minced garlic, dried parsley, garlic powder, water, garlic salt, black pepper, and bay leaf.
Continue to simmer the soup over medium heat, stirring frequently, until the beans are tender and the soup has thickened. This should take about 45-60 minutes. Remove the bay leaf before serving.