Skip to content

Commit b582ecc

Browse files
sap-success-factors (#27664)
1 parent 5ac019c commit b582ecc

21 files changed

Lines changed: 850 additions & 153 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"name": "SapSuccessFactors",
3+
"displayName": "SAP SuccessFactors Test Connection",
4+
"description": "This Test Connection validates the access against the SAP SuccessFactors OData API and basic metadata extraction of entity types.",
5+
"steps": [
6+
{
7+
"name": "CheckAccess",
8+
"description": "Validate that we can properly reach the SAP SuccessFactors OData API and authenticate with the given credentials by fetching the $metadata endpoint.",
9+
"errorMessage": "Failed to connect to SAP SuccessFactors. Please validate the base URL, company ID, and credentials.",
10+
"shortCircuit": true,
11+
"mandatory": true
12+
},
13+
{
14+
"name": "GetEntities",
15+
"description": "Validate that we can parse the OData $metadata response and discover at least one EntitySet (table).",
16+
"errorMessage": "Failed to parse SAP SuccessFactors $metadata. The response may be empty or malformed.",
17+
"shortCircuit": false,
18+
"mandatory": true
19+
}
20+
]
21+
}
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
{
2+
"$id": "https://open-metadata.org/schema/entity/services/connections/database/sapSuccessFactorsConnection.json",
3+
"$schema": "http://json-schema.org/draft-07/schema#",
4+
"title": "SapSuccessFactorsConnection",
5+
"description": "SAP SuccessFactors Connection Config",
6+
"type": "object",
7+
"javaType": "org.openmetadata.schema.services.connections.database.SapSuccessFactorsConnection",
8+
"definitions": {
9+
"sapSuccessFactorsType": {
10+
"description": "Service type.",
11+
"type": "string",
12+
"enum": [
13+
"SapSuccessFactors"
14+
],
15+
"default": "SapSuccessFactors"
16+
},
17+
"authType": {
18+
"description": "Authentication type to connect to SAP SuccessFactors.",
19+
"type": "string",
20+
"enum": [
21+
"OAuth2Credentials",
22+
"BasicAuth"
23+
],
24+
"default": "BasicAuth"
25+
}
26+
},
27+
"properties": {
28+
"type": {
29+
"title": "Service Type",
30+
"description": "Service Type",
31+
"$ref": "#/definitions/sapSuccessFactorsType",
32+
"default": "SapSuccessFactors"
33+
},
34+
"baseUrl": {
35+
"title": "Base URL",
36+
"description": "SAP SuccessFactors OData API base URL. For example: https://api4.successfactors.com",
37+
"type": "string",
38+
"format": "uri"
39+
},
40+
"companyId": {
41+
"title": "Company ID",
42+
"description": "SAP SuccessFactors Company ID (tenant identifier). Required for all API calls.",
43+
"type": "string"
44+
},
45+
"authType": {
46+
"title": "Authentication Type",
47+
"description": "Choose how to authenticate with SAP SuccessFactors OData API.",
48+
"$ref": "#/definitions/authType",
49+
"default": "BasicAuth"
50+
},
51+
"username": {
52+
"title": "Username",
53+
"description": "SAP SuccessFactors user login name. For BasicAuth: used as the credential username. For OAuth2Credentials: used as the SAML NameID — the user on whose behalf the token is requested. The user must exist in the SF system and be permitted to use the OAuth2 application.",
54+
"type": "string"
55+
},
56+
"password": {
57+
"title": "Password",
58+
"description": "Password for BasicAuth authentication. Required when authType is BasicAuth.",
59+
"type": "string",
60+
"format": "password"
61+
},
62+
"clientId": {
63+
"title": "Client ID",
64+
"description": "OAuth2 Client ID. Required when authType is OAuth2Credentials.",
65+
"type": "string"
66+
},
67+
"privateKey": {
68+
"title": "Private Key",
69+
"description": "PEM-encoded RSA private key used to sign SAML assertions for OAuth2 SAML Bearer flow. Required when authType is OAuth2Credentials.",
70+
"type": "string",
71+
"format": "password"
72+
},
73+
"tokenUrl": {
74+
"title": "Token URL",
75+
"description": "OAuth2 Token endpoint URL. Required when authType is OAuth2Credentials. For example: https://api4.successfactors.com/oauth/token",
76+
"type": "string",
77+
"format": "uri"
78+
},
79+
"apiVersion": {
80+
"title": "API Version",
81+
"description": "SAP SuccessFactors OData API version.",
82+
"type": "string",
83+
"default": "v2"
84+
},
85+
"databaseName": {
86+
"title": "Database Name",
87+
"description": "Optional name to give to the database in OpenMetadata. If left blank, we will use default as the database name.",
88+
"type": "string"
89+
},
90+
"verifySSL": {
91+
"title": "Verify SSL",
92+
"description": "Client SSL verification.",
93+
"$ref": "../../../../security/ssl/verifySSLConfig.json#/definitions/verifySSL",
94+
"default": "no-ssl"
95+
},
96+
"sslConfig": {
97+
"title": "SSL Configuration",
98+
"description": "SSL Configuration details.",
99+
"$ref": "../../../../security/ssl/verifySSLConfig.json#/definitions/sslConfig"
100+
},
101+
"connectionOptions": {
102+
"title": "Connection Options",
103+
"$ref": "../connectionBasicType.json#/definitions/connectionOptions"
104+
},
105+
"connectionArguments": {
106+
"title": "Connection Arguments",
107+
"$ref": "../connectionBasicType.json#/definitions/connectionArguments"
108+
},
109+
"tableFilterPattern": {
110+
"title": "Default Table Filter Pattern",
111+
"description": "Regex to only include/exclude tables that matches the pattern.",
112+
"$ref": "../../../../type/filterPattern.json#/definitions/filterPattern"
113+
},
114+
"supportsMetadataExtraction": {
115+
"title": "Supports Metadata Extraction",
116+
"$ref": "../connectionBasicType.json#/definitions/supportsMetadataExtraction"
117+
}
118+
},
119+
"required": ["baseUrl", "companyId", "username"],
120+
"additionalProperties": false
121+
}

