Hi community,

 

In my UAT environment, I revoked a user's system administrator permission by removing him from the "system administrators" role.

The user continues to have the same system administrator permission.

I have tried clear the redis cache, but the problem persists.

 

 

Like 0

Like

2 comments

Hi Stefano,

 

I had a similar problem, in case the problem was that the was not sys admin but was manager of a user with sysadmin role.

And being a manager you inherit the roles and the users you are managing.

 

hope it helps,

Luis

Luis Tinoco Azevedo,

thank you Luis for your suggestion

Show all comments

Hello community,

 

I am using perform task inside section cases. The task updates the entity stage. After the stage is updated from the task I want to catch this event and reload the entity from the client side. I tried using the following approach but nothing happens

"Stage": {
				dependencies: [
					{
						columns: ["Stage"],
						methodName: "onChangeStage"
					}
				]
			}

The below script is called only when the stage is updated directly from the client side and not from a task or a business process. Is there a way to catch this event from the client side?

Like 0

Like

1 comments
Best reply

Since the automatic changing of a stage happens outside of the context of a page, you won't receive any events from the change on the page itself. 

The only option is to either use a process, entity subprocess or entity event listener class (and starts with a signal of case modified in stage field) and if it's changed to the appropriate stage you send a signal to the client. You can see how to send a message from the server (such as from a process) to the client here: https://customerfx.com/article/sending-a-message-from-server-side-c-to-…

You'll add code to the page to listen for this message and then reloadEntity to refresh the page. 

BTW, if you want to use an entity event listener class instead of a process, I've outlined how to do that here https://customerfx.com/article/adding-code-to-listen-for-entity-events-… although using a process is quick and easy.

Ryan

Since the automatic changing of a stage happens outside of the context of a page, you won't receive any events from the change on the page itself. 

The only option is to either use a process, entity subprocess or entity event listener class (and starts with a signal of case modified in stage field) and if it's changed to the appropriate stage you send a signal to the client. You can see how to send a message from the server (such as from a process) to the client here: https://customerfx.com/article/sending-a-message-from-server-side-c-to-…

You'll add code to the page to listen for this message and then reloadEntity to refresh the page. 

BTW, if you want to use an entity event listener class instead of a process, I've outlined how to do that here https://customerfx.com/article/adding-code-to-listen-for-entity-events-… although using a process is quick and easy.

Ryan

Show all comments

Hello Creatio community !

I would like to call the Creatio Webservice ..../0/rest/FinAppSpecService/InheritSpecificationsForFinApp  which automatically populates the Product Terms in Application, inside a Business Process. I can not call it in a c# class because the the constructor of FinAppSpecService class does not accept UserConnection as e parameter. Which is the proper way to solve this problem ?

Like 1

Like

11 comments
Best reply

Hello Petrika,

 

It's possible if you create a webservice record where the POST method complete address will be {siteURL}/0/rest/FinAppSpecService/InheritSpecificationsForFinApp and in the request parameters specify the following header parameters:

 

BPMCSRF

ForceUseSession (default value set to true)

Connection (default value set to true)

 

and the following cookies parameters:

 

BPMSESSIONID

UserName

BPMLOADER

BPMCSRF

.ASPXAUTH

 

in the webservice settings (since the FinAppSpecService service is not anonymous). The most difficult part here is setting cookies parameters. I could only recommend the following scenario here:

 

1) Create a separate authentication service webservice request (to {siteURL}/ServiceModel/AuthService.svc/Login)

2) Specify UserName and UserPassword request body parameters:

3) Add the Set-Cookie response header parameter:

4) Validate the response by performing a test call. It should return the Set-Cookie header that will be then used in the process:

5) Create a separate business process and configure it to run once per hour or once per half a day (depending on the value of the "UserSessionTimeout" system setting). The set-Cookie response header should be parsed to extract values for the

 

BPMSESSIONID

UserName

BPMLOADER

BPMCSRF

.ASPXAUTH

 

