A service appointment represents an Appointment for service. The schema name for this entity is ServiceAppointment. The service appointment entity represents a block of time on a calendar. This entity stores the availability blocks for resources and can be used to determine resource availability and scheduling.
A service appointment can be customized independently from other activities to accommodate the customer's business requirements for service delivery. A service appointment must have a corresponding service. It can be already bound with a set of resources specified by an activity party (ActivityParty) list.
Following code can be used to create a Service Activity.
// Create the ActivityParty. Resource can be a system user and user's Calendar will be booked for the duration.
var resource = new ActivityParty
{
PartyId = new EntityReference(SystemUser.EntityLogicalName, _userId)
};
// Create and instance of ServiceAppointment
var appointment = new ServiceAppointment
{
Subject = "Test Service Appointment",
ServiceId =
new EntityReference(Service.EntityLogicalName, new Guid("B39F04D6-7C93-E111-9675-005056B41D39")),
ScheduledStart = DateTime.Now.AddDays(5),
ScheduledEnd = DateTime.Now.AddDays(15),
Location = "On Site",
Description = "Test Appointment created for testing.",
Resources = new ActivityParty[] { resource },
IsAllDayEvent = true,
IsBilled = true
};
var request = new CreateRequest {Target = appointment};
var response = (CreateResponse) _service.Execute(request);
var serviceAppointmentId = response.id;
P. S. Hayer
Ref: Appointment entities