Please read the documentation again:
This method returns the resolved evaluated values of custom properties prefaced with fromparent+ for external referenced documents. Use ISwDocument17::GetCustomProperty2 to return resolved evaluated values without the fromparent+ preface.
Before calling this method, call ISwDMDocument::GetCustomPropertyNames.
Yes that is what I am doing callingGetCustomPropertyNames so I can loop through them and if it exists then call GetCustomProperty which seems inefficient I would expect they will return a null when the property doesn't exist so we don't have to implement the loop ourselves