Skip to content

Commit b47c219

Browse files
akashverma0786Akash Vermagitar-botgithub-actions[bot]
authored
FEATURE: Add SAP S4/HANA Dashboard Connector (#27242)
* FEATURE: Add SAP S4/HANA Dashboard Connector * Added ssl config * fix: verifySSL default to no-ssl and rename test connection file to sapS4Hana.json Co-authored-by: Akash Verma <138790903+akashverma0786@users.noreply.github.com> * Update generated TypeScript types --------- Co-authored-by: Akash Verma <akashverma@Akashs-MacBook-Pro-2.local> Co-authored-by: Gitar <noreply@gitar.ai> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent 7e39336 commit b47c219

21 files changed

Lines changed: 1057 additions & 66 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"name": "SapS4Hana",
3+
"displayName": "SAP S/4HANA Test Connection",
4+
"description": "This Test Connection validates access against the SAP S/4HANA instance and basic metadata extraction of Fiori apps and CDS views.",
5+
"steps": [
6+
{
7+
"name": "CheckAccess",
8+
"description": "Validate that we can properly reach the SAP S/4HANA instance and authenticate with the given credentials.",
9+
"errorMessage": "Failed to connect to SAP S/4HANA. Please validate the host, port, and credentials.",
10+
"shortCircuit": true,
11+
"mandatory": true
12+
},
13+
{
14+
"name": "GetDashboards",
15+
"description": "List Fiori apps available in the SAP S/4HANA Fiori app index.",
16+
"errorMessage": "Failed to fetch Fiori apps. Please validate that the user has access to the Fiori app index.",
17+
"mandatory": false
18+
},
19+
{
20+
"name": "GetDataModels",
21+
"description": "List CDS views available in the SAP S/4HANA instance.",
22+
"errorMessage": "Failed to fetch CDS views. Please validate that the user has access to the CDS view API.",
23+
"mandatory": false
24+
}
25+
]
26+
}

