Model estimates employment within each 'bounds' (transit station boundary) for each year of LEHD data. Rather than select which bounds matched which geographically specific LEHD, this model does them all, and the null results drop out. The 'inner' model (inside the 'outer') model iterates over each of the bounds, while the 'outer' model iterates over each year-specific LEHD file.
For some reason, I had to make the output file from the 'inner' model a parameter so it would show up in the 'outer' model and actually get written to disk.
To get the cyan-colored variables, I right-click the iterator hex and used 'make variable'/'from parameter'; I used this for naming files, so they reflected the bound/year combination that generated them. I made a number of things from the 'inner model' (top) variables so they would show up in the outer model. To get 'year' to show up in the inner model (from the outer model), I had to create a variable in the inner model (r-click the white, 'create variable'), and link that up. (Clicking and dragging an arrow to connect didn't work--I couldn't use the variable as text in the inner model). The data type is 'string'.
I think I made WS ('workspace') a variable just for portability. Don't think it's necessary otherwise--it's used to locate the input and output geodatabases.
Yes, the 'make feature layer' is necessary for 'select feature by layer'.