headers. It can be done by means of the script-task. Extracted values should be set as values for the system settings created separately (one per each header).

 

6) In your process where you need to call the FinAppSpecService in the "Call webservice" element set the values for the cookie parameters as values from the system settings from step 5. And also specify the value for the BPMCSRF header parameter.

 

7) Add all other request body parameters and call the service.

 

This approach should work since we simulate the Postman call of the same service, but set cookie parameters and header parameters via the separate business process and system settings.

 

Best regards,

Oscar

Hello Petrika,

 

It's possible if you create a webservice record where the POST method complete address will be {siteURL}/0/rest/FinAppSpecService/InheritSpecificationsForFinApp and in the request parameters specify the following header parameters:

 

BPMCSRF

ForceUseSession (default value set to true)

Connection (default value set to true)

 

and the following cookies parameters:

 

BPMSESSIONID

UserName

BPMLOADER

BPMCSRF

.ASPXAUTH

 

in the webservice settings (since the FinAppSpecService service is not anonymous). The most difficult part here is setting cookies parameters. I could only recommend the following scenario here:

 

1) Create a separate authentication service webservice request (to {siteURL}/ServiceModel/AuthService.svc/Login)

2) Specify UserName and UserPassword request body parameters:

3) Add the Set-Cookie response header parameter:

4) Validate the response by performing a test call. It should return the Set-Cookie header that will be then used in the process:

5) Create a separate business process and configure it to run once per hour or once per half a day (depending on the value of the "UserSessionTimeout" system setting). The set-Cookie response header should be parsed to extract values for the

 

BPMSESSIONID

UserName

BPMLOADER

BPMCSRF

.ASPXAUTH

 

headers. It can be done by means of the script-task. Extracted values should be set as values for the system settings created separately (one per each header).

 

6) In your process where you need to call the FinAppSpecService in the "Call webservice" element set the values for the cookie parameters as values from the system settings from step 5. And also specify the value for the BPMCSRF header parameter.

 

7) Add all other request body parameters and call the service.

 

This approach should work since we simulate the Postman call of the same service, but set cookie parameters and header parameters via the separate business process and system settings.

 

Best regards,

Oscar

Thank you very much for you response Oscar. It was very helpful.

Is there any article or example in the academy regarding point 5, parsing set-Cookie response header to extract values (inside a script task) ?

Petrika,

 

This is the task that should be covered by the C# code, using substring method for example. It's something as if you had a task to substring the "test" word from the "Hello test wordl!" string. Please find the way using the topics as the following:

 

https://stackoverflow.com/questions/9505400/extract-part-of-a-string-be…

 

Please also notice that the cookies values length is always constant and all of them start with the cookie name and the "=" character and end with the ";" symbol. This shouldn't be a difficult task.

 

Once string parts are extracted you can set them as parameter values (here is the Academy article that may be useful) and use these parameters in formulas to set parameter values to correspondent system settings.

 

Best regards,

Oscar

Oscar Dylan,

BPMSESSIONID is generated in the set-Cookie response header, because it seems that it's not found there ? I managed to extract everything else as required

Petrika,

 

Sorry, made a little mistake. BPMSESSIONID cookie is not returned as a response to the /AuthService.svc/Login call, but as a result of the first call to any other working endpoint like /0/odata/Account after authentication. Just try it in Postman and check the response headers in the next request that goes after AuthService request.

 

Best regards,

Oscar

Oscar ,

When i make a request from postman to another web-service the BPMSessionId is generated, I tested it.

Are you suggesting that i put the BPMSESSIONID as a reponse parameter to the InheritSpecificationsForFinApp, not as a request parameter ?

If i understand correctly.

 

Petrika,

If you're calling a configuration service, there's no need to actually use it as a service. It's simply a C# class that you can use directly.

For example, something like this: 

var svc = new Terrasoft.Configuration.FinAppSpecService();
svc.InheritSpecificationsForFinApp()

