सीधे कंटेंट पर जाएँ

SAP BTP कॉकपिट की समस्याएँ: पाँच दिक्कतें और उनके हल

SAP BTP कॉकपिट की पाँच समस्याएँ बार-बार आती हैं: 401 टोकन एरर, Integration Suite के एरर, टूटे लिंक, CAP डेस्टिनेशन की विफलता और रात भर में बंद हो जाने वाले ट्रायल ऐप। हर एक में सबसे पहले क्या जाँचें, यह यहाँ है।

डेस्कटॉप मॉनिटर पर कोड टाइप करता डेवलपर, पीछे से दिखता हुआ, बगल में एक लैपटॉप
विषय-सूची
  1. ट्रायाज: लक्षण से पहली जाँच तक
  2. 2024 से 2026 के बीच BTP में क्या बदला
  3. समस्या 1: service key के क्रेडेंशियल के साथ 401 unauthorized
  4. समस्या 2: Integration Suite खोलते समय Internal Server Error
  5. समस्या 3: टूटा नेविगेशन और मरे हुए लिंक
  6. समस्या 4: CAP ऐप में डेस्टिनेशन की विफलता
  7. समस्या 5: ट्रायल और free tier में रात भर बंद हो जाने वाले ऐप
  8. अक्सर पूछे जाने वाले सवाल

अगर SAP BTP कॉकपिट आपको एरर दे रहा है, तो वजह शायद इन पाँच में से एक है। service key से मिला 401 लगभग हमेशा OAuth रिक्वेस्ट की गड़बड़ी होती है, क्रेडेंशियल की नहीं। Integration Suite पर Internal Server Error का मतलब आम तौर पर रोल कलेक्शन का छूटना या पुराना सेशन होता है। टूटे लिंक उन बूस्टर से आते हैं जो सबअकाउंट बदलने से पहले चलाए गए थे। CAP डेस्टिनेशन की विफलता ज़्यादातर नाम का बेमेल होना या बाइंडिंग का छूटना होता है। और ट्रायल अकाउंट पर कल चला हुआ ऐप रात भर में अपना डेटाबेस खो चुका हो सकता है। यह गाइड Cloud Foundry सबअकाउंट में काम करने वाले डेवलपर और इंटीग्रेशन कंसल्टेंट के लिए है। नीचे दी ट्रायाज टेबल बताती है कि सबसे पहले क्या जाँचें।

SAP BTP कॉकपिट में पहली बार लाल एरर बैनर देखा तो मैंने मान लिया कि गलती मेरी है। गलत लिंक, एक्सपायर हुआ सेशन।

तीसरी या चौथी बार के बाद साफ़ हो गया कि यह सिर्फ़ मेरे साथ नहीं हो रहा।

अगले कुछ हफ़्तों तक मैंने एक नोटबुक रखी और हर बार जब कुछ टूटा, उसे लिख लिया। Integration Suite खोलते समय Internal Server Error। ऐसे डेस्टिनेशन जो ठीक दिखते थे और जुड़ने से इनकार करते थे। ऐसे ऐप जो कल चले और आज अटक गए। पैटर्न उभरने लगे। उनमें से कुछ ही कहीं काम लायक ढंग से दर्ज थे, और कॉकपिट खुद आपको लगभग कुछ नहीं देता।

लक्षणसबसे संभावित वजहपहले क्या जाँचें
service key से API कॉल करने पर 401 Unauthorizedगलत ग्रांट टाइप, टोकन URL या छूटी हुई authoritiesटोकन को डिकोड करके aud और scope पढ़ें
Integration Suite खोलने पर Internal Server Errorरोल कलेक्शन का छूटना या पुराना सेशनअपने यूज़र के रोल कलेक्शन, फिर पूरा लॉग आउट
बूस्टर या टाइल खाली या गलत पेज खोलता हैबूस्टर चलने के बाद सबअकाउंट बदल गयाइसकी जगह कॉकपिट के ट्री से नेविगेट करें
CAP ऐप: “destination not found” या ऑथ एररनाम का बेमेल, छूटी बाइंडिंग, गलत OData kindकॉकपिट में दिए नाम से cds.requires और xs-app.json मिलाएँ
ऐप कल चला, आज अटका (ट्रायल)HANA Cloud इंस्टेंस रात भर में बंद हो गयाSAP HANA Cloud Central में डेटाबेस इंस्टेंस की स्थिति

