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"
                }
            },
            ...
The following call retrieves information about the producer codes for organization pc:1.
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 code
  • id: The id of the producer organization
  • roles: 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}
For example, the following request sets the appointment date (the date the code came into effect) for producer code pc:664.
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}
For example, the following is the snippet of the response payload when retrieving producer codes for user pc:305.
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.