Depending on how the configuration service is implemented, you might need to also pass a UserConnection to it, which means you'd need to modify the service to allow this to be passed in.

You had mentioned: "I can not call it in a c# class because the the constructor of FinAppSpecService class does not accept UserConnection as e parameter. Which is the proper way to solve this problem?"

Why not just add two constructors to the class? One that is the default constructor and one that accepts a UserConnection? In the class you could add a method that either returns your private UserConnection variable (passed in by code consuming the class directly) or the one from the session (or BaseService) if being used as a service. I do it this way often and it is far more easy to consume the class directly than to call as a service when it's not needed to be used as a service (not to mention the extra overhead of using it as a service rather than consuming it directly)

Ryan

Ryan Farley,

 

FinAppSpecService() class constructor doesnt allow UserConnection as an argument. I can not modify the FinAppSpecService class because its part of the configuration. 

 

Ryan Farley,

Are you suggesting that i copy the 

FinAppSpecService  class to my package and make proper modifications to it ?

Petrika,

I was assuming this was your class, that you could modify, not a configuration one that was uneditable by you. 

I assume that FinAppSpecService inherits BaseService? If so, it has a UserConnection property that is protected (that does have a setter) as well as a protected constructor that accepts a UserConnection. Since they are protected you should be able to access them if your class is derived from it. 

it might work to just make a new class that inherits from the FinAppSpecService that allows a UserConnection to be passed? I've not tried that but it might work - just to throw out some ideas.

Something like this: 

public class UsrFinAppSpecServiceWrapper : FinAppSpecService
{
    public void SetUserConnection(UserConnection)
    {
        this.UserConnection = UserConnection;
    }
}

Then to use it:

var svc = new Terrasoft.Configuration.UsrFinAppSpecServiceWrapper();
svc.SetUserConnection(UserConnection);
svc.InheritSpecificationsForFinApp();

Again, I've not tested/tried that before, but I would assume something like this could work? If it does, still far easier route than calling it as a service IMO.

Ryan

Ryan Farley,

Ryan the response i get from the back-end 

is the same as the reponse i get from the front-end 

Still When i call this web-service from the back-end my goal isnt achieved. As you can see the detail of product terms isnt automaticalluy generated

Dont know if am missing something here

Thank you Petrika

Show all comments

Hi Community,

 

We have two different status in a section. One on the section UI (Reservation Status) and other one is DCM status. Our requirement here is, when the DCM status changes it will also change the Reservation Status.

 

To achieve this we have added one attribute and method on the page schema.

Attribute:

attributes: {
	"UsrMarketingPlansStatus": {
		dependencies: [{
			columns: ["UsrMarketingPlansStatus"], //field to trigger change event for
			methodName: "changeHeaderUserStatusBasedOnDCM" //method to execute
		}]
	},
},

Method:

methods: {
			changeHeaderUserStatusBasedOnDCM: function(){
				var DCMStatus = this.get("UsrMarketingPlansStatus").displayValue;
				console.log("DCMStatus: ", DCMStatus);
				if (DCMStatus === "Business Owner Review 1" || DCMStatus === "Business Owner Review 2" || DCMStatus === "Business Owner Review 3"){
					this.set("UsrReservationStatus", {value: "b438b32a-9f74-47fc-9266-69b148a50c21", displayValue: "Submitted"});
				}
				else if (DCMStatus === "Cancelled"){
					this.set("UsrReservationStatus", {value: "164d071e-180d-467b-bfc8-18e3818f4698", displayValue: "Cancelled"});
				}
 
				else if (DCMStatus === "Closed"){
					this.set("UsrReservationStatus", {value: "e6296483-82c1-4ecf-a2af-049fa376438e", displayValue: "Closed"});
					this.set("UsrUserStatus", {value: "6566728f-4157-4bf1-9f8d-61f043181379", displayValue: "Completed"});
				}
 
				else if (DCMStatus === "On Hold"){
					this.set("UsrReservationStatus", {value: "bcc1fc18-05c0-469a-a4bc-d65366c16cf1", displayValue: "More Info Required"});
				}
				else{
					this.set("UsrReservationStatus", {value: this.get("UsrReservationStatus").value, displayValue: this.get("UsrReservationStatus").displayValue});
				}
			},
}

