"Undertake" as legalese is fine until one of the parties tries to wriggle out of the contract or otherwise minimize his liability on the basis that he intended (and promised) only to attempt
something. I don't want him to be able to say he was only obligated to try
to do the thing.
I want him to sign an agreement that explicitly states that he "must" build the building--or "shall" build it.
Very few words are indispensable to the making and enforcing of a contract, and "undertake" is not one of them. "Must" is a less ambiguous word than is "undertake" (demonstrably so, IMO)--and it is the clarity of the parties' intent that makes for a good contract. That's why, again, I prefer shall or must. If you prefer "undertake," that's fine, but I think it is a more ambiguous choice.
I have absolutely no doubt that you and the other lawyers here are excellent and very accomplished. And none of my comments have intended any disrespect whatsoever. But I have drafted a substantial number of contracts myself, and I feel entitled to express my opinion here. And, even if it is not exactly popular, I consider it to be good advice.