Cloud Foundry, Kyma और ABAP environment SAP की मल्टी-क्लाउड बुनियाद पर चलते हैं, जो 2020 से नए ग्राहकों के लिए डिफ़ॉल्ट है। पुराने Neo environment को सिर्फ़ सुरक्षा और कंप्लायंस अपडेट मिलते हैं, और SAP ने उसकी बंदी की तारीख़ 31 दिसंबर 2028 तय की है। नीचे की लगभग हर समस्या Cloud Foundry की समस्या है।

पुरानी गाइड पढ़ने वालों को दो नाम-बदलाव अब भी उलझाते हैं। SAP Launchpad service जनवरी 2023 में SAP Build Work Zone, standard edition बन गई। और SAP Build के बढ़ने के साथ कई टाइल और बूस्टर नए सिरे से बनाए गए, इसलिए 2022 के स्क्रीनशॉट अक्सर आपकी स्क्रीन से मेल नहीं खाते।

RISE with SAP पर BTP आम तौर पर कॉन्ट्रैक्ट के भीतर क्रेडिट-आधारित एंटाइटलमेंट के रूप में आता है। कॉकपिट वही रहता है। फ़र्क इस बात का है कि आपके संगठन में ग्लोबल अकाउंट पर किसका नियंत्रण है, इसलिए नए एंटाइटलमेंट की ज़रूरत पड़ने से पहले उस व्यक्ति को ढूँढ लीजिए।

आप एक सर्विस इंस्टेंस बनाते हैं, service key जनरेट करते हैं, क्लाइंट ID और सीक्रेट Postman में कॉपी करते हैं, टोकन URL डालते हैं और रिक्वेस्ट भेजते हैं। 401। कोई ब्योरा नहीं।

आप सीक्रेट दोबारा कॉपी करते हैं। फिर भी फ़ेल। सर्विस ठीक है। OAuth फ़्लो ठीक नहीं है।

क्रम से क्या जाँचें:

  1. ग्रांट टाइप। ज़्यादातर BTP सर्विस API के लिए तकनीकी एक्सेस client_credentials इस्तेमाल करता है। इसे Postman में साफ़ तौर पर सेट कीजिए। डिफ़ॉल्ट पर भरोसा मत कीजिए।
  2. टोकन URL। इसे service key से लीजिए। कुछ key में tokenurl मिलता है; दूसरों में XSUAA का url मिलता है, जिसमें आप /oauth/token जोड़ते हैं। किसी दूसरे सबअकाउंट से कभी उधार मत लीजिए।
  3. हेडर। सीधे टोकन कॉल के लिए Content-Type: application/x-www-form-urlencoded और Authorization: Basic <base64(clientid:clientsecret)> भेजिए।
  4. Authorities। client credentials के साथ टोकन में सिर्फ़ वही स्कोप होते हैं जो उस सर्विस इंस्टेंस को दिए गए हैं। अगर API को ऐसा रोल चाहिए जो इंस्टेंस के पास नहीं है, तो आपको टोकन फिर भी मिलता है, और API फिर भी मना कर देता है। इसे इंस्टेंस के पैरामीटर में ठीक कीजिए (जैसे Integration Suite API plan इंस्टेंस के रोल), रिक्वेस्ट में नहीं।
  5. ऑडियंस। अगर आपके पास टोकन है और API उसे ठुकरा देता है, तो टोकन डिकोड करके aud क्लेम पढ़िए। अगर वह उस API से मेल नहीं खाता जिसे आप कॉल कर रहे हैं, तो आप गलत सर्विस इंस्टेंस की key इस्तेमाल कर रहे हैं।

