@@ -433,18 +433,29 @@ def extract_embedded_relationships(
433433 external_references_ids = []
434434 if "external_references" in stix_object :
435435 for external_reference in stix_object ["external_references" ]:
436- if "url" in external_reference and "source_name" in external_reference :
437- url = external_reference ["url" ]
438- source_name = external_reference ["source_name" ]
439- else :
436+ url = external_reference ["url" ] if "url" in external_reference else None
437+ source_name = (
438+ external_reference ["source_name" ]
439+ if "source_name" in external_reference
440+ else None
441+ )
442+ external_id = (
443+ external_reference ["external_id" ]
444+ if "external_id" in external_reference
445+ else None
446+ )
447+ generated_ref_id = self .opencti .external_reference .generate_id (
448+ url , source_name , external_id
449+ )
450+ if generated_ref_id is None :
440451 continue
441- if url in self .mapping_cache :
442- external_reference_id = self .mapping_cache [url ][ "id" ]
452+ if external_id in self .mapping_cache :
453+ external_reference_id = self .mapping_cache [external_id ]
443454 else :
444455 external_reference_id = self .opencti .external_reference .create (
445456 source_name = source_name ,
446457 url = url ,
447- external_id = external_reference [ " external_id" ]
458+ external_id = external_id
448459 if "external_id" in external_reference
449460 else None ,
450461 description = external_reference ["description" ]
@@ -472,7 +483,7 @@ def extract_embedded_relationships(
472483 data = base64 .b64decode (file ["data" ]),
473484 mime_type = file ["mime_type" ],
474485 )
475- self .mapping_cache [url ] = { "id" : external_reference_id }
486+ self .mapping_cache [generated_ref_id ] = generated_ref_id
476487 external_references_ids .append (external_reference_id )
477488 if stix_object ["type" ] in [
478489 "threat-actor" ,
0 commit comments