The issue here is, when the user manually changes the DCM status, the Reservation status is getting changed automatically. But when the DCM status changes automatically (after activity completion/approval on DCM stage), the Reservation status is not changing automatically.

Need a suggestion how we can resolve the issue (Not via Business process).

 

Thanks,

Sourav Kumar Samal

Like 0

Like

1 comments
Best reply

Since the automatic changing of the DCM status happens outside of the context of the page, you won't receive any event in the page code for this. The only options are to either use a process or an entity-level subprocess/event. 

Ryan

Since the automatic changing of the DCM status happens outside of the context of the page, you won't receive any event in the page code for this. The only options are to either use a process or an entity-level subprocess/event. 

Ryan

Show all comments

We are trying to use https://marketplace.creatio.com/app/advanced-list-setup-creatio to setup different folders with different columns.  The use case is that users will want to see certain columns and also filter by multiple pre-defined columns/options as they plan which accounts to target for the day.  After applying a filter to the folder, the columns change.  Am I missing something in how to actually save the columns?

 

 

Like 0

Like

3 comments

Hi, Melanie!

I am not sure I understand the issue. Could you send us more details about it? Specifically, please tell us the expected result and provide us with steps to replicate the issue.



Also, you might want to review the short add-on instructions to ensure it is set up correctly and you are not experiencing the intended behavior.



The add-on lets you set up different columns for different folders.



To do this:



1. Select a folder (folder must contain at least one filter).

2. Click the "Set up filter for the folder" button.

 



3. Click the "Select fields to display" button and set up the custom columns.



4. Save the folder settings.

 

 

As a result, if you select the folder, you will see the custom column configuration. If you select a different folder, you will see the standard column configuration

Yevhen Vorobiov,

Hello,

We have followed the instructions for setup.  The use case is that users will want to see certain columns and also filter by multiple pre-defined columns/options as they plan which accounts to target for the day.

The expected behavior is that they could adjust the filters on the folder, select apply, and have the columns remain in the folder.

 

Expected behavior in your example: from the Test folder change Type = Our company to Type = Competitor (or any other type), select apply and have the columns remain that are set for the Test folder.

 

Instead what we are seeing is that the columns revert back to the default columns whenever the filter is modified.

 

Please advise how we can do this.

Melanie Forrest,

Hello Melanie!



Thank you for the information. I understand the issue now.



The add-on does not support dynamic changes to folders. As such, you have to click "Save" after applying changes to folder filters. As a result, you will see the custom list.

Show all comments

Hello

I would like to build a business process parameter of type "Collection of records".

- The user is asked to choose an object in a lookup ( attachment file)

- This file is added to the collection (that is where I struggle)

- The user is asked if he want to add more object to the list.

- ... 

- The user validate and the list is used in a subprocess to process the choosen files

 

Many thanks if you can give me a hint on how to do that.   

Like 0

Like

3 comments

Dear Antoine, 

It's impossible to implement using basic application logic.

During single business process execution, it is possible only to upload files to a single object at once.

Hello, thank you for your answer.

I am not trying to upload multiple files.

I just want to ba able to add object references to an object collection parameter.

Let's say it like this:

- When you read Data from Creatio, if using filter others than ID, you get a collection of object. Which is stored into a "collection" variable.

-Now I have a collection, let say I read another object of the same type with anoter filter, I want to add that object to the above existing collection. How can I do that?

 

 

Thank you 

 

The code should look something like this:

// create collection/list or get from param
var list = new CompositeObjectList<CompositeObject>();
 
// create item and add to collection/list
var item = new CompositeObject();
item["SomeProperty"] = "Some value";
item["SomeOtherProperty"] = "Some value, etc";
list.Add(item);
 
