{"id":673,"date":"2010-03-18T05:35:34","date_gmt":"2010-03-18T09:35:34","guid":{"rendered":"http:\/\/www.tridens.si\/?p=673"},"modified":"2021-12-01T15:36:43","modified_gmt":"2021-12-01T15:36:43","slug":"benutzerdefinierte-felder-in-oracle-brm","status":"publish","type":"post","link":"https:\/\/tridenstechnology.com\/de\/custom-fields-in-oracle-brm\/","title":{"rendered":"Benutzerdefinierte Felder in Oracle BRM"},"content":{"rendered":"<div id=\"_mcePaste\">Oracle Communications Billing and Revenue Management (Oracle BRM \\ formally known as Portal Infranet) offers two methods for creating, editing and deleting custom fields and storable classes. One approach is by using Storable Class Editor, part of the Developer Center application, and the other is by using SDK opcodes. For a number of reasons, I prefer the latter choice, and in this post I will address manipulating custom fields with SDK opcodes.<\/div>\n<div id=\"_mcePaste\">Before beginning, one change needs to be made first: making\u00a0the data dictionary writable. Here&#8217;s how to do it:<\/div>\n<div id=\"_mcePaste\">1. Open the Oracle DM or Microsoft SQL Server DM configuration file (BRM_HOME\/sys\/dm_oracle\/pin.conf or BRM_HOME\/sys\/dm_odbc\/pin.conf) in a text editor.<\/div>\n<div id=\"_mcePaste\">2. Enable field manipulation in the data dictionary, by setting the following entry to 1:- dm dd_write_enable_fields 1<\/div>\n<div id=\"_mcePaste\">Our objectives are as follows:<\/div>\n<div id=\"_mcePaste\">1. To create a custom field<\/div>\n<div id=\"_mcePaste\">2. To edit the custom field description<\/div>\n<div id=\"_mcePaste\">3. To delete the custom field from the database<\/div>\n<div id=\"_mcePaste\">4. To make the custom field available to BRM<\/div>\n<div id=\"_mcePaste\"><strong>Creating a New Custom Field<\/strong><\/div>\n<div id=\"_mcePaste\">Creating a new custom field and committing it to the database can be accomplished with SDK opcodes or with a pin deploy utility. As developers know, SDK opcodes provide a more flexible way to create, edit, and delete custom fields at the development stage. The pin deploy\u00a0utility, on the other hand, uses PODL (Portal Object Definition Language) to export and import \u00a0field and storable class definitions. This is more useful, especially at the administrative level, because the process can be streamlined by putting field definitions into source code management and thus lower any possibility of damaging the Oracle BRM production database data dictionary.<\/div>\n<div id=\"_mcePaste\">The following SDK opcodes can be used to manage field specifications:<\/div>\n<div id=\"_mcePaste\">1. PCM_OP_SDK_SET_FLD_SPECS &#8211; create or modify a field,<\/div>\n<div id=\"_mcePaste\">2. PCM_OP_SDK_GET_FLD_SPECS &#8211; retrieve a field specs,<\/div>\n<div id=\"_mcePaste\">3. PCM_OP_SDK_DEL_FLD_SPECS &#8211; delete a field.<\/div>\n<div id=\"_mcePaste\">To create a field, it\u2019s necessary to write an input flist for PCM_OP_SDK_SET_FLD_SPECS opcode:<\/div>\n<div id=\"_mcePaste\">0 PIN_FLD_POID \u00a0 \u00a0 \u00a0 \u00a0 \u00a0POID [0] 0.0.0.1 \/dd\/fields 0 0<\/div>\n<div id=\"_mcePaste\">0 PIN_FLD_FIELD \u00a0 \u00a0 \u00a0ARRAY [0]<\/div>\n<div id=\"_mcePaste\">1 \u00a0 \u00a0PIN_FLD_DESCR \u00a0 \u00a0 \u00a0 \u00a0 \u00a0STR [0] &#8220;custom field for holding a VAT number&#8221;<\/div>\n<div id=\"_mcePaste\">1 \u00a0 \u00a0PIN_FLD_FIELD_NAME \u00a0 \u00a0 \u00a0STR [0] &#8220;C_FLD_VAT_NUMBER&#8221;<\/div>\n<div id=\"_mcePaste\">1 \u00a0 \u00a0PIN_FLD_FIELD_NUM \u00a0 \u00a0 \u00a0ENUM [0] 10000<\/div>\n<div id=\"_mcePaste\">1 \u00a0 \u00a0PIN_FLD_FIELD_TYPE \u00a0 \u00a0 \u00a0INT [0] 5<\/div>\n<div id=\"_mcePaste\">Now, verify that the field created exists in the database data dictionary by feeding the following input flist to PCM_OP_SDK_GET_FLD_SPECS opcode:<\/div>\n<div id=\"_mcePaste\">0 PIN_FLD_POID \u00a0 \u00a0 \u00a0POID [0] 0.0.0.1 \/dd\/objects 0 0<\/div>\n<div id=\"_mcePaste\">0 PIN_FLD_FIELD \u00a0 \u00a0ARRAY [0]<\/div>\n<div id=\"_mcePaste\">1 \u00a0 \u00a0PIN_FLD_FIELD_NAME \u00a0 \u00a0STR [0] &#8220;C_FLD_VAT_NUMBER&#8221;<\/div>\n<div id=\"_mcePaste\"><strong>Editing the Custom Field Description<\/strong><\/div>\n<div id=\"_mcePaste\">Now, having confirmed that the new custom field exists, the description can be altered by calling PCM_OP_SDK_SET_FLD_SPECS opcode with the following input flist:<\/div>\n<div id=\"_mcePaste\">0 PIN_FLD_POID \u00a0 \u00a0 \u00a0 \u00a0 \u00a0POID [0] 0.0.0.1 \/dd\/fields 0 0<\/div>\n<div id=\"_mcePaste\">0 PIN_FLD_FIELD \u00a0 \u00a0 \u00a0ARRAY [0]<\/div>\n<div id=\"_mcePaste\">1 \u00a0 \u00a0PIN_FLD_DESCR \u00a0 \u00a0 \u00a0 \u00a0 \u00a0STR [0] &#8220;custom field &#8211; VAT number&#8221;<\/div>\n<div id=\"_mcePaste\">1 \u00a0 \u00a0PIN_FLD_FIELD_NAME \u00a0 \u00a0 \u00a0STR [0] &#8220;C_FLD_VAT_NUMBER&#8221;<\/div>\n<div id=\"_mcePaste\">1 \u00a0 \u00a0PIN_FLD_FIELD_NUM \u00a0 \u00a0 \u00a0ENUM [0] 10000<\/div>\n<div id=\"_mcePaste\">1 \u00a0 \u00a0PIN_FLD_FIELD_TYPE \u00a0 \u00a0 \u00a0INT [0] 5<\/div>\n<div id=\"_mcePaste\">Again, the field&#8217;s specifications can be retrieved so as to verify that the change has been accomplished.<\/div>\n<div id=\"_mcePaste\"><strong>After that, delete the custom field from the database.<\/strong><\/div>\n<div id=\"_mcePaste\">Finally, assume a mistake has been made, and it\u2019s necessary to delete a field. Provide the following input flist to PCM_OP_SDK_DEL_FLD_SPECS opcode, deletes the field:<\/div>\n<div id=\"_mcePaste\">0 PIN_FLD_POID \u00a0 \u00a0 \u00a0 \u00a0POID [0] 0.0.0.1 \/dd\/fields 0 0<\/div>\n<div id=\"_mcePaste\">0 PIN_FLD_FIELD \u00a0 \u00a0 \u00a0ARRAY [0]<\/div>\n<div id=\"_mcePaste\">1 \u00a0 \u00a0PIN_FLD_FIELD_NAME \u00a0 \u00a0 \u00a0STR [0] &#8220;C_FLD_VAT_NUMBER&#8221;<\/div>\n<div id=\"_mcePaste\">If the opcode for retrieving the field&#8217;s specifications returns an empty flist (only POID obj),then that signifies the field was not found in the database data dictionary.<\/div>\n<div id=\"_mcePaste\"><strong>Making the Custom Fields Available to BRM<\/strong><\/div>\n<div id=\"_mcePaste\">Standard practice dictates that everything custom developed goes into the BRM_HOME\/custom directory, and since, in this case, BRM_HOME\/include\/pin_flds.h, is being extended, a new custom header file BRM_HOME\/custom\/include\/custom_flds.h. needs to be created<\/div>\n<div id=\"_mcePaste\">Now, the new custom field can be introduced by appending the following line to custom_flds.h:<\/div>\n<div id=\"_mcePaste\">#define C_FLD_VAT_NUMBER PIN_MAKE_FLD(PIN_FLDT_STR, 10000)<\/div>\n<div id=\"_mcePaste\">The line above defines a custom field named &#8220;C_FLD_VAT_NUMBER&#8221; (mind the naming practice,<\/div>\n<div id=\"_mcePaste\">PIN_* for BRM fields and C_* for custom fields) with data type &#8220;PIN_FLDT_STR&#8221; (STR stands for string)<\/div>\n<div id=\"_mcePaste\">and unique identifier &#8220;10000&#8221; (in regards to BRM_HOME\/include\/pin_flds.h). Data types are static,<\/div>\n<div id=\"_mcePaste\">and defined by the BRM version you are running; please see BRM_HOME\/include\/pcm.h for definitions.<\/div>\n<div id=\"_mcePaste\">Next, run the parse_custom_ops_fields.pl perl script on the custom_flds.h using this command:<\/div>\n<div id=\"_mcePaste\">$BRM_HOME\/bin\/parse_custom_ops_fields.pl -L pcmc -I custom_flds.h -O $BRM_HOME\/custom\/include\/custom_mapping.m<\/div>\n<div id=\"_mcePaste\">And finally, include the following line to every pin.conf where it\u2019s desired that these field be seen: &#8211; &#8211; ops_fields_extension_file ${BRM_HOME}\/custom\/include\/custom_mapping.m<\/div>\n<div id=\"_mcePaste\">NOTE: When introducing new functionalities using custom fields, it is necessary to include the custom_flds.h header file in the FMs that use these fields<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Oracle Communications Billing and Revenue Management (Oracle BRM \\ formally known as Portal Infranet) offers two methods for creating, editing and deleting custom fields and storable classes. One approach is by using Storable Class Editor, part of the Developer Center application, and the other is by using SDK opcodes. For a number of reasons, I&hellip;<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38],"tags":[],"class_list":["post-673","post","type-post","status-publish","format-standard","hentry","category-oracle-billing","category-38","description-off"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.5 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Custom Fields in Oracle BRM - Tridens<\/title>\n<meta name=\"description\" content=\"Oracle Communications Billing and Revenue Management offer two methods for creating, editing and deleting custom fields and storable classes.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/tridenstechnology.com\/de\/benutzerdefinierte-felder-in-oracle-brm\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Custom Fields in Oracle BRM\" \/>\n<meta property=\"og:description\" content=\"Oracle Communications Billing and Revenue Management offer two methods for creating, editing and deleting custom fields and storable classes.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tridenstechnology.com\/de\/benutzerdefinierte-felder-in-oracle-brm\/\" \/>\n<meta property=\"og:site_name\" content=\"Tridens\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/tridenstechnology\" \/>\n<meta property=\"article:published_time\" content=\"2010-03-18T09:35:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-12-01T15:36:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/09\/tridens-monetization-black.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1504\" \/>\n\t<meta property=\"og:image:height\" content=\"493\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ale\u0161\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@TridensTech\" \/>\n<meta name=\"twitter:site\" content=\"@TridensTech\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ale\u0161\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\u00a0Minuten\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Benutzerdefinierte Felder in Oracle BRM - Tridens","description":"Oracle Communications Billing and Revenue Management bietet zwei Methoden zum Erstellen, Bearbeiten und L\u00f6schen von benutzerdefinierten Feldern und speicherbaren Klassen.","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:\/\/tridenstechnology.com\/de\/benutzerdefinierte-felder-in-oracle-brm\/","og_locale":"de_DE","og_type":"article","og_title":"Custom Fields in Oracle BRM","og_description":"Oracle Communications Billing and Revenue Management offer two methods for creating, editing and deleting custom fields and storable classes.","og_url":"https:\/\/tridenstechnology.com\/de\/benutzerdefinierte-felder-in-oracle-brm\/","og_site_name":"Tridens","article_publisher":"https:\/\/www.facebook.com\/tridenstechnology","article_published_time":"2010-03-18T09:35:34+00:00","article_modified_time":"2021-12-01T15:36:43+00:00","og_image":[{"width":1504,"height":493,"url":"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/09\/tridens-monetization-black.png","type":"image\/png"}],"author":"Ale\u0161","twitter_card":"summary_large_image","twitter_creator":"@TridensTech","twitter_site":"@TridensTech","twitter_misc":{"Verfasst von":"Ale\u0161","Gesch\u00e4tzte Lesezeit":"4\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/tridenstechnology.com\/custom-fields-in-oracle-brm\/#article","isPartOf":{"@id":"https:\/\/tridenstechnology.com\/custom-fields-in-oracle-brm\/"},"author":{"name":"Ale\u0161","@id":"https:\/\/tridenstechnology.com\/#\/schema\/person\/ccd247e07a5e0f856ec13af63d611358"},"headline":"Custom Fields in Oracle BRM","datePublished":"2010-03-18T09:35:34+00:00","dateModified":"2021-12-01T15:36:43+00:00","mainEntityOfPage":{"@id":"https:\/\/tridenstechnology.com\/custom-fields-in-oracle-brm\/"},"wordCount":858,"commentCount":14,"publisher":{"@id":"https:\/\/tridenstechnology.com\/#organization"},"articleSection":["Oracle Billing"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/tridenstechnology.com\/custom-fields-in-oracle-brm\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/tridenstechnology.com\/custom-fields-in-oracle-brm\/","url":"https:\/\/tridenstechnology.com\/custom-fields-in-oracle-brm\/","name":"Benutzerdefinierte Felder in Oracle BRM - Tridens","isPartOf":{"@id":"https:\/\/tridenstechnology.com\/#website"},"datePublished":"2010-03-18T09:35:34+00:00","dateModified":"2021-12-01T15:36:43+00:00","description":"Oracle Communications Billing and Revenue Management bietet zwei Methoden zum Erstellen, Bearbeiten und L\u00f6schen von benutzerdefinierten Feldern und speicherbaren Klassen.","breadcrumb":{"@id":"https:\/\/tridenstechnology.com\/custom-fields-in-oracle-brm\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tridenstechnology.com\/custom-fields-in-oracle-brm\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/tridenstechnology.com\/custom-fields-in-oracle-brm\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/tridenstechnology.com\/"},{"@type":"ListItem","position":2,"name":"Custom Fields in Oracle BRM"}]},{"@type":"WebSite","@id":"https:\/\/tridenstechnology.com\/#website","url":"https:\/\/tridenstechnology.com\/","name":"Tridens","description":"Monetarisierung, Abrechnung &amp; EV-Laden","publisher":{"@id":"https:\/\/tridenstechnology.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/tridenstechnology.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/tridenstechnology.com\/#organization","name":"Tridens","url":"https:\/\/tridenstechnology.com\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/tridenstechnology.com\/#\/schema\/logo\/image\/","url":"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/02\/tridens_logo_invert.png","contentUrl":"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/02\/tridens_logo_invert.png","width":600,"height":191,"caption":"Tridens"},"image":{"@id":"https:\/\/tridenstechnology.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/tridenstechnology","https:\/\/x.com\/TridensTech","https:\/\/www.instagram.com\/tridenstechnology\/","https:\/\/www.linkedin.com\/company\/tridens","https:\/\/www.youtube.com\/user\/TridensIT"]},{"@type":"Person","@id":"https:\/\/tridenstechnology.com\/#\/schema\/person\/ccd247e07a5e0f856ec13af63d611358","name":"Ale\u0161","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/0df040b8c52446051022ab32cd2ac1dc64d3c7eed18d5bd5ab9f2992b8935fc8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0df040b8c52446051022ab32cd2ac1dc64d3c7eed18d5bd5ab9f2992b8935fc8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0df040b8c52446051022ab32cd2ac1dc64d3c7eed18d5bd5ab9f2992b8935fc8?s=96&d=mm&r=g","caption":"Ale\u0161"},"description":"Ales Pristovnik ist der CEO von Tridens Technology, einem slowenischen Unternehmen, das sich auf die Entwicklung von Softwarel\u00f6sungen f\u00fcr die Automobilindustrie spezialisiert hat. Er blickt auf eine lange Erfahrung in der IT-Branche zur\u00fcck und hat in der Vergangenheit f\u00fcr mehrere gro\u00dfe Unternehmen gearbeitet. Er hat eine Leidenschaft f\u00fcr Technologie und Innovation und konzentriert sich derzeit auf die Entwicklung von L\u00f6sungen, die die Sicherheit und Effizienz in der Automobilindustrie verbessern werden. Er verf\u00fcgt \u00fcber einen starken Hintergrund in den Bereichen F\u00fchrung und Management und setzt sich daf\u00fcr ein, sein Unternehmen im sich st\u00e4ndig weiterentwickelnden Technologiesektor voranzubringen.","url":"https:\/\/tridenstechnology.com\/de\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/posts\/673","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/comments?post=673"}],"version-history":[{"count":0,"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/posts\/673\/revisions"}],"wp:attachment":[{"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/media?parent=673"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/categories?post=673"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/tags?post=673"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}