I have a prospect whose business generates 1-2 million new records/month.  They need to retain and search ~200M records.  Does anyone have experience or benchmarks scaling Creatio to similar data volumes?

Like 0

Like

2 comments

Hi Glenn, 

There are no strict limits for the records possibly can be added in Creatio. 

If we speak about the in-site deployed system , then the main point is to correctly treat and maintain the database in order to keep it's health and performance on the required level - create indexes and so on.

Kind regards,
Roman . 
 

Roman Brown,

This would be hosted by Creatio, not the customer.  While I agree there is no hard limit, what are the performance implications of very large databases?  Does Creatio create the indices as you recommend for a customer hosted solution?

Show all comments

Hi Community,

I am trying to make a request from Creatio to the HTTP REST API Endpoints. |Where File should be added to the API request. 

Is there any way to work with the File type request Parameter in Rest API from Creatio? If yes, please suggest to me how I can achieve this.

 

An example of an API call from Postman is something like as per below :

 

Like 0

Like

3 comments

Hi Patrik,

 

To successfully upload an image you need to make sure that "WebDav publishing" feature is disabled in Windows features of the IIS server (can be found at "World wide web services" -> "Common HTTP Features" -> "WebDAVPublishing"):

Once done you need to perform the following steps:

 

1) Create a POST request to https://app_root_URL/0/odata/SysImage with the JSON raw body with the following content:

{
    "Name": "scr_NewContactPhoto.png",
    "Id": "330006E1-CA4E-4502-A9EC-E54D922D2C01",
    "MimeType": "image/png"
}

330006E1-CA4E-4502-A9EC-E54D922D2C01 should be a random unique identifier. This request will create a record in the SysImage table and the response should be similar to the below:

{
    "@odata.context": "https://app_root_URL/0/odata/$metadata#SysImage/$entity",
    "Id": "330006e1-ca4e-4502-a9ec-e54d922d2c01",
    "CreatedOn": "2021-09-30T10:24:26.830457Z",
    "CreatedById": "410006e1-ca4e-4502-a9ec-e54d922d2c00",
    "ModifiedOn": "2021-09-30T10:24:26.830457Z",
    "ModifiedById": "410006e1-ca4e-4502-a9ec-e54d922d2c00",
    "ProcessListeners": 0,
    "UploadedOn": "0001-01-01T00:00:00Z",
    "Name": "scr_NewContactPhoto.png",
    "Data@odata.mediaEditLink": "SysImage(330006e1-ca4e-4502-a9ec-e54d922d2c01)/Data",
    "Data@odata.mediaReadLink": "SysImage(330006e1-ca4e-4502-a9ec-e54d922d2c01)/Data",
    "Data@odata.mediaContentType": "application/octet-stream",
    "MimeType": "image/png",
    "HasRef": false,
    "PreviewData@odata.mediaEditLink": "SysImage(330006e1-ca4e-4502-a9ec-e54d922d2c01)/PreviewData",
    "PreviewData@odata.mediaReadLink": "SysImage(330006e1-ca4e-4502-a9ec-e54d922d2c01)/PreviewData",
    "PreviewData@odata.mediaContentType": "application/octet-stream"
}

2) Create a PUT request to https://app_root_URL/0/odata/SysImage(330006e1-ca4e-4502-a9ec-e54d922d2c01)/Data with the binary body and select an image there:

Once executed the response will be 200OK.

 

And after that we can perform a GET request to check the result:

Please also note that BPMCSRF cookie should be always in headers:

Best regards,

Oscar

Hi Oscar,

Thanks for the Guidance, But I want to make an API call from Creatio itself ( Using Web-Service / Script Task ), not from Postman

 

Could you guide me on that? 

Hi Pratik,

 

Please see examples here https://academy.creatio.com/docs/developer/integrations_and_api/data_se…

 

Best regards,

Oscar

Show all comments

Hello Team,

 

There is any way to edit the fields to display in the mobile section? In the web I change the behavior of the field in the object and is hidden but didn't work on the mobile.

 

 

Like 0

Like

3 comments

Hello Federico, 

 

Actually this is the out-of-the box logic and it's not possible to hide these columns. Nevertheless, you are welcome to use the "Search for filter column" option that was developed to find the needed filter column fast.

 

Best Regards, 

 

Bogdan L.

