FINBOURNE’s Bloomberg Data License Per Security (BBG DLPS) integration allows you to select the Bloomberg content you need to meet your business priorities, and schedule delivery into LUSID.
Bloomberg Data License Per Security is one of Bloomberg’s enterprise Data License products, allowing requests for individual securities on a pay-per-use model across:
Reference
ESG
Pricing
Risk
Regulation
Fundamentals
Estimates
Historical data
More information on Bloomberg Data License.
Prerequisites
Before getting started, ensure you have:
An active DLPS contract with Bloomberg
Contacted your FINBOURNE representative to:
Complete a Third Party Processing and Hosting Agreement (TPPHA) with Bloomberg and FINBOURNE
Enable the integration in your LUSID domain
Provide you with the IP addresses you’ll need to whitelist for the application in your Bloomberg Enterprise Console
Supported data types and methods
Instrument enrichment
You can use the Integrations dashboard to enrich existing LUSID instruments with the data points you need, including groups of data points such as shareholding disclosure. Keep reading this article to learn more.
Instrument creation
LUSID can create fully-defined instruments from Bloomberg data on a schedule, or on demand. Keep reading this article to learn more.
You can also use our suite of Luminesce providers to build bespoke data import requests, which you can schedule or run on demand. Read more.
Setting up the integration
Step 1: Obtain Bloomberg application credentials
First, you must create an application in the Bloomberg Enterprise Console to get your credentials for LUSID:
Sign in to your Bloomberg Enterprise Console portal.
Navigate to Connectivity > WEB API > Monitor and manage.
Select Create new application.
Specify the following values for the application:
Product:
DATA LICENSEProduct ID: Your Bloomberg account number
Application Name:
LUSID
Create the application and securely store the generated credentials. Note the client_id and client_secret values - you’ll need to provide these in LUSID.
Add the Allowed IPs provided by your FINBOURNE representative.
Step 2: Create an integration instance
An integration instance is a configuration of data points to import from Bloomberg.
Navigate to Integrations > Dashboard.
Select Create instance.

Specify the following Integration details:
Name: A friendly name for this integration instance
Description: A detailed description of the instance
Click Edit imported properties > Add properties and select which Bloomberg data fields to import.

Navigate to Integration settings > Instance configuration and populate the fields depending on your requirements:
Instrument selectionInstrument source: How LUSID should determine which instruments to process for this integration instance
Instrument scopes: The instrument scopes LUSID should use to look for instruments in your chosen source; for example, if you choose the Refresh reference data property source, LUSID will look in these scopes for instruments with the
Instrument/LUSIDConfig-Bloomberg-DLPerSecurity/RefreshReferenceDataproperty (read more)

InstrumentsCreate or update instrument definition: Allow LUSID to create new instrument definitions from Bloomberg data that doesn’t match an existing LUSID instrument, and update existing instrument definitions using Bloomberg data.
Create SimpleInstrument if instrument creation fails: Allow LUSID to use the
SimpleInstrumentinstrument type as a fallback if unable to map an instrument to an instrument type, rather than logging as a failure.Scope: The instrument scope to create new instruments in.
Instrument mapper version: The version of LUSID’s Bloomberg instrument mapping logic to use; we recommend using the latest available version.
Configuration overrides: Optional overrides for instrument mapping behaviour, for example CLO index fixings or price scaling; for more information see step 3 of Example B.
Update instrument name: Allow LUSID to update the instrument
displayNameusing Bloomberg data.Update instrument identifiers: Allow LUSID to only populate new instrument identifier values, or, update all instrument identifier values.

