Question

Other than the need for synchronization, are there differences in app functionality between online and offline mode? Our instance was in Offline mode by default. 

However, we're considering switching to Online mode because the case-sensitive search in Offline mode is a significant problem for our users. 

Before we switch, however, we'd like to know if Online mode will cause any other differences. (Aside from the need to synch.)

Thanks,

Jeff

Like

1 comments

Hello Jeffrey,

Please refer to this Academy article regarding bpm'online mobile application architecture. The main difference between these two modes is that if you select the online operation mode, there is no need to synchronize the application manually. In this mode, the app synchronizes with the bpm'online server automatically, in real time. For example, if you add a task using the mobile application, the task will immediately display in the primary application and vice versa.

In the offline mode, the mobile app user should synchronize periodically with the primary bpm’online application. Changes made to the mobile application are saved on the bpm'online server only after synchronizing with the primary application.

There is also a table in the article provided which displays difference between these two modes.

In different mobile app operation modes, synchronization with bpm’online has different functions. In the online mode, the synchronization is required only to apply configuration changes. In the offline mode, the synchronization is required both to apply configuration changes and to synchronize the data between the mobile app and the bpm’online server.

So as a result Online mode should not cause any errors and it is not significantly different from Offline mode.

Regards,

Oscar

Log in or register to comment
Question

Hi,

 

I need to change background image of mobile home page.

Currently I able to show background image under sections (modified the object "UsrMobileCaseGridPageView") but its not reflected on home page.

 