आप Integration Suite खोलते हैं और लाल “Internal Server Error” बैनर मिलता है। कोई लॉग नहीं। रीलोड, दूसरा ब्राउज़र, नतीजा वही।

यह आम तौर पर तब होता है जब सर्विस कुछ समय बिना इस्तेमाल के पड़ी रहती है: सुबह खोली, कुछ घंटे छोड़ दी, फिर बाद में इस्तेमाल की। SAP की कम्युनिटी थ्रेड और नॉलेज बेस दो आम वजहें बताते हैं: छूटे हुए रोल कलेक्शन और पुराने सेशन।

आम तौर पर क्या हल करता है:

  1. रोल कलेक्शन जाँचिए। टेनेंट सेट करने के लिए आपके यूज़र को Integration_Provisioner चाहिए, और उसमें काम करने के लिए संबंधित PI_ रोल कलेक्शन (administrator, integration developer, business expert)। इन्हें सबअकाउंट में Security के तहत असाइन कीजिए।
  2. पूरी तरह लॉग आउट कीजिए। रोल के बदलाव आपके सेशन तक नए लॉगिन के बाद ही पहुँचते हैं। BTP और Integration Suite के सारे टैब बंद कीजिए, साइन आउट कीजिए, फिर दोबारा साइन इन कीजिए।
  3. BTP डोमेन की कुकीज़ साफ़ कीजिए, अगर नए लॉगिन के बाद भी एरर बना रहे। पुरानी सेशन कुकी सेशन से ज़्यादा जी सकती है।
  4. एक ही कॉकपिट सेशन रखिए। एक ही सबअकाउंट पर कई टैब या ब्राउज़र प्रोफ़ाइल सेशन के टकराव पैदा करते हैं, जो बिल्कुल इसी एरर जैसे दिखते हैं।

असली समस्या दिखाई न देना है। कॉकपिट आपको बताता ही नहीं कि क्या फ़ेल हुआ, इसलिए आप अंदाज़ा लगाते रह जाते हैं। इसकी जगह सूची को क्रम से आज़माइए। इंटीग्रेशन प्रोग्राम आखिर क्यों अटकते हैं, इसका व्यापक नज़रिया चाहिए तो SAP Integration Suite की डिलीवरी में देरी पर मेरा लेख देखिए।

आप “Go to Application” पर क्लिक करते हैं और खाली स्क्रीन, कोई सामान्य लैंडिंग पेज या कोई बेतुका रीडायरेक्ट मिलता है।

इसके कुछ पैटर्न हैं:

  1. बूस्टर के लिंक तब टूटते हैं जब बूस्टर चलने के बाद सबअकाउंट का सेटअप बदलता है। रीडायरेक्ट ऐसी जगह इशारा करता है जो अब मौजूद नहीं।
  2. Integration Suite की टाइल कभी चलती हैं, कभी एरर देती हैं, कभी टाइम-आउट हो जाती हैं, आम तौर पर ऊपर बताई सेशन वाली वजहों से।
  3. SAP Build Work Zone के लिंक पर “connection denied” दिखता है, जब सब्सक्रिप्शन मौजूद है पर आपके यूज़र के पास साइट का रोल कलेक्शन नहीं है।
  4. कई टैब या ब्राउज़र प्रोफ़ाइल एक्सपायर हो चुके संदर्भ में लिंक खोलते हैं।

जो काम करता है: कॉकपिट के ट्री से नेविगेट कीजिए (सबअकाउंट, फिर Services, फिर Instances and Subscriptions), और Integration Suite, डेस्टिनेशन और Work Zone के सीधे URL बुकमार्क कर लीजिए। साफ़ ब्राउज़र प्रोफ़ाइल में एक ही सेशन इस्तेमाल कीजिए। जब कोई लिंक हर तीसरी बार फ़ेल होता है, तो आप प्लेटफ़ॉर्म पर भरोसा करना छोड़कर वर्कअराउंड बनाने लगते हैं। बुकमार्क सबसे सस्ता वर्कअराउंड है। अगर आप अभी कॉकपिट में रास्ता ढूँढ रहे हैं, तो मेरा BTP कॉकपिट वॉकथ्रू बुनियादी नेविगेशन कवर करता है।

