Service Portal カタログアイテムのリダイレクト設定、送信・検索問題のトラブルシューティングIssue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 問題 1:Service Portal のカタログアイテム送信後のリダイレクト設定 症状 管理者が、Service Portal でカタログアイテムまたはレコードプロデューサーを送信した後、ユーザーを特定のページにリダイレクトする必要があります。 解決策 1. SC Catalog Item ウィジェットを使用したリダイレクト(ウィジェットインスタンスレベル) すべてのカタログアイテム送信に対してリダイレクトを設定するには: /sp?id=sc_cat_item に移動します。Ctrl キーを押しながら右クリックし、[Instance Options] を選択します。以下のフィールドを設定します。 Successful Order Page — 送信後にユーザーをリダイレクトするページを選択します。Successful Order Table — 成功メッセージのリンク生成に使用するテーブルを選択します。(任意)Auto-Redirect on Successful Order を有効にすると、ユーザーが成功メッセージのリンクをクリックしなくても自動的にリダイレクトされます。 設定完了後、成功メッセージのリンクおよび/または自動リダイレクトにより、ユーザーが指定のページまたはレコードに遷移します。 2. レコードプロデューサースクリプトを使用したリダイレクト レコードプロデューサーでスクリプトベースのリダイレクトを設定するには、portal_redirect プロパティを設定します。 producer.portal_redirect = "?id=sc_home"; これにより、レコードプロデューサーの送信後に指定した Service Portal ページへリダイレクトされます。 問題 2:カタログアイテムが「Submitting…」のまま停止し、400 (Bad Request) が発生する 症状 カタログアイテムの送信が「Submitting…」のまま停止します。ブラウザコンソールに以下が表示されます。 400 (Bad Request) "Mandatory variables are not filled" システムログに Service Catalog REST API からの BadRequestError が記録されます。 ブラウザコンソールのエラー: uri: "api/sn_sc/v1/servicecatalog/items/bcf9c7129525d6405fabdeba66ae2a4c/submit_producer 400 (Bad Request) {error: {…}, status: "failure"} error : detail : "" message : "Mandatory variables are not filled" __proto__ : ログのエラー: 2018-04-18 09:21:06 (638) API_INT-thread-1 A32A62A50F691300B04F419CE1050EFC txid=61ebae2d0f2d SEVERE *** ERROR *** Root cause of JavaScriptException: com.glide.rest.service.custom.errors.ScriptableBadRequestError JavaScript evaluation error on: (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) { var request_body = request.body.nextEntry(); var quantity = '' + request_body.sysparm_quantity; if (!/^\+?([0-9]*)$/.test(quantity)) throw new sn_ws_err.BadRequestError("Invalid Quantity value"); else request_body.sysparm_quantity = quantity; var itemId = '' + request.pathParams.sys_id; request_body.sysparm_id = itemId; var catItem = new sn_sc.CatItem(itemId); if (!catItem.canView()) throw new sn_ws_err.BadRequestError("Security constraints prevent ordering of Item"); var catUtil = new RestCatalogUtil(); if (!catUtil.checkMandatoryVariables(itemId, request_body.variables)) throw new sn_ws_err.BadRequestError('Mandatory Variables are required'); var cart = new sn_sc.CartJS("cart_" +itemId); request_body.sysparm_cart_name = "cart_" +itemId; try { return cart.orderNow(request_body); }catch(e) { gs.debug(e); throw new sn_ws_err.NotFoundError("Invalid Request"); } })(request, response); 2018-04-18 09:21:06 (639) API_INT-thread-1 A32A62A50F691300B04F419CE1050EFC txid=61ebae2d0f2d SEVERE *** ERROR *** JavaScript evaluation error on: (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) { var request_body = request.body.nextEntry(); var quantity = '' + request_body.sysparm_quantity; if (!/^\+?([0-9]*)$/.test(quantity)) throw new sn_ws_err.BadRequestError("Invalid Quantity value"); else request_body.sysparm_quantity = quantity; var itemId = '' + request.pathParams.sys_id; request_body.sysparm_id = itemId; var catItem = new sn_sc.CatItem(itemId); if (!catItem.canView()) throw new sn_ws_err.BadRequestError("Security constraints prevent ordering of Item"); var catUtil = new RestCatalogUtil(); if (!catUtil.checkMandatoryVariables(itemId, request_body.variables)) throw new sn_ws_err.BadRequestError('Mandatory Variables are required'); var cart = new sn_sc.CartJS("cart_" +itemId); request_body.sysparm_cart_name = "cart_" +itemId; try { return cart.orderNow(request_body); }catch(e) { gs.debug(e); throw new sn_ws_err.NotFoundError("Invalid Request"); } })(request, response); org.mozilla.javascript.JavaScriptException: [object BadRequestError] (sys_ws_operation.4f9131449f901200d54dd4b4232e708d.operation_script; line 18) at org.mozilla.javascript.gen.sys_ws_operation_4f9131449f901200d54dd4b4232e708d_operation_script_4345._c_process_1(sys_ws_operation.4f9131449f901200d54dd4b4232e708d.operation_script:18) at org.mozilla.javascript.gen.sys_ws_operation_4f9131449f901200d54dd4b4232e708d_operation_script_4345.call(sys_ws_operation.4f9131449f901200d54dd4b4232e708d.operation_script) at org.mozilla.javascript.ScriptRuntime.doCall2(ScriptRuntime.java:2650) at org.mozilla.javascript.ScriptRuntime.doCall(ScriptRuntime.java:2590) at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42) at org.mozilla.javascript.gen.sys_ws_operation_4f9131449f901200d54dd4b4232e708d_operation_script_4345._c_script_0(sys_ws_operation.4f9131449f901200d54dd4b4232e708d.operation_script:1) at org.mozilla.javascript.gen.sys_ws_operation_4f9131449f901200d54dd4b4232e708d_operation_script_4345.call(sys_ws_operation.4f9131449f901200d54dd4b4232e708d.operation_script) at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:563) at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3428) at org.mozilla.javascript.gen.sys_ws_operation_4f9131449f901200d54dd4b4232e708d_operation_script_4345.call(sys_ws_operation.4f9131449f901200d54dd4b4232e708d.operation_script) at org.mozilla.javascript.gen.sys_ws_operation_4f9131449f901200d54dd4b4232e708d_operation_script_4345.exec(sys_ws_operation.4f9131449f901200d54dd4b4232e708d.operation_script) at com.glide.script.ScriptEvaluator.execute(ScriptEvaluator.java:263) at com.glide.script.ScriptEvaluator.evaluateString(ScriptEvaluator.java:110) at com.glide.script.ScriptEvaluator.evaluateString(ScriptEvaluator.java:76) at com.glide.script.fencing.GlideScopedEvaluator.evaluateScript(GlideScopedEvaluator.java:309) at com.glide.script.fencing.GlideScopedEvaluator.evaluateScript(GlideScopedEvaluator.java:214) at com.glide.script.fencing.GlideScopedEvaluator.evaluateScript(GlideScopedEvaluator.java:201) at com.glide.rest.service.custom.CustomService.runScript(CustomService.java:95) at com.glide.rest.service.custom.CustomService.execute(CustomService.java:82) at com.glide.rest.handler.impl.ServiceHandlerImpl.invokeService(ServiceHandlerImpl.java:36) at com.glide.rest.processors.RESTAPIProcessor.process(RESTAPIProcessor.java:271) at com.glide.processors.AProcessor.runProcessor(AProcessor.java:483) at com.glide.processors.AProcessor.processTransaction(AProcessor.java:205) at com.glide.processors.ProcessorRegistry.process0(ProcessorRegistry.java:178) at com.glide.processors.ProcessorRegistry.process(ProcessorRegistry.java:167) at com.glide.ui.GlideServletTransaction.process(GlideServletTransaction.java:31) at com.glide.sys.Transaction.run(Transaction.java:2038) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) 2018-04-18 09:21:06 (642) API_INT-thread-1 A32A62A50F691300B04F419CE1050EFC txid=61ebae2d0f2d #5706 [REST API] RESTAPIProcessor : Mandatory Variables are required 原因 カタログアイテムに必須変数が含まれており、以下によって非表示にされています。 Catalog UI PoliciesCatalog Client Scripts 実行時に必須変数が非表示になっている場合、Service Portal の REST API が送信を拒否します。 解決策 カタログアイテム上のすべての変数(変数セットを含む)を確認します。[Mandatory] にチェックが入っている変数を特定します。これらの変数を非表示にしている UI Policy またはクライアントスクリプトがないか確認します。必須変数が非表示になっている場合は、変数レベルで [Mandatory] のチェックを外します。必須変数を非表示にするスクリプトが存在しないにもかかわらず問題が継続する場合は、ポータルページが標準 (OOB) の「SC Catalog Item」ウィジェットを使用していることを確認します。 問題 3:Service Portal のカタログアイテム検索で結果が表示されない 症状 Service Portal のタイプアヘッド検索で、期待するカタログアイテムが表示されません。 原因 カタログアイテムが、現在のポータルで使用されている sp_portal レコードに参照されているカタログに含まれていません。 解決策 検索を実行するポータルの sp_portal レコードを開きます。[Catalog] フィールドを確認します。カタログアイテムが、そのポータルに関連付けられているカタログに含まれていることを確認します。 Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } すべてのリリース Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 各問題の詳細については、上記の個別の解決策セクションをご参照ください。 Related Links<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } }