Skip to main content

Bulk Editor

Bulk Edit is a spreadsheet-style grid in the BimlFlex app for changing many rows of metadata at once. The grid shows one metadata type at a time, such as every Connection or every Column of the selected customer and version, with one row per item and one column per field.

Every change you make in the grid is held apart from the saved metadata until you click Save. The other editors and the rest of the app keep showing the saved values while you work. You can review every pending change and every validation finding before you save, and Discard drops all of them.

Opening Bulk Edit​

Open Bulk Edit from the left menu of the BimlFlex app. It works on the metadata of the customer and version selected in the app, so select those first.

The grid opens on the type you used last, or on Connections the first time. The type is part of the page address, for example #/bulk-edit/connection or #/bulk-edit/column, so a bookmark opens the same grid again. An address with a type the grid does not know shows Unknown entity type "<name>". together with the type selector.

If an editor form holds unsaved changes to rows of the type you open, the Unsaved Changes dialog appears first. Staying keeps you where you are. Leaving without saving discards those form changes before the grid opens.

Choosing a metadata type​

The Entity type field at the left of the toolbar selects the type the grid shows. Type part of a name to narrow the list. The list offers these types, in this order:

Types
Batches, Build Settings, Business Attributes, Business Classifications, Business Domains, Business Entities, Business Entity Types
Business Model Configurations, Business Model Entities, Business Models, Business Relationships, Business Subjects, Business Tags
Column Mappings, Columns, System Columns, Connections, Overrides, Customers, Data Type Mappings
Extension Points, Macros, Object Mappings, Objects, Parameters, Projects, Solution Settings, Versions

If you switch to another type while the grid holds unsaved changes, the Unsaved Changes dialog asks what to do. Staying keeps you on the current type with every change in place. Leaving without saving discards the changes.

The toolbar​

ControlWhat it does
Entity typeSelects the metadata type the grid shows.
Column profileApplies a saved column layout. It appears once a profile exists for the type. See Column layouts and profiles.
Column profile actionsThe bookmark button. Saves, updates and deletes column profiles.
SaveSaves every pending change, new row and deletion in one operation. It is disabled while nothing has changed and while any cell must be fixed before saving.
DiscardDrops every pending change, removes every new row and takes the mark off every row marked for deletion. It is disabled while nothing has changed.
Revert SelectedReverts the changed cells inside the current selection.
Add RowAdds one empty row at the bottom of the grid.
Delete RowsMarks every row the current selection touches for deletion.
ColumnsOpens the Columns panel, where you show and hide columns.
Change countSummarizes the unsaved work, for example 3 unsaved changes, 1 new row, 2 rows to delete. It shows while there is unsaved work.
FindSearches the grid. See Finding values.

While a save runs, an overlay such as Saving 12 rows… or Deleting 3 rows… covers the grid and the toolbar actions are disabled.

Columns​

The grid shows every field of the type as a column. The column headers are the field names written out as words, such as Connection String or Exclude From Model, so a header can differ from the label the same field carries on its editor form.

The key column, which is Name when the type has one, is pinned to the left edge and stays in view while you scroll. Its value names the row in the side panels and dialogs. A row number column runs down the left side.

The Entity Type, UID and Row Last Modified columns are read-only. Every other column is editable unless the field does not apply to the row, as described in Locked cells.

On Connections, the linked service columns, whose headers start with LS, are hidden until you show them from the Columns panel.

Reference columns​

A column that refers to another item, such as the object a column belongs to, shows the name of the item it refers to. Editing the cell opens a list of the available items, and typing in the list narrows it. A column that does not require a value offers an empty entry at the top of the list to clear it. Sorting on a reference column follows the names it shows.

Some lists offer only the items that fit the row:

TypeColumnItems offered
ConnectionsSystem Type IdThe system types that fit the connection type and integration stage of the connection.
ColumnsObject UIDThe objects on the same connection as the column's current object. Objects show their schema-qualified name.
ColumnsReference Column UIDThe columns of the object that holds the current reference column.
ColumnsData Type IdThe data types that fit the system type of the object's connection.

A stored value that falls outside the narrowed list stays on the row. The grid never clears it.

Checkbox columns​

A yes or no field shows a checkbox with three states: checked, unchecked and blank. A plain click or the Space key switches between checked and unchecked. Enter and F2 open the checkbox editor. The Delete key clears the selected cells to blank and Backspace clears the focused cell to blank.

Clicking a checkbox while holding Shift, Ctrl or Cmd changes the selection and leaves the value as it is.

