Hi, in a "DashletGroupByTable" we are using the "average" aggregation function. We can see values with 4 decimal places, after a refresh we only see the value without decimal places, even not correct rounded. Attached are Screenshots before and after refresh. Maybe a function to define the number of decimals and round options would be great for a future release? Thank, best regards, Nico
Hi, I have the problem that 2 different Expiration rules are fireing the same notification. 1st Expiration-rule (NM_AgentAppointment is a DateTime field): SELECT UserRequest AS ur WHERE NM_AgentAppointment <= DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') AND NM_AgentAppointment >= DATE_FORMAT(NOW(),'%Y-%m-%d 00:00:00') AND status NOT IN ('closed','resolved') 2nd Expiration-rule (should notify about long running tickets): SELECT Ticket WHERE finalclass IN ('UserRequest','Incident') AND operational_status...
Hi Guillaume, thanks for the hint. I changed it to <itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.0"> And now it works. Thanks again, Greetings, Nico
Hi, in my iTop 3.1.1 develeopment environment I am testing setting colours based on custom enum values. I added a new state (status) to class UserRequest and defined a color: <class id="UserRequest" _delta="must_exist"> <fields> <field id="status"> <values> <value id="pending_supplier" _delta="define"> <code>pending_supplier</code> <style> <main_color>#d8e096</main_color> <complementary_color>#d8e096</complementary_color> <decoration_classes>fas fa-hourglass-half</decoration_classes> </style> </value>...
Hi, is there any explanation how to set attribute flags using the new events? I already successfully used "EVENT_DB_AFTER_DELETE" and "EVENT_DB_AFTER_WRITE" but I have no idea how to access attributes and set them for example readonly using this events. Thanks for any hint, regards, Nico
Hi, thanks for that hint. I can understand the purpose of that change. It seems I can use that interfaces for my customizations. Great Tool :-) Cheers, Nico
Hi, in iTop 2.7 I used the interface "OnDisplayProperties" to inject HTML/JS code to the form on a stimulus action. E.g. when a UserRequest is to be resolved I added some comments to that form via Javascript. In iTop 3.1 this interface not called anymore on stimulus actions. Only when an object is displayed I can still use this to inject code using $oPage->add_ready_script(). With the new events API I can only manipulate object on database level as I understand, not how objects are displayed on the...
Like this: public function OnDisplayProperties($oObject, $oPage, $bEditMode = false) { $oFailAlertBlock = AlertUIBlockFactory::MakeForDanger('Test-Title', "Test-content", 1313); $oPage->AddUiBlock($oFailAlertBlock); $oPage->add_ready_script( <<<JS $('#1313').appendTo($('#ibo-page-header')); JS); ...
That's a good hint, I just checked it. They're using the interface "iPageUIBlockExtension". That is okay for the communications because the queries are made directly in the function "GetHeaderBlock". Defining a static banner like that is working for me too. But I want to have dependencies with different functions I defined, e.g., in "public function OnDisplayProperties". I dont know how to combine those classes. Maybe I should just code the banner directly in HTML or just move it from the bottom...
Hi Jeffrey, this code snippet is just for testing. Using it the banner appears on any object that is shown. Just imagine for an example a banner should appear on every UserRequest or Incident, like this: $sClass = get_class($oObject); $sClasses = array('Incident', 'UserRequest'); if (in_array($sClass, $sClasses)) { $oFailAlertBlock = AlertUIBlockFactory::MakeForDanger('Ticket-Type', 'Request or Incident'); $oPage->AddUiBlock($oFailAlertBlock); } This really makes no sense but I just want to figure...
Hi, I started to migrate our custom extensions to iTop 3. In iTop 2.x I used a lot of message banners (like the success banner when creating an object). In iTop 3 I now want to use the functions that are already implemented but I only get the banner appended to the site (as seen in the screenshot). I use this class and function to place the banner: class NM_adds implements iApplicationUIExtension { public function OnDisplayProperties($oObject, $oPage, $bEditMode = false) { $oFailAlertBlock = AlertUIBlockFactory::MakeForDanger('Test-Title',...
Hi, I found a way to edit the file application/cmdbabstract.class.inc.php by running the setup. I am using the function AfterDatabaseCreation within ModuleInstallerAPI: public static function AfterDatabaseCreation(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion) { // Added own Hilight Class to cmdbabstract.class.inc.php to color results $sFile = APPROOT."application/cmdbabstract.class.inc.php"; $sBackupFile = APPROOT."application/cmdbabstract.class.inc.php.backup"; $sSearchString = '/protected...
The CSS code is now injected by the datamodel. In a seperate extension I created a new theme where this is included now: <import id="nico">branding/css/nm_hilight.scss</import> But I need do define the new hilight class to select it in the function GetHilightClass. That is needed to colour only results based on an OQL, e.g. tickets with a specific caller: public function GetHilightClass($oObject) { // Possible return values are: // HILIGHT_CLASS_CRITICAL, HILIGHT_CLASS_WARNING, HILIGHT_CLASS_OK,...
That is working, thanks :-) Do you have another hint how to add my Class into that protected static $m_highlightComparison = array in file cmdbabstract.class.inc.php using an extension? Thanks again, Nico
Yes, that would be the perfect way. But I still did not find out where is the difference between the odd and even rows.
Hi, I've added some cide snippets and got some results but don't understand yet why only the even rows are coloured. On page reload I can see that all rows are coloured for a short time. The odd ones then fade to grey. ./css/light-grey.scss .nico { background-color: #ff6000; color: $text-color; } tr.nico_even td, .wizContainer tr.nico_even td { background-color: #db8ed7; color: $white; } tr.nico td, .wizContainer tr.nico td { background-color: #db8eff; color: $white; } ./application/cmdbabstract.class.inc.php...
That link belongs (I think only) to the portal view. For the backend/console view the "highlights" are set up differently. I think at least at ./application/cmdbabstract.class.inc.php and in addition in some CSS definition.
We still use the LTR 2.7.7 since we have a lot of customizations and own extensions.
As descripbed here https://www.itophub.io/wiki/page?id=2_7_0:customization:highlight-critical-objects I want to add some more colours to highlight different objects in different colours. I did some tests but I cannot find out where the "HIGHLIGHT_CLASS_xxx" and colours are defined. Has anybody tried to add some more colours? Thanks, best regards, Nico
Hi, I noticed that images that are pasted into Private/Public log are inserted as <img src=...> tag. Receiver of that notifications often have not access to our iTop server and are therefore not able to see those images. Is it possible to let ckeditor insert the images maybe as base64 coded image or something similar? Thank, best regards, Nico iTop-Version: 2.7.7
Hi, thanks for your reply. Yes, the queries and reports provided are working without problems. We can see the real iTop data in that reports. Of course we use an admin profile for querying iTop-data. As explained, we are not able to add additional queries e.g. for incidents, or create a complete new PowerBI workspace from scratch since we get an error message that data could not be fetched.
Hi, we just had a look to that extension and configured the queries and the template. But we have not been able to add other queries for example to also have incidents. In addition we have not been able to build something from scratch. If we use a simple web query we always get a "DataSource.Error" saying that website data could not be fetched. How can we connect iTop to PowerBI to get our own slides? Thanks, best regards, Nico
Hi, in iTop version 2.7.7-9622 I saw that method "UpdateChildRequestLog" exists in itop-request-mgmt-itil and additionally in itop-incident-mgmt-itil directly before method "UpdateChildIncidentLog". As far as I could test it, changes in "UpdateChildRequestLog" under itop-incident-mgmt-itil had no effect on UserRequest updates. If this is something old it should be deleted from itop-incident-mgmt-itil since it only confuses. Is it right or makes it sense to have this method twice? Thanks, best regards,...
Hi Pierre, in php.ini I had this configuration: xdebug.var_display_max_depth = -1 xdebug.var_display_max_children = -1 xdebug.var_display_max_data = -1 It seems that configuring this unlimited numbers caused that error. To see this exception the .../itop/data/cache-production/portals/itop-portal-prod directory should be deleted. It than should be created on accessing the portal but only with file annotations.map and giving the exception in the browser.
Hi Pierre, I installed the ITIL datamodel. You can reproduce it when creating a new "Problem". In this form you can set Impact and Urgency, but Priority is not updated immediately (stays critical). When the ticket is created the priority is correct. But with the defined dependencies (see above post) the Priority is set immediately, already in the "new Problem"-form. Best regards, Nico
Hi, suddenly I get an exception when I try to open the portal with a user that has only the portal profile attached. I am using a test environment and did nothing a long time regarding the portal. Now I wanted to check something and get this exception (No matter if I switch to portal from the backend or do a direct login with a portal user): Warning: Uncaught Symfony\Component\DependencyInjection\Exception\RuntimeException: Invalid reference. in /var/www/html/itop-debug/lib/symfony/dependency-injection/Compiler/ResolveInvalidReferencesPass.php:39...
Problem is solved. It seems that PHP xdebug was misconfigured in php.ini.
I just did a fresh install of version 2.7.7 with demo data. After finishing the installation and turning to portal I get the same exception.
Hi, suddenly I get an exception when I try to open the portal with a user that has only the portal profile attached. I am using a test environment and did nothing a long time regarding the portal. Now I wanted to check something and get this exception (No matter if I switch to portal from the backend or do a direct login with a portal user): Warning: Uncaught Symfony\Component\DependencyInjection\Exception\RuntimeException: Invalid reference. in /var/www/html/itop-debug/lib/symfony/dependency-injection/Compiler/ResolveInvalidReferencesPass.php:39...
In class "Problem" the priority is not calculated automatically. It has always the value "Critical". Seems the dependencies on attributes "impact" and "urgency" are missing. I can see this in the actual version 2.7.7-9622 and even in the online demo of version 3.0.2-1-9957. Adding this to class Problem solves it for me: <field id="priority" xsi:type="AttributeEnum"> <dependencies _delta="define"> <attribute id="impact" /> <attribute id="urgency" /> </dependencies> </field>
Hmm, I have not yet ran the setup. I just did it and it installed without error, even with the approval extension. After that the toolkit did not throw that error. So to reproduce it I deleted the extension from the extension folder and run setup again. After that i copied the extension again to the folder and got the same error in "Data Model Consistency"-Check. So it seems on the setup there is no error and after installation even no error in the toolkit. But on a fresh installation before installing...
Hi Pierre, it is extension "Approval process automation" - version 2.1.1: https://store.itophub.io/en_US/products/combodo-approval-process-automation I just got the same error even on iTop version 2.7.4.
Hi, I try to setup a test-system for iTop version 2.7.7 and did a clean install with demo-database. Next I tried to add the extension "combodo-approval-process-automation" but already in the toolkit I get this error: An error occured while processing the PHP files of the data model: Error loading module "itop-approval-portal": /itop_design/classes/class[ApprovalScheme] at line 4: could not be found - Loaded modules: dictionaries:1.0, core:1.0, application:1.0, authent-cas:2.7.7, authent-external:2.7.7,...
Hi Vincent, okay, strange... Thanks for the explanation. So I will reorder them myself using JS. Thanks again, best regards.
Hi Jeffrey, no I don't want to manipulate values or something like that. I am just wondering why this attributes have exactly the same order in object detail view (resolved incident and resolved userrequest) but not in that ev_resolve transition form (as seen on the image above). It's somehow confusing for the IT-stuff that in an incident "Service" and "Service subcat." are next to each other but in a userrequest we got at 1st "Service" than "Resolution code", "Solution" and "Service subcat" at last....
Hi, I am wondering about the attribute-order in the "Mark as resolved" submit form in Incident and UserRequest. (see attached image) I compared the datamodels but did not find any differences. This is important for me since I want to add some features with Javascript directly to that form. To not write the code twice for Incident and Userrequest I need it to be in the same order. In addition it would be better to have this homogeneous for a better look. Can anyone give me a hint about that? Thanks,...
Hi Pierre, when creating a new UserRequest or Incident I am using the "PrefillSearchForm"-Method to set filters for adding FunctionalCIs to the ticket. If already a caller is set, the searchform only shows the caller-CIs and in addition application solutions (of course both together make no sense, so the user has to remove one of both filters, depending on what he wants to choose - working fine so far): <method id="PrefillSearchForm" _delta="define"> <static>false</static> <access>public</access>...
Thanks for the hint Vincent. I found out that I can dynamically set a filter by just creating a new ExtKeyWidget through JS: oACWidget_2_*** = new ExtKeyWidget('***', 'FunctionalCI', "SELECT `FunctionalCI` FROM FunctionalCI AS `FunctionalCI` WHERE finalclass = 'ApplicationSolution'", 'Application Solution', false, oWizardHelper, '***', false, true); This helps me to build "fast-filters" depending on choosed options, in this case in a UR/Incident. Best regards, Nico
Hi, for a new attribute of type "AttributeExternalKey" I set a filter in the datamodel XML file. Target-class is FunctionalCI and the filter is <filter>SELECT FunctionalCI WHERE finalclass = 'ApplicationSolution'</filter> Now I want to use this filter like the function PrefilledSearchForm for a linked class. So it should be possible to remove this filter to maybe choose other CIs too. Is this possible? I think these search forms are not handled by the "PrefilledSearchForm" method. Thanks for any...
Thanks for your replies. I implemented it by adding all presentation declarations to each class needed.
Hi, I try to inherit a new attribute in Class Functional_CI to be presented on all its child classes, without success. I created a new link class to link FAQs to CIs and vice versa. I only get the FAQs tab presented in the CI if i declare it directly in its class. I imagined it's ok to just declare it in the class "FunctionalCI" as follows: <presentation> <details> <items> <item id="NM_faq_list" _delta="define"> <rank>99</rank> </item> </items> </details> </presentation> So, is it correct to have...
Hi, thanks for the reply. I already tested it and I think this will be my solution. The only bad thing in this solution is that you have to select an other class via the drop-down field, if another selection should be made, because the filter tag disabled the field in the filter tab bar. Anyway, I will try this :-)
Hi, I have an AttributeExternalKey in Incidents and UserRequest and want to prefill its searchform. I have added this method: <method id="PrefillSearchForm" _delta="define"> <static>false</static> <access>public</access> <type>Overload-DBObject</type> <arguments> <argument id="1"> <type>reference</type> <mandatory>true</mandatory> </argument> </arguments> <code> <![CDATA[ public function PrefillSearchForm(&$aContextParam) { if($aContextParam['dest_class'] == 'FunctionalCI' && $aContextParam['origin']...
Hi, I found out that I geht douple entries in attribute private_log if I use a clone rule in this extension. This problem is only in version 1.3.5. Version 1.3.4 and even version 1.3.2 do not behave like this. I tested it even on a clean iTop-installation. This is the rule i used for test purposes: 17 => array ( 'source_scope' => 'SELECT UserRequest', 'allowed_profiles' => 'Administrator, Service Desk Agent', 'menu_label/EN US' => 'TEST CLONE to new Incident', 'form_label/EN US' => 'Cloning to Incident...
Hi, I have rearranged some attributes shown in list views for example in dashboards. I can see that sometimes lists are sorted ascending by ref-number and sometimes descending. Even if all lists are configured with default settings. I could not find anything to configure this sort option. I want all lists to be sorted descending by ref number. Is that possible or do I have to manipulate it using jquery (trigger click on the table header)? Thanks, best regards, Nico
Hi Guillaume, I've found my mistake. I tried to add the JS code via a separate file using $oPage->add_linked_script(); If I inject it directly via $oPage->add_ready_script(); it works as espected. Anyway, thanks for the support. Best regards, Nico
Yes of course, sorry. I meant displaying additional infos when showing object details. For that i can grab elements using jquery and add just things I want - works great. But I did not find something to grab on the upper right menu.
Hi, thanks for your fast response. I already tried that but somehow I am not able to catch an element with jquery to append or prepend something... In "OnDisplayProperties" this is working perfectly.
Hi, I want to add another Button between the help and power button in the upper right corner. I already tried different things but with no success. Does anyone know what I should manipulate in an extension to achieve this? Many thanks in advance, best regards, Nico
Have you find something other? Did you succesfully configured some kind of this filters? Thanks.
I configured the dependency but with same results, the filter is still not recognized :-(
I created a complete Extension just for this test. It should add the new class und define the uniqueness rules. In Class PC the rules are functinonal.
Hmm, as you can see I configured the delta for the class "PhysicalDevice" as "if_exists" and added 2 rules (delta="define"). That in fact is working, the uniqueness is checkes and shows errors if values already exist in the database. But the filter is not working, so I get warnings on the RFID dongle class, too.
Sure: <class id="PhysicalDevice" _delta="if_exists"> <properties> <uniqueness_rules> <rule id="serialnumber" _delta="define"> <attributes> <attribute id="serialnumber"/> </attributes> </rule> <rule id="assetnumber" _delta="define"> <attributes> <attribute id="asset_number"/> </attributes> <filter><![CDATA[finalclass NOT IN ('NM_RFIDdongle')]]></filter> </rule> </uniqueness_rules>
Hi, I have created a new class to manage RFID tokens. It's parent is "PhysicalDevices". For the PhysicalDevices class a unique rule is configured taking care of unique asset numbers. In the new class for RFID tokens the asset number attribute is not needed/defined, so i tried to remove that class from the uniqueness rule using a filter like this: <filter><![CDATA[finalclass NOT IN ('NM_RFIDdongle')]]></filter> But without success: If i create a new RFID token I get an error that asset number has...
Hi, thanks for your feedback. I will check building my changes with this help. Best regards, Nico
Hi Guillaume, thanks for your fast response. Is it somehow possible to inject some PHP or Javascript code to the Portal pages like in the Backend? Maybe I can find a way to just manipulate the string directly in the page. Thanks again, Nico
Hi, does anybody know: Is it possible to have a different label in the Portal for the same Attribute? I want to label "functionalcis_list" in the Portal not as "CIs" rather than "Equipment". But in the Backend it should be left as "CIs". Thanks for any hint, best regards, Nico
Hi Pascal, thanks for your detailed explanation. I will test what you propose. Cheers, Nico
Hi, I have set up the LDAP data collector. I can collect the data from an AD server and sync it with itop. But when an account disappears from the AD it cannot be deleted when synch process is running. I get this error msg: Unable to delete the destination object: The field Person is not writable because it is mastered by the data synchronization. Value not set. When the synch process is running again later, this Person is deleted without error. So it always needs 2 runs to delete a Person in iTop....
Hi, sorry for my late reply. @pgoiffon Yes, I am in the ITIL datamodel, and in addition, you are right, I am using that extension. I use the clone_attachments() verb for that: This is my rule: 'itop-object-copier' => array ( 'rules' => array ( 16 => array ( 'source_scope' => 'SELECT UserRequest', 'allowed_profiles' => 'Administrator, Service Desk Agent', 'menu_label/EN US' => 'CLONE to new Incident', 'dest_class' => 'Incident', 'preset' => array ( 0 => 'clone(caller_id,org_id,title,description,origin,impact,urgency,priority)',...
In addition I just found in the documentation about background tasks: Automatic deletion of useless attachments and in-line images, created during an object creation or edition which was cancelled (Task: InlineImageGC which runs hourly) So is it safe to just edit the line from return 1; to return 3600;? Thanks for the reply, Nico
In addition I just found in the documentation about background tasks: Automatic deletion of useless attachments and in-line images, created during an object creation or edition which was cancelled (Task: InlineImageGC which runs hourly) So is it safe to just edit the line from return 1; to return return 3600;? Thanks for the reply, Nico
Hi, when a UserRequest is automatically created via mail and cloned to an Incident the attachment is not copied to the new Incident even it is shown in the form when cloning the request. When the background task InlineImageGC is set to pause it is working as expected. I had a look into the code (version: 2.7.0) of that task and saw this: public function GetPeriodicity() { return 1; // Runs every 8 hours } Return 1 means it runs every second, as it does. Even in the actual version 2.7.3 it says the...
Plz have a look at: https://www.itophub.io/wiki/page?id=2_7_0:customization:mandatory-in-portal
Hi, I recognize that sometimes tickets are created twice. In the cron logfile I can see that it is always around the time where cronjob exits and starts again with a "Notice" message: ... Exiting: 1604491203 (2020-11-04 13:00:03) Notice: Unknown: Some of the requested messages no longer exist. (errflg=2) in Unknown on line 0 Starting: 1604491501 (2020-11-04 13:05:01) ... The History entry in that tickets is the same: 2020-11-04 12:58:09 Automatic - Background task check approval timeout But the start-dates...
Hi, it's working... The notification status was configured as "Being tested". Sorry for that. So now in every new ticket the origin Mail-address should be stored and a notification be sent to there. Perfectly. Thanks again, best regards, Nico
Hi, thanks for your response. Got it :-)
Hi, thanks for your response. I bought the extension and saw what you explained. No I added an attribute to class Ticket so that the origin mail address is saved in the ticket. That works. Now I tried to configure the notification with this query (NM_CreatorEmail is the attribute that stores the address): SELECT EmailAlias WHERE email = :this->NM_CreatorEmail But the notification is still sent to the original address that is stored in class Person. So even with selecting the alias in the query it...
Hi, I did the same to fix the bug with the not handled mails, only by subject. That got fixed but now it seems to have randomly replicas from some kind of test mails that are stored in the log folder (Text2E-Mail - pb linespace.eml). Did you see this behavior too? How did you deactivate this test-functions? Thanks, best regards, Nico
Hi, can anybody explain: If a new incident/request is automatically raised by another mail address of a contact (an alias), how is the notification handled? Will it automatically be send to that email alias or still to the main email address configured for this person? This extension will only be helpful for me if the notification is send to the alias the ticket has been raised from. Thanks for the information, best regards, Nico
Hi, I created a hierachical organization structure like this: Org_A |---> subOrg_1 |---> subOrg_2 Now I have contacts that belong directly to Org_A and some belong to subOrg_1 or 2. If I am searching for contacts and set a filter to Org_A, in the result I can see all contacts (even from subOrg_1 and 2), but if I want to create and incident or a change and set the organization to Org_A I can only see contacts belonging to Org_A. I would expect if selecting Org_A to see all contacts even from subOrg_1...
Hi, when doing a global search or a concret OQL query (as seen in the attached screenshot) I get a fatal error, the memory size is exhausted. In this search there are about 500 documents (DocumentFile) involved. Is the default of 256MB PHP memory size too low for that? Does anyone else have this problem? Thanks, best regards, Nico
Hi Pierre, I found out that changing this two things makes the rule working for CIs of type PC: 1) changing source_class from "FunctionalCI" to "PC" 2) changing preset id 1 from "copy(id, functionalcis_list)" to "add_to_list(id, functionalcis_list)" But, in the Portal different types of FunctionalCIs are shown, not only PC. Maybe some CIs of type Peripheral, too. If I try to open a UserRequest on this I of course get an error because the rule has its source in class PC, not Peripheral. So the best...
Thanks for the hint. I've found the functions that will clone my Objects as desired. BTW: Are there any news about this question: https://sourceforge.net/p/itop/discussion/922360/thread/b32df882db/?limit=25#e74e Pierre and 'glajarige' have been engaged with it. Many thanks again, Nico
Hi, i would like to create a Background Task that should clone every month a change template to a routine change. I tried a few thing but dont get it to work. The background task is not the problem. I need to know how I can clone/copy an object internal via PHP. The Object-Copier extension is installed but I think not functional for this. I found the DBClone function but I have no idea how to use it. Does anyone did something like that already? Many thanks, Nico
Hi, do you have any update for this case? It would be really helpful. Thanks, best regards, Nico
Hi, yes, I use a browse brick. Attached you can find the complete XML file. Many thanks for your time.
Hi Pierre, I also tried that already: <action_rules> <action_rule id="NM_set-for-own-ci" _delta="define"> <source_class>FunctionalCI</source_class> <presets> <preset id="1">copy(id, functionalcis_list)</preset> </presets> </action_rule> </action_rules> But I get this error message: Some action rules were not executed(destination object: UserRequest[-1]): NM_set-for-own-ci = Portal query was stopped: action_rule 'NM_set-for-own-ci' searches for 'FunctionalCI' without any condition is forbidden
Hi Pierre, i already had a look at that file. From there I got the "create_from_this" action. Now I added a field to the creation form to add the functional-ci: <form id="UserRequest_create" _delta="define"> <class>UserRequest</class> <fields> <field id="service_id"></field> <field id="servicesubcategory_id"></field> <field id="impact"/> <field id="urgency"/> <field id="title"/> <field id="description"/> <field id="functionalcis_list"/> </fields> </form> I can see the functionalcis_list and manually...
Hi Pierre, ok, I already did some experiments with the action rules. But I dont know how to get any ID from the viewed CI. I only found out to have access to the username of the current logged in user and that origin is "portal". But I can't find any relationship between the called/viewed functionalCI and the UserRequest opened by "create-from-this". I succeeded in setting attributes (vie PrefillCreationForm function) that are shown in the creation form (service, service subcat, impact, urgency,...
Hi Pierre, that's exactly what I try. I already have a rule for creating a UserRequest out of a CI. It is shown in the menu "Other Action" in the Backend but not when I open the CI in the Portal (as configured shown in my 1st Post). In the Portal I only got the Burger Menu next to the CI with 2 actions: "Details" and "New User Reqest", but that "New User Request" belongs to the --action id="create_from_this"-- declaration. How can I get the Menu from the automatic object creation extension rule visible...
Hi, sorry, I dont get it. I already used the extension to automatically create Workorders if a UserRequest is raised or to add Documents on a newly created CI/PC. But I don't see the relationship on how to create a rule that adds the users CI to the UserRequest if he creates a new UserRequest out of the list of his CIs, in the portal. I dont want to create a new or another object when raising a UserRequest. I only want to add the name of the selected CI or link it directly when the request is opened...
Hi Pierre, thanks for your reply. I'm not sure if we mean the same thing. For example: A user has 3 (or more) CIs that he can see in his portal (using the new extension mentioned above). Now he has a problem with one of his CIs and chooses it in the potal to open a request. The request will be opened but without any relationship to the CI. If I use the automatic-object-creation extension, it could be triggered on opening a request, but how does it know about the CI that the user had choosed in his...
Hi, I wrote an extension to customize the Portal. I created a brick to show the CIs owned by the logged in user: <bricks> <brick id="NM_cis" xsi:type="Combodo\iTop\Portal\Brick\BrowseBrick" _delta="define"> <active>true</active> <rank> <default>70</default> </rank> <title> <default>My own CIs</default> </title> <levels> <level id="10"> <oql><![CDATA[ SELECT FunctionalCI AS fci JOIN lnkContactToFunctionalCI AS lnk ON lnk.functionalci_id = fci.id WHERE lnk.contact_id = :current_contact->id ]]> </oql>...
Hey, thanks, you made it. After getting write access to the config file (and of course securing it again afterwards) the WriteToFile is working as expected. Thanks again, best regards, Nico
Hi, I have set up a background task to do some calculations. This should only start if a parameter in the config file is set (for my extension - not globally). With MetaModel::GetModuleSetting('extension-name', 'parameter'); I can read the paramter that should be analyzed by the background task. But how can I write to it (from another function if something specified happens - maybe update of CI)? I tried it with MetaModel::GetConfig()->SetModuleSetting but it is not saved in the config file. Is there...
Hi, I configured the itop-object-copier extenstion to clone a NormalChange. It is working with almost every Attribute but WorkOrders. In the documentation it is described that copying a 1:n link by duplicating its objects (in my case the workorder) should be possible. If I try so I get the new created form with all copied attributes. Even the workorders_list-tab ist marked with a "(1)". But if I open that tab no workorder is attached, even if I save/create this new change. What could be wrong? Many...
Hi, sure, attached. In this case I want to check if any contact is added to the Change. But no matter what check is done (even nothing) just the "return" is enough to raise this message. Thanks
Hi Guillaume, I have another question regarding this topic. The integrity check works as described above if done on a regular modify. Now I want to do an integrity check while the state of an object is changed (in my case a change request should be validated). When I implement the check routine I get a Javascript error messagebox "The object could not be written: <my issue-text="">". So this belongs to the "return $aIssues;"-array. Ho can I implement an integrity check in this status change procedure...
Hi, thanks very much, it really helps. I did not see that I just had to return the array... Thanks again, best regards, Nico
Hi Guillaume, thanks for your response. I understand the design but I am confused about adding an item to the $this->m_aCheckIssues array since $this does not belong to $oObject but only to my created class. Do you have an example, anyway what the verification could be, for the blank code: class NM_cmgmt_actions implements iApplicationObjectExtension { ... public function OnCheckToWrite($oObject) { if ($oObject instanceof Change) { //verification and abort should be done here } } ... } Thanks & best...
Hi, I want to do a data integrity check as described in the docs (https://www.itophub.io/wiki/page?do=export_code&id=2_7_0%3Acustomization%3Acheck-to-write). In detail I don't want to overwrite the DoCheckToWrite() method, instead I would like to use the extension API. So I created a new class and declared the function "OnCheckToWrite($oObject)". I checked that it is called when an object is modified but I have no Idea how to abort the modification if a verification fails. In the examples it should...
Hi, after upgrading to version 2.7 I get the following error twice when using the User actions configurator extension: Uniqueness rule 'ref' in error In addition the new object is created with the same ref number. In my case I want to clone a UserRequest with ref number R-000043 and the new cloned request has the same number R-000043. I tested this with clean installs of version 2.6 and 2.7 and only the this config set (only happens when clone_scalars is set): 0 => 'clone_scalars(*)' I think you...
Hi, in the Update procedure - Point 6 - you write: Copy new version core files : cp -r ./web/* I think this copy command makes no sense and does not copy the files as expected. I am confused which files have to be copied to which destination!? Could you please review this and reply? Many thanks in advance, best regards, Nico