<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>Wiki  - Recent changes [en]</title>
		<link>https://ebasso.net/wiki/index.php?title=Special:RecentChanges</link>
		<description>Track the most recent changes to the wiki in this feed.</description>
		<language>en</language>
		<generator>MediaWiki 1.46.0</generator>
		<lastBuildDate>Mon, 21 Sep 2026 06:49:58 GMT</lastBuildDate>
		<item>
			<title>IBM Maximo</title>
			<link>https://ebasso.net/wiki/index.php?title=IBM_Maximo&amp;diff=10273&amp;oldid=10269</link>
			<guid isPermaLink="false">https://ebasso.net/wiki/index.php?title=IBM_Maximo&amp;diff=10273&amp;oldid=10269</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Migration to Maximo Application Suite (MAS)&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:30, 11 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-multi&quot; lang=&quot;en&quot;&gt;(2 intermediate revisions by the same user not shown)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l68&quot;&gt;Line 68:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 68:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[IBM CP4D: Managing configuration settings of the Cognos Analytics service instance]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[IBM CP4D: Managing configuration settings of the Cognos Analytics service instance]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [https://www.ibm.com/docs/en/software-hub/5.4.x?topic=administering-managing-images IBM CP4D: Managing images in Cognos Analytics]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://www.ibm.com/docs/pt-br/software-hub/5.3.x?topic=setup-creating-administration-scripts IBM CP4D: Changing the plan size of the Cognos Analytics service instance]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://www.ibm.com/docs/pt-br/software-hub/5.3.x?topic=setup-creating-administration-scripts IBM CP4D: Changing the plan size of the Cognos Analytics service instance]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* []&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;https://www.ibm.com/docs/en/software-hub/5.4.x?topic=administering-fine-tuning-memory-ephemeral-storage-in-pods IBM CP4D: Fine-tuning memory and ephemeral storage in pods of the Cognos Analytics service instance&lt;/ins&gt;]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Referencias =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Referencias =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key ebasso_wikidb:diff:1.41:old-10269:rev-10273:php=table --&gt;
&lt;/table&gt;</description>
			<pubDate>Fri, 11 Sep 2026 16:30:20 GMT</pubDate>
			<dc:creator>Ebasso</dc:creator>
			<comments>https://ebasso.net/wiki/index.php?title=Talk:IBM_Maximo</comments>
		</item>
		<item>
			<title>IBM CP4D: Managing configuration settings of the Cognos Analytics service instance</title>
			<link>https://ebasso.net/wiki/index.php?title=IBM_CP4D:_Managing_configuration_settings_of_the_Cognos_Analytics_service_instance&amp;diff=10270&amp;oldid=0</link>
			<guid isPermaLink="false">https://ebasso.net/wiki/index.php?title=IBM_CP4D:_Managing_configuration_settings_of_the_Cognos_Analytics_service_instance&amp;diff=10270&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;* [https://www.ibm.com/docs/en/software-hub/5.4.x?topic=administering-managing-configuration-settings IBM CP4D: Managing configuration settings of the Cognos Analytics service instance]    Request to modify parameter in each Cognos service node (CM&amp;amp;DISP):  1. Navigate to: webapps\p2pd\WEB-INF\services\bal.xml  2. Change existing: &amp;lt;cc_request_timeout_ms&amp;gt;45000&amp;lt;/cc_request_timeout_ms&amp;gt; to &amp;lt;cc_request_timeout_ms&amp;gt;240000&amp;lt;/cc_request_timeout_ms&amp;gt;  3. Restart CA services after mod...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;* [https://www.ibm.com/docs/en/software-hub/5.4.x?topic=administering-managing-configuration-settings IBM CP4D: Managing configuration settings of the Cognos Analytics service instance]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Request to modify parameter in each Cognos service node (CM&amp;amp;DISP):&lt;br /&gt;
 1. Navigate to: webapps\p2pd\WEB-INF\services\bal.xml&lt;br /&gt;
 2. Change existing: &amp;lt;cc_request_timeout_ms&amp;gt;45000&amp;lt;/cc_request_timeout_ms&amp;gt; to &amp;lt;cc_request_timeout_ms&amp;gt;240000&amp;lt;/cc_request_timeout_ms&amp;gt;&lt;br /&gt;
 3. Restart CA services after modification.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Ver também =&lt;br /&gt;
&lt;br /&gt;
[[Category:Cognos]]&lt;br /&gt;
[[Category:CP4D]]&lt;br /&gt;
[[Category:IBM Maximo]]&lt;br /&gt;
[[Category:IBM MAS]]&lt;/div&gt;</description>
			<pubDate>Fri, 11 Sep 2026 16:26:56 GMT</pubDate>
			<dc:creator>Ebasso</dc:creator>
			<comments>https://ebasso.net/wiki/index.php?title=Talk:IBM_CP4D:_Managing_configuration_settings_of_the_Cognos_Analytics_service_instance</comments>
		</item>
		<item>
			<title>IBM Maximo</title>
			<link>https://ebasso.net/wiki/index.php?title=IBM_Maximo&amp;diff=10269&amp;oldid=10267</link>
			<guid isPermaLink="false">https://ebasso.net/wiki/index.php?title=IBM_Maximo&amp;diff=10269&amp;oldid=10267</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Migration to Maximo Application Suite (MAS)&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:25, 11 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l66&quot;&gt;Line 66:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 66:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[IBM CP4D: Add Service Instance User Script]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[IBM CP4D: Add Service Instance User Script]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[IBM CP4D: Managing configuration settings of the Cognos Analytics service instance]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [https://www.ibm.com/docs/pt-br/software-hub/5.3.x?topic=setup-creating-administration-scripts IBM CP4D: Changing the plan size of the Cognos Analytics service instance]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* []&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Referencias =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Referencias =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key ebasso_wikidb:diff:1.41:old-10267:rev-10269:php=table --&gt;
