The list of variables available to selectively add to a notice can be misleading. They are currently a list of database field names selected by the module which the notice has been assigned to.. however not all notices actually pass all these tables into GetPreparedLetter and so not all variables are always supported and sometimes additional 'hidden' ones are available. We should clarify this and add support for TT variables at the same time. I believe we could/should do this within C4::Letters itself with a configuration block that lists accepted variables (tables, substitutions, loops etc) which can then be used both to construct the lists in the UI and also to check that the calls to GetPreparedLetter are indeed passing in the required/listed variables we list.