Hi,

Is it possible to specify a binding redirect in web.config for a specific version of an external assembly, if another version of the same assembly is already being used internally by BPM'Online?

I am building an external assembly which has a dependency on a different version of an already existing assembly that is being used by BPM'Online. It would be great to know if there is a way to redirect logic to the right assembly at runtime. Will the "LoadOnAppStart" column of the [SysPackageReferenceAssembly] table help in anyway?

Any help in this regard will be much appreciated. Thanks in advance!

Like 0

Like

2 comments

Dear Amanthena,

In case you are talking about assembly, which is a part of out-of-the box system, we do not recommend to apply any changes to this assembly. Particularly, because much of core logic dependent on it and its specific version. This can lead to full system inoperability. 

In case you are referring to the external assembly, which was installed to the system, please consider firstly removing it from External Assembly tab before installing a newer version.

Regards,

Anastasia

Thank you Anastasia!

Show all comments

Hello,

I set up a stardard filter on Account page, lets say I want to filter all accounts starting with "A". 

Is there any way that I can read/access this filter from a business process, so I can know which accounts were selected by that filter?

Thank you,

Cristian Galatan.

Like 0

Like

6 comments

Dear Cristian,

Unfortunately it will be difficult to read this filter since it is stored as an encrypted value in the section for which this filter was created. There is more elegant and easy way to achieve a target: you can create a dynamic folder and specify filtering conditions for it and then read this folder from AccountFolder table in the database (http://prntscr.com/mzgcjp) and after that perform operations on this folder.

Best regards,

Oscar

Oscar Dylan,

Hey Oscar,

Thank you for your answer. Indeed using a dynamic folder is more elegant and I've seen that I can read that folder from a business process. The question that remains is how can I get the list of the accounts that this filter is referring too?

This table/entity has a field "search data" which is a binary one. I guess that is an encrypted value such as the standard filter is using too.

Thank you.

Cristian Galatan,

Yes this is data that stores filtering conditions, but it will be very hard to use it and that's why I suggest using business process for these proposes.

Best regards,

Oscar

I will use a business process for sure. But still, how can I know the list of the accounts that are filtered by this folder?

Cristian Galatan,

This is task for programming. I think, you can take sample from bpm'online marketing (adding group of contacts to Bulk Email audience)



We have used similar methods to get list of contacts

Vladimir Sokolov,

Thank you Vladimir. I will check that.

Show all comments

Dear all,

 We have requirement to create dispatch plans for the contract orders.  Created a table call UsrDispatchPlan... In this table, I need auto increment number for UsrNumber field.

We are trying to create auto numbering for the 

We followed the below steps

1. Create system settings for UsrDispatchPlanCodeMask, UsrDispatchPlanLastNumber

2. I did not created a replacing module, since i am doing it for new requirement(table)

3. Created a process before saving with the below steps

        ->message start with message: UsrDispatchSaving

        ->ScriptTask "SetNumberGenerationParameter" with code:

              GenerateNumberUserTask.EntitySchema = Entity.Schema;

              return true;

        -> a user task "GenerateNumberUserTask", task type "Generate ordinal number ( Base )"

        -> as Script task "SetGeneratedNumber" with code :

                 Entity.SetColumnValue("UsrNumber", GenerateNumberUserTask.ResultCode);

                 return true;

4. Saved and published the process and object as well.

 But the code is not generated in the field. 

 

Same i did from client side.. It worked!!!! But I need to implement from server side.,.. Because Add option is given with the mini page, where i was not able to process the auto increment.

 

Even i tried to implement the auto increment with reference to the link.

https://community.bpmonline.com/questions/question-about-auto-numbering…

 

But did not work!!!. So i am trying to do it with server side.

 

Please help!!!!

 

Like 0

Like

1 comments

Hi everyone. I'm starting with bpm'online and I have a question related to reminders. I know that in an activity we can send reminders to author and to the owner, but here where I work arise the need of remind everybody in the same department of the owner, I mean, imagine the owner is someone that works in commercial department, so everybody in commercial department should be notified. Do you guys know how can I do it?

Thanks a lot.

Like 0

Like

3 comments

Dear Paulo,

In the current version of the application there is no option to send the reminders to a separate department, however, you can add the members of the department separately on the participant tab of the activity page. Here is the example - http://prntscr.com/n0jlym  Thus, all the participants will get the notifications. 

Best regards,

Dean

Dean Parrett,

Thanks for reply. That's exactly what I thought. Do you know whether can I import a list of participant on the same excel I'm importing the activity? I need to import a list with about 120 activities and add at least 3 or 4 participant per activity. It is not easy to set one by one.

Dear Paulo,

It is not possible to import the activity with all participants, however, you can create a separate excel file and import the participants into already imported activity. For instance, I have the activity where I want to add one more contact http://prntscr.com/n0z3gc . I need to prepare the excel file with the contact and add the column with the activity title - http://prntscr.com/n0z498 

After that, I just need to go to the data import section, choose 'activity participant' object http://prntscr.com/n0z55p , map the columns and start the process. As the result, I have the required contact in the list of the participants. http://prntscr.com/n0z671

Once more solution, is to import the list of participants directly on the detail of the activity, however it is convenient to use it if you have a lot of participants http://prntscr.com/n0z9hz

Best regards,

Dean

 

Show all comments

I'm running into some trouble when trying to populate a lookup column from a script task.  I invariably get the error "System.Data.SqlClient.SqlException (0x80131904): Invalid column name 'UsrVMProductCode'."

This is the column in question:

And here is the relevant part of the script task:

var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "UsrWaterplayVMProductCode");
 
