I've created the process with similar signal. It works fine and the process is launched:
Most likely your created call doesn't satisfy your signal conditions. Try to disable the filter and see if the process launches or make sure the call record satisfies it.
The settings seem to be fine and the process should have launched the process. What I suggest is to try is to disable the background execution in the signal settings. If this cannot help - try to re-add the signal completely. If still no success - it is necessary to investigate the trigger on the database level. In this case it is better to approach the support team. I'm afraid it might necessary to have a closer look to the website, rather than trying to guess the possible solution.
We have this situation where we need to create a bi-directional connection with our customer platform, using SOAP protocol. We would like to know if its possible to create a SOAP based services in Creatio to be accessed by our customer? If yes, any information on how to implement this?
You need to develop a configuration service (either regular or anonymous) using SOAP. Here is the article that describes how to configure web-services and integrate them into the Creatio app.
For example:
1) Create a source code for the service contract SPMSUBPServiceContract:
using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;using System.ServiceModel.Web;using System.Text;namespace SPMSUBPService
{[ServiceContract]public interface IService
{[OperationContract]
SPMClientInfoResponse SPMClientInfo(string Login);}[DataContract]publicclass SPMClientInfoResponse
{bool success =true;
string errorText ="";[DataMember]publicbool Success
{
get {return success;}
set { success = value;}}[DataMember]public string ErrorText
{
get {return errorText;}
set { errorText = value;}}}}
and the source code of the SPMSUBPService service directly:
And everything is ready, the service is accessible via /0/ServiceModel/SPMSUBPService.svc and the WSDL as well /0/ServiceModel/SPMSUBPService.svc?singleWsdl
We manage to make this service working, but since it was a long time ago we don't have the specific steps to fix the error.
However, we have the updated steps that we use in order to make the service available. Maybe if you go through these following steps you could fix your problem.
Note: These steps only work for .Net Framework instances.
1. Create a new file called “DemoServiceName.svc" in ..\Terrasoft.WebApp\ServiceModel folder, and add this line:
I've this situation where I need to refresh my Opportunity Section right after I save my mini page when creating a new Opportunity.
Since some of the values are calculated during this "save" operation using a business process, I've tried to send a message to my Opportunity Section page, using the same process. But the main problem happens when two or more users are in the Opportunity Section page those pages (Opportunity Section of each user) are refreshed. Is there any solution to refresh the page of only one user (the user that created the new Opportunity)?
As far as sending a message for only the current user, you can use the ServerChannel to send a message from a process and include the user Id of who created the opportunity in the message, then check that value with the current user when received on the client.
As far as sending a message for only the current user, you can use the ServerChannel to send a message from a process and include the user Id of who created the opportunity in the message, then check that value with the current user when received on the client.
Could you please clarify if there's no information in the Leads section regarding the call with the same contact connected to the lead, which has it in the Contacts section?
Is it all empty here?
Also what is the version and product of the instance you use?
To display the information regarding phone calls on the lead edit page you should go to the timeline tab and choose "Calls" option from the dropdown menu as it is shown on the screenshot attached:
We kindly ask you to contact our Technical support team at support@creatio.com with a detailed description of your issue. We would be happy to take a closer look at the issue and provide you with a proper solution.
Can you please check if your IIS can see the host where your custom Webservice logic is stored and vice versa? Also do you receive any other messages in application logs?
Can you please increase the execution timeout for calling a web-service to 1 minute for example? And also please specify which version of the application do you use? In case its 7.16.4 can you go to the Terrasoft\Web.config file, find the
Feature-EnableOAuth20Integration parameter and set the "false" value for it and restart the app after that?
I am having some difficulties importing an excel template into my excel reports on my production machine. This machine is in version 7.16.4.1731.
I already tried to import it into my development machine, which is in version 7.16.3.1473 and the whole process was completed successfully, I managed to import a template into my excel reports.
Is the problem related with the application version? Can you help me solve this issue?
For some reason, when you upload a template it thinks the template is an apk or jar file. These extensions are on the file deny list in Creatio so it is rejecting the file upload. Not sure when this changed, it didn't used to fail like this.
Anyway, to resolve this, you can simply remove "apk" and "jar" from the "FileExtensionsDenyList" system setting. Then you will be able to upload templates.
For some reason, when you upload a template it thinks the template is an apk or jar file. These extensions are on the file deny list in Creatio so it is rejecting the file upload. Not sure when this changed, it didn't used to fail like this.
Anyway, to resolve this, you can simply remove "apk" and "jar" from the "FileExtensionsDenyList" system setting. Then you will be able to upload templates.
Turns out using plain enter would conflict with the need of the dropdown lookup. I picked alt+enter. This is how:
define("OrderProductDetailV2", [], function(){return{
entitySchemaName:"OrderProduct",
messages:{},
attributes:{},
methods:{/**
* add Alt+Enter as a shortcut to an active record
*/
initActiveRowKeyMap: function (keyMap){
keyMap.push({
key: Ext.EventObject.ENTER,
alt:true,
defaultEventAction:"preventDefault",
fn:this.onAltEnterKeyPressed,
scope:this});this.callParent(arguments);},
/**
* Enable the logic for saving the current row and
* creating a new one
*/
onAltEnterKeyPressed: function (){
var activeRow =this.getActiveRow();this.unfocusRowControls(activeRow);
Terrasoft.chain(function(next){this.saveRowChanges(activeRow, next);}, function(next){this.activeRowSaved(activeRow, next);}, function(){this.addRecord();}, this);}},
diff:/**SCHEMA_DIFF*/[// this overides the little + button to skip the OrderProductPage{"operation":"merge",
"name":"AddRecordButton",
"values":{"click":{"bindTo":"addRecord"}}}]/**SCHEMA_DIFF*/};});
Turns out using plain enter would conflict with the need of the dropdown lookup. I picked alt+enter. This is how:
define("OrderProductDetailV2", [], function(){return{
entitySchemaName:"OrderProduct",
messages:{},
attributes:{},
methods:{/**
* add Alt+Enter as a shortcut to an active record
*/
initActiveRowKeyMap: function (keyMap){
keyMap.push({
key: Ext.EventObject.ENTER,
alt:true,
defaultEventAction:"preventDefault",
fn:this.onAltEnterKeyPressed,
scope:this});this.callParent(arguments);},
/**
* Enable the logic for saving the current row and
* creating a new one
*/
onAltEnterKeyPressed: function (){
var activeRow =this.getActiveRow();this.unfocusRowControls(activeRow);
Terrasoft.chain(function(next){this.saveRowChanges(activeRow, next);}, function(next){this.activeRowSaved(activeRow, next);}, function(){this.addRecord();}, this);}},
diff:/**SCHEMA_DIFF*/[// this overides the little + button to skip the OrderProductPage{"operation":"merge",
"name":"AddRecordButton",
"values":{"click":{"bindTo":"addRecord"}}}]/**SCHEMA_DIFF*/};});
To avoid opening the "Products" section and simply switch to a new line, you can press the "Tab" button and add a new product to the detail, choosing it from an appeared lookup.
True, but that does not enable adding a new line through a shortcut when in edit mode, which was the original question, that I solved per my answer above.
I'm having trouble designing a process that is triggered by the deletion of a record. At the moment, the process looks like the screenshot attached. First, I need to read the record that is about to be deleted to find some other ID. Then, I want to start a subprocess that uses this ID. However, this subprocess should only start once the record is actually deleted. How can I accomplish that? At the moment, the subprocess is started before the record is actually deleted and thus isn't working properly.
You need to create a process that is connected to the object itself and is connected to the delete event. To do this you need to go to the object settings and click this button:
Once done you will see a process editor where you can create custom script tasks that can process the record. Also the start signal for the process should be catching a message that is generated before or after deleting a record (called CaseDeleting and CaseDeleted in my example above). Please examine base processes from "Case" object in the "Case" package for example so to create your own process.
to Kai's point. How can I capture the GUID of the deleted record though? The above process would start once the record is deleted at which point the GUID does not actually exist anymore.
If all you need is the ID of the record getting deleted, and not to read the other data of the record getting deleted, then all you need to do is change the start signal to "run in background", then the record will be deleted at that point, and you can get the ID of the record deleted from the start signal. However, you won't be able to read any of the other data of the record deleted since it's gone at that point.
Thanks for your reply. I'm already using the start signal you described. The problem for me is that I first need to read to record about to be deleted (that is, doing an action before the record is deleted) and afterwards I want to start a subprocess that only works properly after the record is deleted.
Thanks for your help! I've actually read the the article written by Tate Farley about this, which helped my understanding a lot. Unfortunately I need to more than just the ID of the deleted record, I need to read this record for a last time and find an ID of a connected record. Then however, I want to start a subprocess that should only start once the record is actually deleted. Maybe I could use to onDelete function to that end, as described in the other thread?
You need to create a process that is connected to the object itself and is connected to the delete event. To do this you need to go to the object settings and click this button:
Once done you will see a process editor where you can create custom script tasks that can process the record. Also the start signal for the process should be catching a message that is generated before or after deleting a record (called CaseDeleting and CaseDeleted in my example above). Please examine base processes from "Case" object in the "Case" package for example so to create your own process.
For me this a headache, so If I uncheck "run in background" for all next purposes the record still exist. I mean if I want to sum all invoice detail records related to the same invoice, I need the get the invoice number, so I need to uncheck "run in background", but later when sum the detail records, the deleted record also is included in the sum, how can I, after get the invoice number, can sum the invoice detail records exluding the deletede one?, I can introduce in the condition "and Id != id of deleted record", but is a more transparent and clear way to do this?
Hi Julio, the only way to do this when you uncheck the "run in background" is to exclude the deleted record Id from the sum (add a filter where the Id != deleted record Id)
Thanks Ryan, in this case I will have no info regarding the deleted record, so I'll treat deleted trigger as special case and exclude the deleted record from any calculation on the related table , in this way
If you are trying to add a new mailbox to the system and you have received the notification which you have mentioned before, it can mean that possibly the other user has already added this email to the system under its own profile. You can check the absence of the needed email by running the next query in your DB:
select * from MailboxSyncSettings
This query will show you the list of the already connected mailboxes. There you also can check who is the owner of the mailbox by the "SysAdminUnitId" column via the next query:
select * from SysAdminUnit where Id='SysAdminUnitId_value_for_the_needed_record'
In case when the needed mailbox was already added by other user, you can ask this user to set the shared mailbox (more information about this you can find in this article) if it fits your business tasks or log in under this user and delete the mailbox.
Also, you can delete the mailbox from the database using SQL Studio if the instance is on-site or by using SQL Executor if it is a cloud environment. At the same time we do not recommend to delete mailboxes from the application using other way than standard delete procedure from system user profile.
I would like to add the payment status data within the Financial Indicators tab of the Project detail pages. This will allow our team to easily see information that can help them determine correct responses.
The Opportunity is connected to a Project and the Order, but when I add a 'New Detail' to the Financial Indicators with the following settings, I get no output:
Detail - Orders
Detail Column - Opportunities
Object Column - ID
I have tried other variations, but so far no output. I would be thankful for any guidance on how I can show the following information on this Financial Indicators tab:
"Caption on the page" is how it will be named on the page.
"Detail column" is an object in your detail that is equal to the current record. If you are adding Contact detail to accounts then you select Account as detail column since each contact has an account and you will see all contacts with Account = Current record when you open this detail.
"Object column" is a column that specifies what will be shown in detail. Usually, it is ID of the connected record.
Try to apply similar logic to your architecture to see which field to use as "Detail column" - maybe it is missing in the object?
Thanks for your reply. I have not been able to identify the correct combination to use so far.
As the Order is not directly connected to a Project, instead each are connected to the same Opportunity, I concentrated on trying both of these as the Detail, but no success so far.
Then you need to check that records added to detail have needed columns. So that when you add a new record into detail Project, the project must have the same opportunity as in Order. Thy to add Opportunity field in detail to track if is added or not.