&lt;/table&gt;</description>
			<pubDate>Fri, 11 Sep 2026 16:25:12 GMT</pubDate>
			<dc:creator>Ebasso</dc:creator>
			<comments>https://ebasso.net/wiki/index.php?title=Talk:IBM_Maximo</comments>
		</item>
		<item>
			<title>IBM Maximo: Script to check router certificates on MAS</title>
			<link>https://ebasso.net/wiki/index.php?title=IBM_Maximo:_Script_to_check_router_certificates_on_MAS&amp;diff=10268&amp;oldid=0</link>
			<guid isPermaLink="false">https://ebasso.net/wiki/index.php?title=IBM_Maximo:_Script_to_check_router_certificates_on_MAS&amp;diff=10268&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;Script para coletar todas as Routes em mas-dev01-core e mas-dev01-manage e verificar detalhadamente os certificados TLS associados.   == Script ==  &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt; #!/usr/bin/env bash   set -uo pipefail  NAMESPACES=(&amp;quot;mas-dev01-core&amp;quot; &amp;quot;mas-dev01-manage&amp;quot;)  OUTPUT_FILE=&amp;quot;report-certificates-routes.txt&amp;quot;  exec &amp;gt; &amp;gt;(tee -i &amp;quot;${OUTPUT_FILE}&amp;quot;) 2&amp;gt;&amp;amp;1  echo &amp;quot;========================================================================&amp;quot; echo &amp;quot; RELATÓRIO DE CERTIFICADOS TLS DAS...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Script para coletar todas as Routes em mas-dev01-core e mas-dev01-manage&lt;br /&gt;
