Soak the ham and beans in separate bowls of cold water overnight.
Drain the beans and transfer to a large saucepan. Cover with fresh cold water and bring to the boil. Reduce the heat and simmer for 40 minutes or until just tender. Drain and set aside.
Add the drained ham to the empty bean pan with the chicken legs, onions and bay leaves. Pour over the measurement water and bring to a gentle simmer. Cover and cook very gently for 1 hour.
Cut the potatoes into small chunks and add to the pan with the beans and paprika. Cook very gently, covered, for a further 20 minutes until the potatoes are tender.
Lift the chicken and ham from the pan. Once cool enough to handle, pull the meat from the bones, discarding the skin. Shred or chop all the meat into small pieces and return to the pan. Stir in the cabbage and coriander and heat through gently. Season with pepper and serve.