I have a old 8.x solution that I am upgrading to version 9.1 and also converting from a non helix methodology to a helix methodology (unraveling the spaghetti code has been a huge challenge and it will probably never be a pure helix based solution, but it should be close).

I use TDS for code generation. In which layer should base types be in?

For example let's say I have a "Video" type. I have an ItemManager Feature which can return a list of content items based on type. Rendering parameters are used to determine the type that is returned in the result set. if the rendering parameter is "video", ItemManager will fire a search method to get the videos based on the datasource.

Then, I have a "video" feature which is just a view that displays the video (Video, Title, Caption, length, etc).

Since both features reference the Video type should "video" be in the foundation layer since the data template won't be changing, hence is should be stable and referenced in the features layer?

1 Answer 1


Following Helix principles you should divide your single TDS project into layers and projects. And for each code project you need to have separate TDS project(of course, if required). And for each TDS project you can have code generation if required.

You can look into this GitHub repository as example.

I would suggest you initially put everything into Foundation layer and then move things one by one. Content to project level. Specific component things to Feature level. Etc.

  • That's kind of what I'm doing. I'm guess I just won't be able to break things up as much as I want to. This solution is over 3 years old and things are so intertwined that breaking it apart is difficult without breaking the existing content.
    – Mikeyp
    Jul 19, 2019 at 16:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.