Image is copied to this loaction (file:///C:/BPM/BPM_Mobile_simulator/7.14.6/appV2/Common/lib/SenchaTouch/resources/css/bg.png)

Please suggest the way it can be achieved. For testing I using mobile simulator.

 

Regards

Like

3 comments

The question was discussed in the article by the link below.

https://community.bpmonline.com/articles/adding-custom-css-mobile-application

Hi Eugene,

Thank you, I tried Global CSS and its reflected except home screen which appearing just after successful login. Is it possible to apply custom css on home screen?

Muhammad Shajiuddin,

Unfortunately, it's not possible.

Log in or register to comment
Question

Hi Community,

Any idea in Mobile how can I add custom field in Case attachment. This custom field will be a lookup field, user is required to select value from this field before uploading the attachment. 

Like

1 comments

Dear Fulgen,

Such business task requires advanced development in the system. We do not have a code snippet for such task, however, the algorithm for the case is the following:

1. You add a lookup filed to the CaseFile object. 

2. Add an attachment detail to the Case page via Mobile application wizard.

3. Create your custom generator for the file attachment functionality. You can take basic MobileFileAndLinksEmbeddedDetailGenerator as a reference and indicate it as a parent object for your custom schema.

4. Indicate this custom generator in the values section of detail insert diff, e.g.:

     "generator": "UsrMyControlGenerator.generateUsrMyControl",
 

5. Add filed to the case file page, make it required. You can make it required on object level, or override save method in the JS schema.

Regards,

Anastasia

Log in or register to comment
Question

Hi Community,

I have this scenario that I need to achieve in mobile

- In Case page I have "Department" lookup field, this "Department" lookup field is linked to "Department" object.

- "Department" object has "PrimaryContact" lookup field which is linked to "Contact" object

- Now when creating a case, once the user selects Department, the "Assignee" field should be auto populated based on the Department's PrimaryContact value.

Any idea how can i achieve this? Thanks in Advance

Like

3 comments

Dear Fulgen, 

Please try the MUTUALFILTRATION rule in the mobile business rules from the academy page below:
https://academy.bpmonline.com/documents/technic-sdkmob/7-12/business-rules-mobile-application

Best regards, 
Dennis 

Dennis Hudson,

Thank you Dennis

Is there a way I can manipulate using esq and set the result directly to assignee field?

Dear Fulgen,

It’s possible to create a custom business rule for adding and deleting filtration. Please, use the academy article by the link below and check the second example:

https://academy.bpmonline.com/documents/technic-sdkmob/7-12/custom-business-rules-mobile-application

In order to set a query result directly to some field please use the function set(). Please feel free to read about the function in the beginning of the page from the article by the link above. Also it possible to use esq to manipulate data. Please find code example below. (Example 2)

 In order to apply the code create an empty module and insert the code to the module. Then use mobile wizard to create a replacing module of manifest and add the name of your module to attribute “PageExtensions” of corresponding page section. Please find code example below (in my case it’s section Activity, example 1).

Example 1:

{

                "SyncOptions": {

                                "SysSettingsImportConfig": [

                                                "DefaultMessageLanguage"

                                ],

                                "ModelDataImportConfig": [

                                                {

                                                                "Name": "Contact",

                                                                "SyncColumns": [

                                                                                "City"

                                                                ]

                                                },

                                                {

                                                                "Name": "City",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "SysLanguage",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "Activity",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "ActivityPriority",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "ActivityType",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "ActivityCategory",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "ActivityStatus",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "CallDirection",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "ActivityParticipant",

                                                                "SyncColumns": [

                                                                                "Activity",

                                                                                "Participant"

                                                                ]

                                                },

                                                {

                                                                "Name": "ActivityParticipantRole",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "ParticipantResponse",

                                                                "SyncColumns": []

                                                }

                                ]

                },

                "Modules": {},

                "Models": {

                                "Contact": {

                                                "RequiredModels": [

                                                                "Contact",

                                                                "City",

                                                                "SysLanguage"

                                                ],

                                                "ModelExtensions": [],

                                                "PagesExtensions": [

                                                                "MobileContactGridPageSettingsDefaultWorkplace"

                                                ]

                                },

                                "Activity": {

                                                "RequiredModels": [

                                                                "Activity",

                                                                "ActivityPriority",

                                                                "ActivityType",

                                                                "ActivityCategory",

                                                                "ActivityStatus",

                                                                "CallDirection",

                                                                "ActivityParticipant",

                                                                "Contact",

                                                                "ActivityParticipantRole",

                                                                "ParticipantResponse"

                                                ],

                                                "ModelExtensions": [],

                                                "PagesExtensions": [

                                                                "MobileActivityRecordPageSettingsDefaultWorkplace",

                                                                "UsrMobile1"(my module)

                                                ]

                                }

                }

}

Example 2:

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

    name: "ActivityResultByAllowedResultFilterRule",

    position: 1,

    ruleType: Terrasoft.RuleTypes.Custom,

    triggeredByColumns: ["Result"],

    events: [Terrasoft.BusinessRuleEvents.ValueChanged, Terrasoft.BusinessRuleEvents.Load],

    executeFn: function (record, rule, column, customData, callbackConfig) {

        var store = Ext.create('Terrasoft.store.BaseStore', {

    model: 'ActivityResult'

                                });

                var queryConfig = Ext.create('Terrasoft.QueryConfig', {

    columns: ['Id'],

    modelName: 'ActivityResult'

                                                });

                store.loadPage(1, {

    queryConfig: queryConfig,

    filters: Ext.create('Terrasoft.Filter', {

        property: 'Id',

        value: '6CBD22D4-F36B-1410-5E98-00155D043204'

                }),

            callback: function (records, operation, success) {

                var loadedRecord = records[0];

                var allowedResult = record.get("AllowedResult");

                var filterName = "ActivityResultByAllowedResultFilter";

                if (!Ext.isEmpty(allowedResult)) {

                    var allowedResultIds = Ext.JSON.decode(allowedResult, true);

                    var resultIdsAreCorrect = true;

                    for (var i = 0, ln = allowedResultIds.length; i < ln; i++) {

                        var item = allowedResultIds[i];

                        if (!Terrasoft.util.isGuid(item)) {

                            resultIdsAreCorrect = false;

                            break;

                        }

                    }

                    allowedResultIds.push(loadedRecord.get("Id").toUpperCase());

                    if (resultIdsAreCorrect) {

                        var filter = Ext.create("Terrasoft.Filter", {

                            name: filterName,

                            property: "Id",

                            funcType: Terrasoft.FilterFunctions.In,

                            funcArgs: allowedResultIds

                        });

                        record.changeProperty("Result", {

                            addFilter: filter

                        });

 

                    }

                    else {

                        record.changeProperty("Result", {

                            removeFilter: filterName

                        });

                    }

                } else {

                    record.changeProperty("Result", {

                        removeFilter: filterName

                    });

                }

                Ext.callback(callbackConfig.success, callbackConfig.scope, [true]);

            },

            scope: this

        });

    }

});

 