// now set list in param
Set<CompositeObjectList<CompositeObject>>("MyCollectionParamName", list);

See https://customerfx.com/article/working-with-collection-parameters-in-a-…

Ryan 

Show all comments

Hi Community,

 

We need to override destroy function in edit page and put our custom logic. However, we noticed if you are clicking add button on details on edit page, destroy function is not being called. The destroy function is only being executed when you are clicking close/cancel or if you are clicking directly to other menu. What is the counter part of destroy function when user is  clicking add button on details on edit page

Like 0

Like

1 comments

Hi Fulgen,

 

The destroy method from the BaseNestedModule is called when starting adding a record to a detail. So in your case you need to override this method in case you need to add something to the destroy logic.

 

Best regards,

Oscar

Show all comments

Hi Community,

 

I have created one Process parameter of type "FILE" as follows:

I am trying to assign the value in a script task. The script task contains the following code:

var recordId = Get<Guid>("FileID");
 
IFileFactory fileFactory = UserConnection.GetFileFactory();
var fileLocator = new EntityFileLocator("ContactFile", recordId);
IFile file = fileFactory.Get(fileLocator);
 
Set("FILE",file);
 
return true;

After running the process I am getting the following error,

Request a help here to understand what am I doing wrong.

 

Thanks,

Sourav Kumar Samal

Like 0

Like

4 comments
Best reply

Hi Sourav,

 

The problem here is that this parameter stores not the file itself, but the file locator. If you redesign the code as:

var recordId = Get&lt;Guid&gt;("FileID");
IFileFactory fileFactory = UserConnection.GetFileFactory();
var fileLocator = new EntityFileLocator("ContactFile", recordId);
Set("FILE", fileLocator );
return true;

the process will be executed properly.

 

Best regards,

Oscar

Hi Sourav,

 

The problem here is that this parameter stores not the file itself, but the file locator. If you redesign the code as:

var recordId = Get&lt;Guid&gt;("FileID");
IFileFactory fileFactory = UserConnection.GetFileFactory();
var fileLocator = new EntityFileLocator("ContactFile", recordId);
Set("FILE", fileLocator );
return true;

the process will be executed properly.

 

Best regards,

Oscar

Oscar Dylan,

Thanks for the Input, It is working now

Sourav Kumar Samal,

 



How did you add the Using for IFileFactory and GetFileFactory?



Regards,

Solem.

Solem Khan Abdusalam,

 

You can add the using under "Methods" tab of process settings as follows,

 

 

Thanks,

Sourav

Show all comments

Hi Community,

I need to skip the mini-page which comes when we click "complete" on any user task in a DCM.As soon as the complete button is clicked the user task should be marked complete. Is there any way or examples to do so.

Thanks 

Like 0

Like

8 comments

Hello,

 

The method that is being called when clicking the complete button in the user-task is "execute" from the "ActivityDashboardItemViewModel" module. It checks if the item that needs to be completed has the mini-page or if it's an email activity or a process activity and then executes its logic. If none of the conditions are met the "execute" method from the "EntityDashboardItemViewModel" is called (parentMethod for the "execute" method in the "ActivityDashboardItemViewModel"). So in case you need to autocomplete the task you need to override the logic of this "execute" method (and unfortunately we don't have a specific example on this matter).

 

Best regards,

Oscar

Oleg Drobina,

 

It seems we can not create the replacing schema for EntityDashboardItemViewModel or ActivityDashboardItemViewModel. Is there any suggestion where we can override the 'execute' method to add the custom logic?

 

Regards,

Sourav

Sourav Kumar Samal,

 

Actually there is a possibility to override this logic:

 

1) Create the module with UsrActivityDashboardItemViewModel name and the following code (copied the original code from the ActivityDashboardItemViewModel):