आप CAP ऐप डिप्लॉय करते हैं, कॉकपिट में डेस्टिनेशन कॉन्फ़िगर करते हैं, फिर भी रिक्वेस्ट “destination not found” या ऑथेंटिकेशन एरर के साथ फ़ेल होती हैं। डेस्टिनेशन सूची में है। ऐप चल रहा है। एरर संदेश कहीं काम की जगह इशारा नहीं करते।

SAP के CAP दस्तावेज़ साफ़ बताते हैं कि यह कैसे जुड़ना चाहिए: रिमोट सर्विस package.json (या .cdsrc.json) में cds.requires के तहत kind के साथ घोषित होती है, और डेस्टिनेशन का नाम credentials.destination के तहत जाता है। ऐप को Destination सर्विस और XSUAA, दोनों से बाइंडिंग भी चाहिए। ज़्यादातर विफलताएँ इसी कड़ी में कहीं टूट जाने से होती हैं।

CAP डेस्टिनेशन की कड़ीगलत नाम, छूटी बाइंडिंग या गलत OData kind एक कड़ी तोड़ देता है, और एरर शायद ही बताता है कि कौन सी।
  1. cds.requiresरिमोट सर्विस, उसका kind और डेस्टिनेशन का नाम घोषित करता है
  2. Production profileडिप्लॉयमेंट के बाद डेस्टिनेशन के क्रेडेंशियल रखता है
  3. Service बाइंडिंगऐप Destination और XSUAA से बाउंड है
  4. कॉकपिट में Destinationcds.requires और xs-app.json वाला ही नाम, अक्षर के केस समेत
  5. रिमोट सर्विसV2 सर्विस के लिए odata-v2, V4 के लिए odata

रिक्वेस्ट रिमोट सर्विस तक पहुँचती हैं

लक्षणहल
डेस्टिनेशन सूची में है पर ऐप उसे नहीं ढूँढ पा रहाcds.requires और xs-app.json के routes में लिखा नाम कॉकपिट के नाम से अक्षर-अक्षर मिलाइए, केस समेत
लोकल पर चलता है, डिप्लॉयमेंट के बाद फ़ेल होता हैजाँचिए कि [production] प्रोफ़ाइल में डेस्टिनेशन के क्रेडेंशियल सचमुच हैं, और ऐप Destination और XSUAA से बाउंड है
रिमोट OData V2 सर्विस एरर देती हैV2 सर्विस के लिए kind को odata-v2 और V4 के लिए odata रखिए। जहाँ दोनों तरफ़ संभव हो, V4 इस्तेमाल कीजिए
UI5 ऐप को V2 चाहिए पर आपकी CAP सर्विस V4 है@cap-js-community/odata-v2-adapter प्लगइन जोड़िए। पुराना @sap/cds-odata-v2-adapter-proxy deprecated है
सही क्रेडेंशियल के बावजूद ऑथेंटिकेशन फ़ेल होता हैOAuth2ClientCredentials या BasicAuthentication से शुरू कीजिए। SAML या principal propagation तभी इस्तेमाल कीजिए जब परिदृश्य को ज़रूरत हो
पक्का नहीं कि टारगेट तक पहुँचा भी जा सकता हैऐप डीबग करने से पहले कॉकपिट में डेस्टिनेशन पर “Check Connection” इस्तेमाल कीजिए

जो टीमें इसे अच्छी तरह संभालती हैं, वे हर ऐप के लिए डेस्टिनेशन की छोटी चेकलिस्ट रखती हैं। इसलिए नहीं कि सेटअप जटिल है। इसलिए कि नाम, बाइंडिंग या OData kind के बारे में एक गलत धारणा चुपचाप फ़ेल होती है, और उसे रोकने की तुलना में ढूँढने में कहीं ज़्यादा समय लगता है।

जब कुछ टूटता है तो SAP BTP कॉकपिट बहुत कम जानकारी देता है। डीबगिंग का ज़्यादातर काम आज़माइश और भूल से होता है। पैटर्न पता हों तो घंटे बच जाते हैं।