PropertiesUse Bloomberg mnemonic codes for property names:
✅ Tick the box to name imported Bloomberg properties using their Bloomberg mnemonic codes rather than LUSID’s default property names.Set property EffectiveFrom to 0001-01-01 on first instrument enrichment: Read more about EffectiveFrom dates
Date property cut time: A time in
HH:mmto append to dates this integration instance processes, used alongside the time zone provided by Bloomberg data.
Legal entities
Create Legal Entities:
✅ Tick the box if you want to create legal entities in LUSID using mappings from certain pairs of Bloomberg fields; read more.
Other settings
Use AdHoc Mode:
✅ Tick the box to have Bloomberg execute your request in AdHoc mode (immediately when Bloomberg receives your request); or,❌ leave the box unticked to have Bloomberg execute your request in One Shot mode (batch processing with a 15 minute delay). This option can help to manage Bloomberg costs; read more.Default pricing source: Optionally, specify a preferred Bloomberg pricing source.
Exclusive pricing source:
✅ Tick this box to only retrieve data from the specified pricing source, disabling fallback to alternative pricing sources.Skip pricing sources: Optionally, specify a comma-separated list of pricing sources to exclude.
Use Data License Plus:
✅ Tick this box to route the Data License REST API request to DL+.Terminal type: Optionally, Bloomberg Professional Services users can complete the following fields to link your Bloomberg Terminal personal defaults:
User Number: You can locate this (and the following fields) by running
IAM<GO>in Bloomberg Terminal.Serial Number: The number to the left of
-within the S/N; for example,<Serial Number>-<Work Station>.Work Station: The number to the right of
-within the S/N.
Decimal precision for numeric fields: Specify your decimal precision preference.

Navigate to the Credentials & diagnostics tab and specify the following:
Client Id and Client Secret: Your Bloomberg credentials retrieved in step 1.
Download Drive File Path: Optional; a path, starting with
LUSID-Horizon, to download data import troubleshooting files in.

Navigate to Execution settings and:
Choose whether to Enable integration on creation.
If you want the integration to run on a schedule, specify one or more cron expressions to trigger runs.
Click Save to create the integration instance. Note the Instance ID, which you need for the next step.
Step 3: Select the instruments to import data for
LUSID selects instruments to import Bloomberg data for using the Instrument source you configured in Step 2. If you selected Refresh reference data property, you must decorate instruments you want to include in integration runs with the Instrument/LUSIDConfig-Bloomberg-DLPerSecurity/RefreshReferenceData property:
Note
The instruments this integration finds don't need a full instrument definition already. If a shell instrument or a
SimpleInstrumenthas theRefreshReferenceDataproperty and at least one identifier Bloomberg recognises, the same run that enriches your existing instruments will also create a full definition for that instrument.
Ensure your instruments have at least one of the following identifiers:
BloombergUniqueId(recommended, ensures result is unambiguous)FigiCusipSedolIsinTicker(must include the Bloomberg yellow key suffix, for exampleVOD LN Equity)
Note: All of the above identifier types have a three-stage key beginning with
Instrument/default/<identifier-type>, for exampleInstrument/default/BloombergUniqueId.Follow these steps to add the instrument property with Scope
LUSIDConfig-Bloomberg-DLPerSecurityand CodeRefreshReferenceDatato one or more instruments you want to include in the Bloomberg integration instance import.
Set the property value to your integration Instance ID from step 2. You can enter more than one ID if you want to include the instrument in multiple integration instances.

Running the integration
See how to run an integration instance.
Monitoring and troubleshooting integration runs
See how to monitor integrations and troubleshoot general issues.
Note
If you have not configured your integration instance to Use Adhoc Mode, the integration uses the Bloomberg One Shot trigger type. Such runs therefore take a minimum of 15 minutes to complete.
LUSID adds Bloomberg data to instruments as properties in the LUSID-Bloomberg-DLPerSecurity scope. The Instrument/LUSID-Bloomberg-DLPerSecurity/BBG_Retrieval_Date property tells you when data was last extracted for each instrument.
Monitoring run details
The Log ID data in the below screen-shot has the following usage for monitoring purposes.
1: You can enter the Source Primary ID Value within Insights > Request Logs to view the request made to LUSID to locate instruments to include for the run, and LUSID’s response.2or3: Details the LUSID instruments included in this integration run and the identifier used to locate the data in BBG DLPS.4: You can use the Source Primary ID Value to view the request within the Bloomberg Data Portal athttps://data.bloomberg.com/per-security/<Bloomberg Account ID>/requests/<Source Primary ID Value>. You can expand the row to view details of the response file from Bloomberg; LUSID saves this file to your specified Download Drive File Path.5or6: Details the data mapping between each instrument identifier in the Bloomberg response and the updated LUSID instrument.

