As Yash suggest but in short form:
Use Testng annotations which signals dependences quite good.
It tooks some time to learn use it good(yaml + groups + packages included), but for annotation you could build dependencies and structures of tests quite easy.
External property file is also helpful for user data.
Also use scripting language if allowed, it minimalize boilerplate code , simplify understending and writing hussles, and also gives chance to learn scripting language. If possible use DSL.