कल चला हुआ CAP ऐप अब अटका हुआ है। कोई एरर नहीं। कॉकपिट उसे चलता दिखाता है। आप उसे रीस्टार्ट करते हैं। कुछ नहीं।

पहले डेटाबेस जाँचिए। SAP का अपना HANA Cloud ट्रायल ट्यूटोरियल कहता है कि free-tier इंस्टेंस हर रात बंद कर दी जाती हैं और आप जिस भी दिन काम करें, उसे रोज़ दोबारा चालू करना पड़ता है। अगर आप नियमित रूप से लॉग इन करते हैं तो ट्रायल अकाउंट खुद 90 दिन तक चलता है। आपका ऐप ठीक है। उसका डेटाबेस सो रहा है।

क्या मदद करता है:

  1. कोड डीबग करने से पहले SAP HANA Cloud Central से HANA Cloud इंस्टेंस रीस्टार्ट कीजिए।
  2. मेमोरी और सर्विस के इस्तेमाल को देखने के लिए CLI (cf apps, cf services) इस्तेमाल कीजिए। कॉकपिट UI बहुत कम दिखाता है।
  3. नए बनाने से पहले इस्तेमाल में न आने वाले सर्विस इंस्टेंस हटाइए। ट्रायल कोटा पूरे अकाउंट पर लागू होता है, सिर्फ़ एक ऐप पर नहीं।
  4. डेमो और टेस्ट वर्कलोड को अलग-अलग सबअकाउंट में रखिए।

अगर आपको एक से ज़्यादा ऐप और डेटाबेस भरोसे से चलाने हैं, या डेमो के लिए स्थिर अपटाइम चाहिए, तो प्रोडक्टिव अकाउंट पर जाइए। प्रोडक्टिव अकाउंट के free-tier प्लान आपका काम खोए बिना पेड में अपग्रेड हो सकते हैं, जो ट्रायल अकाउंट में नहीं हो सकता।

क्रेडेंशियल सही दिखने पर भी SAP BTP service key के साथ 401 एरर क्यों आता है?

लगभग हमेशा OAuth रिक्वेस्ट की वजह से, क्रेडेंशियल की वजह से नहीं। आम कारण हैं गलत ग्रांट टाइप (तकनीकी एक्सेस के लिए client_credentials इस्तेमाल कीजिए), ऐसा टोकन URL जो service key से मेल नहीं खाता, या टोकन कॉल पर गलत हेडर।

अगर आपको टोकन मिल जाता है और API फिर भी ठुकरा देता है, तो उसे डिकोड कीजिए। जाँचिए कि aud क्लेम API से मेल खाता है, और स्कोप भी देखिए। client credentials में स्कोप सर्विस इंस्टेंस को दी गई authorities से आते हैं, इसलिए छूटे हुए रोल इंस्टेंस के पैरामीटर में ठीक कीजिए।

BTP कॉकपिट में Integration Suite खोलते समय Internal Server Error किस वजह से आते हैं?

सबसे ज़्यादा छूटे हुए रोल कलेक्शन या पुराने सेशन की वजह से। पक्का कीजिए कि आपके यूज़र के पास Integration_Provisioner और ज़रूरी PI_ रोल कलेक्शन हैं। फिर BTP के सारे टैब बंद कीजिए, साइन आउट कीजिए और दोबारा साइन इन कीजिए, क्योंकि नए रोल सिर्फ़ नए लॉगिन के बाद लागू होते हैं।

अगर फिर भी बना रहे, तो BTP डोमेन की कुकीज़ साफ़ कीजिए और एक ही कॉकपिट सेशन रखिए। एक ही सबअकाउंट पर कई टैब यही एरर पैदा करते हैं।

मेरा CAP ऐप ऐसे डेस्टिनेशन से क्यों नहीं जुड़ पाता जो कॉकपिट में सही दिखता है?

