I have a customized section and when I save a record I would like to create x records of another customized section and setting values to the new records. The number of records (x) to create is variable.

 

How can I achieve this? I tried to create multiple records with a process but I have not managed to do so.

 

Thanks in advance.

Like 0

Like

1 comments

Hello! 

You can do this with the business process: 

1) You would need to create a parameter NumberOfRecordsToCreate where you would store your x (the amount of records that need to be created)

2) Create 2 elements: add data and formula, in add data create one record and populate needed fields, in formula set the parameter NumberOfRecordsToCreate to NumberOfRecordsToCreate - 1:

http://prntscr.com/pclnmz

http://prntscr.com/pclnq9

http://prntscr.com/pclns5

3) Create a conditional and default flows from the Function element, default leading to the further part of the process, condition should check if NumberOfRecordsToCreate > 0 and if it is - lead to the add data: 

http://prntscr.com/pclo4x

http://prntscr.com/pclo9f

Best regards,

Dennis

Show all comments

As far as I've been able to determine with my testing, importing City information into a record will simply take the first record in the database by that name, regardless of whether it matches Country and State/Province information also present in the record, and if none are found, will create a City record with blank Country and State/Province fields.

Before I go and duplicate the lengthy business process I wrote to handle these imports more elegantly for every object one might import address information into, I just wanted to confirm:

Is this the expected behaviour, and is there no way in the system to have imports take country and region into account when matching cities, or am I missing something?

Like 0

Like

4 comments

Dear Darian,

Can you please specify what mapping are you using for such import? 

I've imported a lot of Country, State, Cities through Excel successfully.

Angela Reyes,

I'm mapping directly to City, State/province, and Country.  As I said, the imports do function, but the City field doesn't appear to take into account the contents of the other two when matching, which can lead to some rather nonsensical records.  I just wanted to confirm whether or not there's a workaround to that aside from a separate business process for each object type.

Darian Lewis,