define("UsrActivityDashboardItemViewModel", ["UsrActivityDashboardItemViewModelResources", "ProcessModuleUtilities",
		"ConfigurationConstants", "EntityDashboardItemViewModel", "MiniPageUtilities"],
	function(resources, ProcessModuleUtilities, ConfigurationConstants) {
		Ext.define("Terrasoft.configuration.UsrActivityDashboardItemViewModel", {
			extend: "Terrasoft.EntityDashboardItemViewModel",
			alternateClassName: "Terrasoft.UsrActivityDashboardItemViewModel",
 
			Ext: null,
			sandbox: null,
			Terrasoft: null,
 
			columns: {
				/**
				 * Process element identifier.
				 */
				"ProcessElementId": {
					type: Terrasoft.ViewModelColumnType.ENTITY_COLUMN,
					dataValueType: Terrasoft.DataValueType.STRING
				},
				/**
				 * Indicates if button "Execute" was clicked.
				 */
				"ExecuteButtonClick": {
					type: Terrasoft.ViewModelColumnType.ENTITY_COLUMN,
					dataValueType: Terrasoft.DataValueType.BOOLEAN
				}
			},
 
			/**
			 * @inheritdoc Terrasoft.BaseDashboardItemViewModel#initIconSrc
			 * @overridden
			 */
			initIconSrc: function() {
				var iconSrc = resources.localizableImages.IconImage;
				this.set("IconSrc", iconSrc);
			},
 
			/**
			 * @inheritdoc Terrasoft.EntityDashboardItemViewModel#addQueryColumns
			 * @overridden
			 */
			addQueryColumns: function(esq) {
				this.callParent(arguments);
				esq.addColumn("Title", "Caption");
				esq.addColumn("Type");
				esq.addColumn("StartDate", "Date");
				esq.addColumn("Owner.Name", "Owner");
				esq.addColumn("ProcessElementId");
			},
 
			/**
			 * @inheritdoc Terrasoft.BaseDashboardItemViewModel#getProcessElementUId
			 * @overridden
			 */
			getProcessElementUId: function() {
				return this.get("ProcessElementId");
			},
 
			/**
			 * @inheritdoc Terrasoft.BaseDashboardItemViewModel#execute
			 * @overridden
			 */
			execute: function(options) {
				console.log("test");
				var schemaName = this.get("EntitySchemaName");
				var hasMiniPage;
				const parentMethodArguments = arguments;
				const parentMethod = this.getParentMethod();
				Terrasoft.chain(
					function(next) {
						this.showBodyMask();
						if (Terrasoft.Features.getIsEnabled("OpenEditPageInDcm")) {
							this.hasMiniPageForMode(schemaName, Terrasoft.ConfigurationEnums.CardOperation.VIEW, next, this);
							return;
						}
						hasMiniPage = this.hasMiniPage(schemaName);
						next(hasMiniPage);
					},
					function(next, hasMiniPage) {
						this.hideBodyMask();
						if (!this._isEmailActivity() &amp;&amp; this.isActivity() &amp;&amp; hasMiniPage) {
							this.showMiniPage(options);
							return;
						}
						var elementUId = this.get("ProcessElementId");
						var recordId = this.get("Id");
						var config = {
							procElUId: elementUId,
							recordId: recordId,
							scope: this,
							parentMethodArguments: parentMethodArguments,
							parentMethod: parentMethod
						};
						if (ProcessModuleUtilities.tryShowProcessCard.call(this, config)) {
							return;
						}
						parentMethod.call(this, parentMethodArguments);
					},
					this
				);
 
 
			},
 
			/**
			 * Returns true if it is task activity entity.
			 * @private
			 * @return {Boolean} True if it is task activity entity.
			 */
			isActivity: function() {
				var executionData = this.get("ExecutionData");
				var schemaName = this.get("EntitySchemaName");
				return this.Ext.isEmpty(executionData) ||
					(executionData &amp;&amp; schemaName === executionData.entitySchemaName);
			},
 
			////TODO #CRM-33987
			/**
			 * Returns if current activity is email.
			 * @returns {Boolean} Returns if current activity is email.
			 */
			_isEmailActivity: function() {
				var activityTypes = ConfigurationConstants.Activity.Type;
				var typeLookup = this.get("Type");
				return typeLookup.value === activityTypes.Email;
			},
 
			/**
			 * @inheritdoc Terrasoft.BaseDashboardItemViewModel#onExecuteButtonClick
			 * @overridden
			 */
			onExecuteButtonClick: function() {
				this.set("ExecuteButtonClick", true);
				this.callParent(arguments);
			},
 
			/**
			 * @inheritdoc Terrasoft.BaseDashboardItemViewModel#onCaptionClick
			 * @overridden
			 */
			onCaptionClick: function() {
				this.set("ExecuteButtonClick", false);
				this.callParent(arguments);
			},
 
			/**
			 * @inheritdoc Terrasoft.MiniPageUtilities#openMiniPage
			 * @overridden
			 */
			openMiniPage: function(config) {
				if (this.get("ExecuteButtonClick")) {
					var status = {
						name: "ActivityMiniPageStatus",
						value: "Done"
					};
					if (config &amp;&amp; this.Ext.isArray(config.valuePairs)) {
						config.valuePairs.push(status);
					} else {
						config.valuePairs = [status];
					}
				}
				this.callParent(arguments);
			}
		});
	});

