Notice for all Marketo Driver Users Regarding December 2024 Release

This article serves as a notice to all users regarding the CData Software Marketo connectivity solutions update from December 2024.

Date Entered: 12/20/2024    Last Updated: 12/20/2024

This notice is for all Marketo Driver users considering upgrading to the 2024 CData Marketo Drivers, released in December 2024.

CData made a decision to redesign the Marketo Drivers, which includes some significant changes to the data model. These changes were selected to ensure CData can continue to maintain the driver in the future while providing new feature and enhancements to improve the customer experience in the long run. The 2024 release includes many enhancements such as simplifying the data-model to the REST Schema, adding support for Bulk operation for Custom Objects, and server-side filtering capabilities in more tables and views.

The changes affect connection properties, table, view and stored procedures. Upgrading to the 2024 Marketo driver from prior version is likely to cause breaking changes. The complete list of breaking changes can be found below. We recommend users to test the 2024 Marketo driver in a non-production environment before upgrading the production environment.

Please contact CData Support if you have questions about this upgrade.

Edition affected: all editions

  • Marketo ADO.NET Provider
  • Marketo JDBC Driver
  • Marketo ODBC Driver (Windows, Mac and Linux)
  • Marketo Excel Add-in
  • Marketo Power BI Connector
  • Marketo Tableau Connector
  • Marketo SSIS Component
  • Marketo PowerShell Cmdlets
  • Marketo Python Connector

Connection property changes: Simplifying Schema to REST only

Adobe has announced that SOAP API is being deprecated. In prior versions of CData Marketo Drivers, both SOAP and REST API were supported. From the Marketo Driver 2024 version onward, we will only support REST API. We have made changes in the connection property related to this decision:

  • The connection property RESTEndpoint has been renamed to URL.
  • The connection properties UserID, EncryptionKey, and SOAPEndpoint have been removed.
  • The connection property Schema no longer accepts 'SOAP' as a valid value.
  • The schema REST has been renamed Marketo.

For the users who have been using the SOAP Schema, please switch to REST Schema in the 2024 driver.

For the users who have been using the REST Schema, connection property will change like the sample of the simple set of connection string (JDBC example):

2023 driver or prior:

jdbc:marketo:Schema=3DREST;RESTEndpoint=3Dhttps://MyMarketoUrl/rest;OAuthClientId=3DMyOAuthClientId;OAuthClientSecret=3DMyOAuthClientSecret;

2024 driver and beyond:

jdbc:marketo:URL=3Dhttps://MyMarketoURL.mktorest.com/;OAuthClientId=3DMyOAuthClientId;OAuthClientSecret=3DMyOAuthClientSecret;

Data Model Changes

Below is the full list of Data Model changes in Marketo 2024 drivers.

Tables / Views

  • Tags and Costs information has been removed from the Programs table. This information is now available in dedicated child-tables ProgramTags and ProgramCosts.
  • ProgramMembersBulkExports, LeadBulkExports, ActivityBulkExports have been merged into 1 table: BulkExportJobs which can be used to query export jobs for all entities that support bulk exports.
  • The view PreviewEmail has been replaced by stored procedure GetEmailFullContent
  • The view SnippentContent has been replaced by stored procedure GetSnippetContent
  • The view LeadLists has been replaced by StaticListMembership
    • This new view supports filtering for both Lists that include a Lead, and Leads that are part of a list.
  • The view SmartListRuleFilters has been split into SmartListFilters and SmartListFilterConditions.
  • The view Tags has been split into Tags and TagAllowableValues

Columns

  • The order for columns in various tables have been changed
  • In Activities, the column Id has been removed, and MarketoGUID has been renamed to ActivityID.
  • In LeadPrograms, the column Id has been replaced with ProgramId.
  • All 'Assets' table have a new composite key Status. Valid values are Draft, Approved.
  • In EmailTemplates, the column Content has been removed, as it was only available for updates. It can now be updated via the UpdateEmailTemplateContent stored procedure.
  • In Files, the columns File, FileName, InsertOnly have been removed as they were only available for write operations. Than can now be created or updated by the stored procedures CreateFiles / UpdateFiles respectively.
  • In the views Emails, SmartCampaigns and SmartLists, the pseudo-columns LatestUpdatedAt, EarliestUpdatedAt have been removed, since filtering is now supported directly on the column UpdatedAt.
  • In Folders, the pseudo-column RootFolderId and RootFolderType have been removed. Filtering is now supported on the columns ParentId and ParentType.
  • In LandingPageContentSections, the pseudo-column LandingPageId and Status were converted to composite primary-key columns.
  • In Channels, the column Description has been removed as it's no longer returned by the API.
  • The column AllowableValues in Tags has been replaced by the view TagAllowableValues, as the driver was previously unable to retrieve values from the API.
  • In Leads, StaticListId was renamed to ListId and updated to primary key
  • In ProgramMembers, removed the column Id (duplicate of LeadId)
  • In Asset-related tables, the column Workspace has been renamed to WorkspaceName or WorkspaceId, to clarify whether the column is referencing the name or identifier of the workspace.
  • In the views DailyErrorStastistics, DailyUsageStatistics, WeeklyErrorStatistics, WeeklyUsageStatistics, removed the calculated column Total, since it can be calculated by the SUM() function.
  • In the views DailyUsaegStatistics, WeeklyErrorStatistics, WeeklyUsageStatistics, renamed the column APICount to Count.

