For what it's worth, I'm adding my 2¢ with a contemporary spin — Best practice for capturing Tech Debt work items in the backlog in Azure DevOps (the successor of TFS).
1. Use tags
Marking such tickets with a tech debt
tag to indicate implicit value for the customer is always handy (e.g. to balance out the % of such tasks in the sprint).
2. Avoid tech debt features
There are 3 reasons to avoid tech debt features:
- Tracking purposes.
An epic or feature needs a well defined goal to achieve, so it can be crossed off the list at some point to reflect the progress. Things like refactoring or tech debt related tasks is a never ending process, so bringing them under a feature would make it pointless for tracking progress.
- Violation of the single parent for tickets rule.
It's convenient to practice a tree-like approach with a single parent feature for tickets and a single parent epic for features. There might be exceptions but they should be rare. Having multiple parents on tickets would trouble tracking progress.
- Tech debt tasks may belong to "real" feature.
If a subset of tech debt tasks contributes to completing an ongoing or future feature / epic faster then keeping those tickets under that feature / epic makes sense. Combine it with a corresponding tag just in case. Of course, later when running out of time you may drop those tech debt tasks out.
3. Tasks without a feature is no crime
Tasks not always need a feature if you can manage them like this. Azure DevOps provides plenty of tools (e.g. querying on the tickets) to find and manage what you want.
Do what makes sense for the team and your project rather than "ticking a box".