package
8.3.1
Development
merge
object
Sales_Creatio_enterprise_edition
8.0

How can I properly merge 2 replacing Object schemas that are in different packages so that we can just end up with a single replacing Object schema in the desired package?

 

Say for example we have a replacing schema for Contact in one package, and another replacing schema for Contact in another package. Each of these changes adds 1 column, let's say UsrColumn1 in Package A and UsrColumn2 in Package B. In order to clean up the package structure, we want to merge this all into Package A, so there will be only 1 replacing Object schema for Contact. How can we go about doing this in Creatio?

 

Recreating the column in the Package A replacing Object schema will not be ideal, as there are BPs and other areas that may use the Colum UId, which would be different if recreating the same column name in Package A, so this will lead to breakages that have to be fixed on a case by case basis. Not tenable if there are more changes than just this toy example.

 

Would it be possible to merge them manually using the metadata's "Modifications" editor? As this allows editing and saving, so perhaps this is the expected way? The Modifications metadata also appears to be what gets saved to the file system in FSD (fileDesignMode), so it seems the most likely answer. This isn't great for ensuring every change is merged, as there seems to be a lot of "noise" in terms of lines that don't actually appear to be specific changes made in that replacing schema, but might be ok for basic column moving.

 

Are there any other options I'm missing? It would be so useful to have this kind of merging built into the platform, but I'm guessing it's not available to us.

Like 6

Like

9 comments
Best reply

best way for me. on development/sandbox system

  1. export schema metadata from both packages (save it for backup)
  2. open both schema metadata in editor (Visual Studio or any other)
  3. move desired columns from source schema to target. target package in my cases is lower in hierarchy (higher - if you look on Package Hierarchy in )
  4. change values of PackageUId (A5) in every column metadata
  5. change values of SchemaUId (A3,A4) in every column metadata
  6. add UId of moved columns to ~ MetaData.Schema.D2 array
  7. move all localizable values for moved columns from source schema to target
  8. import source schema metadata
  9. import target schema metadata
  10. generate source code for both (may be better for all same schemas)
  11. update database structure (target schema - first, cause it contains moved columns, then source schema)
  12. if everything good - compile all
  13. if not - import backed up schema metadata

    check data in moved columns

    if everything good: install app, containing both packages to the pre-prod system, check data in DB tables, check localizable values for column title, business-processes, may be pages. install to the prod system

    if you have source package and target package in different apps or there are standalone packages, - install target package first to avoid data loss

+1

+1

+1

Quick update on what I found when attempting manually merging the Objects' metadata (using the "Modifications package" area):

  1. It seems to work for the most part with a very simple change (2 columns in my case)
  2. It is time-consuming checking through the cryptically-named values and trying to cross-reference against the "Metadata (Ready-Only)" area, and liable to mistakes
  3. Some parts I just ended up ignoring the differences on, e.g. on Contacts there was a lot of supposed changes to "SynchronizeAnniversary" items, that were under MetaData.Schema.EG1.BK15 in the modifications package (MetaData.Schema.EventsProcessSchema.Mappings array in "Metadata (Read-Only)" area) as I don't believe there were any changes made there. This seems like it could be a point where things fall down though.
  4. One thing that isn't stored in the "Modifications package" diff is Localizable strings, so field names can't be manually merged in this way. I fixed this ad-hoc by setting the field names for the moved columns, but it's obviously not ideal. An alternative approach worth considering is exporting the Object schemas (resulting in a .md file) and doing a manual merge there, before re-importing into the desired package, as the .md files do have the localizable strings in them
  5. Another pitfall of this method was that some of the data couldn't just be copied over from the to-be-removed Object to the surviving Object, it had to be modified. Namely the "A3" and "A4" properties (corresponding to CreatedInSchemaUId and ModifiedInSchemaUId) as not setting them to the target package's UId's would throw errors when publishing the surviving Object

I might update further on attempting a .md file merge of a slightly more complicated setup.

Overall, it definitely doesn't seem to be an ideal way to perform this for more substantial sets of changes. Really would benefit from information from Creatio about how they would advise this to be done.