Bogdan Lesyk,

 

Thanks Bogdan.

 

Would be great if the mobile is taking the behavior configuration of the object like in the web version. 

Federico Buffa ...,

 

For sure! 

 

That's a great idea and will be definitely passed to our Core R&D team.

 

Thanks!

 

Regards, 

 

Bogdan L.

Show all comments

I'm calling REST api of Contact ,Account and Case management for CRUD operation. I'm calling Creatio CRM REST from WSO2 EI. It is identical the Request which is send from the Postman or Rest Client.

But it gives 302 Status for WSO2 EI calling the  Creatio REST while it gives 403 for Postman or Restclient If BPMCSRF header doesn't contain cookie value.

 

If the BPMCSRF header value contains correct cookie value from the Login request, Postman or Restclient gives 201/200 for success operation and WSO2 EI gets same 302 response.  Login API call working fine from the WSO2 EI. 

 

Sample Request from WSO2 EI

"POST /0/odata/Account HTTP/1.1[\r][\n]"
"Accept: application/json;odata=verbose[\r][\n]"
"X-Requested-With: XMLHttpRequest[\r][\n]"
"ForceUseSession: true[\r][\n]"
"Content-Type: application/json[\r][\n]"
"Content-Length: 228[\r][\n]"
"Host: 103594-crm-bundle.creatio.com[\r][\n]"
"Connection: Keep-Alive[\r][\n]"
"User-Agent: Synapse-PT-HttpComponents-NIO[\r][\n]"
"[\r][\n]"
"{"Name":"API Test","AccountId":"e6574af1-3e92-4099-958e-e798f52ee016","JobTitle":"Marketing manager","BirthDate":"0001-01-01T00:00:00Z","Phone":"","MobilePhone":"+1 213 566 34 22","Email":"test@gmail","Completeness":30,"Age":19}"
 

Sample Response from Creatio 

 

"HTTP/1.1 302 Found[\r][\n]"
"Server: nginx/1.14.1[\r][\n]"
"Date: Thu, 16 Sep 2021 06:21:05 GMT[\r][\n]"
"Content-Type: text/html; charset=utf-8[\r][\n]"
"Content-Length: 170[\r][\n]"
"Connection: keep-alive[\r][\n]"
"Cache-Control: private[\r][\n]"
"Location: /Login/NuiLogin.aspx?ReturnUrl=%2f0%2fodata%2fAccount[\r][\n]"
"X-AspNet-Version: 4.0.30319[\r][\n]"
"X-Powered-By: ASP.NET[\r][\n]"
"X-Frame-Options: SAMEORIGIN[\r][\n]"
"X-Content-Type-Options: nosniff[\r][\n]"
"[\r][\n]"
"<html><head><title>Object moved</title></head><body>[\r][\n]"
"<h2>Object moved to <a href="/Login/NuiLogin.aspx?ReturnUrl=%2f0%2fodata%2fAccount">here</a>.</h2>[\r][\n]"
"</body></html>

.

Like 0

Like

7 comments

It means that you are not authenticated properly in the application (see location part  "/Login/NuiLogin.aspx?ReturnUrl=%2f0%2fodata%2fAccount", you were redirected to the login page). You need to check all the cookies that are passed to the OData request that you send and compare it with cookies you get in Postman + perform more tests to see which cookie set will result in a successful call.

Oscar Dylan,

If the authentication error, it should be 401 or 403 status. But here it is always redirect to login page with 302. verified the headers from Postman and client app both, those are identical. 

Anusha,

 

That is correct - the resource was found, but you need to authenticate first (once again, pay attention to the location path /Login/NuiLogin.aspx?ReturnUrl=%2f0%2fodata%2fAccount). The system automatically redirected you to the login location.

 In Postman you receive 200 OK to the request, but before it you receive 302 response (can check in the Postman console):

Hi Oscar,

 

Thank you very much for the information, but still I'm confused authentication approach. This is what I'm doing.

 

When I get 302 for Contact endpoint, then I perform the authentication to  auth endpoint  POST call <Creation-app-host>/ServiceModel/AuthService.svc/Login with the body [1]. Then I see cookies details in the response with BPMCSRF cookie with 200 response.  Then I send again the Contact endpoint with those auth cookies, [2]  are the headers which I send to Contact endpoint again. But still same 302 redirection is there even after successful authentication. 

 

