RE: Case Assignment based on User-Product-Availability
There is no OOB feature to identify user availability in MSD.
You can use below custom code to identify user is logged in to CRM today or not.
var query = new QueryExpression("audit")
{
ColumnSet = new ColumnSet(true),
Criteria = new FilterExpression(LogicalOperator.And)
};
query.Criteria.AddCondition("createdon", ConditionOperator.GreaterEqual, DateTime.Today);
query.Criteria.AddCondition("callinguserid", ConditionOperator.Equal, guid);
EntityCollection results = Contextservice.RetrieveMultiple(query);
if (results.Entities.Count > 0)
return true;
return false;