Hi,



Did anyone experienced the same thing as I am?



I am trying to import data (from dev) to a custom object after deploying it to Client in production but gives no sign of completion or any error.



Section > Data Import > Upload file > Close.



While doing this, I am actively checking console and network to check for any signs of error but it doesn't have any. Its been more than >40 minutes for a 2 row entry I exported from dev.



Any possible reason?



Creatio Version: 8.1.1.3635



Thank you.

Like 0

Like

1 comments

Hello!

 

Please create a separate request to the Support Team via support@creatio.com and provide all these details. 

 

Best regards, Mariia

Show all comments

Dear,

We can not add or edit business rules on our custom Order Product Detail, the system return the following error : 

Unable to modify business rules because the "Edit card - Product in order" page source code contains invalid json symbols. Your system administrator will have to delete these symbols. After the mentioned above symbols have been deleted, you need to re-open the wizard, and business rules will be available for edit.

I tryed to remove all the code in our custom orderProduct detail :

=> the system still returns the error

Does anyone have any ideas to fix the problem ?

Thank you,

Nicolas

Like 0

Like

2 comments

Just throwing out some ideas. Maybe there's some non-printable character that got posted in somewhere? I'd try pasting the contents to a text editor that can show non-printable chars (such as Notepad++).

Also, maybe look at the resource strings? Maybe there's a resource name with some weird char?

Thank you Ryan for your answer, i ve check what you advise me to check, but i did not find any problem.

We are having two OrderProductPageV2 in two separate package: Custom and Custom_transfert, we removed all business rules in the OrderProductPageV2 in Custom_transfert and surprisingly we can edit the orderProductDetail business rules...

Thank you again for your help !

Show all comments

Hello, 



Do you know how to bind data for column permission in package? I have to bind the highlighted records in package. 



 

Like 4

Like

1 comments

Hello,

 

SQL scripts can be utilized to implement the transfer of organizational structure settings and access rights from one environment to another. To do this, insert queries need to be generated on the reference environment based on records from the following tables:

  • SysAdminUnit (Administration object: users and roles)
  • SysUserInRole (Direct user role assignments)
  • SysFuncRoleInOrgRole (Functional role assignments to organizational roles)
  • SysAdminOperation (System operations, if necessary)
  • SysAdminOperationGrantee (Access to system operations, if necessary)
  • SysEntitySchemaOperationRight (Access to objects)
  • SysEntitySchemaRecordDefRight (Access to default records)
  • SysEntitySchemaColumnRight (Access to object columns)
  • SysAdminUnitGrantedRight (Delegation)
  • SysWorkplace – (User workplace)
  • SysAdminUnitInWorkplace – (Users in the workplace)
  • SysModuleInWorkplace – (Module in the workplace)

You can use Microsoft SQL Server Database Publishing Wizard or similar tools to generate queries. The resulting SQL script should be attached to the package. If the transfer is happening to a production environment, we recommend making a backup of the data beforehand and primarily deploying the package to a test environment to verify the script execution results. These tasks should be performed outside of business hours.

 

Show all comments

Is it possible to restrict the "Owner" filter for Timeline components to only show Contacts which match a specific filter condition? We are currently seeing every Contact as an option, but for us this should be restricted to only Contacts which have a User record associated with them, and ideally we'd want to add some more customisation to the filter options beyond this.

Like 0

Like

9 comments
Best reply

I've discovered that it's possible to add this using code. To do so, you need to override the crt.LoadDataRequest handler and use the following code:

{
	request: "crt.LoadDataRequest",
	handler: async (request, next) => {
		// Filter Timeline's Owner filter to just Contacts with a User record
		if(request.dataSourceName === "ByOwnerQuickFilterInTimeline_xi3lpgm_ComboBox_List_DS") {
			const filter = new sdk.FilterGroup();
			await filter.addExistsFilter("[SysAdminUnit:Contact:Id].Id");
 
			// workaround for filters
			const newFilter = Object.assign({}, filter);
			newFilter.items = filter.items;
 
			request.parameters.push({
				type: "filter",
				value: newFilter
			});
		}
 
		return await next?.handle(request);
	}
},

You have to replace the name of the Timeline component in the above code from Timeline_xi3lpgm to whatever the component is called on your page.

Hello Harvey,



There is no such option for now, however, we've registered it in our R&D team backlog for consideration and implementation in future application releases.

 

Thank you for helping us to improve our product. 

Thanks Bogdan, it's definitely a feature that's needed - having every Contact show up in the Owner filter with no way to change this on a CRM platform isn't ideal.

I've discovered that it's possible to add this using code. To do so, you need to override the crt.LoadDataRequest handler and use the following code:

{
	request: "crt.LoadDataRequest",
	handler: async (request, next) => {
		// Filter Timeline's Owner filter to just Contacts with a User record
		if(request.dataSourceName === "ByOwnerQuickFilterInTimeline_xi3lpgm_ComboBox_List_DS") {
			const filter = new sdk.FilterGroup();
			await filter.addExistsFilter("[SysAdminUnit:Contact:Id].Id");
 
			// workaround for filters
			const newFilter = Object.assign({}, filter);
			newFilter.items = filter.items;
 
			request.parameters.push({
				type: "filter",
				value: newFilter
			});
		}
 
		return await next?.handle(request);
	}
},

