The reason is your step 2.
However, from my test, the action won't recognize {Contact((Contact))} as the contact's guid instead the dynamic value will be directly output as contact fullname.
So if you would like to perform the action in workflow, you should create a custom field to save guid value of contact then do concatenation in the second input line.
e.g: crm{Contact Guid(Contact)}
Then you could run workflow successfully.
* Please notice:
from my test, the workflow failed at bulk operation,
I thought that because members are array items, there was no extra process to concat bulk records into an array in IncludeMembersinSegment action.
But I couldn't give a specific answer or explanation for the bulk operation failure due to the action is not a recommended or published way to add contacts to static segment.
----------
While the recommended way to create a segment with contacts is by web api:
https://docs.microsoft.com/en-us/dynamics365/marketing/developer/extend-segments#crud-operations-on-static-segments
You could run following code in a web resource to test:
function addMemberToMaoSegment() {
var clientUrl = parent.Xrm.Page.context.getClientUrl();
var query = "msdyncrm_segments";
try {
var data = {
"msdyncrm_segmentname": "Mao test segment",
"msdyncrm_segmenttype": 192350001,
"msdyncrm_segmentmemberids": "[\"crm49c09a01-b056-e711-abaa-00155d701c02\",\"crm25242b01-c703-4b1c-a24c-c26da8ae508c\"]",
"statuscode": 192350000
};
var req = new XMLHttpRequest();
req.open("POST", clientUrl "/api/data/v9.1/" query, true);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.onreadystatechange = function() {
if (this.readyState == 4) {
req.onreadystatechange = null;
if (this.status == 204) {
alert('ok');
} else {
var error = JSON.parse(this.response).error;
alert("error when send request: " error.message);
}
}
};
req.send(JSON.stringify(data));
} catch (err) {
alert("error when execute function: " err);
}
}
It will create a static segment with two existing contacts.(replace crmxxx as yours)
Finally, no matter what method you take,
another point should be noticed is that added contacts could be only viewed in Members tab in a live static segment,
we need to add new criteria to filter the newly added out.(But they'll be selected and Members field data will also updates)
Regards,
Clofly