openmetadata-spec/src/main/resources/json/schema/entity/services/databaseService.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
"CustomDatabase",
5151
"Dbt",
5252
"SapHana",
53+
"SapSuccessFactors",
5354
"MongoDB",
5455
"Cassandra",
5556
"Couchbase",
@@ -178,6 +179,9 @@
178179
{
179180
"name": "SapHana"
180181
},
182+
{
183+
"name": "SapSuccessFactors"
184+
},
181185
{
182186
"name": "MongoDB"
183187
},
@@ -325,6 +329,9 @@
325329
{
326330
"$ref": "./connections/database/salesforceConnection.json"
327331
},
332+
{
333+
"$ref": "./connections/database/sapSuccessFactorsConnection.json"
334+
},
328335
{
329336
"$ref": "./connections/database/singleStoreConnection.json"
330337
},

openmetadata-ui/src/main/resources/ui/src/constants/ServiceType.constant.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ export const BETA_SERVICES = [
180180
DatabaseServiceType.Ssas,
181181
DatabaseServiceType.Epic,
182182
DashboardServiceType.Hex,
183+
DatabaseServiceType.SapSuccessFactors,
183184
DatabaseServiceType.ServiceNow,
184185
DatabaseServiceType.Dremio,
185186
MetadataServiceType.Collibra,

openmetadata-ui/src/main/resources/ui/src/generated/api/automations/createWorkflow.ts

Lines changed: 72 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,8 @@ export interface RequestConnection {
236236
*
237237
* Salesforce Connection Config
238238
*
239+
* SAP SuccessFactors Connection Config
240+
*
239241
* SingleStore Database Connection Config
240242
*
241243
* Snowflake Connection Config
@@ -533,10 +535,10 @@ export interface ConfigObject {
533535
/**
534536
* Client SSL verification. Make sure to configure the SSLConfig if enabled.
535537
*
536-
* Boolean marking if we need to verify the SSL certs for Grafana. Default to True.
537-
*
538538
* Client SSL verification.
539539
*
540+
* Boolean marking if we need to verify the SSL certs for Grafana. Default to True.
541+
*
540542
* Client SSL verification. Use 'no-ssl' for plain HTTP, 'ignore' to skip certificate
541543
* validation, 'validate' to verify against a CA certificate.
542544
*
@@ -904,6 +906,8 @@ export interface ConfigObject {
904906
*
905907
* Password to connect to Salesforce.
906908
*
909+
* Password for BasicAuth authentication. Required when authType is BasicAuth.
910+
*
907911
* Password to connect to SingleStore.
908912
*
909913
* Password to connect to Snowflake.
@@ -1000,6 +1004,11 @@ export interface ConfigObject {
10001004
* Username to connect to Salesforce. This user should have privileges to read all the
10011005
* metadata in Salesforce.
10021006
*
1007+
* SAP SuccessFactors user login name. For BasicAuth: used as the credential username. For
1008+
* OAuth2Credentials: used as the SAML NameID — the user on whose behalf the token is
1009+
* requested. The user must exist in the SF system and be permitted to use the OAuth2
1010+
* application.
1011+
*
10031012
* Username to connect to SingleStore. This user should have privileges to read all the
10041013
* metadata in MySQL.
10051014
*
@@ -1120,6 +1129,8 @@ export interface ConfigObject {
11201129
*
11211130
* Choose Auth Configuration Type.
11221131
*
1132+
* Choose how to authenticate with SAP SuccessFactors OData API.
1133+
*
11231134
* Choose between Dremio Cloud (SaaS) or Dremio Software (self-hosted) authentication.
11241135
*
11251136
* Types of methods used to authenticate to the tableau instance
@@ -1346,6 +1357,58 @@ export interface ConfigObject {
13461357
* fetched. Leave empty to fetch all objects (subject to tableFilterPattern).
13471358
*/
13481359
sobjectNames?: string[];
1360+
/**
1361+
* SAP SuccessFactors OData API version.
1362+
*
1363+
* Tableau API version. If not provided, the version will be used from the tableau server.
1364+
*
1365+
* Sigma API version.
1366+
*
1367+
* ThoughtSpot API version to use
1368+
*
1369+
* Airbyte API version.
1370+
*
1371+
* OpenMetadata server API version to use.
1372+
*/
1373+
apiVersion?: string;
1374+
/**
1375+
* SAP SuccessFactors OData API base URL. For example: https://api4.successfactors.com
1376+
*/
1377+
baseUrl?: string;
1378+
/**
1379+
* OAuth2 Client ID. Required when authType is OAuth2Credentials.
1380+
*
1381+
* Client ID for DOMO
1382+
*
1383+
* Azure Application (client) ID for service principal authentication.
1384+
*
1385+
* Azure Application (client) ID for Service Principal authentication.
1386+
*
1387+
* User's Client ID. This user should have privileges to read all the metadata in Looker.
1388+
*
1389+
* client_id for PowerBI.
1390+
*
1391+
* client_id for Sigma.
1392+
*
1393+
* Application (client) ID from Azure Active Directory
1394+
*/
1395+
clientId?: string;
1396+
/**
1397+
* SAP SuccessFactors Company ID (tenant identifier). Required for all API calls.
1398+
*/
1399+
companyId?: string;
1400+
/**
1401+
* PEM-encoded RSA private key used to sign SAML assertions for OAuth2 SAML Bearer flow.
1402+
* Required when authType is OAuth2Credentials.
1403+
*
1404+
* Connection to Snowflake instance via Private Key
1405+
*/
1406+
privateKey?: string;
1407+
/**
1408+
* OAuth2 Token endpoint URL. Required when authType is OAuth2Credentials. For example:
1409+
* https://api4.successfactors.com/oauth/token
1410+
*/
1411+
tokenUrl?: string;
13491412
/**
13501413
* If the Snowflake URL is https://xyz1234.us-east-1.gcp.snowflakecomputing.com, then the
13511414
* account is xyz1234.us-east-1.gcp
@@ -1382,10 +1445,6 @@ export interface ConfigObject {
13821445
* TRANSIENT tables.
13831446
*/
13841447
includeTransientTables?: boolean;
1385-
/**
1386-
* Connection to Snowflake instance via Private Key
1387-
*/
1388-
privateKey?: string;
13891448
/**
13901449
* Session query tag used to monitor usage on snowflake. To use a query tag snowflake user
13911450
* should have enough privileges to alter the session.
@@ -1439,22 +1498,6 @@ export interface ConfigObject {
14391498
* API Host to connect to DOMO instance
14401499
*/
14411500
apiHost?: string;
1442-
/**
1443-
* Client ID for DOMO
1444-
*
1445-
* Azure Application (client) ID for service principal authentication.
1446-
*
1447-
* Azure Application (client) ID for Service Principal authentication.
1448-
*
1449-
* User's Client ID. This user should have privileges to read all the metadata in Looker.
1450-
*
1451-
* client_id for PowerBI.
1452-
*
1453-
* client_id for Sigma.
1454-
*
1455-
* Application (client) ID from Azure Active Directory
1456-
*/
1457-
clientId?: string;
14581501
/**
14591502
* URL of your Domo instance, e.g., https://openmetadata.domo.com
14601503
*/
@@ -1688,18 +1731,6 @@ export interface ConfigObject {
16881731
* Version of the Redash instance
16891732
*/
16901733
redashVersion?: string;
1691-
/**
1692-
* Tableau API version. If not provided, the version will be used from the tableau server.
1693-
*
1694-
* Sigma API version.
1695-
*
1696-
* ThoughtSpot API version to use
1697-
*
1698-
* Airbyte API version.
1699-
*
1700-
* OpenMetadata server API version to use.
1701-
*/
1702-
apiVersion?: string;
17031734
/**
17041735
* Proxy URL for the tableau server. If not provided, the hostPort will be used. This is
17051736
* used to generate the dashboard & Chart URL.
@@ -3036,10 +3067,16 @@ export enum CloudRegion {
30363067
}
30373068

30383069
/**
3070+
* Choose how to authenticate with SAP SuccessFactors OData API.
3071+
*
3072+
* Authentication type to connect to SAP SuccessFactors.
3073+
*
30393074
* Database Authentication types not requiring config.
30403075
*/
30413076
export enum NoConfigAuthenticationTypes {
3077+
BasicAuth = "BasicAuth",
30423078
OAuth2 = "OAuth2",
3079+
OAuth2Credentials = "OAuth2Credentials",
30433080
}
30443081

30453082
/**
@@ -5062,6 +5099,7 @@ export enum ConfigType {
50625099
SapERP = "SapErp",
50635100
SapHana = "SapHana",
50645101
SapS4Hana = "SapS4Hana",
5102+
SapSuccessFactors = "SapSuccessFactors",
50655103
ServiceNow = "ServiceNow",
50665104
SharePoint = "SharePoint",
50675105
Sigma = "Sigma",

0 commit comments

Comments
 (0)