On Objects, a blank Exclude From Model cell means the value is inherited from the parent. Pointing at the column header shows Blank inherits from the parent, and pointing at a blank cell shows Inherited from parent.

Credential columns​

On Connections, the credential columns show a fixed mask of eight dots in place of any stored value, and an empty cell stays empty. These columns are Connection String, Data Source, User Name, Password, the credential columns of the linked service, and SFDC Url, SFDC Consumer Key and SFDC Consumer Secret. The Changes panel shows the same mask for both the old and the new value of a credential edit.

The mask covers the display only. Copying a credential cell puts the stored value on the clipboard, and the fill handle copies the stored value, so treat a copied credential with the same care as the original.

Locked cells​

A cell whose field does not apply to its row is locked and shown greyed out. The grid follows the same rules the editor forms use to disable a field, so a cell is locked here for the same reason the field is disabled on the form. Typing, paste and fill all skip a locked cell, and a value already stored in it stays in place. For example:

  • On Columns and Data Type Mappings, Length, Precision and Scale are locked unless the row's data type allows them, and on Columns the same holds for Element.
  • On Connections, the linked service columns are locked unless the connection is cloud enabled. See the Connection Editor for the Cloud option.
  • On Objects, From Sql and Select By Sql are locked while the object has an Override Sql.

Every cell of a row marked for deletion is locked until the save removes the row or you restore it.

Selecting cells​

Click a cell to select it, and drag to select a range. Shift-click extends the selection and Ctrl-click (Cmd-click on Mac) adds another range, so a selection can hold several ranges at once.

The status bar at the bottom right shows the count, sum and average of the selected cells.

Editing cells​

ActionResult
Click a cell and typeReplaces the value with what you type.
F2Edits the current value.
BackspaceStarts editing the focused cell. On a checkbox cell it clears the value.
EnterCommits the value and moves down to the next row.
TabMoves to the next cell in the row.
EscapeCancels the edit and keeps the previous value.
Ctrl+Z (Cmd+Z on Mac)Undoes the last edit. The grid keeps up to 100 edits to undo.

Moving focus to another cell also commits the edit. A changed cell is highlighted until it is saved or reverted. When an edit returns a cell to the value it had when the grid loaded it, the cell drops out of the pending changes.

How typed and pasted values are read​

The grid reads a typed, pasted or filled value the same way. A value it can read is stored in the field's type. A blank value clears the field. A value it cannot read is kept exactly as you entered it and flagged, so you can see it and fix it.

Field typeValues the grid reads
NumberWhole numbers, decimals, negative numbers and exponent notation, such as 12, -3.5 or 1e3.
Date2024-12-31, month-first 12/31/2024, and date-time text such as 2024-12-31T08:30:00. A date without a time is stored as midnight local time.
Checkboxtrue, t, 1, yes and y for checked, and false, f, 0, no and n for unchecked, in any letter case.
ReferenceThe name of an item in the list, matched exactly first and then without regard to letter case. A name that matches more than one item is kept as entered and flagged.

Copy, paste and fill​

Copy with Ctrl+C and paste with Ctrl+V (Cmd+C and Cmd+V on Mac). Copy and paste work with cell ranges inside the grid and with other spreadsheet programs. The grid has no right-click menu. The first time you right-click the grid in a browser, a message titled Paste with Ctrl+V points you to the keyboard shortcuts.

Copied values are written so that pasting them back gives the same values:

  • A reference cell copies the name it shows.
  • A checkbox cell copies TRUE, FALSE or an empty value.
  • A date cell copies date text such as 2024-12-31.

A paste that runs past the last row of the grid adds the rows it needs, so the whole block lands. The added rows are new rows and save as new items. On a sorted or filtered grid the added rows may not appear where the pasted block continues, and an active filter can hide them. In that case the values meant for them are dropped and the empty new rows stay in the Changes panel, flagged for their required fields, until you fill them in or delete them.

To fill, select one or more cells and drag the fill handle, the small square at the corner of the selection. The fill copies the selected values into the cells it covers, and over a selection of numbers it continues them as a linear series.

Adding and deleting rows​

Add Row adds one empty row at the bottom of the grid, scrolls to it and focuses its first editable cell. A new row carries a green left edge and a faint tint, and its required fields are flagged from the start. New rows are listed in the Changes panel and are created when you save.

Delete Rows marks for deletion every row the current selection touches, or the row of the focused cell when nothing is selected. A marked row stays in the grid, struck through and dimmed with a red left edge, and its cells are locked. Nothing is deleted until you save. To keep a marked row, click Restore next to it in the Changes panel. Deleting a new row that was never saved removes it from the grid at once.

Finding values​