If importing directly to "City" object - records will be created successfully if they meet duplicates search while import rules conditions. Correspondent records will be created in state/province and country lookups (but my tests showed that "Country" field value doesn't populate in "State/province" lookup when importing data into "Cities" lookup). Generally you should see new records and new records will be created in related objects. The only data that is not filled in as I said is "Country" field value in "State/province" lookup. I will report this problem to our R&D team so they could modify import process logic so it could also import this field value when importing to cities.

Show all comments

If we create new Section in bpm'online cloud, can it be accessed through EntityDataService.svc? If yes, is there something specific that needs to be done when creating a new Section? 

On the demo bpm'online version that I am using for testing at the moment, through EntityDataService.svc I can only access to objects that were there by default.

Like 0

Like

3 comments

After adding a new section please go to the configuration section and compile the system. After that you will be able to work with newly added section via EntityDataService.

Alina Kazmirchuk,

Compilation worked. Thank you.

Jelena Nikcevic,

 

I still don't see it after compiling, what should I do?

Show all comments

Hi,

We have a use-case where we have to support parallel development and UAT activities on BPM'Online. Ideally, we'd like to achieve it through a branching strategy on SVN, where we have a "main" branch for development and a "UAT" branch which is forked out of "main". This "UAT" branch will run independently of "main" to cater to UAT fixes. Once UAT is done it will be merged back with "main". During the UAT phase, the "main" branch will continue to get updated with ongoing development activities. I wanted to check if this is feasible from a BPM'Online perspective. Can this branching strategy be seemlessly integrated into BPM'Online? If yes, could you point me to some documentation that has guidelines around this?

Like 0

Like

8 comments

Please feel free to find information about working with SVN on the bpm'online platform in the article by the link below:

https://community.bpmonline.com/articles/working-svn-bpmonline-platform

Thank you for your reply Alina! My question was more around branching strategy to support parallel development initiatives, for example, to support in-proc development and release hot fixes at the same time. Also the possibility of switching branches on demand based on whether it is release related work or main development activity. Below is a fair representation of what I was having in mind. Also, is there a way to merge the release branch with the main development branch? Does BPM'Online support such a branching strategy?

Unfortunately, bpm'online doesn't support a branching strategy.

Thanks Alina! Is it part of the product roadmap? Can you suggest a workaround?

The only approach for working with SVN on the platform is described in the article mentioned earlier.

Alina Kazmirchuk,

Your article is just about configuration management, not SVN specific. The question is about branching strategy, not configuration management.

Van Ly,

As it was mentioned above, unfortunately, 

bpm'online doesn't support a branching strategy.

Show all comments

Hi,

Can I add same detail in the same tab of a section multiple times with certain filters applied?

For e.g. the "cards" detail is added in the "individual" section in same tab two times, titled as "Debit Cards" & "Credit Cards" and each detail is filtered by appropriate card type.

When I was trying to add the same detail two times through detail wizard, I got some UI issues. hence asking.

Like 0

Like

2 comments

Hello! 

You can add the same detail twice if you register each instance of detail separately so you would have 2 different details of the same object. 

https://academy.bpmonline.com/documents/technic-sdk/7-13/creating-detail-wizards

To add a filter to the grid please see the community post below: 

https://community.bpmonline.com/questions/solved-how-filter-detail-page-complex-filter

Dennis Hudson,

Got it; Thanks Dennis.

Show all comments

I have created a process that is now currently running from the record in section. 

Idea is : 'Opportunity' should be allowed to be in Stage 'Closed Won' once the activity at Contracting is stage is complete . This activity can only be completed if there is an order created  for the opportunity. 

 

Now , I want to call this process from Cases . Could you please suggest how can we do it so that user does not have to run the process manually.

Like 0

Like

1 comments

There is an opportunity to add a sub-process to a stage of the case (https://prnt.sc/p5rb82). The sub-process will be launched automatically when the stage is active. After adding the sub-process please select the needed business process in the properties block (https://prnt.sc/p5reg5)

Show all comments

We have over 300,000 records in our Process Log.  We'd like to delete records that are not Running or Error that are over one month old.  They are supposed to be archived, but there are records from months ago that have not been archived. When I select a record, there is no option to delete it or archive it. How do I delete or archive records from the Process Log?

Like 0

Like

4 comments

Dear Janine, 

Process log gradually gets cleared by the archivation process. We don't recommend to delete data from Process Log yourself. However, if you really need to delete that data we recommend to send a request to the support@bpmonline.com if your instance is in cloud as it requires very resource heavy sql operations that would not be possible to track with sql executor. 

If your instance is on-site you can take the instruction below as an example to adapt it based on your needs: 

1) Register SQL procedures tsp_DeleteSysProcessLog.sql and tsp_DeleteSysProcessLogByStartDate.sql (procedures themselves below)

2) Execute the procedure.

Example: EXEC [dbo].[tsp_DeleteSysProcessLogByStartDate] 'Error', '2017-09-22', -1,

Where 'Error' is the status of processes,  '2017-09-22' by which start date to delete processes, '-1' how many processes to delete, -1 means all processes. 



Please note that the operation is very resource heavy and time consuming and we don't recommend doing that during business hours. 

Best regards, 

Dennis

 

IF NOT OBJECT_ID('[dbo].[tsp_DeleteSysProcessLogByStartDate]') IS NULL

BEGIN

    DROP PROCEDURE [dbo].[tsp_DeleteSysProcessLogByStartDate]

END

GO

CREATE PROCEDURE [dbo].[tsp_DeleteSysProcessLogByStartDate]

    @Status nvarchar(max),

    @StartDate date,

    @RowsCountToDelete int

AS

BEGIN

    SET NOCOUNT ON

    IF NOT OBJECT_ID('#SysProcessLogId') IS NULL

    BEGIN

        DROP TABLE #SysProcessLogId

    END

    

    CREATE TABLE #SysProcessLogId (Id uniqueidentifier)

    IF @RowsCountToDelete > -1

        INSERT INTO #SysProcessLogId ([Id])

        SELECT Top (@RowsCountToDelete)

            SysProcessLog.Id

        FROM SysProcessLog

        JOIN SysProcessStatus ON SysProcessStatus.Id = SysProcessLog.StatusId

        WHERE

            SysProcessLog.ParentId IS NULL AND

            SysProcessLog.StartDate < @StartDate AND

            SysProcessStatus.[Name] = @Status

    ELSE

        INSERT INTO #SysProcessLogId ([Id])

        SELECT

            SysProcessLog.Id

        FROM SysProcessLog

        JOIN SysProcessStatus ON SysProcessStatus.Id = SysProcessLog.StatusId

        WHERE

            SysProcessLog.ParentId IS NULL AND

            SysProcessLog.StartDate < @StartDate AND

            SysProcessStatus.[Name] = @Status

    EXEC [dbo].[tsp_DeleteSysProcessLog]

