Blue Prism Product

 View Only
last person joined: 12 hours ago 

This community covers the core Blue Prism product.

 Blue Prism Manifest V3 Announcement - Need utility for Azure Hosted

Saiful Khan's profile image
Saiful Khan posted 05-09-2022 14:51
We have downloaded the Manifest V3 Impact Assessment Utility and We followed the instructions mentioned in README file came with the package, downloaded and ran it, but were unable to retrieve any VBO’s(PFA Snip). Probably this could be as we are Azure hosted and the Utility only has 2 authentication Modes (Windows and SQL server)

 

Manifest V3 Impact Assessment Utility - No VBO's retrieved

Could you please let us know if Blue prism has an utility for Azure Hosted Environment (with Azure authentication modes) or related SQL scripts that we can run to extract the output for our VBO’s?

Eric Wilson's profile image
Eric Wilson
@Saiful Khan,

Can you please try running the following command, from a command prompt, and see if it's able to connect to your SQL instance:

​bcp "SELECT [processxml] FROM [<YOUR BP DATABASE NAME>].[dbo].[BPAProcess] WHERE ([ProcessType] = 'O' AND [AttributeID] <> 1);" queryout "BluePrism_VBOs.xml" -T -w -S <YOUR DB SERVER INSTANCE>

If the above command doesn't work, please try this variation:

bcp "SELECT [processxml] FROM [<YOUR BP DATABASE NAME>].[dbo].[BPAProcess] WHERE ([ProcessType] = 'O' AND [AttributeID] <> 1);" queryout "BluePrism_VBOs.xml" -U <USERNAME>@<SERVER NAME> -P <PASSWORD> -w -S tcp:<YOUR AZURE DB SERVER INSTANCE>

Here's an example of the second command sequence:

bcp "SELECT [processxml] FROM [BluePrism6104Dev].[dbo].[BPAProcess] WHERE ([ProcessType] = 'O' AND [AttributeID] <> 1);" queryout "BluePrism_VBOs.xml" -U jdoe@enterprise -P NotVerySecure01 -w -S tcp:enterprise.database.windows.net

Cheers,
Eric
Saiful Khan's profile image
Saiful Khan
Thanks for the Response Eric.

I tried running the commands and getting " the system cannot find the file specified"

Eric Wilson's profile image
Eric Wilson
@Saiful Khan,

Ok, this means you don't have the BCP utility installed on your system. BCP is a Microsoft utility that the Mv3 utility uses to perform the connection to the SQL Server instance and perform its various queries. You need to have it installed for the Mv3 utility to function properly. Please refer to the readme included with the Mv3 utility for the Microsoft link to download the BCP installer.

Cheers,
Eric​
Saiful Khan's profile image
Saiful Khan
When I run the command on VM where SSMS is installed it says we have 15.0.1300 


Shows on the below path as well, do you still recommend installing it manually?


Eric Wilson's profile image
Eric Wilson
@Saiful Khan,

As the readme states, BCP is a prerequisite of the Mv3 utility, so whatever machine you’re trying to run the Mv3 utility from needs to have BCP installed on it.

If you run the Mv3 utility from the same VM where you have SSMS installed, you’re already covered as SSMS  includes BCP.​

Does that make sense?

Cheers,
Eric
Saiful Khan's profile image
Saiful Khan
Yes, Understood Eric. 

As I mentioned we ran the MV3 utility and the commands you provided on the VM where SSMS is installed, but still no luck.

Thanks,
Saiful
Eric Wilson's profile image
Eric Wilson

@Saiful Khan,

Ok, guess I’m confused then. 😂 When you tried running the BCP command that I posted, did you run it from the same folder where you ran the BCP command that returned the version information?​

If so, it might be a permissions issue with writing the VBO info to the output file.

Cheers,
Eric

Saiful Khan's profile image
Saiful Khan
Correct, I ran it from where I got the version information.

As you said it might or might not be permission issue in writing the output, when  I ran the utility it created some dummy file and we also tried running the command without Queryout , still no luck


Eric Wilson's profile image
Eric Wilson
@Saiful Khan,

Did you try running both versions of the BCP command I shared or just one? On the second one, can you try running it without the "tcp:" portion of the server address. I don't think it will make a difference, but I want to try covering all the options.

