Get all rows in table A even if no rows in table B in CROSS JOIN
You can use an outer apply instead of a cross join.

Using this simplified table structure.

create table T1(ID1 int);
create table T2(ID2 int);


Add three rows to T1

insert into T1 values(1);
insert into T1 values(2);
insert into T1 values(3);


Query with outer apply.

select T1.ID1,
       T2.ID2
from T1
  outer apply (
              select T2.ID2
              from T2
              ) as T2;


Result:

ID1         ID2
----------- -----------
1           NULL
2           NULL
3           NULL


Add one row to T2

insert into T2 values(1);


Result:

ID1         ID2
----------- -----------
1           1
2           1
3           1