Stored Procedures

A number of Stored Procedures have been removed, either due to consolidating several actions in a single procedure, or removed if the equivalent action can be done by operations on Tables and Views.

  • AddLeadsToList, RemoveLeadsFromList, ListMembersOfList and IsMemberOfList
    • Users should use Insert, Delete and Select statements in StaticListMembership instead
  • AddLandingPageContentSection, DeleteLandingPageContentSection, UpdateLandingPageContentSection
    • Users should use Insert/Delete/Update statements in LandingPageContentSections
  • GetImportCustomObjectsFailures, GetImportLeadsFailures, GetImportProgramMembersFailures
    • Users should use GetImportJobFailures, specifying the attribute
      Table=<Leads|ProgramMembers|CustomObject_{name}>

  • GetImportCustomObjectsStatus, GetImportLeadsStatus, GetImportProgramMembersStatus
    • Users should use GetImportJobStatus, specifying the attribute
      Table=<Leads|ProgramMembers|CustomObject_{name}>
  • GetImportCustomObjectsWarnings, GetImportLeadsWarnings, GetImportProgramMembersWarnings
    • Users should use GetImportJobWarnings, specifying the attribute
      Table=<Leads|ProgramMembers|CustomObject_{name}>
  • ImportLeadsFromFile, ImportCustomObjectsFromFile, ImportProgramMembersFromFile
    • Have been renamed to BulkImportLeads, BulkImportCustomObjects, BulkImportProgramMembers respectively.
  • CreateExportJob
    • Users should instead use one of:
      • CreateActivitiesExportJob,
      • CreateCustomObjectsExportJob
      • CreateProgramMembersExportJob
      • CreateLeadsExportJob
  • RefreshOauthAccessToken
    • Deprecated, as Marketo uses OAuth-Grant type clients.

Procedure Parameters

  • Added parameters Status and Details to all Stored Procedure to return server-side execution errors.
  • Removed TokenAggregate in ScheduleCampaign
    • Can be replaced by TokenName and TokenValue
  • Removed File and Content in CreateFile
    • Can be replaced by specifying either FileData, LocalPath, or InputStream.
  • Removed File in UpdateFile
    • Can be replaced by specifying either FileData, LocalPath, or InputStream.
  • Removed File in CreateEmailTemplate
    • Can be replaced by specifying either FileData, LocalPath, or InputStream.
  • Removed File in UpdateEmailTemplateContent
    • Can be replaced by specifying either FileData, LocalPath, or InputStream.
  • Removed File in UpdateEmailFullContent
    • Can be replaced by specifying either FileData, LocalPath, or InputStream.
  • Removed File in UpdateLandingPageTemplateContent
    • Can be replaced by specifying either FileData, LocalPath, or InputStream.
  • Changed parameters in MergeLeads
    • Renamed LoosingLeadId to LosingLeadId
  • Changed parameters in UpdateLeadProgramStatus
    • Renamed Status to StatusName
  • Changed parameters in UpdateFile
    • Renamed FileId to Id
  • Changed parameters in GetExportJobFile
    • Renamed JobId to Id, Type to Table, and File to LocalPath
    • Renamed FileStream to OutputStream, ResponseData to FileData
  • Changed parameters in GetExportJobStatus
    • Renamed JobId to Id, Type to Table
  • Changed parameters in EnqueueExportJob
    • Renamed JobId to Id, Type to Table, JobStatus to Status
  • Changed parameters in CancelExportJob
    • Renamed JobId to Id, Type to Table, JobStatus to Status

 

Data

  • The REST Bulk API no longer supports Inserts. Support for Upserts has been added. Bulk Insert queries should be replaced by Bulk Upserts.
  • Some Child-tables (e.g. ActivityTypesAttributes) will no longer push rows if the parent tables has data but the child does not.
    E.g. :
    • LeadChangesAttributes: If a row for LeadChanges exists that has no data for attributes, no row will be pushed for LeadChangesAttributes.
    • ActivityTypeAttributes: If a parent ActivityType exists, ActivityTypeAttributes will not push rows if the attributes are null.

Other Notable Changes

  • For Assets tables, the Status is now part of a composite key along with the Id. Queries can filter by status to retrieve either Draft or Approved assets.
    • Similarly, DELETE statements should reference both the Id and Status to prevent both Approved and Draft versions.
  • Assets filtering by FolderId will filter both types 'Folder' and 'Program'. Filter by folderType to filter only a specific type.
  • Querying the folders table will now return all folders. The default MaxDepth=3D2 limit has been removed.
  • Required conditions have been added to many tables which would throw error due to missing filters.

We appreciate your feedback.  If you have any questions, comments, or suggestions about this entry, please contact our support team at [email protected].