best way for me. on development/sandbox system

  1. export schema metadata from both packages (save it for backup)
  2. open both schema metadata in editor (Visual Studio or any other)
  3. move desired columns from source schema to target. target package in my cases is lower in hierarchy (higher - if you look on Package Hierarchy in )
  4. change values of PackageUId (A5) in every column metadata
  5. change values of SchemaUId (A3,A4) in every column metadata
  6. add UId of moved columns to ~ MetaData.Schema.D2 array
  7. move all localizable values for moved columns from source schema to target
  8. import source schema metadata
  9. import target schema metadata
  10. generate source code for both (may be better for all same schemas)
  11. update database structure (target schema - first, cause it contains moved columns, then source schema)
  12. if everything good - compile all
  13. if not - import backed up schema metadata

    check data in moved columns

    if everything good: install app, containing both packages to the pre-prod system, check data in DB tables, check localizable values for column title, business-processes, may be pages. install to the prod system

    if you have source package and target package in different apps or there are standalone packages, - install target package first to avoid data loss

Thanks Oleksandr, that more or less matches the approach I just did with the .md file (the file you get when exporting an individual schema) so glad to hear you have gone down this route and it seems to work. Very manual process though, especially when you see changes you don't expect to see like I was seeing with the SynchronizeAnniversary object ProcessSchemaMapping elements. Would be very useful to have this functionality built into the system!

+1

Hello,

Thank you for your idea. At the moment, we do not have user tools available for merging schemas.

We have created a task for the development team to review this suggestion and consider implementing it in future updates.

Regards,
Orkhan

Orkhan,

Thanks Orkhan, it seems to be a relatively popular request - I expect due to the changes in how Creatio handles custom development by creating new packages automatically in many cases, which are then often wanted to be condensed into a proper package structure for bundling into an app for deployment. Hope all this context will be conveyed in the dev task for consideration.

Show all comments
FreedomUI
Development
Client-side
marketplace
Studio_Creatio
8.0

Hello guys, I'm fairly new to Creatio, but I've seen there are a couple of functionalities that are missing. Some have never existed in Creatio and some others were in Classic but not available anymore. 

Right now I'm interested in calculated metrics, but for freedomUI. And maybe something similar for DataGrids

From what I see, It's seems possible for developers to make their own add-ons to provide certain functionalities and probably later put in on the marketplace.

 

I guess the normal procedure is reading the source code of the base packages of Creatio and seeing how you could edit them by importing/exporting/extending classes. Probably would help to downloa other marketplace freedomUI products and trying to see how did they do it

 

But well, I was wondering if someone that has had any experience in it maybe has some tips available before embarking into that journey

Like 1

Like

1 comments

Hello,

 

At this time, we don’t have a Calculated Metrics add-on that supports the Freedom UI. However, this functionality is on our development roadmap and is anticipated for release in versions 8.3-8.4, as it relies on advanced calculation features currently in progress for 8.2-8.3.

You can also take a look at the Custom Freedom UI page components article that provides instructions on developing your own components:

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

Show all comments
Discussion
clio
Git
Development

 

Hello, the new T.I.D.E. version 1.2.1 received support work with branches

Now you can load the list of branches from your git repository and load packages from branch to environment

 

 

P.S. The next release will include the ability to link your app to a new repository and create branches directly from Creatio.

 

2 comments

pr and conflict resolver editor to add :)  make creatio a git client

Dmytro Oliinyk,

Hi, thanks for your interest. Now, we plan more deep integration with GitHub, Bitbucket, and GitLab and their tools. But in the future, it can be included inside the T.I.D.E. or even as part of a Creatio platform. 

Show all comments
date
FreedomUI
tasks
Lead
Javascript
Activity
parameter
Development
Studio_Creatio_enterprise_edition
8.0

Hello Community,

We have created a button in Leads_FormPage that opens AddTaskMiniPage

Code in Leads_FormPage that opens the AddTaskMiniPage

  {
        request: "usr.OpenTaskModalPageRequest",
        handler: async (request, next) => {
            const handlerChain = sdk.HandlerChainService.instance;
            await handlerChain.process({
                type: 'crt.OpenPageRequest',
                schemaName: 'AddTaskMiniPage',
                $context: request.$context,
                scopes: [...request.scopes]
            });
            return next?.handle(request);
        }
    }		,

 