END

GO



CREATE OR REPLACE PROCEDURE "tsp_DeleteSysProcessLogById" (id VARCHAR2)

IS

    TYPE IdSet IS TABLE OF VARCHAR2(38);

    input_ids IdSet;

    i NUMBER;

BEGIN

    SELECT

        "Id"

        BULK COLLECT INTO input_ids

    FROM "SysProcessLog"

    WHERE "ParentId" = id;

    IF input_ids.COUNT() > 0 THEN

    FOR i IN input_ids.FIRST .. input_ids.LAST

      LOOP

        BEGIN

          "tsp_DeleteSysProcessLogById"(input_ids(i));

        END;

    END LOOP;

    END IF;

    DELETE FROM "SysProcessElementLog"

    WHERE "SysProcessId" = id;

    DELETE FROM "SysProcessLog"

    WHERE "Id" = id;

END;

/

CREATE OR REPLACE PROCEDURE "tsp_DeleteSysProcessLog" (inputRowsCountToDelete IN INT, status IN VARCHAR2)

    IS

    TYPE IdSet IS TABLE OF VARCHAR2(38);

    input_ids IdSet;

    i NUMBER;

    step INT := 1000;

    startDate TIMESTAMP;

    rowsCountToDelete INT := inputRowsCountToDelete;

    allRowsCount INT;

    rowsLeft INT;

BEGIN

    DBMS_OUTPUT.PUT_LINE('Database: ' || USER);

    startDate := CURRENT_TIMESTAMP;

    IF (inputRowsCountToDelete <= 0) THEN

            SELECT COUNT("Id") INTO rowsCountToDelete FROM "SysProcessLog";

    END IF;

    SELECT

        "SysProcessLog"."Id"

        BULK COLLECT INTO input_ids

    FROM "SysProcessLog"

    WHERE

    "SysProcessLog"."ParentId" IS NULL

    AND "SysProcessLog"."StatusId" IN

        (SELECT

            "SysProcessStatus"."Id"

        FROM "SysProcessStatus"

        WHERE INSTR(status, "SysProcessStatus"."Value") > 0)

    AND NOT EXISTS(SELECT "SysProcessData"."Id" FROM "SysProcessData" WHERE "SysProcessData"."Id" = "SysProcessLog"."Id")

    AND ROWNUM <= rowsCountToDelete;

    allRowsCount := input_ids.COUNT();

    DBMS_OUTPUT.PUT_LINE('Number of records to process: ' || rowsCountToDelete);

    IF allRowsCount > 0 THEN

        rowsLeft := allRowsCount;

        FOR i IN input_ids.FIRST .. input_ids.LAST

            LOOP

                BEGIN

                    IF MOD(i, step) = 0 THEN

                        DBMS_OUTPUT.PUT_LINE('Step ready: ' || TO_CHAR(CURRENT_TIMESTAMP, 'DD-MM-YYYY HH24:MI:SS.FF2'));

                        DBMS_OUTPUT.PUT_LINE('Rows left: ' || rowsLeft);

                    END IF;

                    "tsp_DeleteSysProcessLogById"(input_ids(i));

                    rowsLeft := rowsLeft - 1;

                END;

            END LOOP;

        END IF;

    DBMS_OUTPUT.PUT_LINE('Number of records processed: ' || allRowsCount);

    DBMS_OUTPUT.PUT_LINE('---------------------------------------------------------------');

    DBMS_OUTPUT.PUT_LINE('Execution time: ' || TO_CHAR((CURRENT_TIMESTAMP - startDate), 'DD-MM-YYYY HH24:MI:SS.FF2'));

END;

/

--CALL "tsp_DeleteSysProcessLog"(10000, '2,4');

 

 

Thanks, I have reported it to Support since there are records even from April that haven't been archived.

I found Beesender tried to delete process log by a process to delete items from Process log (actual). Is that correct or is there any risk of doing that way? 

