Here is a re-write with string_agg:
update r
set r.SVHCSubstance = rr.substance_list,
r.Concertation = rr.Concertation_list
from ExtractReports.dbo.FinalComplanceDataDelivery r
join (select rr.partid, string_agg(n.substance, ',') AS substance_list,
string_agg(sc.Concertation, ',') AS Concertation_list
from ExtractReports.dbo.FinalComplanceDataDelivery rr
join [DocumentCompliance].[SCIP] sc on sc.partid=rr.partid
and sc.FeatureName=8508
JOIN Parts.NormalizedSubCAS n ON n.id = sc.FeatureValue) AS rr ON rr.partid = r.partid
Please note that I don't have your tables and cannot test. This is a fairly mechanical exercise, but I could have slipped.
The shape of the query has changed, because since string_agg is a true aggregate function, we can have more than one in the same subquery, so the above should be more efficient.
But, it does not run on SQL 2014.