var ColId = esq.AddColumn("Id");
var ColName = esq.AddColumn("Name");
 
var entities = esq.GetEntityCollection(UserConnection);
var productCodes = new Dictionary<string,string>();
foreach (var entity in entities) {
	productCodes[entity.GetColumnValue(ColName.Name).ToString()] = entity.GetColumnValue(ColId.Name).ToString();
}
 
foreach (var pd in resultObj.UpdatedParts) {
	if (pd.PartId != "") {
		var code = "";
		if (pd.VMProductCode != "") {
			code = productCodes[pd.VMProductCode];
		}
		var update = new Update(UserConnection, "Product")
			.Set("Name", Column.Parameter(pd.Description))
			.Set("Price", Column.Parameter(pd.Price))
			.Set("UsrProductionCost", Column.Parameter(pd.Cost))
			.Set("IsArchive", Column.Parameter(pd.Inactive));
		if (code != "") {
			update.Set("UsrVMProductCode", Column.Parameter(code));
		}
		update.Where("Code").IsEqual(Column.Parameter(pd.PartId));
		if (update.Execute() > 0) {
			resultUpdate += "Product " + pd.PartId + " updated.\\r\\n";
		}
	}
}

I have confirmed through debug logging that the code variable contains a GUID.  The script also worked fine before I tried to set UsrVMProductCode, while attempting to set another lookup column in this way (Currency) gave a similar error.  Is there something special I need to do to set a lookup value with the Insert/Update objects?

Like 0

Like

2 comments

The use of Update just creates SQL statements that execute on the database directly (instead of using the object model,, like ESQ does). For a lookup column, the actual column name would have "Id" at the end of it. For example, use "UsrVMProductCodeId" instead of just "UsrVMProductCode".

Ryan

Ryan Farley,

Thanks much, that did the trick.

Show all comments

Hi,

I am given with the requirement to hide Orders section in account Mobile app, if the Account is inactive.

I have added a field in Account Called usrAccountInactive . The order section should be visible only if this field is false. 

I tried with the below module. But dependentColumnNames : here i will have to give only columnname. But not object name. Please help to reslove this.

