Your challenge is going to be what you actually need to do from your external application is orchestrate a number of operations in Marketing Cloud that cannot be initiated by simply adding a row to a Data Extension. The principal operations you would need to complete would be:
- Add News Event data to a Data Extension
- Perform a Query Activity to join all your contacts subscribed to updates to the new News Event that inserts to your Journey Builder Event Entry Data Extension
- Fire these new events into your Journey Builder Interaction using Automation Studio
There are probably a number of possible solutions, but I would contend that the simplest one would be to schedule an Automation that’s scheduled to run periodically throughout the day.
Although you could conceive of other more 'realtime' solutions, they would likely involve more complexity. For example, you could build a landing page in Cloud Pages that acted as an API for your client application that carries out much of the actions required; add to DE, run a query, fire an automation... There would be other considerations like securing the page so that only your application could access it or dealing with concurrent calls where more than one news event arrived in quick succession... It would be somewhat more complex than the Automation approach outlined below.
Scheduled Automation
1. News Event Updates Add a “Date Added” field to your News Events Data Extension. Data type should be Date, it should be nullable (not required) and should default to the current date and time. Add a “Status” field to the same Data Extension. This field should have a data type of “Text(10)”, be nullable and have a default value of “Added”.
2. Event Entry Data Extension
Create an Event Entry Data Extension in Contact Builder or in the Email Application. This Data Extension should be Sendable. It should ideally contain all the fields you need for personalisation of your messaging, including the unique identifier for your News Event. The Data Extension should have NO primary key.
3. Journey Injection Query Activity Create a new Query Activity that selects all your subscribed contacts joined to all newly added News Events. You’ll need to add your own specifics, but the pseudo code would look something like this:
SELECT
c.SubscriberKey
,c.Email AS EmailAddress
,c.FirstName
,e.EventID
FROM
Customers c INNER JOIN
NewsEvents e
ON e.DataAdded > GETDATE() -1 AND
e.Status = 'Added'
The "Data Action" for the Query Activity should be "Append" and the target Data Extension should be your Event Entry Data Extension.
4. News Event Update Query Activity Create a new Query Activity that will run following the one in step 3. It will mark News Event that's found its way into the Event Entry Data Extension so that articles/news events are not processed on successive runs. This query has an update type of "Update" and would look something like this:
SELECT DISTINCT
ee.EventID,
e.Title,
'Processed' AS Status
FROM
NewsEventEntry ee INNER JOIN
NewsEvents e
ON e.EventID = ee.EventID
WHERE
e.Status = 'Added'
5. Journey Builder Interaction Create a new Journey Builder Interaction with the entry source set to your Event Entry Data Extension.
6. Automation Studio Configuration Edit the Automation created by your Journey Builder Interaction (Step 5). Add your two queries created in steps 3 and 4 before the system generated Journey Entry Audience activity, save and reschedule the Automation: