We've been trying to create a view in CRM2013 that would show a Contacts correct current set of subscribed subscription lists, and it's been much more difficult than we imagined. We can find what we want if we query the database directly, but not in FetchXML.
I'll post both, in hopes that someone else has already figured this out. (It seems like a reasonably common request - to list the active subscription by email address...)
The SQL that does work in CRMDB:
-- #2 check for specific subscriptions - excluding specific unsubscribes
SELECT DISTINCT SP.cdi_SubscriptionListId
,SP.cdi_Email
,SLB.cdi_name
,SLB.statusCode
FROM cdi_subscriptionPreferenceBase SP
JOIN cdi_subscriptionlistBase SLB ON SLB.cdi_subscriptionlistId = SP.cdi_SubscriptionListId
WHERE SLB.statusCode = 1
AND SP.cdi_email = 'user@emailaddress.com'
AND SP.cdi_SubscriptionListId NOT IN (
SELECT USLB.cdi_subscriptionlistid
FROM cdi_unsubscribe_cdi_subscriptionlistBase USLB
JOIN cdi_unsubscribeBase UB ON USLB.cdi_unsubscribeid = UB.cdi_unsubscribeId
WHERE UB.cdi_email = 'user@emailaddress.com'
)
And this was my last attempt with FetchXML:
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true" >
<entity name="cdi_subscriptionpreference" >
<attribute name="cdi_subscriptionlistid" />
<attribute name="cdi_email" />
<filter type="and" >
<condition attribute="cdi_email" operator="eq" value="user@emailaddress.com" />
<condition attribute="cdi_preference" operator="eq" value="1" />
</filter>
<link-entity name="cdi_unsubscribe_cdi_subscriptionlist" from="cdi_subscriptionlistid" to="cdi_subscriptionlistid" link-type="outer" >
<link-entity name="cdi_unsubscribe" from="cdi_unsubscribeid" to="cdi_unsubscribeid" >
<filter type="and" >
<condition attribute="cdi_email" operator="eq" value="user@emailaddress.com" />
</filter>
</link-entity>
</link-entity>
</entity>
</fetch>
Any help would be greatly appreciated.
- Michael