Van Ly,

Process log is connected to several other tables so there is a risk of not deleting all necessary records or possibly corrupting some necessary data.

Best regards,

Dennis  

Show all comments

I need to know how to add a dropdown with the channels in the notes tab just like the one in the feeds session. Thanks.

File attachments
Like 0

Like

1 comments

There is no easy way to do that. Please investigate how the feed functionality works and create the same functionality for notes from scratch.

Show all comments

When I open my page on a large screen the simple info button / user hint appears as desired/correctly:

However, when I minimize the screen or view my page on a smaller screen, the simple info buttons / user hints appear over the top of the boolean field, where as the text field info button remains the same?

How am I able to wrap the info button to the boolean fields?

Like 0

Like

1 comments

Please feel free to modify CSS according to your needs. The article by the link below explains how to add a new CSS class. If you add it to the BootstrapModulesV2 module then it will be loaded after loading the application. 

https://community.bpmonline.com/questions/how-add-custom-style-control-…

Show all comments

Does BPM'Online automatically refresh the list of users from Azure AD when it is configured to use Azure AD as SSO? Or do we have to manually create/update/delete the users in BPM'Online as well in addition to maintaining them in Azure AD?

Thanks in advance for all the help...

Like 0

Like

7 comments

Hello! 

This can be done turning on JIT on the site. To do this you would need to send a letter to the support@bpmonline.com if your site is located in cloud as well as do some additional settings on your side. Please see the article below: 

https://academy.bpmonline.com/documents/administration/7-14/setting-just-time-user-provisioning

Best regards, 

Dennis

Dennis Hudson,

​​​​​​Thank you for your reply! I am working on an on-premise setup. Can JIT be configured on an on-premise installation along with Azure Active Directory as SSO provider? Thanks again for all the help...

amanthena,

Yes, it can be activated for on-site and cloud deployed applications. Please refer to this Academy article when setting SSO up 

https://academy.bpmonline.com/documents/administration/7-14/setting-single-sign-adfs#XREF_62278_ADFS

Best regards,

Oscar

Oscar Dylan,

Thank you!

Oscar Dylan,

Dennis Hudson,

Is it possible to automatically sync the roles (organizational and functional) of the user in Azure Active Directory through JIT to BPM'Online? I was referring to the documentation mentioned here - 

https://docs.microsoft.com/en-us/azure/active-directory/saas-apps/bpmonline-tutorial



At the end of this article, there is a point about user creation - 

"In this section, you create a user called Britta Simon in Bpm’online. Work with Bpm’online support team to add the users in the Bpm’online platform. Users must be created and activated before you use single sign-on."



It mentions that the users would have to be manually "created" and "activated" in BPM'Online for SSO to work. This contradicts JIT feature on BPM'Online. Could you please re-confirm if JIT is valid for Azure Active Directory(AAD) and that it is also possible to automatically synchronize the organizational and functional roles in AAD to BPM'Online through JIT?



Thanks in advance...

 

Dennis Hudson,

Oscar Dylan,

Hi! Any update on this? Your help here would be greatly appreciated. Thanks!

amanthena,

 

Hello, 

 

You can synchronize user's data from Active Directory to Creatio with a help of JIT function.

Each time a user logs on using SSO, the data on the contact page are updated with the data obtained from the identity provider. If a user has no account, it can be created when the user logs in for the first time.

If there is already a user with such username, the data will be simply updated based on the received information, if there is no user with such username, a new user will be created and provided with all the needed licenses based on it's user type (company employee/portal user). 

To specify contact fields that should be populated with data from the identity provider, configure the mapping of the SAML Assertion fields with Creatio columns. This is done in the SAML Assertion of the identity provider and in the [ SAML field name converters to contact field name ] lookup.

You can find more detailed information in the article below:

https://academy.creatio.com/docs/user/setup_and_administration/user_and…

As for the roles, Creatio should have the same roles as Active Directory (and as user as well). This way, once the user logs on, all their roles are being updated based on the received information. However, if the user has roles that are not presented in Creatio, new roles will not be created (but can be updated during the next login, if you decide to add same new roles to Creatio).

 

Hope it clarifies!

Best regards,

Anastasiia

Show all comments