Cognos 10.2.2 how to look at what reports are being sent to a specific recipient? - cognos

For Cognos 10.2.2 or Cognos 11
How can we look at what reports are being sent to a specific recipient?
Maybe there is an easy way to query the content store?
I did notice some third party tools (Motio) and any feedback/advice would also be helpful

I assume you know some basics of querying the Content Store, basic data exploration techniques, and SQL, so I won't go over that.
Look in CMOBJPROPS26.DELIVOPTIONS. You'll need to parse the text. There are several fields you may be looking at:
to, cc, and bcc contain CAMID values that relate to your external
directory namespace (?). You can look these up on CMOBJPROPS33.
toAddress, ccAddress, and bccAddress contain email addresses
(user#domain.com).
You'll use CMOBJPROPS26 to join to the rest of the query by CMID. The objects referenced by CMOBJPROPS26 are not reports. In my environment, I have emails related to objects of these classes:
agentTaskDefinition
historyDetailRequestArguments
jobDefinition
jobStepDefinition
reportVersion
schedule
You'll need to figure out how each of those relates to reports. You may be able to use CMOBJECTS.PCMID = CMOBJECTS.CMID or you may need to go through CMREFNOORD1, CMREFNOORD2, CMREFORD1, and/or CMREFORD2.

Related

Advanced Find giving wrong(?) result

I am using Microsoft Dynamics CRM 2011.
I have to get all the activities which are of type Appointment, Campaign Activity, E-mail, Opportunity Close, Phone Call, Recurring Appointment or Task. There are some more filters added as per my need. I am using Advanced Find for this one. Till this, my advanced find looks like:
It is returning me results, which are valid.
Now, I want to add another clause to this and shortlist the results which I am getting till now. The clause is: Don't show me the activities (most of which are E-mails) in which sender or recipient contains 'Test'.
For this I have designed following:
As per me, this should give correct results, but this is returning me no records.
The way I read your requirement:
Don't show me the activities (most of which are E-mails) in which
sender or recipient contains 'Test'.
It can be rewritten as: Show me all activities where:
Sender contains data
Sender does not contain test
To Recipient contains data
To Recipient does not contain test
That can be done in the following way (where you go down to the Sender Activity Party, back up to Activity and then down to the To Recipient Activity Party):
This approach requires that the returned Activities have both types of Activity Party (which is probably only true for most Emails), which might not be what you intended.
To keep it simpler, you might be able to do with simply avoiding any Activity Party containing test:
Note that also this approach (as well as your approach) only shows Activities that actually have an Activity Party.
just wondering if your activity party conditions should be grouped under "OR".. otherwise, it's "AND" altogether, so you are currently looking for the activities where your activity party is both a sender and a recipient.. In other words, maybe this would work?
You need to go deeper:
(pardon the ASCII art, don't have a screenshot at hand now: this is how the advanced find window should look)
Look for: Activities
Activity Type Equals E-Mail;...
(put all the other conditions here)
Activity Parties (Activity)
Participation Type Equals Sender;To Recipient
Party(User)
Full Name Does Not Contain test
In this PoC I'm assuming all parties are System Users. You cannot mix different kinds of activity parties (such as, an e-mail sent to a contact).

Edit Dynamic Values in Workflows

I am trying to retrieve and extract specific data from incoming emails in Microsoft Dynamics CRM to use them in workflows (for update records).
The only option i can find so far while working with workflows is to get the full subject or the full body of the email.
Is there a way to extract specific part of these two?
For example, how can i extract from the Subject the first 10 characters or how can i search the Subject or Body for specific characters or filter with REGEX?
I don't want to create a custom plugin, but the use of JavaScript would be great if it can be used to automatically get triggered without any user action.
Unfortunately, OOB workflow functionality does not allow you to manipulate the data within these fields. Javascript (in the context of CRM) is a client side scripting tool, so could not be run without user interaction.
I would suggest creating a Custom Workflow Activity that takes the subject and body values as parameters (from your original workflow). Then within the custom workflow you can perform string manipulation using common C# commands, and then return these values to the original workflow or update/create records within your custom workdflow.
The following URL gives a good example of creating a Custom Workflow Activity.
https://msdn.microsoft.com/en-gb/library/gg334455.aspx

How can i provide role based security to notes in MS CRM 2011

I am working on Notes in MS CRM 2011.
I have many roles over many entities.
I want role based security to notes for any entity records.
let me explain what i want:
Suppose i have an entity namely E1.
Role R1 and R2 has read and write access to E1.
But i want that user having role R2 can only upload and view notes for any record of entity E1.
Hope now my requirement is clear to all of you.
Please suggest me how can i achieve it using MS CRM 2011.
I can think of two ways to do this.
You can create a plugin on create/update of the annotation(note) and check if the note is related to entity E1 and check the roles of the user making the change and see if they only have the R2 role. If that is the case you can throw an InvalidPluginExecutionException with a message like 'You do not have permissions to edit/create these records'.
You can try using role based forms or JS to hide the notes area for R1 users.
You probably want to use a combination of #1 & #2. The users can still access the notes via advanced find and thus will be able to edit those notes. The plugin will prevent that fringe case as well.
*Edit
There are a couple more things that you might be able to deal with the advanced find records. You can remove the annotation entity from advanced find via the unsupported method described here.
Otherwise there is one more thing you can do if you want to prevent those results showing up at all, and you want to stay supported. You can write a plugin on Post-RetrieveMultiple of the annotation entity to strip out the results directly from the return result. There are a couple downsides to this though.
You are executing your plug-in every time the retrieve multiple is called on the entity. So this code will need to be as efficient as possible since that delay will be noticeable by the end user whenever they retrieve these records.
Things like advanced find will display odd results. For example if your paging is set to 50 records and you strip out 10, they will only see 40 records on their page and the total record count will include the records you are stripping out.
Through roles i don't know a way to do that, because you configure the access to notes generic, so applies to all entities. You have to access with Javascript navigating in DOM. Check a example:
document.getElementById("notescontrol").contentWindow.document.getElementById("NotesTable")
You can check this with the help of a develeper tool in your browser.

How do I store this external data in SharePoint?

I am using Visual Studio 2010, SharePoint 2010 with custom document content types and forms. And plan to also use jquery to build the document add/edit/view forms.
I am developing a solution where I want to have a document library where each document uploaded also has a number of external data elements added as metadata.
The tricky part I'm trying to figure out is I want the user to be able to specify and add a multiple number of those same external data elements.
I'm trying to figure out how I represent the data internally in SharePoint. My initial thought is to programmaticly add hidden external fields as the users adds those external selections. But then I also think of simply storing those external elements as non-external text fields but have my own code which performs the external data lookup and validation.
I'm not adverse to significant custom coding, as I'm probably going to need to do a lot anyway since even the user interface is going to be a jquery tabbed form to enable all the external data the user will be able to associate with each SP document.
I've made an attempt to hopefully further explain what I'm trying to do and included that image. Essentially I'm wanting to add 1+ external data relationships to each document, as desired by the user.
It uses just example data. I'll actually have 4-7 different complex relationships much like the example. And the user is permitted to drilldown and select 1, 2 or all 3 of the dropdowns.
Think of it as similar to how here on Experts-Exchange we can add multiple zones to a question.
An example illustration is here: http://flic.kr/p/aFUSJn
Could you simply add a multi-line text column and have the user input the metadata with comma's, then use your code to seperate the data and do what you want with it?
You said you were not adverse to significant custom coding :)
One solution is to use SharePoint content types. The trick is that not all items in a list need to have the same content type.
Therefore, you can do the following:
As the user is selecting the fields he wants to use you generate or select a content type that matchs those fields.
You then add your document to the document list using the content template
You then have all your information strongly typed in SharePoint lists.
We have previously built a system where we generate content types based on xsd files, this worked very well.

Exposing Sharepoint Metadata to web service search

Our organization has started a project hoping to use sharepoint to create Electronic Records for Clients rather than the paper method which tends to have documents get lost etc.
I have been tasked with interfacing with sharepoint to find documents associated with a given client. Each document has sharepoint metadata that stores a ClientNumber, but I am having issues finding how to use the QueryService web service to search on this specific field. There are about 30 document libraries I am to search through, so believe the QueryService is probably a better fit for this particular situation than ListService.
I am using VB code to do the searching, and the following is the querytext I am sending to the QueryEx Function.
...<QueryText type='MSSQLFT'>
SELECT rank, title, path, Description, Write, Size, author, sitename, FileExtension, HitHighlightedSummary, HitHighlightedProperties, keywords, IsDocument from Scope() WHERE FREETEXT(DEFAULTPROPERTIES,'" & Me.ClientNumber.Text & "') AND IsDocument = 1 ORDER BY Rank DESC -- </QueryText>...
I would like to be able to include something in the WHERE clause that explicitly says a match must be found in the ClientNumber field but I have yet to find a way to do this, and as a result of this we are getting results where other metadata or one of the document properties such as document size is equal to the client number.
I have found documentation that there is a way to expose metadata through property mappings and this then becomes searchable. I however cannot find a way this is done in WSS 3.0, is this a MOSS 2007 only feature, or a feature available in 2010?
If anyone can tell me if there is possibly some other way to search based on metadata, or give some insight as to where I should be looking for more information it would be greatly appreciated.
You need to install the Search Server Express from Microsoft, it is free and it gives you the MOSS search engine, where you can do anything you want

Resources