{"id":13108,"date":"2019-12-01T08:00:42","date_gmt":"2019-12-01T07:00:42","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/"},"modified":"2019-12-01T08:00:42","modified_gmt":"2019-12-01T07:00:42","slug":"documentum-usage-of-k8s-services-to-install-documentum","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/","title":{"rendered":"Documentum &#8211; Usage of K8s Services to install Documentum?"},"content":{"rendered":"<p>In the past several months, we have been extensively working on setting up a CI\/CD pipeline for Documentum at one of our customer. As part of this project, we are using Kubernetes pods for Documentum components. In this blog, I will talk about an issue caused by what seemed like a good idea but finally, not so much&#8230;<\/p>\n<p>The goal of this project is to migrate dozens of Documentum environments and several hundred of VMs into K8s pods. In order to streamline the migration and simplify the management, we thought: why not try to use K8s Services (ingres) for all the communications between the pods as well as external to K8s. Indeed, we needed to take into account several interfaces outside of the K8s world, usually some old software that would most probably never support containerization and such. These interfaces will need to continue to work in the way they used to so we will need K8s Services at some point for the communications between Documentum and these external interfaces. Therefore, the idea was to try to use this exact same K8s Services to install the Documentum components.<\/p>\n<p>By default, K8s will create a headless service for each of the pods, which is composed in the following way: <em>&lt;pod_name&gt;.&lt;service_name&gt;.&lt;namespace_name&gt;.&lt;cluster&gt;<\/em>. The goal here was therefore to define a K8s Service in addition for each Content Servers: <em>&lt;service_name_ext&gt;.&lt;namespace_name&gt;.&lt;cluster&gt;<\/em>. This is what has been used:<\/p>\n<ul>\n<li style=\"margin-top: -27px\">Primary Content Server:\n<ul>\n<li><em>headless\/pod<\/em>: documentum-server-0.documentum-server.dbi-ns01.svc.cluster.local<\/li>\n<li><em>K8s Service<\/em>: cs01.dbi-ns01.svc.cluster.local<\/li>\n<\/ul>\n<\/li>\n<li style=\"margin-top: -27px\">Remote Content Server:\n<ul>\n<li><em>headless\/pod<\/em>: documentum-server-1.documentum-server.dbi-ns01.svc.cluster.local<\/li>\n<li><em>K8s Service<\/em>: cs02.dbi-ns01.svc.cluster.local<\/li>\n<\/ul>\n<\/li>\n<li style=\"margin-top: -27px\">Repository &amp; Service: gr_repo<\/li>\n<\/ul>\n<p>On a typical VM, you would usually install Documentum using the VM hostname. The pendant on K8s would therefore be to use the headless\/pod name. Alternatively, on a VM, you could think about using a DNS entry to install Documentum and you might think that this should work. I sure did and therefore, we tried to use the same kind of thing on K8s with the K8s Services directly.<\/p>\n<p>Doing so for the Primary Content Server, all the Documentum silent installers completed successfully. We used &#8220;cs01.dbi-ns01.svc.cluster.local&#8221; for the following things for example:<\/p>\n<ul>\n<li style=\"margin-top: -27px\">Docbroker projections<\/li>\n<li>Repository installation<\/li>\n<li>DFC &amp; CS Projections<\/li>\n<li>BPM\/xCP installation<\/li>\n<\/ul>\n<p>Therefore, looking into the silent properties file for the Repository for example, it contained the following:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">[dmadmin@documentum-server-0 ~]$ grep -E \"FQDN|HOST\" CS_Docbase_Global.properties\nSERVER.FQDN=cs01.dbi-ns01.svc.cluster.local\nSERVER.PROJECTED_DOCBROKER_HOST=cs01.dbi-ns01.svc.cluster.local\n[dmadmin@documentum-server-0 ~]$<\/pre>\n<p>&nbsp;<\/p>\n<p>At the end of our silent installation (include Documentum silent installers + dbi services&#8217; best practices (other stuff like security, JMS configuration, projections, jobs, aso&#8230;)), connection to the repository was possible, D2 &amp; DA were both working properly so it looked like being a first good step. Unfortunately, when I was doing a review of the repository objects later, I saw some wrong objects and a bit of a mess in the repository: that&#8217;s the full purpose of this blog, to explain what went wrong when using a K8s Service instead of the headless\/pod name.<\/p>\n<p>After a quick review, I found the following things that were wrong\/messy:<\/p>\n<ul>\n<li style=\"margin-top: -27px\">dm_jms_config object\n<ul>\n<li>Expected: for a Primary Content Server, you should have one JMS config object with &#8220;do_mail&#8221;, &#8220;do_method&#8221; and &#8220;SAMLAuthentication&#8221; at least (+ &#8220;do_bpm&#8221; for BPM\/xCP, Indexagent ones, aso&#8230;)\n<ul>\n<li><em>JMS &lt;FQDN&gt;:9080 for gr_repo.gr_repo<\/em><\/li>\n<\/ul>\n<\/li>\n<li style=\"margin-top: -27px\">Actual: the installer created two JMS Objects, one with a correct name (using FQDN provided in installer = K8s Service), one with a wrong name (using pod name (short-name, no domain))\n<ul>\n<li><em>JMS cs01.dbi-ns01.svc.cluster.local:9080 for gr_repo.gr_repo<\/em> =&gt; Correct one and it contained all the needed servlets (&#8220;do_mail&#8221;, &#8220;do_method&#8221;, &#8220;do_bpm&#8221; and &#8220;SAMLAuthentication&#8221;)<\/li>\n<li><em>JMS documentum-server-0:9080 for gr_repo.gr_repo<\/em> =&gt; Wrong one and it contained all the do_ servlets but not the SAML one strangely (&#8220;do_mail&#8221;, &#8220;do_method&#8221; and &#8220;do_bpm&#8221; only, not &#8220;SAMLAuthentication&#8221;)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li style=\"margin-top: -27px\">dm_acs_config object\n<ul>\n<li>Expected: just like for the JMS, you would expect the object to be created with the FQDN you gave it in the installer\n<ul>\n<li><em>&lt;FQDN&gt;ACS1<\/em><\/li>\n<\/ul>\n<\/li>\n<li style=\"margin-top: -27px\">Actual: the installer create the ACS config object using the headless\/pod name (full-name this time and not the short-name)\n<ul>\n<li><em>documentum-server-0.documentum-server.dbi-ns01.svc.cluster.localACS1<\/em><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li style=\"margin-top: -27px\">A lot of other references to the headless\/pod name: dm_user, dm_job, dm_client_registration, dm_client_rights, aso&#8230;<\/li>\n<\/ul>\n<p>So in short, sometimes the Repository installer uses the FQDN provided (K8s Service) and sometimes it doesn&#8217;t. So what&#8217;s the point in providing a FQDN during the installation since it will anyway ignore it for 90% of the objects? In addition, it also creates two JMS config objects at the same time but with different names and different servlets. Looking at the &#8220;dm_jms_config_setup.out&#8221; log file created by the installer when it executed the JMS config object creation, you can see that it mention the creation of only one object and yet at the ends, it says that there are two:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [68,80,81,82,95,96]\">[dmadmin@documentum-server-0 ~]$ cat $DOCUMENTUM\/dba\/config\/gr_repo\/dm_jms_config_setup.out\n\/app\/dctm\/server\/product\/16.4\/bin\/dm_jms_admin.sh -docbase gr_repo.gr_repo -username dmadmin -action add,enableDFC,testDFC,migrate,dumpServerCache,listAll -jms_host_name cs01.dbi-ns01.svc.cluster.local -jms_port 9080                                               -jms_proximity 1 -webapps ServerApps -server_config_id 3d0f123450000102\n2019-10-21 09:50:55 UTC:  Input arguments are: -docbase gr_repo.gr_repo -username dmadmin -action add,enableDFC,testDFC,migrate,dumpServerCache,listAll -jms_host_name cs01.dbi-ns01.svc.cluster.local -jms_port 9080 -jm                                              s_proximity 1 -webapps ServerApps -server_config_id 3d0f123450000102\n2019-10-21 09:50:55 UTC:  Input parameters are: {jms_port=[9080], server_config_id=[3d0f123450000102], docbase=[gr_repo.gr_repo], webapps=[ServerApps], action=[add,enableDFC,testDFC,migrate,dumpServerCache,listAll], jms_pr                                              oximity=[1], jms_host_name=[cs01.dbi-ns01.svc.cluster.local], username=[dmadmin]}\n2019-10-21 09:50:55 UTC:  ======================================================================================\n2019-10-21 09:50:55 UTC:  Begin administering JMS config objects in docbase gr_repo.gr_repo ...\n2019-10-21 09:51:01 UTC:  The following JMS config object has been successfully created\/updated in docbase gr_repo\n2019-10-21 09:51:01 UTC:  --------------------------------------------------------------------------------------\n2019-10-21 09:51:01 UTC:                      JMS Config Name: JMS cs01.dbi-ns01.svc.cluster.local:9080 for gr_repo.gr_repo\n                      JMS Config ID: 080f1234500010a3\n                      JMS Host Name: cs01.dbi-ns01.svc.cluster.local\n                    JMS Port Number: 9080\n             Is Disabled In Docbase: F\n               Repeating attributes:\n               Content_Server_Id[0] = 3d0f123450000102\n        Content_Server_Host_Name[0] = documentum-server-0\n    JMS_Proximity_Relative_to_CS[0] = 2\n             Servlet to URI Mapping:\n                          do_method = http:\/\/cs01.dbi-ns01.svc.cluster.local:9080\/DmMethods\/servlet\/DoMethod\n                 SAMLAuthentication = http:\/\/cs01.dbi-ns01.svc.cluster.local:9080\/SAMLAuthentication\/servlet\/ValidateSAMLResponse\n                            do_mail = http:\/\/cs01.dbi-ns01.svc.cluster.local:9080\/DmMail\/servlet\/DoMail\n\n2019-10-21 09:51:01 UTC:  --------------------------------------------------------------------------------------\n2019-10-21 09:51:01 UTC:  Successfully enabled principal_auth_priv for current DFC client  in docbase gr_repo\n2019-10-21 09:51:01 UTC:  Successfully tested principal_auth_priv for current DFC client  in docbase gr_repo\n2019-10-21 09:51:01 UTC:  Successfully migrated content server 3d0f123450000102 to use JMS config object(s)\n2019-10-21 09:51:01 UTC:  Dump of JMS Config List in content server cache, content server is gr_repo\n2019-10-21 09:51:01 UTC:  --------------------------------------------------------------------------------------\n2019-10-21 09:51:01 UTC:  USER ATTRIBUTES\n\n  jms_list_last_refreshed         : Mon Oct 21 09:51:01 2019\n  incr_wait_time_on_failure       : 30\n  max_wait_time_on_failure        : 3600\n  current_jms_index               : -1\n  jms_config_id                [0]: 080f1234500010a3\n                               [1]: 080f1234500010a4\n  jms_config_name              [0]: JMS cs01.dbi-ns01.svc.cluster.local:9080 for gr_repo.gr_repo\n                               [1]: JMS documentum-server-0:9080 for gr_repo.gr_repo\n  server_config_id             [0]: 3d0f123450000102\n                               [1]: 3d0f123450000102\n  server_config_name           [0]: gr_repo\n                               [1]: gr_repo\n  jms_to_cs_proximity          [0]: 2\n                               [1]: 1\n  is_disabled_in_docbase       [0]: F\n                               [1]: F\n  is_marked_dead_in_cache      [0]: F\n                               [1]: F\n  intended_purpose             [0]: DM_JMS_PURPOSE_FOR_LOAD_BALANCING\n                               [1]: DM_JMS_PURPOSE_DEFAULT_EMBEDDED_JMS\n  last_failure_time            [0]: N\/A\n                               [1]: N\/A\n  next_retry_time              [0]: N\/A\n                               [1]: N\/A\n  failure_count                [0]: 0\n                               [1]: 0\n\nSYSTEM ATTRIBUTES\n\n\nAPPLICATION ATTRIBUTES\n\n\nINTERNAL ATTRIBUTES\n\n\n2019-10-21 09:51:01 UTC:  --------------------------------------------------------------------------------------\n2019-10-21 09:51:01 UTC:  Total 2 JMS Config objects found in docbase gr_repo\n2019-10-21 09:51:01 UTC:  --------------------------------------------------------------------------------------\n2019-10-21 09:51:01 UTC:                      JMS Config Name: JMS cs01.dbi-ns01.svc.cluster.local:9080 for gr_repo.gr_repo\n                      JMS Config ID: 080f1234500010a3\n                      JMS Host Name: cs01.dbi-ns01.svc.cluster.local\n                    JMS Port Number: 9080\n             Is Disabled In Docbase: F\n               Repeating attributes:\n               Content_Server_Id[0] = 3d0f123450000102\n        Content_Server_Host_Name[0] = documentum-server-0\n    JMS_Proximity_Relative_to_CS[0] = 2\n             Servlet to URI Mapping:\n                          do_method = http:\/\/cs01.dbi-ns01.svc.cluster.local:9080\/DmMethods\/servlet\/DoMethod\n                 SAMLAuthentication = http:\/\/cs01.dbi-ns01.svc.cluster.local:9080\/SAMLAuthentication\/servlet\/ValidateSAMLResponse\n                            do_mail = http:\/\/cs01.dbi-ns01.svc.cluster.local:9080\/DmMail\/servlet\/DoMail\n\n2019-10-21 09:51:01 UTC:  --------------------------------------------------------------------------------------\n2019-10-21 09:51:01 UTC:                      JMS Config Name: JMS documentum-server-0:9080 for gr_repo.gr_repo\n                      JMS Config ID: 080f1234500010a4\n                      JMS Host Name: documentum-server-0\n                    JMS Port Number: 9080\n             Is Disabled In Docbase: F\n               Repeating attributes:\n               Content_Server_Id[0] = 3d0f123450000102\n        Content_Server_Host_Name[0] = documentum-server-0\n    JMS_Proximity_Relative_to_CS[0] = 1\n             Servlet to URI Mapping:\n                          do_method = http:\/\/documentum-server-0:9080\/DmMethods\/servlet\/DoMethod\n                            do_mail = http:\/\/documentum-server-0:9080\/DmMail\/servlet\/DoMail\n\n2019-10-21 09:51:01 UTC:  --------------------------------------------------------------------------------------\n2019-10-21 09:51:01 UTC:  Done administering JMS config objects in docbase gr_repo.gr_repo: status=SUCCESS ...\n2019-10-21 09:51:01 UTC:  ======================================================================================\nProgram exit status = 0 = SUCCESS\nConnect to docbase gr_repo.gr_repo as user dmadmin.\nStart running dm_jms_config_setup.ebs script on docbase gr_repo.gr_repo\n[DM_API_E_NO_MATCH]error:  \"There was no match in the docbase for the qualification: dm_method where object_name='dm_JMSAdminConsole'\"\n\n\ndm_method dm_JMSAdminConsole object does not exist, yet.\njarFile = \/app\/dctm\/server\/product\/16.4\/lib\/dmjmsadmin.jar\nwrapper_script = \/app\/dctm\/server\/product\/16.4\/bin\/dm_jms_admin.sh\nCreate dm_method dm_JMSAdminConsole object in docbase now\nnew dm_JMSAdminConsole dm_method object created in docbase successfully\nnew object id is: 100f123450001098\nBegin updating JMS_LOCATION for Java Methods ...\nAssign JMS_LOCATION=ANY to a_extended_properties in method object CTSAdminMethod\nAssign JMS_LOCATION=ANY to a_extended_properties in method object dm_bp_transition_java\nAssign JMS_LOCATION=ANY to a_extended_properties in method object dm_bp_schedule_java\nAssign JMS_LOCATION=ANY to a_extended_properties in method object dm_bp_batch_java\nAssign JMS_LOCATION=ANY to a_extended_properties in method object dm_bp_validate_java\nAssign JMS_LOCATION=ANY to a_extended_properties in method object dm_event_template_sender\nDone updating JMS_LOCATION for Java Methods ...\nBegin create default JMS config object for content server\nContent Server version: 16.4.0110.0167  Linux64.Oracle\nContent Server ID: 3d0f123450000102\ndm_jms_config type id = 030f12345000017c\njms_count = 0\nwrapper_script = \/app\/dctm\/server\/product\/16.4\/bin\/dm_jms_admin.sh\nscript_params =  -docbase gr_repo.gr_repo -username dmadmin -action add,enableDFC,testDFC,migrate,dumpServerCache,listAll  -jms_host_name cs01.dbi-ns01.svc.cluster.local -jms_port 9080 -jms_proximity 1 -webapps Server                                              Apps  -server_config_id 3d0f123450000102\ncmd = \/app\/dctm\/server\/product\/16.4\/bin\/dm_jms_admin.sh  -docbase gr_repo.gr_repo -username dmadmin -action add,enableDFC,testDFC,migrate,dumpServerCache,listAll  -jms_host_name cs01.dbi-ns01.svc.cluster.local -jms_po                                              rt 9080 -jms_proximity 1 -webapps ServerApps  -server_config_id 3d0f123450000102\nstatus = 0\nFinished creating default JMS config object for content server\nFinished running dm_jms_config_setup.ebs...\nDisconnect from the docbase.\n[dmadmin@documentum-server-0 ~]$<\/pre>\n<p>&nbsp;<\/p>\n<p>In the log file above, there is no mention of &#8220;do_bpm&#8221; because it&#8217;s the installation of the Repository and therefore, at that time, the BPM\/xCP isn&#8217;t installed yet. We only install it later, switch the URLs in HTTPS and other things. So looking into the objects in the Repository, this is what we can see at the end of all installations (I purposely only executed the HTTP-&gt;HTTPS + BPM\/xCP addition but not JMS Projections to keep below the default value added by the installer, which are also wrong):<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [27,28,29,35,41,42,309,310,322]\">[dmadmin@documentum-server-0 ~]$ iapi gr_repo\nPlease enter a user (dmadmin):\nPlease enter password for dmadmin:\n\n\n        OpenText Documentum iapi - Interactive API interface\n        Copyright (c) 2018. OpenText Corporation\n        All rights reserved.\n        Client Library Release 16.4.0110.0058\n\n\nConnecting to Server using docbase gr_repo\n[DM_SESSION_I_SESSION_START]info:  \"Session 010f12345000117c started for user dmadmin.\"\n\n\nConnected to OpenText Documentum Server running Release 16.4.0110.0167  Linux64.Oracle\nSession id is s0\nAPI&gt; ?,c,select count(*) from dm_server_config;\ncount(*)\n----------------------\n                     1\n(1 row affected)\n\nAPI&gt; ?,c,select r_object_id, object_name, app_server_name, app_server_uri from dm_server_config order by object_name, app_server_name;\nr_object_id       object_name  app_server_name  app_server_uri\n----------------  -----------  ---------------  -----------------------------------------------------------------------\n3d0f123450000102  gr_repo      do_bpm           https:\/\/cs01.dbi-ns01.svc.cluster.local:9082\/bpm\/servlet\/DoMethod\n                               do_mail          https:\/\/cs01.dbi-ns01.svc.cluster.local:9082\/DmMail\/servlet\/DoMail\n                               do_method        https:\/\/cs01.dbi-ns01.svc.cluster.local:9082\/DmMethods\/servlet\/DoMethod\n(1 row affected)\n\nAPI&gt; ?,c,select count(*) from dm_jms_config;\ncount(*)\n----------------------\n                     2\n(1 row affected)\n\nAPI&gt; ?,c,select r_object_id, object_name from dm_jms_config order by object_name;\nr_object_id       object_name\n----------------  ------------------------------------------------------------\n080f1234500010a3  JMS cs01.dbi-ns01.svc.cluster.local:9080 for gr_repo.gr_repo\n080f1234500010a4  JMS documentum-server-0:9080 for gr_repo.gr_repo\n(2 rows affected)\n\nAPI&gt; dump,c,080f1234500010a3\n...\nUSER ATTRIBUTES\n\n  object_name                     : JMS cs01.dbi-ns01.svc.cluster.local:9080 for gr_repo.gr_repo\n  title                           :\n  subject                         :\n  authors                       []: &lt;none&gt;\n  keywords                      []: &lt;none&gt;\n  resolution_label                :\n  owner_name                      : dmadmin\n  owner_permit                    : 7\n  group_name                      : docu\n  group_permit                    : 5\n  world_permit                    : 3\n  log_entry                       :\n  acl_domain                      : dmadmin\n  acl_name                        : dm_450f123450000101\n  language_code                   :\n  server_config_id             [0]: 3d0f123450000102\n  config_type                     : 2\n  servlet_name                 [0]: do_method\n                               [1]: SAMLAuthentication\n                               [2]: do_mail\n                               [3]: do_bpm\n  base_uri                     [0]: https:\/\/cs01.dbi-ns01.svc.cluster.local:9082\/DmMethods\/servlet\/DoMethod\n                               [1]: https:\/\/cs01.dbi-ns01.svc.cluster.local:9082\/SAMLAuthentication\/servlet\/ValidateSAMLResponse\n                               [2]: https:\/\/cs01.dbi-ns01.svc.cluster.local:9082\/DmMail\/servlet\/DoMail\n                               [3]: https:\/\/cs01.dbi-ns01.svc.cluster.local:9082\/bpm\/servlet\/DoMethod\n  supported_protocol           [0]: https\n                               [1]: https\n                               [2]: https\n                               [3]: https\n  projection_netloc_enable      []: &lt;none&gt;\n  projection_netloc_ident       []: &lt;none&gt;\n  projection_enable            [0]: T\n  projection_proximity_value   [0]: 2\n  projection_targets           [0]: documentum-server-0\n  projection_ports             [0]: 0\n  network_locations             []: &lt;none&gt;\n  server_major_version            :\n  server_minor_version            :\n  is_disabled                     : F\n\nSYSTEM ATTRIBUTES\n\n  r_object_type                   : dm_jms_config\n  r_creation_date                 : 10\/21\/2019 09:51:00\n  r_modify_date                   : 10\/21\/2019 10:49:08\n  r_modifier                      : dmadmin\n  r_access_date                   : nulldate\n  r_composite_id                []: &lt;none&gt;\n  r_composite_label             []: &lt;none&gt;\n  r_component_label             []: &lt;none&gt;\n  r_order_no                    []: &lt;none&gt;\n  r_link_cnt                      : 0\n  r_link_high_cnt                 : 0\n  r_assembled_from_id             : 0000000000000000\n  r_frzn_assembly_cnt             : 0\n  r_has_frzn_assembly             : F\n  r_is_virtual_doc                : 0\n  r_page_cnt                      : 0\n  r_content_size                  : 0\n  r_lock_owner                    :\n  r_lock_date                     : nulldate\n  r_lock_machine                  :\n  r_version_label              [0]: 1.0\n                               [1]: CURRENT\n  r_immutable_flag                : F\n  r_frozen_flag                   : F\n  r_has_events                    : F\n  r_creator_name                  : dmadmin\n  r_is_public                     : T\n  r_policy_id                     : 0000000000000000\n  r_resume_state                  : 0\n  r_current_state                 : 0\n  r_alias_set_id                  : 0000000000000000\n  r_full_content_size             : 0\n  r_aspect_name                 []: &lt;none&gt;\n  r_object_id                     : 080f1234500010a3\n\nAPPLICATION ATTRIBUTES\n\n  a_application_type              :\n  a_status                        :\n  a_is_hidden                     : F\n  a_retention_date                : nulldate\n  a_archive                       : F\n  a_compound_architecture         :\n  a_link_resolved                 : F\n  a_content_type                  :\n  a_full_text                     : T\n  a_storage_type                  :\n  a_special_app                   :\n  a_effective_date              []: &lt;none&gt;\n  a_expiration_date             []: &lt;none&gt;\n  a_publish_formats             []: &lt;none&gt;\n  a_effective_label             []: &lt;none&gt;\n  a_effective_flag              []: &lt;none&gt;\n  a_category                      :\n  a_is_template                   : F\n  a_controlling_app               :\n  a_extended_properties         []: &lt;none&gt;\n  a_is_signed                     : F\n  a_last_review_date              : nulldate\n\nINTERNAL ATTRIBUTES\n\n  i_is_deleted                    : F\n  i_reference_cnt                 : 1\n  i_has_folder                    : T\n  i_folder_id                  [0]: 0c0f123450000105\n  i_contents_id                   : 0000000000000000\n  i_cabinet_id                    : 0c0f123450000105\n  i_antecedent_id                 : 0000000000000000\n  i_chronicle_id                  : 080f1234500010a3\n  i_latest_flag                   : T\n  i_branch_cnt                    : 0\n  i_direct_dsc                    : F\n  i_is_reference                  : F\n  i_retain_until                  : nulldate\n  i_retainer_id                 []: &lt;none&gt;\n  i_partition                     : 0\n  i_is_replica                    : F\n  i_vstamp                        : 4\n\nAPI&gt; dump,c,080f1234500010a4\n...\nUSER ATTRIBUTES\n\n  object_name                     : JMS documentum-server-0:9080 for gr_repo.gr_repo\n  title                           :\n  subject                         :\n  authors                       []: &lt;none&gt;\n  keywords                      []: &lt;none&gt;\n  resolution_label                :\n  owner_name                      : dmadmin\n  owner_permit                    : 7\n  group_name                      : docu\n  group_permit                    : 5\n  world_permit                    : 3\n  log_entry                       :\n  acl_domain                      : dmadmin\n  acl_name                        : dm_450f123450000101\n  language_code                   :\n  server_config_id             [0]: 3d0f123450000102\n  config_type                     : 2\n  servlet_name                 [0]: do_method\n                               [1]: do_mail\n                               [2]: do_bpm\n  base_uri                     [0]: https:\/\/documentum-server-0:9082\/DmMethods\/servlet\/DoMethod\n                               [1]: https:\/\/documentum-server-0:9082\/DmMail\/servlet\/DoMail\n                               [2]: https:\/\/cs01.dbi-ns01.svc.cluster.local:9082\/bpm\/servlet\/DoMethod\n  supported_protocol           [0]: https\n                               [1]: https\n                               [2]: https\n  projection_netloc_enable      []: &lt;none&gt;\n  projection_netloc_ident       []: &lt;none&gt;\n  projection_enable            [0]: T\n  projection_proximity_value   [0]: 1\n  projection_targets           [0]: documentum-server-0\n  projection_ports             [0]: 0\n  network_locations             []: &lt;none&gt;\n  server_major_version            :\n  server_minor_version            :\n  is_disabled                     : F\n\nSYSTEM ATTRIBUTES\n\n  r_object_type                   : dm_jms_config\n  r_creation_date                 : 10\/21\/2019 09:51:01\n  r_modify_date                   : 10\/21\/2019 10:50:20\n  r_modifier                      : dmadmin\n  r_access_date                   : nulldate\n  r_composite_id                []: &lt;none&gt;\n  r_composite_label             []: &lt;none&gt;\n  r_component_label             []: &lt;none&gt;\n  r_order_no                    []: &lt;none&gt;\n  r_link_cnt                      : 0\n  r_link_high_cnt                 : 0\n  r_assembled_from_id             : 0000000000000000\n  r_frzn_assembly_cnt             : 0\n  r_has_frzn_assembly             : F\n  r_is_virtual_doc                : 0\n  r_page_cnt                      : 0\n  r_content_size                  : 0\n  r_lock_owner                    :\n  r_lock_date                     : nulldate\n  r_lock_machine                  :\n  r_version_label              [0]: 1.0\n                               [1]: CURRENT\n  r_immutable_flag                : F\n  r_frozen_flag                   : F\n  r_has_events                    : F\n  r_creator_name                  : dmadmin\n  r_is_public                     : T\n  r_policy_id                     : 0000000000000000\n  r_resume_state                  : 0\n  r_current_state                 : 0\n  r_alias_set_id                  : 0000000000000000\n  r_full_content_size             : 0\n  r_aspect_name                 []: &lt;none&gt;\n  r_object_id                     : 080f1234500010a4\n\nAPPLICATION ATTRIBUTES\n\n  a_application_type              :\n  a_status                        :\n  a_is_hidden                     : F\n  a_retention_date                : nulldate\n  a_archive                       : F\n  a_compound_architecture         :\n  a_link_resolved                 : F\n  a_content_type                  :\n  a_full_text                     : T\n  a_storage_type                  :\n  a_special_app                   :\n  a_effective_date              []: &lt;none&gt;\n  a_expiration_date             []: &lt;none&gt;\n  a_publish_formats             []: &lt;none&gt;\n  a_effective_label             []: &lt;none&gt;\n  a_effective_flag              []: &lt;none&gt;\n  a_category                      :\n  a_is_template                   : F\n  a_controlling_app               :\n  a_extended_properties         []: &lt;none&gt;\n  a_is_signed                     : F\n  a_last_review_date              : nulldate\n\nINTERNAL ATTRIBUTES\n\n  i_is_deleted                    : F\n  i_reference_cnt                 : 1\n  i_has_folder                    : T\n  i_folder_id                  [0]: 0c0f123450000105\n  i_contents_id                   : 0000000000000000\n  i_cabinet_id                    : 0c0f123450000105\n  i_antecedent_id                 : 0000000000000000\n  i_chronicle_id                  : 080f1234500010a4\n  i_latest_flag                   : T\n  i_branch_cnt                    : 0\n  i_direct_dsc                    : F\n  i_is_reference                  : F\n  i_retain_until                  : nulldate\n  i_retainer_id                 []: &lt;none&gt;\n  i_partition                     : 0\n  i_is_replica                    : F\n  i_vstamp                        : 2\n\nAPI&gt; ?,c,select r_object_id, object_name, servlet_name, supported_protocol, base_uri from dm_jms_config order by object_name, servlet_name;\nr_object_id       object_name                                                   servlet_name        supported_protocol  base_uri                                                                                                                  \n----------------  ------------------------------------------------------------  ------------------  ------------------  --------------------------------------------------------------------------------------------\n080f1234500010a3  JMS cs01.dbi-ns01.svc.cluster.local:9080 for gr_repo.gr_repo  SAMLAuthentication  https               https:\/\/cs01.dbi-ns01.svc.cluster.local:9082\/SAMLAuthentication\/servlet\/ValidateSAMLResponse\n                                                                                do_bpm              https               https:\/\/cs01.dbi-ns01.svc.cluster.local:9082\/bpm\/servlet\/DoMethod\n                                                                                do_mail             https               https:\/\/cs01.dbi-ns01.svc.cluster.local:9082\/DmMail\/servlet\/DoMail\n                                                                                do_method           https               https:\/\/cs01.dbi-ns01.svc.cluster.local:9082\/DmMethods\/servlet\/DoMethod\n080f1234500010a4  JMS documentum-server-0:9080 for gr_repo.gr_repo              do_bpm              https               https:\/\/cs01.dbi-ns01.svc.cluster.local:9082\/bpm\/servlet\/DoMethod\n                                                                                do_mail             https               https:\/\/documentum-server-0:9082\/DmMail\/servlet\/DoMail\n                                                                                do_method           https               https:\/\/documentum-server-0:9082\/DmMethods\/servlet\/DoMethod\n(2 rows affected)\n\nAPI&gt; ?,c,select r_object_id, object_name, projection_enable, projection_proximity_value, projection_ports, projection_targets from dm_jms_config order by object_name, projection_targets;\nr_object_id       object_name                                                   projection_enable  projection_proximity_value  projection_ports  projection_targets\n----------------  ------------------------------------------------------------  -----------------  --------------------------  ----------------  -------------------\n080f1234500010a3  JMS cs01.dbi-ns01.svc.cluster.local:9080 for gr_repo.gr_repo                  1                           2                 0  documentum-server-0\n080f1234500010a4  JMS documentum-server-0:9080 for gr_repo.gr_repo                              1                           1                 0  documentum-server-0\n(2 rows affected)\n\nAPI&gt; ?,c,select count(*) from dm_acs_config;\ncount(*)\n----------------------\n                     1\n(1 row affected)\n\nAPI&gt; ?,c,select r_object_id, object_name, acs_supported_protocol, acs_base_url from dm_acs_config order by object_name, acs_base_url;\nr_object_id       object_name                                                           acs_supported_protocol  acs_base_url\n----------------  --------------------------------------------------------------------  ----------------------  ------------------------------------------------------------\n080f123450000490  documentum-server-0.documentum-server.dbi-ns01.svc.cluster.localACS1  https                   https:\/\/cs01.dbi-ns01.svc.cluster.local:9082\/ACS\/servlet\/ACS\n(1 row affected)\n\nAPI&gt; exit\nBye\n[dmadmin@documentum-server-0 ~]$<\/pre>\n<p>&nbsp;<\/p>\n<p>So what to do with that? Well a simple solution is to just remove the wrong JMS config object (the second one) and redo the JMS Projections. You can stay with the wrong name of the ACS config object and other wrong references: even if it&#8217;s ugly, it will be working properly, it&#8217;s really just the second JMS config object that might cause you some trouble. Either scripting all that so it&#8217;s done properly in the end or doing it manually but then obviously when you have a project with a few hundred Content Servers, a simple manual task can become a nightmare ;). Another obvious solution is to not use the K8s Service but stick with the headless\/pod name. With this second solution, you might as well try to use the <a href=\"https:\/\/www.dbi-services.com\/blog\/documentum-migrationutil-4-change-host-name\/\" target=\"_blank\" rel=\"noopener noreferrer\">MigrationUtil utility<\/a> to change all references to the hostname after the installation is done. That would be something interesting to test!<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the past several months, we have been extensively working on setting up a CI\/CD pipeline for Documentum at one of our customer. As part of this project, we are using Kubernetes pods for Documentum components. In this blog, I will talk about an issue caused by what seemed like a good idea but finally, [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[197,525],"tags":[129,1365,89,1695,1755],"type_dbi":[],"class_list":["post-13108","post","type-post","status-publish","format-standard","hentry","category-application-integration-middleware","category-enterprise-content-management","tag-documentum","tag-k8s","tag-kubernetes","tag-pod","tag-service"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Documentum - Usage of K8s Services to install Documentum? - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Documentum - Usage of K8s Services to install Documentum?\" \/>\n<meta property=\"og:description\" content=\"In the past several months, we have been extensively working on setting up a CI\/CD pipeline for Documentum at one of our customer. As part of this project, we are using Kubernetes pods for Documentum components. In this blog, I will talk about an issue caused by what seemed like a good idea but finally, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-12-01T07:00:42+00:00\" \/>\n<meta name=\"author\" content=\"Morgan Patou\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@MorganPatou\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Morgan Patou\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/\"},\"author\":{\"name\":\"Morgan Patou\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"headline\":\"Documentum &#8211; Usage of K8s Services to install Documentum?\",\"datePublished\":\"2019-12-01T07:00:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/\"},\"wordCount\":1131,\"commentCount\":0,\"keywords\":[\"Documentum\",\"k8s\",\"kubernetes\",\"Pod\",\"service\"],\"articleSection\":[\"Application integration &amp; Middleware\",\"Enterprise content management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/\",\"name\":\"Documentum - Usage of K8s Services to install Documentum? - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2019-12-01T07:00:42+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentum &#8211; Usage of K8s Services to install Documentum?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8\",\"name\":\"Morgan Patou\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"caption\":\"Morgan Patou\"},\"description\":\"Morgan Patou has over 12 years of experience in Enterprise Content Management (ECM) systems, with a strong focus in recent years on platforms such as Alfresco, Documentum, and M-Files. He specializes in the architecture, setup, customization, and maintenance of ECM infrastructures in complex &amp; critical environments. Morgan is well-versed in both engineering and operations aspects, including high availability design, system integration, and lifecycle management. He also has a solid foundation in open-source and proprietary technologies - ranging from Apache, OpenLDAP or Kerberos to enterprise-grade systems like WebLogic. Morgan Patou holds an Engineering Degree in Computer Science from ENSISA (\u00c9cole Nationale Sup\u00e9rieure d'Ing\u00e9nieurs Sud Alsace) in Mulhouse, France. He is Alfresco Content Services Certified Administrator (ACSCA), Alfresco Content Services Certified Engineer (ACSCE) as well as OpenText Documentum Certified Administrator. His industry experience spans the Public Sector, IT Services, Financial Services\/Banking, and the Pharmaceutical industry.\",\"sameAs\":[\"https:\/\/blog.dbi-services.com\/author\/morgan-patou\/\",\"https:\/\/x.com\/MorganPatou\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/morgan-patou\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Documentum - Usage of K8s Services to install Documentum? - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/","og_locale":"en_US","og_type":"article","og_title":"Documentum - Usage of K8s Services to install Documentum?","og_description":"In the past several months, we have been extensively working on setting up a CI\/CD pipeline for Documentum at one of our customer. As part of this project, we are using Kubernetes pods for Documentum components. In this blog, I will talk about an issue caused by what seemed like a good idea but finally, [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/","og_site_name":"dbi Blog","article_published_time":"2019-12-01T07:00:42+00:00","author":"Morgan Patou","twitter_card":"summary_large_image","twitter_creator":"@MorganPatou","twitter_misc":{"Written by":"Morgan Patou","Est. reading time":"18 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/"},"author":{"name":"Morgan Patou","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"headline":"Documentum &#8211; Usage of K8s Services to install Documentum?","datePublished":"2019-12-01T07:00:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/"},"wordCount":1131,"commentCount":0,"keywords":["Documentum","k8s","kubernetes","Pod","service"],"articleSection":["Application integration &amp; Middleware","Enterprise content management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/","url":"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/","name":"Documentum - Usage of K8s Services to install Documentum? - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2019-12-01T07:00:42+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/documentum-usage-of-k8s-services-to-install-documentum\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Documentum &#8211; Usage of K8s Services to install Documentum?"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8","name":"Morgan Patou","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","caption":"Morgan Patou"},"description":"Morgan Patou has over 12 years of experience in Enterprise Content Management (ECM) systems, with a strong focus in recent years on platforms such as Alfresco, Documentum, and M-Files. He specializes in the architecture, setup, customization, and maintenance of ECM infrastructures in complex &amp; critical environments. Morgan is well-versed in both engineering and operations aspects, including high availability design, system integration, and lifecycle management. He also has a solid foundation in open-source and proprietary technologies - ranging from Apache, OpenLDAP or Kerberos to enterprise-grade systems like WebLogic. Morgan Patou holds an Engineering Degree in Computer Science from ENSISA (\u00c9cole Nationale Sup\u00e9rieure d'Ing\u00e9nieurs Sud Alsace) in Mulhouse, France. He is Alfresco Content Services Certified Administrator (ACSCA), Alfresco Content Services Certified Engineer (ACSCE) as well as OpenText Documentum Certified Administrator. His industry experience spans the Public Sector, IT Services, Financial Services\/Banking, and the Pharmaceutical industry.","sameAs":["https:\/\/blog.dbi-services.com\/author\/morgan-patou\/","https:\/\/x.com\/MorganPatou"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/morgan-patou\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/13108","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=13108"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/13108\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=13108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=13108"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=13108"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=13108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}