def METHOD_NAME(self, row, project_id):
    asset_key = slugify("%s%s" % (row["Asset Type"], row["Asset"]))
    if row.get("Episode") == "MP":
        row["Episode"] = ""
    target_key = slugify(
        "%s%s%s" % (row.get("Episode", ""), row["Parent"], row["Name"])
    )
    occurences = 1
    if len(row["Occurences"]) > 0:
        occurences = int(row["Occurences"])
    asset_id = self.asset_map.get(asset_key, None)
    target_id = self.shot_map.get(target_key, None)
    label = slugify(row.get("Label", "fixed"))
    if target_id is None:
        target_id = self.asset_map.get(target_key, None)
    if asset_id is not None and target_id is not None:
        entity = entities_service.get_entity_raw(target_id)
        link = breakdown_service.get_entity_link_raw(target_id, asset_id)
        if link is None:
            breakdown_service.create_casting_link(
                target_id, asset_id, occurences, label
            )
            entity.update({"nb_entities_out": entity.nb_entities_out + 1})
        else:
            link.update({"nb_occurences": occurences, "label": label})
        entity_id = str(entity.id)
        if shots_service.is_shot(entity.serialize()):
            breakdown_service.refresh_shot_casting_stats(
                entity.serialize()
            )
            events.emit(
                "shot:casting-update",
                {
                    "shot_id": entity_id,
                    "nb_entities_out": entity.nb_entities_out,
                },
                project_id=str(entity.project_id),
            )
        else:
            events.emit(
                "asset:casting-update",
                {"asset_id": entity_id},
                project_id=str(entity.project_id),
            )