Our end goal: We want that upon the Activity is created (Save button clicked in AddTaskMiniPage) the value of 'Start' field in AddTaskMiniPage, is copied to another Date field in the Leads_FormPage.

How can this be acheived?

Regards

Sasor

Like 0

Like

3 comments

Hello Sasori,

You can try using BP for this case. For example, when you save a record in a mini page, you also run a business process that will update a value in your lead record. You pass date value to the BP and set (update) relevant field in the lead record. 
 

An easy way to accomplish this is to just use a process with a signal of Activity added with Type=Task, Category=To do, Lead is filled in. Then update the lead with the date. If you have live data updates enabled for the Lead object you'll even see the screen refresh with the value. 

Ryan

Ryan Farley,

Thank you for your input! However, the challenge with this approach is that there might be multiple activities associated with a single Lead that have this specific configuration (Type = Task, Category = To Do, Lead is filled in).

Would it be possible to handle this scenario directly via the Frontend instead?

Looking forward to your thoughts!

Show all comments
local
Development
VisualStudioOnline
debugging
client code debugging
debug
7.12

Hi everyone!

 

I'm a brand-new developer in Creatio. I've installed the app on my local IIS, and it works fine. Now, I'd like to start debugging/developing in Visual Studio, but I haven't been able to find any useful documentation. Could someone explain the steps in simple terms? Thanks!

Like 1

Like

2 comments

Development tools | Creatio Academy

External IDEs | Creatio Academy

Back-end debugging | Creatio Academy

I'd be interested to know what instructions you followed to install the app.

Gareth Osler,

Thanks for links! 

I followed this :
https://www.youtube.com/watch?v=lf-yWsJ4p0Q&list=PLnolcTT5TeE3v8WGd3Vql…

Show all comments
local instance
Development
Sales_Creatio
8.0

Hello everyone,

We’re currently using Creatio 8.XX as a SaaS solution. I’d now like to set up Creatio in my local environment for development purposes. Could anyone guide me on where I can download Creatio for local installation? I couldn’t find a download link for a zip file in the documentation.

Thanks!

Like 0

Like

1 comments

Contact support and they can provide the installation files.

Show all comments
Development
dependencies
8.1
8.1.3
npgsql
.net6.0
namespace

Problem Description
I'm trying to integrate an external .NET library (Npgsql) into my custom Creatio package to connect with a PostgreSQL database. However, I'm encountering version compatibility issues with System.Runtime.

 Current Setup
- Package Name: UsrWebServiceLog
- Target Library: Npgsql
- Current Error:
 

Assembly 'Npgsql' with identity 'Npgsql, Version=8.0.5.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7' uses 'System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' which has a higher version than referenced assembly 'System.Runtime'

 What I've Tried
1. Adding the library reference directly to my package project
2. Attempting to use an older version of the library
3. Adding System.Runtime reference

 Questions
1. What is the correct approach to include external .NET libraries in a Creatio custom package?
2. Are there specific version requirements or limitations I should be aware of?
3. Should the library be installed at the workspace level or package level?
4. Is there a specific location where external DLLs should be placed?

 Code Context
I'm trying to implement a web service that connects to PostgreSQL:

namespace Terrasoft.Configuration.UsrPostgressConnection
{
   [ServiceContract]
   public class UsrPostgressConnection : BaseService
   {
       // Service implementation
   }
}

Any guidance on best practices for managing external .NET dependencies in Creatio would be greatly appreciated. Thank you in advance!

 Environment Details
- Creatio Version: 8.1.3
- Development Environment: On-site
- .NET Framework Version: 4.7.2

Like 1

Like

2 comments
Best reply

Kyrylo Atamanenko,

According to your suggestion, it might function if I use an older version of the Npgsql driver.

Hello!

 

Actually this issue occurs because Npgsql assembly (version 8.0.5) depends on System.Runtime version 8.0.0, which is a newer version than the System.Runtime the version currently referenced in your project.

 

.NET Framework 4.7.2 does not support System.Runtime version 8.0.0, as this version of System.Runtime is associated with .NET 8, which is part of the .NET (formerly .NET Core) family, not .NET Framework.

