Custom Function List

A Draft has an associated list of Custom Functions which can be accessed from the Draft Objects table on the Draft home page.

The Custom Function list displays the name and language of the Custom Function, and the Edit Checks and Derivations in which the Custom Function is used.

The Source Code can be displayed by clicking on the expand row icon in the left column.

The list can be search by the name of the custom function, and/or the source code can be searched (case insensitively).

Rave API and V2 Conversion

For C# Custom Functions, the API column shows the Medidata Rave API the Source Code uses: V1, V2, Mixed (both) or None (neither). The V2 Conversion column shows, for those using V1, whether converting them is Automatic or Manual, as described on the Custom Function page. If converting a function has been tried and it couldn't be converted, the column shows the reason instead; hover over it for the detail.

The filter section has a filter for each: the API filter shows only functions using V1, V2, both or neither, and the V2 Conversion filter's 'Flagged' button shows only functions that couldn't be converted. The V2 Conversion filter is shown if your Organization is licensed to convert Custom Functions.

The Actions column displays the Custom Functions it calls (as CF: <name>) and the actions it performs, found by parsing its C# source. Code in comments is ignored, and text inside strings is never mistaken for code. Both the V1 and the V2 Medidata Rave API are recognised:

Action

V1

V2

Query

CustomFunction.PerformQueryAction(...)

Rave.Marking.PerformQueryAction(...)

Comment

CustomFunction.PerformCommentAction(...)

Rave.Marking.PerformCommentAction(...)

Sticky

CustomFunction.PerformStickyAction(...)

Rave.Marking.PerformStickyAction(...)

DataPageRequiresSignature

CustomFunction.SetDataPageRequiresSignature(...)

setting .RequiresSignature

DataPointRequiresSignature

CustomFunction.SetDataPointRequiresSignature(...)

(none)

AddCRF

.AddCRF(...) or new DataPage(...)

.AddDataPage(...)

SendEmail

Message.SendEmail(...)

Rave.Messaging.SendEmail(...)

DynamicSearchList

(DynamicSearchParams)

Rave.Context.DynamicSearchParams

Enter, AddMatrix, MergeMatrix, SetTimeForward, SetInstanceName, SetDate, SetNonConformant

a call of the method with that name, e.g. .Enter(...)

the same

Active

assigning .Active, e.g. dp.Active = false

.Activate(...) or .InActivate(...)

IsVisible

assigning .IsVisible

assigning .IsVisibleRaw

SubjectStatus, Name

assigning that member of an object, e.g. subject.SubjectStatus = ...

the same

Names are matched exactly: a method called ReEnter is not an Enter action, and a local variable called Name is not a Name action.

Converting to the V2 API

To convert C# Custom Functions from the V1 to the V2 Medidata Rave API, select them and choose "Convert to V2 API" from the "Actions" menu. The action is shown if your Organization is licensed to convert Custom Functions; see Converting to the V2 API for what uses a conversion. Only the selected functions that use V1 are counted and converted; Custom Functions linked to them by calls are converted with them. The conversion runs in the background, and its progress window has a Cancel button. See Converting to the V2 API for what is checked before a conversion is saved, and How Custom Functions are converted for the changes made.

A Custom Function that couldn't be converted shows its reason in the V2 Conversion column; hover over it for the detail. The "Flagged" filter shows only those Custom Functions.

Generating Documents

If your URL has Document Templates defined for Custom Functions, a "Documents" entry appears in the "Actions" menu above the list. The generated document receives the Custom Functions you have selected with the row checkboxes, and those matching whatever search and filters are active, so a report can cover just the part of the list you are looking at.