Producer codes
A producer code is a unique alphanumeric id assigned to a producer. Producer codes are also assigned to policies to identify the producer associated with the policy.
For example, the producer Allrisk Insurance may have a producer code of AI-50701. Whenever a policy is issued that must be associated with Allrisk Insurance, the policy is given the producer code AI-50701.
A producer may have multiple producer codes so that a given policy can be associated with a specific section of the producer's business or a specific tier. For example, Armstrong and Company could have the following producer codes:
- 100-002541 - For Armstrong premier clients
- 501-002542 - For Armstrong's Los Angeles branch
- 501-002543 - For Armstrong's San Diego branch
- 501-002544 - For Armstrong Professional Liability Services
- 501-002545 - For Armstrong Employer Services
- 501-002546 - For Armstrong Caymen Captive Services
A policy associated with Armstrong and Company for premier clients would have a producer code of 100-002541. A policy associated with Armstrong and Company's Professional Liability Services would have a producer code of 501-002544.
Querying for producer codes
There are several endpoints that retrieve producer code information. Most of them are in the Admin API, but there is one in the Account API. The following table summarizes them.
API | Endpoint | Description |
---|---|---|
Account | GET /account/v1/producer-codes |
Returns only the producer codes available to the caller. Omits producer codes that the caller cannot use (such as producer codes that are inactive or that are not available to the specific caller). |
Admin | GET /admin/v1/producer-codes |
Returns all producer codes, regardless of their status. |
Admin | GET
/admin/v1/organizations/{organizationId}/producer-codes |
Returns all producer codes for a given organization. |
Admin | GET /admin/v1/producer-codes/{producerCodeId} |
Returns information about a specific producer code. |
For example, the following call retrieves information about all producer codes using the Admin API endpoint:
GET /admin/v1/producer-codes
{
"count": 25,
"data": [
{
"attributes": {
"branch": {
"branchCode": "301",
"displayName": "Minneapolis Branch UW",
"id": "pc:S17f59YeYbDQEVkdUiua9"
},
"code": "301-008578",
"description": "ACV Property Insurance",
"displayName": "301-008578",
"id": "pc:16",
"organization": {
"displayName": "ACV Property Insurance",
"id": "pc:4",
"type": "Organization",
"uri": "/admin/v1/organizations/pc:4"
},
"producerStatus": {
"code": "Active",
"name": "Active"
}
},
...
GET /admin/v1/organizations/pc:1/producer-codes
{
"count": 6,
"data": [
{
"attributes": {
"branch": {
"branchCode": "501",
"displayName": "Los Angeles Branch UW",
"id": "pc:SKLwZJB_J2trSnepw0UsV"
},
"code": "100-002541",
"description": "Armstrong (Premier)",
"displayName": "100-002541",
"id": "pc:6",
"organization": {
"displayName": "Armstrong and Company",
"id": "pc:1",
"type": "Organization",
"uri": "/admin/v1/organizations/pc:1"
},
"producerStatus": {
"code": "Active",
"name": "Active"
}
},
...
Creating producer codes
Use the following endpoint to create a producer code:
- POST
/admin/v1/producer-codes
endpoint.
Producer roles
In PolicyCenter, a producer can have one or more users who are able to log on to PolicyCenter and execute work on behalf of the insurer, such as creating accounts or quoting submissions for policies that the producer will help to service.
Typically, users that work for producers do not have the same range of capabilities as a user who works for the insurer. PolicyCenter uses roles to define what a user can and cannot do. A role is a set of system permissions that define user capabilities, such as "create account" or "quote job".
Roles are not associated with organizations (producers). Rather, they are associated with producer codes. When you create a producer code, you must specify the id of one or more roles. Users who work for the producer are then associated with one or more producer codes. This defines what each producer user is capable of doing.
Minimum creation criteria
When you create a producer code, you must specify:
code
: The alphanumeric id of the codeid
: The id of the producer organizationroles
: An array of one or more roles. Each member of the ray specifies one role by its id.
For example, the following request creates a new producer code 301-008578 for producer pc:4 with the role of "producer".
POST /admin/v1/producer-codes
{
"data": {
"attributes": {
"code": "301-008579",
"organization": {
"id": "pc:4"
},
"roles": [
{
"id": "producer"
}
]
}
}
}
Updating producer codes
Use the following endpoint to modify an existing producer code:
- PATCH
/admin/v1/producer-codes/{producerCodeId}
PATCH /admin/v1/producer-codes/pc:664
{
"data": {
"attributes": {
"appointmentDate": "2022-07-09"
}
}
}
Managing producer codes for users and groups
By default, PolicyCenter users who have sufficient permission to work on policies can work on any policy in the database. PolicyCenter can also restrict a user's access to only the policies with a certain set of producer codes. This feature is known as producer code security.
Producer code security lets you associate specific producer codes with a group or with a user. When a user is subject to producer code security, they can only interact with policies whose producer code is associate with them directly or with a group they belong to.
For more information on producer code security, see the Application Guide.
You can manage a user's producer codes and a group's producer codes through Cloud API.
The UserProducerCode
and GroupProducerCode
endpoints
Users and producer codes are tracked as separate User
and
ProducerCode
entities. There is a third entity,
UserProducerCode
, whose purpose is to track information about one
association between a user and a producer code.
Similarly, groups and producer codes are tracked as separate entities. The
GroupProducerCode
is a third entity that tracks information about
one association between a group and a producer code.
When you call an endpoint that ends with "/{userId}/producer-codes
" or
"/{groupId}/producer-codes
", you are retrieving, creating, or
modifying instances of UserProducerCode
or
GroupProducerCode
. Note the following:
- The id field in a
UserProducerCode
/GroupProducerCode
instance is the id of the association. - When you create or delete a
UserProducerCode
/GroupProducerCode
instance, you are not creating or deleting producer codes. You are only creating or deleting associations between users or groups and producer codes.
The UserProducerCode
and endpoints can be used only on users that are
subject to producer code security.
Querying for user and group producer codes
To retrieve information about a user's producer codes, use the following endpoints:
- GET
/admin/v1/users/{userId}/producer-codes
- GET
/admin/v1/users/{userId}/producer-codes/{producerCodeId}
To retrieve information about a group's producer codes, use the following endpoints:
- GET
/admin/v1/group/{groupId}/producer-codes
- GET
/admin/v1/group/{groupId}/producer-codes/{producerCodeId}
GET /admin/v1/users/pc:305/producer-codes
{
"count": 1,
"data": [
{
"attributes": {
"id": "pc:707",
"producerCode": {
"displayName": "301-008578",
"id": "pc:535"
},
"roles": [
{
"displayName": "Producer Code - Submissions",
"id": "producercode_submission",
"type": "Role",
"uri": "/admin/v1/roles/producercode_submission"
}
]
}
...
Similarly, the following is the snippet of the response payload when retrieving producer codes for group pc:669:
GET /admin/v1/users/pc:669/producer-codes
{
"count": 1,
"data": [
{
"attributes": {
"branch": {
"branchCode": "301",
"displayName": "Minneapolis Branch UW",
"id": "pc:SsUrnb0oJPcQaFYvQOGH4"
},
"code": "301-008578",
"description": "ACV Property Insurance",
"id": "pc:16",
"producerCode": {
"displayName": "301-008578",
"id": "pc:16"
},
"producerStatus": {
"code": "Active",
"name": "Active"
}
},
...
Associating producer codes with users and groups
Creating an association
To associate a producer code with a user or group, use the following endpoint:
- POST
/admin/v1/users/{userId}/producer-codes
- POST
/admin/v1/groups/{groupId}/producer-codes
The only required field is the id of the producer code to be associated with the user or group.
For example, the following request associates producer code pc:535 with user pc:310.
POST /admin/v1/users/pc:310/producer-codes
{
"data": {
"attributes": {
"producerCode": {
"id": "pc:535"
}
}
}
}
Similarly, the following request associates producer code pc:17 with group pc:669.
POST /admin/v1/groups/pc:669/producer-codes
{
"data": {
"attributes": {
"producerCode": {
"id": "pc:17"
}
}
}
}
Deleting an association
To remove the association between a producer code and a user or group, use the following endpoint:
- DELETE
/admin/v1/users/{userId}/producer-codes/{producerCodeId}
- DELETE
/admin/v1/groups/{groupId}/producer-codes/{producerCodeId}
For example, the following request disassociates producer code pc:535 with user pc:310.
DELETE /admin/v1/users/pc:310/producer-codes/pc:535
<no request body>
Similarly, the following request disassociates producer code pc:17 with group pc:669:
DELETE /admin/v1/groups/pc:669/producer-codes/pc:17
<no request body>
Exposing producer codes to external users
By default, producer codes are not exposed to external users. An external user is a user that is not in the PolicyCenter database, such as an account holder.
In the PolicyCenter config.xml
configuration file, the
ExternallyVisibleProducerCodes
parameter can be used to expose one or
more producer codes to external users. The parameter accepts a comma-separated list of
producer codes, in string format:
<param name="ExternallyVisibleProducerCodes" value="ProdCode1,ProdCode2"/>
For details on PolicyCenter configuration, see the Configuration Guide.