The highest System.Runtime version that .NET Framework 4.7.2 supports is within the 4.x series. .NET 8.0 and its libraries, including System.Runtime version 8.0.0, are compatible only with .NET Core 8 / .NET 8 or higher.

Kyrylo Atamanenko,

According to your suggestion, it might function if I use an older version of the Npgsql driver.

Show all comments

Hi everyone,

I need to add validation checks and perform calculations on certain fields when the "Save All" button is clicked in a specific detail. 

Could you please guide me on how to add custom code to this button's click event? 

Which handler should I implement or override to achieve this?

Thanks in advance for your help!

Like 0

Like

3 comments

Hello Rachel,

When you click "Save All" button crt.SaveRecordsRequest is called.
Override this handler by implementing your version of it with logic you need.

Hope this helps 

Yevhenii Grytsiuk,

Thank you very much for your answer!
I tried using the crt.SaveRecordsRequest handler, and it works great!

 

I have another question, if you don’t mind:

Which handler is called when the user clicks the "New" button in a detail that has the "Inline adding records" option enabled?

 I’m referring to this button:

 

 

 

By the way, I noticed the image you previously shared didn’t load correctly. Could you please resend it? I’m very interested in understanding this feature better.

 

Also, is there a consolidated resource where all these handlers are documented? I noticed that the Academy only covers documentation for basic handlers.

 

Thanks again for your help!

Rachel

 

 

Hi everyone,

Just checking for updates on the "New" button handler in a detail with "Inline adding records." 

Thanks!

Show all comments
Development
8.1
Queue
DCM
Business Process
Service_Creatio_customer_center_edition
8.0

Hello!
I have encountered such problems, maybe someone knows how to solve them?

There is a configured queue and a process that processes a queue item.

 

 

The first problem is that when opening the Cases_FromPage page the Case state is not loaded into the progress bar

 

 

The second problem I encountered is that it is necessary to close the page automatically and terminate the process element so that the queue element is considered processed, but this problem is solved with the help of this request:

{
	request: "crt.HandleViewModelInitRequest",
	handler: async function(request, next) {
		this.applyMethods(request.$context);
		await next.handle(request);					
	},
	applyMethods: function(context) {
		let methods = {
			closeProcessElement: async function() {
				const state = window.history.state;
				if (state && state.isProcessCardInChain && state.executionData && state.executionData.isOpened) {
					const executionData = state.executionData;
					const result = await context.executeRequest({
						type: "crt.CompleteProcessElementRequest",
						processElementUId: executionData.currentProcElUId,
						$context: context
					});
				}
			}
		};
		Ext.apply(context, methods);
	}
},

 

But another problem arose when changing the Case stage, in this case manually, the page doesn't always close.

I noticed that this behaviour on those stages where DCM has elements of activity creation.

In my case here:

When changing the stage from Waiting for Evaluation to Evaluation, the page should have closed.

The crt.CompleteProcessElementRequest request was executed.

Who knows what could be the problem?
Thanks!

Like 0

Like

1 comments

Hello,

 

Please contact our support team directly at support@creatio.com and make sure to describe each problem in a separate request so we could properly analyze and process these issues.

Show all comments
Development
FileSystemDevelopmentMode
ApplicationHub
install package
sourcecode
8.0

Hey. I've been working with Creatio for some time already. And I've been facing an issue. The issue is not picking up on changes that were added to the files already added to the package when uploading a new version of a package on any environment. I am talking about .cs files, in other words, the source code type of Creatio files. So, when I finish fixing some bugs with the package locally, I go to the dev env. to upload the package there. I do the uploading via `ApplicationHub` page via `install from file`. So, the issue happens only when the previous package version is installed and I want to update with the newer version. If I remove the previous version and upload a new one, all new changes are picked up.

Like 0

Like

1 comments

Hello!

 

In this case, it could be two possible options as to why it happens:

 

1. It can happen if the schema has a more fresh ModifiedOn date in configuration, for example, if it was recently modified directly on the environment; if so, the schema won't be updated.

2.  Sometimes, the schema updates only after full compilation. so the steps will be install package -> full compilation -> check the schema.

 

If the issue would still reproduce, contact us at support@creatio.com.

Show all comments