openmetadata-spec/src/main/resources/json/schema/entity/data/dashboardDataModel.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"PowerBIDataFlow",
3232
"MicroStrategyDataset",
3333
"ThoughtSpotDataModel",
34+
"SapS4HanaCdsView",
3435
"SsrsDataModel"
3536
],
3637
"javaEnums": [
@@ -76,6 +77,9 @@
7677
{
7778
"name": "ThoughtSpotDataModel"
7879
},
80+
{
81+
"name": "SapS4HanaCdsView"
82+
},
7983
{
8084
"name": "SsrsDataModel"
8185
}
@@ -230,4 +234,4 @@
230234
"columns"
231235
],
232236
"additionalProperties": false
233-
}
237+
}
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
{
2+
"$id": "https://open-metadata.org/schema/entity/services/connections/dashboard/sapS4HanaConnection.json",
3+
"$schema": "http://json-schema.org/draft-07/schema#",
4+
"title": "SapS4HanaConnection",
5+
"description": "SAP S/4HANA Connection Config for Embedded Analytics",
6+
"type": "object",
7+
"javaType": "org.openmetadata.schema.services.connections.dashboard.SapS4HanaConnection",
8+
"definitions": {
9+
"sapS4HanaType": {
10+
"description": "SAP S/4HANA service type",
11+
"type": "string",
12+
"enum": ["SapS4Hana"],
13+
"default": "SapS4Hana"
14+
},
15+
"sapS4HanaBasicAuthType": {
16+
"title": "Basic Auth",
17+
"description": "Username and password credentials for SAP S/4HANA.",
18+
"type": "object",
19+
"javaType": "org.openmetadata.schema.services.connections.dashboard.sapS4Hana.SapS4HanaBasicAuth",
20+
"properties": {
21+
"authType": {
22+
"title": "Auth Type",
23+
"description": "Authentication type identifier.",
24+
"type": "string",
25+
"enum": ["basic"],
26+
"default": "basic"
27+
},
28+
"username": {
29+
"title": "Username",
30+
"description": "Username to authenticate with SAP S/4HANA.",
31+
"type": "string"
32+
},
33+
"password": {
34+
"title": "Password",
35+
"description": "Password to authenticate with SAP S/4HANA.",
36+
"type": "string",
37+
"format": "password"
38+
}
39+
},
40+
"required": ["username", "password"],
41+
"additionalProperties": false
42+
},
43+
"sapS4HanaOAuthType": {
44+
"title": "OAuth 2.0 Client Credentials",
45+
"description": "OAuth 2.0 client credentials for SAP S/4HANA Cloud.",
46+
"type": "object",
47+
"javaType": "org.openmetadata.schema.services.connections.dashboard.sapS4Hana.SapS4HanaOAuthCredentials",
48+
"properties": {
49+
"authType": {
50+
"title": "Auth Type",
51+
"description": "Authentication type identifier.",
52+
"type": "string",
53+
"enum": ["oauth2"],
54+
"default": "oauth2"
55+
},
56+
"clientId": {
57+
"title": "Client ID",
58+
"description": "OAuth 2.0 client ID registered in SAP.",
59+
"type": "string"
60+
},
61+
"clientSecret": {
62+
"title": "Client Secret",
63+
"description": "OAuth 2.0 client secret.",
64+
"type": "string",
65+
"format": "password"
66+
},
67+
"tokenEndpoint": {
68+
"title": "Token Endpoint",
69+
"description": "OAuth 2.0 token endpoint URL (e.g. /sap/bc/security/oauth2/token).",
70+
"type": "string",
71+
"format": "uri"
72+
}
73+
},
74+
"required": ["clientId", "clientSecret", "tokenEndpoint"],
75+
"additionalProperties": false
76+
}
77+
},
78+
"properties": {
79+
"type": {
80+
"title": "Service Type",
81+
"description": "Service Type",
82+
"$ref": "#/definitions/sapS4HanaType",
83+
"default": "SapS4Hana"
84+
},
85+
"hostPort": {
86+
"expose": true,
87+
"title": "Host and Port",
88+
"description": "Base URL of the SAP S/4HANA instance (e.g. https://s4hana.example.com).",
89+
"type": "string",
90+
"format": "uri"
91+
},
92+
"authType": {
93+
"title": "Authentication Type",
94+
"description": "Choose Basic Auth (username/password) for on-premise or OAuth 2.0 Client Credentials for SAP S/4HANA Cloud.",
95+
"oneOf": [
96+
{
97+
"$ref": "#/definitions/sapS4HanaBasicAuthType"
98+
},
99+
{
100+
"$ref": "#/definitions/sapS4HanaOAuthType"
101+
}
102+
]
103+
},
104+
"clientNumber": {
105+
"title": "Client Number",
106+
"description": "SAP client number (Mandant), typically a 3-digit string (e.g. '100').",
107+
"type": "string",
108+
"default": "100"
109+
},
110+
"verifySSL": {
111+
"title": "Verify SSL",
112+
"description": "Client SSL verification. Use 'no-ssl' for plain HTTP, 'ignore' to skip certificate validation, 'validate' to verify against a CA certificate.",
113+
"$ref": "../../../../security/ssl/verifySSLConfig.json#/definitions/verifySSL",
114+
"default": "no-ssl"
115+
},
116+
"sslConfig": {
117+
"title": "SSL Config",
118+
"description": "CA certificate, client certificate, and private key for SSL validation. Required when verifySSL is 'validate'.",
119+
"$ref": "../../../../security/ssl/verifySSLConfig.json#/definitions/sslConfig"
120+
},
121+
"dashboardFilterPattern": {
122+
"description": "Regex to exclude or include dashboards that matches the pattern.",
123+
"$ref": "../../../../type/filterPattern.json#/definitions/filterPattern",
124+
"title": "Default Dashboard Filter Pattern"
125+
},
126+
"chartFilterPattern": {
127+
"description": "Regex exclude or include charts that matches the pattern.",
128+
"$ref": "../../../../type/filterPattern.json#/definitions/filterPattern",
129+
"title": "Default Chart Filter Pattern"
130+
},
131+
"dataModelFilterPattern": {
132+
"description": "Regex exclude or include data models that matches the pattern.",
133+
"$ref": "../../../../type/filterPattern.json#/definitions/filterPattern",
134+
"title": "Default Data Model Filter Pattern"
135+
},
136+
"supportsMetadataExtraction": {
137+
"title": "Supports Metadata Extraction",
138+
"$ref": "../connectionBasicType.json#/definitions/supportsMetadataExtraction"
139+
},
140+
"supportsLineageExtraction": {
141+
"title": "Supports Lineage Extraction",
142+
"$ref": "../connectionBasicType.json#/definitions/supportsLineageExtraction"
143+
}
144+
},
145+
"additionalProperties": false,
146+
"required": ["hostPort", "authType"]
147+
}

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@
3434
"ThoughtSpot",
3535
"Grafana",
3636
"Hex",
37-
"Ssrs"
37+
"Ssrs",
38+
"SapS4Hana"
3839
],
3940
"javaEnums": [
4041
{
@@ -96,6 +97,9 @@
9697
},
9798
{
9899
"name": "Ssrs"
100+
},
101+
{
102+
"name": "SapS4Hana"
99103
}
100104
]
101105
},
@@ -169,6 +173,9 @@
169173
},
170174
{
171175
"$ref": "./connections/dashboard/ssrsConnection.json"
176+
},
177+
{
178+
"$ref": "./connections/dashboard/sapS4HanaConnection.json"
172179
}
173180
]
174181
}

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
@@ -192,6 +192,7 @@ export const BETA_SERVICES = [
192192
DriveServiceType.GoogleDrive,
193193
DatabaseServiceType.Informix,
194194
DatabaseServiceType.MicrosoftAccess,
195+
DashboardServiceType.SapS4Hana,
195196
];
196197

197198
export const TEST_CONNECTION_INITIAL_MESSAGE =

0 commit comments

Comments
 (0)