Why do TOC Editor created menu items not show up in in the TOC after packaging and Import
Hello Community, I've just tried to Package a staging table environment that includes TOC Menu elements created in the TOC Editor. The Import did not result in the rendering of the added TOC Menu Items in the TOC Menu or TOC Editor. I would appreciate any help or in site I can get to learn what I have done wrong or left out. The process I went through is described below. Note: I did go through the Docs but the process to even add the [Presentation Configuration] is incorrect and does not tell what to check for in the export. So this conversation will help that. www.aras.com/.../Importing and Exporting.htm --- Process -------------------------------------------------------------------------------------------------------------------------- I created a Package for the configured Items, Forms, Relationships, etc. All of these Exported and Imported correctly. I added the TOC Category (CommandBarMenu) and Itemtype (CommandBarMenuButton) to the Package using the Package Button. Doing this added the following Package Groups to the package: Menu, Menu Button, Command Bar Section Next: 1) I navigated to one of the configured ItemType's, [Client Style] tab 2) Double clicked on on the [Presentation Configuration] in the Grid; "rh_Oracle_Mfg_Item_TOC_Configuration" 3) Clicked [Search Presentation Configurations] 4) Searched for the required [Presentation Configurations], 5) Selected all Required 6) added then to the Package via the right Click [Admin] menu. Doing this added the following Package Group to the package: Presentation Configuration 7) I did the Export and all packaged elements were represented in the manifest and import folders 8) I did the Import into the new staging DB instance. [View:/community/cfs-file/__key/communityserver-discussions-components-files/3/2024_2D00_1_2D00_30.12_2D00_57.log:320:240] 9) In the new Instance I a) Opened the TOC and nothing. I opened the TOC Editor and nothing b) I checked the SQL Server tables to see if all the elements, defined in the XML files, had been loaded. All Elements had been loaded into the tables: - PRESENTATIONCONFIGURATION - COMMANDBARMENU - COMMANDBARBUTTON - COMMANDBARMENUBUTTON c) I checked the Itemtypes to see if the [Presentation Configuration] were set on the [Client Style] TAB. And they were: d) Lastly, tried clearing the IIS cache and the Browser cache No Luck Thanks for the help and/or in site.0Views0likes9CommentsHow to find the package definition the item is part of?
As the question states. When I try to add an item the error message states "ABC is already added to the another Package Definition". I need to find which package this item is in and remove it because I need it another package. Thanks0Views0likes2CommentsPreventing an AML package from loading with new build
Hi, I am using an automated process for loading new builds. I am attempting to disable a component via its package definition - my first thought was to disable the package in the imports.mf file. I commented out the package and the build was able to load successfully, but the component (and all of its associated itemtypes, TOC presence, etc) were still present. As far as I can tell, I need to do more than just comment out the packages in the imports.mf file... or do I?0Views0likes2CommentsBringing items in through AML package as 'Released'
Hello all, I am working on importing custom itemtypes to load via AML package as part of new builds. Due to how a customized contextual window displays these items, I need the items to be in a 'Released' state when they are brought in. (The window will only display 'Released' items). However, I am having difficulties getting the items to be in a 'Released state' 1. I've tried adding a <state>Released</state> to each item being brought in 2. I've tried adding a postAMLpackagedeployment script that adds a <state>Released</state> to each item The catch is, I need the items to abide by its lifecycle/workflow normally when edited and the state returns to 'New'. Is this possible?0Views0likes3CommentsItem Type issue after Import
Hi Community, Strange issue here. I exported an item type and it necessary relationships over from my development server to my test server. I can create items in the item type just fine. What I can't do - Edit the item type - presented with error "The method 'cui_ivicb_edit_click' failed." The claim flag still checks but no changes can be saved as the UI never updates to allow Save/Done/Discard. I thought this could be a cui issue but the configuration for this matches as well. Nothing special was done to any of the CUI items. The name field is blank on the item type along with a few other discrepancies from the original item as seen in development. When using the Search for or Home screen tile button, the search grid does not load. I have tried re-verifying relationships and exported items. Everything lines up. Any suggestions would be helpful.Solved2.9KViews0likes3CommentsDEV - Optimizing ways and means of Import/Export
As an admin/developer of Innovator I want to pretend I'm working in a repo where I can identify and track changes, or at the very least see all my changes so I can not miss a thing on Export. I'm still a noob. I'm not unfamiliar with Dbs of various flavors, and while I've a love of JS, I'm well versed in PHP and have used some other programming languages. I'm especially a fan of recognizing needs and making work easier and more streamlined. For me, making life easier might come in the form of a bash one-liner, or a NodeJS server/app, or PostMan collection. I think Import/Export is lacking and there should be one tool in the end, and that tool should be built-in, not dissimilar to Nash Utility, but a whole lot prettier! Here's a summary of why I believe things should change. IMPORT In my experience there's a mess when working with other developers in that sometimes a packages infers it should be imported using Nash Utility, or sometimes I'm to use the package tools Import tool. In my most recent battle I was given a package and the developer specified I had to use v12SP6 import tool. I just grabbed the latest, which I think was that associated with the SP9 package. It didn't work, so I methodically tracked every step and took screenshots and all. Well, it ended up that when I got to the step that emphasizes a specific SP Import Tool, this time, I went to the FTP site and grabbed the Import tool of SP6, specifically, and the import worked. One of the greatest difficulties that I thought absurd during this headache was that I couldn't even just simply select the text of errors in the popup of the Import Tool, so I always had to go open the log to get to the error. To me, that's silly. All of these things have been very frustrating and highlighting a deficiency. And, then there's the challenge of the necessity of doing things this way. EXPORT Well, I would bet many people have gone through this, but I just made my first package! I click all around and gather the pieces. The thing is looking robust and I think I'm done. I goto the Export tool and specify my package, and I check the box to export dependencies. I'm thinking there's no way I can export this new ItemType wrong now. The created package will not import to the same Db, after restoring to pre-work, that my work started on. This is very frustrating. After days I just use Nash as an alternate means and start pasting the XML and importing, slowly, while sometimes importing the new pieces into the Db in the wrong order. I finally get to the new ItemType itself! My first ItemType! ...and I'm missing my Methods and my Lists from my export. I just missed them and they weren't pulled in, and I can't restore the Db I backed up where I did my work, exported, and replaced with the original Db, pre-work. I don't know why... but, ouch. I can't get to pieces of my first ItemType. ---------- SOLUTION DISCUSSION First of all, I wish my employer would pay me to just fix whatever I run into. Isn't that a dev's dream? I don't mean Aras, I mean like just spend my day on StackOverflow and fix ***. But, that's not the case. I never want to miss an ItemType -OR- any relationships be it Method, List, Permissions, Identities, and even PolyItems, etc. Miss nothing, always! I want to be able to see a picture of all my changes from a certain date like I'd checked out a branch. In the end I think there should be no need for separate Import/Export programs! There should be something to Export that utilizes authentication of "root" that works in the browser (like a Nash Utility) that can bundle changes a user has selected. That bundle should work as an Import in a browser-based tool that either: Knows the set order things need to import in -or- is order agnostic. I'm using the proper order, I think. Here's a solution in the works. Feel free to contribute! // Find all Innovator edit since time const inn = this.getInnovator(); // Create Dialog.] const param = { aras, dialogWidth: 250, resizable: true, title: 'Modified Since' }; const wnd = aras.getMainWindow(); const dialog = wnd.ArasModules.Dialog.show('div', param); ///////////////////////////////////////////////////////////////////////////////////////////////////////// // TODO: Edit to query for any new ItemTypes and tack onto itemTypes list to look for new instances. // ///////////////////////////////////////////////////////////////////////////////////////////////////////// const itemTypes = ['LIST', 'SEQUENCE', 'REVISION', 'VARIABLE', 'IDENTITY', 'MEMBER', 'USER', 'PERMISSION', 'METHOD', 'EMAIL MESSAGE', 'ACTION', 'REPORT', 'FORM', 'WORKFLOW MAP', 'LIFE CYCLE MAP', 'GRID', 'ITEMTYPE', 'RELATIONSHIPTYPE', 'FIELD', 'PROPERTY', 'VIEW', 'SQL', 'METRIC', 'CHART', 'DASHBOARD']; const badgeStyle = 'style="font-weight:200;background:#999;color:#fff;border-radius:5px;font-size:12px;padding:5px;margin-left:.5em;letter-spacing:.1em;padding-bottom:3px;position:absolute;top: 12px;text-align:center;"'; const table = 'style="display:table;width:100%;border-collapse:collapse;"'; const tableCell = 'style="display:table-cell;border:#000 1px solid;padding:.25em;"'; const tableCheckbox = 'style="display:table-cell;border:#000 1px solid;padding:.25em;text-align:center;"'; const tableHead = 'style="display:table-cell;border:#000 1px solid;font-weight:bold;background:#000;color:#fff;padding:.25em;"'; const yesterday = (d => new Date(d.setDate(d.getDate() - 1)).toISOString().split("T")[0])(new Date()); // let dateInputDiv, dateInputDOM, dialogDOM, contentDOM, changesList, changesListText, titleDOM, formFooterAdded = false; // const alternateRowBG = (i) => `style="display:table-row;${i % 2 ? 'background: #e7e7e7;' : ''}"`; const formatRow = (itemType, id, name, modifiedOn) => `<div ${tableCheckbox}>${getRowCheckbox(id, name, itemType)}</div><div ${tableCell}>${name}</div><div ${tableCell}>${itemType}</div><div ${tableCell}>${modifiedOn}</div>`; const getBadge = (num) => `<span ${badgeStyle}>${num}</span>`; const getRowCheckbox = (id, name, itemType) => { const checkboxName = `${name}---${itemType}` return `<input type='checkbox' id='${id}' name='${checkboxName}'>` }; const styleMe = (elem, styles) => { for (const [key, value] of Object.entries(styles)) elem.style[key] = value; }; // Build date input text box/style it const buildDateInput = () => { dateInputDiv = document.createElement('div'); const dateInput = document.createElement('input'); dateInput.id = 'modified-since-date-input'; dateInput.type = 'date'; dateInput.max = yesterday; styleMe(dateInputDiv, {paddingLeft: '16px', paddingRight: '16px', maxHeight: '70vh', overflowX: 'hidden', overflowY: 'auto'}); styleMe(dateInput, {width: '222px', marginBottom: '16px', marginTop: '8px'}); dateInputDiv.appendChild(dateInput); }; // Loop through the returned methods and return the list const buildChangesTable = (value) => { changesListText = ''; const changesTable = document.getElementById('changes-table'); if (changesTable) changesTable.remove(); let changesList = `<div id='changes-table' ${table}><div ${alternateRowBG(-1)}><div ${tableHead}> </div><div ${tableHead}>Item</div><div ${tableHead}>ItemType</div><div ${tableHead}>Modified On</div></div>`; let sinceDate = value + 'T00:00:00'; let rowCount = 0; for (let i = 0; i < itemTypes.length; i++) { const itemType = itemTypes; const item = this.newItem(itemType, 'get'); item.setAttribute('select', 'id,name,modified_on'); // FIXME: We want unique results. It seems IT properties are heavily versioned. // groupBy doesn't error, but doesn't appear to do anything // item.setAttribute('groupBy', 'id'); item.setProperty('modified_on', sinceDate); item.setPropertyAttribute('modified_on', 'condition', 'gt'); const results = item.apply(); if (results.isError()) { const errorDetail = results.getErrorDetail(); // No items of type if (!/No items of type/.test(errorDetail)) { aras.AlertError('results.isError(): ' + errorDetail); return; } } for (let j = 0; j < results.getItemCount(); j++) { const id = results.getItemByIndex(j).getProperty('id', '-id missing-'); const name = results.getItemByIndex(j).getProperty('name', '-name missing-'); const modifiedOn = results.getItemByIndex(j).getProperty('modified_on', '-modified_on missing-'); const row = formatRow(itemType, id, name, new Date(modifiedOn).format('MM/dd/yyyy HH:MM')); changesListText += [id,itemType,name,modifiedOn].join() + '\n'; changesList += `<div ${alternateRowBG(rowCount)}>${row}</div>`; rowCount++; } } changesList += '</div>'; styleMe(dialogDOM, { width: '720px' }); // TODO: Test that this: Why can't we assign this once upon opening and keep the ref? contentDOM = document.querySelector('.aras-dialog__content'); dateInputDOM = document.querySelector('#modified-since-date-input'); titleDOM = document.querySelector('.aras-dialog__title'); // titleDOM.innerText = 'Modified Since ' + value; titleDOM.insertAdjacentHTML('beforeend', getBadge(rowCount)); const viewButton = document.createElement('button'); viewButton.innerText = 'View CSV'; viewButton.classList.add('aras-button'); styleMe(viewButton, { position: 'absolute', top: '10px', right: '40px', paddingLeft: '.5em', paddingRight: '.5em', background: 'transparent', color: 'darkblue', boxShadow: 'none', border: 'none', cursor: 'zoom-in' }); viewButton.onclick = () => { const resultsWindow = window.open("about:blank", "_blank"); // contentDOM = document.querySelector('.aras-dialog__content'); resultsWindow.document.write(`<pre>${changesListText}</pre>`); }; titleDOM.appendChild(viewButton); // contentDOM.innerHTML += changesList; dateInputDOM.insertAdjacentHTML('afterend', changesList); // FIXME: Or... understand me? I don't know why the onchange gets dropped between calls to this_function...? But, it does, so: dateInputDOM.onchange = ({ target }) => { console.log(target.value, target.valueAsNumber); buildChangesTable(target.value); }; if (!formFooterAdded) buildFormFooter(); }; // Add footer with Package Name input and Create Package button const buildFormFooter = () => { const button = document.createElement('button'); const packageNameInput = document.createElement('input'); const submitDiv = document.createElement('div'); styleMe(submitDiv, { padding: '16px', display: 'flex' }); styleMe(packageNameInput, { width: '220px', padding: '0.3em 0.3em 0.3em 0.5em', flexGrow: 1, marginRight: '16px', background: '#e7e7e7', color: '#000', marginRight: '16px', letterSpacing: '.1em', fontSize: '1.5em' }); button.innerText = 'Create Package'; button.classList.add('aras-button', 'aras-button_primary'); styleMe(button, { padding: '.6em', borderRadius: '.25em', width: 'auto', background: '#000' }); button.onclick = () => { // Get checkbox values const checked = Array.from(document.querySelector('.aras-dialog__content').querySelectorAll('input[type="checkbox"]:checked')).map(x => x.id); // Get Package (to create) name const name = packageNameInput.value; // Create package alert(`Put these:\n${checked.join('\n')}\nin package\n${name}\n`); /* FIXME: The following doesn't error, but it also doesn't actually create a PackageDefinition...? const newPackage = inn.newItem('PackageDefinition'); newPackage.setAttribute('name', name); const result = newPackage.apply(); */ // LOGS, "More than one item": console.log(result.getAttribute('id')); }; // aras-button aras-button_primary packageNameInput.id = 'package-name'; packageNameInput.name = 'package-name'; submitDiv.id = 'modified-since-package'; // submitDiv.appendChild(packageNameInput) submitDiv.appendChild(button); contentDOM.appendChild(submitDiv); formFooterAdded = true; }; // Seems necessary. setTimeout(() => { buildDateInput(); dialogDOM = document.querySelector('.aras-dialog'); styleMe(dialogDOM, { height: 'auto'}); contentDOM = document.querySelector('.aras-dialog__content'); contentDOM.appendChild(dateInputDiv); dateInputDOM = document.querySelector('#modified-since-date-input'); dateInputDOM.onchange = ({ target }) => { buildChangesTable(target.value); }; }, 100); Anwyway, the above results in a list with checkboxes and an input for package name, and all of that is collected and so badly wants to be a package, but I can't seem to even create the package that I want to add all these things to. Ideas? ...but, you just get an alert that tells me that I want to make a package with this stuff. I don't get an error when trying to create a PackageDefinition, but it apparently isn't created. Next steps: Actually create PackageDefinition Add selections to the new package (using id?)1.6KViews0likes0CommentsImport package error in Aras12SP1
Hi, When I'm trying to import item type then system is throwing below error: <SOAP-ENV:Envelope xmlns:SOAP-ENV="">schemas.xmlsoap.org/.../"><SOAP-ENV:Body><SOAP-ENV:Fault xmlns:af="">www.aras.com/.../faultcode><faultstring><![CDATA[ITPresentationConfiguration already exists.]]></faultstring><detail><af:legacy_detail><![CDATA[ITPresentationConfiguration already exists.]]></af:legacy_detail><af:legacy_faultstring><![CDATA[Violation of PRIMARY KEY constraint.]]></af:legacy_faultstring></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope> Updating com.Edwards.EPAC.Utilities to failed release status But if I'm deploying same package again on same DB then it is importing successfully. regards, Suhas6.4KViews0likes4CommentsImporting Error: Form with Form Name 'Part' already exists
I've exported the package com.aras.innovator.solution.PLM from my development Innovator v11 SP15 server and I'm trying to do an import to my test server which is also v11 SP15. THis would be the 2nd import I've done to the test server of features developed on the dev server. I'm getting the error "Form with Form Name 'Part' already exists. if I click OK, I then get this error: And the part customization I did on the development server don't appear on the test server. What can I do to get passed this error? Is there a way to form the import? I'd like to replace the Part form on the test server with the one from the development server.4KViews0likes1CommentExport/Import custom created menu buttons
Hello, I'm trying to experiment a bit with the import/export tool of the Aras and I'm having a problem with custom menu items. As the custom menu buttons were created inside the Administration/Configuration/Client Presentation/Javascript - Global, they're located by default inside the com.aras.innovator.cui_default package. After I effectuate the export process for this, which executes without any warning/error message and after I'm doing the import to a different Aras Innovator, the main menu (w File, Edit, Views, etc.) is hidden and my custom buttons are not appearing inside the Javascript - Global. The import/export is working well for other items/methods. Can you suggest me a solution for this problem, please? Thank you! Chris14KViews0likes7CommentsUsing third party js libraries with file selection
Hello, I'm trying to use a third party JavaScript library to read a csv file by selecting a file through an action in Aras, but I'm having trouble getting the selection to work well with the third party library. In the programmers guide there's an example of how to select a local file: var vlt = top.aras.vault; vlt.selectFile().then(function (fileObject) { //Some logic }); and the instrucions for using third party libraries usually looks like this: require([ "../javascript/visjs/dist/vis.js", "../javascript/underscore-min.js" ], function( vis ) { //Some logic }); I've tried to get the file object inside the require function like this: require([ "../javascript/papaparse.min.js" ], function( Papa ) { var fileobject = top.aras.vault.selectFile().then(function (selectedfile) { }); }); But the fileobject in this case results in a promise object instead of a file object so I can't use it for my method, and "Papa" doesn't seem to be brought into the second function either. I'm not sure how to get both "Papa" and "fileobject" (as a proper file object) into the same context. /Rick2.1KViews0likes0Comments