Terrasoft.sdk.Model.addBusinessRule("Account",{

    ruleType: Terrasoft.RuleTypes.Visibility, 

    events:[Terrasoft.BusinessRuleEvents.Load],

    conditionalColumns: [ 

        {name: "UsrAccountInactive" , value: false } 

    ], 

    triggeredByColumns: [ "UsrAccountInactive" ] , 

    dependentColumnNames: [ "Order" ]  

});

 

 

Thanks in Advance

Like 0

Like

5 comments

Please specify what is "account Mobile app". Additionally, it would be helpful if you create a video that describes the request. 

Eugene Podkovka,

 

sorry for the confusion. i.e Account screen in BPM Mobile app. 

Please find the below link that explains my requirement. Please help to do this.

https://drive.google.com/file/d/1MNzspAx3_5dOn5SlIfE7hAxFDZOl_Wfj/view

 

Thanks in advance

Please find an example for the functionality below.

//create a new module UsrMobileAccountPreviewPage with the code
/* globals Account: false */
Terrasoft.LastLoadedPageData = {
    controllerName: "UsrAccountPreviewPage.Controller",
    viewXType: "usractivitypreviewpageview"
};
Ext.define("UsrAccountPreviewPage.View", {
    extend: "AccountPreviewPage.View",
    xtype: "usractivitypreviewpageview",
    config: {
        id: "AccountPreviewPage"
    },
    /**
     * @inheritdoc
     * @protected
     * @overridden
     */
    shouldHidePanelItem: function(loadedRecord, component) {
        var detailName = component.config.name;
        if (detailName === "ActivityDetailV2StandartDetail") {
            var categoryId = loadedRecord.get("AccountCategory.Id");
            return categoryId !== Terrasoft.Configuration.AccountCategory.DoctorVisit;
        } else {
            return this.callParent(arguments);
        }
    }
});
Ext.define("UsrAccountPreviewPage.Controller", {
    extend: "AccountPreviewPage.Controller",
    statics: {
        Model: Account
    },
    config: {
        refs: {
            view: "#AccountPreviewPage"
        }
    }
});
 