Best regards,

Norton

 

Log in or register to comment
Article
Log in or register to comment
Question

Hi Community,

 

I have this scenario in Mobile, I have a custom page. I added this custom page as detail in case page. I manage to add all the fields of my custom page using Mobile application wizard->page setup but aside from that, I want also to add the attachment of this page, how can i possibly do this, any idea?

Like

5 comments

Dear Fulgen,

Could you please confirm if I understood you correctly. You've created an object and based on it you've added the detail on a case page? Now you want to be able to attach the files to this custom detail? Thank you beforehand.

Looking forward to your reply.

Dean

Dean Parrett,

Thanks Dean,

Yes Dean, this is what i meant. How can I possibly achieve this?

Thank you so much. 

Is this detail embedded or standard? I mean, this custom page is placed in case page or it has own list, own preview page, etc?

Alina Kazmirchuk,

Hi Alina,

Yes, this custom page is placed in case page.

Unfortunately, there is no opportunity to attach files to an embedded detail. However attaching the files is possible to a standard detail. So if there are no restrictions to use only embedded detail please use the standard one. Please find more information in the article below.

https://academy.bpmonline.com/documents/technic-sdkmob/7-12/adding-standard-detail-section-mobile-application

Log in or register to comment
Question

Hi Community,

Any idea how we can customize the BPM mobile layout, including background

Like

1 comments

Dear Fulgen,

You can apply your custom styles to the mobile application. Styles (CSS) can be changed in the configuration. To do this, use the Terrasoft.writeStyles method. Presumably, an example is available in MobileActivityGridPageV2. 

Here is more about customization possibilities within mobile application in the thread:

https://community.bpmonline.com/questions/customization-capabilities-mobile-plataform

Regards,

Anastasia

Log in or register to comment
Question

Hi Community,

Just like overriding the save button save() and onsave() method in web, how we can do it in bpm mobile?

 

Like

3 comments

Dear Fulgen,

The corresponding method for mobile application is onSaveButtonTap(). Also, you can check onDataSavedSuccessfully() method, which executes after data saved.

Regards,

Anastasia

Thank you Anastasia,

Is there any available examples in OOB?

 

Fulgen Ninofranco,

Please take a look at MobileSocialMessageEditPage schema. There you can find the realization of the onSaveButtonTap method.

 

Regards,
Anstasia

Log in or register to comment
Article

Setting up approvals through mobile app needs some customisation where the "approval" fields need to be conditionally hidden/displayed. The below blog explains how to do this.

http://agiliztech.com/2019/06/11/conditionally-hideshow-fields-bpmonline-mobile-app/

Share

0 comments
Log in or register to comment
Question

CAn portal user login to mobile application?

Like

5 comments

Hello, 

Portal users can login to the mobile app. They would have access to the records and section for which they would have corresponding rights. Also you can create a separate workspace for portal users in mobile application wizard or distribute rights to sections and records for portal users.
The academy page on mobile application wizard below: 
https://academy.bpmonline.com/documents/mobile/7-13/mobile-application-…

Best regards,
Dennis