You have to replace the name of the Timeline component in the above code from Timeline_xi3lpgm to whatever the component is called on your page.

Harvey Adcock,

good find, thanks!

You should mark your own answer as solution ;)

Harvey Adcock,

Well done! Thanks for sharing this Harvey. 

Also, if you've moved to 8.1.1 you no longer need the filters workaround - it's finally working properly in 8.1.1, just thought I'd mention.

Ryan

Ryan Farley,

Ahh great to hear, thanks for the info Ryan - and thanks for spreading the info about that workaround in the first place!

I'd like to share my solution on lookup filtering.

We wanted to have only contacts from our company and in certain functional role.

{
	request: "crt.LoadDataRequest",
	handler: async (request, next) => {
		if (request.dataSourceName !== "FbContact_List_DS") {
			return await next?.handle(request);
		}
 
		const ourCompanyFilter = new sdk.CompareFilter(
			sdk.ComparisonType.Equal, 
			new sdk.ColumnExpression({
				columnPath: "Account.Type"
			}), 
			new sdk.ParameterExpression({
				value: Constants.AccountType.OurCompany
			})
		);
 
		const funcRoleFilter = new sdk.CompareFilter(
			sdk.ComparisonType.Equal, 
			new sdk.ColumnExpression({
				columnPath: "[SysAdminUnit:Contact:Id].[SysUserInRole:SysUser:Id].SysRole.Id"
			}), 
			new sdk.ParameterExpression({
				value: Constants.FunctionalRole.MyCustomFunctionalRole
			})
		);
 
		request.parameters.push({
			type: sdk.ModelParameterType.Filter,
			value: ourCompanyFilter
		});
 
		request.parameters.push({
			type: sdk.ModelParameterType.Filter,
			value: funcRoleFilter
		});
 
		return await next?.handle(request);
	}
}

 

Alex Zaslavsky,

Interesting, it hadn't occurred to me to push multiple filters to the parameters. I've always added the multiple filters to a FilterGroup and then added the group to the parameters. I guess it's an array for a reason :) Nice to know it works that way as well.

Ryan

Hello , 

Can we set a current user as a default in timeline quickfilter ? 

Show all comments

please help me what is causing this error   

#docker logs b6f87859e923

Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.

   at Terrasoft.EventSourcing.Configuration.EventStoreUtitities.GetEventSourcingConfiguration(Configuration configuration) in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.EventSourcing/Configuration/EventStoreUtitities.cs:line 70

   at Terrasoft.WebHost.ApplicationModule.SetupEventStore(IServiceCollection services) in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.WebHost/ApplicationModule.cs:line 227

   at Terrasoft.WebHost.ApplicationModule.Configure(IServiceCollection services) in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.WebHost/ApplicationModule.cs:line 351

   at Terrasoft.Core.DI.AutofacContainerBuilder.Build() in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.Core.DI/AutofacContainerBuilder.cs:line 63

   at Terrasoft.Core.DI.ContainerBuilder.Build() in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.Core.DI/ContainerBuilder.cs:line 100

   at Terrasoft.Core.DI.ServiceProvider.ServiceProviderFactory.CreateServiceProvider(ContainerBuilder containerBuilder) in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.Core.DI/ServiceProvider/ServiceProviderFactory.cs:line 23

   at Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1.CreateServiceProvider(Object containerBuilder)

   at Microsoft.Extensions.Hosting.HostBuilder.CreateServiceProvider()

   at Microsoft.Extensions.Hosting.HostBuilder.Build()

   at Terrasoft.WebHost.Program.StartWebApplication(String[] args) in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.WebHost/Program.cs:line 26

   at Terrasoft.WebHost.Program.<>c__DisplayClass2_0.b__0(StartOptions _) in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.WebHost/Program.cs:line 62

   at CommandLine.ParserResultExtensions.MapResult[T1,T2,TResult](ParserResult`1 result, Func`2 parsedFunc1, Func`2 parsedFunc2, Func`2 notParsedFunc)

   at Terrasoft.WebHost.Program.Main(String[] args) in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.WebHost/Program.cs:line 59

Like 1

Like

1 comments

Hello,

 

Please check your binary files and connection string.

 

To get started, run the application outside of Docker directly on Linux.

Show all comments

Hello,

 

I have a web service that generates a file. I need to attach that file to a record. I see there is an option to the Process File Component passing a File as parameter, but the Parameter is Expecting a IFileLocator. How can I use a script to create a IFileLocator from a full file path on Creatio Studio version 8.1? 

 

Thanks,

Jose

File attachments
Like 0

Like

2 comments
Best reply

Hello,

You should use a script task to work with files from the web service.

 

More details about the API file:



