{"id":14711,"date":"2021-08-26T12:52:14","date_gmt":"2021-08-26T16:52:14","guid":{"rendered":"http:\/\/www.iri.com\/blog\/?p=14711"},"modified":"2025-04-15T15:57:38","modified_gmt":"2025-04-15T19:57:38","slug":"sortcl-compatible-asn1-jobs","status":"publish","type":"post","link":"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/","title":{"rendered":"Sample CDR Data Processing Jobs"},"content":{"rendered":"<p><i>In the <a href=\"https:\/\/www.iri.com\/blog\/etl\/asn1-integration-sortcl\/\">previous article<\/a>, new support for <\/i><a href=\"https:\/\/www.iri.com\/products\/cosort\/sortcl\"><i>SortCL<\/i><\/a><i>-compatible jobs in the <\/i><a href=\"https:\/\/www.iri.com\/products\/voracity\"><i>IRI Voracity<\/i><\/a><i> data processing ecosystem for ASN.1-encoded data files was introduced. This article takes a more in-depth look through sample jobs demonstrating various use cases, ASN.1 encoding rules, schema files, and the Protocol Data Units (PDUs) involved with data defined in ASN.1 schemas.<\/i><\/p>\n<p>Note that many of the jobs shown herein are presented in raw text script form, after serialization in the <a href=\"https:\/\/www.iri.com\/products\/workbench\">IRI Workbench<\/a> graphical job design environment, built on Eclipse. Also, a license from <a href=\"https:\/\/www.oss.com\/\">OSS Nokalva<\/a> is needed along with your IRI software license to support the ASN.1 Encoding Rules used in SortCL jobs.<\/p>\n<p>A zip file of all the examples discussed in this article may be downloaded from <a href=\"https:\/\/www.iri.com\/download\/a32a7a9466a3ee3fcf05c622c8703b90a02521b5\">here<\/a>.<\/p>\n<h6><b>Example 1: Output BER-encoded data from existing compliant CSV file<\/b><\/h6>\n<p>Here is an example of an <a href=\"https:\/\/www.iri.com\/products\/cosort\">IRI CoSort<\/a> data transformation job that sorts and maps CSV data to a BER-encoded file meeting the specifications of TAP3, a standard for exchanging data between mobile network operators for roaming calls. The number of fields have been truncated for readability.\u00a0 :<\/p>\n<pre>\/INFILE=ASN.csv\r\n    \/PROCESS=CSV\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_SENDER, TYPE=ASCII, POSITION=1, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_RECIPIENT, TYPE=ASCII, POSITION=2, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILESEQUENCENUMBER, TYPE=ASCII, POSITION=3, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILECREATIONTIMESTAMP_LOCALTIMESTAMP, TYPE=ASCII, POSITION=4, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILECREATIONTIMESTAMP_UTCTIMEOFFSET, TYPE=ASCII, POSITION=5, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_TRANSFERCUTOFFTIMESTAMP_LOCALTIMESTAMP, TYPE=ASCII, POSITION=6, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_TRANSFERCUTOFFTIMESTAMP_UTCTIMEOFFSET, TYPE=ASCII, POSITION=7, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILEAVAILABLETIMESTAMP_LOCALTIMESTAMP, TYPE=ASCII, POSITION=8, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILEAVAILABLETIMESTAMP_UTCTIMEOFFSET, TYPE=ASCII, POSITION=9, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_SPECIFICATIONVERSIONNUMBER, TYPE=NUMERIC, POSITION=10, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_RELEASEVERSIONNUMBER, TYPE=NUMERIC, POSITION=11, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILETYPEINDICATOR, TYPE=ASCII, POSITION=12, SEPARATOR=\",\")\r\n.........\r\n\/SORT\r\n    \/KEY=TRANSFERBATCH_BATCHCONTROLINFO_SENDER\r\n\r\n\/OUTFILE=\"TAP-0310.asn,BER;tap.ber\"\r\n<i>    \/PROCESS=ASN1<\/i>\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_SENDER, TYPE=ASCII, POSITION=1, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_RECIPIENT, TYPE=ASCII, POSITION=2, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILESEQUENCENUMBER, TYPE=ASCII, POSITION=3, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILECREATIONTIMESTAMP_LOCALTIMESTAMP, TYPE=ASCII, POSITION=4, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILECREATIONTIMESTAMP_UTCTIMEOFFSET, TYPE=ASCII, POSITION=5, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_TRANSFERCUTOFFTIMESTAMP_LOCALTIMESTAMP, TYPE=ASCII, POSITION=6, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_TRANSFERCUTOFFTIMESTAMP_UTCTIMEOFFSET, TYPE=ASCII, POSITION=7, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILEAVAILABLETIMESTAMP_LOCALTIMESTAMP, TYPE=ASCII, POSITION=8, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILEAVAILABLETIMESTAMP_UTCTIMEOFFSET, TYPE=ASCII, POSITION=9, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_SPECIFICATIONVERSIONNUMBER, TYPE=NUMERIC, POSITION=10, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_RELEASEVERSIONNUMBER, TYPE=NUMERIC, POSITION=11, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILETYPEINDICATOR, TYPE=ASCII, POSITION=12, SEPARATOR=\",\")\r\n.........<\/pre>\n<p>NOTE: The input data in the CSV file must meet the constraints of the ASN.1 specification (TAP-0310.asn in this case).<\/p>\n<h6><b>Example 2: Sort BER-encoded file and output to Excel<\/b><\/h6>\n<p>Here is another example of CoSort taking a TAP3 BER-encoded call detail record, sorting it on one of the input fields, and outputting to an Excel compatible file in XLSX format.:<\/p>\n<pre>\/INFILE=\"TAP-0310.asn,BER;tap.ber\"\r\n    \/PROCESS=ASN1\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_SENDER, TYPE=ASCII, POSITION=1, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_RECIPIENT, TYPE=ASCII, POSITION=2, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILESEQUENCENUMBER, TYPE=ASCII, POSITION=3, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILECREATIONTIMESTAMP_LOCALTIMESTAMP, TYPE=ASCII, POSITION=4, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILECREATIONTIMESTAMP_UTCTIMEOFFSET, TYPE=ASCII, POSITION=5, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_TRANSFERCUTOFFTIMESTAMP_LOCALTIMESTAMP, TYPE=ASCII, POSITION=6, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_TRANSFERCUTOFFTIMESTAMP_UTCTIMEOFFSET, TYPE=ASCII, POSITION=7, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILEAVAILABLETIMESTAMP_LOCALTIMESTAMP, TYPE=ASCII, POSITION=8, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILEAVAILABLETIMESTAMP_UTCTIMEOFFSET, TYPE=ASCII, POSITION=9, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_SPECIFICATIONVERSIONNUMBER, TYPE=NUMERIC, POSITION=10, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_RELEASEVERSIONNUMBER, TYPE=NUMERIC, POSITION=11, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILETYPEINDICATOR, TYPE=ASCII, POSITION=12, SEPARATOR=\",\")\r\n    .........\r\n\/SORT\r\n    \/KEY=TRANSFERBATCH_BATCHCONTROLINFO_RECIPIENT\r\n\r\n\/OUTFILE=\"'Sheet1',HEADER;outTAP.xlsx\"\r\n    \/PROCESS=XLSX\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_SENDER, TYPE=ASCII, POSITION=1, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_RECIPIENT, TYPE=ASCII, POSITION=2, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILESEQUENCENUMBER, TYPE=ASCII, POSITION=3, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILECREATIONTIMESTAMP_LOCALTIMESTAMP, TYPE=ASCII, POSITION=4, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILECREATIONTIMESTAMP_UTCTIMEOFFSET, TYPE=ASCII, POSITION=5, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_TRANSFERCUTOFFTIMESTAMP_LOCALTIMESTAMP, TYPE=ASCII, POSITION=6, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_TRANSFERCUTOFFTIMESTAMP_UTCTIMEOFFSET, TYPE=ASCII, POSITION=7, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILEAVAILABLETIMESTAMP_LOCALTIMESTAMP, TYPE=ASCII, POSITION=8, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILEAVAILABLETIMESTAMP_UTCTIMEOFFSET, TYPE=ASCII, POSITION=9, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_SPECIFICATIONVERSIONNUMBER, TYPE=NUMERIC, POSITION=10, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_RELEASEVERSIONNUMBER, TYPE=NUMERIC, POSITION=11, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILETYPEINDICATOR, TYPE=ASCII, POSITION=12, SEPARATOR=\",\")\r\n    .........\r\n\r\n<\/pre>\n<figure id=\"attachment_15547\" class=\"thumbnail wp-caption alignnone style=\"width: 1899px\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-15547 size-full\" src=\"\/blog\/wp-content\/uploads\/2021\/08\/excel-asn1.png\" alt=\"Converting a TAP3 call detail record to Excel format and sorting the records by the TADIG code of the call recipient.\" width=\"1889\" height=\"267\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/excel-asn1.png 1889w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/excel-asn1-300x42.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/excel-asn1-768x109.png 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/excel-asn1-1024x145.png 1024w\" sizes=\"(max-width: 1889px) 100vw, 1889px\" \/><figcaption class=\"caption wp-caption-text\">Converting a TAP3 call detail record to Excel format and sorting the records by the TADIG code of the call recipient.<\/figcaption><\/figure>\n<pre>Octet strings from the TAP3 schema are output as hex values. Hex values can be decoded to ASCII with the decode_hex function.<\/pre>\n<h6><b>Example 3: Masking Call Detail Records using IRI FieldShield<\/b><\/h6>\n<p>Given this original set of call detail records encoded with Basic Encoding Rules by the definitions provided in an ASN.1 schema,<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-15597\" src=\"\/blog\/wp-content\/uploads\/2021\/08\/snip-cdrs.png\" alt=\"\" width=\"866\" height=\"222\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/snip-cdrs.png 866w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/snip-cdrs-300x77.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/snip-cdrs-768x197.png 768w\" sizes=\"(max-width: 866px) 100vw, 866px\" \/><\/p>\n<p>and running this <a href=\"https:\/\/www.iri.com\/products\/fieldshield\">IRI FieldShield<\/a> data masking job script in the same SortCL syntax,<\/p>\n<pre>\/INFILES=\"{C:\/Eclipse\/Workbench_10_08\/workspace\/ASN.1\/TAP-0310.asn},BER,DataInterChange;C:\/Eclipse\/Workbench_10_08\/workspace\/ASN.1\/tapgen6.ber\"\r\n    \/PROCESS=ASN1\r\n    \/ALIAS=tapgen6 \r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_SENDER, TYPE=ASCII, POSITION=1, SEPARATOR=\",\") \r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_RECIPIENT, TYPE=ASCII, POSITION=2, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILESEQUENCENUMBER, TYPE=ASCII, POSITION=3, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILECREATIONTIMESTAMP_LOCALTIMESTAMP, TYPE=ASCII, POSITION=4, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILECREATIONTIMESTAMP_UTCTIMEOFFSET, TYPE=ASCII, POSITION=5, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_TRANSFERCUTOFFTIMESTAMP_LOCALTIMESTAMP, TYPE=ASCII, POSITION=6, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_TRANSFERCUTOFFTIMESTAMP_UTCTIMEOFFSET, TYPE=ASCII, POSITION=7, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILEAVAILABLETIMESTAMP_LOCALTIMESTAMP, TYPE=ASCII, POSITION=8, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_FILEAVAILABLETIMESTAMP_UTCTIMEOFFSET, TYPE=ASCII, POSITION=9, SEPARATOR=\",\")\r\n    \/FIELD=(TRANSFERBATCH_BATCHCONTROLINFO_SPECIFICATIONVERSIONNUMBER, TYPE=NUMERIC, POSITION=10, SEPARATOR=\",\")\r\n.......\r\n\/REPORT\r\n\/OUTFILE=masked-tap-gen\r\n    \/PROCESS=RECORD \r\n    \/FIELD=(PSEUDO_TRANSFERBATCH_BATCHCONTROLINFO_SENDER, TYPE=ASCII, POSITION=1, SEPARATOR=\",\", SET=\"C:\/IRI\/cosort105\/sets\/tadig-codes.set\")\r\n    \/FIELD=(PSEUDO_TRANSFERBATCH_BATCHCONTROLINFO_RECIPIENT, TYPE=ASCII, POSITION=2, SEPARATOR=\",\", SET=\"C:\/IRI\/cosort105\/sets\/tadig-codes.set\")\r\n    \/FIELD=(DECODE_TRANSFERBATCH_BATCHCONTROLINFO_FILESEQUENCENUMBER=decode_hex(TRANSFERBATCH_BATCHCONTROLINFO_FILESEQUENCENUMBER), TYPE=ASCII, POSITION=3, SEPARATOR=\",\")\r\n    \/FIELD=(PSEUDO_TRANSFERBATCH_BATCHCONTROLINFO_FILECREATIONTIMESTAMP_LOCALTI, TYPE=ASCII, POSITION=4, SEPARATOR=\",\", SET=\"C:\/Eclipse\/Workbench_10_08\/workspace\/ASN.1\/timestamps.set\")\r\n    \/FIELD=(DECODE_TRANSFERBATCH_BATCHCONTROLINFO_FILECREATIONTIMESTAMP_UTCTIMEOFFSET=decode_hex(TRANSFERBATCH_BATCHCONTROLINFO_FILECREATIONTIMESTAMP_UTCTIMEOFFSET), TYPE=ASCII, POSITION=5, SEPARATOR=\",\")\r\n    \/FIELD=(PSEUDO_TRANSFERBATCH_BATCHCONTROLINFO_TRANSFERCUTOFFTIMESTAMP_LOCAL, TYPE=ASCII, POSITION=6, SEPARATOR=\",\", SET=\"C:\/Eclipse\/Workbench_10_08\/workspace\/ASN.1\/timestamps.set\")\r\n    \/FIELD=(DECODE_TRANSFERBATCH_BATCHCONTROLINFO_TRANSFERCUTOFFTIMESTAMP_UTCTIMEOFFSET=decode_hex(TRANSFERBATCH_BATCHCONTROLINFO_TRANSFERCUTOFFTIMESTAMP_UTCTIMEOFFSET), TYPE=ASCII, POSITION=7, SEPARATOR=\",\")\r\n    \/FIELD=(PSEUDO_TRANSFERBATCH_BATCHCONTROLINFO_FILEAVAILABLETIMESTAMP_LOCALTIMESTAMP, TYPE=ASCII, POSITION=8, SEPARATOR=\",\", SET=\"C:\/Eclipse\/Workbench_10_08\/workspace\/ASN.1\/timestamps.set\")\r\n    \/FIELD=(DECODE_TRANSFERBATCH_BATCHCONTROLINFO_FILEAVAILABLETIMESTAMP_UTCTIMEOFFSET=decode_hex(TRANSFERBATCH_BATCHCONTROLINFO_FILEAVAILABLETIMESTAMP_UTCTIMEOFFSET), TYPE=ASCII, POSITION=9, SEPARATOR=\",\")\r\n    \/FIELD=(DECODE_TRANSFERBATCH_BATCHCONTROLINFO_SPECIFICATIONVERSIONNUMBER=decode_hex(TRANSFERBATCH_BATCHCONTROLINFO_SPECIFICATIONVERSIONNUMBER), TYPE=NUMERIC, POSITION=10, SEPARATOR=\",\")\r\n\r\n.......<\/pre>\n<p>results in this delimited flat file with pseudonymized data.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-15598\" src=\"\/blog\/wp-content\/uploads\/2021\/08\/pseudonymized-cdrs.png\" alt=\"\" width=\"1125\" height=\"260\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/pseudonymized-cdrs.png 1125w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/pseudonymized-cdrs-300x69.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/pseudonymized-cdrs-768x177.png 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/pseudonymized-cdrs-1024x237.png 1024w\" sizes=\"(max-width: 1125px) 100vw, 1125px\" \/><\/p>\n<p>Note that the\u00a0<em>decode_hex<\/em> function is only applied for ease of viewing, since ASN.1 octet string values are output as the hex representation. Set files were used to pull random TADIG code and timestamp replacement values.<\/p>\n<p>Here is a visual overview of the script in IRI Workbench, where the orange arrows indicate fields that have had transforms applied to them.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-15638\" src=\"\/blog\/wp-content\/uploads\/2021\/08\/asn1-fieldshield-tmb-snip.png\" alt=\"SortCL script displayed in IRI Workbench along with a transform mapping diagram and script outline.\" width=\"1944\" height=\"817\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/asn1-fieldshield-tmb-snip.png 1944w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/asn1-fieldshield-tmb-snip-300x126.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/asn1-fieldshield-tmb-snip-768x323.png 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/asn1-fieldshield-tmb-snip-1024x430.png 1024w\" sizes=\"(max-width: 1944px) 100vw, 1944px\" \/><\/p>\n<h6><b>Example 4: Converting TAP3 Call Detail Records to other Formats and Layouts<\/b><\/h6>\n<p>The example included in the zip folder will output to a text file. Alternatively, data could be transported to a database using a script similar to the one shown below.<\/p>\n<p>Truncated script outputting to database:<\/p>\n<pre>\/INFILE=\u201dTAP0310.asn;tap.ber\u201d\r\n    \/PROCESS=ASN1\r\n    \/FIELD=(transferBatch_batchControlInfo_sender, POSITION=1, SEPARATOR=',')\r\n    \/FIELD=(transferBatch_batchControlInfo_recipient, POSITION=2, SEPARATOR=',')\r\n    \/FIELD=(transferBatch_batchControlInfo_fileSequenceNumber, POS=3, SEP=',')\r\n    \/FIELD=(transferBatch_batchControlInfo_fileCreationTimeStamp_localTimeStamp, POS=4, SEP=',')\r\n    \/FIELD=(transferBatch_batchControlInfo_fileCreationTimeStamp_utcTimeOffset, POS=5, SEP=',')\r\n    \/FIELD=(transferBatch_batchControlInfo_transferCutOffTimeStamp_localTimeStamp, POS=6, SEP=',')\r\n    \/FIELD=(transferBatch_batchControlInfo_transferCutOffTimeStamp_utcTimeOffset, POS=7, SEP=',')\r\n    \/FIELD=(transferBatch_batchControlInfo_fileAvailableTimeStamp_localTimeStamp, POS=8, SEP=',')\r\n    \/FIELD=(transferBatch_batchControlInfo_fileAvailableTimeStamp_utcTimeOffset, position=9, SEP=',')\r\n\u2026\u2026\u2026.\r\n\r\n\/REPORT\r\n\r\n\/OUTFILE=\"asn.base;DSN=New My SQL;UID=root;PWD=$PASS;\"\r\n    \/PROCESS=ODBC\r\n    \/FIELD=(transferBatch_batchControlInfo_sender, POS=1,SEP=\u201d\\t\u201d,ODEF=\"transferBatch_batchControlInfo_sender\")\r\n    \/FIELD=(transferBatch_batchControlInfo_recipient, POS=2, SEP=\u201d\\t\u201d,ODEF=\"transferBatch_batchControlInfo_recipient\")\r\n    \/FIELD=(transferBatch_batchControlInfo_fileSequenceNumber, POS=3, SEP=\u201d\\t\u201d,ODEF=\"transferBatch_batchControlInfo_fileSequenceNumber\")\r\n    \/FIELD=(transferBatch_batchControlInfo_fileCreationTimeStamp_localTimeStamp, POS=4, SEP=\u201d\\t\u201d,ODEF=\"transferBatch_batchControlInfo_fileCreationTimeStamp_localTimeStamp\")\r\n    \/FIELD=(transferBatch_batchControlInfo_fileCreationTimeStamp_utcTimeOffset, POS=5, SEP=\u201d\\t\u201d,ODEF=\"transferBatch_batchControlInfo_fileCreationTimeStamp_utcTimeOffset\")\r\n    \/FIELD=(transferBatch_batchControlInfo_transferCutOffTimeStamp_localTimeStamp, POS=6, SEP=\u201d\\t\u201d,ODEF=\"transferBatch_batchControlInfo_transferCutOffTimeStamp_localTimeStamp\")\r\n    \/FIELD=(transferBatch_batchControlInfo_transferCutOffTimeStamp_utcTimeOffset, POS=7, SEP=\u201d\\t\u201d,ODEF=\"transferBatch_batchControlInfo_transferCutOffTimeStamp_utcTimeOffset\")\r\n    \/FIELD=(transferBatch_batchControlInfo_fileAvailableTimeStamp_localTimeStamp, POS=8, SEP=\u201d\\t\u201d,ODEF=\"transferBatch_batchControlInfo_fileAvailableTimeStamp_localTimeStamp\")\r\n    \/FIELD=(transferBatch_batchControlInfo_fileAvailableTimeStamp_utcTimeOffset, POS=9, SEP=\u201d\\t\u201d,ODEF=\"transferBatch_batchControlInfo_fileAvailableTimeStamp_utcTimeOffset\")\r\n\u2026\u2026\u2026.<\/pre>\n<p>The image below shows the output of TAP3 BER-encoded data (top portion of image) to a comma-delimited text file.<\/p>\n<p><a href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/tapber2.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14760 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/08\/tapber2-1024x553.png\" alt=\"\" width=\"650\" height=\"351\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/tapber2-1024x553.png 1024w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/tapber2-300x162.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/tapber2-768x414.png 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/tapber2.png 1914w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><\/p>\n<h6><b>Example 5: Synthesizing a BER-encoded TAP3 Test File<\/b><\/h6>\n<p>The tapgen.rcl.txt file in the examples folder linked at the beginning of the post displays an example of synthesizing BER-encoded data that adheres to the standard TAP3 schema. This script could \u00a0fine-tuned to generate a larger range of realistic and random data (but still within the constraints of the TAP3 specification), but it does show a simple method of generating a TAP3-compliant file.<\/p>\n<p><span style=\"font-weight: 400;\">Truncated script:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">\/INFILE=rfp<\/span>\r\n<span style=\"font-weight: 400;\">    \/PROCESS=RANDOM<\/span>\r\n<span style=\"font-weight: 400;\">    \/INCOLLECT=1<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_sender, POSITION=1, SEPARATOR=\",\",SET={5052594854})<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_recipient, POSITION=2, SEPARATOR=\",\",SET={484B474854})<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_fileSequenceNumber, POSITION=3, SEPARATOR=\",\",SET={3030303033})<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_fileCreationTimeStamp_localTimeStamp, POSITION=4, SEPARATOR=\",\",SET={3230303430323034313134343438})<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_fileCreationTimeStamp_utcTimeOffset, POSITION=5, SEPARATOR=\",\",SET={2D30343030})<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_transferCutOffTimeStamp_localTimeStamp, POSITION=6, SEPARATOR=\",\",SET={3230303430323034313134343438})<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_transferCutOffTimeStamp_utcTimeOffset, POSITION=7, SEPARATOR=\",\",SET={2D30343030})<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_fileAvailableTimeStamp_localTimeStamp, POSITION=8, SEPARATOR=\",\",SET={3230303430323034313134343438})<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_fileAvailableTimeStamp_utcTimeOffset, POSITION=9, SEPARATOR=\",\",SET={2D30343030})<\/span>\r\n<span style=\"font-weight: 400;\">    \u2026\u2026\u2026.<\/span>\r\n<span style=\"font-weight: 400;\">\/REPORT<\/span>\r\n<span style=\"font-weight: 400;\">\/OUTFILE=\"TAP-0310.asn;tapgen.ber\"<\/span>\r\n<span style=\"font-weight: 400;\">    \/PROCESS=ASN1<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_sender, POSITION=1, SEPARATOR=\",\")<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_recipient, POSITION=2, SEPARATOR=\",\")<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_fileSequenceNumber, POSITION=3, SEPARATOR=\",\")<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_fileCreationTimeStamp_localTimeStamp, POSITION=4, SEPARATOR=\",\")<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_fileCreationTimeStamp_utcTimeOffset, POSITION=5, SEPARATOR=\",\")<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_transferCutOffTimeStamp_localTimeStamp, POSITION=6, SEPARATOR=\",\")<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_transferCutOffTimeStamp_utcTimeOffset, POSITION=7, SEPARATOR=\",\")<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_fileAvailableTimeStamp_localTimeStamp, POSITION=8, SEPARATOR=\",\")<\/span>\r\n<span style=\"font-weight: 400;\">    \/FIELD=(transferBatch_batchControlInfo_fileAvailableTimeStamp_utcTimeOffset, POSITION=9, SEPARATOR=\",\")<\/span>\r\n<span style=\"font-weight: 400;\">    \u2026\u2026\u2026.<\/span>\r\n\r\n<\/pre>\n<h6><b>Example 6: TAP3 BER-encoded file to JSON<\/b><\/h6>\n<p>The input is a non-human readable, BER-encoded file based on the TAP3 ASN.1 schema.<\/p>\n<p>The input looks like this when opened in a basic text editor.<\/p>\n<p><a href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/tapber-input.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14761 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/08\/tapber-input-1024x555.png\" alt=\"\" width=\"649\" height=\"352\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/tapber-input-1024x555.png 1024w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/tapber-input-300x163.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/tapber-input-768x416.png 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/tapber-input.png 1920w\" sizes=\"(max-width: 649px) 100vw, 649px\" \/><\/a><\/p>\n<p>SortCL can easily translate this to JSON, however. In the image below,the SortCL script top left is used to make this transformation to the JSON file shown in the bottom middle of the image. The job makes use of a sortcl-compatible <b>D<\/b>ata <b>D<\/b>efinition <b>F<\/b>ormat <a href=\"https:\/\/www.iri.com\/products\/cosort\/sortcl-metadata\">(DDF) file<\/a> containing the field definitions; a small part of that is shown top right.<\/p>\n<p><a href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/tapjson.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14762 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/08\/tapjson-1024x555.png\" alt=\"\" width=\"650\" height=\"352\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/tapjson-1024x555.png 1024w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/tapjson-300x163.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/tapjson-768x416.png 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/tapjson.png 1920w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><\/p>\n<p>The DDF file can be generated easily in an interactive and visual way through the <a href=\"https:\/\/www.iri.com\/blog\/data-transformation2\/using-the-metadata-discovery-wizard\/\">Metadata Discovery\u00a0 wizard<\/a> in IRI Workbench, which is also subsumed in the Data Source definition pages of most of the fit-for-purpose new job wizards in Workbench. Alternatively, the executable <b><i>asn1_2ddf<\/i><\/b> program provides a more batch-able, automated approach to generating DDF files for ASN.1-encoded data.<\/p>\n<p>There are many functions that could have been applied to this data, such as sorting by field(s), performing selective encryption or pseudonymization, adding fields, and so much more. However, this script simply acts as a converter of the ASN.1-encoded data to a more human readable JSON format.<\/p>\n<h6><b>Example 7: Reporting on one PDU from an ASN.1 file defining several PDUs<\/b><b><br \/>\n<\/b><\/h6>\n<p>This is for <a href=\"https:\/\/portal.3gpp.org\/desktopmodules\/Specifications\/SpecificationDetails.aspx?specificationId=3431\">e1ap<\/a>, a protocol related to 5G.<\/p>\n<p><i>Selecting from a specific PDU:<\/i><\/p>\n<p>This job gets information from the PDU with the type name TimeToWait. e1ap has many PDUs, but one must be chosen. In TAP3, however, there is a single PDU that can be referenced called DataInterChange. In that case, the PDU does not need to be specified since all types map out to that single PDU.<\/p>\n<p>Script:<\/p>\n<pre>\/INFILE=\u201de1ap.asn,PER,TimeToWait;E1AP-PDU_Reset.per\u201d\r\n    \/PROCESS=ASN1\r\n    \/FIELD=(FIELD1,POSITION=1,SEPARATOR=\",\")\r\n\r\n\/REPORT\r\n\r\n\/OUTFILE=e1appdu1.out<\/pre>\n<p>Output:<\/p>\n<pre>v1s\r\nv1s\r\nv1s\r\nv2s\r\nv1s\r\nv1s\r\nv1s\r\nv1s\r\nv10s\r\nv1s\r\nv1s\r\nv1s\r\nv1s\r\nv1s\r\nv1s\r\nv20s\r\nv1s\r\nv1s\r\nv1s\r\nv1s\r\nv1s\r\nv1s\r\nv1s\r\nv1s<\/pre>\n<h6><b>Example 8: NG application protocol for 5G -&gt; Simple report of selected PDU to text file<\/b><\/h6>\n<p>This script (ngap.scl) references a specific PDU that is used to interpret the data message with, from an ASN.1 schema that contains multiple PDUs. The field layout can be generated by ASN1_2DDF. The script will report the data to a text file.<\/p>\n<p>Script:<\/p>\n<pre>\/INFILE=\"ngap.asn,PER,NGAP-PDU;NGAP-PDU_HandoverRequest.per\"\r\n\/PROCESS=ASN1\r\n    \/FIELD=(initiatingMessage_procedureCode, POSITION=1, SEPARATOR=\",\")\r\n    \/FIELD=(initiatingMessage_criticality, POSITION=2, SEPARATOR=\",\")\r\n    \/FIELD=(initiatingMessage_value, POSITION=3, SEPARATOR=\",\")\r\n    \/FIELD=(successfulOutcome_procedureCode, POSITION=4, SEPARATOR=\",\")\r\n    \/FIELD=(successfulOutcome_criticality, POSITION=5, SEPARATOR=\",\")\r\n    \/FIELD=(successfulOutcome_value, POSITION=6, SEPARATOR=\",\")\r\n    \/FIELD=(unsuccessfulOutcome_procedureCode, POSITION=7, SEPARATOR=\",\")\r\n    \/FIELD=(unsuccessfulOutcome_criticality, POSITION=8, SEPARATOR=\",\")\r\n    \/FIELD=(unsuccessfulOutcome_value, POSITION=9, SEPARATOR=\",\")\r\n\r\n\/REPORT\r\n\r\n\/OUTFILE=ngapPDU.out<\/pre>\n<p>Output:<\/p>\n<pre>12,reject,000006000A000320303900550003401A85001D000100000F40018A0069000F00AABBCC1001234500ABCDEF123456006500020112,,,,,,<\/pre>\n<p>For additional examples, check out the <a href=\"https:\/\/drive.google.com\/drive\/folders\/15a-FQWO1-YBhvhfZ4vK8ypV5MJ8g9MDv?usp=sharing\">ASN.1 sample repository<\/a>.<\/p>\n<h6><b>Wrap Up<\/b><\/h6>\n<p>An array of examples have been demonstrated in this article to give an idea of some basic ways to process or generate ASN.1 encoded data. In the following article, the fourth\u00a0 of the five part series, support for the ASN.1 process in IRI Workbench will be discussed and demonstrated.<\/p>\n<p>Article Links: Other articles in the series:<\/p>\n<ul>\n<li aria-level=\"1\"><a href=\"http:\/\/www.iri.com\/blog\/etl\/iri-voracity-support-for-asn1\/\">Introduction to ASN.1<\/a><\/li>\n<li aria-level=\"1\"><a href=\"http:\/\/www.iri.com\/blog\/etl\/asn1-integration-sortcl\/\">ASN.1 Integration with SortCL<\/a><\/li>\n<li aria-level=\"1\"><a href=\"http:\/\/www.iri.com\/blog\/etl\/iri-workbench-asn1-encoded-data\/\">Using IRI Workbench with ASN.1 encoded data<\/a><\/li>\n<li aria-level=\"1\"><a href=\"http:\/\/www.iri.com\/blog\/etl\/iri-voracity-cdr-data-processing\/\">Gaining insight from Call Detail Records<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the previous article, new support for SortCL-compatible jobs in the IRI Voracity data processing ecosystem for ASN.1-encoded data files was introduced. This article takes a more in-depth look through sample jobs demonstrating various use cases, ASN.1 encoding rules, schema files, and the Protocol Data Units (PDUs) involved with data defined in ASN.1 schemas. Note<\/p>\n<div><a class=\"btn-filled btn\" href=\"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/\" title=\"Sample CDR Data Processing Jobs\">Read More<\/a><\/div>\n","protected":false},"author":119,"featured_media":15597,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[8,1,776,91,233],"tags":[336,2093,2099,2097,2098,2095,337,2096,611,14,5,546,520,1204,789,850,1104,1517,1516,1514,1515,1513,2094,621],"class_list":["post-14711","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-protection","category-data-transformation2","category-etl","category-iri-workbench","category-metadata-management","tag-asn-1","tag-asn-1-data-transformation","tag-asn-1-file-manipulation","tag-call-detail-record-processing","tag-cdr-data-processing","tag-cdr-mediation","tag-convert-asn-1-format","tag-convert-ber-to-csv","tag-csv","tag-data-masking","tag-data-transformation","tag-iri-cosort","tag-iri-fieldshield","tag-iri-sortcl","tag-iri-voracity","tag-iri-workbench","tag-json","tag-oss-nokalva","tag-pdu","tag-per-file","tag-per-encoded","tag-tap3","tag-tap3-call-detail-records","tag-xlsx"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.4 (Yoast SEO v23.4) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Sample CDR Data Processing Jobs - IRI<\/title>\n<meta name=\"description\" content=\"Explore ASN.1 in detail with sample jobs and use cases, showcasing encoding rules and Protocol Data Units for effective data processing.\" \/>\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.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sample CDR Data Processing Jobs\" \/>\n<meta property=\"og:description\" content=\"Explore ASN.1 in detail with sample jobs and use cases, showcasing encoding rules and Protocol Data Units for effective data processing.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/\" \/>\n<meta property=\"og:site_name\" content=\"IRI\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-26T16:52:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-15T19:57:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/snip-cdrs.png\" \/>\n\t<meta property=\"og:image:width\" content=\"866\" \/>\n\t<meta property=\"og:image:height\" content=\"222\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Devon Kozenieski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Devon Kozenieski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/\"},\"author\":{\"name\":\"Devon Kozenieski\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/person\/de972c035aaeecfc40a3ae2ea5ff7ba1\"},\"headline\":\"Sample CDR Data Processing Jobs\",\"datePublished\":\"2021-08-26T16:52:14+00:00\",\"dateModified\":\"2025-04-15T19:57:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/\"},\"wordCount\":963,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/snip-cdrs.png\",\"keywords\":[\"asn.1\",\"ASN.1 data transformation\",\"ASN.1 file manipulation\",\"call detail record processing\",\"CDR data processing\",\"CDR mediation\",\"convert asn.1 format\",\"Convert BER to CSV\",\"csv\",\"data masking\",\"data transformation\",\"IRI CoSort\",\"IRI FieldShield\",\"IRI SortCL\",\"IRI Voracity\",\"IRI Workbench\",\"JSON\",\"OSS Nokalva\",\"PDU\",\"per file\",\"per-encoded\",\"TAP3\",\"TAP3 call detail records\",\"xlsx\"],\"articleSection\":[\"Data Masking\/Protection\",\"Data Transformation\",\"ETL\",\"IRI Workbench\",\"Metadata Management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/\",\"url\":\"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/\",\"name\":\"Sample CDR Data Processing Jobs - IRI\",\"isPartOf\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/snip-cdrs.png\",\"datePublished\":\"2021-08-26T16:52:14+00:00\",\"dateModified\":\"2025-04-15T19:57:38+00:00\",\"description\":\"Explore ASN.1 in detail with sample jobs and use cases, showcasing encoding rules and Protocol Data Units for effective data processing.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/#primaryimage\",\"url\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/snip-cdrs.png\",\"contentUrl\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/snip-cdrs.png\",\"width\":866,\"height\":222},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.iri.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sample CDR Data Processing Jobs\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.iri.com\/blog\/#website\",\"url\":\"https:\/\/www.iri.com\/blog\/\",\"name\":\"IRI\",\"description\":\"Total Data Management Blog\",\"publisher\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.iri.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.iri.com\/blog\/#organization\",\"name\":\"IRI\",\"url\":\"https:\/\/www.iri.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"contentUrl\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"width\":750,\"height\":206,\"caption\":\"IRI\"},\"image\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/person\/de972c035aaeecfc40a3ae2ea5ff7ba1\",\"name\":\"Devon Kozenieski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e4c421588c1a85dd9a76146fe15528f7?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e4c421588c1a85dd9a76146fe15528f7?s=96&d=blank&r=g\",\"caption\":\"Devon Kozenieski\"},\"url\":\"https:\/\/www.iri.com\/blog\/author\/devonk\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Sample CDR Data Processing Jobs - IRI","description":"Explore ASN.1 in detail with sample jobs and use cases, showcasing encoding rules and Protocol Data Units for effective data processing.","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.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/","og_locale":"en_US","og_type":"article","og_title":"Sample CDR Data Processing Jobs","og_description":"Explore ASN.1 in detail with sample jobs and use cases, showcasing encoding rules and Protocol Data Units for effective data processing.","og_url":"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/","og_site_name":"IRI","article_published_time":"2021-08-26T16:52:14+00:00","article_modified_time":"2025-04-15T19:57:38+00:00","og_image":[{"width":866,"height":222,"url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/snip-cdrs.png","type":"image\/png"}],"author":"Devon Kozenieski","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Devon Kozenieski","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/#article","isPartOf":{"@id":"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/"},"author":{"name":"Devon Kozenieski","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/person\/de972c035aaeecfc40a3ae2ea5ff7ba1"},"headline":"Sample CDR Data Processing Jobs","datePublished":"2021-08-26T16:52:14+00:00","dateModified":"2025-04-15T19:57:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/"},"wordCount":963,"commentCount":0,"publisher":{"@id":"https:\/\/www.iri.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/#primaryimage"},"thumbnailUrl":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/snip-cdrs.png","keywords":["asn.1","ASN.1 data transformation","ASN.1 file manipulation","call detail record processing","CDR data processing","CDR mediation","convert asn.1 format","Convert BER to CSV","csv","data masking","data transformation","IRI CoSort","IRI FieldShield","IRI SortCL","IRI Voracity","IRI Workbench","JSON","OSS Nokalva","PDU","per file","per-encoded","TAP3","TAP3 call detail records","xlsx"],"articleSection":["Data Masking\/Protection","Data Transformation","ETL","IRI Workbench","Metadata Management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/","url":"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/","name":"Sample CDR Data Processing Jobs - IRI","isPartOf":{"@id":"https:\/\/www.iri.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/#primaryimage"},"image":{"@id":"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/#primaryimage"},"thumbnailUrl":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/snip-cdrs.png","datePublished":"2021-08-26T16:52:14+00:00","dateModified":"2025-04-15T19:57:38+00:00","description":"Explore ASN.1 in detail with sample jobs and use cases, showcasing encoding rules and Protocol Data Units for effective data processing.","breadcrumb":{"@id":"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/#primaryimage","url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/snip-cdrs.png","contentUrl":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/snip-cdrs.png","width":866,"height":222},{"@type":"BreadcrumbList","@id":"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.iri.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Sample CDR Data Processing Jobs"}]},{"@type":"WebSite","@id":"https:\/\/www.iri.com\/blog\/#website","url":"https:\/\/www.iri.com\/blog\/","name":"IRI","description":"Total Data Management Blog","publisher":{"@id":"https:\/\/www.iri.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.iri.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.iri.com\/blog\/#organization","name":"IRI","url":"https:\/\/www.iri.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","contentUrl":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","width":750,"height":206,"caption":"IRI"},"image":{"@id":"https:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/person\/de972c035aaeecfc40a3ae2ea5ff7ba1","name":"Devon Kozenieski","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e4c421588c1a85dd9a76146fe15528f7?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e4c421588c1a85dd9a76146fe15528f7?s=96&d=blank&r=g","caption":"Devon Kozenieski"},"url":"https:\/\/www.iri.com\/blog\/author\/devonk\/"}]}},"jetpack_featured_media_url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/08\/snip-cdrs.png","_links":{"self":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts\/14711"}],"collection":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/users\/119"}],"replies":[{"embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/comments?post=14711"}],"version-history":[{"count":28,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts\/14711\/revisions"}],"predecessor-version":[{"id":18354,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts\/14711\/revisions\/18354"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/media\/15597"}],"wp:attachment":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/media?parent=14711"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/categories?post=14711"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/tags?post=14711"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}