How to trigger page events in multiple update - dynamics-crm

I am working on mscrm 2016 on-premise, when I change a field on multiple records (in the advenced find window) I see that the function connected to that field-change (onChange event) is not fired, it happenes only when I change my field on a single page but not on a multiple change, is there an option to fire onChange event in a multiple change ?

Bulk edit will not trigger form scripts, and this is expected (i.e. Product design/behavior).
In that case you have to move the business logic to the server side code (plugin or workflow) so it will execute on all transactions from SDK/API/ETL/UI rather than client side scripting which executes only from UI.

Related

Is it possible to extract data from the body of an outlook email and throw it in SQL automatically?

Situation: We get audit emails every morning. The body of the email contains a table with various columns. The column labelled 'ID' is the unique key for each row. I have to copy the data from the ID column, format it in note++, and then paste it in a pre-filled query in SQL were I run it.
Question: Is it possible to automate this process? if so, where could I start? I would be nice if I could have something that either runs automatically or manually, reads the email, extracts the data from the column, formats it, and throws it in a query and executes.
Additional Details: The emails are always from the same distro, fire at the same time every day, and the table columns are static.
My skill Level: Beginner but resourceful and eager to learn, so please don't crucify me if I am not clear.
Yes, it is possible. You can develop a VBA macro or a COM add-in if you need to distribute your solution on multiple machines. Basically you are interested in handling the NewMailEx event of the Application class which is fired when a new message arrives in the Inbox and before client rule processing occurs. You can use the Entry ID returned in the EntryIDCollection array to call the NameSpace.GetItemFromID method and process the item. This event fires once for every received item that is processed by Microsoft Outlook. The item can be one of several different item types, for example, MailItem, MeetingItem, or SharingItem.
After retrieving the incoming item you can process it by getting property values and adding them to the SQL Db.
You may find the Walkthrough: Create your first VSTO Add-in for Outlook article helpful.

Event Sourcing - Data supplied to Command and data saved in Events

I am looking into event sourcing and I have a few thoughts that I need to get my head round.
Take for example an online shop -
The customer adds an item to the basket and saves their order.
The command handler could create an order on the customer aggregate root and add an OrderCreated event which contained the customer id, order id, item id, quantity and unit price. All pretty straight forward but what if the aggregate needed to check to see if that item was on special offer?
If this was for example a basket service would it subscribe to events from the catalog service and store it's own projections of the catalog service which it could then use, so then the basket service would comprise an event store and also some form of projection of the catalog service?
Or if in the example I've just described, if the basket and catalog functionality were part of the same application and they only held event data, then when a customer creates an order the handler would pull all ordered items from the event store via a repository, apply all events to them and then return them to the handler in order to check if the item was on special offer.
what if the aggregate needed to check to see if that item was on special offer?
It needs to execute a query to get the information it needs.
From the aggregate point of view those data are external, so it (or the handler sending the command to it) needs a query to access that information.
How the query work is up to you (there are pros and cons for each way), the query handler can:
Call a repository that loads an aggregate and check for the special offer (you can also think to have event sourcing in just one part of your system and having this part using another way to store dara, or not)
Make a remote call to the Catalog Service API to check for the special offer
Do a query to a local db, that is populated reading events emitted by the catalog service and stored "locally" to the basket service

On-Message Trigger working just in the Form Level?

i'm trying to create a Form Module where i show how to use the different Trigger Levels in Oracle Forms (I have a blog).
I'm trying the create this scenario:
Have the user update a specific Item (SALES_REP_ID) and show a message (On-Message Trigger) in the Item Level.
Have the user update a another Item (different than SALES_REP_ID) in the same Block(Orders) and show a message in the Block Level.
Have the user update a different Block other than Orders and show a message in the Form Level.
I know this could be done in a different way, but as i said i'm trying the show how the hierarchy in the Form Triggers works.
What i did trying the achieve this:
I created the ON-MESSAGE Trigger with the property: Execution Hierarchy = Override in every level as showed in the image:
enter image description here
For some reason only the trigger in the Form Level is firing even if i change the property Execution Hierarchy to Before or After in all the triggers.
Any suggestion would be highly appreciated.
In case you want to check the issue a bit closer, module is in this Google Drive Link:
https://drive.google.com/file/d/0BzbEh5klWdQdQmJGTDRjRFNULVk/view?usp=sharing
Data Base: ORCL (Sample DataBase), Schema: OE.
I think, you should get rid of all ":System.Message_Level" statements. They may prevent to fire on-message trigger(s) with respect to their level.

Display work items which are waiting until backend service finishes

In my workflow I have iterative loop which check the table value until it matches a workflow value using DB Execute.
This stage arise after completing initial and step After values matches it will proceed to next step.this has created by adding delay function.
However my client required to show the list work items which are pending withing content navigator. Is there a way to achieve this.
Try to add users (who want to track status) in F_Trackers system Workflow Group.

MS CRM Save + Copy as new (Custom Entity)

I have a custom entity in Microsoft CRM (4.0). The user has to input records however usually they have a batch of 20+ records that are almost the same apart from 2 or 3 fields which need changing. I know I need to write some custom code to enable this functionally. However can anyone recommend any methods to do this.
Ideally there should be a button that will save and create a copy as a new entity.
My Current way of thinking is to pass all the details as part of the URL and use javascript to strip them out on the page load event. Any ideas welcome.
Thanks
Luke
I found the answer here:
http://mscrm4ever.blogspot.com/2008/06/cloning-entity-using-javascript.html
I've used it and it appears to work well.
Since there are numerous fields, but only certain fields values are different, then i am thinking to set the default value to all the fields, so that users just need to alter those values when needed.
In my approach, i will hook a javascript function on load of the form data entry screen and use XmlHttp approach/Ajax approach to hook to the custom web service to pull/retrieve the default values of each fields. Or you can set those values at the javascript function itself, but the drawback of this, it's difficult to customize later. So i will choose the approach to hook to the custom web service and retrieve those value from some application parameter entity.
Your idea of providing a "clone" button is also a great idea, which means that it will duplicate all the attributes of the previous record, into a new record, so that it will save time for data entry person to customize the different value
EDIT
Since you would enter records in batch mode, how about customizing .ASPX screen to enter records. By customizing through .ASPX screen, you can use a tab , so that users can browse through tabs, to customize the value/attribute of each record.
There will be a "save" button as well as "clone" button to clone some common attribute or value.
I would create a custom web service that would accept the entity type and the ID of the record I'm cloning. Your "Save and Clone" button would call the service, and the service would handle the details of retrieving the current record and deciding which fields to set on the new record. The service creates the record, and sends the Guid of the record back to your button, which then opens up the newly created record.
This way, you avoid the messiness of setting/getting values in JavaScript and tying which fields to set/retrieve directly to your OnLoads, as well as avoiding the possibility of query string that's too long.
The service could easily be sufficiently generalized so that all you'd have to do is add your button to any entity, and it would work, assuming you'd set up your service to handle that particular entity.
One possible downside is that since the clone record button would actually create the record, the user would be forced to delete the cloned record if they decided they didn't want to clone the record after all.

Resources