https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platfor…

Hello,

You should use a script task to work with files from the web service.

 

More details about the API file:



https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platfor…

Thanks Cherednichenko. Using the information provided I wrote the C# below to attach a generated file to a record.



public void AttachFile(string schemaName, Guid recordId, string fullFilePath) {

            /* Create a unique ID for the new file. */

            Guid fileId = Guid.NewGuid(); 

            /* Create a file locator for the new file. */

            var fileLocator= new EntityFileLocator("SysFile", fileId); 

            /* Get an IFile object for the new file. */ 

            IFile file = UserConnection.CreateFile(fileLocator); 

            /* There is no file metadata or file content in the available file storages. Specify the file name in the file metadata. */

            file.Name = (new System.IO.FileInfo(fullFilePath)).Name; 

            /* Set an attributes for the new file: */

            file.SetAttribute("RecordSchemaName", schemaName); 

            file.SetAttribute("RecordId", recordId);             

            /* Save the file metadata Do this BEFORE saving the content. */

            file.Save(); 

            using (var sourceStream = new FileStream( fullFilePath, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize: 4096, useAsync: true)) {

                file.Write(sourceStream, FileWriteOptions.SinglePart);            

            }

        }

Show all comments

Hi,

I have to provide Field Permission to a detail connected with  a Section in Freedom UI?

Can anyone knows how to do that?

Like 0

Like

3 comments

Hello,

 

Please describe your business idea in more detail so we could provide the best suitable solution for you.

Mira Dmitruk,

I have created  a Section and  provided them field level permission for Some roles. In that Section we have some details used. I have to give field level permission to  the fields of detail and this detail is used in  both Contact and Org Page and having different permission on field .So how I can give that? 

Hello,



You can configure column rights in the Object permissions section.



https://academy.creatio.com/docs/8.x/setup-and-administration/administr…

Show all comments

Dear colleagues,

 

I'm trying to found the system settings or whatever I need to bind the desktop configuration

 

Please Help

 

Thanks

Julio

Like 2

Like

4 comments

Hello Julio,

1) Choose the needed Desktop on the welcome screen in right bottom corner and click the settings button

2) Add the new Chart, click "Set up chart" and fill ALL required fields inside of modal window. Save the page.

3) Check in DB is record created successfully by this query (ChartWidget_r2b2wf3 - your widget name):

select  * from SysLocalizableValue
where [Key] like '%ChartWidget_r2b2wf3%'
order by ModifiedOn desc

4) To add image - open settings of the new Desktop (right top corner </> sign) and add "Images"

5) Open Advanced Settings Page, find the new Package with new Desktop, click "+ Add" -> Data. Here we have to create two connections:

5.1 Object - Desktop. BOUND DATA - name of Desktop

5.2 Object - SysLocalizableValue. BOUND DATA - Key  = "ChartWidget_r2b2wf3" (Widget name from Step 3), choose all of them

 

In the end you'll have new package with 3 files inside (1 Module and 2 Data)

P.S. If on the step 5 you'll receive any errors - do Flushall in Redis.

Thanks Anhelina and sorry, no-code?

Also, my instance is cloud, I have not access to db, is another way to bind this?

Julio Falcon (Cibernética),

It's a no-code method. You need DB only for step 3 but you can replace it by checking if "ChartWidget...." appeared in the Desktop settings list of strings (Advanced Settings -> enter the name of your new Desktop in search panel -> Left panel with different settings -> Open Localizable strings).

Show all comments

Hi everyone,

 

is there a button that can navigate on the record's form page to the next record's form page, which is previously filtered by list setups? 

 

Thanks, Timea

Like 0

Like

2 comments

Hi timea , 

you can use "crt.OpenPageRequest" handler to open specific page onbutton click .

 

request.$context.executeRequest({
 
    type: "crt.OpenPageRequest",
 
    $context: request.$context,
 
    schemaName: "UsrCaseStatus_ModalPage",   
 
    modelInitConfigs: [
 
        {
 
            action: "edit",
 
            recordId: caseId            //RecordId of the page
 
        }
 
    ]
 
});





Thanks.

Hello,

Unfortunately, such functionality is not implemented in the application.

 

We have submitted a request to the development team to assess the possibility of implementing such functionality in the product.



Thank you for helping us make our product better!

 

Best regards,

Pavlo!

Show all comments

Hi everyone,

 

Is there a way to display the "add next steps" button/functionality for each record in the list view, so that you can add a task to that record with the pre-filled values without opening that record? 

 

Thanks, Timea

Like 2

Like

2 comments
Best reply

Hello,



I have discussed this request with the Product Owner.

As for now, there is no such functionality.



We have already registered the idea for our R&D team to implement this functionality in further releases.



Thank you for this suggestion, this helps to make our product better!

Love the idea

Hello,



I have discussed this request with the Product Owner.

As for now, there is no such functionality.



We have already registered the idea for our R&D team to implement this functionality in further releases.



Thank you for this suggestion, this helps to make our product better!

Show all comments