//register the module in the manifest
"Models": {
    "Account": {
        ...
        "Preview": "UsrMobileAccountPreviewPage",
        ...

 

Eugene Podkovka,

Hi , the steps is not clear. Please tell what does the above code do. I implemented the same.. I dint find any difference in Account's activity section.

Please help..

 

Show all comments

Hello

I downloaded the multi selection ad-on from market place:

https://marketplace.bpmonline.com/app/multiple-choice-field-module

added the object to a schema according to the instrucions supplied with the add on: 

https://marketplace.bpmonline.com/sites/marketplace/files/app-guide/MultiSelectField_implementation_guide.pdf

The object works fine but I don't know how to locate it in a gruop field. it always appear on the top of the head of the page as shown here:

The code I used in the SCHEMA_DIFF is this:

 

{

                "operation": "insert",

                "name": "MultiChoiceFieldGroup",

                "values": {

                    "itemType": 15,

                    "caption": {

                        "bindTo": "Resources.Strings.Tabf4d38f16TabLabelTabCaption"

                    },

                    "items": [],

                    "tools": [],

                    "controlConfig": {

                        "collapsed": false

                    }

                },

                "index": 0

            },

            {

                "operation": "insert",

                "name": "MultiChoiceFieldGroupContainer",

                "values": {

                    "itemType": 7,

                    "items": []

                },

                "parentName": "MultiChoiceFieldGroup",

                "propertyName": "items",

                "index": 0

            },

            {

                "operation": "insert",

                "name": "MultichoiceModule",

                "values": {

                    "itemType": 4

                },

                "parentName": "MultiChoiceFieldGroupContainer",

                "propertyName": "items",

                "index": 0

            },

How can I control it's possition ?

Thanks in advance to anyone who will help!

Like 0

Like

4 comments

You need to specify a parent for the MultiChoiceFieldGroup element. In the diff you posted, in the MultiChoiceFieldGroup, add a parentName and propertyName. The parent name would be the name of the tab you'd like it to appear on and set the propertyName to "items".

Something like this:

{
                "operation": "insert",
                "name": "MultiChoiceFieldGroup",
                "values": {
                    "itemType": 15,
                    "caption": {
                        "bindTo": "Resources.Strings.Tabf4d38f16TabLabelTabCaption"
                    },
                    "items": [],
                    "tools": [],
                    "controlConfig": {
                        "collapsed": false
                    }
                },
                "index": 0,
                "parentName": "myTabName",
                "propertyName": "items"
            }

 

Thanks Ryan for your reply but it seems like I'm doing something wrong

I set up parentName as the name of the tab but it keeps showing on the header.

Where is my mistake ?

{

 "operation": "insert",

 "name": "MultiChoiceFieldGroup",

 "values": {

 "itemType": this.Terrasoft.ViewItemType.CONTROL_GROUP,

 "caption": {

 "bindTo": "Resources.Strings.Tabf4d38f16TabLabelGroup59bc0e6aGroupCaption"

 },

 "items": [],

 "tools": [],

 "controlConfig": {

 "collapsed": false

 }

 },

 "parentName": "Resources.Strings.Tabf4d38f16TabLabelTabCaption",

 "propertyName": "items",


 "index": 0

},

Make sure that the module itself (the element with the itemType: Terrasoft.ViewItemType.MODULE - or a 4) has the parent of a container (itemType: Terrasoft.ViewItemType.CONTAINER - or a 7) and the container has a parent of an element that is a control group (itemType: Terrasoft.ViewItemType.CONTROL_GROUP - or a 15). Lastly, make sure the control group has a parent that is the tab (which will have a parentName of "Tabs")

Ryan

Thanks Ryan !smiley

Show all comments

Hi ,

Am facing difficulty in implementing default value for Lookup section filters(Status filter in Order screen). Please help me out to resolve this. The code snippet in OrderSectionV2 is given below :

 {

                            name: "Status",

                            columnName: "Status",

                            caption: this.get("Resources.Strings.StatusFilterCaption"),

                            appendCurrentContactMenuItem: false,

                            dataValueType: this.Terrasoft.DataValueType.LOOKUP,

                            defValue : "1f3ad326-effd-4ac3-a3e2-957e7def3684",

                            addNewFilterCaption: this.get("Resources.Strings.SelectStatusCaption"),

                            hint: this.get("Resources.Strings.SelectStatusCaption"),

                            buttonImageConfig: this.get("Resources.Images.StatusFilterImage"),

                        }

 

Like 0

Like

3 comments

Hi, Thanks for the reply. But I am asking for Filters. look up filters as i have highlighted in the code part. i gave Id value,Name value in 'defValue' property.But it din't work. Can you help in this please.

Sriraksha KS,

Please try to to read the academy and other posts on community. This will help you to resolve the difficulties much faster or even prevent them from happening at all.

https://community.bpmonline.com/questions/lookup-field-filter

https://academy.bpmonline.com/documents/base/7-13/filters

Show all comments

Hello,

I imported an old version of an entity schema into my environment, replacing the current one, and then published/updated the database. It says there's no issue after publishing, but records cannot be saved now because the sql table still has columns from before the import that aren't recognized by the insert queries. 

I can revert to a repository, but I'm curious if there's a faster or known fix.

Like 0

Like

1 comments

Dear Jordan,

Unfortunately, there is no easier way to overcome the issue. Please revert changes to a repository. 

Regards,

Anastasia

Show all comments

We have recently run some stats on our onsite production instance and found the following tables to have collectively occupied around 13 GB of database space and millions of rows in each table. We would like to know if we can remove the old records without any impact on the out of the box functionality. 

The tables in question are SysProcessLog and SysProcessElementLog.

Thank you

Like 0

Like

1 comments

Dear Hatim,

SysProcessLog and SysProcessElementLog are used to log business process execution (Process log section) and business process elements execution (Process elements detail in process log record) and deletion of records from those tables won't affect general applciation functionality. If you need to delete records from there - you can do it.

Best regards,

Oscar

Show all comments