the only modification was console.log("test") to check the override.

 

2) Create a replacing view module for the SectionActionsDashboard with the following code:

 define("SectionActionsDashboard", ["UsrActivityDashboardItemViewModel"],
	function() {
		return {
			mixins: {},
			methods: {
				initDashboardConfig: function() {
					this.callParent(arguments);
					const dashboardConfig = this.$DashboardConfig;
					const activityItemsConfig = {
						"Activity": {
							viewModelClassName: "Terrasoft.UsrActivityDashboardItemViewModel"
						}
					};
					Ext.merge(dashboardConfig, activityItemsConfig);
					this.$DashboardConfig = dashboardConfig;
				},
			},
			diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
		};
	}
);
 

3) Refresh the page after saving these two modules.

 

As a result you can modify the "execute" method logic in the UsrActivityDashboardItemViewModel module.

Oleg Drobina,

 

I have tried the exact same steps, but getting the below error,

 

 

 

Is there anything I missed?

 

Regards,

Sourav Kumar Samal

Sourav Kumar Samal,

 

the same approach on my side doesn't return an error. You need to double-check all the code and that it has the same content as mine shared above.

Oleg Drobina,

 

I tried in a different instance, the error didn't come. But when I click on "Complete", it refers to the ActivityDashboardItemViewModel in stead of SKSActivityDashboardItemViewModel.

 

 

Also, I can see initDashboardConfig referencing to the correct schema, but still execute method is not,

 

 

Regards,

Sourav

Sourav Kumar Samal,

 

Hi, did you mange to solve this issue? 

Thanks in advance for your reply.

Kind regards,

Marijana

Oleg Drobina,

How can I do this in FreedomUI?

Show all comments

Dear Devlabs,

 

which version of IBM messaging queue is supported by the adapter from marketplace?

 

BR

Like 0

Like

5 comments

Hello Valery,

 

Could you please elaborate on your question?

Please describe the desired result after receiving the requested information.

 

Thank you,

Artem.

Hi Artem,

 

thank you for your feedback.

 

I want just outline what I expect. 

My expectation is the number of latest version of  IBM MQ with which the adapter works properly.

 

BR

 

 

 

Hi, Valery!

We are using version 8.0.0.7 of the external library from IBM MQ.

As such, the add-on is compatible with IBM MQ 8.0.

We haven't tested the compatibility with the latest versions of IBM MQ.

Yevhen Vorobiov,

Hi, Yevhen,

 

thank you for your reply. Please advise me about plugin compatibility with IBM MQ 9 (9.0, 9.1, 9.2) version.

Valery,

Hi Valery!

Since we have not tested the compatibility with the latest versions of IBM MQ, we cannot provide an advice. You might want to test this on your end.

Show all comments