Could you please help me on this.

--- does the above approach wrong

--- does the auth headers wrong mentioned in [2]

 

If above approach wrong, please help me to find request format from the client application to complete the successful Contact create through the  client.

 

[1] body
{

   "UserName":"xxxxxxxxx",
   "UserPassword":"xxxxxxx"
}

 

[2] . Headers

 

Accept: application/json;odata=verbose[\r][\n]"
"BPMCSRF: cvHrL0GEHYdswl1QZh8Ie.[\r][\n]"
"ForceUseSession: true[\r][\n]"
"Set-Cookie: .ASPXAUTH=F82E.... "
"Set-Cookie: BPMCSRF=cvHrL0GEHYdswl1QZh8Ie."

"Set-Cookie: BPMLOADER=zchmt5tlzildsx22zlle1wnk"
"Set-Cookie: UserName=93|117|112|101|114|118|105|115|101|114"
"Content-Type: application/json; charset=utf-8[\r][\n]"
"Content-Length: 228[\r][\n]"
"Host: 103594-crm-bundle.creatio.com[\r][\n]"
"Connection: Keep-Alive[\r][\n]"
"User-Agent: Synapse-PT-HttpComponents-NIO"

 

Hi Anusha,

 

Unfortunately you have to run test and find a way to pass the cookies to the request properly in terms of your integration. For example I have this cookie header in Postman:

 

BPMSESSIONID=xjjysy25na5ig5sqbgdyxd14; visid_incap_2180455=49BJJNmNT1uK2vo4spt1YM3yQWEAAAAAQUIPAAAAAAB7xEOk/CkixDKkf1pVpwRW; .ASPXAUTH=0129CAB95F4B3C753B6B00E3BBC7F15E9F0CF094A9209DCC541E033D963163699488F8A6AF3F3F845BABCA582CE603AD00E4AC3EE005216347F4B399235033BF60A3338158451099DEC44FE8B1920F57398E4439EE170B436C75FF3BA3BFC2C28BF8BCCB6D37261D9942F97133800DFEED491B8C8671824183CF9CD2CC20549B5BF672599D3F9CAD151E6F4C92A95C7FC888E4214039842D8B53E540D03495542D8C60B238BA9759FFAE27920E7688D35C92795D59741A8D0E5B34234C6DCC769F79A176BF63CCA190D0BEC19A8ACF3793A6522866BF14A14092474BBA68D100282CE8CB6DAB3C8041DB7544EABD759617446687311CE784129E88BE2558CE2917C790372F214D6E8D05B630B789F0D37E4EBB60E06A6B0C20FE075ED78960211A017F115D32F53B2D76E9B2AF302EC3887E47FE421CA76D246B0FCD8260B25380BED735F19C87C0545187841709C5A75B5547CDF43D52304C9D4760C8E625F7DA674A74; BPMCSRF=ulHtF40aiiRNzRWk5BMTWO; BPMLOADER=mnbxfikelfxqnnl2iz0aiobd; BPMSESSIONID=xjjysy25na5ig5sqbgdyxd14; UserName=83|117|112|101|114|118|105|115|111|114

 

And I guess all of them should be also passed to your request. This is not something that can be solved on the community, you need to test your integration authentication to find a correct way.

 

Also check if your authentication in terms of your integration is configured in the similar way to the one explained here.

Hi Oscar,

 

Thanks for the information. I will check further.

 

Thanks & Best Regards

Anusha

Show all comments

Hello team,

I have the need for connect Creatio to a sql server using active directory password authentication. We need a script task that basically is using the sql connector.

From my dev environment was working OK, but installing the package in cloud server I'm getting the error the adalsql.dll is missing.

I tried to installed importing the dll but I'm getting a error. Net asambly.

Somebody face this issue before?

 

The library is https://www.microsoft.com/en-us/download/details.aspx?id=48742

And the dll is adalsql.dll or adal.sql

Like 0

Like

5 comments

Hi Feredico, 

 

We don't have practical examples of such issue. As we said before, it couldn't be performed on our side, but checking your request I found some info which might be helpful for you. Please check the solution in this article below: 

 

https://github.com/Microsoft/sql-server-samples/issues/265

 

Best Regards, 

 

Bogdan L.

