It seems a simple syntax error. The syntax for NDSolve[] for an ODE system is
NDSolve[system, Vars, time, opts...]
Here system is to include all the differential equations, boundary/initial conditions, and WhenEvent[] events of the system. And Vars specifies the dependent variables and their output forms, and time specifies the independent variable and domain limits, which is {t, t0, tf} in your code. Your NDSolve call, if the comment signs (*, *) are removed, has the form
NDSolve[system, WhenEvent[...], Vars, time, opts...]
The WhenEvent code is not part of the system but a separate argument, the second argument. For NDSolve[], the second argument is taken to be a dependent variable output specification. The WhenEvent[...] code is not a good dependent variable specification at all, and the error message is a bit confused by it. The message contains "the arguments of the dependent variable in...", which is about the best hint to what is going wrong: There is something wrong with the second argument that specifies the dependent variable output. (NDSolve[] stops here; otherwise I would expect errors arising from Vars being the independent variable and domain spec.) The WhenEvent[...] should be made part of the system, which you call ODEandICTable in your notebook.