The problem is not with your code. The problem is the order of issuing transactions.
You should follow the following steps:
Issue createNewContract and get the returned address of the deployed SubToken Contract.
** Note that this address is the address of SubToken contract which has been deployed in createNewContract method. You need ...