Thanks Bogdan, that's require a manipulation from the server side, with in cloud environments is not posible install the library. I'm trying to import the dll using creatio but I'm getting a error of. Net asambly, no Metter with version of dll.

Federico Buffa ...,

 

We also double checked this question so this reply from Anastasiia still valid. 

 

 

Please also check this articles:

 

https://stackoverflow.com/questions/4469929/could-not-load-file-or-asse…

 

https://www.outsystems.com/forums/discussion/46739/problem-when-trying-…

 

Best Regards, 

 

Bogdan L.

Bogdan Lesyk,

The reply from anastassia requiere the dll that Im asking to install and she said is not posible. Still I dont understand what security reason can be installing a library from microsot that is allowing connect to datbase sql using AD connetions.

 

I will check the others 2 articles.

https://www.nuget.org/packages/Microsoft.Data.SqlClient.SNI.runtime/

 

Package is impossible to install in the server? Is a very well know Microsoft library and the servers are windows.

Show all comments

 Hello Team.

 

There is any way to get the value of the record in the store.loadPage?

I can access to the record parameter inside of the callback.

Terrasoft.sdk.Model.addBusinessRule("ExpensesDetail", {
	name: "GetRoleFromtheUser",
	ruleType: Terrasoft.RuleTypes.Custom,
	triggeredByColumns: ["Subcategory"],
	events: [Terrasoft.BusinessRuleEvents.ValueChanged, Terrasoft.BusinessRuleEvents.Save],
	executeFn: function(record, rule, column, customData, callbackConfig) {
 
 
		var myrecord = record;
 		var passedTheTestAndIsValid = true;
 
		var currentUser =Terrasoft.CurrentUserInfo.userId;
		var store = Ext.create('Terrasoft.store.BaseStore', {
			model: 'SMVwUserRoles'
		});
		var queryConfig = Ext.create('Terrasoft.QueryConfig', {
			columns: ['SMId', 'SMUserName', 'SMRoleName'],
			modelName: 'SMVwUserRoles'
		});
		store.loadPage(1, {
			queryConfig: queryConfig,
 
			filters: Ext.create('Terrasoft.Filter', {
				property: 'SMId',
				value: currentUser
			}),
			callback: function(records, operation, success) {
				var loadedRecord = records[0];
				if (loadedRecord) {
					var contact = loadedRecord.get('SMRoleName');                                                                                                    
					if (contact) {                                                                                                                   
						console.log(contact);
					}
					}
				},
					scope: this
			});
 
	},
	position: 3
});

 

Like 0

Like

2 comments
Best reply

Hello Federico,

 

You have the myrecord variable and it's accessible inside the loadPage method:

So you can access the record parameters if needed there.

 

Best regards,

Oscar

Hello Federico,

 

You have the myrecord variable and it's accessible inside the loadPage method:

So you can access the record parameters if needed there.

 

Best regards,

Oscar

Oscar Dylan,

 Thanks Oscar, I my case sending the scope: this was not working but changing the scope works.

Show all comments

Hello Team!

Somebody know if there is a save validation in mobile like the method in web version:

			asyncValidate: function(callback, scope){
				this.callParent([function(resultObject){
 
						resultObject.success = false;
						resultObject.message = scope.get("Resources.Strings.SummitionNoAcepted");
 
 
					callback.call(scope, resultObject);
				}], scope);
			},

I need to validate if a detail has records added before save the record.

Like 0

Like

4 comments

Hello Federico,

 

There is an onSaveButtonTap method in the base edit page controller schema that is triggered when the record is saved. There is no async validator there, but in case you need to check something for the saved record upon saving then you need to look at that method call.

 

Best regards,

Oscar

Oscar Dylan,

 Thanks Oscar. I need to create a page controller for a custom section? There is some documentation about that?

Federico Buffa ...,

 

No we don't have such an instruction unfortunately.

 

Best regards,

Oscar

Oscar Dylan,

 Thank you so much. Just wondering if that method can be use in the module config or needs to be in another schema. I don't have much information about mobile structure.

Show all comments

Hello...I'm curently setting up an Email Profile for Bulk Email & Campaigns.

 

If my understanding is GOOD :

 

CREATIO let us send a message though Bulk Email + Campaigns to :

1) a Contact PRIMARY email

