I want to customizing something on ITOP but i failed to do so.
I want tickets (wich are created in portal ) to be automically created with an Sub Organisation that depends on the services wich is chosen by the user portal.
All contact are created in ORG1 but when they create a ticket on the portal the ORG1 organization is on the ticket. Instead of that, i want that subORG1 is selected linkes to the service that the user portal would have selected.
Am i clear about that ?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Can you explain why you want to have this field set as it ?
For now in tickets you need to select first the organization to have a list of callers and a list of service / servicesubcategory. Having this same organization depending on the servicesubcategory picked would be quite strange ?
However if you need the ticket's servicesubcategory organization later, you should be able to get it quite easily using an OQL query ?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
In my compagny i have 3 teams like Network, Security, Unified Com.
We have multiple customer and for each of these customer we have created one SubOrgnaization for each teams:
ORG1
ORG1-NETWORK
ORG1-SECURITY
I must do such a thing beacause i have to restrict access to open tickets.
For example:
My customer's user, let's call him user1 must have access to all of my subORGs.
User2 could have access to ORG1-NETWORK only
User3 the opposite, just the access to SECURITY
I really need that ticket's organization will be the organization that is linked to the servicesubcategory.
Is it possible to do so ?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Need: Two departments are providing services to their company, but should not be allowed to see the ticket assigned to the other department.
Solution:
Create 3 organizations: Company, HR below Company and IT also below Company FIXME check if an organization hierarchy has an impact on user rights or not
Create IT and HR Services under IT and HR
Create two contracts under Company one with the IT and the other with the HR services
Create a Portal where every Company user can manage his requests (The standard Portal is a good start)
Create all users under Company
For all users which do not have Portal User profile, give them “Allowed organizations”,
either just Company, for normal users
Company + IT, for IT users
Company + HR, for HR users
Change iTop Datamodel,
Change the Filter on Ticket caller_id and invert the dependency with org_id
Change the Filter on Org_id to propose all providers of the caller_id organization
Rename Ticket Customer (org_id) into Provider.
Change the Filter on Service to propose Services owned by the Org_id
Change the portal Action rule to set the org_id of a Ticket as the organization of the Service, instead of the organization of the caller.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I don't hink that is exactly what i meant.
Let me choose an other example.
We are an IT compagny with multiple domain, and in each domain there is a team:
MYCOMPAGNY
MYCOMPAGNY-NETWORK
MYCOMPAGNY-SECURITY
etc...
We have customers and we want to make a difference between tickets that our customers open:
CUSTOMER1
CUSTOMER1-NETWORK
CUSTOMER1-SECURITY
etc...
When a customer choose a service the ticket has to be opended whith the customer sub organization.
Example:
Mr Kind is member of CUSTOMER1 organization.
Mr Kind open a ticket witch a service called "CUSTOMER1_NETWORK_SWITCHES"
So when his ticket will be create, it will be openned in the sub organization CUSTOMER1-NETWORK.
Is that more clear ?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I see that you would like the customer organization to be selected based on the required service. For sure no-one ever requested this, so it does not work out of the box. Knowing the flexibility of iTop I have no doubt that it is possible, but knowing it will never be reused, I am not going to invest any time on it.
A much more standard solution would be to use Auto-dispatch extension, which would affect a team automatically on every new ticket based on the requested service. Then a search of Tickets filtered on Customer1 and the affected team "MYCOMPAGNY-NETWORK" would do the job of differentiation.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
In you customer compagny you can also have some teams, maybe a network team, security team, and even more.
You'll have multiple user un multiple teams and for security reason you'll not allowed averyone to see every tickets.
Some of them could have acces to every tickets but some of them would have acces only to one suborganization.
That's why i want the ticket to be created based on service and not based on user's organization.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
<action_rules><action_ruleid="contact-to-userrequest"><!-- source_oql|source_class is only necessary if there is some copy preset|retrofit --><source_oql><![CDATA[SELECT Contact AS C WHERE C.id = :current_contact_id]]></source_oql><presets><!-- Only set() and copy() are supported for now --><presetid="1">set(caller_id,$current_contact_id$)</preset><presetid="2">copy(org_id,org_id)</preset><presetid="3">set(origin,portal)</preset></presets><retrofits/></action_rule><action_ruleid="service-to-userrequest"><source_class>Service</source_class><presets><presetid="1">copy(id,service_id)</preset></presets></action_rule><action_ruleid="servicesubcategory-to-userrequest"><source_class>ServiceSubcategory</source_class><presets><presetid="1">copy(id,servicesubcategory_id)</preset><presetid="2">copy(service_id,service_id)</preset></presets></action_rule><action_ruleid="go-to-open-request-on-submit"><submitxsi:type="goto"><brick>ongoing-tickets-for-portal-user</brick></submit></action_rule></action_rules>
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
i've try to modify this line:
<preset id="user-content-2">copy(org_id, org_id)</preset>
How can i use an OQL request and use it here ?
I tried that
<preset id="user-content-2">copy(org_id, $suborg_lts$)</preset>
but i've got an error:
Action: copy(org_id, $suborg_lts$) - Unknown attribute Incident::$suborg_lts$
Of course i have created a new field to do so:
<field id="user-content-suborg_lts" xsi:type="AttributeExternalKey" _delta="define">
<filter><![CDATA[SELECT Organization AS o JOIN CustomerContract AS cc ON cc.org_id = o.id JOIN lnkCustomerContractToService AS lcc ON lcc.customercontract_id = cc.id JOIN Service AS s ON lcc.service_id = s.id WHERE s.id = :service_id]]></filter>
<dependencies>
<attribute id="user-content-org_id">
</attribute></dependencies>
<sql>suborg_lts</sql>
<target_class>Orgnization</target_class>
<is_null_allowed>true</is_null_allowed>
<on_target_delete>DEL_MANUAL</on_target_delete>
<allow_target_creation>false</allow_target_creation>
</field>
What am i doing wrong ?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
<action_ruleid="org_by_service"><source_oql><![CDATA[SELECT Organization AS o JOIN CustomerContract AS cc ON cc.org_id = o.id JOIN lnkCustomerContractToService AS lcc ON lcc.customercontract_id = cc.id JOIN Service AS s ON lcc.service_id = s.id WHERE s.id = :this->service_id]]></source_oql><presets><presetid="1">set(org_id,customer_org_id)</preset></presets></action_rule>
Of course i add this action rule on my brick and exactly in the "create_from_this" action.
and also in UserRequest and Incident the field customer_org_id like this:
<fieldid="customer_org_id"xsi:type="AttributeExternalKey"_delta="define"><filter><![CDATA[SELECT Organization AS o JOIN CustomerContract AS cc ON cc.org_id = o.id JOIN lnkCustomerContractToService AS lcc ON lcc.customercontract_id = cc.id JOIN Service AS s ON lcc.service_id = s.id WHERE s.id = :this->service_id]]></filter><dependencies><attributeid="service_id"/></dependencies><sql>customer_org_id</sql><target_class>Incident</target_class><is_null_allowed>true</is_null_allowed><on_target_delete>DEL_MANUAL</on_target_delete><allow_target_creation>false</allow_target_creation></field>
It's not working but i failed to found where am i wrong, can you help me please ?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
How to use an other field to preset org_id in action rule ?
i've tired to do so with a new fiedl called service_org_id like this:
<fieldid="service_org_id"xsi:type="AttributeExternalKey"_delta="define"><filter><![CDATA[SELECT Organization AS o JOIN CustomerContract AS cc ON cc.org_id = o.id JOIN lnkCustomerContractToService AS lcc ON lcc.customercontract_id = cc.id JOIN Service AS s ON lcc.service_id = s.id WHERE s.id = :this->service_id]]></filter><dependencies><attributeid="service_id"/></dependencies><sql>service_org_id</sql><target_class>Organization</target_class><is_null_allowed>false</is_null_allowed><on_target_delete>DEL_MANUAL</on_target_delete><allow_target_creation>false</allow_target_creation></field>
But this field is never filled, it seems that it's "undefined" all time.
Am i doing this the wrong way ?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Just a question: do you want to show the service_org_id based on the organization providing the Service; or on the organization from the CustomerContract?
If you want to use the org_id linked to Service, you could look into "AttributeExternalField".
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Might be missing something, but services are usually depending on the org_id of the UserRequest, right? So don't you already know or have you added more customizations?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi everybody so i make it work but i'm stuck in somethng.
My field is OK but it won't be set by default, and I don't undestand why that.
First I had to change the organization scope:
<classid="Organization"_delta="redefine"><scopes><scopeid="all"><oql_view><![CDATA[SELECT Organization AS child JOIN Organization AS root ON child.parent_id BELOW root.id WHERE root.id = :current_contact->org_id]]></oql_view><ignore_silos>true</ignore_silos></scope></scopes></class>
And after that i had to set a filter on the org_id field present in Ticket Class:
<filter><![CDATA[SELECT Organization AS o JOIN CustomerContract AS cc ON cc.org_id = o.id JOIN lnkCustomerContractToService AS lcc ON lcc.customercontract_id = cc.id JOIN Service AS s ON lcc.service_id = s.id WHERE s.id = :this->service_id]]></filter>
After this my field is good but is undefinied by default and i d'ont konw how to set it ? Any ideas ?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Not sure I understood what you want exactly, but if you want the "service_org_id" field to be automatically filled in the portal when creating an object, you have to create an "action_rule" and use it in the brick from which you create the object (either CreateBrick or BrowseBrick).
Guillaume
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
So in order to select the current_contact_org_id i want to choose the org_id based on the customer_org_id linked to the service.
I succeed to so with the modification that i've quote before (scope modification and add a filter to the org_id field.
In the default configuration, the org_id is set by default with the value of current_user_org_id and after my modifications it doesn't work anymore ...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
When portal users create a new request I'd like that the 3 fields below are automaticaly set:
But i failed to do so with org_id.
First I had to change the organization scope:
<classid="Organization"_delta="redefine"><scopes><scopeid="all"><oql_view><![CDATA[SELECT Organization AS child JOIN Organization AS root ON child.parent_id BELOW root.id WHERE root.id = :current_contact->org_id]]></oql_view><ignore_silos>true</ignore_silos></scope></scopes></class>
And after that i had to set a filter on the org_id field present in Ticket Class:
<filter><![CDATA[SELECT Organization AS o JOIN CustomerContract AS cc ON cc.org_id = o.id JOIN lnkCustomerContractToService AS lcc ON lcc.customercontract_id = cc.id JOIN Service AS s ON lcc.service_id = s.id WHERE s.id = :this->service_id]]></filter>
Are you creating the Ticket from the services catalog? If so, can you check the "action_rule" used? (Share the /env-production/core/module_designs/itop-portal.xml if possible)
Guillaume
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi everybody,
I want to customizing something on ITOP but i failed to do so.
I want tickets (wich are created in portal ) to be automically created with an Sub Organisation that depends on the services wich is chosen by the user portal.
For example:
ORG1 -> Contact: MrUser
SubORG1 -> Services:
Network
Security
Office Devices
etc...
All contact are created in ORG1 but when they create a ticket on the portal the ORG1 organization is on the ticket. Instead of that, i want that subORG1 is selected linkes to the service that the user portal would have selected.
Am i clear about that ?
Hello,
Can you explain why you want to have this field set as it ?
For now in tickets you need to select first the organization to have a list of callers and a list of service / servicesubcategory. Having this same organization depending on the servicesubcategory picked would be quite strange ?
However if you need the ticket's servicesubcategory organization later, you should be able to get it quite easily using an OQL query ?
Hello Pierre,
In my compagny i have 3 teams like Network, Security, Unified Com.
We have multiple customer and for each of these customer we have created one SubOrgnaization for each teams:
ORG1
ORG1-NETWORK
ORG1-SECURITY
I must do such a thing beacause i have to restrict access to open tickets.
For example:
My customer's user, let's call him user1 must have access to all of my subORGs.
User2 could have access to ORG1-NETWORK only
User3 the opposite, just the access to SECURITY
I really need that ticket's organization will be the organization that is linked to the servicesubcategory.
Is it possible to do so ?
I've tried to modify the scope of the tickets but it doesn't work.
Did someone has done that ?
In 2.2 version we had to modifiy the DoCreateRequest function but it seems that with the enhanced portal we can't do it anymore.
Could this help you
Need: Two departments are providing services to their company, but should not be allowed to see the ticket assigned to the other department.
Solution:
Mr DUMAS?
I don't hink that is exactly what i meant.
Let me choose an other example.
We are an IT compagny with multiple domain, and in each domain there is a team:
MYCOMPAGNY
MYCOMPAGNY-NETWORK
MYCOMPAGNY-SECURITY
etc...
We have customers and we want to make a difference between tickets that our customers open:
CUSTOMER1
CUSTOMER1-NETWORK
CUSTOMER1-SECURITY
etc...
When a customer choose a service the ticket has to be opended whith the customer sub organization.
Example:
Mr Kind is member of CUSTOMER1 organization.
Mr Kind open a ticket witch a service called "CUSTOMER1_NETWORK_SWITCHES"
So when his ticket will be create, it will be openned in the sub organization CUSTOMER1-NETWORK.
Is that more clear ?
I see that you would like the customer organization to be selected based on the required service. For sure no-one ever requested this, so it does not work out of the box. Knowing the flexibility of iTop I have no doubt that it is possible, but knowing it will never be reused, I am not going to invest any time on it.
A much more standard solution would be to use Auto-dispatch extension, which would affect a team automatically on every new ticket based on the requested service. Then a search of Tickets filtered on Customer1 and the affected team "MYCOMPAGNY-NETWORK" would do the job of differentiation.
In fact i think that could be reused...
In you customer compagny you can also have some teams, maybe a network team, security team, and even more.
You'll have multiple user un multiple teams and for security reason you'll not allowed averyone to see every tickets.
Some of them could have acces to every tickets but some of them would have acces only to one suborganization.
That's why i want the ticket to be created based on service and not based on user's organization.
Thanks a lot Mr DUMAS,
i have checked all the things that you've wrote is checked but the only thing that i failed to do is the last one
Change the portal action rule, i fail to do so...
Here the default action rules:
If I understood what you told me, i have to change the value to org_id on the action rule called "contact-to-userrequest" ?
i've try to modify this line:
<preset id="user-content-2">copy(org_id, org_id)</preset>
How can i use an OQL request and use it here ?
I tried that
<preset id="user-content-2">copy(org_id, $suborg_lts$)</preset>
but i've got an error:
Action: copy(org_id, $suborg_lts$) - Unknown attribute Incident::$suborg_lts$
Of course i have created a new field to do so:
<field id="user-content-suborg_lts" xsi:type="AttributeExternalKey" _delta="define">
<filter><![CDATA[SELECT Organization AS o JOIN CustomerContract AS cc ON cc.org_id = o.id JOIN lnkCustomerContractToService AS lcc ON lcc.customercontract_id = cc.id JOIN Service AS s ON lcc.service_id = s.id WHERE s.id = :service_id]]></filter>
<dependencies>
<attribute id="user-content-org_id">
</attribute></dependencies>
<sql>suborg_lts</sql>
<target_class>Orgnization</target_class>
<is_null_allowed>true</is_null_allowed>
<on_target_delete>DEL_MANUAL</on_target_delete>
<allow_target_creation>false</allow_target_creation>
</field>
What am i doing wrong ?
Hello jfonlupt,
You need to remove the "$" around the field code, they are only for built-in placeholders.
Guillaume
Last edit: Guillaume Lajarige 2020-02-27
Nice thank you Guillaume, it think it works but i have an issue when i change it.
After the change i cannot select my service and so my subservice ...
So i've create this action rule:
Of course i add this action rule on my brick and exactly in the "create_from_this" action.
and also in UserRequest and Incident the field customer_org_id like this:
It's not working but i failed to found where am i wrong, can you help me please ?
Can someone help me to set different value ton service_id and org_igd in the "actions-rules" ?
Hi everybody,
How to use an other field to preset org_id in action rule ?
i've tired to do so with a new fiedl called service_org_id like this:
But this field is never filled, it seems that it's "undefined" all time.
Am i doing this the wrong way ?
Just a question: do you want to show the service_org_id based on the organization providing the Service; or on the organization from the CustomerContract?
If you want to use the org_id linked to Service, you could look into "AttributeExternalField".
i want to use the customer contract org_id not the provider org_id
Might be missing something, but services are usually depending on the org_id of the UserRequest, right? So don't you already know or have you added more customizations?
Hi everybody so i make it work but i'm stuck in somethng.
My field is OK but it won't be set by default, and I don't undestand why that.
First I had to change the organization scope:
And after that i had to set a filter on the org_id field present in Ticket Class:
After this my field is good but is undefinied by default and i d'ont konw how to set it ? Any ideas ?
Hello jfonlupt,
Not sure I understood what you want exactly, but if you want the "service_org_id" field to be automatically filled in the portal when creating an object, you have to create an "action_rule" and use it in the brick from which you create the object (either CreateBrick or BrowseBrick).
Guillaume
Hello Guillaume,
So in order to select the current_contact_org_id i want to choose the org_id based on the customer_org_id linked to the service.
I succeed to so with the modification that i've quote before (scope modification and add a filter to the org_id field.
In the default configuration, the org_id is set by default with the value of current_user_org_id and after my modifications it doesn't work anymore ...
Hi Everybody,
When portal users create a new request I'd like that the 3 fields below are automaticaly set:
But i failed to do so with org_id.
First I had to change the organization scope:
And after that i had to set a filter on the org_id field present in Ticket Class:
And finally i had to redefine the form:
Hello,
Are you creating the Ticket from the services catalog? If so, can you check the "action_rule" used? (Share the /env-production/core/module_designs/itop-portal.xml if possible)
Guillaume