Add the beans to a large container and fill it with water until it is covering the beans by about 4 inches. Cover and set aside at room temperature overnight or for up to 24 hours. Drain, and set aside.
Place the butter in a large pot over low heat and cook the onions for 30-40 minutes or until well caramelized. Stir often.
Next, add in the carrots, celery, and garlic and cook over low-medium heat for 4 to 5 minutes.
Deglaze with wine and cook it until there are only about 2 to 3 tablespoons of liquid left in the pot.
Add in the ham, ham bone, chicken stock, parmesan rind, and thyme, cover with a lid and cook over low heat for 90-120 minutes stirring occasionally until beans are cooked and the soup is thickened naturally.
Finish by stirring in the vinegar, salt, and pepper, and serve.