2) an ACCOUNT connected to a CONTACT that has a PRIMARY Email

3) a LEAD connected to a CONTACT that has a PRIMARY Email

 

OUR CHALLENGE :

We have CONTACTS that have multiple Emails and also ACCOUNTS that have multiples Emails.

 

I want to categorize each Email with a TYPE of message that can be sent to them.

 

example 1 :  ACCOUNT emails

info@abc.com             promo

admin@abc.com         order confirmation and events invitation

Invoice@abc.com        invoices

 

example 2 :  CONTACT emails

John.Smith@abc.com      promo

J.smith@abc.com              invoives

John.smith@gmail.com    personal (do not use for mass-mailing.  Only Sales Rep)

 

 

BUSINESS REQUIREMENT :

- Each EMAIL from a CONTACT or ACCOUNT can be used.

- If a contact unsubscribe from an email...than the other EMails are not affected.

- Need to track ALL emails (bounced, Opens, clicks,...)

 

Any suggestions ???

 

You may reach me directly.

 

Francois Breault

francois.breault@vetoquinol.com

(514) 214-8183

 

Like 0

Like

6 comments

Dear Francois,

 

Unfortunately, it is not possible to use each email from contact or account as only 1 (primary) can be used upon Bulk Emails or Campaigns.

 

Best Regards,

Ivanna Yatsura.

From the Out Of The Box...That's what I thought.

 

Let's see if the following works : 

- If I put all my Emails in the LEAD section.
- If I CREATE a UNIQUE contact record for each LEAD (EX:    first name = Communication Profile   and  the lastname = of John Smith)
- If I CREATE 2 custom lookup fields (Ref-Contact and Ref-Account) in the LEAD Section

- For each LEAD...I assign the proper Contact/Account using the custom lookup fields

- If I CREATE a  custom lookup field in the LEAD object to categorize what I can send to that Email  (Promo, Invoice, Order confirmation, Newsletter,...)

 

I should now be able to create a Bulk email or Campaign,  assigning any LEADS into the audience and still have access to the CONTACT or ACCOUNT data associated to the LEAD.

 

The TRACKING of all Emails should be visible in the LEAD Section.

 

Is there anything wrong in this logic ?

 

Ivanna Yatsura,

Can you validate my proposal ?

Francois Breault,

You are thinking in the right direction. What you have described should work just fine.

As for the "Tracking of all emails visible in Lead Section". Could you please elaborate a bit on this question?

Max,

 I'd like to display when the contact has RECEIVED the message, OPENED it. CLICKED in a link, REGISTERED from a webform, DOWNLOADED a file.

 

Francois Breault,

It's possible to do this through development. 

Here is a link to the Academy article about setting up tracking of lead sources that you might find useful.

Show all comments

Hello Team!

 

There is any why to bound a localization for the values in the lookup. Example: ContactType is recording all the localizables values in SysContactTypeLcz (I would like to bound this one)

 If any one have an idea is more than welcome.

 

Regards,

 

Like 0

Like

1 comments

Federico, 

Binding localizable data using UI is not possible yet. 
Please find the instruction on how to do it using SVN here: https://academy.creatio.com/docs/developer/back-end_development/localiz…
and here:
https://academy.creatio.com/docs/developer/back-end_development/localiz…

Best Regards,
Yurii

Show all comments

Hello,

I have a contact who is a contact of two accounts.

On an order page, in my contact lookup, i can only select contact with the primary=true experience for the account (contactcareer). 

However, only one contact experience can be with the key primary at true, so for other account i can not select the contact.

Does anybody knows how to solve this issue ?

Thank you

Nicolas

 

Like 0

Like

3 comments

Dear Nicolas,

Unfortunately, it is not possible to add more than 1 primary account for contact as it is a primary one and it is the base logic.
 

Best Regards,
Ivanna Yatsura.

Ivanna Yatsura,

Dear Ivanna,

Thank you for your answer !

In an order page, is it possible to display a contact lookup displaying all contacts having the current [contactcareer] field to true.

Actually mine contact lookup field, display only contacts having the primary [contactcareer] field to true (effectivly, only one record can have the primary field to true).

Have a nice day,

Nicolas

LÉZORAY Nicolas,

 

You can achieve it by adding detail with the use of Business Rules to show only needed contacts.

Best Regards,
Ivanna.

Show all comments