Troubleshooting
Error: Unauthorized
UnauthorizedUnexpectedException
Failed when calling Bloomberg HAPI
Uri : https://api.bloomberg.com/eap/catalogs/
Errored with : Unauthorized
Details : {"errors":[{...
"errorCode":"unauthorized-client",
"status":401,
"detail":"Invalid IP, IP 123.12.123.12 not whitelisted"}],
"error":"unauthorized_client"}If you experience this error, check that the IP listed in the detail has been added to the authorised set in step 1.
Error: Forbidden
ForbiddenUnexpectedException
Failed when calling Bloomberg HAPI
Uri : https://api.bloomberg.com/eap/catalogs/
Errored with : Forbidden
Details : {"error_description":"Error verifying JWT signature.",
"error":"access_denied",
"errors":[{"title":"access_denied",
"detail":"Error verifying JWT signature.",
"meta":{"server-time":1757436416},
"errorCode":"forbidden",
"id":"2c9da3aa-390e-87b3-63a6-b261313587f3",
"status":403}]}If you experience this error, check the values you’ve entered for your Bloomberg credentials in step 2.
Final Status: ResourceFailed Description: Unable to process row
ResourceFailed Description: Unable to process rowBloomberg provides a Return Code (RC) to LUSID in each response:
A value of
0represents a successA non-zero value sets the Final Status column to
ResourceFailed
For such errors, view the logs Description column to see the RC code and a description, if known, of the related error.

Final Status: PayloadExtracted Description: Extracted 0 record(s) from LUSID.
PayloadExtracted Description: Extracted 0 record(s) from LUSID.
If you experience this error, check the following:
Instruments have at least one valid identifier
The
Instrument/LUSIDConfig-Bloomberg-DLPerSecurity/RefreshReferenceDataproperty value is set to the correct instance ID
No Bloomberg data imported for instruments
Check the following:
Your connection to Bloomberg is working
Instruments are configured correctly. See troubleshooting, “PayloadExtracted : Extracted 0 record(s) from LUSID”.
The integration instance is configured to import the relevant fields
A minimum of 15 mins have elapsed since the integration instance was triggered
Appendix A: Usage and cost management
Usage costs incurred from Bloomberg can depend on a variety of factors. LUSID’s BBG DLPS integration can help you to manage your usage costs by:
Processing your requests in cost-effective batches
Allowing you to:
Create different integration instances for different update frequencies, such as static reference data versus intraday pricing
Choose which instruments or commercial categories you want to receive data for
Select and import only the data fields you want
Contact your Bloomberg account representative for more details on your usage.
Appendix B: Legal entity field mapping
LUSID uses the following Bloomberg field mappings to create legal entities:
Legal entity type | Legal entity name | Unique identifier |
|---|---|---|
Issuer |
|
|
Parent company |
|
|
Ultimate parent company |
|
|
Guarantor company |
|
|
Ultimate CAST (capital structure) parent |
|
|
Obligor |
|
|
Parent obligor |
|
|
Ultimate obliger |
|
|
Note
You must specifically request the relevant pair of Bloomberg fields for LUSID to successfully create a legal entity.
For example, if you want to ensure LUSID creates a legal entity for an instrument issuer, you must include
LONG_COMP_NAMEandID_BB_COMPANYin your Imported properties. Note thatID_BB_COMPANYis a mandatory property that LUSID includes in imports by default.To add a property to a legal entity, you must also select the equivalent property in the
instrumentdomain. For example, to addBICS_LEVEL_1_SECTOR_CODEto a legal entity, you must select both of the following properties:
Instrument/LUSID-Bloomberg-DLPerSecurity/BICS_LEVEL_1_SECTOR_CODE
LegalEntity/LUSID-Bloomberg-DLPerSecurity/BICS_LEVEL_1_SECTOR_CODE