Below is a link to a blog post I came across from Microsoft that implies use of BCP against an Azure SQL instance is supported and shouldn't be that difficult to attach to.

https://azure.microsoft.com/en-us/blog/bcp-and-sql-azure/

Cheers,
Eric​​​
Saiful Khan's profile image
Saiful Khan
Yes, I ran both. Knowing 1st command is not applicable as we do not have Windows Authentication mode to our Azure SQL

Yes, I even though it won't be that difficult to attach to as its turning out to be. Tried without TCP as well did not work.

Do you know why are we querying ProcessXML in commands instead of just getting Processes and it related VBO's using Java Script.
We just have like 40 bots in Dev/Prod env, can we get direct SQL query that the tool is doing in the background?
Saiful Khan's profile image
Saiful Khan
The user has DB_datareader role, does it require an elevated role to be able to fetch the information and write the output?
Eric Wilson's profile image
Eric Wilson
@Saiful Khan,

I'm not sure what you mean about getting processes and VBOs using JavaScript. We query for ProcessXML because that's the field in the database that contains the actual definition of each process/VBO that's defined in your Blue Prism environment, and those definitions are stored as XML. So, the utility pulls down the XML of the VBOs and then performs some logic to work through each VBO definition looking for VBOs that use Chrome or Edge as well as VBOs that make use of Insert JavaScript or Invoke JavaScript actions.

If you open a ticket with support, they can provide the SQL queries, but the queries alone will not provide you with the final list of impacted VBOs (if any exist in your environment) and dependent processes.

Cheers,
Eric
Eric Wilson's profile image
Eric Wilson
@Saiful Khan,

The Mv3 utility only performs 3 queries against the database and all three are just SELECTs, so I believe DB_datareader​ should be sufficient.

Cheers,
Eric
Saiful Khan's profile image
Saiful Khan
Sure, thank you. 

One last question to conclude, if the BCP command line works , does it give us the impacted Processes and related VBO's as output or just ProcessXML and we need to manually figure out?
Eric Wilson's profile image
Eric Wilson
@Saiful Khan,

The BCP commands return raw data. The first query returns the XML content of the VBOs in the system. The second and third query return CSV data ('|' delimited) related to process dependencies and VBO grouping.

