• Here is the xml and the actual graph is attached. I put the xml into the analysis script which is how I came up with the deadlock being between the trigger and the update statement.

    <deadlock-list><deadlock victim="processf945c8"><process-list><process id="process32e868" taskpriority="0" logused="516" waitresource="KEY: 348:1438969838829568 (6a00b35de28b)" waittime="3931" ownerId="1102032551" transactionname="UPDATE" lasttranstarted="2013-03-01T10:39:03.790" XDES="0x1000996700" lockMode="U" schedulerid="7" kpid="18796" status="suspended" spid="267" sbid="0" ecid="0" priority="0" transcount="2" lastbatchstarted="2013-03-01T10:39:03.760" lastbatchcompleted="2013-03-01T10:39:03.760" clientapp=".Net SqlClient Data Provider" hostname="KPROD-API01" hostpid="5592" loginname="dev" isolationlevel="read committed (2)" xactid="1102032551" currentdb="348" lockTimeout="4294967295" clientoption1="673316896" clientoption2="128056"><executionStack><frame procname="superbill_5621_prod.dbo.tr_IU_Patient_ChangeTime" line="20" stmtstart="1136" stmtend="1422" sqlhandle="0x03005c01f90a702aee0870017f9d00000000000000000000">

    UPDATE P

    SET DOB = dbo.fn_ReplaceTimeInDate(i.DOB)

    FROM dbo.Patient P INNER JOIN

    inserted i ON

    P.PatientID = i.PatientID </frame><frame procname="superbill_5621_prod.dbo.PatientDataProvider_UpdatePatient" line="58" stmtstart="3208" stmtend="5998" sqlhandle="0x03005c01423a25111b997c01fa9f00000100000000000000">

    UPDATEdbo.Patient

    SETPrefix = @prefix,

    FirstName = @first_name,

    MiddleName = @middle_name,

    LastName = @last_name,

    Suffix = @suffix,

    AddressLine1 = @address_1,

    AddressLine2 = @address_2,

    City = @city,

    State = @state,

    Country = @country,

    ZipCode = @zip,

    Gender = @gender,

    MaritalStatus = @marital_status,

    HomePhone = @home_phone,

    HomePhoneExt = @home_phone_x,

    WorkPhone = @work_phone,

    WorkPhoneExt = @work_phone_x,

    DOB = @dob,

    SSN = @ssn,

    EmailAddress = RTRIM(LTRIM(@email)),

    SendEmailCorrespondence = @sendEmailCorrespondence,

    ResponsibleDifferentThanPatient = @guarantor_different,

    EmploymentStatus = @employment_status,

    ReferringPhysicianID = @referrer_id,

    PrimaryProviderID = @primary_provider_id,

    PatientReferralSourceID = @patient_referral_source_id,

    DefaultServiceLocationID = @patient_default_location_id,

    EmployerID = @employer_id,

    MedicalRecordNumber = @medical_record_number,

    MobilePhone = @mobile_phone,

    MobilePhoneExt = </frame><frame procname="superbill_5621_prod.dbo.WebServiceDataProvider_UpdatePatient" line="1720" stmtstart="176520" stmtend="178404" sqlhandle="0x03005c010ecaf473e772b2006aa100000100000000000000">

    EXEC dbo.PatientDataProvider_UpdatePatient @PatientID, @PatientPrefix,

    @PatientFirstName, @PatientMiddleName, @PatientLastName,

    @PatientSuffix, @PatientAddressLine1, @PatientAddressLine2,

    @PatientCity, @PatientState, @PatientCountry, @PatientZipCode,

    @PatientGender, @PatientMaritalStatus, @PatientHomePhone,

    @PatientHomePhoneExt, @PatientWorkPhone, @PatientWorkPhoneExt,

    @PatientDateOfBirth, @PatientSSN, @PatientEmail,

    @PatientEmailCorrespondence, @GuarantorDifferentThanPatient,

    @EmploymentStatus, @ReferringProviderID,

    @DefaultRenderingProviderID, @PatientReferralSourceID, @LocationID,

    @EmployerID, @PatientMedicalRecordNumber, @PatientMobilePhone,

    @PatientMobilePhoneExt, @PrimaryCarePhysicianID, @userid, @active,

    0, @EmergencyName, @EmergencyPhone, @EmergencyPhoneExt </frame></executionStack><inputbuf>

    Proc [Database Id = 348 Object Id = 1945422350] </inputbuf></process><process id="processf945c8" taskpriority="0" logused="0" waitresource="KEY: 348:72057594105298944 (6b00585d2e03)" waittime="3946" ownerId="1102032550" transactionname="UPDATE" lasttranstarted="2013-03-01T10:39:03.790" XDES="0x56a3d8370" lockMode="U" schedulerid="3" kpid="19368" status="suspended" spid="225" sbid="0" ecid="0" priority="0" transcount="2" lastbatchstarted="2013-03-01T10:39:03.757" lastbatchcompleted="2013-03-01T10:39:03.757" clientapp=".Net SqlClient Data Provider" hostname="KPROD-API02" hostpid="5432" loginname="dev" isolationlevel="read committed (2)" xactid="1102032550" currentdb="348" lockTimeout="4294967295" clientoption1="673185824" clientoption2="128056"><executionStack><frame procname="superbill_5621_prod.dbo.PatientDataProvider_UpdatePatient" line="58" stmtstart="3208" stmtend="5998" sqlhandle="0x03005c01423a25111b997c01fa9f00000100000000000000">

    UPDATEdbo.Patient

    SETPrefix = @prefix,

    FirstName = @first_name,

    MiddleName = @middle_name,

    LastName = @last_name,

    Suffix = @suffix,

    AddressLine1 = @address_1,

    AddressLine2 = @address_2,

    City = @city,

    State = @state,

    Country = @country,

    ZipCode = @zip,

    Gender = @gender,

    MaritalStatus = @marital_status,

    HomePhone = @home_phone,

    HomePhoneExt = @home_phone_x,

    WorkPhone = @work_phone,

    WorkPhoneExt = @work_phone_x,

    DOB = @dob,

    SSN = @ssn,

    EmailAddress = RTRIM(LTRIM(@email)),

    SendEmailCorrespondence = @sendEmailCorrespondence,

    ResponsibleDifferentThanPatient = @guarantor_different,

    EmploymentStatus = @employment_status,

    ReferringPhysicianID = @referrer_id,

    PrimaryProviderID = @primary_provider_id,

    PatientReferralSourceID = @patient_referral_source_id,

    DefaultServiceLocationID = @patient_default_location_id,

    EmployerID = @employer_id,

    MedicalRecordNumber = @medical_record_number,

    MobilePhone = @mobile_phone,

    MobilePhoneExt = </frame><frame procname="superbill_5621_prod.dbo.WebServiceDataProvider_UpdatePatient" line="1720" stmtstart="176520" stmtend="178404" sqlhandle="0x03005c010ecaf473e772b2006aa100000100000000000000">

    EXEC dbo.PatientDataProvider_UpdatePatient @PatientID, @PatientPrefix,

    @PatientFirstName, @PatientMiddleName, @PatientLastName,

    @PatientSuffix, @PatientAddressLine1, @PatientAddressLine2,

    @PatientCity, @PatientState, @PatientCountry, @PatientZipCode,

    @PatientGender, @PatientMaritalStatus, @PatientHomePhone,

    @PatientHomePhoneExt, @PatientWorkPhone, @PatientWorkPhoneExt,

    @PatientDateOfBirth, @PatientSSN, @PatientEmail,

    @PatientEmailCorrespondence, @GuarantorDifferentThanPatient,

    @EmploymentStatus, @ReferringProviderID,

    @DefaultRenderingProviderID, @PatientReferralSourceID, @LocationID,

    @EmployerID, @PatientMedicalRecordNumber, @PatientMobilePhone,

    @PatientMobilePhoneExt, @PrimaryCarePhysicianID, @userid, @active,

    0, @EmergencyName, @EmergencyPhone, @EmergencyPhoneExt </frame></executionStack><inputbuf>

    Proc [Database Id = 348 Object Id = 1945422350] </inputbuf></process></process-list><resource-list><keylock hobtid="72057594105298944" dbid="348" objectname="superbill_5621_prod.dbo.Patient" indexname="CI_Patient_PracticeID_PatientID" id="lock1dcda6980" mode="X" associatedObjectId="72057594105298944"><owner-list><owner id="process32e868" mode="X"/></owner-list><waiter-list><waiter id="processf945c8" mode="U" requestType="wait"/></waiter-list></keylock><keylock hobtid="1438969838829568" dbid="348" objectname="superbill_5621_prod.dbo.Patient" indexname="PK_Patient" id="lock67c1bce80" mode="U" associatedObjectId="1438969838829568"><owner-list><owner id="processf945c8" mode="U"/></owner-list><waiter-list><waiter id="process32e868" mode="U" requestType="wait"/></waiter-list></keylock></resource-list></deadlock></deadlock-list>