Introduction
The LB Networks OcularIP software is a sophisticated performance management tool that allows network owners to optimize performance and more effectively manage their network. The Nexus Connector for OcularIP allows this critical data to be controlled and visible inside Salesforce - giving Sales professionals key information inside their CRM, and also allowing Service Delivery provisioning of network details instantly in the OcularIP platform.
Function Overview
The connector functions for provisioning that are enabled in the Nexus package are all focused on managing the provisioning of circuit details into the LB Networks OcularIP platform. In order to accomplish this - the following functions are performed (in sequence). Add Circuit, Add Domains, Add Labels, Add Locations. We also have functions available to edit Threshold Profile, Edit Location, Edit MTTR Group and Delete the Circuit.
This capability means that the circuit information stored in Salesforce after a provisioning function is completed can be used to automatically provision the details about that circuit into OcularIP automatically, saving significant time for each circuit that is configured.
The connector function for Query allows for the automatic query of network event data that is maintained in OcularIP. These queries are executed from Salesforce and allows for the retrieval of any specified event information back into Salesforce. Using this data, administrators can create Reports and Dashboards to display critical network events in the Salesforce platform. In addition, administrators can set up FLOWs in Salesforce to react to specific events. For example - an email notification to a Sales rep if a circuit has exceeded 85% utilization, or an email notification to a Support representative if a degradation event is logged.
Implementation Strategy
The typical implementation strategy for this connector is to identify all the detailed information required for Circuit, Domain, Label, and Location details. This information is typically available after provisioning of the Circuit has been completed. Some of this information may need to be gathered from other systems (if systems other than Salesforce were used in the provisioning workflow). These 4 functions can be executed via the Execution Manager (the button on the page layout). However, it is a more efficient deployment step if the entire process is automated.
By collecting all the necessary information onto a single record (e.g. the Service Order), the administrator can set up a single button, or possibly a FLOW to execute all four API calls in sequence. This will greatly reduce the requirements for user interaction, and will establish instant update of the circuit into the OcularIP system. In the next section, we will identify what is necessary to set up information to enable each endpoint individually, and then we'll show a couple of examples where these endpoints can be linked together via button, flow, or APEX trigger call. Ultimately - the administrator will need to determine what automation strategy to employ, and also determine what triggering criteria will need to be met in order to initiate the automation.
For the Search Events Query function - it is most likely useful to "pre-program" the query as an automated flow that runs every night. The Search Events Query object can be populated with parameters - and then the Search Events Query can be executed via FLOW. You can set up multiple Search Events Query objects with different parameters and different FLOW execution schedules. This will allow you to automatically receive network intelligence information from OcularIP on a regular schedule.
Implementation Instructions
Add Circuit
Make sure that the key information required for the Circuit is available on the object. Implementation can be completed by mapping the appropriate fields. You can add information about Threshold Events that you wish to manage (e.g. Threshold exceeds 85% capacity). Circuit Alias is a required field - as it is required for subsequent calls.
Add Domains
Make sure that the key information required for the Domain is available on the object. Implementation can be completed by mapping the appropriate fields (there are only 2 - Circuit Alias and Domain).
Edit Label
Make sure that the key information required for the Label is available on the object. Implementation can be completed by mapping the appropriate fields (there are only 3 - Circuit Alias and Name and Value).
Edit Location
Make sure that the key information required for the Label is available on the object. Implementation can be completed by mapping the appropriate fields (there are 23 fields in this API callout - with Circuit Alias as the identifying key value).
Add Threshold Profile
Make sure that the key information required for the Threshold Profile is available on the object. Implementation can be completed by mapping the appropriate fields (there are only 2 - Circuit Alias and Threshold Profile).
Add MTTR Group
Make sure that the key information required for the MTTR Group is available on the object. Implementation can be completed by mapping the appropriate fields (there are only 2 - Circuit Alias and MTTR Group).
Delete Circuit
The Delete Circuit function can be performed by mapping only 1 field - Circuit Alias.
Search Events
If you have provisioned the circuit with a Threshold Profile - you can query for that Threshold by setting up a Search Events Query. First - you'll need to define a new object: (Suggested: OcularIP Events). In this object - you'll define the records that you want to query from the OcularIP Events database. Create the new object with the following fields:
| end_time | Number |
| acknowledged_time | Number |
| direction | Text |
| acknowledged_by | Text |
| event_name | Text |
| node_name | Text |
| acknowledged_note | Text |
| kpi | Text |
| success | Boolean |
| start_time | Number |
| acknowledged_status | Text |
| category | Text |
| severity | Text |
| circuit_name | Text |
| secondary_circuit_name | Text |
| id | Number |
Once you have defined this object in Salesforce and configured the mapping for this API endpoint - you'll need to set up a Time Triggered Flow to invoke the Search Events API call once a night. This API will pull data into this object. You can then use this data for reports/dashboards and/or specific alert emails within Salesforce to highlight business events. Sample use cases include: Notifications when circuit capacity thresholds are exceeded (indicates potential opportunity for capacity upgrade sale), Outage notifications, QoS Degradation notifications.
Automation Information
If you wish to automate the Circuit provisioning sequence, this would require calling the 4 provisioning APIs in sequence: Add Circuit, Add Domain, Edit Label, Edit Location - you can create a FLOW as follows <Darren - need flow sample to launch this>
API Function Data Dictionary
This document provides details on the Nexus API fields, their event types, and data types, grouped by API function.
Add Circuit
API Field Details
| Nexus API Field Name | Event Type | Data Type |
|---|---|---|
| circuit_alias | Outbound | Text |
| system_z_ip_address | Outbound | Text |
| granularity | Outbound | Text |
| system_z_model | Outbound | Text |
| event_notifications_enabled | Outbound | Text |
| derive_1_way_data_enabled | Outbound | Text |
| max_ordering_bandwidth | Outbound | Text |
| system_z_name | Outbound | Text |
| start_time | Outbound | Number |
| system_a_model | Outbound | Text |
| system_z_manufacturer | Outbound | Text |
| system_a_ip_address | Outbound | Text |
| status | Outbound | Text |
| system_a_name | Outbound | Text |
| system_a_alias | Outbound | Text |
| custom_notifications_enabled | Outbound | Text |
| description | Outbound | Text |
| bandwidth | Outbound | Text |
| circuit_image | Outbound | Text |
| paa_name | Outbound | Text |
| secondary_name | Outbound | Text |
| system_z_alias | Outbound | Text |
| eir | Outbound | Text |
| mrc | Outbound | Text |
| event_notifications_enabled_time | Outbound | Text |
| system_a_manufacturer | Outbound | Text |
| ethernet_profile_description | Outbound | Text |
| util_profile_a_az_name | Outbound | Text |
| suppress_system_z_performance_data_upload | Outbound | Number |
| util_profile_a_za_name | Outbound | Text |
| util_profile_z_za_name | Outbound | Text |
| util_profile_z_az_name | Outbound | Text |
| suppress_system_z_utilization_data_upload | Outbound | Number |
Add Domains
| Nexus API Field Name | Event Type | Data Type |
| circuit_alias | Outbound | Text |
| domains | Outbound | Text |
Delete Circuit
| Nexus API Field Name | Event Type | Data Type |
| circuit_alias | Outbound | Text |
Edit Labels
| Nexus API Field Name | Event Type | Data Type |
| name | Outbound | Text |
| circuit_alias | Outbound | Text |
| value | Outbound | Text |
Edit Locations
| Nexus API Field Name | Event Type | Data Type |
| system_a_address_2 | Outbound | Text |
| system_z_address_1 | Outbound | Text |
| system_z_zip | Outbound | Text |
| system_z_country | Outbound | Text |
| system_z_icon | Outbound | Text |
| system_a_latitude | Outbound | Number |
| system_a_circuit_specific_location | Outbound | Text |
| system_a_zip | Outbound | Text |
| system_a_country | Outbound | Text |
| system_a_location_name | Outbound | Text |
| system_z_latitude | Outbound | Number |
| system_a_icon | Outbound | Text |
| system_a_address_1 | Outbound | Text |
| system_a_city | Outbound | Text |
| system_z_location_name | Outbound | Text |
| circuit_alias | Outbound | Text |
| system_z_circuit_specific_location | Outbound | Text |
| system_z_address_2 | Outbound | Text |
| system_a_longitude | Outbound | Number |
| system_z_state | Outbound | Text |
| system_a_state | Outbound | Text |
| system_z_longitude | Outbound | Number |
| system_z_city | Outbound | Text |
Edit MTTR Group
| Nexus API Field Name | Event Type | Data Type |
| circuit_alias | Outbound | Text |
| mttr_group | Outbound | Text |
Edit Threshold Profile
| Nexus API Field Name | Event Type | Data Type |
| circuit_alias | Outbound | Text |
| threshold_profile | Outbound | Text |
Search Events
API Field Details
| Nexus API Field Name | Event Type | Data Type |
|---|---|---|
| end_time | Inbound | Number |
| acknowledged_time | Inbound | Number |
| direction | Inbound | Text |
| acknowledged_by | Inbound | Text |
| event_name | Inbound | Text |
| node_name | Inbound | Text |
| acknowledged_note | Inbound | Text |
| kpi | Inbound | Text |
| success | Inbound | Boolean |
| start_time | Inbound | Number |
| acknowledged_status | Inbound | Text |
| category | Inbound | Text |
| severity | Inbound | Text |
| circuit_name | Inbound | Text |
| secondary_circuit_name | Inbound | Text |
| id | Inbound | Number |
| include_acknowledged_info | Outbound | Boolean |
| start_time | Outbound | Number |
| event_name | Outbound | Text |
| acknowledged | Outbound | Number |
| end_time | Outbound | Number |
| category | Outbound | Text |
| include_domains | Outbound | Boolean |
| severity | Outbound | Text |