I'm not a doctor - so I hesitate to mention things like reflux or milk/soy protein intolerance (MSPI). My son has both. Many children who can not tolerate dairy can not tolerate soy as well.
My youngest was a preemie (28 weeks) and had to have formula to supplement breastmilk. He couldn't tolerate most formulas and we had to have a special prescription one ($45 a can!). At 3 he drinks hemp,oat or rice milk and eats rice cheese and rice yogurt. It's all very doable, as I belong to a food co-op with lots of healthy alternatives. You might want to try soy and dairy free formulas - but avoid ones with casein (milk protein).
Another mom I know has a daughter very severe MSPI. She has sa website at http://www.mspikids.info/ - not a medical site, but one for moms trying to deal with this.
Reflux (GERD) could be another problem - it shows up as spitting up, but also discomfort when laying down (especially with food in the stomach). As an adult, I must not eat two hours before going to bed; my son for one hour prior. Elevating the head of the bed helps keep food down. Medication and diet restrictions help the most. At 3, my son sleeps through most nights, but there are a few every week when the reflux wakes him (us) up. He does not eat anything that is acidic, spicy, or contains: tomato, garlic, onion, chocolate, mint, fresh ginger, especially not ketchup.
Another reason might be that your son is getting older and is doing so well that his sleep needs are changing - especially if his tummy is feeling better with the soy. If the issue is not MSPI nor reflux, then maybe adjusting one of his naps might help him sleep through the night.
Good luck!