| Microsoft CRM
Houston (800) 892-6143 |
| Implementation & Customization |
'-------------MICROSOFT CRM 3.0 CREATE SERVICE ACTIVITY FROM CASE------------ Imports SystemImports System.Collections.SpecializedImports System.IOImports System.XmlImports System.Xml.XslImports System.Xml.SerializationImports RelatedServiceActivity.CrmSdkImports RelatedServiceActivity.CrmMetaImports Microsoft.Crm.CalloutPublic Class ServiceActivity Public Shared Sub NewServiceActivity(ByVal CaseGuid As Guid, ByVal CourtDate As DateTime, _ ByVal Court As Guid, _ ByVal Owner As Guid, ByVal CaseTitle As String, ByVal CourtName As String, _ ByVal Client As Guid) '-------------SETUP THE SERVICE------------------------------------------------------------ Dim service As New CrmServiceservice.Credentials = New System.Net.NetworkCredential("username", "password", "DOMAIN")service.Url = "http://crm.daviddomain.com/mscrmservices/2006/crmservice.asmx" Dim meta As New MetadataServicemeta.Credentials = New System.Net.NetworkCredential("username", "password", "DOMAIN")meta.Url = "http://crm.daviddomain.com/mscrmservices/2006/metadataservice.asmx" '-------------SETUP A NEW SERVICE APPOINTMENT------------------------------------------------ Dim sa As New serviceappointment '-------------SET THE SCHEDULED BEGIN AND END TIMESsa.scheduledstart = New CrmDateTimesa.scheduledend = New CrmDateTimesa.scheduledstart.Value = CourtDate.ToLocalTime.ToString 'Set the duration, longer duration means more description on the service calendarsa.scheduledend.Value = CourtDate.ToLocalTime.AddHours(4).ToString '-------------FIND THE FACILITY WITH THE COURT REFERENCE USED IN THIS INCIDENT--------------- Dim FacilityCols As New ColumnSet Dim FacFilter As New FilterExpression Dim FacQuery As New QueryExpression Dim FacCond As New ConditionExpression Dim FacCollection As New BusinessEntityCollectionFacCond.AttributeName = "new_courtid" FacCond.Operator = ConditionOperator.Equal FacCond.Values = New Object() {Court}FacFilter.Conditions = New ConditionExpression() {FacCond}FacilityCols.Attributes = New String() {"name", "equipmentid"}FacQuery.EntityName = EntityName.equipment.ToString FacQuery.ColumnSet = FacilityCols FacQuery.Criteria = FacFilter FacCollection = service.RetrieveMultiple(FacQuery) '--------------ADD THE FACILITY TO THE SERVICE ACTIVITY----------------------------------------- If FacCollection.BusinessEntities.Length > 0 Then Dim equip For Each equip In FacCollection.BusinessEntities 'Creates a new Activity Party Dim crtFac As New activityparty 'This assigns a value to the activity partycrtFac.partyid = New LookupcrtFac.partyid.type = EntityName.equipment.ToString crtFac.partyid.Value = New Guid(equip.equipmentid.value.ToString) 'this assigns the Activity Party to the service activitysa.resources = New activityparty() {crtFac} Exit For Next End If '------------SET THE REGARDING VALUE OF THE SERVICE ACTIVITY---------------------------------------sa.regardingobjectid = New Lookupsa.regardingobjectid.Value = CaseGuid sa.regardingobjectid.type = EntityName.incident.ToString '------------SET THE REFERENCE TO THE CLIENT------------------------------------------------------- Dim saCust As New activitypartysaCust.partyid = New LookupsaCust.partyid.type = EntityName.contact.ToString saCust.partyid.Value = Client sa.customers = New activityparty() {saCust} '------------BUILD THE SUBJECT OF THE SERVICE APPOINTMENT------------------------------------------- 'create the clinet entity Dim tmpClient As New contact 'setup the columns that need to be retrieved Dim clientCols As New ColumnSetclientCols.Attributes = New String() {"fullname"}tmpClient = service.Retrieve(EntityName.contact.ToString, Client, clientCols) 'create a copy of this case Dim tmpCase As New incident 'Setup the temp case columns Dim caseCols As New ColumnSetcaseCols.Attributes = New String() {"casetypecode", "new_ticketnumber", "statuscode"}tmpCase = service.Retrieve(EntityName.incident.ToString, CaseGuid, caseCols) 'create the new subject Dim subTicketNum As String = "" Dim subClient As String = "" Dim subViolation As String = ""subTicketNum = tmpCase.new_ticketnumber subClient = tmpClient.fullname subViolation = tmpCase.casetypecode.name 'Add the subjectsa.subject = tmpCase.statuscode.name & " " & subClient & " " & "Ticket#" & subTicketNum & " " & subViolation
'-------------CREATE THE SERVICE ACTIVITY----------------------------------------------------------------- Dim saID As Guid = service.Create(sa) '-------------RETRIEVE THE SERVICE APPOINTMENT STATUS REASON VALUE-------------------------------------------- 'Store the status name of the this case Dim mapStatus As String = tmpCase.statuscode.name Dim SETsaState As New SetStateServiceAppointmentRequest 'Retrieve all of the status options available on the service appointment Dim statuscollection As New StatusAttributeMetadata statuscollection = meta.RetrieveAttributeMetadata(EntityName.serviceappointment.ToString, "statuscode") '-------------UPDATE THE SERVICE APPOINTMENT STATUS IF A MATCHING STATUS NAME IS FOUND-------------------- 'Loop through until the integer value of the string mapping is found For Each val As StatusOption In statuscollection.Options If val.Description = mapStatus ThenSETsaState.EntityId = saID SETsaState.ServiceAppointmentState = ServiceAppointmentState.Scheduled SETsaState.ServiceAppointmentStatus = val.OptionValue service.Execute(SETsaState) End If Next
End Sub End Class |
| Training | |
| Microsoft CRM 101 | |
| Microsoft CRM for Outlook | |
| Microsoft CRM Advanced Find | |
| Microsoft CRM Reports | |
| Microsoft CRM Database | |
|
Microsoft CRM Web Services |
|
|
Microsoft CRM JavaScript |
|
|
Microsoft CRM Add-ons |
|
| Microsoft CRM Resources | |
| Microsoft CRM Callouts | |
| Microsoft CRM Workflow | |
|
|
|