Here's the general workflow of the Mv3 utility:
  1. Get VBO definitions - using BCP
  2. Get VBO group information - using BCP
  3. Get dependency information - using BCP
  4. Mv3 adds root element tag to VBO XML data file
  5. Mv3 begins processing VBO XML data (one VBO at a time)
    1. Checks for Application Modeller entry in VBO definition.
      1. If it exists, checks for browser definition.
        1. If it exists, checks to see if it's Chrome or Edge
          1. If so, add to list of impacted VBOs
          2. If not, ignore
    2. Checks to see if there are specific Launch/Attach action definitions for each VBO (this could happen in cases where folks don't completely fill out their App Modeller definition, but instead handle browser startup and attach on their own.
      1. If it exists, checks for browser definition.
        1. If it exists, checks to see if it's Chrome or Edge
          1. If so, add to list of impacted VBOs
          2. If not, ignore
    3. Check for Invoke Javascript or Insert Javascript entries on Navigate stages within the VBO definition.
      1. If they exist, and the browser type is Chrome or Edge, add to list of impacted VBOs
  6. Mv3 makes note of the group (aka folder) each impacted VBO belongs to.
  7. Mv3 builds the list of processes and VBOs that depend on any impacted VBO.
  8. Mv3 writes the two output files.
Cheers,
Eric
Eric Wilson's profile image
Eric Wilson
@Saiful Khan,

I have one more variation of the BCP command that might work. Can you try the below command?

bcp "SELECT [processxml] FROM [dbo].[BPAProcess] WHERE ([ProcessType] = 'O' AND [AttributeID] <> 1);" queryout "BluePrism_VBOs.xml" -d <BP DATABASE NAME> -U <SQL SERVER USERNAME> -P <SQL SERVER PASSWORD> -w -S <AZURE VM INSTANCE> 
I've removed the database name from the query and added it as a direct parameter input to the BCP utility. I've seen a few Microsoft articles where this seems to help.

Cheers,
Eric
Ramón Requena López's profile image
Ramón Requena López
Another alternative, which may take a while depending on the size of ur object library, would be making a BP release of all ur VBOs (Invoke and Insert JS actions are only available at object level), open that BP Release Notepad++ and use the search function in order to find entries of Invoke/Insert JS. 

You could script a macro to iterate through the XML and retrieve every time the entry shows up and the corresponding object. Of course, do this as last resort/work around if you don't get the Utility to run properly after all the input from Chris.
Eric Wilson's profile image
Eric Wilson
@Saiful Khan - Have you tried the most recent BCP command I posted?​

Ramon - Yes, that is an option. However, the utility performs a few extra steps to provide you information about the folder the VBO can found in as well a list of any other VBOs/processes that depend on it too. You can get all that information from working within the Interactive Client UI though. It just takes time.

Cheers,
Eric
Saiful Khan's profile image
Saiful Khan
Sorry for the delayed response Eric was in training last 2 days.

We have tested both MV3 1.9 utility and also the above command you provided with -d (database) as parameter. Still no luck
Blue prism mentioned for 1.9 they fixed for Azure DB but doesn't for us, with the same credentials I'm able to connect to SQL instance (as part of validation)



Our Authentication mode to connect to SQL instance




Eric Wilson's profile image
Eric Wilson
Hi @Saiful Khan,

I'm at a loss for what's going on in your environment as we've had other customers with SQL Server deployed on Azure that are not experiencing this problem. Having said that, since you have access to SSMS you can just run the query directly from it. Below is a query that will return a list of objects that use Chrome or Edge and that are using Insert Javascript or Invoke Javascript actions. If there are any matches you'll see two columns in the output: the name of the specific VBO as well as the group (aka folder) it can be found under in the Interactive Client.

SELECT [blueprism_db].[BPAProcess].[name] as 'VBO Name', [blueprism_db].[BPVGroupedobjects].[groupname] as 'Group' 
FROM [blueprism_db].[dbo].[BPAProcess] 
INNER JOIN [blueprism_db].[dbo].[BPVGroupedObjects] ON ([blueprism_db].[dbo].[BPAProcess].[processid]=[blueprism_db].[dbo].[BPVGroupedObjects].[id]) 
WHERE ([blueprism_db].[dbo].[BPAProcess].[ProcessType] = 'O' AND [AttributeID] <> 1) AND (([processxml] LIKE '%WebInjectJavascript%' OR [processxml] LIKE '%WebInvokeJavascript%') AND ([processxml] LIKE '%chrome.exe%' OR [processxml] LIKE '%msedge.exe%'));​

Cheers,
Eric
Saiful Khan's profile image
Saiful Khan
Thanks Eric for the query, was getting Multipart-Identifier bound with the below query, have bounded with aliases and extracted the result.

SELECT [blueprism_db].[BPAProcess].[name] as 'VBO Name', [blueprism_db].[BPVGroupedobjects].[groupname] as 'Group' FROM [blueprism_db].[dbo].[BPAProcess] INNER JOIN [blueprism_db].[dbo].[BPVGroupedObjects] ON ([blueprism_db].[dbo].[BPAProcess].[processid]=[blueprism_db].[dbo].[BPVGroupedObjects].[id]) WHERE ([blueprism_db].[dbo].[BPAProcess].[ProcessType] = 'O' AND [AttributeID] <> 1) AND (([processxml] LIKE '%WebInjectJavascript%' OR [processxml] LIKE '%WebInvokeJavascript%') AND ([processxml] LIKE '%chrome.exe%' OR [processxml] LIKE '%msedge.exe%'));​




Have bounded it with out changing the logic and extracted result against blueprism DB. will validate across the env from BP Studio.

select p.name as 'VBO Name', g.groupname as 'Group' from bpaprocess p inner join BPVGroupedObjects G on p.processid = g.id WHERE p.ProcessType = 'O' AND p.AttributeID <> 1 AND p.processxml LIKE '%WebInjectJavascript%' OR p.processxml LIKE '%WebInvokeJavascript%' AND processxml LIKE '%chrome.exe%' OR p.processxml LIKE '%msedge.exe%'
Eric Wilson's profile image
Eric Wilson
@Saiful Khan,

Glad to hear we’ve made some progress. 😁

Cheers,
Eric​