You definitely can update child records when the parent changed via Process Builder.
When you create an action in PB make sure to select the "Select a record related to the Account" option in the Record Type section.
Then select Contacts and define new field values for the records you update.
Now you are all set.
From docs:
If the process starts when a platform event message is received,
associate the process with a platform event and an object, and specify
matching conditions. Because every process acts on a Salesforce
record, it requires a single record as a starting point. That way, the
criteria and actions know where to start evaluating and executing.The process fails if it finds:
1) Multiple records that match the criteria.
2) No records that match the criteria.
This bit is bit funny from SF end, But you can bypass it, but providing a dummy record.
Create a dummy Object, with an external field `D_External__c'. Then create a single record of that dummy Object. And set Value of External Field as constant. eg 78234564654
Now add an extra field in your event
My_External_Dummy_Field__C , and default its value as 78234564654
. The one you defined in the record you created.
This will make sure, each event fired will have My_External_Dummy_Field__C as 78234564654
In your Process Builder, Match your Dummy_Object's external field with My_External_Dummy_Field__C
As this matching condition will always match because of single record of dummy object and setting the default value of the platform event, your process builder will always run. And you can create do whatever you want.
Best Answer
In the formula section there is a drop down for System Variables, you can configure system variables from there.
For current logged in user id use
$User.id
.