e verificar detalhadamente os certificados TLS associados.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
set -uo pipefail&lt;br /&gt;
&lt;br /&gt;
NAMESPACES=(&amp;quot;mas-dev01-core&amp;quot; &amp;quot;mas-dev01-manage&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
OUTPUT_FILE=&amp;quot;report-certificates-routes.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
exec &amp;gt; &amp;gt;(tee -i &amp;quot;${OUTPUT_FILE}&amp;quot;) 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;========================================================================&amp;quot;&lt;br /&gt;
echo &amp;quot; RELATÓRIO DE CERTIFICADOS TLS DAS ROUTES&amp;quot;&lt;br /&gt;
echo &amp;quot; Namespaces: ${NAMESPACES[*]}&amp;quot;&lt;br /&gt;
echo &amp;quot; Data/Hora: $(date &amp;#039;+%Y-%m-%d %H:%M:%S&amp;#039;)&amp;quot;&lt;br /&gt;
echo &amp;quot;========================================================================&amp;quot;&lt;br /&gt;
echo &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for ns in &amp;quot;${NAMESPACES[@]}&amp;quot;; do&lt;br /&gt;
    echo &amp;quot;########################################################################&amp;quot;&lt;br /&gt;
    echo &amp;quot; NAMESPACE: $ns&amp;quot;&lt;br /&gt;
    echo &amp;quot;########################################################################&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    ROUTES=$(oc get routes -n &amp;quot;$ns&amp;quot; -o jsonpath=&amp;#039;{.items[*].metadata.name}&amp;#039; 2&amp;gt;/dev/null || echo &amp;quot;&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    if [ -z &amp;quot;$ROUTES&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;Nenhuma Route encontrada no namespace $ns.&amp;quot;&lt;br /&gt;
        echo &amp;quot;&amp;quot;&lt;br /&gt;
        continue&lt;br /&gt;
    fi&lt;br /&gt;
    &lt;br /&gt;
    for route in $ROUTES; do&lt;br /&gt;
        echo &amp;quot;------------------------------------------------------------------------&amp;quot;&lt;br /&gt;
        echo &amp;quot; Route: $route&amp;quot;&lt;br /&gt;
        &lt;br /&gt;
        HOST=$(oc get route &amp;quot;$route&amp;quot; -n &amp;quot;$ns&amp;quot; -o jsonpath=&amp;#039;{.spec.host}&amp;#039;)&lt;br /&gt;
        TERMINATION=$(oc get route &amp;quot;$route&amp;quot; -n &amp;quot;$ns&amp;quot; -o jsonpath=&amp;#039;{.spec.tls.termination}&amp;#039;)&lt;br /&gt;
        INSECURE_POLICY=$(oc get route &amp;quot;$route&amp;quot; -n &amp;quot;$ns&amp;quot; -o jsonpath=&amp;#039;{.spec.tls.insecureEdgeTerminationPolicy}&amp;#039;)&lt;br /&gt;
        &lt;br /&gt;
        echo &amp;quot; Host: $HOST&amp;quot;&lt;br /&gt;
        echo &amp;quot; Terminação TLS: ${TERMINATION:-&amp;#039;Nenhuma (HTTP/Sem TLS)&amp;#039;}&amp;quot;&lt;br /&gt;
        echo &amp;quot; Política Insegura: ${INSECURE_POLICY:-&amp;#039;None&amp;#039;}&amp;quot;&lt;br /&gt;
        &lt;br /&gt;
        # Extrai certificado embutido na Route&lt;br /&gt;
        CERT=$(oc get route &amp;quot;$route&amp;quot; -n &amp;quot;$ns&amp;quot; -o jsonpath=&amp;#039;{.spec.tls.certificate}&amp;#039;)&lt;br /&gt;
        CA_CERT=$(oc get route &amp;quot;$route&amp;quot; -n &amp;quot;$ns&amp;quot; -o jsonpath=&amp;#039;{.spec.tls.caCertificate}&amp;#039;)&lt;br /&gt;
        DEST_CA=$(oc get route &amp;quot;$route&amp;quot; -n &amp;quot;$ns&amp;quot; -o jsonpath=&amp;#039;{.spec.tls.destinationCACertificate}&amp;#039;)&lt;br /&gt;
        &lt;br /&gt;
        if [ -n &amp;quot;$CERT&amp;quot; ]; then&lt;br /&gt;
            echo &amp;quot;&amp;quot;&lt;br /&gt;
            echo &amp;quot; [✓] Certificado Customizado Presente na Route:&amp;quot;&lt;br /&gt;
            echo &amp;quot;$CERT&amp;quot; | openssl x509 -noout -subject -issuer -dates 2&amp;gt;/dev/null || echo &amp;quot;     Erro ao parsear certificado com OpenSSL.&amp;quot;&lt;br /&gt;
            &lt;br /&gt;
            # SANs&lt;br /&gt;
            SANS=$(echo &amp;quot;$CERT&amp;quot; | openssl x509 -noout -ext subjectAltName 2&amp;gt;/dev/null | grep -v &amp;quot;X509v3&amp;quot; | sed &amp;#039;s/^[ \t]*//&amp;#039; || true)&lt;br /&gt;
            if [ -n &amp;quot;$SANS&amp;quot; ]; then&lt;br /&gt;
                echo &amp;quot;     SANs: $SANS&amp;quot;&lt;br /&gt;
            fi&lt;br /&gt;
            &lt;br /&gt;
            # Validação de data&lt;br /&gt;
            if ! echo &amp;quot;$CERT&amp;quot; | openssl x509 -checkend 0 -noout 2&amp;gt;/dev/null; then&lt;br /&gt;
                echo &amp;quot;     [!] STATUS: CERTIFICADO EXPIRADO!&amp;quot;&lt;br /&gt;
            else&lt;br /&gt;
                echo &amp;quot;     [✓] STATUS: VÁLIDO&amp;quot;&lt;br /&gt;
            fi&lt;br /&gt;
        else&lt;br /&gt;
            if [ -z &amp;quot;$TERMINATION&amp;quot; ]; then&lt;br /&gt;
                echo &amp;quot; [!] Sem terminação TLS configurada.&amp;quot;&lt;br /&gt;
            elif [ &amp;quot;$TERMINATION&amp;quot; == &amp;quot;passthrough&amp;quot; ]; then&lt;br /&gt;
                echo &amp;quot; [i] Terminação Passthrough (Certificado gerenciado diretamente pelo Pod/Backend).&amp;quot;&lt;br /&gt;
            else&lt;br /&gt;
                echo &amp;quot; [i] Usa o Certificado Padrão do Ingress do OpenShift (*.apps...).&amp;quot;&lt;br /&gt;
            fi&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        if [ -n &amp;quot;$CA_CERT&amp;quot; ]; then&lt;br /&gt;
            echo &amp;quot;&amp;quot;&lt;br /&gt;
            echo &amp;quot; [i] CA Certificate na Route:&amp;quot;&lt;br /&gt;
            echo &amp;quot;$CA_CERT&amp;quot; | openssl x509 -noout -subject -issuer -dates 2&amp;gt;/dev/null || echo &amp;quot;     Erro ao parsear CA cert.&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        if [ -n &amp;quot;$DEST_CA&amp;quot; ]; then&lt;br /&gt;
            echo &amp;quot;&amp;quot;&lt;br /&gt;
            echo &amp;quot; [i] Destination CA Certificate (para reencrypt):&amp;quot;&lt;br /&gt;
            echo &amp;quot;$DEST_CA&amp;quot; | openssl x509 -noout -subject -issuer -dates 2&amp;gt;/dev/null || echo &amp;quot;     Erro ao parsear Destination CA.&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
        &lt;br /&gt;
        echo &amp;quot;&amp;quot;&lt;br /&gt;
    done&lt;br /&gt;
    echo &amp;quot;&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;========================================================================&amp;quot;&lt;br /&gt;
echo &amp;quot; Resumo e Verificação de Conectividade TLS Externa (via OpenSSL s_client)&amp;quot;&lt;br /&gt;
echo &amp;quot;========================================================================&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for ns in &amp;quot;${NAMESPACES[@]}&amp;quot;; do&lt;br /&gt;
    ROUTES=$(oc get routes -n &amp;quot;$ns&amp;quot; -o jsonpath=&amp;#039;{.items[*].metadata.name}&amp;#039; 2&amp;gt;/dev/null || echo &amp;quot;&amp;quot;)&lt;br /&gt;
    for route in $ROUTES; do&lt;br /&gt;
        HOST=$(oc get route &amp;quot;$route&amp;quot; -n &amp;quot;$ns&amp;quot; -o jsonpath=&amp;#039;{.spec.host}&amp;#039;)&lt;br /&gt;
        TERMINATION=$(oc get route &amp;quot;$route&amp;quot; -n &amp;quot;$ns&amp;quot; -o jsonpath=&amp;#039;{.spec.tls.termination}&amp;#039;)&lt;br /&gt;
        &lt;br /&gt;
        if [ -n &amp;quot;$TERMINATION&amp;quot; ] &amp;amp;&amp;amp; [ -n &amp;quot;$HOST&amp;quot; ]; then&lt;br /&gt;
            echo -n &amp;quot;Testando handshake TLS em $HOST:443 ... &amp;quot;&lt;br /&gt;
            # Tenta conectar via porta 443 com timeout de 3s&lt;br /&gt;
            RESP=$(timeout 3 openssl s_client -connect &amp;quot;${HOST}:443&amp;quot; -servername &amp;quot;$HOST&amp;quot; &amp;lt;/dev/null 2&amp;gt;&amp;amp;1 || true)&lt;br /&gt;
            if echo &amp;quot;$RESP&amp;quot; | grep -q &amp;quot;CONNECTED&amp;quot;; then&lt;br /&gt;
                EXP_DATE=$(echo &amp;quot;$RESP&amp;quot; | openssl x509 -noout -enddate 2&amp;gt;/dev/null | cut -d= -f2 || echo &amp;quot;N/A&amp;quot;)&lt;br /&gt;
                SUBJECT=$(echo &amp;quot;$RESP&amp;quot; | openssl x509 -noout -subject 2&amp;gt;/dev/null || echo &amp;quot;N/A&amp;quot;)&lt;br /&gt;
                echo &amp;quot;OK (Expira em: $EXP_DATE | $SUBJECT)&amp;quot;&lt;br /&gt;
            else&lt;br /&gt;
                echo &amp;quot;FALHA / TIMEOUT na conexão externa.&amp;quot;&lt;br /&gt;
            fi&lt;br /&gt;
        fi&lt;br /&gt;
    done&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;&amp;quot;&lt;br /&gt;
echo &amp;quot;========================================================================&amp;quot;&lt;br /&gt;
echo &amp;quot; Check Complete. See file: $OUTPUT_FILE&amp;quot;&lt;br /&gt;
echo &amp;quot;========================================================================&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
* [[Cloud| Artigos sobre Cloud]]&lt;br /&gt;
* [[Tecnologias|  Mais Artigos sobre Cloud / WebDev / Tecnologias]]&lt;br /&gt;
&lt;br /&gt;
[[Category:IBM Maximo]]&lt;/div&gt;</description>
			<pubDate>Fri, 11 Sep 2026 14:44:36 GMT</pubDate>
			<dc:creator>Ebasso</dc:creator>
			<comments>https://ebasso.net/wiki/index.php?title=Talk:IBM_Maximo:_Script_to_check_router_certificates_on_MAS</comments>
		</item>
		<item>
			<title>IBM Maximo</title>
			<link>https://ebasso.net/wiki/index.php?title=IBM_Maximo&amp;diff=10267&amp;oldid=10265</link>
			<guid isPermaLink="false">https://ebasso.net/wiki/index.php?title=IBM_Maximo&amp;diff=10267&amp;oldid=10265</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Migration to Maximo Application Suite (MAS)&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:42, 11 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l59&quot;&gt;Line 59:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 59:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[IBM Maximo: Containerized NGINX server with authentication to securely host and distribute customization_files.zip]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[IBM Maximo: Containerized NGINX server with authentication to securely host and distribute customization_files.zip]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[IBM Maximo: Script to check router certificates on MAS]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key ebasso_wikidb:diff:1.41:old-10265:rev-10267:php=table --&gt;
&lt;/table&gt;</description>
			<pubDate>Fri, 11 Sep 2026 14:42:04 GMT</pubDate>
			<dc:creator>Ebasso</dc:creator>
			<comments>https://ebasso.net/wiki/index.php?title=Talk:IBM_Maximo</comments>
		</item>
		<item>
			<title>IBM CP4D: Add Service Instance User Script</title>
			<link>https://ebasso.net/wiki/index.php?title=IBM_CP4D:_Add_Service_Instance_User_Script&amp;diff=10266&amp;oldid=0</link>
			<guid isPermaLink="false">https://ebasso.net/wiki/index.php?title=IBM_CP4D:_Add_Service_Instance_User_Script&amp;diff=10266&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot; == .env file ==  &amp;lt;syntaxhighlight lang=&amp;quot;properties&amp;quot;&amp;gt; # CPD cluster admin credentials # Copy this file to .env and fill in your values.  CPD_URL=cpd.apps.mycluster.example.com CPD_ADMIN_USERNAME=admin CPD_ADMIN_PASSWORD=your_admin_password_here  # Used by cpd_add_instance_user.py CPD_INSTANCE_ID=your_service_instance_id (17....) CPD_NEW_USERNAME=username_to_add CPD_NEW_UID=uid_of_user (10003...) CPD_NEW_ROLE=Admin &amp;lt;/syntaxhighlight&amp;gt;  == cpd_add_instance_user.py == &amp;lt;synta...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
== .env file ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;properties&amp;quot;&amp;gt;&lt;br /&gt;
# CPD cluster admin credentials&lt;br /&gt;
# Copy this file to .env and fill in your values.&lt;br /&gt;
&lt;br /&gt;
CPD_URL=cpd.apps.mycluster.example.com&lt;br /&gt;
CPD_ADMIN_USERNAME=admin&lt;br /&gt;
CPD_ADMIN_PASSWORD=your_admin_password_here&lt;br /&gt;
&lt;br /&gt;
# Used by cpd_add_instance_user.py&lt;br /&gt;
CPD_INSTANCE_ID=your_service_instance_id (17....)&lt;br /&gt;
CPD_NEW_USERNAME=username_to_add&lt;br /&gt;
CPD_NEW_UID=uid_of_user (10003...)&lt;br /&gt;
CPD_NEW_ROLE=Admin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cpd_add_instance_user.py ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
CPD Add Service Instance User Script&lt;br /&gt;
Authenticates against CPD, then adds a user to a service instance&lt;br /&gt;
via POST /zen-data/v2/serviceInstance/users using a ZenApiKey token.&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import json&lt;br /&gt;
import os&lt;br /&gt;
import sys&lt;br /&gt;
import urllib.request&lt;br /&gt;
import urllib.error&lt;br /&gt;
import ssl&lt;br /&gt;
import getpass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ---------------------------------------------------------------------------&lt;br /&gt;
# Shared helpers (same pattern as cpd_create_user.py)&lt;br /&gt;
# ---------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def load_env(path: str = &amp;quot;.env&amp;quot;) -&amp;gt; None:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Parse a .env file and populate os.environ (no external dependencies).&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    try:&lt;br /&gt;
        with open(path) as fh:&lt;br /&gt;
            for line in fh:&lt;br /&gt;
                line = line.strip()&lt;br /&gt;
                if not line or line.startswith(&amp;quot;#&amp;quot;) or &amp;quot;=&amp;quot; not in line:&lt;br /&gt;
                    continue&lt;br /&gt;
                key, _, value = line.partition(&amp;quot;=&amp;quot;)&lt;br /&gt;
                value = value.strip().strip(&amp;quot;\&amp;quot;&amp;#039;&amp;quot;)&lt;br /&gt;
                os.environ.setdefault(key.strip(), value)&lt;br /&gt;
    except FileNotFoundError:&lt;br /&gt;
        pass  # .env is optional&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def _ssl_ctx() -&amp;gt; ssl.SSLContext:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Return an SSL context with certificate verification disabled (mirrors curl -k).&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    ctx = ssl.create_default_context()&lt;br /&gt;
    ctx.check_hostname = False&lt;br /&gt;
    ctx.verify_mode = ssl.CERT_NONE&lt;br /&gt;
    return ctx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def prompt(label: str, secret: bool = False) -&amp;gt; str:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Prompt interactively; hide input when secret=True.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if secret:&lt;br /&gt;
        return getpass.getpass(f&amp;quot;{label}: &amp;quot;)&lt;br /&gt;
    value = input(f&amp;quot;{label}: &amp;quot;).strip()&lt;br /&gt;
    if not value:&lt;br /&gt;
        print(f&amp;quot;[ERROR] &amp;#039;{label}&amp;#039; cannot be empty.&amp;quot;, file=sys.stderr)&lt;br /&gt;
        sys.exit(1)&lt;br /&gt;
    return value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ---------------------------------------------------------------------------&lt;br /&gt;
# API calls&lt;br /&gt;
# ---------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def get_bearer_token(cpd_url: str, admin_user: str, admin_password: str) -&amp;gt; str:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Authenticate and return the Bearer token.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    url = f&amp;quot;https://{cpd_url}/icp4d-api/v1/authorize&amp;quot;&lt;br /&gt;
    payload = json.dumps({&amp;quot;username&amp;quot;: admin_user, &amp;quot;password&amp;quot;: admin_password}).encode()&lt;br /&gt;
&lt;br /&gt;
    req = urllib.request.Request(&lt;br /&gt;
        url,&lt;br /&gt;
        data=payload,&lt;br /&gt;
        headers={&amp;quot;Content-Type&amp;quot;: &amp;quot;application/json&amp;quot;},&lt;br /&gt;
        method=&amp;quot;POST&amp;quot;,&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        with urllib.request.urlopen(req, context=_ssl_ctx()) as resp:&lt;br /&gt;
            body = json.loads(resp.read().decode())&lt;br /&gt;
    except urllib.error.HTTPError as exc:&lt;br /&gt;
        print(f&amp;quot;[ERROR] Authentication failed ({exc.code}): {exc.read().decode()}&amp;quot;, file=sys.stderr)&lt;br /&gt;
        sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
    token = body.get(&amp;quot;token&amp;quot;)&lt;br /&gt;
    if not token:&lt;br /&gt;
        print(f&amp;quot;[ERROR] No token in response: {body}&amp;quot;, file=sys.stderr)&lt;br /&gt;
        sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
    return token&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def list_instance_users(cpd_url: str, zen_token: str, instance_id: str) -&amp;gt; list:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;List all users of a CPD service instance.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    url = f&amp;quot;https://{cpd_url}/zen-data/v2/serviceInstance/users?sID={instance_id}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    req = urllib.request.Request(&lt;br /&gt;
        url,&lt;br /&gt;
        headers={&lt;br /&gt;
            &amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {zen_token}&amp;quot;,&lt;br /&gt;
            &amp;quot;Accept&amp;quot;: &amp;quot;application/json&amp;quot;,&lt;br /&gt;
        },&lt;br /&gt;
        method=&amp;quot;GET&amp;quot;,&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        with urllib.request.urlopen(req, context=_ssl_ctx()) as resp:&lt;br /&gt;
            body = json.loads(resp.read().decode())&lt;br /&gt;
    except urllib.error.HTTPError as exc:&lt;br /&gt;
        print(f&amp;quot;[ERROR] List instance users failed ({exc.code}): {exc.read().decode()}&amp;quot;, file=sys.stderr)&lt;br /&gt;
        sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
    # The API may return {&amp;quot;users&amp;quot;: [...]} or a bare list or another structure.&lt;br /&gt;
    # Print raw response to help diagnose unexpected shapes.&lt;br /&gt;
    if &amp;quot;users&amp;quot; not in body:&lt;br /&gt;
        print(f&amp;quot;      [DEBUG] Raw response: {json.dumps(body, indent=2)}&amp;quot;, file=sys.stderr)&lt;br /&gt;
&lt;br /&gt;
    users = body.get(&amp;quot;users&amp;quot;, [])&lt;br /&gt;
    # Guard: keep only dict entries so we never crash on unexpected types.&lt;br /&gt;
    return [u for u in users if isinstance(u, dict)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def add_instance_user(&lt;br /&gt;
    cpd_url: str,&lt;br /&gt;
    zen_token: str,&lt;br /&gt;
    instance_id: str,&lt;br /&gt;
    username: str,&lt;br /&gt;
    uid: str,&lt;br /&gt;
    role: str,&lt;br /&gt;
) -&amp;gt; dict:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Add a user to a CPD service instance and return the API response.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    url = f&amp;quot;https://{cpd_url}/zen-data/v2/serviceInstance/users&amp;quot;&lt;br /&gt;
    payload = json.dumps(&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;serviceInstanceID&amp;quot;: instance_id,&lt;br /&gt;
            &amp;quot;users&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;role&amp;quot;: role,&lt;br /&gt;
                    &amp;quot;uid&amp;quot;: uid,&lt;br /&gt;
                    &amp;quot;username&amp;quot;: username,&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
        }&lt;br /&gt;
    ).encode()&lt;br /&gt;
&lt;br /&gt;
    req = urllib.request.Request(&lt;br /&gt;
        url,&lt;br /&gt;
        data=payload,&lt;br /&gt;
        headers={&lt;br /&gt;
            &amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {zen_token}&amp;quot;,&lt;br /&gt;
            &amp;quot;Content-Type&amp;quot;: &amp;quot;application/json&amp;quot;,&lt;br /&gt;
        },&lt;br /&gt;
        method=&amp;quot;POST&amp;quot;,&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        with urllib.request.urlopen(req, context=_ssl_ctx()) as resp:&lt;br /&gt;
            return json.loads(resp.read().decode())&lt;br /&gt;
    except urllib.error.HTTPError as exc:&lt;br /&gt;
        print(f&amp;quot;[ERROR] Add instance user failed ({exc.code}): {exc.read().decode()}&amp;quot;, file=sys.stderr)&lt;br /&gt;
        sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ---------------------------------------------------------------------------&lt;br /&gt;
# Entry point&lt;br /&gt;
# ---------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def main() -&amp;gt; None:&lt;br /&gt;
    load_env()&lt;br /&gt;
    print(&amp;quot;=== IBM Cloud Pak for Data — Add Service Instance User ===\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # --- Cluster / admin credentials (.env → interactive fallback) ---&lt;br /&gt;
    cpd_url    = os.environ.get(&amp;quot;CPD_URL&amp;quot;)            or prompt(&amp;quot;CPD Route URL (without https://)&amp;quot;)&lt;br /&gt;
    admin_user = os.environ.get(&amp;quot;CPD_ADMIN_USERNAME&amp;quot;) or (input(&amp;quot;CPD admin username [admin]: &amp;quot;).strip() or &amp;quot;admin&amp;quot;)&lt;br /&gt;
    admin_pass = os.environ.get(&amp;quot;CPD_ADMIN_PASSWORD&amp;quot;) or prompt(&amp;quot;CPD admin password&amp;quot;, secret=True)&lt;br /&gt;
&lt;br /&gt;
    # --- Step 1: fetch Bearer / ZenApiKey token ---&lt;br /&gt;
    print(&amp;quot;\n[1/2] Fetching Bearer token...&amp;quot;)&lt;br /&gt;
    token = get_bearer_token(cpd_url, admin_user, admin_pass)&lt;br /&gt;
    print(f&amp;quot;      Token obtained (first 40 chars): {token[:40]}...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # --- Service instance user details (required from environment / .env) ---&lt;br /&gt;
    instance_id = os.environ.get(&amp;quot;CPD_INSTANCE_ID&amp;quot;) or prompt(&amp;quot;Service Instance ID&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def require_env(var: str) -&amp;gt; str:&lt;br /&gt;
        value = os.environ.get(var, &amp;quot;&amp;quot;).strip()&lt;br /&gt;
        if not value:&lt;br /&gt;
            print(f&amp;quot;[ERROR] Environment variable &amp;#039;{var}&amp;#039; is required but not set.&amp;quot;, file=sys.stderr)&lt;br /&gt;
            sys.exit(1)&lt;br /&gt;
        return value&lt;br /&gt;
&lt;br /&gt;
    # --- Step 2: list current users ---&lt;br /&gt;
    print(&amp;quot;\n[2/3] Current users in service instance...&amp;quot;)&lt;br /&gt;
    current_users = list_instance_users(cpd_url, token, instance_id)&lt;br /&gt;
    if current_users:&lt;br /&gt;
        print(f&amp;quot;      {&amp;#039;USERNAME&amp;#039;:&amp;lt;30} {&amp;#039;UID&amp;#039;:&amp;lt;20} ROLE&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;      {&amp;#039;-&amp;#039;*30} {&amp;#039;-&amp;#039;*20} {&amp;#039;-&amp;#039;*20}&amp;quot;)&lt;br /&gt;
        for u in current_users:&lt;br /&gt;
            print(f&amp;quot;      {u.get(&amp;#039;username&amp;#039;, u):&amp;lt;30} {str(u.get(&amp;#039;uid&amp;#039;, &amp;#039;&amp;#039;)):&amp;lt;20} {u.get(&amp;#039;role&amp;#039;, &amp;#039;&amp;#039;)}&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;      (no users found)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    username = os.environ.get(&amp;quot;CPD_NEW_USERNAME&amp;quot;, &amp;quot;&amp;quot;).strip()&lt;br /&gt;
    uid      = require_env(&amp;quot;CPD_NEW_UID&amp;quot;)&lt;br /&gt;
    role     = require_env(&amp;quot;CPD_NEW_ROLE&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # --- Step 3: add user to instance (skip if CPD_NEW_USERNAME is empty) ---&lt;br /&gt;
    if not username:&lt;br /&gt;
        print(&amp;quot;\n[3/3] CPD_NEW_USERNAME not set — skipping add user step.&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;\n[3/3] Adding user to service instance...&amp;quot;)&lt;br /&gt;
    result = add_instance_user(&lt;br /&gt;
        cpd_url=cpd_url,&lt;br /&gt;
        zen_token=token,&lt;br /&gt;
        instance_id=instance_id,&lt;br /&gt;
        username=username,&lt;br /&gt;
        uid=uid,&lt;br /&gt;
        role=role,&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;\n[OK] User added to service instance successfully.&amp;quot;)&lt;br /&gt;
    print(json.dumps(result, indent=2))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Ver também =&lt;br /&gt;
&lt;br /&gt;
[[Category:Cognos]]&lt;br /&gt;
[[Category:CP4D]]&lt;br /&gt;
[[Category:IBM Maximo]]&lt;br /&gt;
[[Category:IBM MAS]]&lt;/div&gt;</description>
			<pubDate>Fri, 11 Sep 2026 14:39:21 GMT</pubDate>
			<dc:creator>Ebasso</dc:creator>
			<comments>https://ebasso.net/wiki/index.php?title=Talk:IBM_CP4D:_Add_Service_Instance_User_Script</comments>
		</item>
		<item>
			<title>IBM Maximo</title>
			<link>https://ebasso.net/wiki/index.php?title=IBM_Maximo&amp;diff=10265&amp;oldid=10263</link>
			<guid isPermaLink="false">https://ebasso.net/wiki/index.php?title=IBM_Maximo&amp;diff=10265&amp;oldid=10263</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Migration to Maximo Application Suite (MAS)&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:37, 11 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l62&quot;&gt;Line 62:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 62:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[IBM CP4D: Creating a Cognos Analytics administrator for publishing packages]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[IBM CP4D: Creating a Cognos Analytics administrator for publishing packages]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[IBM CP4D: Add Service Instance User Script]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Referencias =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Referencias =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key ebasso_wikidb:diff:1.41:old-10263:rev-10265:php=table --&gt;
&lt;/table&gt;</description>
			<pubDate>Fri, 11 Sep 2026 14:37:54 GMT</pubDate>
			<dc:creator>Ebasso</dc:creator>
			<comments>https://ebasso.net/wiki/index.php?title=Talk:IBM_Maximo</comments>
		</item>
		<item>
			<title>IBM CP4D: Creating a Cognos Analytics administrator for publishing packages</title>
			<link>https://ebasso.net/wiki/index.php?title=IBM_CP4D:_Creating_a_Cognos_Analytics_administrator_for_publishing_packages&amp;diff=10264&amp;oldid=0</link>
			<guid isPermaLink="false">https://ebasso.net/wiki/index.php?title=IBM_CP4D:_Creating_a_Cognos_Analytics_administrator_for_publishing_packages&amp;diff=10264&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot; Has this https://www.ibm.com/docs/en/maximo-manage/cd?topic=server-creating-cognos-analytics-administrator-publishing-packages  But i prefer a python script:  == .env file ==  &amp;lt;syntaxhighlight lang=&amp;quot;properties&amp;quot;&amp;gt; # CPD cluster admin credentials # Copy this file to .env and fill in your values.  CPD_URL=cpd.apps.mycluster.example.com CPD_ADMIN_USERNAME=admin CPD_ADMIN_PASSWORD=your_admin_password_here  # Used by cpd_add_instance_user.py CPD_INSTANCE_ID=your_service_instan...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
Has this https://www.ibm.com/docs/en/maximo-manage/cd?topic=server-creating-cognos-analytics-administrator-publishing-packages&lt;br /&gt;
&lt;br /&gt;
But i prefer a python script:&lt;br /&gt;
&lt;br /&gt;
== .env file ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;properties&amp;quot;&amp;gt;&lt;br /&gt;
# CPD cluster admin credentials&lt;br /&gt;
# Copy this file to .env and fill in your values.&lt;br /&gt;
&lt;br /&gt;
CPD_URL=cpd.apps.mycluster.example.com&lt;br /&gt;
CPD_ADMIN_USERNAME=admin&lt;br /&gt;
CPD_ADMIN_PASSWORD=your_admin_password_here&lt;br /&gt;
&lt;br /&gt;
# Used by cpd_add_instance_user.py&lt;br /&gt;
CPD_INSTANCE_ID=your_service_instance_id (17....)&lt;br /&gt;
CPD_NEW_USERNAME=username_to_add&lt;br /&gt;
CPD_NEW_UID=uid_of_user (10003...)&lt;br /&gt;
CPD_NEW_ROLE=Admin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cpd_create_user.py ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
CPD Create User Script&lt;br /&gt;
Automates Bearer Token retrieval and CPD user creation via the IBM Cloud Pak for Data API.&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import json&lt;br /&gt;
import os&lt;br /&gt;
import sys&lt;br /&gt;
import urllib.request&lt;br /&gt;
import urllib.error&lt;br /&gt;
import ssl&lt;br /&gt;
import getpass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def get_bearer_token(cpd_url: str, admin_user: str, admin_password: str) -&amp;gt; str:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Authenticate against CPD and return the Bearer token.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    url = f&amp;quot;https://{cpd_url}/icp4d-api/v1/authorize&amp;quot;&lt;br /&gt;
    payload = json.dumps({&amp;quot;username&amp;quot;: admin_user, &amp;quot;password&amp;quot;: admin_password}).encode(&amp;quot;utf-8&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    req = urllib.request.Request(&lt;br /&gt;
        url,&lt;br /&gt;
        data=payload,&lt;br /&gt;
        headers={&amp;quot;Content-Type&amp;quot;: &amp;quot;application/json&amp;quot;},&lt;br /&gt;
        method=&amp;quot;POST&amp;quot;,&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    ctx = ssl.create_default_context()&lt;br /&gt;
    ctx.check_hostname = False&lt;br /&gt;
    ctx.verify_mode = ssl.CERT_NONE&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        with urllib.request.urlopen(req, context=ctx) as resp:&lt;br /&gt;
            body = json.loads(resp.read().decode(&amp;quot;utf-8&amp;quot;))&lt;br /&gt;
    except urllib.error.HTTPError as exc:&lt;br /&gt;
        print(f&amp;quot;[ERROR] Authentication failed ({exc.code}): {exc.read().decode()}&amp;quot;, file=sys.stderr)&lt;br /&gt;
        sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
    token = body.get(&amp;quot;token&amp;quot;)&lt;br /&gt;
    if not token:&lt;br /&gt;
        print(f&amp;quot;[ERROR] No token in response: {body}&amp;quot;, file=sys.stderr)&lt;br /&gt;
        sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
    return token&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def create_cpd_user(&lt;br /&gt;
    cpd_url: str,&lt;br /&gt;
    bearer_token: str,&lt;br /&gt;
    username: str,&lt;br /&gt;
    password: str,&lt;br /&gt;
    display_name: str,&lt;br /&gt;
    email: str,&lt;br /&gt;
    roles: list[str],&lt;br /&gt;
) -&amp;gt; dict:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Create a new CPD user and return the API response body.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    url = f&amp;quot;https://{cpd_url}/usermgmt/v1/user&amp;quot;&lt;br /&gt;
    payload = json.dumps(&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;username&amp;quot;: username,&lt;br /&gt;
            &amp;quot;password&amp;quot;: password,&lt;br /&gt;
            &amp;quot;displayName&amp;quot;: display_name,&lt;br /&gt;
            &amp;quot;email&amp;quot;: email,&lt;br /&gt;
            &amp;quot;user_roles&amp;quot;: roles,&lt;br /&gt;
        }&lt;br /&gt;
    ).encode(&amp;quot;utf-8&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    req = urllib.request.Request(&lt;br /&gt;
        url,&lt;br /&gt;
        data=payload,&lt;br /&gt;
        headers={&lt;br /&gt;
            &amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {bearer_token}&amp;quot;,&lt;br /&gt;
            &amp;quot;Content-Type&amp;quot;: &amp;quot;application/json&amp;quot;,&lt;br /&gt;
        },&lt;br /&gt;
        method=&amp;quot;POST&amp;quot;,&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    ctx = ssl.create_default_context()&lt;br /&gt;
    ctx.check_hostname = False&lt;br /&gt;
    ctx.verify_mode = ssl.CERT_NONE&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        with urllib.request.urlopen(req, context=ctx) as resp:&lt;br /&gt;
            return json.loads(resp.read().decode(&amp;quot;utf-8&amp;quot;))&lt;br /&gt;
    except urllib.error.HTTPError as exc:&lt;br /&gt;
        print(f&amp;quot;[ERROR] User creation failed ({exc.code}): {exc.read().decode()}&amp;quot;, file=sys.stderr)&lt;br /&gt;
        sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def load_env(path: str = &amp;quot;.env&amp;quot;) -&amp;gt; None:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Parse a .env file and populate os.environ (no external dependencies).&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    try:&lt;br /&gt;
        with open(path) as fh:&lt;br /&gt;
            for line in fh:&lt;br /&gt;
                line = line.strip()&lt;br /&gt;
                if not line or line.startswith(&amp;quot;#&amp;quot;) or &amp;quot;=&amp;quot; not in line:&lt;br /&gt;
                    continue&lt;br /&gt;
                key, _, value = line.partition(&amp;quot;=&amp;quot;)&lt;br /&gt;
                # Strip optional surrounding quotes&lt;br /&gt;
                value = value.strip().strip(&amp;quot;\&amp;quot;&amp;#039;&amp;quot;)&lt;br /&gt;
                os.environ.setdefault(key.strip(), value)&lt;br /&gt;
    except FileNotFoundError:&lt;br /&gt;
        pass  # .env is optional&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def prompt(label: str, secret: bool = False) -&amp;gt; str:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Prompt the user for input, hiding the value when secret=True.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if secret:&lt;br /&gt;
        return getpass.getpass(f&amp;quot;{label}: &amp;quot;)&lt;br /&gt;
    value = input(f&amp;quot;{label}: &amp;quot;).strip()&lt;br /&gt;
    if not value:&lt;br /&gt;
        print(f&amp;quot;[ERROR] &amp;#039;{label}&amp;#039; cannot be empty.&amp;quot;, file=sys.stderr)&lt;br /&gt;
        sys.exit(1)&lt;br /&gt;
    return value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main() -&amp;gt; None:&lt;br /&gt;
    load_env()&lt;br /&gt;
    print(&amp;quot;=== IBM Cloud Pak for Data — Create CPD User ===\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # --- CPD cluster details (prefer .env, fall back to interactive prompt) ---&lt;br /&gt;
    cpd_url    = os.environ.get(&amp;quot;CPD_URL&amp;quot;)    or prompt(&amp;quot;CPD Route URL (without https://)&amp;quot;)&lt;br /&gt;
    admin_user = os.environ.get(&amp;quot;CPD_ADMIN_USERNAME&amp;quot;) or (input(&amp;quot;CPD admin username [admin]: &amp;quot;).strip() or &amp;quot;admin&amp;quot;)&lt;br /&gt;
    admin_pass = os.environ.get(&amp;quot;CPD_ADMIN_PASSWORD&amp;quot;) or prompt(&amp;quot;CPD admin password&amp;quot;, secret=True)&lt;br /&gt;
&lt;br /&gt;
    # --- Step 1: fetch Bearer token ---&lt;br /&gt;
    print(&amp;quot;\n[1/2] Fetching Bearer token...&amp;quot;)&lt;br /&gt;
    token = get_bearer_token(cpd_url, admin_user, admin_pass)&lt;br /&gt;
    print(f&amp;quot;      Token obtained (first 40 chars): {token[:40]}...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # --- New user details ---&lt;br /&gt;
    print(&amp;quot;\nNew user details:&amp;quot;)&lt;br /&gt;
    new_username     = prompt(&amp;quot;Username&amp;quot;)&lt;br /&gt;
    new_password     = prompt(&amp;quot;Password&amp;quot;, secret=True)&lt;br /&gt;
    new_display_name = prompt(&amp;quot;Display name&amp;quot;)&lt;br /&gt;
    new_email        = prompt(&amp;quot;Email&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    roles_input = input(&amp;quot;Roles (comma-separated) [User,Administrator]: &amp;quot;).strip()&lt;br /&gt;
    roles = [r.strip() for r in roles_input.split(&amp;quot;,&amp;quot;)] if roles_input else [&amp;quot;User&amp;quot;, &amp;quot;Administrator&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
    # --- Step 2: create user ---&lt;br /&gt;
    print(&amp;quot;\n[2/2] Creating CPD user...&amp;quot;)&lt;br /&gt;
    result = create_cpd_user(&lt;br /&gt;
        cpd_url=cpd_url,&lt;br /&gt;
        bearer_token=token,&lt;br /&gt;
        username=new_username,&lt;br /&gt;
        password=new_password,&lt;br /&gt;
        display_name=new_display_name,&lt;br /&gt;
        email=new_email,&lt;br /&gt;
        roles=roles,&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;\n[OK] User created successfully.&amp;quot;)&lt;br /&gt;
    print(json.dumps(result, indent=2))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Ver também =&lt;br /&gt;
&lt;br /&gt;
[[Category:Cognos]]&lt;br /&gt;
[[Category:CP4D]]&lt;br /&gt;
[[Category:IBM Maximo]]&lt;br /&gt;
[[Category:IBM MAS]]&lt;/div&gt;</description>
			<pubDate>Fri, 11 Sep 2026 14:35:59 GMT</pubDate>
			<dc:creator>Ebasso</dc:creator>
			<comments>https://ebasso.net/wiki/index.php?title=Talk:IBM_CP4D:_Creating_a_Cognos_Analytics_administrator_for_publishing_packages</comments>
		</item>
		<item>
			<title>IBM Maximo</title>
			<link>https://ebasso.net/wiki/index.php?title=IBM_Maximo&amp;diff=10263&amp;oldid=10212</link>
			<guid isPermaLink="false">https://ebasso.net/wiki/index.php?title=IBM_Maximo&amp;diff=10263&amp;oldid=10212</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Migration to Maximo Application Suite (MAS)&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:32, 11 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l59&quot;&gt;Line 59:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 59:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[IBM Maximo: Containerized NGINX server with authentication to securely host and distribute customization_files.zip]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[IBM Maximo: Containerized NGINX server with authentication to securely host and distribute customization_files.zip]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[IBM CP4D: Creating a Cognos Analytics administrator for publishing packages]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Referencias =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Referencias =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key ebasso_wikidb:diff:1.41:old-10212:rev-10263:php=table --&gt;
&lt;/table&gt;</description>
			<pubDate>Fri, 11 Sep 2026 14:32:07 GMT</pubDate>
			<dc:creator>Ebasso</dc:creator>
			<comments>https://ebasso.net/wiki/index.php?title=Talk:IBM_Maximo</comments>
		</item>
</channel></rss>