Appearance
V3 Upgrade Guide
Client Sync Workflow
The basic flow of GetAgencies -> Get Changed Clients -> Get Client/Get Clients is unchanged.
Change Detection
The v1.8 Client Hashes have been replaced by modified timestamps in v3. The Client Detail Modified timestamp reflects the latest update to any part of the client. Additionally, each Person, Policy, Claim, and Contact has an individual Modified timestamp representing the last update to that record.
Upgrade Checklist
This is a high-level list of tasks that will help you upgrade from V1 to V3.0. Continue reading for more details about individual changes to the client model.
- Include version query parameter in all API requests. (version = 3.0)
- Optionally prepare to consume the new LegacyId property. This property will have the same value as the Id property from the V1 API. You may use this property to help map the new GUID Ids to your existing data. Be aware that once an agency upgrades to HawkSoft 6, new items will not have a LegacyId value, as there is no pre-existing data to map to. Do not rely on this field for identifying records beyond the initial upgrade process.
Client
Id
Id has been renamed to ClientNumber. The value is unchanged.
JSON
json
// v1
{
"id": 10,
...
}
// v3
{
"clientNumber": 10,
...
}
// v1
{
"id": 10,
...
}
// v3
{
"clientNumber": 10,
...
}
AllowCrossSell
AllowCrossSell has been moved to the Client Details object.
JSON
json
// v1
{
"id": 10,
"allowCrossSell": false,
...
}
// v3
{
"clientNumber": 10,
"details": {
"allowCrossSell": false,
...
},
...
}
// v1
{
"id": 10,
"allowCrossSell": false,
...
}
// v3
{
"clientNumber": 10,
"details": {
"allowCrossSell": false,
...
},
...
}
ClientType
ClientType has been moved to the Client Details object.
JSON
json
// v1
{
"id": 0,
"clientType": "Customer",
...
}
// v3
{
"id": 0,
"details": {
"clientType": "Customer",
...
},
...
}
// v1
{
"id": 0,
"clientType": "Customer",
...
}
// v3
{
"id": 0,
"details": {
"clientType": "Customer",
...
},
...
}
ContactInfoLastUpdated
Moved to the Client Details object.
CustomClientId
Moved to the Client Details object.
DoNotMarket
Moved to the Client Details object.
IsBusiness
Removed. See BusinessType on the Client Details object. BusinessType: None
is equivalent to IsBusiness: false
. Any other BusinessType value is equivalent to IsBusiness: true
.
IsActive
Removed. See Status on the Client Details object. Status: Active
is equivalent to IsActive: true
. Any other Status value is equivalent to IsActive: false
.
IsArchived
Removed. The API does not return Archived clients.
IsCommercial
Moved to the Client Details object.
IsDeadFile
Removed. See Status on the Client Details object. Status: DeadFile
is equivalent to IsDeadFile: true
. Any other Status value is equivalent to IsDeadFile: false
.
IsLead
Removed. See Status on the Client Details object. Status: Lead
is equivalent to IsLead: true
. Any other Status value is equivalent to IsLead: false
.
IsLifeHealth
Moved to the Client Details object.
IsPersonal
Moved to the Client Details object.
IsProspect
Removed. See Status on the Client Details object. Status: Prospect
is equivalent to IsProspect: true
Any other Status value is equivalent to IsProspect: false
.
OfficeId
Moved to the Client Details object.
Source
Moved to the Client Details object.
Addresses
Removed. See MailingAddress, PhysicalAddress, and PhysicalAtSince on the Client Detais object.
A V1 Address with Type: Mailing
maps to Details.MailingAddress
.
A V1 Address with Type: Physical
maps to Details.PhysicalAddress
, and Address.AtSince
maps to Details.PhysicalAtSince
.
Both Addresses are optional. A client may have neither, one, or both.
Mailing Address
json
// v1
{
"id": 0,
...,
"addresses": [
{
"addressType": "Mailing",
"atSince": null,
"city": "Seattle",
"country": "US",
"line1": "325 5th Ave N",
"line2": "#101",
"state": "WA",
"zipCode": "98109"
}
]
}
// v3
{
"details": {
"mailingAddress": {
"address1": "325 5th Ave N",
"address2": "#101",
"city": "Seattle",
"state": "WA",
"zip": "98109",
"countryCode": "US",
"county": "King"
},
"physicalAddress": null
}
}
// v1
{
"id": 0,
...,
"addresses": [
{
"addressType": "Mailing",
"atSince": null,
"city": "Seattle",
"country": "US",
"line1": "325 5th Ave N",
"line2": "#101",
"state": "WA",
"zipCode": "98109"
}
]
}
// v3
{
"details": {
"mailingAddress": {
"address1": "325 5th Ave N",
"address2": "#101",
"city": "Seattle",
"state": "WA",
"zip": "98109",
"countryCode": "US",
"county": "King"
},
"physicalAddress": null
}
}
Physical Address
json
// v1
{
"id": 0,
...,
"addresses": [
{
"addressType": "Physical",
"atSince": "2000-01-01",
"city": "Seattle",
"country": "US",
"line1": "325 5th Ave N",
"line2": "#101",
"state": "WA",
"zipCode": "98109"
}
]
}
// v3
{
"details": {
"mailingAddress": null,
"physicalAddress": {
"address1": "325 5th Ave N",
"address2": "#101",
"city": "Seattle",
"state": "WA",
"zip": "98109",
"countryCode": "US",
"county": "King"
},
"phsyicalAtSince": "2000-01-01"
}
}
// v1
{
"id": 0,
...,
"addresses": [
{
"addressType": "Physical",
"atSince": "2000-01-01",
"city": "Seattle",
"country": "US",
"line1": "325 5th Ave N",
"line2": "#101",
"state": "WA",
"zipCode": "98109"
}
]
}
// v3
{
"details": {
"mailingAddress": null,
"physicalAddress": {
"address1": "325 5th Ave N",
"address2": "#101",
"city": "Seattle",
"state": "WA",
"zip": "98109",
"countryCode": "US",
"county": "King"
},
"phsyicalAtSince": "2000-01-01"
}
}
BusinessProfiles
Removed. A client will never have more than one BusinessProfile, and business information has been moved to the Client Details object. A V3 Client with Details.BusinessType: None
is equivalent to a V1 client with no BusinessProfiles.
DBAName
Moved to Client Details.DBAName.
FEIN
Moved to Client Details.FEINNum.
LicenseNumber
Moved to Client Details.LicenseNum.
NAICS
Moved to Client Details.NAICS
Name
Moved to Client Details.BusinessName
Contacts
Contacts that existed in V1 BusinessProfiles have been moved to the Client Contacts array.
BusinessProfile JSON
json
// v1
{
"businessProfiles": [
{
"dbaName": "",
"fein": "",
"licenseNumber": "",
"naics": "",
"name": "",
"type": "Corporation",
"contacts": [
{
"allowMarketing": false,
"contactType": "CellPhone",
"data": "",
"description": "",
"displayOrder": 1,
"isBillingContact": false
}
]
}
]
}
// v3
{
"details": {
"businessType": "Corporation",
"companyName": "", // from name
"dbaName": "",
"feinNum": "",
"licenseNum": "",
"naics": ""
},
"contacts": [
{
"type": "CellPhone",
"personId": null,
"allowMassEmail": false,
"isBillingContact": false,
"description": "",
"data": "",
"priority": 1
}
]
}
// v1
{
"businessProfiles": [
{
"dbaName": "",
"fein": "",
"licenseNumber": "",
"naics": "",
"name": "",
"type": "Corporation",
"contacts": [
{
"allowMarketing": false,
"contactType": "CellPhone",
"data": "",
"description": "",
"displayOrder": 1,
"isBillingContact": false
}
]
}
]
}
// v3
{
"details": {
"businessType": "Corporation",
"companyName": "", // from name
"dbaName": "",
"feinNum": "",
"licenseNum": "",
"naics": ""
},
"contacts": [
{
"type": "CellPhone",
"personId": null,
"allowMassEmail": false,
"isBillingContact": false,
"description": "",
"data": "",
"priority": 1
}
]
}
Claims
See Claim for details about changes to the Claim model.
Contacts
In the V1 API, this list only contained contacts that were not associated to a Person or Business. The list now contains all contacts for the client, with optional links to a Person. Client Contacts (those not associated with a Person) still appear in this list, along with Contact previously belonging to a BusinessProfile or Person. Clients linked to a person will have the PersonId property set.
See Contact for changes to the Contact model.
Details (new)
This is a new object, mostly containing properties that were moved from the Client object.
PersonalProfiles
Renamed to People. See Person for detailed changes.
Policies
The Policy list still contains all non-archived policies on the client. See Policy for details about changes to the Policy model.
Users
Removed. CSR and Producer are now located in Client Details.
Additional Interest
City
Removed. See Address.
Fax
No change.
IsArchived
Removed. Archived items are not included. This value was always false in the V1 API.
IsPayor
No change
LoanNumber
No change
Name
No change
Phone
No change
Rank
No change
State
Removed. See Address.
Type
TODO
ZipCode
Removed. See Address.
Address (new)
This object replaces the V1 City, State, and ZipCode properties. See Address for the full model.
Address
AddressType
Removed.
AtSince
Removed. See Details.PhysicalAtSince for Phsyical Address. This property is not stored for Mailing Address.
City
No change.
Country
Renamed to CountryCode.
Line1
Renamed to Address1
Line2
Renamed to Address2
State
No change.
ZipCode
Renamed to Zip
County
New in V3.
json
// v1
{
"addressType": "Mailing",
"atSince": null,
"city": "Seattle",
"country": "US",
"line1": "325 5th Ave N",
"line2": "#101",
"state": "WA",
"zipCode": "98109"
}
// v3
{
"address1": "325 5th Ave N", // from line1
"address2": "#101", // from line2
"city": "Seattle",
"state": "WA",
"zip": "98109", // from zipCode
"countryCode": "US", // from country
"county": "King" // new
}
// v1
{
"addressType": "Mailing",
"atSince": null,
"city": "Seattle",
"country": "US",
"line1": "325 5th Ave N",
"line2": "#101",
"state": "WA",
"zipCode": "98109"
}
// v3
{
"address1": "325 5th Ave N", // from line1
"address2": "#101", // from line2
"city": "Seattle",
"state": "WA",
"zip": "98109", // from zipCode
"countryCode": "US", // from country
"county": "King" // new
}
Animal Exposure
PersonalBuildingUnderwritingId
Removed. The Id can be inferred by the PersonalBuildingUnderwriting object in which the Anmial Exposure is listed.
AutoVehicle
The AutoVehicle replaces both PersonalAuto and CommercialAuto types from V1. The schema no longer depends on the value of the Type property. Optional PersonalInfo and CommercialInfo properties have been added to the AutoVehicle model.
Contact
AllowMarketing
Renamed to AllowMassEmail.
ContactType
No change.
Data
No change.
Description
No change.
DisplayOrder
Renamed to Priority. Contacts are no longer explicitly ordered. Some contacts may have the same priority value. A higher value means the contact is higher priority and should be used before other contacts with a lower value.
Coverage
ParentType (new)
All coverages are now listed at the Policy level. This property along with ParentId identifies the object a coverage belongs to.
Values: Policy, LOB, LocationReference, BuildingReference, Auto, Boat
ParentId (new)
All coverages are now listed at the Policy level. This property along with ParentType identifies the object a coverage belongs to.
Code
No change
Description
No change
DisplayOrder
Removed.
Limits
No change
Deductibles
No change
Premium
No change
Percent
No change
Options
Removed. Replaced by 3 sets of OptionCode and OptionDescription properties.
OptionCode1 (new)
OptionCode2 (new)
OptionCode3 (new)
OptionDescription1 (new)
OptionDescription2 (new)
OptionDescription3 (new)
AdditionalInterests
Removed. AdditionalInterests belonging to a coverage will be listed in the Policy level AdditionalInterests list with a ParentId referencing the Coverage.
LineOfBusiness
TODO
Location
TODO
Person
Contacts
Removed. Contacts linked to a Person will appear in the Client Contacts list.
EducationLevel
Renamed to Education.
Gender
See Gender (TODO)
Income
The type has changed from decimal to string (TODO?)
IsArchived
Removed. Archived Person records will no longer be returned.
IsMainContact
Moved to Client Details. The MainContacts list contains the Id of each Person who is a main contact.
MaritalStatus
TODO
NickName
Renamed to PreferredName.
Order
Removed.
ResidenceType
Renamed to Homeowner. TODO
YearOfBirth
Removed. DateOfBirth contains the year of birth.
Policy
AccountNumber
No change
AgentCode
No change
ApplicationType
TODO
BillingPlan
No change
Carrier
No longer optional.
CancellationDate
Removed. If status is Cancelled, then StatusDate is the scheduled Cancellation Date.
CurrentPremium
Removed
CurrentRate
Removed
DaysLapsed
Removed
EffectiveDate
No change
ExpirationDate
No change
InceptionDate
No change
IsArchived
Removed. Archived policies are not included and this value was always false.
NAIC
No change
OfficeId
No change
PaymentPlan
TODO
PolicyNumber
No change
Program
No longer optional.
QuotedPremium
This value is now optional.
Rater
Renamed to RaterCode
RenewalDate
Removed. If Status is Renewal, the StatusDate is the Renewal Date.
RewriteDate
Removed. If Status is Rewrute, the StatusDate is the Rewrite Date.
SoldDate
No change
Source
No change
State
Renamed to PolicyState
Type
No change
Status
The status values of "Suspect", "Quote", and "Expired" have been removed. The value "Unknown" has been renamed to "Unassigned". The remaining value are unchanged. See PolicyStatus for the full list of possible values.
StatusDate
No change.
SubStatus
No change
Term
TODO
Title
No longer optional
DisplayOrder
Renamed to PolicyIndex
TypeName
Removed. This value was previously used to determine which JSON model the policy adhered to (certain properties were only available on certain policy types). All policies now share the same model.
AdditionalInterests
See AdditionalInterest for details.
Coverages
This list now contains all coverages for the policy. Coverages that were previously found on Lines of Business, Autos, etc. are all contained in this list, and will have an appropriate ParentType and ParentId. See Coverage for details.
LineOfBusiness
See LineOfBusiness
Locations
See Location
LocationReferences (new)
This collection replaces the LineOfBusinessLocationBuildings list found on the V1 LineOfBusinessModel.
TODO: examples mapping Coverages on V1 LobLocation & LobLocationBuilding to Coverages pointing to a LocationReference or BuildingReference
Autos (new)
This list now contains all Personal and Commercial Auto Vehicles in a policy. In V1, Autos and Boats were found on the Vehicle list on each Line of Business. Autos and Boats have been separated and moved up to the Policy level. Each V3 Auto will have a LobId linking it to a Line of Business on the Policy.
Drivers (new)
This list now contains all Auto Drivers in a Policy. In V1, Auto Drivers and Boat Operators were found on the Drivers list on each Line of Business. Auto Drivers and Boat Operators have been separated and moved up to the Policy level. Each V3 Auto Driver will have a LobId linking it to a Line of Business on the Policy.
Boats (new)
This list contains all Boats in a Policy. In V1, Autos and Boats were found on the Vehicle list on each Line of Business. Autos and Boats have been separated and moved up to the Policy level. Each V3 Boat will have a LobId linking it to a Line of Business on the Policy.
BoatOperators (new)
This list now contains all Boat Operators in a Policy. In V1, Auto Drivers and Boat Operators were found on the Drivers list on each Line of Business. Auto Drivers and Boat Operators have been separated and moved up to the Policy level. Each V3 Boat Operator will have a LobId linking it to a Line of Business on the Policy.
Users
Removed. See Agent1, Agent2, and Agent3.
Log
Refid
No change
TS
No change
PolicyIndex
Renamed to PolicyId. Instead of identifying policies by their display order, they are now identified by their GUID Id.
Action
Renamed to Channel. The allowed values are unchnaged.
Description
Removed. See Note.
Body
Removed. See Note.
Note (new)
This field replaces the Description and Body fields from V1. To replicate the behavior of V1, include your Description as the first line of Note followed by the Body.
Suspense
Removed. See Task.
Task
Tasks replace V1 Suspenses and add new optional functionality. Users can be assigned by email instead of initials. Tasks also have a Title and Description field that can be used to provide more detail than a Suspense allowed.
Title (new)
Description (new)
Category
No change
DueDate
No change
AssignedToRole
No change
AssignedToEmail
Replaces V1 SuspendedForInitials