The Find box in the toolbar highlights every cell that matches the text you type, without hiding any rows. Ctrl+F (Cmd+F on Mac) moves to the Find box while Bulk Edit is on screen. Enter moves to the next match and Shift+Enter to the previous one. Escape clears the search. Beside the box, the grid shows the position of the current match, such as 2 of 7, or the number of matches, such as 7 matches.

Every column can also be sorted from its header and filtered from a list of its values, with an Apply button and a (Blanks) entry.

Validation in the grid​

The grid checks each changed cell as you edit, paste or fill, together with the cells that depend on it. It runs the same validations the editor form of the type runs, warnings included, and adds the checks below for values the forms cannot hold. A finding shows in three places.

A cell with a finding that must be fixed, or with an error, is tinted red and carries a red corner marker. A cell with only a warning carries an orange corner marker. Point at the cell to read every message for it, one per line.

Chips at the bottom left of the status bar count the findings, such as 2 must fix, 1 error or 3 warnings. Click a chip to open the Issues panel, which lists every finding with its row, column and message. See The Issues panel.

Fixing a value clears its flag. When a check compares a row with other rows, such as a check that a value is unique, fixing either side clears the flag on both.

How a finding affects saving​

Group in the Issues panelEffect on Save
Must fix before savingSave is disabled until the cell is fixed. Pointing at Save shows Some cells have values that must be fixed before saving.
Errors: saving asks firstSave asks for confirmation first. See Saving with errors.
WarningsSaving is not affected.

A finding on a row marked for deletion still marks its cell but does not affect saving and is not listed in the Issues panel, because the row is going away.

Messages the grid adds​

These checks belong to the grid and come in addition to the validations of the editor forms. In each message, <Column> is the column header and <limit> is the field's maximum length. Each of them must be fixed before saving.

MessageMeaningWhat to do
<Column> must be a number.The cell holds text that does not read as a number.Enter a number, or clear the cell.
<Column> must be a date, like 2024-12-31 or 12/31/2024.The cell holds text that does not read as a date.Enter a date in one of the formats shown, or clear the cell.
<Column> must be TRUE, FALSE, or blank.A checkbox cell holds text that does not read as checked or unchecked. The checkbox shows blank and the cell is tinted.Check or clear the checkbox, or paste one of the values the grid reads.
<Column> must be one of the values in its list.A reference cell holds a name that matches no item, or matches more than one, or refers to an item that has been deleted.Pick the item from the cell's list.
<Column> is required.A required checkbox field is blank.Check or clear the checkbox.
<Column> cannot be greater than <limit>.The text in the cell is longer than the field's length limit.Shorten the text to <limit> characters or fewer.

A text field that the editor form already checks for length shows the form's own length message, which reads the same way with the field name the form uses.

The side panels​

The Changes, Issues and Columns panels open in the panel on the right of the app, and each has its own tab there while Bulk Edit is open. You can also open them from the status bar chips and from the Columns button in the toolbar.

The Changes panel​

The Changes panel lists all unsaved work, or shows No unsaved changes. when there is none.

  • New rows are listed under a heading such as 1 new row (saved on Save).
  • Rows marked for deletion are listed under a heading such as 2 rows to delete (removed on Save). Each has a Restore button that takes the deletion mark off the row.
  • Changed cells are listed under a heading such as 3 unsaved changes. Each shows the row, the column and the old and new values, with (blank) for an empty value. Each has a Revert button that puts back the value the cell had when the grid loaded it.

Click an entry to jump to its row or cell in the grid. Unlike the keyboard undo, Revert works no matter how the grid is sorted or filtered and no matter how many edits came after.

The Issues panel​

The Issues panel lists every finding in the groups Must fix before saving, Errors: saving asks first and Warnings, each with a count. Each entry shows the row, the column and the message. Click an entry to jump to the cell. With nothing to report, the panel shows No problems found.

The Columns panel​

The Columns panel lists every column of the type, with a search box and a checkbox that selects all columns. Check or clear a column to show or hide it, and drag a column in the list to move it.

Column layouts and profiles​

Drag a column header to move the column, and drag the edge of a header to resize it. The grid remembers the layout of each type, with its column order, widths, visibility, pinning and sort, and restores it the next time you open that type.

To keep more than one layout, save it as a named profile. Click the bookmark button Column profile actions next to the type selector:

Menu itemWhat it does
Save layout as profile…Opens the Save layout as profile dialog. Enter a Profile name and click Save. If a profile with that name exists, the dialog says A profile named '<name>' already exists. Saving will replace it.
Update '<name>'Saves the current layout into the active profile. It shows while a profile is active.
Delete profileLists the profiles to delete. The Delete Column Profile dialog asks you to confirm with Delete '<name>' or to keep it with Keep the profile. Deleting a profile leaves the current layout and the other profiles as they are.