आम तौर पर नाम का बेमेल। cds.requires और आपके xs-app.json के routes में डेस्टिनेशन का नाम कॉकपिट से बिल्कुल मेल खाना चाहिए, केस समेत।

अगर नाम सही है, तो जाँचिए कि ऐप Destination सर्विस और XSUAA, दोनों से बाउंड है, [production] प्रोफ़ाइल में क्रेडेंशियल हैं, और kind रिमोट सर्विस से मेल खाता है: V2 के लिए odata-v2, V4 के लिए odata। टारगेट तक पहुँच पक्की करने के लिए कॉकपिट में “Check Connection” इस्तेमाल कीजिए।

मेरा SAP BTP ट्रायल ऐप रात भर में काम करना क्यों बंद कर देता है?

ट्रायल और free-tier प्लान पर संसाधन बचाने के लिए SAP HANA Cloud इंस्टेंस हर रात बंद कर दी जाती हैं। आपका ऐप चलता रहता है, पर अपने डेटाबेस तक नहीं पहुँच पाता। काम शुरू करने से पहले हर दिन SAP HANA Cloud Central में इंस्टेंस रीस्टार्ट कीजिए।

मेमोरी और सर्विस के इस्तेमाल की जाँच के लिए cf apps और cf services इस्तेमाल कीजिए, क्योंकि ट्रायल कोटा कॉकपिट में मुश्किल से दिखता है। नए बनाने से पहले इस्तेमाल में न आने वाले इंस्टेंस हटाइए।

बूस्टर और टाइल के अंदर के लिंक खाली पेज पर क्यों ले जाते हैं?

बूस्टर के लिंक तब टूटते हैं जब बूस्टर चलने के बाद सबअकाउंट का स्ट्रक्चर बदल जाता है। रीडायरेक्ट ऐसी जगह इशारा करता है जो अब मौजूद नहीं या कभी पूरी तरह कॉन्फ़िगर ही नहीं हुई थी।

इसकी जगह कॉकपिट के ट्री से नेविगेट कीजिए, और Integration Suite, डेस्टिनेशन और SAP Build Work Zone के सीधे URL बुकमार्क कर लीजिए। जिस चीज़ का आप रोज़ इस्तेमाल करते हैं, उसके लिए बूस्टर से बने नेविगेशन पर भरोसा मत कीजिए।

मुझे BTP ट्रायल अकाउंट से पेड प्लान पर कब जाना चाहिए?

जब सीमाएँ आपका समय खाने लगें। अगर आप एक से ज़्यादा ऐप या डेटाबेस चलाते हैं, या डेमो या टेस्टिंग के लिए स्थिर अपटाइम चाहिए, तो ट्रायल बचत से ज़्यादा झंझट पैदा करता है।

मुख्य फ़ायदे स्थिरता और संसाधनों की साफ़ दृश्यता हैं, नए फ़ीचर नहीं। free-tier प्लान वाला प्रोडक्टिव अकाउंट बीच का अच्छा कदम है: उन प्लान को आप बाद में बिना कुछ दोबारा बनाए पेड में अपग्रेड कर सकते हैं।

Noel D'Costa

लेखक

Noel D'Costa

एविएशन, सरकार, फ़ाइनेंस, रिटेल और मैन्युफ़ैक्चरिंग में SAP और Oracle ERP प्रोग्राम पर 25 साल। पृष्ठभूमि फ़ाइनेंस की है। मैं लीडरशिप टीमों की मदद करता हूँ: ट्रांसफ़ॉर्मेशन का स्कोप ईमानदारी से तय करने में, मुश्किल में फँसे प्रोग्राम को वापस पटरी पर लाने में, और ऐसे सिस्टम बनाने में जो प्रोडक्शन के पहले साल में टिके रहें।

अगला कदम

क्या आप अभी कोई ERP प्रोग्राम चला रहे हैं?

अगर यह लेख किसी ऐसे प्रोग्राम से जुड़ा है जिसमें आप अभी काम कर रहे हैं, तो 30 मिनट की बातचीत अक्सर एक और हफ़्ते के अंदरूनी विश्लेषण से ज़्यादा आगे ले जाती है।