--- title: Pivotal Cloud Foundry discovery description: The ServiceNow Discovery application finds Pivotal Cloud Foundry \(PCF\) version 3 components using the Pivotal Cloud Foundry pattern. Discovering some of these resources might require updating to the latest version of the Discovery and Service Mapping Patterns application from the ServiceNow Store. locale: en-US canonical_url: https://www.servicenow.com/docs/r/australia/it-operations-management/discovery-and-service-mapping-patterns/pivotal-cloud-foundry.html release: australia product: Discovery and Service Mapping Patterns classification: discovery-and-service-mapping-patterns topic_type: concept last_updated: "2026-03-12" reading_time_minutes: 8 breadcrumb: [Available on-premise discovery patterns, Discovery patterns used by ITOM Visibility, ITOM Visibility, IT Operations Management] --- # Pivotal Cloud Foundry discovery The ServiceNow Discovery application finds Pivotal Cloud Foundry \(PCF\) version 3 components using the Pivotal Cloud Foundry pattern. Discovering some of these resources might require updating to the latest version of the Discovery and Service Mapping Patterns application from the ServiceNow Store. You can use this pattern on the ServiceNow AI Platform starting Kingston version. The discovery of PCF V3 components is supported when the Discovery and Service Mapping Patterns plugin Version 1.0.99, March 2023 is installed. The Pattern continues to support the discovery of PCF V2 components. ## Request apps on the Store Visit the [ServiceNow Store](https://store.servicenow.com/sn_appstore_store.do#!/store/home) to view all the available apps, and for information about submitting requests to the store. For cumulative release notes information for all released apps, see the [ServiceNow Store version history release notes](https://www.servicenow.com/docs/r/store-release-notes/sn-store-release-notes.html). ## Prerequisites - **Pivotal Cloud Foundry credentials** Create the Pivotal Cloud Foundry credentials. 1. Navigate to **Discovery** > **Credentials**. 2. Select **New**. 3. Select **CloudFoundry Credentials**. 4. On the form, fill in the fields:
Field Description
Name Credential name. As an example, `pcf_user credentials`
Active Option for enabling this credential for discovery. Select this check box to enable discovery.
Applies to Credentials that you may or may not want to apply to **All MID servers** in your network, or to one or more **Specific MID servers**. Select **Specific MID servers**.
Order Order in which the platform tries this credential as it tries to log in to devices. A smaller number indicates that the credential seems higher in the list. Establish the credential order when using large numbers of credentials or when security locks out users after three failed logins tries. If all the credentials have the same order number, or none, the instance tries the credentials in a random order. The default value is 100.
User name Name of the user of these credentials. Avoid leading or trailing spaces in user names. A warning seems if the platform detects leading or trailing spaces in the user name. An example is `pcf_user`. Use the `client_id` that is used to generate the JWT token.
Password Password for the user of these credentials. Use the `client_secret` that is used to generate the JWT token.
Credential alias Alternate name for these credentials. As an example, `cf` If this field is closed, select the unlock icon to unlock the field.
5. Select **Update**. - **JSON web token credentials** To verify the JSON web token \(JWT\), perform the following token validation steps. The format of the JWT token is: [https://docs.cloudfoundry.org/api/uaa/version/4.27.0/index.html\#jwt-bearer-token-grant](https://docs.cloudfoundry.org/api/uaa/version/4.27.0/index.html#jwt-bearer-token-grant) 1. Run the following cURL script against the User Account and Authentication \(UAA\) server API and verify the results: `curl -s -k https://ip_address:port/oauth/token -X; POST -H ”Content-Type: application/x-www-form-urlencoded” -H “Accept: application/json” -d “client_id=&client_secret=&grant_type=client_credentials&token_format=jwt&response_type=token”` If this command doesn’t generate a token, verify that the credentials in the ServiceNow repository are correct, otherwise go to step 2. 2. Run the following cURL script against Pivotal Cloud Foundry API: `curl https://ip_address:port/v3/spaces -k -v -H “Accept: application/json” -H “Authorization: bearer”` If this command doesn’t retrieve the PCF spaces information, verify the credentials on the ServiceNow credentials repository. - **Credentials for V3 API elements** Provide a read-only user with permission to use the following API elements: - –/v3/organizations - –/v3/spaces - –/v3/domains - –/v3/routes - –/v3/organization\_quotas - –/v3/space\_quotas - –/v3/apps - -/v3/service\_offerings - -/v3/service\_plans - -/v3/service\_instances - -/v3/droplets **Note:** The Pivotal Cloud Foundry Pattern also supports the PCF V2 APIs. - **Create a serverless Discovery schedule** 1. Navigate to **Discovery** > **Discovery Schedules**. 2. Select **New**. 3. On the form, fill in the fields: |Field|Description| |-----|-----------| |Name|Enter a unique and descriptive name for this Discovery schedule, for example, `pcf`| |Discover|For the Discover type, select **Serverlesss**| |MID Server|MID Servers that the credentials apply to. Specify the required MID Server, for example, `Discovery_Server`| |Active|Option for enabling this credential for discovery. Select this check box to enable discovery.| |Credential alias|Alternate name for these credentials. Use the alias related with the Pivotal Cloud Foundry credentials that you created earlier.| 4. Right-click the header of the Discovery Schedule form and select **Save**. \[Omitted image "serverless-execution-pattern.png"\] Alt text: Serverless execution pattern 5. Select the Serverless Execution Patterns tab. 6. Select **New**. 7. On the form, fill in the fields: |Field|Description| |-----|-----------| |Name|Enter a unique and descriptive name for this Serverless Execution Pattern, for example, `pcf1`| |Pattern|Select **CloudFoundry**.| |Proxy Host|Fully qualified domain name of the machine on which you’re installing the proxy server. Specify **Global**.| |Active|Check box to enable this schedule for discovery. Select this check box.| 8. Right-click the header of the Serverless Execution Patterns form and select **Save**. 9. Select the Serverless Execution Patterns tab 10. Create and define the serverless execution pattern as described in the product documentation. Configure the parameters required by the Pivotal Cloud Foundry Pattern as follows: |Parameter|Description| |---------|-----------| |Organization|Name of the organization that is required to be discovered, or all where the input is “\*”.| |CredentialAlias|Alternate name for these credentials. Use the alias related with the Pivotal Cloud Foundry credentials that you created earlier.| |URL\_CF|API URL of the Cloud Controller that is used to retrieve the information from Pivotal Cloud Foundry.| |URL\_CF\_AUTH|UAA server API​that is used to generate the token. Enter the value in the format: https://uaa.sys.dev.phx.pcf.example.com/oauth/token| 11. **Update**. 12. To start discovery, navigate to the Serverless Discovery definition and select **Discover Now**. - **EVAL closure functions** Use the following EVAL closure functions to concatenate all organizations with “,” as a separator. ``` var rtrn = ’’; var organizations = ${organizations[*].name}; var beforeReturn = ’’; var separator = ’’; for (var i = 0; i < organizations.size(); i++) { beforeReturn += separator + organizations.get(i); separator = ','; } rtrn = beforeReturn; ``` Use the following EVAL closure functions to return 1 if the operational status is active and 2 if it isn’t active. ``` var rtrn = ''; var currentOrgStatus = ${organizations[].operational_status}; var status = currentOrgStatus.toLowerCase(); if(status == "active"){ rtrn = "1"; } else { rtrn = "2"; } ``` Use the following EVAL closure function to return 1 if the operational status is started and 2 if it isn’t started. ``` var rtrn = ''; var currentAppStatus = ${apps[].state}; var status = currentAppStatus.toLowerCase(); if(status == "started"){ rtrn = "1"; } else { rtrn = "2"; } ``` - **CloudFoundry Get Call** The CloudFoundry Get Call custom operation handles the generation of tokens. It uses the credentials and URL\_CF\_AUTH context variable to generate a token that is used to create API calls. When a token is generated, the URL\_CF is used to create the API calls defined in the **Resource** field. The custom operation also handles pagination where the response has more than one page. CloudFoundry Get Call parses the input JSON to populate the tables and variables. \[Omitted image "cloud-foundry-custom-operation.png"\] Alt text: Cloud Foundry custom operation ## Pivotal Cloud Foundry BOSH extension section The Pivotal Cloud Foundry BOSH is an extension section of the Pivotal Cloud Foundry Pattern. The extension is available on the ServiceNow® Store for the June 2023 release of Discovery and Service Mapping Patterns 1.6.0. - **Requirements for Pivotal Cloud Foundry BOSH** **Note:** The following requirements are relevant only to the BOSH extension section. The Opsman authentication URL has to be provided as a pattern parameter with the name **URL\_OPSMAN\_AUTH**. For example: `https:///uaa/oauth/token` The added credentials must have permission to execute the following APIs: - /uaa/oauth/token - /api/v0/deployed/products **Note:** Custom APIs are added as Tanzu Opsman Get API step to the Pattern. ## Data collected by Discovery during horizontal discovery
Field Description
Main CI: PCF Foundation \[cmdb\_ci\_pcf\_foundation\]
Name Pivotal Cloud Foundry cluster entry name`-`
ip\_address Pivotal Cloud Foundry host IP.
port Pivotal Cloud Foundry service port.
short\_description Pivotal Cloud Foundry service build number.
Organization Organization list, managed by PCF cluster. The entries are separated using a “,” comma separator.
PCF Organization \[cmdb\_ci\_pcf\_organization\]
Name Organization name
URL Organization unique URL
pcf\_guid Organization UID in CF
operational\_status Organization status
PCF Space \[cmdb\_ci\_pcf\_space\]
Name Space name
URL Space unique URL
pcf\_guid Space UID in CF
PCF Application \[cmdb\_ci\_pcf\_appl\]
Name Application name
URL Application unique URL
pcf\_guid Application UID in CF
PCF Route \[cmdb\_ci\_pcf\_route\]
Name Route name
URL Route unique URL
pcf\_guid Route UID in CF
port Route port
type Route type
PCF Quota \[cmdb\_ci\_pcf\_quota\]
Name Quota name
URL Quota unique URL
pcf\_guid Quota UID in CF
PCF Domain \[cmdb\_ci\_pcf\_domain\]
name Domain name
url Domain unique URL
pcf\_guid Domain UID in CF
PCF Space instance \[cmdb\_ci\_pcf\_space\_instance\]
name Space service instance name
url Space service instance unique URL
pcf\_guid Space service instance UID in CF
PCF Service Plan \[cmdb\_ci\_pcf\_service\_plan\]
name Service plan instance name
url Service plan unique URL
pcf\_guid Space service instance UID in CF
PCF Service \[cmdb\_ci\_pcf\_service\]
name Service name
url Service unique URL
pcf\_guid Service UID in CF
PCF Droplet \[cmdb\_ci\_pcf\_droplet\]
name Resource URL
pcf\_guid Droplet ID
url Droplet URL
install\_status Installation status: 1, "installed"
operational\_status Operational status: 1, "operational"
Key Value \[cmdb\_key\_value\]
key Resource Tag key**Note:** This data is only collected for V3 API calls.
value Resource Tag value.**Note:** This data is only collected for V3 API calls.
Field Description
BOSH Deployment \(cmdb\_ci\_bosh\_deployment\)
Name The installation name of the resource.
object\_id The ID of the deployed product.
install\_status Hard-coded to the value: *1= installed*.
operational\_status Hard-coded to the value: *1= operational*.
deployment\_version The version of the deployed product.
deployment\_type The type of the deployed product.
## CI relationships These relationships are created to support Pivotal Cloud Foundry discovery.
CI Relationship CI
PCF Space \[cmdb\_ci\_pcf\_space\]
cmdb\_ci\_pcf\_space Contains::Contained by cmdb\_ci\_pcf\_organization
PCF Application \[cmdb\_ci\_pcf\_appl\]
cmdb\_ci\_pcf\_appl Contains::Contained by cmdb\_ci\_pcf\_space
PCF Route \[cmdb\_ci\_pcf\_route\]
cmdb\_ci\_pcf\_route Contains::Contained by cmdb\_ci\_pcf\_foundation
PCF Quota \[cmdb\_ci\_pcf\_quota\]
cmdb\_ci\_pcf\_quota Uses::Used by cmdb\_ci\_pcf\_spacecmdb\_ci\_pcf\_organization
PCF Domain \[cmdb\_ci\_pcf\_domain\]
cmdb\_ci\_pcf\_domain Uses::Used by cmdb\_ci\_pcf\_route
Owns::Owned by cmdb\_ci\_pcf\_organization
Contains::Contained by cmdb\_ci\_pcf\_foundation
PCF Space instance \[cmdb\_ci\_pcf\_space\_instance\]
cmdb\_ci\_pcf\_space\_instance Contains::Contained by cmdb\_ci\_pcf\_space
PCF Service Plan \[cmdb\_ci\_pcf\_service\_plan\]
cmdb\_ci\_pcf\_service\_plan Uses::Used by cmdb\_ci\_pcf\_space\_instance
PCF Service \[cmdb\_ci\_pcf\_service\]
cmdb\_ci\_pcf\_service Uses::Used by cmdb\_ci\_pcf\_service\_plan
PCF Droplet \[cmdb\_ci\_pcf\_droplet\]
cmdb\_ci\_pcf\_appl Contains::Contained by cmdb\_ci\_pcf\_droplet
Key Value \[cmdb\_key\_value\]
cmdb\_key\_value Reference only.For example: configuration\_item cmdb\_ci\_pcf\_droplet
cmdb\_key\_value Reference only.For example: configuration\_item cmdb\_ci\_pcf\_organization
cmdb\_key\_value Reference only.For example: configuration\_item cmdb\_ci\_pcf\_space
cmdb\_key\_value Reference only.For example: configuration\_item cmdb\_ci\_pcf\_domain
cmdb\_key\_value Reference only.For example: configuration\_item cmdb\_ci\_pcf\_route
cmdb\_key\_value Reference only.For example: configuration\_item cmdb\_ci\_pcf\_appl
cmdb\_key\_value Reference only.For example: configuration\_item cmdb\_ci\_pcf\_service
cmdb\_key\_value Reference only.For example: configuration\_item cmdb\_ci\_pcf\_service\_plan
cmdb\_key\_value Reference only.For example: configuration\_item cmdb\_ci\_pcf\_space\_instance
## Pivotal Cloud Foundry BOSH relationships These relationships are created to support Pivotal Cloud Foundry BOSH extension section discovery.
CI Relationship CI
Cloud Foundry Cluster \[cmdb\_ci\_pcf\_foundation\] Contains::Contained by BOSH Deployment \[cmdb\_ci\_bosh\_deployment\]
**Parent Topic:**[Available on-premise discovery patterns](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/it-operations-management/discovery-and-service-mapping-patterns/available-patterns.md)