Once a profile exists for the type, the Column profile list appears beside the type selector. Picking a profile applies its layout at once, and picking the active profile again returns to it after you have changed the layout. Changing the layout never changes a saved profile by itself. Only Update, or saving a profile under the same name, changes it.

Layouts and profiles belong to each type, so a profile saved on Connections never appears on Columns. They are stored in your browser only, so they are not shared with other people and do not move to another computer or browser.

Saving​

Save sends the changed cells and the new rows first, and then deletes the rows marked for deletion. On the way, the save can stop to ask you about the cases below.

Saving with errors​

If findings in the Errors: saving asks first group are outstanding, the Save with errors? dialog lists them, up to ten followed by a count of the rest. It explains that the errors stay on the saved data until they are fixed. Click Save Anyway to save, or Cancel to go back and fix them.

Rows deleted outside the grid​

If a row you edited has been deleted outside the grid since it loaded, its edits cannot be saved. The Some edited rows were deleted dialog lists those rows and offers two choices:

ButtonResult
Go back: keep all edits, save nothingReturns to the grid with every edit in place. Nothing is sent.
Discard <n> deleted rows and save the restDrops the edits of the listed rows and saves everything else.

Renames and deletions in a file store​

When the metadata is a file store, saving a rename or a deletion that touches other items or files first opens a confirmation that lists what the change touches. It is titled Confirm rename or Confirm renames for renames and Confirm delete or Confirm deletes for deletions. Click Continue to go on. Cancelling the rename confirmation saves nothing. Cancelling the delete confirmation keeps the rows marked for deletion and deletes nothing, while the edits already saved in the same save stay saved.

Saves that are too large​

A save is one request, and the server accepts at most 200 MB in one save. A larger save is stopped before anything is sent, and the Save too large to send dialog shows its size against the limit. All your edits stay in the grid. Save the work in smaller pieces: select part of the changed cells, click Revert Selected to set them aside, save the rest, and then make the reverted changes again and save them.

After the save​

When the save succeeds, the changes become the saved values and the highlights and pending changes clear. When a save writes more than 50 changed or new rows, or deletes more than 50 rows, the grid reloads the type from the server so it shows exactly what was stored. The toasts Bulk Edit Saved: Reloading Grid and Bulk Edit Grid Reloaded mark the start and the end of the reload.

When a save fails​

A failed save keeps your unsaved work in the grid, and a toast says what was saved and what was not.

ToastMeaningWhat to do
Bulk Edit Save FailedThe changes were not saved. If rows were marked for deletion, they were not deleted either, and nothing was committed.Fix the reported problem and save again, or discard the changes.
Bulk Edit Delete FailedThe rows marked for deletion were not deleted and keep their marks. When the same save also held edits or new rows, the message says how many of them were saved.Save again to retry, or restore the rows from the Changes panel.
Bulk Edit Cannot SaveA save started from the Unsaved Changes dialog found cells that must be fixed. The cells are marked in red.Point at a marked cell to see what is wrong, fix it and save again.

Discarding and reverting​

Discard drops all unsaved work at once: every changed cell returns to its saved value, every new row is removed and every row marked for deletion is restored.

Revert Selected reverts only the changed cells inside the current selection, or the focused cell when nothing is selected. It leaves new rows and deletion marks as they are. With no cell selected or focused, the toast Nothing Selected asks you to click a changed cell first. When the selection holds no changed cell, the toast Nothing to Revert says so.

To revert a single change, use its Revert button in the Changes panel. To undo the most recent edits in order, use Ctrl+Z.

Leaving the grid​

Leaving Bulk Edit with unsaved work opens the Unsaved Changes dialog, as the editor forms do. Closing or reloading the browser tab with unsaved work makes the browser ask before it leaves.

A reload of the same metadata, such as a refresh of the type, keeps every pending change, new row and deletion mark in place.

Switching to another customer, version, database or workspace while the grid holds unsaved work opens the Selection Changed dialog, because those changes belong to the previous selection. Click Save Changes to save them first, or Discard Changes to drop them. If the save fails, the changes are discarded and the toast Bulk Edit Save Failed says so.

Limits​

  • The grid shows one metadata type at a time.
  • The grid has no right-click menu. Copy and paste work through the keyboard shortcuts only.
  • Keyboard undo reaches back up to 100 edits.
  • A save is one request of at most 200 MB.
  • Column layouts and profiles are kept in your browser only.