A bit of context: I am building an automation that retrieves all subscribers that have a mismatch between their subscriber status in the All Subscriber list and the hasOptedOutOfEmail field on the CRM and updates the subscriber status accordingly (CRM is the "winner", so the subscriber status on the all subscriber list must always reflect the hasOptedOutOfEmail field).
This is the query I built in order to retrieve those records (it currently retrieves only one record for testing purposes):
Select c.Id as [Subscriber Key], EmailAddress as [Email Address],
CASE
when Status = 'unsubscribed' then 'active'
when Status != 'unsubscribed' then 'unsubscribed'
end as Status
from ent._Subscribers allSub
join ent.Contact_Salesforce_1 c on allSub.SubscriberKey = c.Id
where
((c.hasOptedOutOfEmail = 'true' AND allSub.Status != 'unsubscribed')
OR (c.hasOptedOutOfEmail = 'false' AND allSub.Status = 'unsubscribed'))
and c.Id = '0030E00001AS8ToQAL'
Query runs and then the whole process of data extraction-file transfer-file import is run in the automation.
By checking that record in the All subscribers list, everything looks fine: the subscriber initially had an active status, but the hasOptedOutOfEmail field on the CRM was true, so the status gets correctly updated in the list:
By querying the _Subscribers data view though, it still has an Active status:
Am I missing something here? Shouldn't the _Subscribers data view reflect the All Subscriber list? Why is there a mismatch between the two?