thanks for the reply . Iam getting an error message while logging as a portal user . Tried two instance (studio and CRM )the error message is same .

 

From: Sethuraghav N ; Sent on: 3/11/2019 11:40:49 AMTo: Bpmonline support ; Cc: Subject: Bpm'online mobile bug report (https://044762-crm-bundle.bpmonline.com/)Model Name: iPhone10,1 Platform: iOS Platform Version: 12.1.4 Resolution: 0x0 IsHybridMode: false UIVersion: UIV2 ApplicationVersion: 7.13.10 ApplicationMajorVersion: 7.13 BackgroundSyncMode: Always ServerUrl: https://044762-crm-bundle.bpmonline.com/ ContactId: 4a778dcf-15af-4bfd-b18c-8ed92354655c CultureName: en-US ApplicationRevision: null WorkplaceCode: DefaultWorkplace ProductInfo: {"ProductName":"bpm'online","ProductEdition":"service enterprise","CustomerId":"321","Version":{"Major":7,"Minor":13,"Build":4,"Revision":638,"MajorRevision":0,"MinorRevision":638}} CurrentDateTime: 2019-03-11T09:39:51.576Z Type: Terrasoft.SyncException Message: An error occurred while synchronizing Stack trace: @sencha-touch-all-debug.js:10397:31 failure@terrasoft-all-combined.js:25030:23 @sencha-touch-all-debug.js:10397:31 failure@terrasoft-all-combined.js:3739:21 @sencha-touch-all-debug.js:10397:31 requestItemFailure@terrasoft-all-combined.js:31616:25 Terrasoft.RequestManager#onRequestFailure@terrasoft-all-combined.js:31428:34 @sencha-touch-all-debug.js:10397:31 terrasoft-all-combined.js:31620:21 @sencha-touch-all-debug.js:10397:31 Terrasoft.core.CancellableOperationManager#finish@terrasoft-all-combined.js:32010:19 Terrasoft.core.mixins.Cancellable#finishCancellableOperation@terrasoft-all-combined.js:1419:49 terrasoft-all-combined.js:31606:38 [nativecode] @sencha-touch-all-debug.js:10397:31 Fn@terrasoft-all-combined.js:31660:27 failure@terrasoft-all-combined.js:31676:23 @sencha-touch-all-debug.js:10397:31 failure@terrasoft-all-combined.js:52784:27 @sencha-touch-all-debug.js:10397:31 terrasoft-all-combined.js:35722:19 FromNative@cordova.js:295:57 nc2@cordova.js:1022:39 Type: Terrasoft.ServerException Message: Server request returned error AdditionalInfo: { "responseText": "Access to non-SSP API is denied for portal users{\"responseStatus\":{\"ErrorCode\":\"SecurityException\",\"Message\":\"Current user does not have sufficient permissions to read values of system setting with code \\\"UseMobileUIV2\\\".\",\"Errors\":[]},\"rowsAffected\":-1,\"nextPrcElReady\":false,\"success\":false}", "statusCode": 403, "statusText": "Forbidden" } Stack trace: Terrasoft.util.Service#getExceptionFromResponse@terrasoft-all-combined.js:5726:45 Terrasoft.nativeApi.ExceptionParser.getException@terrasoft-all-combined…:52836:65 Terrasoft.util.DataServiceUtils#getExceptionFromError@terrasoft-all-combined.js:5771:63 terrasoft-all-combined.js:35711:71 FromNative@cordova.js:295:57 nc2@cordova.js:1022:39 Sent from my iPhone

sethuraghav,

The error says user doesn't have access rights to system settings with code 

UseMobileUIV2. Distribute the rights to the needed users for this setting and it should work. 

Best regards, 
Dennis

Dennis Hudson,

The same error comes after the access is given 

regards,

sethuraghav N

sethuraghav,

Please try to recompile and  resync your application and if it wouldn't work please write to support@bpmonline.com 

Best regards,
Dennis

Log in or register to comment