{"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":"pola-niestandardowe-w-oracle-brm","status":"publish","type":"post","link":"https:\/\/tridenstechnology.com\/pl\/custom-fields-in-oracle-brm\/","title":{"rendered":"Pola niestandardowe w 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 \\ formalnie znany jako Portal Infranet) oferuje dwie metody tworzenia, edytowania i usuwania niestandardowych p\u00f3l i klas przechowywanych. Jedn\u0105 z nich jest u\u017cycie Storable Class Editor, b\u0119d\u0105cego cz\u0119\u015bci\u0105 aplikacji Developer Center, a drug\u0105 jest u\u017cycie kod\u00f3w operacyjnych SDK. Z wielu powod\u00f3w...<\/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\/pl\/pola-niestandardowe-w-oracle-brm\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\/pl\/pola-niestandardowe-w-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=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ale\u0161\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minuty\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Pola niestandardowe w Oracle BRM - Tridens","description":"Oracle Communications Billing and Revenue Management oferuje dwie metody tworzenia, edytowania i usuwania p\u00f3l niestandardowych i klas przechowywanych.","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\/pl\/pola-niestandardowe-w-oracle-brm\/","og_locale":"pl_PL","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\/pl\/pola-niestandardowe-w-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":{"Napisane przez":"Ale\u0161","Szacowany czas czytania":"4 minuty"},"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":"pl-PL","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":"Pola niestandardowe w 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 oferuje dwie metody tworzenia, edytowania i usuwania p\u00f3l niestandardowych i klas przechowywanych.","breadcrumb":{"@id":"https:\/\/tridenstechnology.com\/custom-fields-in-oracle-brm\/#breadcrumb"},"inLanguage":"pl-PL","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":"Monetyzacja, rozliczenia i \u0142adowanie pojazd\u00f3w elektrycznych","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":"pl-PL"},{"@type":"Organization","@id":"https:\/\/tridenstechnology.com\/#organization","name":"Tridens","url":"https:\/\/tridenstechnology.com\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@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":"pl-PL","@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 jest dyrektorem generalnym Tridens Technology, s\u0142owe\u0144skiej firmy specjalizuj\u0105cej si\u0119 w tworzeniu oprogramowania dla przemys\u0142u motoryzacyjnego. Ma d\u0142ug\u0105 histori\u0119 w bran\u017cy IT, pracuj\u0105c w przesz\u0142o\u015bci dla kilku du\u017cych firm. Jego pasj\u0105 jest technologia i innowacje, a obecnie koncentruje si\u0119 na opracowywaniu rozwi\u0105za\u0144, kt\u00f3re poprawi\u0105 bezpiecze\u0144stwo i wydajno\u015b\u0107 przemys\u0142u motoryzacyjnego. Ma silne do\u015bwiadczenie w przyw\u00f3dztwie i zarz\u0105dzaniu i jest zaanga\u017cowany w rozw\u00f3j swojej firmy w stale rozwijaj\u0105cym si\u0119 sektorze technologicznym.","url":"https:\/\/tridenstechnology.com\/pl\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/tridenstechnology.com\/pl\/wp-json\/wp\/v2\/posts\/673","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tridenstechnology.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tridenstechnology.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tridenstechnology.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tridenstechnology.com\/pl\/wp-json\/wp\/v2\/comments?post=673"}],"version-history":[{"count":0,"href":"https:\/\/tridenstechnology.com\/pl\/wp-json\/wp\/v2\/posts\/673\/revisions"}],"wp:attachment":[{"href":"https:\/\/tridenstechnology.com\/pl\/wp-json\/wp\/v2\/media?parent=673"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tridenstechnology.com\/pl\/wp-json\/wp\/v2\/categories?post=673"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tridenstechnology.com\/pl\/wp-json\/wp\/v2\/tags?post=673"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}